summaryrefslogtreecommitdiffstats
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 @@
* 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_ */