Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef FOSFAT_H
00026 #define FOSFAT_H
00027
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037
00038 #define FF_STRINGIFY(s) #s
00039 #define FF_TOSTRING(s) FF_STRINGIFY(s)
00040
00041 #define FF_VERSION_INT(a, b, c) (a << 16 | b << 8 | c)
00042 #define FF_VERSION_DOT(a, b, c) a ##.## b ##.## c
00043 #define FF_VERSION(a, b, c) FF_VERSION_DOT(a, b, c)
00044
00045 #define LIBFOSFAT_VERSION_MAJOR 0
00046 #define LIBFOSFAT_VERSION_MINOR 4
00047 #define LIBFOSFAT_VERSION_MICRO 0
00048
00049 #define LIBFOSFAT_VERSION_INT FF_VERSION_INT(LIBFOSFAT_VERSION_MAJOR, \
00050 LIBFOSFAT_VERSION_MINOR, \
00051 LIBFOSFAT_VERSION_MICRO)
00052 #define LIBFOSFAT_VERSION FF_VERSION(LIBFOSFAT_VERSION_MAJOR, \
00053 LIBFOSFAT_VERSION_MINOR, \
00054 LIBFOSFAT_VERSION_MICRO)
00055 #define LIBFOSFAT_VERSION_STR FF_TOSTRING(LIBFOSFAT_VERSION)
00056 #define LIBFOSFAT_BUILD LIBFOSFAT_VERSION_INT
00057
00058 #include <inttypes.h>
00059
00060 #define FOSFAT_NAMELGT 17
00061
00062 #define F_UNDELETE (1 << 0)
00063
00065 typedef enum disk_type {
00066 FOSFAT_FD,
00067 FOSFAT_HD,
00068 FOSFAT_AD,
00069 FOSFAT_ED
00070 } fosfat_disk_t;
00071
00073 typedef struct time_s {
00074 short int year;
00075 short int month;
00076 short int day;
00077 short int hour;
00078 short int minute;
00079 short int second;
00080 } fosfat_time_t;
00081
00083 typedef struct att_s {
00084 int isdir : 1;
00085 int isvisible : 1;
00086 int isencoded : 1;
00087 int islink : 1;
00088 int isdel : 1;
00089 } fosfat_att_t;
00090
00092 typedef struct file_info_s {
00093 char name[FOSFAT_NAMELGT];
00094 int size;
00095 fosfat_att_t att;
00096 fosfat_time_t time_c;
00097 fosfat_time_t time_w;
00098 fosfat_time_t time_r;
00099
00100 struct file_info_s *next_file;
00101 } fosfat_file_t;
00102
00104 typedef struct fosfat_s fosfat_t;
00105
00106
00123 fosfat_t *fosfat_open (const char *dev, fosfat_disk_t disk, unsigned int flag);
00124
00130 void fosfat_close (fosfat_t *fosfat);
00131
00141 void fosfat_logger (int state);
00142
00151 char *fosfat_diskname (fosfat_t *fosfat);
00152
00163 fosfat_file_t *fosfat_list_dir (fosfat_t *fosfat, const char *location);
00164
00170 void fosfat_free_listdir (fosfat_file_t *var);
00171
00181 int fosfat_isdir (fosfat_t *fosfat, const char *location);
00182
00192 int fosfat_islink (fosfat_t *fosfat, const char *location);
00193
00203 int fosfat_isvisible (fosfat_t *fosfat, const char *location);
00204
00214 int fosfat_isencoded (fosfat_t *fosfat, const char *location);
00215
00225 int fosfat_isopenexm (fosfat_t *fosfat, const char *location);
00226
00238 fosfat_file_t *fosfat_get_stat (fosfat_t *fosfat, const char *location);
00239
00250 char *fosfat_symlink (fosfat_t *fosfat, const char *location);
00251
00265 int fosfat_get_file (fosfat_t *fosfat,
00266 const char *src, const char *dst, int output);
00267
00281 uint8_t *fosfat_get_buffer (fosfat_t *fosfat,
00282 const char *path, int offset, int size);
00283
00284 #ifdef __cplusplus
00285 }
00286 #endif
00287
00288 #endif