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