X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fjavaexec.c;h=8bcd6defc72decbbcd3538e56c2bb0e3b3e14a8a;hb=afefb5e3d56c082d8386fc59011b890e9270fab4;hp=a555c967236ec7e3cf8dc52c2eebd0287edd0241;hpb=267a39bafd249d7eb9c37df06dc6defcf41cb343;p=gnulib.git diff --git a/lib/javaexec.c b/lib/javaexec.c index a555c9672..8bcd6defc 100644 --- a/lib/javaexec.c +++ b/lib/javaexec.c @@ -1,11 +1,11 @@ /* Execute a Java program. - Copyright (C) 2001-2003 Free Software Foundation, Inc. + Copyright (C) 2001-2003, 2006-2008 Free Software Foundation, Inc. Written by Bruno Haible , 2001. - 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. */ @@ -32,9 +29,9 @@ #include "classpath.h" #include "xsetenv.h" #include "sh-quote.h" -#include "pathname.h" +#include "concat-filename.h" #include "xalloc.h" -#include "xallocsa.h" +#include "xmalloca.h" #include "error.h" #include "gettext.h" @@ -97,9 +94,9 @@ execute_java_class (const char *class_name, /* First, try a class compiled to a native code executable. */ if (exe_dir != NULL) { - char *exe_pathname = concatenated_pathname (exe_dir, class_name, EXEEXT); + char *exe_pathname = xconcatenated_filename (exe_dir, class_name, EXEEXT); char *old_classpath; - char **argv = (char **) xallocsa ((1 + nargs + 1) * sizeof (char *)); + char **argv = (char **) xmalloca ((1 + nargs + 1) * sizeof (char *)); unsigned int i; /* Set CLASSPATH. */ @@ -123,7 +120,7 @@ execute_java_class (const char *class_name, /* Reset CLASSPATH. */ reset_classpath (old_classpath); - freesa (argv); + freea (argv); goto done1; } @@ -154,7 +151,7 @@ execute_java_class (const char *class_name, command_length += 1 + shell_quote_length (*arg); command_length += 1; - command = (char *) xallocsa (command_length); + command = (char *) xmalloca (command_length); p = command; /* Don't shell_quote $JAVA, because it may consist of a command and options. */ @@ -181,7 +178,7 @@ execute_java_class (const char *class_name, argv[3] = NULL; err = executer (java, "/bin/sh", argv, private_data); - freesa (command); + freea (command); /* Reset CLASSPATH. */ reset_classpath (old_classpath); @@ -212,7 +209,7 @@ execute_java_class (const char *class_name, argv[1] = "--version"; argv[2] = NULL; exitstatus = execute ("gij", "gij", argv, false, false, true, true, - true, false); + true, false, NULL); gij_present = (exitstatus == 0); gij_tested = true; } @@ -220,7 +217,7 @@ execute_java_class (const char *class_name, if (gij_present) { char *old_classpath; - char **argv = (char **) xallocsa ((2 + nargs + 1) * sizeof (char *)); + char **argv = (char **) xmalloca ((2 + nargs + 1) * sizeof (char *)); unsigned int i; /* Set CLASSPATH. */ @@ -245,7 +242,7 @@ execute_java_class (const char *class_name, /* Reset CLASSPATH. */ reset_classpath (old_classpath); - freesa (argv); + freea (argv); goto done2; } @@ -265,7 +262,7 @@ execute_java_class (const char *class_name, argv[1] = "-version"; argv[2] = NULL; exitstatus = execute ("java", "java", argv, false, false, true, true, - true, false); + true, false, NULL); java_present = (exitstatus == 0); java_tested = true; } @@ -273,7 +270,7 @@ execute_java_class (const char *class_name, if (java_present) { char *old_classpath; - char **argv = (char **) xallocsa ((2 + nargs + 1) * sizeof (char *)); + char **argv = (char **) xmalloca ((2 + nargs + 1) * sizeof (char *)); unsigned int i; /* Set CLASSPATH. We don't use the "-classpath ..." option because @@ -300,7 +297,7 @@ execute_java_class (const char *class_name, /* Reset CLASSPATH. */ reset_classpath (old_classpath); - freesa (argv); + freea (argv); goto done2; } @@ -319,7 +316,7 @@ execute_java_class (const char *class_name, argv[0] = "jre"; argv[1] = NULL; exitstatus = execute ("jre", "jre", argv, false, false, true, true, - true, false); + true, false, NULL); jre_present = (exitstatus == 0 || exitstatus == 1); jre_tested = true; } @@ -327,7 +324,7 @@ execute_java_class (const char *class_name, if (jre_present) { char *old_classpath; - char **argv = (char **) xallocsa ((2 + nargs + 1) * sizeof (char *)); + char **argv = (char **) xmalloca ((2 + nargs + 1) * sizeof (char *)); unsigned int i; /* Set CLASSPATH. We don't use the "-classpath ..." option because @@ -354,14 +351,14 @@ execute_java_class (const char *class_name, /* Reset CLASSPATH. */ reset_classpath (old_classpath); - freesa (argv); + freea (argv); goto done2; } } -#if defined _WIN32 || defined __WIN32__ - /* Win32 */ +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ + /* Win32, Cygwin */ { static bool jview_tested; static bool jview_present; @@ -376,7 +373,7 @@ execute_java_class (const char *class_name, argv[1] = "-?"; argv[2] = NULL; exitstatus = execute ("jview", "jview", argv, false, false, true, true, - true, false); + true, false, NULL); jview_present = (exitstatus == 0 || exitstatus == 1); jview_tested = true; } @@ -384,7 +381,7 @@ execute_java_class (const char *class_name, if (jview_present) { char *old_classpath; - char **argv = (char **) xallocsa ((2 + nargs + 1) * sizeof (char *)); + char **argv = (char **) xmalloca ((2 + nargs + 1) * sizeof (char *)); unsigned int i; /* Set CLASSPATH. */ @@ -409,7 +406,7 @@ execute_java_class (const char *class_name, /* Reset CLASSPATH. */ reset_classpath (old_classpath); - freesa (argv); + freea (argv); goto done2; }