2002-02-10 Chris Demetriou cgd@sibyte.com
[deliverable/binutils-gdb.git] / binutils / dllwrap.c
index 84606fb2b8ea9c743c3577dcd1f85a1a953324f6..f8449a8a780a2a78269b6422cec39b5e1c951921 100644 (file)
@@ -1,5 +1,5 @@
 /* dllwrap.c -- wrapper for DLLTOOL and GCC to generate PE style DLLs
-   Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+   Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
    Contributed by Mumit Khan (khan@xraylith.wisc.edu).
 
    This file is part of GNU Binutils.
@@ -36,7 +36,6 @@
 #include "getopt.h"
 #include "dyn-string.h"
 
-#include <ctype.h>
 #include <time.h>
 #include <sys/stat.h>
 
@@ -78,7 +77,6 @@
 #endif /* defined (_WIN32) && ! defined (__CYGWIN32__) */
 #endif /* ! HAVE_SYS_WAIT_H */
 
-static char *program_version = "0.2.4";
 static char *driver_name = NULL;
 static char *cygwin_driver_flags = 
   "-Wl,--dll -nostartfiles";
@@ -94,7 +92,7 @@ static char *target = TARGET;
 typedef enum {
   UNKNOWN_TARGET, 
   CYGWIN_TARGET, 
-  MINGW32_TARGET
+  MINGW_TARGET
 } 
 target_type;
 
@@ -120,6 +118,7 @@ static int run PARAMS ((const char *, char *));
 static void usage PARAMS ((FILE *, int));
 static void display PARAMS ((const char *, va_list));
 static void inform PARAMS ((const char *, ...));
+static void warn PARAMS ((const char *format, ...));
 static char *look_for_prog PARAMS ((const char *, const char *, int));
 static char *deduce_name PARAMS ((const char *));
 static void delete_temp_files PARAMS ((void));
@@ -144,37 +143,63 @@ display (message, args)
     fprintf (stderr, "%s: ", program_name);
 
   vfprintf (stderr, message, args);
-
-  if (message [strlen (message) - 1] != '\n')
-    fputc ('\n', stderr);
-}  
+  fputc ('\n', stderr);
+}
 
 
-static void
 #ifdef __STDC__
+static void
 inform (const char * message, ...)
+{
+  va_list args;
+
+  if (!verbose)
+    return;
+
+  va_start (args, message);
+  display (message, args);
+  va_end (args);
+}
+
+static void
+warn (const char *format, ...)
+{
+  va_list args;
+
+  va_start (args, format);
+  display (format, args);
+  va_end (args);
+}
 #else
+
+static void
 inform (message, va_alist)
      const char * message;
      va_dcl
-#endif
 {
   va_list args;
-  
+
   if (!verbose)
     return;
 
-#ifdef __STDC__
-  va_start (args, message);
-#else
   va_start (args);
-#endif
-
   display (message, args);
-  
   va_end (args);
 }
 
+static void
+warn (format, va_alist)
+     const char *format;
+     va_dcl
+{
+  va_list args;
+
+  va_start (args);
+  display (format, args);
+  va_end (args);
+}
+#endif
+
 /* Look for the program formed by concatenating PROG_NAME and the
    string running from PREFIX to END_PREFIX.  If the concatenated
    string contains a '/', try appending EXECUTABLE_SUFFIX if it is
@@ -304,9 +329,12 @@ delete_temp_files ()
   if (delete_base_file && base_file_name)
     {
       if (verbose)
-       fprintf (stderr, "%s temporary base file %s\n",
-                dontdeltemps ? "Keeping" : "Deleting",
-                base_file_name);
+       {
+         if (dontdeltemps)
+           warn (_("Keeping temporary base file %s"), base_file_name);
+         else
+           warn (_("Deleting temporary base file %s"), base_file_name);
+       }
       if (! dontdeltemps)
         {
           unlink (base_file_name);
@@ -317,9 +345,12 @@ delete_temp_files ()
   if (delete_exp_file && exp_file_name)
     {
       if (verbose)
-       fprintf (stderr, "%s temporary exp file %s\n",
-                dontdeltemps ? "Keeping" : "Deleting",
-                exp_file_name);
+       {
+         if (dontdeltemps)
+           warn (_("Keeping temporary exp file %s"), exp_file_name);
+         else
+           warn (_("Deleting temporary exp file %s"), exp_file_name);
+       }
       if (! dontdeltemps)
         {
           unlink (exp_file_name);
@@ -329,9 +360,12 @@ delete_temp_files ()
   if (delete_def_file && def_file_name)
     {
       if (verbose)
-       fprintf (stderr, "%s temporary def file %s\n",
-                dontdeltemps ? "Keeping" : "Deleting",
-                def_file_name);
+       {
+         if (dontdeltemps)
+           warn (_("Keeping temporary def file %s"), def_file_name);
+         else
+           warn (_("Deleting temporary def file %s"), def_file_name);
+       }
       if (! dontdeltemps)
         {
           unlink (def_file_name);
@@ -413,21 +447,19 @@ run (what, args)
   pid = pwait (pid, &wait_status, 0);
   if (pid == -1)
     {
-      fprintf (stderr, "%s: wait: %s\n", program_name, strerror (errno));
+      warn ("wait: %s", strerror (errno));
       retcode = 1;
     }
   else if (WIFSIGNALED (wait_status))
     {
-      fprintf (stderr, "%s: subprocess got fatal signal %d\n",
-              program_name, WTERMSIG (wait_status));
+      warn (_("subprocess got fatal signal %d"), WTERMSIG (wait_status));
       retcode = 1;
     }
   else if (WIFEXITED (wait_status))
     {
       if (WEXITSTATUS (wait_status) != 0)
        {
-         fprintf (stderr, "%s: %s exited with status %d\n",
-                  program_name, what, WEXITSTATUS (wait_status));
+         warn (_("%s exited with status %d"), what, WEXITSTATUS (wait_status));
          retcode = 1;
        }
     }
@@ -479,61 +511,47 @@ strhash (const char *str)
 
 /**********************************************************************/
 
