bug-gnu-utils
[Top][All Lists]
Advanced

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

Re: Exclusions not working


From: Paul Eggert
Subject: Re: Exclusions not working
Date: Fri, 3 Nov 2000 09:39:38 -0800 (PST)

I can't reproduce the problem on Solaris with GNU tar 1.13.18 using
the following scenario.  Is this scenario the right one?

   $ mkdir -p spool/postfix/private
   $ touch spool/postfix/private/file
   $ echo './spool/postfix/private/*' >x
   $ gtar -cf /tmp/tar --exclude-from=x .
   $ gtar -tvf /tmp/tar
   drwxrwxr-x eggert/eggert     0 2000-11-03 09:29:33 ./
   drwxrwxr-x eggert/eggert     0 2000-11-03 09:27:41 ./spool/
   drwxrwxr-x eggert/eggert     0 2000-11-03 09:27:41 ./spool/postfix/
   drwxrwxr-x eggert/eggert     0 2000-11-03 09:27:49 ./spool/postfix/private/
   -rw-rw-r-- eggert/eggert    26 2000-11-03 09:28:01 ./x

Possibly that is a bug in your GNU C library.  Please try using GNU
tar 1.13.18 <ftp://alpha.gnu.org/gnu/tar/> with the following patch;
it works around the glibc bug.  If that doesn't work, please send a
standalone test case.

2000-11-02  Paul Eggert  <address@hidden>

        * lib/fnmatch.c: Do not comment out all the code if we are
        using the GNU C library, because in some cases we are
        replacing buggy code in the GNU C library itself.

2000-10-30  Paul Eggert  <address@hidden>

        * lib/fnmatch.c (FOLD): Do not assume that characters are unsigned.

===================================================================
RCS file: lib/fnmatch.c,v
retrieving revision 1.2
retrieving revision 1.4
diff -pu -r1.2 -r1.4
--- lib/fnmatch.c       2000/10/24 06:18:37     1.2
+++ lib/fnmatch.c       2000/11/03 00:23:21     1.4
@@ -27,22 +27,10 @@
 #include <fnmatch.h>
 #include <ctype.h>
 
-
-/* Comment out all this code if we are using the GNU C Library, and are not
-   actually compiling the library itself.  This code is part of the GNU C
-   Library, but also included in many other GNU distributions.  Compiling
-   and linking in this code is a waste when using the GNU C library
-   (especially if it is a shared library).  Rather than having every GNU
-   program understand `configure --with-gnu-libc' and omit the object files,
-   it is simpler to just do this in the source for each such file.  */
-
-#if defined _LIBC || !defined __GNU_LIBRARY__
-
-
 # if defined STDC_HEADERS || !defined isascii
 #  define IN_CTYPE_DOMAIN(c) 1
 # else
-#  define IN_CTYPE_DOMAIN(c) isascii(c)
+#  define IN_CTYPE_DOMAIN(c) isascii (c)
 # endif
 
 # define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (c))
@@ -61,7 +49,9 @@ fnmatch (const char *pattern, const char
   register char c;
 
 /* Note that this evaluates C many times.  */
-# define FOLD(c) ((flags & FNM_CASEFOLD) && ISUPPER (c) ? tolower (c) : (c))
+# define FOLD(c) ((flags & FNM_CASEFOLD) && ISUPPER ((unsigned char) (c)) \
+                  ? tolower ((unsigned char) (c)) \
+                  : (c))
 
   while ((c = *p++) != '\0')
     {
@@ -238,5 +228,3 @@ fnmatch (const char *pattern, const char
 
 # undef FOLD
 }
-
-#endif /* _LIBC or not __GNU_LIBRARY__.  */



reply via email to

[Prev in Thread] Current Thread [Next in Thread]