Derek Price <[EMAIL PROTECTED]> writes: > 1. Corrects an incorrect check for a successful return from > getlogin_r to assume only 0 means success, per the POSIX2 spec: > > <http://www.opengroup.org/onlinepubs/009695399/functions/getlogin_r.html>. > 2. Moves the check for GLOB_MARK directory status (and the append of > `/') into glob_in_dir, where it is more efficient than performing > a second pass and sometimes calling stat a second time on each > file or directory. All calls to stat are avoided when > dirent->d_type is available. No call to realloc of the directory > name is ever necessary since room for the slash can be allocated > in the first pass.
These changes sound reasonable, though we should submit them as separate patches. Is (2) independent of (3)? (Please see below for why this is important.) > 3. Ignores broken links only when GLOB_ONLYDIR is set. With glibc > versions 2.3.3 through 2.3.5, the following in an empty directory > would return nothing: > > ln -s doesnt-exist linkname > glob ("*", ...) > > This fix syncs with the comments in the file, syncs with the > POSIX2 spec, restores the pre-glibc-2.3.3 behavior, and simply > makes more sense - why should `ls *' fail to list broken links? This change sounds controversial to me. glibc 2.3.5 behaves similarly to Solaris 8 and to Solaris 10 -- I just checked, with the following program and with the working directory containing only a dangling symlink: #include <glob.h> #include <stdio.h> int main (void) { glob_t g; int r = glob ("*", 0, NULL, &g); int i; if (r != 0) { fprintf (stderr, "glob failed (%s)\n", r == GLOB_NOMATCH ? "GLOB_NOMATCH" : r == GLOB_NOSPACE ? "GLOB_NOSPACE" : "other glob failure"); return 1; } for (i = 0; i < g.gl_pathc; i++) puts (g.gl_pathv[i]); return 0; } Solaris 8 and 10 both report "glob failed (GLOB_NOMATCH)". Let's separate (3) into a separate patch and think about it more carefully before submitting it. Have you investigated with FreeBSD glob does? It seems to use gl_lstat, which our glob doesn't. That's odd. What's the point of having a gl_lstat if it's never used? _______________________________________________ bug-gnulib mailing list bug-gnulib@gnu.org http://lists.gnu.org/mailman/listinfo/bug-gnulib