Commit 0aab2795 by Mark Elbrecht Committed by Jeff Law

pexecute.c (pexecute): Change __GO32__ to __DJGPP__.

        * pexecute.c (pexecute) [__MSDOS__]: Change __GO32__ to
        __DJGPP__. Use P_WAIT instead of constant in the spawnv* call.
        Cast program to 'char *' in errmsg_arg assignment.
        (PWAIT_ERROR): Define.
        (pwait): Use PWAIT_ERROR.  Adjust DJGPP's status code to conform
        to DJGPP's WIF* macros.

From-SVN: r35281
parent ecbe6c61
2000-07-26 Mark Elbrecht <snowball3@bigfoot.com>
* pexecute.c (pexecute) [__MSDOS__]: Change __GO32__ to
__DJGPP__. Use P_WAIT instead of constant in the spawnv* call.
Cast program to 'char *' in errmsg_arg assignment.
(PWAIT_ERROR): Define.
(pwait): Use PWAIT_ERROR. Adjust DJGPP's status code to conform
to DJGPP's WIF* macros.
2000-07-27 RodneyBrown <RodneyBrown@pmsc.com> 2000-07-27 RodneyBrown <RodneyBrown@pmsc.com>
Jeff Law <law@cygnus.com> Jeff Law <law@cygnus.com>
......
...@@ -157,9 +157,9 @@ pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags) ...@@ -157,9 +157,9 @@ pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
if ((flags & PEXECUTE_ONE) != PEXECUTE_ONE) if ((flags & PEXECUTE_ONE) != PEXECUTE_ONE)
abort (); abort ();
#ifdef __GO32__ #ifdef __DJGPP__
/* ??? What are the possible return values from spawnv? */ /* ??? What are the possible return values from spawnv? */
rc = (flags & PEXECUTE_SEARCH ? spawnvp : spawnv) (1, program, argv); rc = (flags & PEXECUTE_SEARCH ? spawnvp : spawnv) (P_WAIT, program, argv);
#else #else
char *scmd, *rf; char *scmd, *rf;
FILE *argfile; FILE *argfile;
...@@ -208,7 +208,7 @@ pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags) ...@@ -208,7 +208,7 @@ pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
if (rc == -1) if (rc == -1)
{ {
*errmsg_fmt = install_error_msg; *errmsg_fmt = install_error_msg;
*errmsg_arg = program; *errmsg_arg = (char *)program;
return -1; return -1;
} }
...@@ -217,6 +217,13 @@ pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags) ...@@ -217,6 +217,13 @@ pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
return last_pid; return last_pid;
} }
/* Use ECHILD if available, otherwise use EINVAL. */
#ifdef ECHILD
#define PWAIT_ERROR ECHILD
#else
#define PWAIT_ERROR EINVAL
#endif
int int
pwait (pid, status, flags) pwait (pid, status, flags)
int pid; int pid;
...@@ -228,13 +235,16 @@ pwait (pid, status, flags) ...@@ -228,13 +235,16 @@ pwait (pid, status, flags)
/* Called twice for the same child? */ /* Called twice for the same child? */
|| pid == last_reaped) || pid == last_reaped)
{ {
/* ??? ECHILD would be a better choice. Can we use it here? */ errno = PWAIT_ERROR;
errno = EINVAL;
return -1; return -1;
} }
/* ??? Here's an opportunity to canonicalize the values in STATUS. /* ??? Here's an opportunity to canonicalize the values in STATUS.
Needed? */ Needed? */
#ifdef __DJGPP__
*status = (last_status >> 8);
#else
*status = last_status; *status = last_status;
#endif
last_reaped = last_pid; last_reaped = last_pid;
return last_pid; return last_pid;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment