nuclear@24: #include nuclear@7: #include nuclear@7: #include nuclear@7: #include "assman.h" nuclear@23: #include "android_native_app_glue.h" nuclear@23: nuclear@23: struct android_app *app; /* defined in android/amain.c */ nuclear@7: nuclear@7: ass_file *ass_fopen(const char *fname, const char *mode) nuclear@7: { nuclear@7: AAsset *ass; nuclear@7: unsigned int flags = 0; nuclear@7: char prev = 0; nuclear@7: nuclear@7: while(*mode) { nuclear@7: switch(*mode) { nuclear@7: case 'r': nuclear@7: flags |= O_RDONLY; nuclear@7: break; nuclear@7: nuclear@7: case 'w': nuclear@7: flags |= O_WRONLY; nuclear@7: break; nuclear@7: nuclear@7: case 'a': nuclear@7: flags |= O_APPEND; nuclear@7: break; nuclear@7: nuclear@7: case '+': nuclear@7: if(prev == 'w' || prev == 'a') { nuclear@7: flags |= O_CREAT; nuclear@7: } nuclear@7: break; nuclear@7: nuclear@7: default: nuclear@7: break; nuclear@7: } nuclear@7: prev = *mode++; nuclear@7: } nuclear@7: nuclear@24: assert(app); nuclear@24: assert(app->activity); nuclear@24: assert(app->activity->assetManager); nuclear@7: if(!(ass = AAssetManager_open(app->activity->assetManager, fname, flags))) { nuclear@7: return 0; nuclear@7: } nuclear@7: return (ass_file*)ass; nuclear@7: } nuclear@7: nuclear@7: void ass_fclose(ass_file *fp) nuclear@7: { nuclear@7: AAsset_close((AAsset*)fp); nuclear@7: } nuclear@7: nuclear@7: long ass_fseek(ass_file *fp, long offs, int whence) nuclear@7: { nuclear@7: return AAsset_seek((AAsset*)fp, offs, whence); nuclear@7: } nuclear@7: nuclear@7: long ass_ftell(ass_file *fp) nuclear@7: { nuclear@7: return AAsset_seek((AAsset*)fp, 0, SEEK_SET); nuclear@7: } nuclear@7: nuclear@7: size_t ass_fread(void *buf, size_t size, size_t count, ass_file *fp) nuclear@7: { nuclear@7: return AAsset_read((AAsset*)fp, buf, size * count) / size; nuclear@7: }