summaryrefslogtreecommitdiff
path: root/firmware/include/file.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/include/file.h')
-rw-r--r--firmware/include/file.h125
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) 37enum 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 */
64extern int sim_open(const char *name, int o, ...);
65extern int sim_creat(const char *name, mode_t mode);
66#endif
67 44
68typedef int (*open_func)(const char* pathname, int flags, ...); 45#if defined(APPLICATION)
69typedef ssize_t (*read_func)(int fd, void *buf, size_t count); 46#include "filesystem-app.h"
70typedef int (*creat_func)(const char *pathname, mode_t mode); 47#elif defined(SIMULATOR) || defined(__PCTOOL__)
71typedef ssize_t (*write_func)(int fd, const void *buf, size_t count); 48#include "../../uisimulator/common/filesystem-sim.h"
72typedef 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
75extern int file_open(const char* pathname, int flags); 53#ifndef FILEFUNCTIONS_DECLARED
76extern int close(int fd); 54int fdprintf(int fildes, const char *fmt, ...) ATTRIBUTE_PRINTF(2, 3);
77extern int fsync(int fd); 55#endif /* FILEFUNCTIONS_DECLARED */
78extern ssize_t read(int fd, void *buf, size_t count);
79extern off_t lseek(int fildes, off_t offset, int whence);
80extern 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
90extern ssize_t write(int fd, const void *buf, size_t count); 65#define close FS_PREFIX(close)
91extern int remove(const char* pathname); 66#endif
92extern int rename(const char* path, const char* newname); 67#ifndef ftruncate
93extern int ftruncate(int fd, off_t length); 68#define ftruncate FS_PREFIX(ftruncate)
94extern off_t filesize(int fd); 69#endif
95extern int release_files(int volume); 70#ifndef fsync
96int 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_ */