From: Bruno Haible Date: Thu, 4 Oct 2018 23:38:46 +0000 (+0200) Subject: sh-filename: New module. X-Git-Tag: v1.0~5380 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=1ffc70c32c4f94d732d7a5cba4454eb6b65bbe5d;p=gnulib.git sh-filename: New module. * m4/sh-filename.m4: New file. * modules/sh-filename: New file. * lib/spawni.c (_PATH_BSHELL): Use BOURNE_SHELL instead of hardcoding "/bin/sh". * tests/test-posix_spawn1.c (main): Likewise. * tests/test-posix_spawn2.c (main): Likewise. * lib/javacomp.c (compile_using_envjavac, is_envjavac_gcj, is_envjavac_gcj43): Likewise. * lib/javaexec.c (execute_java_class): Likewise. * modules/posix_spawn-internal (Depends-on): Add sh-filename. * modules/posix_spawnp-tests (Depends-on): Likewise. * modules/javacomp (Depends-on): Likewise. * modules/javaexec (Depends-on): Likewise. --- diff --git a/ChangeLog b/ChangeLog index 23a27685df..d860386441 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2018-10-04 Bruno Haible + + sh-filename: New module. + * m4/sh-filename.m4: New file. + * modules/sh-filename: New file. + * lib/spawni.c (_PATH_BSHELL): Use BOURNE_SHELL instead of hardcoding + "/bin/sh". + * tests/test-posix_spawn1.c (main): Likewise. + * tests/test-posix_spawn2.c (main): Likewise. + * lib/javacomp.c (compile_using_envjavac, is_envjavac_gcj, + is_envjavac_gcj43): Likewise. + * lib/javaexec.c (execute_java_class): Likewise. + * modules/posix_spawn-internal (Depends-on): Add sh-filename. + * modules/posix_spawnp-tests (Depends-on): Likewise. + * modules/javacomp (Depends-on): Likewise. + * modules/javaexec (Depends-on): Likewise. + 2018-10-04 Bruno Haible spawn-pipe tests: Avoid test failure on native Windows. diff --git a/lib/javacomp.c b/lib/javacomp.c index 9d5b249070..779d5ec2ec 100644 --- a/lib/javacomp.c +++ b/lib/javacomp.c @@ -339,11 +339,11 @@ compile_using_envjavac (const char *javac, if (verbose) printf ("%s\n", command); - argv[0] = "/bin/sh"; + argv[0] = BOURNE_SHELL; argv[1] = "-c"; argv[2] = command; argv[3] = NULL; - exitstatus = execute (javac, "/bin/sh", argv, false, false, false, + exitstatus = execute (javac, BOURNE_SHELL, argv, false, false, false, null_stderr, true, true, NULL); err = (exitstatus != 0); @@ -656,11 +656,11 @@ is_envjavac_gcj (const char *javac) abort (); /* Call $JAVAC --version 2>/dev/null. */ - argv[0] = "/bin/sh"; + argv[0] = BOURNE_SHELL; argv[1] = "-c"; argv[2] = command; argv[3] = NULL; - child = create_pipe_in (javac, "/bin/sh", argv, DEV_NULL, true, true, + child = create_pipe_in (javac, BOURNE_SHELL, argv, DEV_NULL, true, true, false, fd); if (child == -1) goto failed; @@ -738,11 +738,11 @@ is_envjavac_gcj43 (const char *javac) abort (); /* Call $JAVAC --version 2>/dev/null. */ - argv[0] = "/bin/sh"; + argv[0] = BOURNE_SHELL; argv[1] = "-c"; argv[2] = command; argv[3] = NULL; - child = create_pipe_in (javac, "/bin/sh", argv, DEV_NULL, true, true, + child = create_pipe_in (javac, BOURNE_SHELL, argv, DEV_NULL, true, true, false, fd); if (child == -1) goto failed; diff --git a/lib/javaexec.c b/lib/javaexec.c index b6f2eff0e8..2dd6853799 100644 --- a/lib/javaexec.c +++ b/lib/javaexec.c @@ -172,11 +172,11 @@ execute_java_class (const char *class_name, if (verbose) printf ("%s\n", command); - argv[0] = "/bin/sh"; + argv[0] = BOURNE_SHELL; argv[1] = "-c"; argv[2] = command; argv[3] = NULL; - err = executer (java, "/bin/sh", argv, private_data); + err = executer (java, BOURNE_SHELL, argv, private_data); freea (command); diff --git a/lib/spawni.c b/lib/spawni.c index bd49cc88ad..05dc8b46e5 100644 --- a/lib/spawni.c +++ b/lib/spawni.c @@ -32,7 +32,7 @@ #if _LIBC || HAVE_PATHS_H # include #else -# define _PATH_BSHELL "/bin/sh" +# define _PATH_BSHELL BOURNE_SHELL #endif #include diff --git a/m4/sh-filename.m4 b/m4/sh-filename.m4 new file mode 100644 index 0000000000..53148f4fb7 --- /dev/null +++ b/m4/sh-filename.m4 @@ -0,0 +1,20 @@ +# sh-filename.m4 serial 1 +dnl Copyright (C) 2018 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([gl_SH_FILENAME], +[ + AH_VERBATIM([SH_FILENAME], +[/* File name of the Bourne shell. */ +#if defined __CYGWIN__ +/* Omit the directory part because for 32-bit Cygwin programs in a + 64-bit Cygwin environment, the Cygwin mounts are not visible. */ +# define BOURNE_SHELL "sh" +#else +# define BOURNE_SHELL "/bin/sh" +#endif]) +]) diff --git a/modules/javacomp b/modules/javacomp index dcfcae8e04..2568a9e54c 100644 --- a/modules/javacomp +++ b/modules/javacomp @@ -28,6 +28,7 @@ xvasprintf c-strstr gettext-h javacomp-script +sh-filename configure.ac: diff --git a/modules/javaexec b/modules/javaexec index b66c2fc81e..879580a12d 100644 --- a/modules/javaexec +++ b/modules/javaexec @@ -17,6 +17,7 @@ xmalloca error gettext-h javaexec-script +sh-filename configure.ac: diff --git a/modules/posix_spawn-internal b/modules/posix_spawn-internal index b1ab488409..294b3f83c9 100644 --- a/modules/posix_spawn-internal +++ b/modules/posix_spawn-internal @@ -12,6 +12,7 @@ alloca-opt dup2 errno open +sh-filename strchrnul configure.ac: diff --git a/modules/posix_spawnp-tests b/modules/posix_spawnp-tests index bce8be7777..743c95f0ee 100644 --- a/modules/posix_spawnp-tests +++ b/modules/posix_spawnp-tests @@ -20,6 +20,7 @@ unistd sys_wait dup environ +sh-filename sigprocmask configure.ac: diff --git a/modules/sh-filename b/modules/sh-filename new file mode 100644 index 0000000000..7043fc1cea --- /dev/null +++ b/modules/sh-filename @@ -0,0 +1,20 @@ +Description: +Provide BOURNE_SHELL, the file name of the standard Bourne shell. + +Files: +m4/sh-filename.m4 + +Depends-on: + +configure.ac: +gl_SH_FILENAME + +Makefile.am: + +Include: + +License: +LGPLv2+ + +Maintainer: +all diff --git a/tests/test-posix_spawn1.c b/tests/test-posix_spawn1.c index 6b6c864f4d..c6b59ddd6d 100644 --- a/tests/test-posix_spawn1.c +++ b/tests/test-posix_spawn1.c @@ -73,7 +73,7 @@ fd_safer (int fd) int main () { - char *argv[3] = { (char *) "/bin/sh", (char *) CHILD_PROGRAM_FILENAME, NULL }; + char *argv[3] = { (char *) BOURNE_SHELL, (char *) CHILD_PROGRAM_FILENAME, NULL }; int ifd[2]; sigset_t blocked_signals; sigset_t fatal_signal_set; @@ -113,7 +113,7 @@ main () || (attrs_allocated = true, (err = posix_spawnattr_setsigmask (&attrs, &blocked_signals)) != 0 || (err = posix_spawnattr_setflags (&attrs, POSIX_SPAWN_SETSIGMASK)) != 0) - || (err = posix_spawnp (&child, "/bin/sh", &actions, &attrs, argv, environ)) != 0)) + || (err = posix_spawnp (&child, BOURNE_SHELL, &actions, &attrs, argv, environ)) != 0)) { if (actions_allocated) posix_spawn_file_actions_destroy (&actions); diff --git a/tests/test-posix_spawn2.c b/tests/test-posix_spawn2.c index d9f29a1115..1311951d3c 100644 --- a/tests/test-posix_spawn2.c +++ b/tests/test-posix_spawn2.c @@ -51,7 +51,7 @@ fd_safer (int fd) int main () { - char *argv[3] = { (char *) "/bin/sh", (char *) CHILD_PROGRAM_FILENAME, NULL }; + char *argv[3] = { (char *) BOURNE_SHELL, (char *) CHILD_PROGRAM_FILENAME, NULL }; int ofd[2]; sigset_t blocked_signals; sigset_t fatal_signal_set; @@ -90,7 +90,7 @@ main () || (attrs_allocated = true, (err = posix_spawnattr_setsigmask (&attrs, &blocked_signals)) != 0 || (err = posix_spawnattr_setflags (&attrs, POSIX_SPAWN_SETSIGMASK)) != 0) - || (err = posix_spawnp (&child, "/bin/sh", &actions, &attrs, argv, environ)) != 0)) + || (err = posix_spawnp (&child, BOURNE_SHELL, &actions, &attrs, argv, environ)) != 0)) { if (actions_allocated) posix_spawn_file_actions_destroy (&actions);