-void
-print_version (name)
-     const char *name;
-{
-  /* This output is intended to follow the GNU standards document.  */
-  /* xgettext:c-format */
-  printf ("GNU %s %s\n", name, program_version);
-  printf ("Copyright 1998 Free Software Foundation, Inc.\n");
-  printf ("\
-This program is free software; you may redistribute it under the terms of\n\
-the GNU General Public License.  This program has absolutely no warranty.\n");
-  exit (0);
-}
-
 static void
 usage (file, status)
      FILE *file;
      int status;
 {
-  fprintf (file, "Usage %s <options> <object-files>\n", program_name);
-  fprintf (file, "  Generic options:\n");
-  fprintf (file, "   --quiet, -q            Work quietly\n");
-  fprintf (file, "   --verbose, -v          Verbose\n");
-  fprintf (file, "   --version              Print dllwrap version\n");
-  fprintf (file, "   --implib <outname>     Synonym for --output-lib\n");
-  fprintf (file, "  Options for %s:\n", program_name);
-  fprintf (file, "   --driver-name <driver> Defaults to \"gcc\"\n");
-  fprintf (file, "   --driver-flags <flags> Override default ld flags\n");
-  fprintf (file, "   --dlltool-name <dlltool> Defaults to \"dlltool\"\n");
-  fprintf (file, "   --entry <entry>        Specify alternate DLL entry point\n");
-  fprintf (file, "   --image-base <base>    Specify image base address\n");
-  fprintf (file, "   --target <machine>     i386-cygwin32 or i386-mingw32\n");
-  fprintf (file, "   --dry-run              Show what needs to be run\n");
-  fprintf (file, "   --mno-cygwin           Create Mingw DLL\n");
-  fprintf (file, "  Options passed to DLLTOOL:\n");
-  fprintf (file, "   --machine <machine>\n");
-  fprintf (file, "   --output-exp <outname> Generate export file.\n");
-  fprintf (file, "   --output-lib <outname> Generate input library.\n");
-  fprintf (file, "   --add-indirect         Add dll indirects to export file.\n");
-  fprintf (file, "   --dllname <name>       Name of input dll to put into output lib.\n");
-  fprintf (file, "   --def <deffile>        Name input .def file\n");
-  fprintf (file, "   --output-def <deffile> Name output .def file\n");
-  fprintf (file, "   --export-all-symbols     Export all symbols to .def\n");
-  fprintf (file, "   --no-export-all-symbols  Only export .drectve symbols\n");
-  fprintf (file, "   --exclude-symbols <list> Exclude <list> from .def\n");
-  fprintf (file, "   --no-default-excludes    Zap default exclude symbols\n");
-  fprintf (file, "   --base-file <basefile> Read linker generated base file\n");
-  fprintf (file, "   --no-idata4           Don't generate idata$4 section\n");
-  fprintf (file, "   --no-idata5           Don't generate idata$5 section\n");
-  fprintf (file, "   -U                     Add underscores to .lib\n");
-  fprintf (file, "   -k                     Kill @<n> from exported names\n");
-  fprintf (file, "   --add-stdcall-alias    Add aliases without @<n>\n");
-  fprintf (file, "   --as <name>            Use <name> for assembler\n");
-  fprintf (file, "   --nodelete             Keep temp files.\n");
-  fprintf (file, "  Rest are passed unmodified to the language driver\n");
+  fprintf (file, _("Usage %s <option(s)> <object-file(s)>\n"), program_name);
+  fprintf (file, _("  Generic options:\n"));
+  fprintf (file, _("   --quiet, -q            Work quietly\n"));
+  fprintf (file, _("   --verbose, -v          Verbose\n"));
+  fprintf (file, _("   --version              Print dllwrap version\n"));
+  fprintf (file, _("   --implib <outname>     Synonym for --output-lib\n"));
+  fprintf (file, _("  Options for %s:\n"), program_name);
+  fprintf (file, _("   --driver-name <driver> Defaults to \"gcc\"\n"));
+  fprintf (file, _("   --driver-flags <flags> Override default ld flags\n"));
+  fprintf (file, _("   --dlltool-name <dlltool> Defaults to \"dlltool\"\n"));
+  fprintf (file, _("   --entry <entry>        Specify alternate DLL entry point\n"));
+  fprintf (file, _("   --image-base <base>    Specify image base address\n"));
+  fprintf (file, _("   --target <machine>     i386-cygwin32 or i386-mingw32\n"));
+  fprintf (file, _("   --dry-run              Show what needs to be run\n"));
+  fprintf (file, _("   --mno-cygwin           Create Mingw DLL\n"));
+  fprintf (file, _("  Options passed to DLLTOOL:\n"));
+  fprintf (file, _("   --machine <machine>\n"));
+  fprintf (file, _("   --output-exp <outname> Generate export file.\n"));
+  fprintf (file, _("   --output-lib <outname> Generate input library.\n"));
+  fprintf (file, _("   --add-indirect         Add dll indirects to export file.\n"));
+  fprintf (file, _("   --dllname <name>       Name of input dll to put into output lib.\n"));
+  fprintf (file, _("   --def <deffile>        Name input .def file\n"));
+  fprintf (file, _("   --output-def <deffile> Name output .def file\n"));
+  fprintf (file, _("   --export-all-symbols     Export all symbols to .def\n"));
+  fprintf (file, _("   --no-export-all-symbols  Only export .drectve symbols\n"));
+  fprintf (file, _("   --exclude-symbols <list> Exclude <list> from .def\n"));
+  fprintf (file, _("   --no-default-excludes    Zap default exclude symbols\n"));
+  fprintf (file, _("   --base-file <basefile> Read linker generated base file\n"));
+  fprintf (file, _("   --no-idata4           Don't generate idata$4 section\n"));
+  fprintf (file, _("   --no-idata5           Don't generate idata$5 section\n"));
+  fprintf (file, _("   -U                     Add underscores to .lib\n"));
+  fprintf (file, _("   -k                     Kill @<n> from exported names\n"));
+  fprintf (file, _("   --add-stdcall-alias    Add aliases without @<n>\n"));
+  fprintf (file, _("   --as <name>            Use <name> for assembler\n"));
+  fprintf (file, _("   --nodelete             Keep temp files.\n"));
+  fprintf (file, _("  Rest are passed unmodified to the language driver\n"));
   fprintf (file, "\n\n");
   exit (status);
 }
