@@ -1016,6 +1016,7 @@ int lfs_dir_seek(lfs_t *lfs, lfs_dir_t *dir, lfs_off_t off) {
1016
1016
}
1017
1017
1018
1018
lfs_soff_t lfs_dir_tell (lfs_t * lfs , lfs_dir_t * dir ) {
1019
+ (void )lfs ;
1019
1020
return dir -> pos ;
1020
1021
}
1021
1022
@@ -1669,7 +1670,8 @@ int lfs_file_truncate(lfs_t *lfs, lfs_file_t *file, lfs_off_t size) {
1669
1670
return LFS_ERR_INVAL ;
1670
1671
}
1671
1672
1672
- if (size < lfs_file_size (lfs , file )) {
1673
+ lfs_off_t oldsize = lfs_file_size (lfs , file );
1674
+ if (size < oldsize ) {
1673
1675
// need to flush since directly changing metadata
1674
1676
int err = lfs_file_flush (lfs , file );
1675
1677
if (err ) {
@@ -1686,11 +1688,11 @@ int lfs_file_truncate(lfs_t *lfs, lfs_file_t *file, lfs_off_t size) {
1686
1688
1687
1689
file -> size = size ;
1688
1690
file -> flags |= LFS_F_DIRTY ;
1689
- } else if (size > lfs_file_size ( lfs , file ) ) {
1691
+ } else if (size > oldsize ) {
1690
1692
lfs_off_t pos = file -> pos ;
1691
1693
1692
1694
// flush+seek if not already at end
1693
- if (file -> pos != lfs_file_size ( lfs , file ) ) {
1695
+ if (file -> pos != oldsize ) {
1694
1696
int err = lfs_file_seek (lfs , file , 0 , SEEK_END );
1695
1697
if (err ) {
1696
1698
return err ;
@@ -1716,6 +1718,7 @@ int lfs_file_truncate(lfs_t *lfs, lfs_file_t *file, lfs_off_t size) {
1716
1718
}
1717
1719
1718
1720
lfs_soff_t lfs_file_tell (lfs_t * lfs , lfs_file_t * file ) {
1721
+ (void )lfs ;
1719
1722
return file -> pos ;
1720
1723
}
1721
1724
@@ -1729,6 +1732,7 @@ int lfs_file_rewind(lfs_t *lfs, lfs_file_t *file) {
1729
1732
}
1730
1733
1731
1734
lfs_soff_t lfs_file_size (lfs_t * lfs , lfs_file_t * file ) {
1735
+ (void )lfs ;
1732
1736
if (file -> flags & LFS_F_WRITING ) {
1733
1737
return lfs_max (file -> pos , file -> size );
1734
1738
} else {
0 commit comments