summaryrefslogtreecommitdiff
path: root/firmware/include/dir.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/include/dir.h')
-rw-r--r--firmware/include/dir.h91
1 files changed, 58 insertions, 33 deletions
diff --git a/firmware/include/dir.h b/firmware/include/dir.h
index 6e8b70588e..f7719823a9 100644
--- a/firmware/include/dir.h
+++ b/firmware/include/dir.h
@@ -18,46 +18,71 @@
* KIND, either express or implied.
*
****************************************************************************/
-
#ifndef _DIR_H_
#define _DIR_H_
+#include <sys/types.h>
+#include <fcntl.h>
+#include <time.h>
#include "config.h"
+#include "fs_attr.h"
-#define ATTR_READ_ONLY 0x01
-#define ATTR_HIDDEN 0x02
-#define ATTR_SYSTEM 0x04
-#define ATTR_VOLUME_ID 0x08
-#define ATTR_DIRECTORY 0x10
-#define ATTR_ARCHIVE 0x20
-#define ATTR_VOLUME 0x40 /* this is a volume, not a real directory */
-#define ATTR_LINK 0x80
-
-#ifdef HAVE_DIRCACHE
-# include "dircache.h"
-# define DIR DIR_CACHED
-# define dirent dirent_cached
-# define opendir opendir_cached
-# define closedir closedir_cached
-# define readdir readdir_cached
-# define closedir closedir_cached
-# define mkdir mkdir_cached
-# define rmdir rmdir_cached
+#if defined (APPLICATION)
+#include "filesystem-app.h"
+#elif defined(SIMULATOR) || defined(__PCTOOL__)
+#include "../../uisimulator/common/filesystem-sim.h"
#else
-# include "dir_uncached.h"
-# define DIR DIR_UNCACHED
-# define dirent dirent_uncached
-# define opendir opendir_uncached
-# define closedir closedir_uncached
-# define readdir readdir_uncached
-# define closedir closedir_uncached
-# define mkdir mkdir_uncached
-# define rmdir rmdir_uncached
+#include "filesystem-native.h"
+#endif
+
+#ifndef DIRFUNCTIONS_DEFINED
+#ifndef opendir
+#define opendir FS_PREFIX(opendir)
+#endif
+#ifndef readdir
+#define readdir FS_PREFIX(readdir)
+#endif
+#ifndef readdir_r
+#define readdir_r FS_PREFIX(readdir_r)
+#endif
+#ifndef rewinddir
+#define rewinddir FS_PREFIX(rewinddir)
#endif
+#ifndef closedir
+#define closedir FS_PREFIX(closedir)
+#endif
+#ifndef mkdir
+#define mkdir FS_PREFIX(mkdir)
+#endif
+#ifndef rmdir
+#define rmdir FS_PREFIX(rmdir)
+#endif
+#ifndef samedir
+#define samedir FS_PREFIX(samedir)
+#endif
+#ifndef dir_exists
+#define dir_exists FS_PREFIX(dir_exists)
+#endif
+#endif /* !DIRFUNCTIONS_DEFINED */
+#ifndef DIRENT_DEFINED
+struct DIRENT
+{
+ struct dirinfo_native info; /* platform extra info */
+ char d_name[MAX_PATH]; /* UTF-8 name of entry (last!) */
+};
+#endif /* DIRENT_DEFINED */
-typedef DIR* (*opendir_func)(const char* name);
-typedef int (*closedir_func)(DIR* dir);
-typedef struct dirent* (*readdir_func)(DIR* dir);
+struct dirinfo
+{
+ unsigned int attribute; /* attribute bits of file */
+ off_t size; /* binary size of file */
+ time_t mtime; /* local file time */
+};
-#endif
+#ifndef DIRFUNCTIONS_DECLARED
+/* TIP: set errno to zero before calling to see if anything failed */
+struct dirinfo dir_get_info(DIR *dirp, struct DIRENT *entry);
+#endif /* !DIRFUNCTIONS_DECLARED */
+
+#endif /* _DIR_H_ */