Mercurial > ecos
changeset 2364:028e0fe198b5
* src/fatfs_supp.c: Fixed FAT32 cluster handling in
fatfs_delete_file and fatfs_rename_file.
| author | asl |
|---|---|
| date | Tue, 06 Feb 2007 08:46:11 +0000 |
| parents | f0b2da61ab63 |
| children | 6f3a847c9adc |
| files | packages/fs/fat/current/ChangeLog packages/fs/fat/current/src/fatfs_supp.c |
| diffstat | 2 files changed, 11 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/fs/fat/current/ChangeLog +++ b/packages/fs/fat/current/ChangeLog @@ -1,3 +1,9 @@ +2007-02-05 Ya-Chau Yang <a8850607@stmail.fju.edu.tw> + Savin Zlobec <savinz@users.sourceforge.net> + + * src/fatfs_supp.c: Fixed FAT32 cluster handling in + fatfs_delete_file and fatfs_rename_file. + 2007-01-27 Andrew Lunn <andrew.lunn@ascom.ch> * tests/fatfs1.c: Fixed the format string to diag_printf()
--- a/packages/fs/fat/current/src/fatfs_supp.c +++ b/packages/fs/fat/current/src/fatfs_supp.c @@ -1265,7 +1265,7 @@ print_raw_dentry(fat_raw_dir_entry_t* de diag_printf("FAT: FDE acc date: %u\n", dentry->acc_date); diag_printf("FAT: FDE wrt time: %u\n", dentry->wrt_time); diag_printf("FAT: FDE wrt date: %u\n", dentry->wrt_date); - diag_printf("FAT: FDE cluster: %u\n", dentry->cluster); + diag_printf("FAT: FDE cluster: %u\n", (dentry->cluster_HI << 16) | dentry->cluster); diag_printf("FAT: FDE size: %u\n", dentry->size); } #endif // TDE @@ -2166,7 +2166,7 @@ fatfs_delete_file(fatfs_disk_t *disk, fa } // Free file clusters - free_cluster_chain(disk, raw_dentry.cluster); + free_cluster_chain(disk, raw_dentry.cluster | (raw_dentry.cluster_HI << 16)); raw_dentry_set_deleted(disk, &raw_dentry); err = write_raw_dentry(disk, &file->disk_pos, &raw_dentry); return err; @@ -2404,6 +2404,7 @@ fatfs_rename_file(fatfs_disk_t *dis raw_dentry_set_deleted(disk, &raw_dentry); raw_dentry.size = 0; raw_dentry.cluster = 0; + raw_dentry.cluster_HI = 0; err = write_raw_dentry(disk, &target->disk_pos, &raw_dentry); if (err != ENOERR) return err; @@ -2436,7 +2437,8 @@ fatfs_rename_file(fatfs_disk_t *dis if (0 == strncmp("..", raw_cdentry.name, 2)) { - raw_cdentry.cluster = dir2->cluster; + raw_cdentry.cluster = dir2->cluster & 0xFFFF; + raw_cdentry.cluster_HI = dir2->cluster >> 16; err = write_raw_dentry(disk, &pos, &raw_cdentry); if (err != ENOERR) return err;
