-#include "precomp.h"
+#include <precomp.h>
#include <process.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <internal/file.h>
#include <tchar.h>
#define NDEBUG
#define argvtosT argvtosW
#define do_spawnT do_spawnW
#define valisttosT valisttosW
- #define extT extW
+ #define extT extW
#else
#define find_execT find_execA
#define argvtosT argvtosA
{
_TCHAR *rp;
const _TCHAR *rd;
- int i, found = 0;
+ unsigned int i, found = 0;
DPRINT(MK_STR(find_execT)"('%"sT"', %x)\n", path, rpath);
for(i = 0; argv[i]; i++)
{
len = _tcslen(argv[i]);
- memcpy(ptr, argv[i], len);
+ memcpy(ptr, argv[i], len * sizeof(_TCHAR));
ptr += len;
*ptr++ = delim;
}
do
{
len = _tcslen(arg0);
- memcpy(ptr, arg0, len);
+ memcpy(ptr, arg0, len * sizeof(_TCHAR));
ptr += len;
*ptr++ = delim;
arg0 = va_arg(alist2, _TCHAR*);
DWORD dwError;
TRACE(MK_STR(do_spawnT)"(%i,'%"sT"','%"sT"','%"sT"')",mode,cmdname,args,envp);
-
+
if (mode != _P_NOWAIT && mode != _P_NOWAITO && mode != _P_WAIT && mode != _P_DETACH && mode != _P_OVERLAY)
{
__set_errno ( EISDIR );
return(-1);
}
-
+
//memset (&StartupInfo, 0, sizeof(StartupInfo));
StartupInfo.cb = sizeof(StartupInfo);
-
+
#if 0
for (last = i = 0; i < FDINFO_FD_MAX; i++)
int _mode = __fileno_getmode(i);
HANDLE h = _get_osfhandle(i);
/* FIXME: The test of console handles (((ULONG)Handle) & 0x10000003) == 0x3)
- * is possible wrong
+ * is possible wrong
*/
if ((((ULONG)h) & 0x10000003) == 0x3 || _mode & _O_NOINHERIT || (i < 3 && mode == _P_DETACH))
{
#endif
create_io_inherit_block((STARTUPINFOA*) &StartupInfo);
-
+
bResult = CreateProcess((_TCHAR *)cmdname,
(_TCHAR *)args,
NULL,
NULL,
&StartupInfo,
&ProcessInformation);
-
+
if (StartupInfo.lpReserved2)
{
free(StartupInfo.lpReserved2);
{
case _P_NOWAIT:
case _P_NOWAITO:
- CloseHandle(ProcessInformation.hThread);
return((int)ProcessInformation.hProcess);
case _P_OVERLAY:
+ CloseHandle(ProcessInformation.hProcess);
_exit(0);
case _P_WAIT:
WaitForSingleObject(ProcessInformation.hProcess, INFINITE);
GetExitCodeProcess(ProcessInformation.hProcess, &dwExitCode);
CloseHandle(ProcessInformation.hProcess);
- CloseHandle(ProcessInformation.hThread);
return( (int)dwExitCode); //CORRECT?
case _P_DETACH:
CloseHandle(ProcessInformation.hProcess);
- CloseHandle(ProcessInformation.hThread);
return( 0);
}
return( (int)ProcessInformation.hProcess);