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 @@ * KIND, either express or implied. * ****************************************************************************/ - #ifndef _FILE_H_ #define _FILE_H_ #include <sys/types.h> -#include "config.h" -#include "gcc_extensions.h" +#include <stdbool.h> #include <fcntl.h> #ifdef WIN32 /* this has SEEK_SET et al */ #include <stdio.h> #endif - +#include "config.h" +#include "gcc_extensions.h" #undef MAX_PATH /* this avoids problems when building simulator */ #define MAX_PATH 260 -#define MAX_OPEN_FILES 11 -#if !defined(PLUGIN) && !defined(CODEC) -#if defined(APPLICATION) && !defined(__PCTOOL__) -#include "rbpaths.h" -# define open(x, ...) app_open(x, __VA_ARGS__) -# define creat(x,m) app_creat(x, m) -# define remove(x) app_remove(x) -# define rename(x,y) app_rename(x,y) -# define readlink(x,y,z) app_readlink(x,y,z) -# if (CONFIG_PLATFORM & (PLATFORM_SDL|PLATFORM_MAEMO|PLATFORM_PANDORA)) -/* SDL overrides a few more */ -# define read(x,y,z) sim_read(x,y,z) -# define write(x,y,z) sim_write(x,y,z) -# endif -#elif defined(SIMULATOR) || defined(DBTOOL) -# define open(x, ...) sim_open(x, __VA_ARGS__) -# define creat(x,m) sim_creat(x,m) -# define remove(x) sim_remove(x) -# define rename(x,y) sim_rename(x,y) -# define fsync(x) sim_fsync(x) -# define ftruncate(x,y) sim_ftruncate(x,y) -# define lseek(x,y,z) sim_lseek(x,y,z) -# define read(x,y,z) sim_read(x,y,z) -# define write(x,y,z) sim_write(x,y,z) -# define close(x) sim_close(x) -/* readlink() not used in the sim yet */ -extern int sim_open(const char *name, int o, ...); -extern int sim_creat(const char *name, mode_t mode); -#endif +enum relate_result +{ + /* < 0 == failure */ + RELATE_DIFFERENT = 0, /* the two paths are different objects */ + RELATE_SAME, /* the two paths are the same object */ + RELATE_PREFIX, /* the path2 contains path1 as a prefix */ +}; -typedef int (*open_func)(const char* pathname, int flags, ...); -typedef ssize_t (*read_func)(int fd, void *buf, size_t count); -typedef int (*creat_func)(const char *pathname, mode_t mode); -typedef ssize_t (*write_func)(int fd, const void *buf, size_t count); -typedef void (*qsort_func)(void *base, size_t nmemb, size_t size, - int(*_compar)(const void *, const void *)); +#if defined(APPLICATION) +#include "filesystem-app.h" +#elif defined(SIMULATOR) || defined(__PCTOOL__) +#include "../../uisimulator/common/filesystem-sim.h" +#else +#include "filesystem-native.h" +#endif -extern int file_open(const char* pathname, int flags); -extern int close(int fd); -extern int fsync(int fd); -extern ssize_t read(int fd, void *buf, size_t count); -extern off_t lseek(int fildes, off_t offset, int whence); -extern int file_creat(const char *pathname); -#if ((CONFIG_PLATFORM & PLATFORM_NATIVE) && !defined(__PCTOOL__)) || \ - defined(TEST_FAT) -#define creat(x, y) file_creat(x) +#ifndef FILEFUNCTIONS_DECLARED +int fdprintf(int fildes, const char *fmt, ...) ATTRIBUTE_PRINTF(2, 3); +#endif /* FILEFUNCTIONS_DECLARED */ -#if !defined(CODEC) && !defined(PLUGIN) -#define open(x, y, ...) file_open(x,y) +#ifndef FILEFUNCTIONS_DEFINED +#ifndef open +#define open FS_PREFIX(open) #endif +#ifndef creat +#define creat FS_PREFIX(creat) #endif - -extern ssize_t write(int fd, const void *buf, size_t count); -extern int remove(const char* pathname); -extern int rename(const char* path, const char* newname); -extern int ftruncate(int fd, off_t length); -extern off_t filesize(int fd); -extern int release_files(int volume); -int fdprintf (int fd, const char *fmt, ...) ATTRIBUTE_PRINTF(2, 3); -#endif /* !CODEC && !PLUGIN */ +#ifndef close +#define close FS_PREFIX(close) +#endif +#ifndef ftruncate +#define ftruncate FS_PREFIX(ftruncate) +#endif +#ifndef fsync +#define fsync FS_PREFIX(fsync) #endif +#ifndef lseek +#define lseek FS_PREFIX(lseek) +#endif +#ifndef read +#define read FS_PREFIX(read) +#endif +#ifndef write +#define write FS_PREFIX(write) +#endif +#ifndef remove +#define remove FS_PREFIX(remove) +#endif +#ifndef rename +#define rename FS_PREFIX(rename) +#endif +#ifndef filesize +#define filesize FS_PREFIX(filesize) +#endif +#ifndef fsamefile +#define fsamefile FS_PREFIX(fsamefile) +#endif +#ifndef file_exists +#define file_exists FS_PREFIX(file_exists) +#endif +#ifndef relate +#define relate FS_PREFIX(relate) +#endif +#ifndef readlink +#define readlink FS_PREFIX(readlink) +#endif +#endif /* FILEFUNCTIONS_DEFINED */ + +#endif /* _FILE_H_ */ |