mirror of
https://github.com/mirror/make.git
synced 2025-01-27 12:51:07 +08:00
Fix build failures on EMX for output-sync support.
This commit is contained in:
parent
3bf3fde984
commit
38066b6f19
@ -1,5 +1,10 @@
|
|||||||
2013-09-29 Paul Smith <psmith@gnu.org>
|
2013-09-29 Paul Smith <psmith@gnu.org>
|
||||||
|
|
||||||
|
* function.c (func_shell_base) [EMX]: Fix EMX support for output-sync.
|
||||||
|
* job.c (child_execute_job) [EMX]: Ditto.
|
||||||
|
* job.h (child_execute_job) [EMX]: Ditto.
|
||||||
|
* w32/compat/posixfcn.c: Invert the test for NO_OUTPUT_SYNC.
|
||||||
|
|
||||||
* guile.c (GSUBR_TYPE): Pre-2.0 Guile doesn't provide a typedef
|
* guile.c (GSUBR_TYPE): Pre-2.0 Guile doesn't provide a typedef
|
||||||
for gsubr pointers. Create one.
|
for gsubr pointers. Create one.
|
||||||
(guile_define_module): Use it.
|
(guile_define_module): Use it.
|
||||||
|
14
function.c
14
function.c
@ -1652,15 +1652,15 @@ func_shell_base (char *o, char **argv, int trim_newlines)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Using a target environment for 'shell' loses in cases like:
|
/* Using a target environment for 'shell' loses in cases like:
|
||||||
export var = $(shell echo foobie)
|
export var = $(shell echo foobie)
|
||||||
because target_environment hits a loop trying to expand $(var)
|
bad := $(var)
|
||||||
to put it in the environment. This is even more confusing when
|
because target_environment hits a loop trying to expand $(var) to put it
|
||||||
var was not explicitly exported, but just appeared in the
|
in the environment. This is even more confusing when var was not
|
||||||
calling environment.
|
explicitly exported, but just appeared in the calling environment.
|
||||||
|
|
||||||
See Savannah bug #10593.
|
See Savannah bug #10593.
|
||||||
|
|
||||||
envp = target_environment (NILF);
|
envp = target_environment (NULL);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
envp = environ;
|
envp = environ;
|
||||||
@ -1710,7 +1710,7 @@ func_shell_base (char *o, char **argv, int trim_newlines)
|
|||||||
CLOSE_ON_EXEC(pipedes[1]);
|
CLOSE_ON_EXEC(pipedes[1]);
|
||||||
CLOSE_ON_EXEC(pipedes[0]);
|
CLOSE_ON_EXEC(pipedes[0]);
|
||||||
/* Never use fork()/exec() here! Use spawn() instead in exec_command() */
|
/* Never use fork()/exec() here! Use spawn() instead in exec_command() */
|
||||||
pid = child_execute_job (FD_STDIN, pipedes[1], FD_STDOUT, command_argv, envp);
|
pid = child_execute_job (FD_STDIN, pipedes[1], FD_STDERR, command_argv, envp);
|
||||||
if (pid < 0)
|
if (pid < 0)
|
||||||
perror_with_name (error_prefix, "spawn");
|
perror_with_name (error_prefix, "spawn");
|
||||||
# else /* ! __EMX__ */
|
# else /* ! __EMX__ */
|
||||||
|
6
job.c
6
job.c
@ -2234,7 +2234,7 @@ child_execute_job (int stdin_fd, int stdout_fd, int stderr_fd,
|
|||||||
/* Restore stdout/stdin/stderr of the parent and close temporary FDs. */
|
/* Restore stdout/stdin/stderr of the parent and close temporary FDs. */
|
||||||
if (save_stdin >= 0)
|
if (save_stdin >= 0)
|
||||||
{
|
{
|
||||||
if (dup2 (save_stdin, FD_STDIN) != 0)
|
if (dup2 (save_stdin, FD_STDIN) != FD_STDIN)
|
||||||
fatal (NILF, _("Could not restore stdin\n"));
|
fatal (NILF, _("Could not restore stdin\n"));
|
||||||
else
|
else
|
||||||
close (save_stdin);
|
close (save_stdin);
|
||||||
@ -2242,7 +2242,7 @@ child_execute_job (int stdin_fd, int stdout_fd, int stderr_fd,
|
|||||||
|
|
||||||
if (save_stdout >= 0)
|
if (save_stdout >= 0)
|
||||||
{
|
{
|
||||||
if (dup2 (save_stdout, FD_STDOUT) != 0)
|
if (dup2 (save_stdout, FD_STDOUT) != FD_STDOUT)
|
||||||
fatal (NILF, _("Could not restore stdout\n"));
|
fatal (NILF, _("Could not restore stdout\n"));
|
||||||
else
|
else
|
||||||
close (save_stdout);
|
close (save_stdout);
|
||||||
@ -2250,7 +2250,7 @@ child_execute_job (int stdin_fd, int stdout_fd, int stderr_fd,
|
|||||||
|
|
||||||
if (save_stderr >= 0)
|
if (save_stderr >= 0)
|
||||||
{
|
{
|
||||||
if (dup2 (save_stderr, FD_STDERR) != 0)
|
if (dup2 (save_stderr, FD_STDERR) != FD_STDERR)
|
||||||
fatal (NILF, _("Could not restore stderr\n"));
|
fatal (NILF, _("Could not restore stderr\n"));
|
||||||
else
|
else
|
||||||
close (save_stderr);
|
close (save_stderr);
|
||||||
|
2
job.h
2
job.h
@ -128,7 +128,7 @@ int child_execute_job (char *argv, struct child *child);
|
|||||||
# define FD_STDERR (fileno (stderr))
|
# define FD_STDERR (fileno (stderr))
|
||||||
# if defined(__EMX__)
|
# if defined(__EMX__)
|
||||||
int child_execute_job (int stdin_fd, int stdout_fd, int stderr_fd,
|
int child_execute_job (int stdin_fd, int stdout_fd, int stderr_fd,
|
||||||
char **argv, char **envp)
|
char **argv, char **envp);
|
||||||
# else
|
# else
|
||||||
void child_execute_job (int stdin_fd, int stdout_fd, int stderr_fd,
|
void child_execute_job (int stdin_fd, int stdout_fd, int stderr_fd,
|
||||||
char **argv, char **envp) __attribute__ ((noreturn));
|
char **argv, char **envp) __attribute__ ((noreturn));
|
||||||
|
@ -26,7 +26,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
|
|||||||
#include "makeint.h"
|
#include "makeint.h"
|
||||||
#include "job.h"
|
#include "job.h"
|
||||||
|
|
||||||
#ifdef NO_OUTPUT_SYNC
|
#ifndef NO_OUTPUT_SYNC
|
||||||
/* Support for OUTPUT_SYNC and related functionality. */
|
/* Support for OUTPUT_SYNC and related functionality. */
|
||||||
|
|
||||||
/* Emulation of fcntl that supports only F_GETFD and F_SETLKW. */
|
/* Emulation of fcntl that supports only F_GETFD and F_SETLKW. */
|
||||||
|
Loading…
Reference in New Issue
Block a user