X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fcsharpexec.c;h=15dbb2949e02de9062bd55d73e9f5e6548cfad4b;hb=bf552416ee94157bd9aa4045b1622234fcf28e91;hp=e33071859823933b5c57d61a1826e5decfa45cf4;hpb=99099106c3c1cb16ed1e91be970332fe225e278b;p=gnulib.git diff --git a/lib/csharpexec.c b/lib/csharpexec.c index e33071859..15dbb2949 100644 --- a/lib/csharpexec.c +++ b/lib/csharpexec.c @@ -1,11 +1,11 @@ /* Execute a C# program. - Copyright (C) 2003-2006 Free Software Foundation, Inc. + Copyright (C) 2003-2011 Free Software Foundation, Inc. Written by Bruno Haible , 2003. - This program is free software; you can redistribute it and/or modify + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -13,8 +13,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + along with this program. If not, see . */ #include #include @@ -27,7 +26,7 @@ #include "execute.h" #include "sh-quote.h" -#include "xallocsa.h" +#include "xmalloca.h" #include "error.h" #include "gettext.h" @@ -90,11 +89,11 @@ static int execute_csharp_using_pnet (const char *assembly_path, - const char * const *libdirs, - unsigned int libdirs_count, - const char * const *args, unsigned int nargs, - bool verbose, bool quiet, - execute_fn *executer, void *private_data) + const char * const *libdirs, + unsigned int libdirs_count, + const char * const *args, unsigned int nargs, + bool verbose, bool quiet, + execute_fn *executer, void *private_data) { static bool ilrun_tested; static bool ilrun_present; @@ -102,7 +101,7 @@ execute_csharp_using_pnet (const char *assembly_path, if (!ilrun_tested) { /* Test for presence of ilrun: - "ilrun --version >/dev/null 2>/dev/null" */ + "ilrun --version >/dev/null 2>/dev/null" */ char *argv[3]; int exitstatus; @@ -110,7 +109,7 @@ execute_csharp_using_pnet (const char *assembly_path, argv[1] = "--version"; argv[2] = NULL; exitstatus = execute ("ilrun", "ilrun", argv, false, false, true, true, - true, false); + true, false, NULL); ilrun_present = (exitstatus == 0); ilrun_tested = true; } @@ -124,33 +123,33 @@ execute_csharp_using_pnet (const char *assembly_path, bool err; argc = 1 + 2 * libdirs_count + 1 + nargs; - argv = (char **) xallocsa ((argc + 1) * sizeof (char *)); + argv = (char **) xmalloca ((argc + 1) * sizeof (char *)); argp = argv; *argp++ = "ilrun"; for (i = 0; i < libdirs_count; i++) - { - *argp++ = "-L"; - *argp++ = (char *) libdirs[i]; - } + { + *argp++ = "-L"; + *argp++ = (char *) libdirs[i]; + } *argp++ = (char *) assembly_path; for (i = 0; i < nargs; i++) - *argp++ = (char *) args[i]; + *argp++ = (char *) args[i]; *argp = NULL; /* Ensure argv length was correctly calculated. */ if (argp - argv != argc) - abort (); + abort (); if (verbose) - { - char *command = shell_quote_argv (argv); - printf ("%s\n", command); - free (command); - } + { + char *command = shell_quote_argv (argv); + printf ("%s\n", command); + free (command); + } err = executer ("ilrun", "ilrun", argv, private_data); - freesa (argv); + freea (argv); return err; } @@ -160,11 +159,11 @@ execute_csharp_using_pnet (const char *assembly_path, static int execute_csharp_using_mono (const char *assembly_path, - const char * const *libdirs, - unsigned int libdirs_count, - const char * const *args, unsigned int nargs, - bool verbose, bool quiet, - execute_fn *executer, void *private_data) + const char * const *libdirs, + unsigned int libdirs_count, + const char * const *args, unsigned int nargs, + bool verbose, bool quiet, + execute_fn *executer, void *private_data) { static bool mono_tested; static bool mono_present; @@ -172,7 +171,7 @@ execute_csharp_using_mono (const char *assembly_path, if (!mono_tested) { /* Test for presence of mono: - "mono --version >/dev/null 2>/dev/null" */ + "mono --version >/dev/null 2>/dev/null" */ char *argv[3]; int exitstatus; @@ -180,7 +179,7 @@ execute_csharp_using_mono (const char *assembly_path, argv[1] = "--version"; argv[2] = NULL; exitstatus = execute ("mono", "mono", argv, false, false, true, true, - true, false); + true, false, NULL); mono_present = (exitstatus == 0); mono_tested = true; } @@ -188,7 +187,7 @@ execute_csharp_using_mono (const char *assembly_path, if (mono_present) { char *old_monopath; - char **argv = (char **) xallocsa ((2 + nargs + 1) * sizeof (char *)); + char **argv = (char **) xmalloca ((2 + nargs + 1) * sizeof (char *)); unsigned int i; bool err; @@ -198,21 +197,21 @@ execute_csharp_using_mono (const char *assembly_path, argv[0] = "mono"; argv[1] = (char *) assembly_path; for (i = 0; i <= nargs; i++) - argv[2 + i] = (char *) args[i]; + argv[2 + i] = (char *) args[i]; if (verbose) - { - char *command = shell_quote_argv (argv); - printf ("%s\n", command); - free (command); - } + { + char *command = shell_quote_argv (argv); + printf ("%s\n", command); + free (command); + } err = executer ("mono", "mono", argv, private_data); /* Reset MONO_PATH. */ reset_monopath (old_monopath); - freesa (argv); + freea (argv); return err; } @@ -222,11 +221,11 @@ execute_csharp_using_mono (const char *assembly_path, static int execute_csharp_using_sscli (const char *assembly_path, - const char * const *libdirs, - unsigned int libdirs_count, - const char * const *args, unsigned int nargs, - bool verbose, bool quiet, - execute_fn *executer, void *private_data) + const char * const *libdirs, + unsigned int libdirs_count, + const char * const *args, unsigned int nargs, + bool verbose, bool quiet, + execute_fn *executer, void *private_data) { static bool clix_tested; static bool clix_present; @@ -234,14 +233,14 @@ execute_csharp_using_sscli (const char *assembly_path, if (!clix_tested) { /* Test for presence of clix: - "clix >/dev/null 2>/dev/null ; test $? = 1" */ + "clix >/dev/null 2>/dev/null ; test $? = 1" */ char *argv[2]; int exitstatus; argv[0] = "clix"; argv[1] = NULL; exitstatus = execute ("clix", "clix", argv, false, false, true, true, - true, false); + true, false, NULL); clix_present = (exitstatus == 0 || exitstatus == 1); clix_tested = true; } @@ -249,7 +248,7 @@ execute_csharp_using_sscli (const char *assembly_path, if (clix_present) { char *old_clixpath; - char **argv = (char **) xallocsa ((2 + nargs + 1) * sizeof (char *)); + char **argv = (char **) xmalloca ((2 + nargs + 1) * sizeof (char *)); unsigned int i; bool err; @@ -259,21 +258,21 @@ execute_csharp_using_sscli (const char *assembly_path, argv[0] = "clix"; argv[1] = (char *) assembly_path; for (i = 0; i <= nargs; i++) - argv[2 + i] = (char *) args[i]; + argv[2 + i] = (char *) args[i]; if (verbose) - { - char *command = shell_quote_argv (argv); - printf ("%s\n", command); - free (command); - } + { + char *command = shell_quote_argv (argv); + printf ("%s\n", command); + free (command); + } err = executer ("clix", "clix", argv, private_data); /* Reset clix' PATH variable. */ reset_clixpath (old_clixpath); - freesa (argv); + freea (argv); return err; } @@ -283,11 +282,11 @@ execute_csharp_using_sscli (const char *assembly_path, bool execute_csharp_program (const char *assembly_path, - const char * const *libdirs, - unsigned int libdirs_count, - const char * const *args, - bool verbose, bool quiet, - execute_fn *executer, void *private_data) + const char * const *libdirs, + unsigned int libdirs_count, + const char * const *args, + bool verbose, bool quiet, + execute_fn *executer, void *private_data) { unsigned int nargs; int result; @@ -303,16 +302,16 @@ execute_csharp_program (const char *assembly_path, /* First try the C# implementation specified through --enable-csharp. */ #if CSHARP_CHOICE_PNET result = execute_csharp_using_pnet (assembly_path, libdirs, libdirs_count, - args, nargs, verbose, quiet, - executer, private_data); + args, nargs, verbose, quiet, + executer, private_data); if (result >= 0) return (bool) result; #endif #if CSHARP_CHOICE_MONO result = execute_csharp_using_mono (assembly_path, libdirs, libdirs_count, - args, nargs, verbose, quiet, - executer, private_data); + args, nargs, verbose, quiet, + executer, private_data); if (result >= 0) return (bool) result; #endif @@ -320,23 +319,23 @@ execute_csharp_program (const char *assembly_path, /* Then try the remaining C# implementations in our standard order. */ #if !CSHARP_CHOICE_PNET result = execute_csharp_using_pnet (assembly_path, libdirs, libdirs_count, - args, nargs, verbose, quiet, - executer, private_data); + args, nargs, verbose, quiet, + executer, private_data); if (result >= 0) return (bool) result; #endif #if !CSHARP_CHOICE_MONO result = execute_csharp_using_mono (assembly_path, libdirs, libdirs_count, - args, nargs, verbose, quiet, - executer, private_data); + args, nargs, verbose, quiet, + executer, private_data); if (result >= 0) return (bool) result; #endif result = execute_csharp_using_sscli (assembly_path, libdirs, libdirs_count, - args, nargs, verbose, quiet, - executer, private_data); + args, nargs, verbose, quiet, + executer, private_data); if (result >= 0) return (bool) result;