mirror of
				https://github.com/eledio-devices/thirdparty-littlefs.git
				synced 2025-10-31 00:32:38 +01:00 
			
		
		
		
	Added limited support for directories
This comes with a lot of scafolding put into place around the core of the filesystem. Added operations: - append an entry to a directory - find an entry in a directory - iterate over entries in a directory Some to do: - Chaining multiple directory blocks - Recursion on directory operations
This commit is contained in:
		
							
								
								
									
										35
									
								
								lfs.h
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								lfs.h
									
									
									
									
									
								
							| @@ -13,8 +13,17 @@ | ||||
|  | ||||
| // Data structures | ||||
| enum lfs_error { | ||||
|     LFS_ERROR_OK      = 0, | ||||
|     LFS_ERROR_CORRUPT = -3, | ||||
|     LFS_ERROR_OK       = 0, | ||||
|     LFS_ERROR_CORRUPT  = -3, | ||||
|     LFS_ERROR_NO_ENTRY = -4, | ||||
|     LFS_ERROR_EXISTS   = -5, | ||||
|     LFS_ERROR_NOT_DIR  = -6, | ||||
|     LFS_ERROR_INVALID  = -7, | ||||
| }; | ||||
|  | ||||
| enum lfs_type { | ||||
|     LFS_TYPE_REG = 1, | ||||
|     LFS_TYPE_DIR = 2, | ||||
| }; | ||||
|  | ||||
| typedef struct lfs_free { | ||||
| @@ -28,11 +37,12 @@ typedef struct lfs_free { | ||||
|  | ||||
| typedef struct lfs_dir { | ||||
|     lfs_ino_t pair[2]; | ||||
|     lfs_off_t i; | ||||
|  | ||||
|     lfs_disk_struct lfs_disk_dir { | ||||
|         lfs_word_t rev; | ||||
|         lfs_size_t size; | ||||
|         lfs_ino_t tail[2]; | ||||
|         lfs_ino_t parent[2]; | ||||
|  | ||||
|         struct lfs_disk_free free; | ||||
|     } d; | ||||
| @@ -49,20 +59,9 @@ typedef struct lfs_entry { | ||||
|             lfs_disk_struct { | ||||
|                 lfs_ino_t head; | ||||
|                 lfs_size_t size; | ||||
|                 char name[LFS_NAME_MAX]; | ||||
|             } file; | ||||
|             lfs_disk_struct { | ||||
|                 lfs_ino_t dir[2]; | ||||
|                 char name[LFS_NAME_MAX]; | ||||
|             } dir; | ||||
|             lfs_disk_struct { | ||||
|                 char magic[4]; | ||||
|                 uint32_t read_size; | ||||
|                 uint32_t write_size; | ||||
|                 uint32_t erase_size; | ||||
|                 uint32_t erase_count; | ||||
|             } superblock; | ||||
|         } value; | ||||
|             lfs_ino_t dir[2]; | ||||
|         } u; | ||||
|     } d; | ||||
| } lfs_entry_t; | ||||
|  | ||||
| @@ -83,6 +82,7 @@ typedef struct lfs { | ||||
|     lfs_bd_t *bd; | ||||
|     const struct lfs_bd_ops *ops; | ||||
|  | ||||
|     lfs_ino_t cwd[2]; | ||||
|     lfs_free_t free; | ||||
|     struct lfs_bd_info info; | ||||
| } lfs_t; | ||||
| @@ -92,4 +92,7 @@ lfs_error_t lfs_create(lfs_t *lfs, lfs_bd_t *bd, const struct lfs_bd_ops *bd_ops | ||||
| lfs_error_t lfs_format(lfs_t *lfs); | ||||
| lfs_error_t lfs_mount(lfs_t *lfs); | ||||
|  | ||||
| lfs_error_t lfs_mkdir(lfs_t *lfs, const char *path); | ||||
|  | ||||
|  | ||||
| #endif | ||||
|   | ||||
		Reference in New Issue
	
	Block a user