Mercurial > ecos-v3_0-branch
changeset 2411:fe481a165385
* src/fatfs.c: When removing a directory, first remove . and
.. nodes.
| author | asl |
|---|---|
| date | Tue, 31 Jul 2007 18:41:43 +0000 |
| parents | 87cd3c9ced46 |
| children | 80745a26ab22 |
| files | packages/fs/fat/current/ChangeLog packages/fs/fat/current/src/fatfs.c |
| diffstat | 2 files changed, 16 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/fs/fat/current/ChangeLog +++ b/packages/fs/fat/current/ChangeLog @@ -1,3 +1,8 @@ +2007-07-31 Hajime Ishitani <pigmon@mail.snd.co.jp> + + * src/fatfs.c: When removing a directory, first remove . and + .. nodes. + 2007-02-05 Ya-Chau Yang <a8850607@stmail.fju.edu.tw> Savin Zlobec <savinz@users.sourceforge.net>
--- a/packages/fs/fat/current/src/fatfs.c +++ b/packages/fs/fat/current/src/fatfs.c @@ -756,6 +756,7 @@ fatfs_rmdir(cyg_mtab_entry *mte, cyg_dir fatfs_disk_t *disk = (fatfs_disk_t *) mte->data; fatfs_dirsearch_t ds; int err; + fatfs_node_t *node; CYG_TRACE3(TFS, "rmdir mte=%p dir=%p name='%s'", mte, dir, name); @@ -774,8 +775,17 @@ fatfs_rmdir(cyg_mtab_entry *mte, cyg_dir err = fatfs_delete_file(disk, &ds.node->dentry); if (err == ENOERR) + { + node = fatfs_node_find( disk, ".", 1, ds.node->dentry.cluster ); + if (node != NULL) + fatfs_node_free(disk, node); + + node = fatfs_node_find( disk, "..", 2, ds.node->dentry.cluster ); + if (node != NULL) + fatfs_node_free(disk, node); + fatfs_node_free(disk, ds.node); - + } return err; }