@@ -614,7 +632,7 @@ static const struct option long_options[] =
   {"add-indirect", no_argument, NULL, OPTION_ADD_INDIRECT},
   {"base-file", required_argument, NULL, OPTION_BASE_FILE},
   {"as", required_argument, NULL, OPTION_AS},
-  {0}
+  {0, 0, 0, 0}
 };
 
 int
@@ -645,6 +663,15 @@ main (argc, argv)
 
   program_name = argv[0];
 
+#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
+  setlocale (LC_MESSAGES, "");
+#endif
+#if defined (HAVE_SETLOCALE)
+  setlocale (LC_CTYPE, "");
+#endif
+  bindtextdomain (PACKAGE, LOCALEDIR);
+  textdomain (PACKAGE);
+
   saved_argv = (char **) xmalloc (argc * sizeof (char*));
   dlltool_arg_indices = (int *) xmalloc (argc * sizeof (int));
   driver_arg_indices = (int *) xmalloc (argc * sizeof (int));
@@ -794,9 +821,7 @@ main (argc, argv)
   /* sanity checks. */
   if (! dll_name && ! dll_file_name)
     {
-      fprintf (stderr,
-               "%s: Must provide at least one of -o or --dllname options\n",
-               program_name);
+      warn (_("Must provide at least one of -o or --dllname options"));
       exit (1);
     }
   else if (! dll_name)
@@ -824,16 +849,15 @@ main (argc, argv)
       delete_def_file = 1;
       free (fileprefix);
       delete_def_file = 1;
-      fprintf (stderr, "Warning: no export definition file provided\n");
-      fprintf (stderr, 
-               "dllwrap will create one, but may not be what you want\n");
+      warn (_("no export definition file provided.\n\
+Creating one, but that may not be what you want"));
     }
   
   /* set the target platform. */
-  if (strstr (target, "cygwin32"))
+  if (strstr (target, "cygwin"))
     which_target = CYGWIN_TARGET;
-  else if (strstr (target, "mingw32"))
-    which_target = MINGW32_TARGET;
+  else if (strstr (target, "mingw"))
+    which_target = MINGW_TARGET;
   else 
     which_target = UNKNOWN_TARGET;
 
@@ -841,10 +865,10 @@ main (argc, argv)
   dlltool_cmdline = dyn_string_new (cmdline_len);
   if (verbose)
     {
-      dyn_string_append (dlltool_cmdline, " -v");
+      dyn_string_append_cstr (dlltool_cmdline, " -v");
     }
-  dyn_string_append (dlltool_cmdline, " --dllname ");
-  dyn_string_append (dlltool_cmdline, dll_name);
+  dyn_string_append_cstr (dlltool_cmdline, " --dllname ");
+  dyn_string_append_cstr (dlltool_cmdline, dll_name);
 
   for (i = 1; i < argc; ++i)
     {
@@ -852,10 +876,10 @@ main (argc, argv)
         {
          char *arg = saved_argv[i];
           int quote = (strchr (arg, ' ') || strchr (arg, '\t'));
-         dyn_string_append (dlltool_cmdline, 
+         dyn_string_append_cstr (dlltool_cmdline, 
                             (quote) ? " \"" : " ");
-         dyn_string_append (dlltool_cmdline, arg);
-         dyn_string_append (dlltool_cmdline, 
+         dyn_string_append_cstr (dlltool_cmdline, arg);
+         dyn_string_append_cstr (dlltool_cmdline, 
                             (quote) ? "\"" : "");
        }
     }
@@ -869,7 +893,7 @@ main (argc, argv)
           driver_flags = cygwin_driver_flags;
          break;
        
-       case MINGW32_TARGET:
+       case MINGW_TARGET:
           driver_flags = mingw32_driver_flags;
          break;
        
@@ -878,9 +902,9 @@ main (argc, argv)
          break;
        }
     }
