|
|
@@ -11,7 +11,10 @@
|
|
|
#ifndef LUAT_WEAK
|
|
|
#define LUAT_WEAK __attribute__((weak))
|
|
|
#endif
|
|
|
-
|
|
|
+/**
|
|
|
+ * @defgroup luat_fs 文件系统接口
|
|
|
+ * @{
|
|
|
+ */
|
|
|
typedef struct luat_fs_conf {
|
|
|
char* busname;
|
|
|
char* type;
|
|
|
@@ -28,26 +31,123 @@ typedef struct luat_fs_info
|
|
|
size_t block_size;
|
|
|
}luat_fs_info_t;
|
|
|
|
|
|
-
|
|
|
+/**
|
|
|
+ * @brief 文件系统初始化
|
|
|
+ * @return int =0成功,其他失败
|
|
|
+ */
|
|
|
int luat_fs_init(void);
|
|
|
|
|
|
int luat_fs_mkfs(luat_fs_conf_t *conf);
|
|
|
int luat_fs_mount(luat_fs_conf_t *conf);
|
|
|
int luat_fs_umount(luat_fs_conf_t *conf);
|
|
|
+
|
|
|
+/**
|
|
|
+ * @brief 获取文件系统状态
|
|
|
+ * @param path[IN] 挂载路径, 通常为 /
|
|
|
+ * @param info[OUT] 文件系统信息
|
|
|
+ * @return int =0成功,其他失败
|
|
|
+ */
|
|
|
int luat_fs_info(const char* path, luat_fs_info_t *conf);
|
|
|
|
|
|
+/**
|
|
|
+ * @brief 打开文件,类似于fopen
|
|
|
+ * @param filename[IN] 文件路径
|
|
|
+ * @param mode[IN] 打开模式,与posix类型, 例如 "r" "rw" "w" "w+" "a"
|
|
|
+ * @return FILE* 文件句柄,失败返回NULL
|
|
|
+ */
|
|
|
+
|
|
|
FILE* luat_fs_fopen(const char *filename, const char *mode);
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @brief 读到单个字节,类似于getc
|
|
|
+ * @param stream[IN] 文件句柄
|
|
|
+ * @return int >=0读取成功返回, -1失败, 例如读取到文件尾部
|
|
|
+ */
|
|
|
+
|
|
|
int luat_fs_getc(FILE* stream);
|
|
|
+
|
|
|
+/**
|
|
|
+ * @brief 设置句柄位置,类似于fseek
|
|
|
+ * @param stream[IN] 文件句柄
|
|
|
+ * @param offset[IN] 偏移量
|
|
|
+ * @param origin[IN] 参考点, 例如 SEEK_SET 绝对坐标, SEEK_END 结尾, SEEK_CUR 当前
|
|
|
+ * @return int >=0成功,否则失败
|
|
|
+ */
|
|
|
int luat_fs_fseek(FILE* stream, long int offset, int origin);
|
|
|
+/**
|
|
|
+ * @brief 获取句柄位置,类似于ftell
|
|
|
+ * @param stream[IN] 文件句柄
|
|
|
+ * @return int >=0当前位置, 否则失败
|
|
|
+ */
|
|
|
int luat_fs_ftell(FILE* stream);
|
|
|
+
|
|
|
+/**
|
|
|
+ * @brief 关闭句柄位置,类似于fclose
|
|
|
+ * @param stream[IN] 文件句柄
|
|
|
+ * @return int =0成功,否则失败
|
|
|
+ */
|
|
|
int luat_fs_fclose(FILE* stream);
|
|
|
+/**
|
|
|
+ * @brief 是否已经到文件结尾,类似于feof
|
|
|
+ * @param stream[IN] 文件句柄
|
|
|
+ * @return int =0未到文件尾部,其余为到达文件尾部
|
|
|
+ */
|
|
|
int luat_fs_feof(FILE* stream);
|
|
|
+/**
|
|
|
+ * @brief 是否有文件系统错误,类似于ferror
|
|
|
+ * @param stream[IN] 文件句柄
|
|
|
+ * @return int =0无错误, 其余为错误值
|
|
|
+ */
|
|
|
int luat_fs_ferror(FILE *stream);
|
|
|
+/**
|
|
|
+ * @brief 读取文件,类似于fread
|
|
|
+ * @param ptr[OUT] 存放读取数据的缓冲区
|
|
|
+ * @param size[IN] 单次读取大小
|
|
|
+ * @param nmemb[IN] 读取次数
|
|
|
+ * @param stream[IN] 文件句柄
|
|
|
+ * @return int >=0实际读取的数量,<0出错
|
|
|
+ */
|
|
|
size_t luat_fs_fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
|
|
|
+/**
|
|
|
+ * @brief 写入文件,类似于fwrite
|
|
|
+ * @param ptr[OUT] 存放写入数据的缓冲区
|
|
|
+ * @param size[IN] 单次读取大小
|
|
|
+ * @param nmemb[IN] 读取次数
|
|
|
+ * @param stream[IN] 文件句柄
|
|
|
+ * @return int >=0实际写入的数量,<0出错
|
|
|
+ */
|
|
|
+
|
|
|
size_t luat_fs_fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @brief 删除文件,类似于remove
|
|
|
+ * @param filename[IN] 文件路径
|
|
|
+ * @return int =0成功,否则失败
|
|
|
+ */
|
|
|
int luat_fs_remove(const char *filename);
|
|
|
+/**
|
|
|
+ * @brief 文件改名,类似于rename
|
|
|
+ * @param old_filename[IN] 原文件路径
|
|
|
+ * @param new_filename[IN] 新文件路径
|
|
|
+ * @return int =0成功,否则失败
|
|
|
+ */
|
|
|
+
|
|
|
int luat_fs_rename(const char *old_filename, const char *new_filename);
|
|
|
+/**
|
|
|
+ * @brief 文件大小,类似于fsize
|
|
|
+ * @param filename[IN] 文件路径
|
|
|
+ * @return int >=0文件大小, 如果文件不存在也是返回0
|
|
|
+ */
|
|
|
+
|
|
|
size_t luat_fs_fsize(const char *filename);
|
|
|
+
|
|
|
+/**
|
|
|
+ * @brief 文件是否存在,类似于fexist
|
|
|
+ * @param filename[IN] 文件路径
|
|
|
+ * @return int =0不存在,否则存在
|
|
|
+ */
|
|
|
int luat_fs_fexist(const char *filename);
|
|
|
int luat_fs_readline(char * buf, int bufsize, FILE * stream);
|
|
|
void* luat_fs_mmap(FILE * stream);
|
|
|
@@ -57,16 +157,36 @@ void* luat_fs_mmap(FILE * stream);
|
|
|
|
|
|
typedef struct luat_fs_dirent
|
|
|
{
|
|
|
- unsigned char d_type;
|
|
|
+ unsigned char d_type; //0:文件;1:文件夹
|
|
|
char d_name[255];
|
|
|
}luat_fs_dirent_t;
|
|
|
|
|
|
|
|
|
+/**
|
|
|
+ * @brief 创建文件夹
|
|
|
+ * @param _DirName[IN] 文件夹路径
|
|
|
+ * @return int =0成功,否则失败
|
|
|
+ */
|
|
|
int luat_fs_mkdir(char const* _DirName);
|
|
|
+/**
|
|
|
+ * @brief 删除文件夹,必须为空文件夹
|
|
|
+ * @param _DirName[IN] 文件夹路径
|
|
|
+ * @return int =0成功,否则失败
|
|
|
+ */
|
|
|
int luat_fs_rmdir(char const* _DirName);
|
|
|
-int luat_fs_lsdir(char const* _DirName, luat_fs_dirent_t* ents, size_t offset, size_t len);
|
|
|
|
|
|
+/**
|
|
|
+ * @brief 遍历文件夹
|
|
|
+ * @param _DirName[IN] 文件夹路径
|
|
|
+ * @param ents[OUT] 文件列表,必须已分配内存,且不小于len个元素
|
|
|
+ * @param offset[IN] 跳过多少个文件
|
|
|
+ * @param len[IN] 最多读取多少个文件
|
|
|
+ * @return int =>0读取到文件个数,否则失败
|
|
|
+ */
|
|
|
+
|
|
|
+int luat_fs_lsdir(char const* _DirName, luat_fs_dirent_t* ents, size_t offset, size_t len);
|
|
|
|
|
|
+/** @}*/
|
|
|
#ifdef LUAT_USE_FS_VFS
|
|
|
|
|
|
#ifndef LUAT_VFS_FILESYSTEM_MAX
|