fs: fat: set start cluster for root directory
When iterating over a child directory we set itr->start_clust. Do the same when over the root directory. When looking for deleted directory entries or existing short names we will have to iterate over directories a second and third time. With this patch we do not need any special logic for the root directory. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
@@ -734,7 +734,7 @@ static int fat_itr_root(fat_itr *itr, fsdata *fsdata)
|
|||||||
return -ENXIO;
|
return -ENXIO;
|
||||||
|
|
||||||
itr->fsdata = fsdata;
|
itr->fsdata = fsdata;
|
||||||
itr->start_clust = 0;
|
itr->start_clust = fsdata->root_cluster;
|
||||||
itr->clust = fsdata->root_cluster;
|
itr->clust = fsdata->root_cluster;
|
||||||
itr->next_clust = fsdata->root_cluster;
|
itr->next_clust = fsdata->root_cluster;
|
||||||
itr->dent = NULL;
|
itr->dent = NULL;
|
||||||
@@ -778,6 +778,7 @@ static void fat_itr_child(fat_itr *itr, fat_itr *parent)
|
|||||||
} else {
|
} else {
|
||||||
itr->clust = parent->fsdata->root_cluster;
|
itr->clust = parent->fsdata->root_cluster;
|
||||||
itr->next_clust = parent->fsdata->root_cluster;
|
itr->next_clust = parent->fsdata->root_cluster;
|
||||||
|
itr->start_clust = parent->fsdata->root_cluster;
|
||||||
itr->is_root = 1;
|
itr->is_root = 1;
|
||||||
}
|
}
|
||||||
itr->dent = NULL;
|
itr->dent = NULL;
|
||||||
@@ -1067,6 +1068,7 @@ static int fat_itr_resolve(fat_itr *itr, const char *path, unsigned type)
|
|||||||
/* point back to itself */
|
/* point back to itself */
|
||||||
itr->clust = itr->fsdata->root_cluster;
|
itr->clust = itr->fsdata->root_cluster;
|
||||||
itr->next_clust = itr->fsdata->root_cluster;
|
itr->next_clust = itr->fsdata->root_cluster;
|
||||||
|
itr->start_clust = itr->fsdata->root_cluster;
|
||||||
itr->dent = NULL;
|
itr->dent = NULL;
|
||||||
itr->remaining = 0;
|
itr->remaining = 0;
|
||||||
itr->last_cluster = 0;
|
itr->last_cluster = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user