-  dyn_string_append (driver_cmdline, driver_flags);
-  dyn_string_append (driver_cmdline, " -o ");
-  dyn_string_append (driver_cmdline, dll_file_name);
+  dyn_string_append_cstr (driver_cmdline, driver_flags);
+  dyn_string_append_cstr (driver_cmdline, " -o ");
+  dyn_string_append_cstr (driver_cmdline, dll_file_name);
 
   if (! entry_point || strlen (entry_point) == 0)
     {
@@ -890,7 +914,7 @@ main (argc, argv)
          entry_point = "__cygwin_dll_entry@12";
          break;
        
-       case MINGW32_TARGET:
+       case MINGW_TARGET:
          entry_point = "_DllMainCRTStartup@12";
          break;
        
@@ -899,10 +923,10 @@ main (argc, argv)
          break;
        }
     }
-  dyn_string_append (driver_cmdline, " -Wl,-e,");
-  dyn_string_append (driver_cmdline, entry_point);
-  dyn_string_append (dlltool_cmdline, " --exclude-symbol=");
-  dyn_string_append (dlltool_cmdline, 
+  dyn_string_append_cstr (driver_cmdline, " -Wl,-e,");
+  dyn_string_append_cstr (driver_cmdline, entry_point);
+  dyn_string_append_cstr (dlltool_cmdline, " --exclude-symbol=");
+  dyn_string_append_cstr (dlltool_cmdline, 
                      (entry_point[0] == '_') ? entry_point+1 : entry_point);
 
   if (! image_base_str || strlen (image_base_str) == 0)
@@ -913,12 +937,12 @@ main (argc, argv)
       image_base_str = tmpbuf;
     }
 
-  dyn_string_append (driver_cmdline, " -Wl,--image-base,");
-  dyn_string_append (driver_cmdline, image_base_str);
+  dyn_string_append_cstr (driver_cmdline, " -Wl,--image-base,");
+  dyn_string_append_cstr (driver_cmdline, image_base_str);
 
   if (verbose)
     {
-      dyn_string_append (driver_cmdline, " -v");
+      dyn_string_append_cstr (driver_cmdline, " -v");
     }
 
   for (i = 1; i < argc; ++i)
