X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fnames.c;h=05f89b15d19ab615c793c7dcc4709a436c294ac0;hb=c30c4ffb9fc874aafea6f6c91f3fc78595db4154;hp=2eb7629c0d9911e7ec4261cd3692160d02404129;hpb=983d328ff2800110e43285cb08b9b000fccdd569;p=chaz%2Ftar diff --git a/src/names.c b/src/names.c index 2eb7629..05f89b1 100644 --- a/src/names.c +++ b/src/names.c @@ -1,11 +1,11 @@ /* Various processing of names. Copyright (C) 1988, 1992, 1994, 1996, 1997, 1998, 1999, 2000, 2001, - 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any later + Free Software Foundation; either version 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but @@ -289,9 +289,8 @@ static int matching_flags; /* exclude_fnmatch options */ static storage and can't be relied upon across two calls. If CHANGE_DIRS is true, treat any entries of type NELT_CHDIR as - the request to change to the given directory. If filename_terminator - is NUL, CHANGE_DIRS is effectively always false. - + the request to change to the given directory. + Entries of type NELT_FMASK cause updates of the matching_flags value. */ struct name_elt * @@ -301,9 +300,6 @@ name_next_elt (int change_dirs) const char *source; char *cursor; - if (filename_terminator == '\0') - change_dirs = 0; - while (name_index != names) { struct name_elt *ep; @@ -392,9 +388,7 @@ name_gather (void) if (allocated_size == 0) { allocated_size = offsetof (struct name, name) + NAME_FIELD_SIZE + 1; - buffer = xmalloc (allocated_size); - /* FIXME: This memset is overkill, and ugly... */ - memset (buffer, 0, allocated_size); + buffer = xzalloc (allocated_size); } while ((ep = name_next_elt (0)) && ep->type == NELT_CHDIR) @@ -734,7 +728,7 @@ static void add_hierarchy_to_namelist (struct name *name, dev_t device) { char *file_name = name->name; - char *buffer = get_directory_contents (file_name, device); + const char *buffer = get_directory_contents (file_name, device); if (! buffer) name->dir_contents = "\0\0\0\0"; @@ -746,7 +740,7 @@ add_hierarchy_to_namelist (struct name *name, dev_t device) : NAME_FIELD_SIZE); char *namebuf = xmalloc (allocated_length + 1); /* FIXME: + 2 above? */ - char *string; + const char *string; size_t string_length; int change_dir = name->change_dir; @@ -1012,11 +1006,10 @@ contains_dot_dot (char const *name) if (p[0] == '.' && p[1] == '.' && (ISSLASH (p[2]) || !p[2])) return 1; - do + while (! ISSLASH (*p)) { if (! *p++) return 0; } - while (! ISSLASH (*p)); } }