diff options
Diffstat (limited to 'firmware/include/file.h')
-rw-r--r-- | firmware/include/file.h | 125 |
1 files changed, 66 insertions, 59 deletions
diff --git a/firmware/include/file.h b/firmware/include/file.h index 77930864c7..8e5bacec0e 100644 --- a/firmware/include/file.h +++ b/firmware/include/file.h | |||
@@ -18,81 +18,88 @@ | |||
18 | * KIND, either express or implied. | 18 | * KIND, either express or implied. |
19 | * | 19 | * |
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | |||
22 | #ifndef _FILE_H_ | 21 | #ifndef _FILE_H_ |
23 | #define _FILE_H_ | 22 | #define _FILE_H_ |
24 | 23 | ||
25 | #include <sys/types.h> | 24 | #include <sys/types.h> |
26 | #include "config.h" | 25 | #include <stdbool.h> |
27 | #include "gcc_extensions.h" | ||
28 | #include <fcntl.h> | 26 | #include <fcntl.h> |
29 | #ifdef WIN32 | 27 | #ifdef WIN32 |
30 | /* this has SEEK_SET et al */ | 28 | /* this has SEEK_SET et al */ |
31 | #include <stdio.h> | 29 | #include <stdio.h> |
32 | #endif | 30 | #endif |
33 | 31 | #include "config.h" | |
32 | #include "gcc_extensions.h" | ||
34 | 33 | ||
35 | #undef MAX_PATH /* this avoids problems when building simulator */ | 34 | #undef MAX_PATH /* this avoids problems when building simulator */ |
36 | #define MAX_PATH 260 | 35 | #define MAX_PATH 260 |
37 | #define MAX_OPEN_FILES 11 | ||
38 | 36 | ||
39 | #if !defined(PLUGIN) && !defined(CODEC) | 37 | enum relate_result |
40 | #if defined(APPLICATION) && !defined(__PCTOOL__) | 38 | { |
41 | #include "rbpaths.h" | 39 | /* < 0 == failure */ |
42 | # define open(x, ...) app_open(x, __VA_ARGS__) | 40 | RELATE_DIFFERENT = 0, /* the two paths are different objects */ |
43 | # define creat(x,m) app_creat(x, m) | 41 | RELATE_SAME, /* the two paths are the same object */ |
44 | # define remove(x) app_remove(x) | 42 | RELATE_PREFIX, /* the path2 contains path1 as a prefix */ |
45 | # define rename(x,y) app_rename(x,y) | 43 | }; |
46 | # define readlink(x,y,z) app_readlink(x,y,z) | ||
47 | # if (CONFIG_PLATFORM & (PLATFORM_SDL|PLATFORM_MAEMO|PLATFORM_PANDORA)) | ||
48 | /* SDL overrides a few more */ | ||
49 | # define read(x,y,z) sim_read(x,y,z) | ||
50 | # define write(x,y,z) sim_write(x,y,z) | ||
51 | # endif | ||
52 | #elif defined(SIMULATOR) || defined(DBTOOL) | ||
53 | # define open(x, ...) sim_open(x, __VA_ARGS__) | ||
54 | # define creat(x,m) sim_creat(x,m) | ||
55 | # define remove(x) sim_remove(x) | ||
56 | # define rename(x,y) sim_rename(x,y) | ||
57 | # define fsync(x) sim_fsync(x) | ||
58 | # define ftruncate(x,y) sim_ftruncate(x,y) | ||
59 | # define lseek(x,y,z) sim_lseek(x,y,z) | ||
60 | # define read(x,y,z) sim_read(x,y,z) | ||
61 | # define write(x,y,z) sim_write(x,y,z) | ||
62 | # define close(x) sim_close(x) | ||
63 | /* readlink() not used in the sim yet */ | ||
64 | extern int sim_open(const char *name, int o, ...); | ||
65 | extern int sim_creat(const char *name, mode_t mode); | ||
66 | #endif | ||
67 | 44 | ||
68 | typedef int (*open_func)(const char* pathname, int flags, ...); | 45 | #if defined(APPLICATION) |
69 | typedef ssize_t (*read_func)(int fd, void *buf, size_t count); | 46 | #include "filesystem-app.h" |
70 | typedef int (*creat_func)(const char *pathname, mode_t mode); | 47 | #elif defined(SIMULATOR) || defined(__PCTOOL__) |
71 | typedef ssize_t (*write_func)(int fd, const void *buf, size_t count); | 48 | #include "../../uisimulator/common/filesystem-sim.h" |
72 | typedef void (*qsort_func)(void *base, size_t nmemb, size_t size, | 49 | #else |
73 | int(*_compar)(const void *, const void *)); | 50 | #include "filesystem-native.h" |
51 | #endif | ||
74 | 52 | ||
75 | extern int file_open(const char* pathname, int flags); | 53 | #ifndef FILEFUNCTIONS_DECLARED |
76 | extern int close(int fd); | 54 | int fdprintf(int fildes, const char *fmt, ...) ATTRIBUTE_PRINTF(2, 3); |
77 | extern int fsync(int fd); | 55 | #endif /* FILEFUNCTIONS_DECLARED */ |
78 | extern ssize_t read(int fd, void *buf, size_t count); | ||
79 | extern off_t lseek(int fildes, off_t offset, int whence); | ||
80 | extern int file_creat(const char *pathname); | ||
81 | #if ((CONFIG_PLATFORM & PLATFORM_NATIVE) && !defined(__PCTOOL__)) || \ | ||
82 | defined(TEST_FAT) | ||
83 | #define creat(x, y) file_creat(x) | ||
84 | 56 | ||
85 | #if !defined(CODEC) && !defined(PLUGIN) | 57 | #ifndef FILEFUNCTIONS_DEFINED |
86 | #define open(x, y, ...) file_open(x,y) | 58 | #ifndef open |
59 | #define open FS_PREFIX(open) | ||
87 | #endif | 60 | #endif |
61 | #ifndef creat | ||
62 | #define creat FS_PREFIX(creat) | ||
88 | #endif | 63 | #endif |
89 | 64 | #ifndef close | |
90 | extern ssize_t write(int fd, const void *buf, size_t count); | 65 | #define close FS_PREFIX(close) |
91 | extern int remove(const char* pathname); | 66 | #endif |
92 | extern int rename(const char* path, const char* newname); | 67 | #ifndef ftruncate |
93 | extern int ftruncate(int fd, off_t length); | 68 | #define ftruncate FS_PREFIX(ftruncate) |
94 | extern off_t filesize(int fd); | 69 | #endif |
95 | extern int release_files(int volume); | 70 | #ifndef fsync |
96 | int fdprintf (int fd, const char *fmt, ...) ATTRIBUTE_PRINTF(2, 3); | 71 | #define fsync FS_PREFIX(fsync) |
97 | #endif /* !CODEC && !PLUGIN */ | ||
98 | #endif | 72 | #endif |
73 | #ifndef lseek | ||
74 | #define lseek FS_PREFIX(lseek) | ||
75 | #endif | ||
76 | #ifndef read | ||
77 | #define read FS_PREFIX(read) | ||
78 | #endif | ||
79 | #ifndef write | ||
80 | #define write FS_PREFIX(write) | ||
81 | #endif | ||
82 | #ifndef remove | ||
83 | #define remove FS_PREFIX(remove) | ||
84 | #endif | ||
85 | #ifndef rename | ||
86 | #define rename FS_PREFIX(rename) | ||
87 | #endif | ||
88 | #ifndef filesize | ||
89 | #define filesize FS_PREFIX(filesize) | ||
90 | #endif | ||
91 | #ifndef fsamefile | ||
92 | #define fsamefile FS_PREFIX(fsamefile) | ||
93 | #endif | ||
94 | #ifndef file_exists | ||
95 | #define file_exists FS_PREFIX(file_exists) | ||
96 | #endif | ||
97 | #ifndef relate | ||
98 | #define relate FS_PREFIX(relate) | ||
99 | #endif | ||
100 | #ifndef readlink | ||
101 | #define readlink FS_PREFIX(readlink) | ||
102 | #endif | ||
103 | #endif /* FILEFUNCTIONS_DEFINED */ | ||
104 | |||
105 | #endif /* _FILE_H_ */ | ||