Mercurial > hg > octave-kai > gnulib-hg
changeset 7018:096754ee89e4
New module 'javaversion'.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sat, 22 Jul 2006 15:28:21 +0000 |
parents | 005fe24b840a |
children | 3ab646f50f9f |
files | ChangeLog MODULES.html.sh lib/ChangeLog lib/javaversion.c lib/javaversion.class lib/javaversion.h lib/javaversion.java modules/javaversion |
diffstat | 8 files changed, 235 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-07-22 Bruno Haible <bruno@clisp.org> + + * modules/javaversion: New file. + * MODULES.html.sh (Java): Add javaversion. + 2006-03-12 Bruno Haible <bruno@clisp.org> * build-aux/javaexec.sh.in: Update for changed javaexec.m4.
--- a/MODULES.html.sh +++ b/MODULES.html.sh @@ -2038,6 +2038,7 @@ func_module classpath func_module javacomp func_module javaexec + func_module javaversion #func_module gcj func_end_table
--- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,10 @@ +2006-07-22 Bruno Haible <bruno@clisp.org> + + * javaversion.h: New file, from GNU gettext. + * javaversion.c: New file, from GNU gettext. + * javaversion.java: New file, from GNU gettext. + * javaversion.class: New file, from GNU gettext. + 2006-05-17 Bruno Haible <bruno@clisp.org> Cygwin portability.
new file mode 100644 --- /dev/null +++ b/lib/javaversion.c @@ -0,0 +1,119 @@ +/* Determine the Java version supported by javaexec. + Copyright (C) 2006 Free Software Foundation, Inc. + Written by Bruno Haible <bruno@clisp.org>, 2006. + + 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. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + 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. */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +/* Specification. */ +#include "javaversion.h" + +#include <errno.h> +#include <stdbool.h> +#include <stdio.h> + +#if ENABLE_RELOCATABLE +# include "relocatable.h" +#else +# define relocate(pathname) (pathname) +#endif + +#include "javaexec.h" +#include "pipe.h" +#include "wait-process.h" +#include "error.h" +#include "getline.h" +#include "gettext.h" + +#define _(str) gettext (str) + + +struct locals +{ + /* OUT */ + char *line; +}; + +static bool +execute_and_read_line (const char *progname, + const char *prog_path, char **prog_argv, + void *private_data) +{ + struct locals *l = (struct locals *) private_data; + pid_t child; + int fd[1]; + FILE *fp; + char *line; + size_t linesize; + size_t linelen; + int exitstatus; + + /* Open a pipe to the JVM. */ + child = create_pipe_in (progname, prog_path, prog_argv, DEV_NULL, false, + true, false, fd); + + if (child == -1) + return false; + + /* Retrieve its result. */ + fp = fdopen (fd[0], "r"); + if (fp == NULL) + { + error (0, errno, _("fdopen() failed")); + return false; + } + + line = NULL; linesize = 0; + linelen = getline (&line, &linesize, fp); + if (linelen == (size_t)(-1)) + { + error (0, 0, _("%s subprocess I/O error"), progname); + return false; + } + if (linelen > 0 && line[linelen - 1] == '\n') + line[linelen - 1] = '\0'; + + fclose (fp); + + /* Remove zombie process from process list, and retrieve exit status. */ + exitstatus = wait_subprocess (child, progname, true, false, true, false); + if (exitstatus != 0) + { + free (line); + return false; + } + + l->line = line; + return false; +} + +char * +javaexec_version (void) +{ + const char *class_name = "javaversion"; + const char *pkgdatadir = relocate (PKGDATADIR); + const char *args[1]; + struct locals locals; + + args[0] = NULL; + locals.line = NULL; + execute_java_class (class_name, &pkgdatadir, 1, true, NULL, args, + false, false, execute_and_read_line, &locals); + + return locals.line; +}
new file mode 100644 index 0000000000000000000000000000000000000000..d62585b0ecd259dc3d661247c323788c927ff140 GIT binary patch literal 510 zc${re%T5A85Ul34u&jb0h#)E#vziDWfbnADi6{w%i>F~7$q;szECUIjr3W=0`~W}7 z*aIYLWDe8aHPzKM{rUC&fjG|5uwfye!43*(6m5>XHcBX4*t1X}q%KsT^d%wgp7sfe ztMEY*avc@Oo0&h5(VZBK8A<p;1%$GD-x-OyXpKcMZ1r@cf??Y<+P!cVdGcBra^6tp zGMcI|XqwzX8W{`w4yvdTss?LLC(=`o$`jhq)^rC4s9QL6aD-z*_LtIHcQyKUFp{4B z1N9bDEq(q;IOB)X%BKojT{fxNsuX^k6^BxHqi`Z4y&#;p8@}@&A`~~M5v+-+#%!&$ zNvMwoQoMh2Vj!~wzHP4R9EoG{>=pFH2^-@(wFE0nbFj6hy31C;c}A=de?#I0$)66J PU%^|=qQ=Pfa!~FY1XObM
new file mode 100644 --- /dev/null +++ b/lib/javaversion.h @@ -0,0 +1,40 @@ +/* Determine the Java version supported by javaexec. + Copyright (C) 2006 Free Software Foundation, Inc. + Written by Bruno Haible <bruno@clisp.org>, 2006. + + 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. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + 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. */ + +#ifndef _JAVAVERSION_H +#define _JAVAVERSION_H + + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Return information about the Java version used by execute_java_class(). + This is the value of System.getProperty("java.specification.version"). + Some possible values are: 1.1, 1.2, 1.3, 1.4, 1.5, 1.6. Return NULL if + the Java version cannot be determined. */ +extern char * javaexec_version (void); + + +#ifdef __cplusplus +} +#endif + + +#endif /* _JAVAVERSION_H */
new file mode 100644 --- /dev/null +++ b/lib/javaversion.java @@ -0,0 +1,32 @@ +/* Show the Java version. + * Copyright (C) 2006 Free Software Foundation, Inc. + * + * 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * 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. + */ + +/** + * This program shows the Java version. + * + * This program _must_ be compiled with + * javac -d . -target 1.1 javaversion.java + * since its purpose is to show the version of _any_ Java implementation. + * + * @author Bruno Haible + */ +public class javaversion { + public static void main (String[] args) { + System.out.println(System.getProperty("java.specification.version")); + } +}
new file mode 100644 --- /dev/null +++ b/modules/javaversion @@ -0,0 +1,31 @@ +Description: +Determine the Java version supported by javaexec. + +Files: +lib/javaversion.h +lib/javaversion.c +lib/javaversion.java +lib/javaversion.class + +Depends-on: +javaexec +stdbool +pipe +wait-process +getline +gettext-h + +configure.ac: + +Makefile.am: +lib_SOURCES += javaversion.h javaversion.c + +Include: +"javaversion.h" + +License: +GPL + +Maintainer: +Bruno Haible +