Re: New GNULIB glob module?

Paul Eggert <[email protected]> Sat, 14 May 2005 13:52:46 -0700
Newsgroups gmane.comp.lib.gnulib.bugs,gmane.comp.version-control.cvs.bugs
Message-ID <[email protected]>
Derek Price <[email protected]> writes:

>  /* Enable GNU extensions in glob.h.  */
> -#ifndef _GNU_SOURCE
> +#if defined _LIBC && !defined _GNU_SOURCE
>  # define _GNU_SOURCE	1
>  #endif

I just checked the glibc source file include/libc-symbols.h, and it
defines both _LIBC and _GNU_SOURCE.  So this stuff isn't needed at
all; please remove these lines from glob.c instead.

> +   HAVE_STRUCT_DIRENT_D_TYPE is defined by GNULIB's glob.m4 when the same
> +   member is found.  */

A bit wordy; please rephrase to "HAVE_STRUCT_DIRENT_D_TYPE plays the
same rule in gnulib."

> -      qsort ((__ptr_t) &pglob->gl_pathv[oldcount],
> +      qsort ((void *) &pglob->gl_pathv[oldcount],

You can remove the cast entirely, right?

> -	  free ((__ptr_t) pglob->gl_pathv[pglob->gl_offs + i]);
> -      free ((__ptr_t) pglob->gl_pathv);
> +	  free ((void *) pglob->gl_pathv[pglob->gl_offs + i]);
> +      free ((void *) pglob->gl_pathv);

Similarly, these casts aren't needed.

-	    free ((__ptr_t) array[--i]);
+	    free ((void *) array[--i]);

Nor these.

> -	    free ((__ptr_t) array[--i]);
> +	    free ((void *) array[--i]);

Nor this one.

> +			  p = mempcpy ((void *) new->name, name, len);

Nor this one.

> -	free ((__ptr_t) names->name);
> +	free ((void *) names->name);

Nor this.


> -  return (((flags & GLOB_ALTDIRFUNC)
> -	   ? (*pglob->gl_stat) (fullname, &st)
> -	   : __stat64 (fullname, &st64)) == 0);
> +  return ((flags & GLOB_ALTDIRFUNC)
> +	  ? (*pglob->gl_stat) (fullname, &st) == 0 && S_ISDIR (st.st_mode)
> +	  : __stat64 (fullname, &st64) == 0 && S_ISDIR (st64.st_mode));

As long as you're reparenthesizing you might as well get rid of
the unnecessary ones around (flags & GLOB_ALTDIRFUNC).

> +			  new->name = malloc (len + 1
> +					      + ((flags & GLOB_MARK) && isdir));

This line is 80 columns; should probably shrink it to 78, e.g., via.

  new->name =
    malloc (...);

glob.c is looking pretty good now.  I gotta run now, but I'll look at
glob.h later today I hope.