jartool.c (expand_options): Handle tar-style argument list with a leading "-".
authorBryce McKinlay <bryce@waitaki.otago.ac.nz>
Mon, 18 Mar 2002 11:08:21 +0000 (11:08 +0000)
committerBryce McKinlay <bryce@gcc.gnu.org>
Mon, 18 Mar 2002 11:08:21 +0000 (11:08 +0000)
* jartool.c (expand_options): Handle tar-style argument list with a
leading "-".

From-SVN: r50957

fastjar/ChangeLog
fastjar/jartool.c

index ea908d416484c132904b58fcd9fd9da2d556049e..25859629281e710767053d5ad2663ec2d36e71b8 100644 (file)
@@ -1,3 +1,8 @@
+2002-03-18  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
+
+       * jartool.c (expand_options): Handle tar-style argument list with a
+       leading "-".
+
 2002-02-23  Anthony Green  <green@redhat.com>
 
        * jartool.c (main): Fix handling of -C.
index bd5d1fc43a337c84ffcc9cfb2e7284dcc4b79835..2436606d5026e970d8508a33e9a5c2458797c082 100644 (file)
@@ -1938,24 +1938,34 @@ expand_options (int *argcp, char ***argvp)
   int argc = *argcp;
   char **argv = *argvp;
 
-  if (argc > 1 && argv[1][0] != '-')
+  /* Accept arguments with a leading "-" (eg "-cvf"), but don't do expansion 
+     if a long argument (like "--help") is detected. */
+  if (argc > 1 && argv[1][1] != '-')
     {
       char buf[3];
       char **new_argv;
       int new_argc;
+      int args_to_expand;
       char *p;
       char **in, **out;
 
       buf[0] = '-';
       buf[2] = '\0';
 
-      new_argc = argc - 1 + strlen (argv[1]);
+      args_to_expand = strlen (argv[1]);
+      if (argv[1][0] == '-')
+        --args_to_expand;
+        
+      new_argc = argc - 1 + args_to_expand;
       new_argv = (char **) malloc (new_argc * sizeof (char *));
       in = argv;
       out = new_argv;
 
       *out++ = *in++;
-      for (p = *in++; *p; ++p)
+      p = *in++;
+      if (*p == '-')
+        p++;
+      while (*p != '\0')
        {
          char *opt;
          buf[1] = *p;
@@ -1974,6 +1984,7 @@ expand_options (int *argcp, char ***argvp)
                  usage(argv[0]);
                }
            }
+         ++p;
        }
 
       /* Copy remaining options.  */