From 6440ce656205bd254a6514e694aeab4cc210b5a7 Mon Sep 17 00:00:00 2001 From: Keith Marshall Date: Mon, 4 Apr 2016 19:42:43 +0100 Subject: [PATCH] Factor out vs. duplicate declarations. --- mingwrt/ChangeLog | 23 +++ mingwrt/include/process.h | 364 ++++++++++++++++++++++++++++++++-------------- mingwrt/include/wchar.h | 63 ++++---- 3 files changed, 318 insertions(+), 132 deletions(-) diff --git a/mingwrt/ChangeLog b/mingwrt/ChangeLog index 46dcea9..693b3ce 100644 --- a/mingwrt/ChangeLog +++ b/mingwrt/ChangeLog @@ -1,5 +1,28 @@ 2016-04-04 Keith Marshall + Factor out vs. duplicate declarations. + + * include/process.h: Assert copyright; tidy layout. + (_PROCESS_H_): Rename this multiple inclusion guard macro... + (_PROCESS_H): ...to this preferred form; do not define it when... + [__WCHAR_H_SOURCED__]: ...this is defined, in which case declare... + (_wexecl, _wexecle, _wexeclp, _wexeclpe, _wexecv, _wexecve, _wexecvp) + (_wexecvpe, _wspawnl, _wspawnle, _wspawnlp, _wspawnlpe, _wspawnv) + (_wspawnve, _wspawnvp, _wspawnvpe): ...only these functions. + [!__WCHAR_H_SOURCED__] (_PROCESS_H): Define it; declare all functions + normally specified herein, including those listed above, as required. + (_BEGIN_C_DECLS, _END_C_DECLS): Use to wrap extern "C" declarations. + (__need_intptr_t): Define it prior to including . + (pragma GCC system_header): Declare it. + + * include/wchar.h (_WPROCESS_DEFINED): Delete it; filter out... + (_wexecl, _wexecle, _wexeclp, _wexeclpe, _wexecv, _wexecve, _wexecvp) + (_wexecvpe, _wspawnl, _wspawnle, _wspawnlp, _wspawnlpe, _wspawnv) + (_wspawnve, _wspawnvp, _wspawnvpe): ...these function prototypes; + reproduce them, by selective inclusion of . + +2016-04-04 Keith Marshall + Enable selective retrieval of intptr typedefs from . * include/stdint.h: Assert copyright; tidy layout. diff --git a/mingwrt/include/process.h b/mingwrt/include/process.h index a612c38..93dd9cd 100644 --- a/mingwrt/include/process.h +++ b/mingwrt/include/process.h @@ -1,139 +1,291 @@ /* * process.h - * This file has no copyright assigned and is placed in the Public Domain. - * This file is a part of the mingw-runtime package. - * No warranty is given; refer to the file DISCLAIMER within the package. * - * Function calls for spawning child processes. + * Declarations of functions for spawning child processes. + * + * $Id$ + * + * Written by Rob Savoye + * Copyright (C) 1997-2001, 2003-2004, 2007-2008, 2016, MinGW.org Project. + * + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice, this permission notice, and the following + * disclaimer shall be included in all copies or substantial portions of + * the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER + * DEALINGS IN THE SOFTWARE. * */ +#ifndef _PROCESS_H +#pragma GCC system_header -#ifndef _PROCESS_H_ -#define _PROCESS_H_ +/* Defer defining the normal _PROCESS_H multiple inclusion guard macro, + * to facilitate selective inclusion by , (in which case we do + * not wish to define it). + */ +#ifndef __WCHAR_H_SOURCED__ +#define _PROCESS_H -/* All the headers include this file. */ +/* All MinGW headers must include <_mingw.h>; do so here, assuming + * that will have already taken care of it, for the case + * of selective inclusion. + */ #include <_mingw.h> -#include /* For _pid_t and pid_t. */ -#include /* For intptr_t. */ -/* - * Constants for cwait actions. - * Obsolete for Win32. +/* This gives us more than we really need, but it gets us _pid_t + * (and its pid_t equivalent), which we do need. */ -#define _WAIT_CHILD 0 -#define _WAIT_GRANDCHILD 1 +#include -#ifndef _NO_OLDNAMES -#define WAIT_CHILD _WAIT_CHILD -#define WAIT_GRANDCHILD _WAIT_GRANDCHILD -#endif /* Not _NO_OLDNAMES */ +/* Constants for cwait actions; obsolete for Win32. + */ +#define _WAIT_CHILD 0 +#define _WAIT_GRANDCHILD 1 -/* - * Mode constants for spawn functions. +#ifndef _NO_OLDNAMES +#define WAIT_CHILD _WAIT_CHILD +#define WAIT_GRANDCHILD _WAIT_GRANDCHILD +#endif /* !_NO_OLDNAMES */ +#endif /* !__WCHAR_H_SOURCED__ */ + +/* Mode constants for spawn() functions. */ -#define _P_WAIT 0 -#define _P_NOWAIT 1 -#define _P_OVERLAY 2 -#define _OLD_P_OVERLAY _P_OVERLAY -#define _P_NOWAITO 3 -#define _P_DETACH 4 - -#ifndef _NO_OLDNAMES -#define P_WAIT _P_WAIT -#define P_NOWAIT _P_NOWAIT -#define P_OVERLAY _P_OVERLAY -#define OLD_P_OVERLAY _OLD_P_OVERLAY -#define P_NOWAITO _P_NOWAITO -#define P_DETACH _P_DETACH -#endif /* Not _NO_OLDNAMES */ +#define _P_WAIT 0 +#define _P_NOWAIT 1 +#define _P_OVERLAY 2 +#define _OLD_P_OVERLAY _P_OVERLAY +#define _P_NOWAITO 3 +#define _P_DETACH 4 +#ifndef _NO_OLDNAMES +#define P_WAIT _P_WAIT +#define P_NOWAIT _P_NOWAIT +#define P_OVERLAY _P_OVERLAY +#define OLD_P_OVERLAY _OLD_P_OVERLAY +#define P_NOWAITO _P_NOWAITO +#define P_DETACH _P_DETACH +#endif /* !_NO_OLDNAMES */ #ifndef RC_INVOKED -#ifdef __cplusplus -extern "C" { -#endif +/* All Microsoft implementations of the exec() and spawn() functions + * are declared with intptr_t as their return type; get its definition + * by selective inclusion from . + */ +#define __need_intptr_t +#include -_CRTIMP void __cdecl __MINGW_NOTHROW _cexit(void); -_CRTIMP void __cdecl __MINGW_NOTHROW _c_exit(void); +_BEGIN_C_DECLS -_CRTIMP int __cdecl __MINGW_NOTHROW _cwait (int*, _pid_t, int); +#ifdef _PROCESS_H +_CRTIMP __cdecl __MINGW_NOTHROW void _cexit (void); +_CRTIMP __cdecl __MINGW_NOTHROW void _c_exit (void); -_CRTIMP _pid_t __cdecl __MINGW_NOTHROW _getpid(void); +_CRTIMP __cdecl __MINGW_NOTHROW int _cwait (int *, _pid_t, int); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _execl (const char*, const char*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _execle (const char*, const char*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _execlp (const char*, const char*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _execlpe (const char*, const char*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _execv (const char*, const char* const*); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _execve (const char*, const char* const*, const char* const*); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _execvp (const char*, const char* const*); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _execvpe (const char*, const char* const*, const char* const*); +_CRTIMP __cdecl __MINGW_NOTHROW _pid_t _getpid (void); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _spawnl (int, const char*, const char*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _spawnle (int, const char*, const char*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _spawnlp (int, const char*, const char*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _spawnlpe (int, const char*, const char*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _spawnv (int, const char*, const char* const*); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _spawnve (int, const char*, const char* const*, const char* const*); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _spawnvp (int, const char*, const char* const*); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _spawnvpe (int, const char*, const char* const*, const char* const*); +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _execl (const char *, const char *, ...); +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _execle (const char *, const char *, ...); -/* - * The functions _beginthreadex and _endthreadex are not provided by CRTDLL. - * They are provided by MSVCRT. +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _execlp (const char *, const char *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _execlpe (const char *, const char *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _execv (const char *, const char * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _execve (const char *, const char * const *, const char * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _execvp (const char *, const char * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _execvpe (const char *, const char * const *, const char * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _spawnl (int, const char *, const char *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _spawnle (int, const char *, const char *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _spawnlp (int, const char *, const char *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _spawnlpe (int, const char *, const char *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _spawnv (int, const char *, const char * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _spawnve (int, const char *, const char * const *, const char * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _spawnvp (int, const char *, const char * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _spawnvpe (int, const char *, const char * const *, const char * const *); + +/* Thread initiation and termination functions. * - * NOTE: Apparently _endthread calls CloseHandle on the handle of the thread, - * making for race conditions if you are not careful. Basically you have to - * make sure that no-one is going to do *anything* with the thread handle - * after the thread calls _endthread or returns from the thread function. + * NOTE: Apparently _endthread() calls CloseHandle() on the handle of the + * thread, creating a potential for race conditions, if you are not careful. + * Basically, you MUST ensure that NOTHING attempts to do ANYTHING with the + * thread handle after the thread calls _endthread(), or returns from the + * thread function. * - * NOTE: No old names for these functions. Use the underscore. + * NOTE: No old names for these functions. Use the underscore. */ -_CRTIMP unsigned long __cdecl __MINGW_NOTHROW - _beginthread (void (*)(void *), unsigned, void*); -_CRTIMP void __cdecl __MINGW_NOTHROW _endthread (void); - -#ifdef __MSVCRT__ -_CRTIMP unsigned long __cdecl __MINGW_NOTHROW - _beginthreadex (void *, unsigned, unsigned (__stdcall *) (void *), - void*, unsigned, unsigned*); -_CRTIMP void __cdecl __MINGW_NOTHROW _endthreadex (unsigned); +_CRTIMP __cdecl __MINGW_NOTHROW +unsigned long _beginthread (void (*)(void *), unsigned, void *); + +_CRTIMP __cdecl __MINGW_NOTHROW void _endthread (void); + +#ifdef __MSVCRT__ +_CRTIMP __cdecl __MINGW_NOTHROW unsigned long _beginthreadex +(void *, unsigned, unsigned (__stdcall *) (void *), void *, unsigned, unsigned *); + +_CRTIMP __cdecl __MINGW_NOTHROW void _endthreadex (unsigned); #endif +#ifndef _NO_OLDNAMES +/* Functions named without the leading underscore, for portability. + * These functions live in liboldnames.a. + */ +_CRTIMP __cdecl __MINGW_NOTHROW int cwait (int *, pid_t, int); +_CRTIMP __cdecl __MINGW_NOTHROW pid_t getpid (void); -#ifndef _NO_OLDNAMES -/* - * Functions without the leading underscore, for portability. These functions - * live in liboldnames.a. +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t execl (const char *, const char *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t execle (const char *, const char *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t execlp (const char *, const char *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t execlpe (const char *, const char *,...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t execv (const char *, const char * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t execve (const char *, const char * const *, const char * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t execvp (const char *, const char * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t execvpe (const char *, const char * const *, const char * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t spawnl (int, const char *, const char *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t spawnle (int, const char *, const char *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t spawnlp (int, const char *, const char *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t spawnlpe (int, const char *, const char *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t spawnv (int, const char *, const char * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t spawnve (int, const char *, const char * const *, const char * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t spawnvp (int, const char *, const char * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t spawnvpe (int, const char *, const char * const *, const char * const *); + +#endif /* !_NO_OLDNAMES */ +#endif /* _PROCESS_H */ + +#if ! (defined _PROCESS_H && defined _WCHAR_H) +/* Wide character variations of the exec() and spawn() functions are + * declared both when is included directly, and when it is + * selectively included by ; however, if both _PROCESS_H and + * _WCHAR_H are defined, by the time we get to here, then this must be + * the direct inclusion case, and these have already been declared as + * a result of selective inclusion; there is no need to declare them + * a second time. */ -_CRTIMP int __cdecl __MINGW_NOTHROW cwait (int*, pid_t, int); -_CRTIMP pid_t __cdecl __MINGW_NOTHROW getpid (void); - -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW execl (const char*, const char*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW execle (const char*, const char*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW execlp (const char*, const char*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW execlpe (const char*, const char*,...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW execv (const char*, const char* const*); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW execve (const char*, const char* const*, const char* const*); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW execvp (const char*, const char* const*); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW execvpe (const char*, const char* const*, const char* const*); - -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW spawnl (int, const char*, const char*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW spawnle (int, const char*, const char*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW spawnlp (int, const char*, const char*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW spawnlpe (int, const char*, const char*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW spawnv (int, const char*, const char* const*); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW spawnve (int, const char*, const char* const*, const char* const*); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW spawnvp (int, const char*, const char* const*); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW spawnvpe (int, const char*, const char* const*, const char* const*); -#endif /* Not _NO_OLDNAMES */ - -#ifdef __cplusplus -} -#endif +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _wexecl (const wchar_t *, const wchar_t *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _wexecle (const wchar_t *, const wchar_t *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _wexeclp (const wchar_t *, const wchar_t *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _wexeclpe (const wchar_t *, const wchar_t *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _wexecv (const wchar_t *, const wchar_t * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW intptr_t _wexecve +(const wchar_t *, const wchar_t * const *, const wchar_t * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _wexecvp (const wchar_t *, const wchar_t * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW intptr_t _wexecvpe +(const wchar_t *, const wchar_t * const *, const wchar_t * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _wspawnl (int, const wchar_t *, const wchar_t *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _wspawnle (int, const wchar_t *, const wchar_t *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _wspawnlp (int, const wchar_t *, const wchar_t *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _wspawnlpe (int, const wchar_t *, const wchar_t *, ...); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _wspawnv (int, const wchar_t *, const wchar_t * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW intptr_t _wspawnve +(int, const wchar_t *, const wchar_t * const *, const wchar_t * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW +intptr_t _wspawnvp (int, const wchar_t *, const wchar_t * const *); + +_CRTIMP __cdecl __MINGW_NOTHROW intptr_t _wspawnvpe +(int, const wchar_t *, const wchar_t * const *, const wchar_t * const *); + +#endif /* ! (_PROCESS_H && _WCHAR_H) */ -#endif /* Not RC_INVOKED */ +_END_C_DECLS -#endif /* _PROCESS_H_ not defined */ +#endif /* ! RC_INVOKED */ +#endif /* !_PROCESS_H: $RCSfile$: endof file */ diff --git a/mingwrt/include/wchar.h b/mingwrt/include/wchar.h index a9b38b9..8be0812 100644 --- a/mingwrt/include/wchar.h +++ b/mingwrt/include/wchar.h @@ -63,6 +63,7 @@ * which MSDN identifies as being provided here. */ # include + #endif /* !__STRICT_ANSI__ */ #define WCHAR_MIN 0 @@ -187,7 +188,7 @@ * int _wrmdir (const wchar_t *); * * - * from... + * From... */ #include /* ...we obtain function prototypes, and all associated data type @@ -212,7 +213,7 @@ * int _wstat64i32 (const wchar_t *, struct _stat64i32 *); * * - * and again, in similar fashion, from... + * and from... */ #include /* ...we obtain an opaque forward declaration of: @@ -255,6 +256,40 @@ * * wchar_t *_wsetlocale (int, const wchar_t *); * + * + * and from... + */ +#include +/* ...we obtain function prototypes for: + * + * intptr_t _wexecl (const wchar_t *, const wchar_t *, ...); + * intptr_t _wexecle (const wchar_t *, const wchar_t *, ...); + * intptr_t _wexeclp (const wchar_t *, const wchar_t *, ...); + * intptr_t _wexeclpe (const wchar_t *, const wchar_t *, ...); + * + * intptr_t _wexecv (const wchar_t *, const wchar_t * const *); + * intptr_t _wexecve ( + * const wchar_t *, const wchar_t * const *, const wchar_t * const * + * ); + * intptr_t _wexecvp (const wchar_t *, const wchar_t * const *); + * intptr_t _wexecvpe ( + * const wchar_t *, const wchar_t * const *, const wchar_t * const * + * ); + * + * intptr_t _wspawnl (int, const wchar_t *, const wchar_t *, ...); + * intptr_t _wspawnle (int, const wchar_t *, const wchar_t *, ...); + * intptr_t _wspawnlp (int, const wchar_t *, const wchar_t *, ...); + * intptr_t _wspawnlpe (int, const wchar_t *, const wchar_t *, ...); + * + * intptr_t _wspawnv (int, const wchar_t *, const wchar_t * const *); + * intptr_t _wspawnve ( + * int, const wchar_t *, const wchar_t * const *, const wchar_t * const * + * ); + * intptr_t _wspawnvp (int, const wchar_t *, const wchar_t * const *); + * intptr_t _wspawnvpe ( + * int, const wchar_t *, const wchar_t * const *, const wchar_t * const * + * ); + * */ _BEGIN_C_DECLS @@ -525,30 +560,6 @@ _CRTALIAS int __cdecl __MINGW_NOTHROW _wfindnexti64 (long _v1, struct _wfinddat #define _WIO_DEFINED #endif /* _WIO_DEFINED */ -#ifndef _WPROCESS_DEFINED -/* Also declared in process.h; FIXME: to be factored out. - */ -#include /* For intptr_t. */ -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wexecl (const wchar_t*, const wchar_t*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wexecle (const wchar_t*, const wchar_t*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wexeclp (const wchar_t*, const wchar_t*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wexeclpe (const wchar_t*, const wchar_t*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wexecv (const wchar_t*, const wchar_t* const*); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wexecve (const wchar_t*, const wchar_t* const*, const wchar_t* const*); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wexecvp (const wchar_t*, const wchar_t* const*); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wexecvpe (const wchar_t*, const wchar_t* const*, const wchar_t* const*); - -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wspawnl (int, const wchar_t*, const wchar_t*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wspawnle (int, const wchar_t*, const wchar_t*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wspawnlp (int, const wchar_t*, const wchar_t*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wspawnlpe (int, const wchar_t*, const wchar_t*, ...); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wspawnv (int, const wchar_t*, const wchar_t* const*); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wspawnve (int, const wchar_t*, const wchar_t* const*, const wchar_t* const*); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wspawnvp (int, const wchar_t*, const wchar_t* const*); -_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wspawnvpe (int, const wchar_t*, const wchar_t* const*, const wchar_t* const*); - -#define _WPROCESS_DEFINED -#endif #endif /* ! __STRICT_ANSI__ */ _END_C_DECLS -- 2.11.0