@@ -711,9 +711,9 @@ static int lfs_dir_find(lfs_t *lfs, lfs_dir_t *dir,
711
711
return err ;
712
712
}
713
713
714
- if ((( 0xff & entry -> d .type ) != LFS_TYPE_REG &&
715
- ( 0xff & entry -> d .type ) != LFS_TYPE_DIR ) ||
716
- entry -> d .len - sizeof ( entry -> d ) != pathlen ) {
714
+ if ((entry -> d .type != LFS_TYPE_REG &&
715
+ entry -> d .type != LFS_TYPE_DIR ) ||
716
+ entry -> d .name != pathlen ) {
717
717
continue ;
718
718
}
719
719
@@ -784,7 +784,8 @@ int lfs_mkdir(lfs_t *lfs, const char *path) {
784
784
}
785
785
786
786
entry .d .type = LFS_TYPE_DIR ;
787
- entry .d .len = sizeof (entry .d ) + strlen (path );
787
+ entry .d .name = strlen (path );
788
+ entry .d .len = sizeof (entry .d ) + entry .d .name ;
788
789
entry .d .u .dir [0 ] = dir .pair [0 ];
789
790
entry .d .u .dir [1 ] = dir .pair [1 ];
790
791
@@ -868,19 +869,19 @@ int lfs_dir_read(lfs_t *lfs, lfs_dir_t *dir, struct lfs_info *info) {
868
869
return (err == LFS_ERR_NOENT ) ? 0 : err ;
869
870
}
870
871
871
- if (( 0xff & entry .d .type ) == LFS_TYPE_REG ||
872
- ( 0xff & entry .d .type ) == LFS_TYPE_DIR ) {
872
+ if (entry .d .type == LFS_TYPE_REG ||
873
+ entry .d .type == LFS_TYPE_DIR ) {
873
874
break ;
874
875
}
875
876
}
876
877
877
- info -> type = entry .d .type & 0xff ;
878
+ info -> type = entry .d .type ;
878
879
if (info -> type == LFS_TYPE_REG ) {
879
880
info -> size = entry .d .u .file .size ;
880
881
}
881
882
882
883
int err = lfs_bd_read (lfs , dir -> pair [0 ], entry .off + sizeof (entry .d ),
883
- info -> name , entry .d .len - sizeof ( entry . d ) );
884
+ info -> name , entry .d .name );
884
885
if (err ) {
885
886
return err ;
886
887
}
@@ -1116,7 +1117,8 @@ int lfs_file_open(lfs_t *lfs, lfs_file_t *file,
1116
1117
1117
1118
// create entry to remember name
1118
1119
entry .d .type = LFS_TYPE_REG ;
1119
- entry .d .len = sizeof (entry .d ) + strlen (path );
1120
+ entry .d .name = strlen (path );
1121
+ entry .d .len = sizeof (entry .d ) + entry .d .name ;
1120
1122
entry .d .u .file .head = -1 ;
1121
1123
entry .d .u .file .size = 0 ;
1122
1124
err = lfs_dir_append (lfs , & cwd , & entry , path );
@@ -1530,13 +1532,13 @@ int lfs_stat(lfs_t *lfs, const char *path, struct lfs_info *info) {
1530
1532
}
1531
1533
1532
1534
memset (info , 0 , sizeof (* info ));
1533
- info -> type = entry .d .type & 0xff ;
1535
+ info -> type = entry .d .type ;
1534
1536
if (info -> type == LFS_TYPE_REG ) {
1535
1537
info -> size = entry .d .u .file .size ;
1536
1538
}
1537
1539
1538
1540
err = lfs_bd_read (lfs , cwd .pair [0 ], entry .off + sizeof (entry .d ),
1539
- info -> name , entry .d .len - sizeof ( entry . d ) );
1541
+ info -> name , entry .d .name );
1540
1542
if (err ) {
1541
1543
return err ;
1542
1544
}
@@ -1649,7 +1651,8 @@ int lfs_rename(lfs_t *lfs, const char *oldpath, const char *newpath) {
1649
1651
// move to new location
1650
1652
lfs_entry_t newentry = preventry ;
1651
1653
newentry .d = oldentry .d ;
1652
- newentry .d .len = sizeof (newentry .d ) + strlen (newpath );
1654
+ newentry .d .name = strlen (newpath );
1655
+ newentry .d .len = sizeof (newentry .d ) + newentry .d .name ;
1653
1656
1654
1657
if (prevexists ) {
1655
1658
int err = lfs_dir_update (lfs , & newcwd , & newentry , newpath );
@@ -1806,8 +1809,9 @@ int lfs_format(lfs_t *lfs, const struct lfs_config *cfg) {
1806
1809
lfs_superblock_t superblock = {
1807
1810
.off = sizeof (superdir .d ),
1808
1811
.d .type = LFS_TYPE_SUPERBLOCK ,
1812
+ .d .name = sizeof (superblock .d .magic ),
1809
1813
.d .len = sizeof (superblock .d ),
1810
- .d .version = 0x00000001 ,
1814
+ .d .version = 0x00010001 ,
1811
1815
.d .magic = {"littlefs" },
1812
1816
.d .block_size = lfs -> cfg -> block_size ,
1813
1817
.d .block_count = lfs -> cfg -> block_count ,
@@ -1874,7 +1878,7 @@ int lfs_mount(lfs_t *lfs, const struct lfs_config *cfg) {
1874
1878
return LFS_ERR_CORRUPT ;
1875
1879
}
1876
1880
1877
- if (superblock .d .version > 0x0000ffff ) {
1881
+ if (superblock .d .version > ( 0x00010001 | 0x0000ffff ) ) {
1878
1882
LFS_ERROR ("Invalid version %d.%d\n" ,
1879
1883
0xffff & (superblock .d .version >> 16 ),
1880
1884
0xffff & (superblock .d .version >> 0 ));
@@ -1922,7 +1926,7 @@ int lfs_traverse(lfs_t *lfs, int (*cb)(void*, lfs_block_t), void *data) {
1922
1926
}
1923
1927
1924
1928
dir .off += entry .d .len ;
1925
- if ((0xf & entry .d .type ) == LFS_TYPE_REG ) {
1929
+ if ((0xf & entry .d .type ) == ( 0xf & LFS_TYPE_REG ) ) {
1926
1930
int err = lfs_index_traverse (lfs , & lfs -> rcache , NULL ,
1927
1931
entry .d .u .file .head , entry .d .u .file .size , cb , data );
1928
1932
if (err ) {
@@ -2012,7 +2016,7 @@ static int lfs_parent(lfs_t *lfs, const lfs_block_t dir[2],
2012
2016
break ;
2013
2017
}
2014
2018
2015
- if (((0xf & entry -> d .type ) == LFS_TYPE_DIR ) &&
2019
+ if (((0xf & entry -> d .type ) == ( 0xf & LFS_TYPE_DIR )) &&
2016
2020
lfs_paircmp (entry -> d .u .dir , dir ) == 0 ) {
2017
2021
return true;
2018
2022
}
0 commit comments