@@ -927,10 +951,10 @@ main (argc, argv)
         {
          char *arg = saved_argv[i];
           int quote = (strchr (arg, ' ') || strchr (arg, '\t'));
-         dyn_string_append (driver_cmdline, 
+         dyn_string_append_cstr (driver_cmdline, 
                             (quote) ? " \"" : " ");
-         dyn_string_append (driver_cmdline, arg);
-         dyn_string_append (driver_cmdline, 
+         dyn_string_append_cstr (driver_cmdline, arg);
+         dyn_string_append_cstr (driver_cmdline, 
                             (quote) ? "\"" : "");
        }
     }
@@ -947,15 +971,15 @@ main (argc, argv)
 
       step_pre1 = dyn_string_new (1024);
 
-      dyn_string_append (step_pre1, dlltool_cmdline->s);
+      dyn_string_append_cstr (step_pre1, dlltool_cmdline->s);
       if (export_all)
        {
-          dyn_string_append (step_pre1, " --export-all --exclude-symbol=");
-          dyn_string_append (step_pre1, 
+          dyn_string_append_cstr (step_pre1, " --export-all --exclude-symbol=");
+          dyn_string_append_cstr (step_pre1, 
          "_cygwin_dll_entry@12,DllMainCRTStartup@12,DllMain@12,DllEntryPoint@12");
        }
-      dyn_string_append (step_pre1, " --output-def ");
-      dyn_string_append (step_pre1, def_file_name);
+      dyn_string_append_cstr (step_pre1, " --output-def ");
+      dyn_string_append_cstr (step_pre1, def_file_name);
 
       for (i = 1; i < argc; ++i)
        {
@@ -967,10 +991,10 @@ main (argc, argv)
                  && (arg[len-1] == 'o' || arg[len-1] == 'a'))
                {
                  int quote = (strchr (arg, ' ') || strchr (arg, '\t'));
-                 dyn_string_append (step_pre1,
+                 dyn_string_append_cstr (step_pre1,
                                     (quote) ? " \"" : " ");
-                 dyn_string_append (step_pre1, arg);
-                 dyn_string_append (step_pre1,
+                 dyn_string_append_cstr (step_pre1, arg);
+                 dyn_string_append_cstr (step_pre1,
                                     (quote) ? "\"" : "");
                }
            }
@@ -982,15 +1006,15 @@ main (argc, argv)
       dyn_string_delete (step_pre1);
     }
 
-  dyn_string_append (dlltool_cmdline, " --def ");
-  dyn_string_append (dlltool_cmdline, def_file_name);
+  dyn_string_append_cstr (dlltool_cmdline, " --def ");
+  dyn_string_append_cstr (dlltool_cmdline, def_file_name);
 
   if (verbose)
     {
-      fprintf (stderr, "DLLTOOL name    : %s\n", dlltool_name);
-      fprintf (stderr, "DLLTOOL options : %s\n", dlltool_cmdline->s);
-      fprintf (stderr, "DRIVER name     : %s\n", driver_name);
-      fprintf (stderr, "DRIVER options  : %s\n", driver_cmdline->s);
+      fprintf (stderr, _("DLLTOOL name    : %s\n"), dlltool_name);
+      fprintf (stderr, _("DLLTOOL options : %s\n"), dlltool_cmdline->s);
+      fprintf (stderr, _("DRIVER name     : %s\n"), driver_name);
+      fprintf (stderr, _("DRIVER options  : %s\n"), driver_cmdline->s);
     }
  
   /*
@@ -1020,18 +1044,18 @@ main (argc, argv)
     dyn_string_t step1 = dyn_string_new (driver_cmdline->length 
                                          + strlen (base_file_name)
                                         + 20);
-    dyn_string_append (step1, "-Wl,--base-file,");
+    dyn_string_append_cstr (step1, "-Wl,--base-file,");
     quote = (strchr (base_file_name, ' ') 
              || strchr (base_file_name, '\t'));
-    dyn_string_append (step1, 
+    dyn_string_append_cstr (step1, 
                       (quote) ? "\"" : "");
-    dyn_string_append (step1, base_file_name);
-    dyn_string_append (step1, 
+    dyn_string_append_cstr (step1, base_file_name);
+    dyn_string_append_cstr (step1, 
                       (quote) ? "\"" : "");
     if (driver_cmdline->length)
       {
-        dyn_string_append (step1, " ");
-        dyn_string_append (step1, driver_cmdline->s);
+        dyn_string_append_cstr (step1, " ");
+        dyn_string_append_cstr (step1, driver_cmdline->s);
       }
 
     if (run (driver_name, step1->s))
@@ -1071,28 +1095,28 @@ main (argc, argv)
                                          + strlen (exp_file_name)
                                         + 20);
 
-    dyn_string_append (step2, "--base-file ");
+    dyn_string_append_cstr (step2, "--base-file ");
     quote = (strchr (base_file_name, ' ') 
              || strchr (base_file_name, '\t'));
-    dyn_string_append (step2, 
+    dyn_string_append_cstr (step2, 
                       (quote) ? "\"" : "");
-    dyn_string_append (step2, base_file_name);
-    dyn_string_append (step2, 
+    dyn_string_append_cstr (step2, base_file_name);
+    dyn_string_append_cstr (step2, 
                       (quote) ? "\" " : " ");
 
-    dyn_string_append (step2, "--output-exp ");
+    dyn_string_append_cstr (step2, "--output-exp ");
     quote = (strchr (exp_file_name, ' ') 
              || strchr (exp_file_name, '\t'));
-    dyn_string_append (step2, 
+    dyn_string_append_cstr (step2, 
                       (quote) ? "\"" : "");
-    dyn_string_append (step2, exp_file_name);
-    dyn_string_append (step2, 
+    dyn_string_append_cstr (step2, exp_file_name);
+    dyn_string_append_cstr (step2, 
                       (quote) ? "\"" : "");
 
     if (dlltool_cmdline->length)
       {
-        dyn_string_append (step2, " ");
-        dyn_string_append (step2, dlltool_cmdline->s);
+        dyn_string_append_cstr (step2, " ");
+        dyn_string_append_cstr (step2, dlltool_cmdline->s);
       }
 
     if (run (dlltool_name, step2->s))
@@ -1115,27 +1139,27 @@ main (argc, argv)
                                          + strlen (exp_file_name)
                                          + strlen (base_file_name)
                                         + 20);
-    dyn_string_append (step3, "-Wl,--base-file,");
+    dyn_string_append_cstr (step3, "-Wl,--base-file,");
     quote = (strchr (base_file_name, ' ') 
              || strchr (base_file_name, '\t'));
-    dyn_string_append (step3, 
+    dyn_string_append_cstr (step3, 
                       (quote) ? "\"" : "");
-    dyn_string_append (step3, base_file_name);
-    dyn_string_append (step3, 
+    dyn_string_append_cstr (step3, base_file_name);
+    dyn_string_append_cstr (step3, 
                       (quote) ? "\" " : " ");
 
     quote = (strchr (exp_file_name, ' ') 
              || strchr (exp_file_name, '\t'));
-    dyn_string_append (step3, 
+    dyn_string_append_cstr (step3, 
                       (quote) ? "\"" : "");
-    dyn_string_append (step3, exp_file_name);
-    dyn_string_append (step3, 
+    dyn_string_append_cstr (step3, exp_file_name);
+    dyn_string_append_cstr (step3, 
                       (quote) ? "\"" : "");
 
     if (driver_cmdline->length)
       {
-        dyn_string_append (step3, " ");
-        dyn_string_append (step3, driver_cmdline->s);
+        dyn_string_append_cstr (step3, " ");
+        dyn_string_append_cstr (step3, driver_cmdline->s);
       }
 
     if (run (driver_name, step3->s))
@@ -1156,34 +1180,34 @@ main (argc, argv)
                                          + strlen (exp_file_name)
                                         + 20);
 
-    dyn_string_append (step4, "--base-file ");
+    dyn_string_append_cstr (step4, "--base-file ");
     quote = (strchr (base_file_name, ' ') 
              || strchr (base_file_name, '\t'));
-    dyn_string_append (step4, 
+    dyn_string_append_cstr (step4, 
                       (quote) ? "\"" : "");
-    dyn_string_append (step4, base_file_name);
-    dyn_string_append (step4, 
+    dyn_string_append_cstr (step4, base_file_name);
+    dyn_string_append_cstr (step4, 
                       (quote) ? "\" " : " ");
 
-    dyn_string_append (step4, "--output-exp ");
+    dyn_string_append_cstr (step4, "--output-exp ");
     quote = (strchr (exp_file_name, ' ') 
              || strchr (exp_file_name, '\t'));
-    dyn_string_append (step4, 
+    dyn_string_append_cstr (step4, 
                       (quote) ? "\"" : "");
-    dyn_string_append (step4, exp_file_name);
-    dyn_string_append (step4, 
+    dyn_string_append_cstr (step4, exp_file_name);
+    dyn_string_append_cstr (step4, 
                       (quote) ? "\"" : "");
 
     if (dlltool_cmdline->length)
       {
-        dyn_string_append (step4, " ");
-        dyn_string_append (step4, dlltool_cmdline->s);
+        dyn_string_append_cstr (step4, " ");
+        dyn_string_append_cstr (step4, dlltool_cmdline->s);
       }
 
     if (output_lib_file_name)
       {
-        dyn_string_append (step4, " --output-lib ");
-        dyn_string_append (step4, output_lib_file_name);
+        dyn_string_append_cstr (step4, " --output-lib ");
+        dyn_string_append_cstr (step4, output_lib_file_name);
       }
 
     if (run (dlltool_name, step4->s))
@@ -1209,16 +1233,16 @@ main (argc, argv)
                                         + 20);
     quote = (strchr (exp_file_name, ' ') 
              || strchr (exp_file_name, '\t'));
-    dyn_string_append (step5, 
+    dyn_string_append_cstr (step5, 
                       (quote) ? "\"" : "");
-    dyn_string_append (step5, exp_file_name);
-    dyn_string_append (step5, 
+    dyn_string_append_cstr (step5, exp_file_name);
+    dyn_string_append_cstr (step5, 
                       (quote) ? "\"" : "");
 
     if (driver_cmdline->length)
       {
-        dyn_string_append (step5, " ");
-        dyn_string_append (step5, driver_cmdline->s);
+        dyn_string_append_cstr (step5, " ");
+        dyn_string_append_cstr (step5, driver_cmdline->s);
       }
 
     if (run (driver_name, step5->s))
This page took 0.033891 seconds and 4 git commands to generate.