2009-08-14 14:00 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/hbproces.c
! hacked hb_processRun() to work in WinCE.
Please test.
This commit is contained in:
@@ -17,6 +17,11 @@
|
||||
past entries belonging to author(s): Viktor Szakats.
|
||||
*/
|
||||
|
||||
2009-08-14 14:00 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/source/rtl/hbproces.c
|
||||
! hacked hb_processRun() to work in WinCE.
|
||||
Please test.
|
||||
|
||||
2009-08-14 11:24 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
|
||||
* bin/postinst.bat
|
||||
* Minor internal cleanup.
|
||||
|
||||
@@ -192,7 +192,7 @@ static void hb_freeArgs( char ** argv )
|
||||
|
||||
#endif
|
||||
|
||||
#if defined( HB_OS_DOS ) || defined( HB_OS_OS2 ) /* || defined( HB_OS_WIN_CE ) */
|
||||
#if defined( HB_OS_DOS ) || defined( HB_OS_OS2 ) || defined( HB_OS_WIN_CE )
|
||||
static int hb_fsProcessExec( const char *pszFilename,
|
||||
HB_FHANDLE hStdin, HB_FHANDLE hStdout,
|
||||
HB_FHANDLE hStderr )
|
||||
@@ -201,10 +201,8 @@ static int hb_fsProcessExec( const char *pszFilename,
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_fsProcessExec(%s, %p, %p, %p, %d, %p)", pszFilename, ( void * ) ( HB_PTRDIFF ) hStdin, ( void * ) ( HB_PTRDIFF ) hStdout, ( void * ) ( HB_PTRDIFF ) hStderr));
|
||||
|
||||
#if defined( HB_IO_WIN )
|
||||
|
||||
PROCESS_INFORMATION pi;
|
||||
STARTUPINFO si;
|
||||
#if defined( HB_OS_WIN_CE )
|
||||
{
|
||||
DWORD dwFlags = 0;
|
||||
#if defined( UNICODE )
|
||||
LPWSTR lpCommand = hb_mbtowc( pszFilename );
|
||||
@@ -213,45 +211,33 @@ static int hb_fsProcessExec( const char *pszFilename,
|
||||
#endif
|
||||
BOOL fError;
|
||||
|
||||
memset( &pi, 0, sizeof( pi ) );
|
||||
memset( &si, 0, sizeof( si ) );
|
||||
si.cb = sizeof( si );
|
||||
si.hStdInput = hStdin == FS_ERROR ? GetStdHandle( STD_INPUT_HANDLE ) : hStdin;
|
||||
si.hStdOutput = hStdout == FS_ERROR ? GetStdHandle( STD_OUTPUT_HANDLE ) : hStdout;
|
||||
si.hStdError = hStderr == FS_ERROR ? GetStdHandle( STD_ERROR_HANDLE ) : hStderr;
|
||||
#ifdef STARTF_USESTDHANDLES
|
||||
si.dwFlags = STARTF_USESTDHANDLES;
|
||||
#endif
|
||||
HB_SYMBOL_UNUSED( hStdin );
|
||||
HB_SYMBOL_UNUSED( hStdout );
|
||||
HB_SYMBOL_UNUSED( hStderr );
|
||||
|
||||
hb_vmUnlock();
|
||||
fError = ! CreateProcess( NULL, /* lpAppName */
|
||||
lpCommand,
|
||||
lpCommand, /* lpCommandLine */
|
||||
NULL, /* lpProcessAttr */
|
||||
NULL, /* lpThreadAttr */
|
||||
TRUE, /* bInheritHandles */
|
||||
FALSE, /* bInheritHandles */
|
||||
dwFlags, /* dwCreationFlags */
|
||||
NULL, /* lpEnvironment */
|
||||
NULL, /* lpCurrentDirectory */
|
||||
&si,
|
||||
&pi );
|
||||
NULL, /* lpStartupInfo */
|
||||
NULL ); /* lpProcessInformation */
|
||||
hb_fsSetIOError( !fError, 0 );
|
||||
if( !fError )
|
||||
{
|
||||
CloseHandle( pi.hThread );
|
||||
if( WaitForSingleObject( pi.hProcess, INFINITE ) == WAIT_OBJECT_0 )
|
||||
{
|
||||
DWORD dwResult = 0;
|
||||
fError = !GetExitCodeProcess( pi.hProcess, &dwResult );
|
||||
iResult = !fError ? ( int ) dwResult : -2;
|
||||
}
|
||||
hb_fsSetIOError( !fError, 0 );
|
||||
CloseHandle( pi.hProcess );
|
||||
iResult = 0;
|
||||
}
|
||||
hb_vmLock();
|
||||
hb_xfree( lpCommand );
|
||||
|
||||
}
|
||||
#elif defined( HB_OS_DOS ) || defined( HB_OS_WIN ) || defined( HB_OS_OS2 ) || \
|
||||
defined( HB_OS_UNIX )
|
||||
|
||||
{
|
||||
int iStdIn, iStdOut, iStdErr;
|
||||
char ** argv;
|
||||
|
||||
@@ -333,7 +319,7 @@ static int hb_fsProcessExec( const char *pszFilename,
|
||||
|
||||
hb_vmLock();
|
||||
hb_freeArgs( argv );
|
||||
|
||||
}
|
||||
#else
|
||||
{
|
||||
int TODO; /* TODO: for given platform */
|
||||
@@ -926,10 +912,12 @@ int hb_fsProcessRun( const char * pszFilename,
|
||||
phStdout = pStdOutPtr && pulStdOut ? &hStdout : NULL;
|
||||
phStderr = pStdErrPtr && pulStdErr ? &hStderr : NULL;
|
||||
|
||||
#if defined( HB_OS_DOS ) || defined( HB_OS_OS2 ) /* || defined( HB_OS_WIN_CE ) */
|
||||
#if defined( HB_OS_DOS ) || defined( HB_OS_OS2 ) || defined( HB_OS_WIN_CE )
|
||||
{
|
||||
|
||||
#if defined( HB_OS_UNIX )
|
||||
#if defined( HB_OS_WIN_CE )
|
||||
# define _HB_NULLHANDLE() FS_ERROR
|
||||
#elif defined( HB_OS_UNIX )
|
||||
# define _HB_NULLHANDLE() open( "/dev/null", O_RDWR )
|
||||
#else
|
||||
# define _HB_NULLHANDLE() open( "NUL:", O_RDWR )
|
||||
|
||||
Reference in New Issue
Block a user