mirror of
				https://github.com/eledio-devices/thirdparty-littlefs.git
				synced 2025-11-01 00:38:29 +01:00 
			
		
		
		
	WIP Fixed big-endian support
This commit is contained in:
		
							
								
								
									
										19
									
								
								lfs.c
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								lfs.c
									
									
									
									
									
								
							| @@ -1272,6 +1272,7 @@ int lfs_mkdir(lfs_t *lfs, const char *path) { | |||||||
|  |  | ||||||
|     cwd.d.tail[0] = dir.pair[0]; |     cwd.d.tail[0] = dir.pair[0]; | ||||||
|     cwd.d.tail[1] = dir.pair[1]; |     cwd.d.tail[1] = dir.pair[1]; | ||||||
|  |     lfs_entry_tole32(&entry.d); | ||||||
|     err = lfs_dir_set(lfs, &cwd, &entry, (struct lfs_region[]){ |     err = lfs_dir_set(lfs, &cwd, &entry, (struct lfs_region[]){ | ||||||
|             {LFS_FROM_MEM, 0, 0, &entry.d, sizeof(entry.d)}, |             {LFS_FROM_MEM, 0, 0, &entry.d, sizeof(entry.d)}, | ||||||
|             {LFS_FROM_MEM, 0, 0, path, nlen}}, 2); |             {LFS_FROM_MEM, 0, 0, path, nlen}}, 2); | ||||||
| @@ -1893,8 +1894,7 @@ int lfs_file_sync(lfs_t *lfs, lfs_file_t *file) { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         lfs_entry_t entry = {.off = file->pairoff}; |         lfs_entry_t entry = {.off = file->pairoff}; | ||||||
|         err = lfs_dir_get(lfs, &cwd, entry.off, &entry.d, sizeof(entry.d)); |         err = lfs_dir_get(lfs, &cwd, entry.off, &entry.d, 4); | ||||||
|         lfs_entry_fromle32(&entry.d); |  | ||||||
|         if (err) { |         if (err) { | ||||||
|             return err; |             return err; | ||||||
|         } |         } | ||||||
| @@ -1912,6 +1912,7 @@ int lfs_file_sync(lfs_t *lfs, lfs_file_t *file) { | |||||||
|             entry.d.u.file.head = file->head; |             entry.d.u.file.head = file->head; | ||||||
|             entry.d.u.file.size = file->size; |             entry.d.u.file.size = file->size; | ||||||
|  |  | ||||||
|  |             lfs_entry_tole32(&entry.d); | ||||||
|             buffer = (const uint8_t *)&entry.d + 4; |             buffer = (const uint8_t *)&entry.d + 4; | ||||||
|             size = sizeof(entry.d) - 4; |             size = sizeof(entry.d) - 4; | ||||||
|         } else { |         } else { | ||||||
| @@ -2249,7 +2250,7 @@ int lfs_file_getattrs(lfs_t *lfs, lfs_file_t *file, | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         lfs_entry_t entry = {.off = file->pairoff}; |         lfs_entry_t entry = {.off = file->pairoff}; | ||||||
|         err = lfs_dir_get(lfs, &cwd, entry.off, &entry.d, sizeof(entry.d)); |         err = lfs_dir_get(lfs, &cwd, entry.off, &entry.d, 4); | ||||||
|         if (err) { |         if (err) { | ||||||
|             return err; |             return err; | ||||||
|         } |         } | ||||||
| @@ -2293,7 +2294,7 @@ int lfs_file_setattrs(lfs_t *lfs, lfs_file_t *file, | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         lfs_entry_t entry = {.off = file->pairoff}; |         lfs_entry_t entry = {.off = file->pairoff}; | ||||||
|         err = lfs_dir_get(lfs, &cwd, entry.off, &entry.d, sizeof(entry.d)); |         err = lfs_dir_get(lfs, &cwd, entry.off, &entry.d, 4); | ||||||
|         if (err) { |         if (err) { | ||||||
|             return err; |             return err; | ||||||
|         } |         } | ||||||
| @@ -2740,7 +2741,7 @@ int lfs_mount(lfs_t *lfs, const struct lfs_config *cfg) { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     lfs_entry_t entry = {.off = sizeof(dir.d)}; |     lfs_entry_t entry = {.off = sizeof(dir.d)}; | ||||||
|     err = lfs_dir_get(lfs, &dir, entry.off, &entry.d, sizeof(entry.d)); |     err = lfs_dir_get(lfs, &dir, entry.off, &entry.d, 4); | ||||||
|     if (err) { |     if (err) { | ||||||
|         return err; |         return err; | ||||||
|     } |     } | ||||||
| @@ -3005,6 +3006,7 @@ static int lfs_relocate(lfs_t *lfs, | |||||||
|         // update disk, this creates a desync |         // update disk, this creates a desync | ||||||
|         entry.d.u.dir[0] = newpair[0]; |         entry.d.u.dir[0] = newpair[0]; | ||||||
|         entry.d.u.dir[1] = newpair[1]; |         entry.d.u.dir[1] = newpair[1]; | ||||||
|  |         lfs_entry_tole32(&entry.d); | ||||||
|         int err = lfs_dir_set(lfs, &parent, &entry, (struct lfs_region[]){ |         int err = lfs_dir_set(lfs, &parent, &entry, (struct lfs_region[]){ | ||||||
|                 {LFS_FROM_MEM, 0, sizeof(entry.d), |                 {LFS_FROM_MEM, 0, sizeof(entry.d), | ||||||
|                     &entry.d, sizeof(entry.d)}}, 1); |                     &entry.d, sizeof(entry.d)}}, 1); | ||||||
| @@ -3133,8 +3135,7 @@ int lfs_deorphan(lfs_t *lfs) { | |||||||
|                             entry.d.u.dir[0], entry.d.u.dir[1]); |                             entry.d.u.dir[0], entry.d.u.dir[1]); | ||||||
|                     entry.d.type &= ~LFS_STRUCT_MOVED; |                     entry.d.type &= ~LFS_STRUCT_MOVED; | ||||||
|                     err = lfs_dir_set(lfs, &cwd, &entry, (struct lfs_region[]){ |                     err = lfs_dir_set(lfs, &cwd, &entry, (struct lfs_region[]){ | ||||||
|                             {LFS_FROM_MEM, 0, sizeof(entry.d), |                             {LFS_FROM_MEM, 0, 1, &entry.d, 1}}, 1); | ||||||
|                                 &entry.d, sizeof(entry.d)}}, 1); |  | ||||||
|                     if (err) { |                     if (err) { | ||||||
|                         return err; |                         return err; | ||||||
|                     } |                     } | ||||||
| @@ -3158,7 +3159,7 @@ int lfs_fs_getattrs(lfs_t *lfs, const struct lfs_attr *attrs, int count) { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     lfs_entry_t entry = {.off = sizeof(dir.d)}; |     lfs_entry_t entry = {.off = sizeof(dir.d)}; | ||||||
|     err = lfs_dir_get(lfs, &dir, entry.off, &entry.d, sizeof(entry.d)); |     err = lfs_dir_get(lfs, &dir, entry.off, &entry.d, 4); | ||||||
|     if (err) { |     if (err) { | ||||||
|         return err; |         return err; | ||||||
|     } |     } | ||||||
| @@ -3175,7 +3176,7 @@ int lfs_fs_setattrs(lfs_t *lfs, const struct lfs_attr *attrs, int count) { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     lfs_entry_t entry = {.off = sizeof(dir.d)}; |     lfs_entry_t entry = {.off = sizeof(dir.d)}; | ||||||
|     err = lfs_dir_get(lfs, &dir, entry.off, &entry.d, sizeof(entry.d)); |     err = lfs_dir_get(lfs, &dir, entry.off, &entry.d, 4); | ||||||
|     if (err) { |     if (err) { | ||||||
|         return err; |         return err; | ||||||
|     } |     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user