[libiberty] output empty args as a pair of quotes
authorAlexandre Oliva <oliva@adacore.com>
Thu, 16 Jan 2020 06:58:50 +0000 (03:58 -0300)
committerAlexandre Oliva <oliva@gnu.org>
Thu, 23 Jan 2020 19:45:24 +0000 (16:45 -0300)
writeargv writes out empty arguments in a way that expandargv skips
them instead of preserving them.  Fixed by writing out a pair of
quotes for them.

for  libiberty/ChangeLog

* argv.c (writeargv): Output empty args as "".

libiberty/ChangeLog
libiberty/argv.c

index c2bab93a1517ae08b9b4225f9daf8384e44cca09..17903ea1be5313388324dd50b94f37f6018829cc 100644 (file)
@@ -1,3 +1,7 @@
+2020-01-23  Alexandre Oliva <oliva@adacore.com>
+
+       * argv.c (writeargv): Output empty args as "".
+
 2020-01-01  Jakub Jelinek  <jakub@redhat.com>
 
        Update copyright years.
index 8c9794db6a211ba5b46f55fa52048633ba8350fa..6a72208d8458e7d1650d5d2831c770ed7a8c7195 100644 (file)
@@ -327,6 +327,14 @@ writeargv (char * const *argv, FILE *f)
           arg++;
         }
 
+      /* Write out a pair of quotes for an empty argument.  */
+      if (arg == *argv)
+       if (EOF == fputs ("\"\"", f))
+         {
+           status = 1;
+           goto done;
+         }
+
       if (EOF == fputc ('\n', f))
         {
           status = 1;