On November 2, 2002 10:41 am, Jaco Greeff wrote:
+#define POPEN_WCMD_EXEC "C:\Windows\System32\cmd.exe /c"
Do we need this hardcoded path here?!? What about the COMSPEC idea that Francois suggested?
+#define LPCWSTR_TO_LPSTR(wszIn, nIn, szOut, nOut) \
- *nOut = WideCharToMultiByte(CP_ACP, 0, wszIn, nIn, NULL, 0, NULL,
NULL); \
- szOut = (CHAR *)MSVCRT_malloc((*nOut+1)*sizeof(CHAR)); \
- if (szOut) \
- { \
WideCharToMultiByte(CP_ACP, 0, wszIn, nIn, szOut, *nOut+1, NULL,
NULL); \
\szOut[nLen] = '\0';
- } \
- else \
*nOut = 0;
+#define CREATE_PIPE(hRead, hWrite, security) \
- if (!CreatePipe(&hRead, &hWrite, &security, 0)) \
- { \
\TRACE("Creation of pipe failed\n");
\return NULL;
- }
+#define REDIRECT_STREAM(type, handle)\
- if (!SetStdHandle(type, handle)) \
- { \
\TRACE("Redirection of stream failed");
\return NULL;
- }
+#define RESTORE_STREAM(type, handle) \
- if (!SetStdHandle(type, handle)) \
TRACE("Restore of stream failed\n");
+#define DUPLICATE_HANDLE(hHandle, hDup, type, hOrig) \
- if (!DuplicateHandle(GetCurrentProcess(), hHandle, \
\GetCurrentProcess(), &hDup, 0,
\FALSE, DUPLICATE_SAME_ACCESS))
- { \
TRACE("Duplication of piped handle failed\n"); \
\RESTORE_STREAM(type, hOrig);
\return NULL;
- } \
- else \
CloseHandle(hHandle);
What's up with all the macro abuse? :) We don't like cpp that much! ;) Please, try to do things without macros, it can't be that bad.