X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fcsharpexec.c;h=138e92bbd09a6f9b6207b62f6df6409f75d64a9c;hb=1276a2c5f24c0c932426aca9c899fa524d2443f2;hp=6c25ecd1ea8a542625a061c125ba18266257980b;hpb=136b57a7fdd137b610932c774d8ff9edbcfab580;p=gnulib.git diff --git a/lib/csharpexec.c b/lib/csharpexec.c index 6c25ecd1e..138e92bbd 100644 --- a/lib/csharpexec.c +++ b/lib/csharpexec.c @@ -1,11 +1,11 @@ /* Execute a C# program. - Copyright (C) 2003-2005 Free Software Foundation, Inc. + Copyright (C) 2003-2014 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,12 +13,9 @@ 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 . */ -#ifdef HAVE_CONFIG_H -# include -#endif +#include #include /* Specification. */ @@ -29,7 +26,7 @@ #include "execute.h" #include "sh-quote.h" -#include "xallocsa.h" +#include "xmalloca.h" #include "error.h" #include "gettext.h" @@ -47,10 +44,10 @@ /* Handling of clix' PATH variable is just like Java CLASSPATH. */ #if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ - /* Win32, Cygwin */ + /* Native Windows, Cygwin */ #define CLASSPATHVAR "PATH" #elif defined __APPLE__ && defined __MACH__ - /* MacOS X */ + /* Mac OS X */ #define CLASSPATHVAR "DYLD_LIBRARY_PATH" #else /* Normal Unix */ @@ -92,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; @@ -104,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; @@ -112,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; } @@ -126,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; } @@ -162,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; @@ -174,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; @@ -182,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; } @@ -190,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; @@ -200,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; } @@ -224,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; @@ -236,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; } @@ -251,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; @@ -261,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; } @@ -285,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; @@ -305,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 @@ -322,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;