Commit 1651030c by Kai Tietz Committed by Kai Tietz

[patch]: libiberty pex for _WIN64.

From-SVN: r127761
parent affb3cb2
2007-08-24 Kai Tietz <kai.tietz@onevision.com>
* pex-common.h: (pex_funcs): Retyped wait and exec_child to pid_t.
* pex-djgpp.c: Likewise.
* pex-msdos.c: Likewise.
* pex-unix.c: Likewise.
* pex-win32.c: Likewise.
2007-08-17 Michael Snyder <msnyder@access-company.com> 2007-08-17 Michael Snyder <msnyder@access-company.com>
* make-relative-prefix.c (make_relative_prefix_1): Resource leaks. * make-relative-prefix.c (make_relative_prefix_1): Resource leaks.
......
...@@ -26,6 +26,12 @@ Boston, MA 02110-1301, USA. */ ...@@ -26,6 +26,12 @@ Boston, MA 02110-1301, USA. */
#include "libiberty.h" #include "libiberty.h"
#include <stdio.h> #include <stdio.h>
/* pid_t is may defined by config.h or sys/types.h needs to be
included. */
#if !defined(pid_t) && defined(HAVE_SYS_TYPES_H)
#include <sys/types.h>
#endif
#define install_error_msg "installation problem, cannot exec `%s'" #define install_error_msg "installation problem, cannot exec `%s'"
/* stdin file number. */ /* stdin file number. */
...@@ -108,7 +114,7 @@ struct pex_funcs ...@@ -108,7 +114,7 @@ struct pex_funcs
closed in the child process. The function should handle the closed in the child process. The function should handle the
PEX_STDERR_TO_STDOUT flag. Return >= 0 on success, or -1 on PEX_STDERR_TO_STDOUT flag. Return >= 0 on success, or -1 on
error and set *ERRMSG and *ERR. */ error and set *ERRMSG and *ERR. */
long (*exec_child) (struct pex_obj *, int /* flags */, pid_t (*exec_child) (struct pex_obj *, int /* flags */,
const char */* executable */, char * const * /* argv */, const char */* executable */, char * const * /* argv */,
char * const * /* env */, char * const * /* env */,
int /* in */, int /* out */, int /* errdes */, int /* in */, int /* out */, int /* errdes */,
...@@ -120,7 +126,7 @@ struct pex_funcs ...@@ -120,7 +126,7 @@ struct pex_funcs
and time in *TIME (if it is not null). CHILD is from fork. DONE and time in *TIME (if it is not null). CHILD is from fork. DONE
is 1 if this is called via pex_free. ERRMSG and ERR are as in is 1 if this is called via pex_free. ERRMSG and ERR are as in
fork. Return 0 on success, -1 on error. */ fork. Return 0 on success, -1 on error. */
int (*wait) (struct pex_obj *, long /* child */, int * /* status */, int (*wait) (struct pex_obj *, pid_t /* child */, int * /* status */,
struct pex_time * /* time */, int /* done */, struct pex_time * /* time */, int /* done */,
const char ** /* errmsg */, int * /* err */); const char ** /* errmsg */, int * /* err */);
/* Create a pipe (only called if PEX_USE_PIPES is set) storing two /* Create a pipe (only called if PEX_USE_PIPES is set) storing two
......
...@@ -44,12 +44,12 @@ extern int errno; ...@@ -44,12 +44,12 @@ extern int errno;
static int pex_djgpp_open_read (struct pex_obj *, const char *, int); static int pex_djgpp_open_read (struct pex_obj *, const char *, int);
static int pex_djgpp_open_write (struct pex_obj *, const char *, int); static int pex_djgpp_open_write (struct pex_obj *, const char *, int);
static long pex_djgpp_exec_child (struct pex_obj *, int, const char *, static pid_t pex_djgpp_exec_child (struct pex_obj *, int, const char *,
char * const *, char * const *, char * const *, char * const *,
int, int, int, int, int, int, int, int,
const char **, int *); const char **, int *);
static int pex_djgpp_close (struct pex_obj *, int); static int pex_djgpp_close (struct pex_obj *, int);
static int pex_djgpp_wait (struct pex_obj *, long, int *, struct pex_time *, static int pex_djgpp_wait (struct pex_obj *, pid_t, int *, struct pex_time *,
int, const char **, int *); int, const char **, int *);
/* The list of functions we pass to the common routines. */ /* The list of functions we pass to the common routines. */
...@@ -110,7 +110,7 @@ pex_djgpp_close (struct pex_obj *obj ATTRIBUTE_UNUSED, int fd) ...@@ -110,7 +110,7 @@ pex_djgpp_close (struct pex_obj *obj ATTRIBUTE_UNUSED, int fd)
/* Execute a child. */ /* Execute a child. */
static long static pid_t
pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable, pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable,
char * const * argv, char * const * env, char * const * argv, char * const * env,
int in, int out, int errdes, int in, int out, int errdes,
...@@ -132,19 +132,19 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable, ...@@ -132,19 +132,19 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable,
{ {
*err = errno; *err = errno;
*errmsg = "dup"; *errmsg = "dup";
return -1; return (pid_t) -1;
} }
if (dup2 (in, STDIN_FILE_NO) < 0) if (dup2 (in, STDIN_FILE_NO) < 0)
{ {
*err = errno; *err = errno;
*errmsg = "dup2"; *errmsg = "dup2";
return -1; return (pid_t) -1;
} }
if (close (in) < 0) if (close (in) < 0)
{ {
*err = errno; *err = errno;
*errmsg = "close"; *errmsg = "close";
return -1; return (pid_t) -1;
} }
} }
...@@ -155,19 +155,19 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable, ...@@ -155,19 +155,19 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable,
{ {
*err = errno; *err = errno;
*errmsg = "dup"; *errmsg = "dup";
return -1; return (pid_t) -1;
} }
if (dup2 (out, STDOUT_FILE_NO) < 0) if (dup2 (out, STDOUT_FILE_NO) < 0)
{ {
*err = errno; *err = errno;
*errmsg = "dup2"; *errmsg = "dup2";
return -1; return (pid_t) -1;
} }
if (close (out) < 0) if (close (out) < 0)
{ {
*err = errno; *err = errno;
*errmsg = "close"; *errmsg = "close";
return -1; return (pid_t) -1;
} }
} }
...@@ -179,14 +179,14 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable, ...@@ -179,14 +179,14 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable,
{ {
*err = errno; *err = errno;
*errmsg = "dup"; *errmsg = "dup";
return -1; return (pid_t) -1;
} }
if (dup2 ((flags & PEX_STDERR_TO_STDOUT) != 0 ? STDOUT_FILE_NO : errdes, if (dup2 ((flags & PEX_STDERR_TO_STDOUT) != 0 ? STDOUT_FILE_NO : errdes,
STDERR_FILE_NO) < 0) STDERR_FILE_NO) < 0)
{ {
*err = errno; *err = errno;
*errmsg = "dup2"; *errmsg = "dup2";
return -1; return (pid_t) -1;
} }
if (errdes != STDERR_FILE_NO) if (errdes != STDERR_FILE_NO)
{ {
...@@ -194,7 +194,7 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable, ...@@ -194,7 +194,7 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable,
{ {
*err = errno; *err = errno;
*errmsg = "close"; *errmsg = "close";
return -1; return (pid_t) -1;
} }
} }
} }
...@@ -218,13 +218,13 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable, ...@@ -218,13 +218,13 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable,
{ {
*err = errno; *err = errno;
*errmsg = "dup2"; *errmsg = "dup2";
return -1; return (pid_t) -1;
} }
if (close (org_in) < 0) if (close (org_in) < 0)
{ {
*err = errno; *err = errno;
*errmsg = "close"; *errmsg = "close";
return -1; return (pid_t) -1;
} }
} }
...@@ -234,13 +234,13 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable, ...@@ -234,13 +234,13 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable,
{ {
*err = errno; *err = errno;
*errmsg = "dup2"; *errmsg = "dup2";
return -1; return (pid_t) -1;
} }
if (close (org_out) < 0) if (close (org_out) < 0)
{ {
*err = errno; *err = errno;
*errmsg = "close"; *errmsg = "close";
return -1; return (pid_t) -1;
} }
} }
...@@ -251,13 +251,13 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable, ...@@ -251,13 +251,13 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable,
{ {
*err = errno; *err = errno;
*errmsg = "dup2"; *errmsg = "dup2";
return -1; return (pid_t) -1;
} }
if (close (org_errdes) < 0) if (close (org_errdes) < 0)
{ {
*err = errno; *err = errno;
*errmsg = "close"; *errmsg = "close";
return -1; return (pid_t) -1;
} }
} }
...@@ -269,7 +269,7 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable, ...@@ -269,7 +269,7 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable,
statuses[obj->count] = status; statuses[obj->count] = status;
obj->sysdep = (void *) statuses; obj->sysdep = (void *) statuses;
return obj->count; return (pid_t) obj->count;
} }
/* Wait for a child process to complete. Actually the child process /* Wait for a child process to complete. Actually the child process
...@@ -277,7 +277,7 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable, ...@@ -277,7 +277,7 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable,
status. */ status. */
static int static int
pex_djgpp_wait (struct pex_obj *obj, long pid, int *status, pex_djgpp_wait (struct pex_obj *obj, pid_t pid, int *status,
struct pex_time *time, int done ATTRIBUTE_UNUSED, struct pex_time *time, int done ATTRIBUTE_UNUSED,
const char **errmsg ATTRIBUTE_UNUSED, const char **errmsg ATTRIBUTE_UNUSED,
int *err ATTRIBUTE_UNUSED) int *err ATTRIBUTE_UNUSED)
......
...@@ -54,12 +54,12 @@ struct pex_msdos ...@@ -54,12 +54,12 @@ struct pex_msdos
static int pex_msdos_open (struct pex_obj *, const char *, int); static int pex_msdos_open (struct pex_obj *, const char *, int);
static int pex_msdos_open (struct pex_obj *, const char *, int); static int pex_msdos_open (struct pex_obj *, const char *, int);
static int pex_msdos_fdindex (struct pex_msdos *, int); static int pex_msdos_fdindex (struct pex_msdos *, int);
static long pex_msdos_exec_child (struct pex_obj *, int, const char *, static pid_t pex_msdos_exec_child (struct pex_obj *, int, const char *,
char * const *, char * const *, char * const *, char * const *,
int, int, int, int, int, int, int, int,
int, const char **, int *); int, const char **, int *);
static int pex_msdos_close (struct pex_obj *, int); static int pex_msdos_close (struct pex_obj *, int);
static int pex_msdos_wait (struct pex_obj *, long, int *, struct pex_time *, static int pex_msdos_wait (struct pex_obj *, pid_t, int *, struct pex_time *,
int, const char **, int *); int, const char **, int *);
static void pex_msdos_cleanup (struct pex_obj *); static void pex_msdos_cleanup (struct pex_obj *);
...@@ -152,7 +152,7 @@ pex_msdos_close (struct pex_obj *obj, int fd) ...@@ -152,7 +152,7 @@ pex_msdos_close (struct pex_obj *obj, int fd)
/* Execute a child. */ /* Execute a child. */
static long static pid_t
pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable, pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable,
char * const * argv, char * const * env, int in, int out, char * const * argv, char * const * env, int in, int out,
int toclose ATTRIBUTE_UNUSED, int toclose ATTRIBUTE_UNUSED,
...@@ -235,7 +235,7 @@ pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable, ...@@ -235,7 +235,7 @@ pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable,
free (scmd); free (scmd);
free (rf); free (rf);
*errmsg = "cannot open temporary command file"; *errmsg = "cannot open temporary command file";
return -1; return (pid_t) -1;
} }
for (i = 1; argv[i] != NULL; ++i) for (i = 1; argv[i] != NULL; ++i)
...@@ -262,7 +262,7 @@ pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable, ...@@ -262,7 +262,7 @@ pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable,
free (scmd); free (scmd);
free (rf); free (rf);
*errmsg = "system"; *errmsg = "system";
return -1; return (pid_t) -1;
} }
remove (rf); remove (rf);
...@@ -275,7 +275,7 @@ pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable, ...@@ -275,7 +275,7 @@ pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable,
ms->statuses = XRESIZEVEC(int, ms->statuses, obj->count + 1); ms->statuses = XRESIZEVEC(int, ms->statuses, obj->count + 1);
ms->statuses[obj->count] = status; ms->statuses[obj->count] = status;
return obj->count; return (pid_t) obj->count;
} }
/* Wait for a child process to complete. Actually the child process /* Wait for a child process to complete. Actually the child process
...@@ -283,7 +283,7 @@ pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable, ...@@ -283,7 +283,7 @@ pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable,
status. */ status. */
static int static int
pex_msdos_wait (struct pex_obj *obj, long pid, int *status, pex_msdos_wait (struct pex_obj *obj, pid_t pid, int *status,
struct pex_time *time, int done ATTRIBUTE_UNUSED, struct pex_time *time, int done ATTRIBUTE_UNUSED,
const char **errmsg ATTRIBUTE_UNUSED, const char **errmsg ATTRIBUTE_UNUSED,
int *err ATTRIBUTE_UNUSED) int *err ATTRIBUTE_UNUSED)
......
...@@ -269,12 +269,12 @@ static void pex_child_error (struct pex_obj *, const char *, const char *, int) ...@@ -269,12 +269,12 @@ static void pex_child_error (struct pex_obj *, const char *, const char *, int)
ATTRIBUTE_NORETURN; ATTRIBUTE_NORETURN;
static int pex_unix_open_read (struct pex_obj *, const char *, int); static int pex_unix_open_read (struct pex_obj *, const char *, int);
static int pex_unix_open_write (struct pex_obj *, const char *, int); static int pex_unix_open_write (struct pex_obj *, const char *, int);
static long pex_unix_exec_child (struct pex_obj *, int, const char *, static pid_t pex_unix_exec_child (struct pex_obj *, int, const char *,
char * const *, char * const *, char * const *, char * const *,
int, int, int, int, int, int, int, int,
const char **, int *); const char **, int *);
static int pex_unix_close (struct pex_obj *, int); static int pex_unix_close (struct pex_obj *, int);
static int pex_unix_wait (struct pex_obj *, long, int *, struct pex_time *, static int pex_unix_wait (struct pex_obj *, pid_t, int *, struct pex_time *,
int, const char **, int *); int, const char **, int *);
static int pex_unix_pipe (struct pex_obj *, int *, int); static int pex_unix_pipe (struct pex_obj *, int *, int);
static FILE *pex_unix_fdopenr (struct pex_obj *, int, int); static FILE *pex_unix_fdopenr (struct pex_obj *, int, int);
...@@ -355,7 +355,7 @@ pex_child_error (struct pex_obj *obj, const char *executable, ...@@ -355,7 +355,7 @@ pex_child_error (struct pex_obj *obj, const char *executable,
extern char **environ; extern char **environ;
static long static pid_t
pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable, pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable,
char * const * argv, char * const * env, char * const * argv, char * const * env,
int in, int out, int errdes, int in, int out, int errdes,
...@@ -384,7 +384,7 @@ pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable, ...@@ -384,7 +384,7 @@ pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable,
case -1: case -1:
*err = errno; *err = errno;
*errmsg = VFORK_STRING; *errmsg = VFORK_STRING;
return -1; return (pid_t) -1;
case 0: case 0:
/* Child process. */ /* Child process. */
...@@ -435,7 +435,7 @@ pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable, ...@@ -435,7 +435,7 @@ pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable,
} }
/* NOTREACHED */ /* NOTREACHED */
return -1; return (pid_t) -1;
default: default:
/* Parent process. */ /* Parent process. */
...@@ -445,7 +445,7 @@ pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable, ...@@ -445,7 +445,7 @@ pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable,
{ {
*err = errno; *err = errno;
*errmsg = "close"; *errmsg = "close";
return -1; return (pid_t) -1;
} }
} }
if (out != STDOUT_FILE_NO) if (out != STDOUT_FILE_NO)
...@@ -454,7 +454,7 @@ pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable, ...@@ -454,7 +454,7 @@ pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable,
{ {
*err = errno; *err = errno;
*errmsg = "close"; *errmsg = "close";
return -1; return (pid_t) -1;
} }
} }
if (errdes != STDERR_FILE_NO) if (errdes != STDERR_FILE_NO)
...@@ -463,18 +463,18 @@ pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable, ...@@ -463,18 +463,18 @@ pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable,
{ {
*err = errno; *err = errno;
*errmsg = "close"; *errmsg = "close";
return -1; return (pid_t) -1;
} }
} }
return (long) pid; return pid;
} }
} }
/* Wait for a child process to complete. */ /* Wait for a child process to complete. */
static int static int
pex_unix_wait (struct pex_obj *obj, long pid, int *status, pex_unix_wait (struct pex_obj *obj, pid_t pid, int *status,
struct pex_time *time, int done, const char **errmsg, struct pex_time *time, int done, const char **errmsg,
int *err) int *err)
{ {
......
...@@ -79,12 +79,12 @@ backslashify (char *s) ...@@ -79,12 +79,12 @@ backslashify (char *s)
static int pex_win32_open_read (struct pex_obj *, const char *, int); static int pex_win32_open_read (struct pex_obj *, const char *, int);
static int pex_win32_open_write (struct pex_obj *, const char *, int); static int pex_win32_open_write (struct pex_obj *, const char *, int);
static long pex_win32_exec_child (struct pex_obj *, int, const char *, static pid_t pex_win32_exec_child (struct pex_obj *, int, const char *,
char * const *, char * const *, char * const *, char * const *,
int, int, int, int, int, int, int, int,
const char **, int *); const char **, int *);
static int pex_win32_close (struct pex_obj *, int); static int pex_win32_close (struct pex_obj *, int);
static int pex_win32_wait (struct pex_obj *, long, int *, static int pex_win32_wait (struct pex_obj *, pid_t, int *,
struct pex_time *, int, const char **, int *); struct pex_time *, int, const char **, int *);
static int pex_win32_pipe (struct pex_obj *, int *, int); static int pex_win32_pipe (struct pex_obj *, int *, int);
static FILE *pex_win32_fdopenr (struct pex_obj *, int, int); static FILE *pex_win32_fdopenr (struct pex_obj *, int, int);
...@@ -522,7 +522,7 @@ env_compare (const void *a_ptr, const void *b_ptr) ...@@ -522,7 +522,7 @@ env_compare (const void *a_ptr, const void *b_ptr)
return c1 - c2; return c1 - c2;
} }
static long static pid_t
win32_spawn (const char *executable, win32_spawn (const char *executable,
BOOL search, BOOL search,
char *const *argv, char *const *argv,
...@@ -597,7 +597,7 @@ win32_spawn (const char *executable, ...@@ -597,7 +597,7 @@ win32_spawn (const char *executable,
free (full_executable); free (full_executable);
return -1; return (pid_t) -1;
} }
/* Clean up. */ /* Clean up. */
...@@ -606,7 +606,7 @@ win32_spawn (const char *executable, ...@@ -606,7 +606,7 @@ win32_spawn (const char *executable,
if (env_block) if (env_block)
free (env_block); free (env_block);
return (long) pi->hProcess; return (pid_t) pi->hProcess;
error: error:
if (env_block) if (env_block)
...@@ -616,17 +616,17 @@ win32_spawn (const char *executable, ...@@ -616,17 +616,17 @@ win32_spawn (const char *executable,
if (full_executable) if (full_executable)
free (full_executable); free (full_executable);
return -1; return (pid_t) -1;
} }
static long static pid_t
spawn_script (const char *executable, char *const *argv, spawn_script (const char *executable, char *const *argv,
char* const *env, char* const *env,
DWORD dwCreationFlags, DWORD dwCreationFlags,
LPSTARTUPINFO si, LPSTARTUPINFO si,
LPPROCESS_INFORMATION pi) LPPROCESS_INFORMATION pi)
{ {
int pid = -1; pid_t pid = (pid_t) -1;
int save_errno = errno; int save_errno = errno;
int fd = _open (executable, _O_RDONLY); int fd = _open (executable, _O_RDONLY);
...@@ -673,7 +673,7 @@ spawn_script (const char *executable, char *const *argv, ...@@ -673,7 +673,7 @@ spawn_script (const char *executable, char *const *argv,
dwCreationFlags, si, pi); dwCreationFlags, si, pi);
if (executable1 != newex) if (executable1 != newex)
free ((char *) newex); free ((char *) newex);
if (pid < 0) if ((long) pid < 0)
{ {
newex = msys_rootify (executable1); newex = msys_rootify (executable1);
if (newex != executable1) if (newex != executable1)
...@@ -689,14 +689,14 @@ spawn_script (const char *executable, char *const *argv, ...@@ -689,14 +689,14 @@ spawn_script (const char *executable, char *const *argv,
} }
} }
} }
if (pid < 0) if ((long) pid < 0)
errno = save_errno; errno = save_errno;
return pid; return pid;
} }
/* Execute a child. */ /* Execute a child. */
static long static pid_t
pex_win32_exec_child (struct pex_obj *obj ATTRIBUTE_UNUSED, int flags, pex_win32_exec_child (struct pex_obj *obj ATTRIBUTE_UNUSED, int flags,
const char *executable, char * const * argv, const char *executable, char * const * argv,
char* const* env, char* const* env,
...@@ -705,7 +705,7 @@ pex_win32_exec_child (struct pex_obj *obj ATTRIBUTE_UNUSED, int flags, ...@@ -705,7 +705,7 @@ pex_win32_exec_child (struct pex_obj *obj ATTRIBUTE_UNUSED, int flags,
const char **errmsg, const char **errmsg,
int *err) int *err)
{ {
long pid; pid_t pid;
HANDLE stdin_handle; HANDLE stdin_handle;
HANDLE stdout_handle; HANDLE stdout_handle;
HANDLE stderr_handle; HANDLE stderr_handle;
...@@ -780,10 +780,10 @@ pex_win32_exec_child (struct pex_obj *obj ATTRIBUTE_UNUSED, int flags, ...@@ -780,10 +780,10 @@ pex_win32_exec_child (struct pex_obj *obj ATTRIBUTE_UNUSED, int flags,
/* Create the child process. */ /* Create the child process. */
pid = win32_spawn (executable, (flags & PEX_SEARCH) != 0, pid = win32_spawn (executable, (flags & PEX_SEARCH) != 0,
argv, env, dwCreationFlags, &si, &pi); argv, env, dwCreationFlags, &si, &pi);
if (pid == -1) if (pid == (pid_t) -1)
pid = spawn_script (executable, argv, env, dwCreationFlags, pid = spawn_script (executable, argv, env, dwCreationFlags,
&si, &pi); &si, &pi);
if (pid == -1) if (pid == (pid_t) -1)
{ {
*err = ENOENT; *err = ENOENT;
*errmsg = "CreateProcess"; *errmsg = "CreateProcess";
...@@ -808,7 +808,7 @@ pex_win32_exec_child (struct pex_obj *obj ATTRIBUTE_UNUSED, int flags, ...@@ -808,7 +808,7 @@ pex_win32_exec_child (struct pex_obj *obj ATTRIBUTE_UNUSED, int flags,
macros. Note that WIFSIGNALED will never be true under CRTDLL. */ macros. Note that WIFSIGNALED will never be true under CRTDLL. */
static int static int
pex_win32_wait (struct pex_obj *obj ATTRIBUTE_UNUSED, long pid, pex_win32_wait (struct pex_obj *obj ATTRIBUTE_UNUSED, pid_t pid,
int *status, struct pex_time *time, int done ATTRIBUTE_UNUSED, int *status, struct pex_time *time, int done ATTRIBUTE_UNUSED,
const char **errmsg, int *err) const char **errmsg, int *err)
{ {
...@@ -883,7 +883,7 @@ main (int argc ATTRIBUTE_UNUSED, char **argv) ...@@ -883,7 +883,7 @@ main (int argc ATTRIBUTE_UNUSED, char **argv)
char const *errmsg; char const *errmsg;
int err; int err;
argv++; argv++;
printf ("%ld\n", pex_win32_exec_child (NULL, PEX_SEARCH, argv[0], argv, NULL, 0, 0, 1, 2, &errmsg, &err)); printf ("%ld\n", (long) pex_win32_exec_child (NULL, PEX_SEARCH, argv[0], argv, NULL, 0, 0, 1, 2, &errmsg, &err));
exit (0); exit (0);
} }
#endif #endif
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