istereo2

annotate src/android/assman.c @ 24:9d53a4938ce8

port to android mostly complete, ads not done, and needs some polishing
author John Tsiombikas <nuclear@member.fsf.org>
date Sun, 04 Oct 2015 08:15:24 +0300
parents 7d795dade0bc
children
rev   line source
nuclear@24 1 #include <assert.h>
nuclear@7 2 #include <fcntl.h>
nuclear@7 3 #include <android/asset_manager.h>
nuclear@7 4 #include "assman.h"
nuclear@23 5 #include "android_native_app_glue.h"
nuclear@23 6
nuclear@23 7 struct android_app *app; /* defined in android/amain.c */
nuclear@7 8
nuclear@7 9 ass_file *ass_fopen(const char *fname, const char *mode)
nuclear@7 10 {
nuclear@7 11 AAsset *ass;
nuclear@7 12 unsigned int flags = 0;
nuclear@7 13 char prev = 0;
nuclear@7 14
nuclear@7 15 while(*mode) {
nuclear@7 16 switch(*mode) {
nuclear@7 17 case 'r':
nuclear@7 18 flags |= O_RDONLY;
nuclear@7 19 break;
nuclear@7 20
nuclear@7 21 case 'w':
nuclear@7 22 flags |= O_WRONLY;
nuclear@7 23 break;
nuclear@7 24
nuclear@7 25 case 'a':
nuclear@7 26 flags |= O_APPEND;
nuclear@7 27 break;
nuclear@7 28
nuclear@7 29 case '+':
nuclear@7 30 if(prev == 'w' || prev == 'a') {
nuclear@7 31 flags |= O_CREAT;
nuclear@7 32 }
nuclear@7 33 break;
nuclear@7 34
nuclear@7 35 default:
nuclear@7 36 break;
nuclear@7 37 }
nuclear@7 38 prev = *mode++;
nuclear@7 39 }
nuclear@7 40
nuclear@24 41 assert(app);
nuclear@24 42 assert(app->activity);
nuclear@24 43 assert(app->activity->assetManager);
nuclear@7 44 if(!(ass = AAssetManager_open(app->activity->assetManager, fname, flags))) {
nuclear@7 45 return 0;
nuclear@7 46 }
nuclear@7 47 return (ass_file*)ass;
nuclear@7 48 }
nuclear@7 49
nuclear@7 50 void ass_fclose(ass_file *fp)
nuclear@7 51 {
nuclear@7 52 AAsset_close((AAsset*)fp);
nuclear@7 53 }
nuclear@7 54
nuclear@7 55 long ass_fseek(ass_file *fp, long offs, int whence)
nuclear@7 56 {
nuclear@7 57 return AAsset_seek((AAsset*)fp, offs, whence);
nuclear@7 58 }
nuclear@7 59
nuclear@7 60 long ass_ftell(ass_file *fp)
nuclear@7 61 {
nuclear@7 62 return AAsset_seek((AAsset*)fp, 0, SEEK_SET);
nuclear@7 63 }
nuclear@7 64
nuclear@7 65 size_t ass_fread(void *buf, size_t size, size_t count, ass_file *fp)
nuclear@7 66 {
nuclear@7 67 return AAsset_read((AAsset*)fp, buf, size * count) / size;
nuclear@7 68 }