/* Compile a Java program.
- Copyright (C) 2001-2003, 2006-2007 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/>. */
#include <config.h>
#include <alloca.h>
#include "binary-io.h"
#include "safe-read.h"
#include "xalloc.h"
-#include "xallocsa.h"
-#include "getline.h"
-#include "filename.h"
+#include "xmalloca.h"
+#include "concat-filename.h"
#include "fwriteerror.h"
#include "clean-temp.h"
#include "error.h"
command_length += 1 + shell_quote_length (java_sources[i]);
command_length += 1;
- command = (char *) xallocsa (command_length);
+ command = (char *) xmalloca (command_length);
p = command;
/* Don't shell_quote $JAVAC, because it may consist of a command
and options. */
argv[2] = command;
argv[3] = NULL;
exitstatus = execute (javac, "/bin/sh", argv, false, false, false,
- null_stderr, true, true);
+ null_stderr, true, true, NULL);
err = (exitstatus != 0);
- freesa (command);
+ freea (command);
return err;
}
2 + (no_assert_option ? 1 : 0) + (fsource_option ? 1 : 0)
+ (ftarget_option ? 1 : 0) + (optimize ? 1 : 0) + (debug ? 1 : 0)
+ (directory != NULL ? 2 : 0) + java_sources_count;
- argv = (char **) xallocsa ((argc + 1) * sizeof (char *));
+ argv = (char **) xmalloca ((argc + 1) * sizeof (char *));
argp = argv;
*argp++ = "gcj";
*argp++ = "-fno-assert";
if (fsource_option)
{
- fsource_arg = (char *) xallocsa (9 + strlen (source_version) + 1);
+ fsource_arg = (char *) xmalloca (9 + strlen (source_version) + 1);
memcpy (fsource_arg, "-fsource=", 9);
strcpy (fsource_arg + 9, source_version);
*argp++ = fsource_arg;
fsource_arg = NULL;
if (ftarget_option)
{
- ftarget_arg = (char *) xallocsa (9 + strlen (target_version) + 1);
+ ftarget_arg = (char *) xmalloca (9 + strlen (target_version) + 1);
memcpy (ftarget_arg, "-ftarget=", 9);
strcpy (ftarget_arg + 9, target_version);
*argp++ = ftarget_arg;
}
exitstatus = execute ("gcj", "gcj", argv, false, false, false, null_stderr,
- true, true);
+ true, true, NULL);
err = (exitstatus != 0);
if (ftarget_arg != NULL)
- freesa (ftarget_arg);
+ freea (ftarget_arg);
if (fsource_arg != NULL)
- freesa (fsource_arg);
- freesa (argv);
+ freea (fsource_arg);
+ freea (argv);
return err;
}
argc =
1 + (source_option ? 2 : 0) + (target_option ? 2 : 0) + (optimize ? 1 : 0)
+ (debug ? 1 : 0) + (directory != NULL ? 2 : 0) + java_sources_count;
- argv = (char **) xallocsa ((argc + 1) * sizeof (char *));
+ argv = (char **) xmalloca ((argc + 1) * sizeof (char *));
argp = argv;
*argp++ = "javac";
}
exitstatus = execute ("javac", "javac", argv, false, false, false,
- null_stderr, true, true);
+ null_stderr, true, true, NULL);
err = (exitstatus != 0);
- freesa (argv);
+ freea (argv);
return err;
}
argc =
1 + (optimize ? 1 : 0) + (debug ? 1 : 0) + (directory != NULL ? 2 : 0)
+ java_sources_count;
- argv = (char **) xallocsa ((argc + 1) * sizeof (char *));
+ argv = (char **) xmalloca ((argc + 1) * sizeof (char *));
argp = argv;
*argp++ = "jikes";
}
exitstatus = execute ("jikes", "jikes", argv, false, false, false,
- null_stderr, true, true);
+ null_stderr, true, true, NULL);
err = (exitstatus != 0);
- freesa (argv);
+ freea (argv);
return err;
}
/* Setup the command "$JAVAC --version". */
command_length = strlen (javac) + 1 + 9 + 1;
- command = (char *) xallocsa (command_length);
+ command = (char *) xmalloca (command_length);
p = command;
/* Don't shell_quote $JAVAC, because it may consist of a command
and options. */
fclose (fp);
/* Remove zombie process from process list, and retrieve exit status. */
- exitstatus = wait_subprocess (child, javac, true, true, true, false);
+ exitstatus =
+ wait_subprocess (child, javac, true, true, true, false, NULL);
if (exitstatus != 0)
envjavac_gcj = false;
failed:
- freesa (command);
+ freea (command);
envjavac_tested = true;
}
/* Setup the command "$JAVAC --version". */
command_length = strlen (javac) + 1 + 9 + 1;
- command = (char *) xallocsa (command_length);
+ command = (char *) xmalloca (command_length);
p = command;
/* Don't shell_quote $JAVAC, because it may consist of a command
and options. */
fclose (fp);
/* Remove zombie process from process list, and retrieve exit status. */
- exitstatus = wait_subprocess (child, javac, true, true, true, false);
+ exitstatus =
+ wait_subprocess (child, javac, true, true, true, false, NULL);
if (exitstatus != 0)
envjavac_gcj43 = false;
failed:
- freesa (command);
+ freea (command);
envjavac_tested = true;
}
return true;
conftest_file_name =
- concatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
+ xconcatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
if (write_temp_file (tmpdir, conftest_file_name,
get_goodcode_snippet (source_version)))
{
}
compiled_file_name =
- concatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
+ xconcatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
register_temp_file (tmpdir, compiled_file_name);
java_sources[0] = conftest_file_name;
free (conftest_file_name);
conftest_file_name =
- concatenated_filename (tmpdir->dir_name,
- "conftestfail.java",
- NULL);
+ xconcatenated_filename (tmpdir->dir_name,
+ "conftestfail.java",
+ NULL);
if (write_temp_file (tmpdir, conftest_file_name, failcode))
{
free (conftest_file_name);
}
compiled_file_name =
- concatenated_filename (tmpdir->dir_name,
- "conftestfail.class",
- NULL);
+ xconcatenated_filename (tmpdir->dir_name,
+ "conftestfail.class",
+ NULL);
register_temp_file (tmpdir, compiled_file_name);
java_sources[0] = conftest_file_name;
return true;
conftest_file_name =
- concatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
+ xconcatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
if (write_temp_file (tmpdir, conftest_file_name,
get_goodcode_snippet ("1.4")))
{
}
compiled_file_name =
- concatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
+ xconcatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
register_temp_file (tmpdir, compiled_file_name);
java_sources[0] = conftest_file_name;
return true;
conftest_file_name =
- concatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
+ xconcatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
if (write_temp_file (tmpdir, conftest_file_name,
get_goodcode_snippet ("1.3")))
{
}
compiled_file_name =
- concatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
+ xconcatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
register_temp_file (tmpdir, compiled_file_name);
java_sources[0] = conftest_file_name;
if (javac_works && javac_noassert_works)
{
conftest_file_name =
- concatenated_filename (tmpdir->dir_name, "conftestfail.java",
- NULL);
+ xconcatenated_filename (tmpdir->dir_name, "conftestfail.java",
+ NULL);
if (write_temp_file (tmpdir, conftest_file_name,
get_failcode_snippet ("1.3")))
{
}
compiled_file_name =
- concatenated_filename (tmpdir->dir_name, "conftestfail.class",
- NULL);
+ xconcatenated_filename (tmpdir->dir_name, "conftestfail.class",
+ NULL);
register_temp_file (tmpdir, compiled_file_name);
java_sources[0] = conftest_file_name;
return true;
conftest_file_name =
- concatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
+ xconcatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
if (write_temp_file (tmpdir, conftest_file_name,
get_goodcode_snippet (source_version)))
{
}
compiled_file_name =
- concatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
+ xconcatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
register_temp_file (tmpdir, compiled_file_name);
java_sources[0] = conftest_file_name;
free (conftest_file_name);
conftest_file_name =
- concatenated_filename (tmpdir->dir_name,
- "conftestfail.java",
- NULL);
+ xconcatenated_filename (tmpdir->dir_name,
+ "conftestfail.java",
+ NULL);
if (write_temp_file (tmpdir, conftest_file_name, failcode))
{
free (conftest_file_name);
}
compiled_file_name =
- concatenated_filename (tmpdir->dir_name,
- "conftestfail.class",
- NULL);
+ xconcatenated_filename (tmpdir->dir_name,
+ "conftestfail.class",
+ NULL);
register_temp_file (tmpdir, compiled_file_name);
java_sources[0] = conftest_file_name;
free (conftest_file_name);
conftest_file_name =
- concatenated_filename (tmpdir->dir_name,
- "conftestfail.java",
- NULL);
+ xconcatenated_filename (tmpdir->dir_name,
+ "conftestfail.java",
+ NULL);
if (write_temp_file (tmpdir, conftest_file_name,
failcode))
{
}
compiled_file_name =
- concatenated_filename (tmpdir->dir_name,
- "conftestfail.class",
- NULL);
+ xconcatenated_filename (tmpdir->dir_name,
+ "conftestfail.class",
+ NULL);
register_temp_file (tmpdir, compiled_file_name);
java_sources[0] = conftest_file_name;
/* Remove zombie process from process list, and retrieve exit
status. */
exitstatus =
- wait_subprocess (child, "gcj", false, true, true, false);
+ wait_subprocess (child, "gcj", false, true, true, false, NULL);
if (exitstatus != 0)
gcj_present = false;
}
char *conftest_file_name;
conftest_file_name =
- concatenated_filename (tmpdir->dir_name, "conftestlib.java",
- NULL);
+ xconcatenated_filename (tmpdir->dir_name, "conftestlib.java",
+ NULL);
if (write_temp_file (tmpdir, conftest_file_name,
"public class conftestlib {\n"
" public static void main (String[] args) {\n"
const char *java_sources[1];
compiled_file_name =
- concatenated_filename (tmpdir->dir_name,
- "conftestlib.class",
- NULL);
+ xconcatenated_filename (tmpdir->dir_name,
+ "conftestlib.class",
+ NULL);
register_temp_file (tmpdir, compiled_file_name);
java_sources[0] = conftest_file_name;
/* Remove zombie process from process list, and retrieve exit
status. */
exitstatus =
- wait_subprocess (child, "gcj", false, true, true, false);
+ wait_subprocess (child, "gcj", false, true, true, false, NULL);
if (exitstatus != 0)
gcj_43 = false;
}
return true;
conftest_file_name =
- concatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
+ xconcatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
if (write_temp_file (tmpdir, conftest_file_name,
get_goodcode_snippet (source_version)))
{
}
compiled_file_name =
- concatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
+ xconcatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
register_temp_file (tmpdir, compiled_file_name);
java_sources[0] = conftest_file_name;
free (conftest_file_name);
conftest_file_name =
- concatenated_filename (tmpdir->dir_name,
- "conftestfail.java",
- NULL);
+ xconcatenated_filename (tmpdir->dir_name,
+ "conftestfail.java",
+ NULL);
if (write_temp_file (tmpdir, conftest_file_name, failcode))
{
free (conftest_file_name);
}
compiled_file_name =
- concatenated_filename (tmpdir->dir_name,
- "conftestfail.class",
- NULL);
+ xconcatenated_filename (tmpdir->dir_name,
+ "conftestfail.class",
+ NULL);
register_temp_file (tmpdir, compiled_file_name);
java_sources[0] = conftest_file_name;
return true;
conftest_file_name =
- concatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
+ xconcatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
if (write_temp_file (tmpdir, conftest_file_name,
get_goodcode_snippet ("1.4")))
{
}
compiled_file_name =
- concatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
+ xconcatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
register_temp_file (tmpdir, compiled_file_name);
java_sources[0] = conftest_file_name;
return true;
conftest_file_name =
- concatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
+ xconcatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
if (write_temp_file (tmpdir, conftest_file_name,
get_goodcode_snippet ("1.3")))
{
}
compiled_file_name =
- concatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
+ xconcatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
register_temp_file (tmpdir, compiled_file_name);
java_sources[0] = conftest_file_name;
argv[0] = "javac";
argv[1] = NULL;
exitstatus = execute ("javac", "javac", argv, false, false, true, true,
- true, false);
+ true, false, NULL);
javac_present = (exitstatus == 0 || exitstatus == 1 || exitstatus == 2);
javac_tested = true;
}
return true;
conftest_file_name =
- concatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
+ xconcatenated_filename (tmpdir->dir_name, "conftest.java", NULL);
if (write_temp_file (tmpdir, conftest_file_name,
get_goodcode_snippet (source_version)))
{
}
compiled_file_name =
- concatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
+ xconcatenated_filename (tmpdir->dir_name, "conftest.class", NULL);
register_temp_file (tmpdir, compiled_file_name);
java_sources[0] = conftest_file_name;
free (conftest_file_name);
conftest_file_name =
- concatenated_filename (tmpdir->dir_name,
- "conftestfail.java",
- NULL);
+ xconcatenated_filename (tmpdir->dir_name,
+ "conftestfail.java",
+ NULL);
if (write_temp_file (tmpdir, conftest_file_name, failcode))
{
free (conftest_file_name);
}
compiled_file_name =
- concatenated_filename (tmpdir->dir_name,
- "conftestfail.class",
- NULL);
+ xconcatenated_filename (tmpdir->dir_name,
+ "conftestfail.class",
+ NULL);
register_temp_file (tmpdir, compiled_file_name);
java_sources[0] = conftest_file_name;
free (conftest_file_name);
conftest_file_name =
- concatenated_filename (tmpdir->dir_name,
- "conftestfail.java",
- NULL);
+ xconcatenated_filename (tmpdir->dir_name,
+ "conftestfail.java",
+ NULL);
if (write_temp_file (tmpdir, conftest_file_name,
failcode))
{
}
compiled_file_name =
- concatenated_filename (tmpdir->dir_name,
- "conftestfail.class",
- NULL);
+ xconcatenated_filename (tmpdir->dir_name,
+ "conftestfail.class",
+ NULL);
register_temp_file (tmpdir, compiled_file_name);
java_sources[0] = conftest_file_name;
argv[0] = "jikes";
argv[1] = NULL;
exitstatus = execute ("jikes", "jikes", argv, false, false, true, true,
- true, false);
+ true, false, NULL);
jikes_present = (exitstatus == 0 || exitstatus == 1);
jikes_tested = true;
}