[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Lost] [PATCH] ! cdi/ext2: dot- und dotdot-Eintraege nicht als Ressourcen anlegen in Verzeichnissen, sonst klappt das mit dem Loeschen nicht, wenn die Listengroesse geprueft wird



Am Sonntag, 5. Oktober 2008 15:58:54 schrieb Antoine Kaufmann:
> [Lost] [PATCH] ! cdi/ext2: dot- und dotdot-Eintraege nicht als Ressourcen
> anlegen in Verzeichnissen, sonst klappt das mit dem Loeschen nicht, wenn
> die Listengroesse geprueft wird Von:
> Antoine Kaufmann <toni@xxxxxxxxxxxxxxxx>
>   An:
> "LOST-Patches" <lost@xxxxxxxxxx>
>   Datum:
> Heute 15:58:54
>   Anhänge: 
>  5023ca57efcf9497a2137ac5b2a9f7c37409718d.diff
>    
> ---
>  src/modules/cdi/ext2/res.c |    9 ++++++++-
>  1 files changed, 8 insertions(+), 1 deletions(-)
> 5023ca57efcf9497a2137ac5b2a9f7c37409718d.diff
>   diff --git a/src/modules/cdi/ext2/res.c b/src/modules/cdi/ext2/res.c
> index cc7c331..50d7cc4 100644
> --- a/src/modules/cdi/ext2/res.c
> +++ b/src/modules/cdi/ext2/res.c
> @@ -44,12 +44,19 @@ static int dir_fill_handler(ext2_dirent_t* dirent,
> void* priv) struct ext2_fs_res* parent_res = (struct ext2_fs_res*) priv;
>  
>      memset(res, 0, sizeof(*res));
> -    cdi_list_push(parent_res->res.children, res);
>      res->res.parent = (struct cdi_fs_res*) parent_res;
>  
>      res->res.name = ext2_dir_alloc_name(dirent);
>      res->res.res = &ext2_fs_res;
>      res->inode_num = dirent->inode;
> +
> +    // Dot- und Dotdot-Eintraege wollen wir nicht
> +    if (!strcmp(res->res.name, ".") || !strcmp(res->res.name, "..")) {
> +        free(res->res.name);
> +        free(res);
> +    } else {
> +        cdi_list_push(parent_res->res.children, res);
> +    }
>      return 0;
>  }

Hm, dann krieg ich aber . und .. auch nicht mehr, wenn ich das Verzeichnis mit 
directory_read() auslese, oder? Sprich, die beiden Einträge werden einfach 
als nicht existent betrachtet? In dem Fall wäre das irgendwie doof.