00001
00007 #ifndef _UFFS_FS_H_
00008 #define _UFFS_FS_H_
00009
00010 #include "uffs/uffs_types.h"
00011 #include "uffs/uffs_public.h"
00012
00013 #ifdef __cplusplus
00014 extern "C"{
00015 #endif
00016
00017
00018 #define ENCODE_MBCS 1
00019 #define ENCODE_UNICODE 2
00020 #define UFFS_DEFAULT_ENCODE ENCODE_MBCS
00021
00022
00024 struct uffs_ObjectSt {
00025
00026 struct uffs_ObjectSt *next;
00027 struct uffs_ObjectSt *head;
00028 int devLockCount;
00029 int devGetCount;
00030
00031
00032 char *name;
00033 u32 nameLen;
00034 u16 sum;
00035 u32 encode;
00036 uffs_Device *dev;
00037 u32 oflag;
00038 u32 pmode;
00039 u8 type;
00040 int pagesOnHead;
00041 u16 father;
00042
00043
00044 TreeNode *node;
00045 u16 serial;
00046 u32 attr;
00047 u32 createTime;
00048 u32 lastModify;
00049 u32 access;
00050
00051
00052 int err;
00053
00054
00055 u32 pos;
00056
00057 u8 *buf;
00058 int bufStart;
00059 int bufLen;
00060 int bufMaxLen;
00061
00062
00063 UBOOL openSucc;
00064
00065 };
00066
00067 typedef struct uffs_ObjectSt uffs_Object;
00068
00069
00070 #define US_IWRITE 0x0000200
00071 #define US_IREAD 0x0000400
00072
00073 #define UO_RDONLY 0x0000 //read only
00074 #define UO_WRONLY 0x0001 //write only
00075 #define UO_RDWR 0x0002 //read and write
00076 #define UO_APPEND 0x0008 //append
00077
00078 #define UO_BINARY 0x0000 //no used in uffs
00079
00080 #define UO_CREATE 0x0100
00081 #define UO_TRUNC 0x0200
00082 #define UO_EXCL 0x0400 //
00083
00084 #define UO_DIR 0x1000 //open a directory
00085
00086
00087
00088 #define UENOERR 0
00089 #define UEACCES 1
00090
00091
00092
00093 #define UEEXIST 2
00094
00095 #define UEINVAL 3
00096 #define UEMFILE 4
00097
00098 #define UENOENT 5
00099 #define UETIME 6
00100 #define UEBADF 9
00101 #define UENOMEM 10
00102 #define UEUNKNOWN 11
00103
00104
00105
00106 #define _SEEK_CUR 0
00107 #define _SEEK_SET 1
00108 #define _SEEK_END 2
00109
00110 #define USEEK_CUR _SEEK_CUR
00111 #define USEEK_SET _SEEK_SET
00112 #define USEEK_END _SEEK_END
00113
00114
00115 typedef struct uffs_ObjectInfoSt {
00116 uffs_fileInfo info;
00117 u32 len;
00118 u16 serial;
00119 } uffs_ObjectInfo;
00120
00121 typedef struct uffs_FindInfoSt {
00122 uffs_Object *obj;
00123 uffs_Device *dev;
00124 u16 father;
00125 int step;
00126 int hash;
00127 TreeNode *work;
00128 } uffs_FindInfo;
00129
00130
00131 URET uffs_InitObjectBuf(void);
00132 uffs_Object * uffs_GetObject(void);
00133 void uffs_PutObject(uffs_Object *obj);
00134 int uffs_GetObjectIndex(uffs_Object *obj);
00135 uffs_Object * uffs_GetObjectByIndex(int idx);
00136
00137
00138 URET uffs_OpenObject(uffs_Object *obj, const char *fullname, int oflag, int pmode);
00139 URET uffs_TruncateObject(uffs_Object *obj, u32 remain);
00140
00141 URET uffs_CreateObject(uffs_Object *obj, const char *fullname, int oflag, int pmode);
00142
00143 URET uffs_CloseObject(uffs_Object *obj);
00144 int uffs_WriteObject(uffs_Object *obj, const void *data, int len);
00145 int uffs_ReadObject(uffs_Object *obj, void *data, int len);
00146 long uffs_SeekObject(uffs_Object *obj, long offset, int origin);
00147 int uffs_GetCurOffset(uffs_Object *obj);
00148 int uffs_EndOfFile(uffs_Object *obj);
00149
00150 URET uffs_RenameObject(const char *old_name, const char *new_name);
00151 URET uffs_DeleteObject(const char * name);
00152 URET uffs_GetObjectInfo(uffs_Object *obj, uffs_ObjectInfo *info);
00153
00154
00155 URET uffs_OpenFindObject(uffs_FindInfo *find_handle, const char * dir);
00156 URET uffs_FindFirstObject(uffs_ObjectInfo * info, uffs_FindInfo * find_handle);
00157 URET uffs_FindNextObject(uffs_ObjectInfo *info, uffs_FindInfo * find_handle);
00158 URET uffs_CloseFindObject(uffs_FindInfo * find_handle);
00159
00160
00161 #ifdef __cplusplus
00162 }
00163 #endif
00164
00165
00166 #endif
00167