Fix another error related to whitespace handling in archives.
authorPaul Smith <psmith@gnu.org>
Sun, 12 Jun 2011 16:22:04 +0000 (16:22 +0000)
committerPaul Smith <psmith@gnu.org>
Sun, 12 Jun 2011 16:22:04 +0000 (16:22 +0000)
Newer version of VMS support strncasecmp() so update the config.h.

ChangeLog
config.h-vms.template
read.c
tests/ChangeLog
tests/scripts/features/archives

index b72f24c..84ba7a2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2011-06-12  Paul Smith  <psmith@gnu.org>
+
+       * read.c (parse_file_seq): Move the check for empty members out of
+       the loop so we can go to the next member properly.
+       Another fix for Savannah bug #30612.
+
+       * config.h-vms.template: Newer versions of VMS have strncasecmp()
+       Patch provided by: Hartmut Becker <becker.ismaning@freenet.de>
+
 2011-05-07  Paul Smith  <psmith@gnu.org>
 
        * expand.c (variable_append): Add a LOCAL argument to track
index 337e234..cf9d5e4 100644 (file)
@@ -110,6 +110,11 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define to 1 if you have the strcoll function and it is properly defined.  */
 /* #undef HAVE_STRCOLL */
 
+/* Define to 1 if you have the strncasecmp' function. */
+#if __CRTL_VER >= 70000000
+#define HAVE_STRNCASECMP 1
+#endif
+
 /* Define to 1 if your struct stat has st_rdev.  */
 /* #undef HAVE_ST_RDEV */
 
diff --git a/read.c b/read.c
index c87d4a7..b012094 100644 (file)
--- a/read.c
+++ b/read.c
@@ -3044,16 +3044,16 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar,
                       nlen -= (n + 1) - tp;
                       tp = n + 1;
 
-                      /* If we have just "lib(", part of something like
-                         "lib( a b)", go to the next item.  */
-                      if (! nlen)
-                        continue;
-
                       /* We can stop looking now.  */
                       break;
                     }
                 }
               while (*e != '\0');
+
+              /* If we have just "lib(", part of something like "lib( a b)",
+                 go to the next item.  */
+              if (! nlen)
+                continue;
             }
         }
 
index 629242c..d800b49 100644 (file)
@@ -1,3 +1,9 @@
+2011-06-12  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/archives: Check archives with whitespace at the
+       beginning, end, and extra in the middle.
+       Another test for Savannah bug #30612.
+
 2011-05-07  Paul Smith  <psmith@gnu.org>
 
        * scripts/variables/private: Ensure we skip private variables when
index 00aa1af..3fe46a0 100644 (file)
@@ -36,6 +36,11 @@ utouch(-50, 'a2.o');
 run_make_test('all: libxx.a(a3.o *.o)', '',
               "ar rv libxx.a a3.o\na - a3.o\nar rv libxx.a a2.o\nr - a2.o\n");
 
+# Check whitespace handling
+utouch(-40, 'a2.o');
+run_make_test('all: libxx.a(  a3.o    *.o     )', '',
+              "ar rv libxx.a a2.o\nr - a2.o\n");
+
 rmfiles(qw(a1.o a2.o a3.o libxx.a));
 
 # This tells the test driver that the perl test script executed properly.