uffs_fs.h

Go to the documentation of this file.
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     /******* objects manager ********/
00026     struct uffs_ObjectSt *next;
00027     struct uffs_ObjectSt *head;
00028     int devLockCount;
00029     int devGetCount;
00030 
00031     /******** init level 0 ********/
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     /******* init level 1 ********/
00044     TreeNode *node;             
00045     u16 serial;
00046     u32 attr;
00047     u32 createTime;
00048     u32 lastModify;
00049     u32 access;
00050     
00051     /******* output ******/
00052     int err;                    
00053 
00054     /******* current *******/
00055     u32 pos;                    
00056 
00057     u8 *buf;
00058     int bufStart;
00059     int bufLen;
00060     int bufMaxLen;
00061 
00062     /***** others *******/
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       /* no error */
00089 #define UEACCES 1       /* Tried to open read-only file
00090                          for writing, or files sharing mode
00091                          does not allow specified operations,
00092                          or given path is directory */
00093 #define UEEXIST 2       /* _O_CREAT and _O_EXCL flags specified,
00094                             but filename already exists */
00095 #define UEINVAL 3       /* Invalid oflag or pmode argument */
00096 #define UEMFILE 4       /* No more file handles available
00097                           (too many open files)  */
00098 #define UENOENT 5       /* file or path not found */
00099 #define UETIME  6       /* can't set file time */
00100 #define UEBADF  9       /* invalid file handle */
00101 #define UENOMEM 10      /* no enough memory */
00102 #define UEUNKNOWN   11  /* unknown error */
00103 
00104 
00105 
00106 #define _SEEK_CUR       0       /* seek from current position */
00107 #define _SEEK_SET       1       /* seek from begining of file */
00108 #define _SEEK_END       2       /* seek from end of file */
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;       //step 0: working on dir entries, 1: working on file entries, 2: stoped.
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 //URET uffs_CreateObject(uffs_Object *obj, const char *fullname, int pmode);
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 /* find objects */
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 

Generated on Sat Mar 17 15:45:44 2007 for uffs-doc by  doxygen 1.5.0