📄 uffs_fs.h
字号:
/** * \file uffs_fs.h * \brief uffs basic file operations * \author Ricky Zheng */#ifndef _UFFS_FS_H_#define _UFFS_FS_H_#include "uffs/uffs_types.h"#include "uffs/uffs_public.h"#ifdef __cplusplusextern "C"{#endif#define ENCODE_MBCS 1#define ENCODE_UNICODE 2#define UFFS_DEFAULT_ENCODE ENCODE_MBCS/** file object */struct uffs_ObjectSt { /******* objects manager ********/ struct uffs_ObjectSt *next; struct uffs_ObjectSt *head;
int devLockCount;
int devGetCount; /******** init level 0 ********/ char *name; //!< name, for open or create
u32 nameLen; //!< name length u16 sum; //!< sum of name u32 encode; //!< encode method of name uffs_Device *dev; //!< uffs device u32 oflag; u32 pmode; u8 type; int pagesOnHead; //!< data pages on file head block u16 father;
/******* init level 1 ********/ TreeNode *node; //!< file entry node in tree u16 serial; u32 attr; u32 createTime; u32 lastModify; u32 access; /******* output ******/ int err; //!< error number /******* current *******/ u32 pos; //!< current position in file u8 *buf; int bufStart; int bufLen; int bufMaxLen;
/***** others *******/
UBOOL openSucc; //!< U_TRUE: succ, U_FALSE: fail};typedef struct uffs_ObjectSt uffs_Object;#define US_IWRITE 0x0000200#define US_IREAD 0x0000400#define UO_RDONLY 0x0000 //read only#define UO_WRONLY 0x0001 //write only#define UO_RDWR 0x0002 //read and write#define UO_APPEND 0x0008 //append#define UO_BINARY 0x0000 //no used in uffs#define UO_CREATE 0x0100#define UO_TRUNC 0x0200#define UO_EXCL 0x0400 //
#define UO_DIR 0x1000 //open a directory
#define UENOERR 0 /* no error */#define UEACCES 1 /* Tried to open read-only file for writing, or files sharing mode does not allow specified operations, or given path is directory */#define UEEXIST 2 /* _O_CREAT and _O_EXCL flags specified, but filename already exists */#define UEINVAL 3 /* Invalid oflag or pmode argument */#define UEMFILE 4 /* No more file handles available (too many open files) */#define UENOENT 5 /* file or path not found */#define UETIME 6 /* can't set file time */#define UEBADF 9 /* invalid file handle */#define UENOMEM 10 /* no enough memory */
#define UEUNKNOWN 11 /* unknown error */
#define _SEEK_CUR 0 /* seek from current position */#define _SEEK_SET 1 /* seek from begining of file */#define _SEEK_END 2 /* seek from end of file */#define USEEK_CUR _SEEK_CUR#define USEEK_SET _SEEK_SET#define USEEK_END _SEEK_ENDtypedef struct uffs_ObjectInfoSt { uffs_fileInfo info; u32 len;
u16 serial;} uffs_ObjectInfo;typedef struct uffs_FindInfoSt { uffs_Object *obj;
uffs_Device *dev; u16 father;
int step; //step 0: working on dir entries, 1: working on file entries, 2: stoped.
int hash; TreeNode *work;
} uffs_FindInfo;URET uffs_InitObjectBuf(void);uffs_Object * uffs_GetObject(void);void uffs_PutObject(uffs_Object *obj);int uffs_GetObjectIndex(uffs_Object *obj);uffs_Object * uffs_GetObjectByIndex(int idx);URET uffs_OpenObject(uffs_Object *obj, const char *fullname, int oflag, int pmode);URET uffs_TruncateObject(uffs_Object *obj, u32 remain);//URET uffs_CreateObject(uffs_Object *obj, const char *fullname, int pmode);
URET uffs_CreateObject(uffs_Object *obj, const char *fullname, int oflag, int pmode);
URET uffs_CloseObject(uffs_Object *obj);int uffs_WriteObject(uffs_Object *obj, const void *data, int len);int uffs_ReadObject(uffs_Object *obj, void *data, int len);long uffs_SeekObject(uffs_Object *obj, long offset, int origin);int uffs_GetCurOffset(uffs_Object *obj);
int uffs_EndOfFile(uffs_Object *obj);
URET uffs_RenameObject(const char *old_name, const char *new_name);URET uffs_DeleteObject(const char * name);URET uffs_GetObjectInfo(uffs_Object *obj, uffs_ObjectInfo *info);/* find objects */URET uffs_OpenFindObject(uffs_FindInfo *find_handle, const char * dir);URET uffs_FindFirstObject(uffs_ObjectInfo * info, uffs_FindInfo * find_handle);URET uffs_FindNextObject(uffs_ObjectInfo *info, uffs_FindInfo * find_handle);URET uffs_CloseFindObject(uffs_FindInfo * find_handle);#ifdef __cplusplus}#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -