Fixes for VMS from Hartmut Becker.

This commit is contained in:
Paul Smith 2005-06-10 20:16:28 +00:00
parent dd30b0552f
commit 974d14ac4f
4 changed files with 22 additions and 8 deletions

View file

@ -1,3 +1,13 @@
2005-06-10 Paul D. Smith <psmith@gnu.org>
VMS build updates from Hartmut Becker <Hartmut.Becker@hp.com>:
* vmsjobs.c [VMS]: Updates to compile on VMS: add some missing
headers; make vmsWaitForChildren() static; extern vmsify().
* job.c [VMS]: Move vmsWaitForChildren() prototype to be global.
Don't create child_execute_job() here (it's in vmsjobs.c).
* makefile.vms (job.obj) [VMS]: Add vmsjobs.c as a prerequisite.
2005-06-09 Paul D. Smith <psmith@gnu.org> 2005-06-09 Paul D. Smith <psmith@gnu.org>
* variable.c (push_new_variable_scope): File variables point * variable.c (push_new_variable_scope): File variables point

6
job.c
View file

@ -98,6 +98,7 @@ static int amiga_batch_file;
# endif # endif
# include <starlet.h> # include <starlet.h>
# include <lib$routines.h> # include <lib$routines.h>
static void vmsWaitForChildren PARAMS ((int *));
#endif #endif
#ifdef WINDOWS32 #ifdef WINDOWS32
@ -535,7 +536,6 @@ reap_children (int block, int err)
if (any_local) if (any_local)
{ {
#ifdef VMS #ifdef VMS
static void vmsWaitForChildren PARAMS ((int *));
vmsWaitForChildren (&status); vmsWaitForChildren (&status);
pid = c->pid; pid = c->pid;
#else #else
@ -1905,7 +1905,7 @@ child_execute_job (int stdin_fd, int stdout_fd, char **argv, char **envp)
return pid; return pid;
} }
#elif !defined (_AMIGA) && !defined (__MSDOS__) #elif !defined (_AMIGA) && !defined (__MSDOS__) && !defined (VMS)
/* UNIX: /* UNIX:
Replace the current process with one executing the command in ARGV. Replace the current process with one executing the command in ARGV.
@ -1926,7 +1926,7 @@ child_execute_job (int stdin_fd, int stdout_fd, char **argv, char **envp)
/* Run the command. */ /* Run the command. */
exec_command (argv, envp); exec_command (argv, envp);
} }
#endif /* !AMIGA && !__MSDOS__ */ #endif /* !AMIGA && !__MSDOS__ && !VMS */
#endif /* !WINDOWS32 */ #endif /* !WINDOWS32 */
#ifndef _AMIGA #ifndef _AMIGA

View file

@ -116,7 +116,7 @@ clean:
# Automatically generated dependencies. # Automatically generated dependencies.
commands.obj: commands.c make.h dep.h commands.h filedef.h variable.h job.h commands.obj: commands.c make.h dep.h commands.h filedef.h variable.h job.h
job.obj: job.c make.h commands.h job.h filedef.h variable.h job.obj: job.c vmsjobs.c make.h commands.h job.h filedef.h variable.h
dir.obj: dir.c make.h dir.obj: dir.c make.h
file.obj: file.c make.h commands.h dep.h filedef.h variable.h file.obj: file.c make.h commands.h dep.h filedef.h variable.h
misc.obj: misc.c make.h dep.h misc.obj: misc.c make.h dep.h

View file

@ -4,10 +4,16 @@
This file must be #included in job.c, as it accesses static functions. This file must be #included in job.c, as it accesses static functions.
*/ */
#include <string.h>
#include <descrip.h>
#include <clidef.h>
extern char *vmsify PARAMS ((char *name, int type));
static int vms_jobsefnmask = 0; static int vms_jobsefnmask = 0;
/* Wait for nchildren children to terminate */ /* Wait for nchildren children to terminate */
void static void
vmsWaitForChildren(int *status) vmsWaitForChildren(int *status)
{ {
while (1) while (1)
@ -91,9 +97,6 @@ vms_handle_apos (char *p)
return p; return p;
} }
#include <descrip.h>
#include <clidef.h>
/* This is called as an AST when a child process dies (it won't get /* This is called as an AST when a child process dies (it won't get
interrupted by anything except a higher level AST). interrupted by anything except a higher level AST).
*/ */
@ -196,6 +199,7 @@ vmsHandleChildTerm(struct child *child)
#define MAXCMDLEN 200 #define MAXCMDLEN 200
/* local helpers to make ctrl+c and ctrl+y working, see below */ /* local helpers to make ctrl+c and ctrl+y working, see below */
#include <iodef.h>
#include <libclidef.h> #include <libclidef.h>
#include <ssdef.h> #include <ssdef.h>