Merge branch 'upstream'
[gnulib.git] / lib / javaexec.c
index c50a30e..8bcd6de 100644 (file)
@@ -1,11 +1,11 @@
 /* Execute a Java program.
-   Copyright (C) 2001-2003, 2006 Free Software Foundation, Inc.
+   Copyright (C) 2001-2003, 2006-2008 Free Software Foundation, Inc.
    Written by Bruno Haible <haible@clisp.cons.org>, 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
    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 <http://www.gnu.org/licenses/>.  */
 
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
+#include <config.h>
 #include <alloca.h>
 
 /* 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,7 +351,7 @@ execute_java_class (const char *class_name,
        /* Reset CLASSPATH.  */
        reset_classpath (old_classpath);
 
-       freesa (argv);
+       freea (argv);
 
        goto done2;
       }
@@ -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;
       }