2009-08-17 19:42 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/source/rtl/hbproces.c
    ! fixed hb_fsProcessRun() (__RUN() and HB_RUN()) in WinCE builds
      to pass application name as 1-st parameters
    + added parameters passing to hb_fsProcessRun() (__RUN() and HB_RUN())
      in WinCE builds - please test.
This commit is contained in:
Przemyslaw Czerpak
2009-08-17 17:42:44 +00:00
parent 868a22ea84
commit 6294c33da5
2 changed files with 61 additions and 10 deletions

View File

@@ -17,6 +17,13 @@
past entries belonging to author(s): Viktor Szakats.
*/
2009-08-17 19:42 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/hbproces.c
! fixed hb_fsProcessRun() (__RUN() and HB_RUN()) in WinCE builds
to pass application name as 1-st parameters
+ added parameters passing to hb_fsProcessRun() (__RUN() and HB_RUN())
in WinCE builds - please test.
2009-08-17 19:27 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* external/sqlite3/Makefile
* external/libhpdf/Makefile

View File

@@ -192,6 +192,49 @@ static void hb_freeArgs( char ** argv )
#endif
#if defined( HB_OS_WIN_CE )
static void hb_getCommand( const char *pszFilename,
LPTSTR * lpAppName, LPTSTR * lpParams )
{
const char * src, * params;
char cQuote = 0;
while( HB_ISSPACE( *pszFilename ) )
++pszFilename;
params = NULL;
src = pszFilename;
while( *src )
{
if( *src == cQuote )
cQuote = 0;
else if( cQuote == 0 )
{
if( *src == '"' )
cQuote = *src;
else if( HB_ISSPACE( *src ) )
{
params = src;
while( HB_ISSPACE( *params ) )
++params;
if( *params == 0 )
params = NULL;
break;
}
}
++src;
}
#if defined( UNICODE )
*lpParams = params ? hb_mbtowc( params ) : NULL;
*lpAppName = hb_mbntowc( pszFilename, ( ULONG ) ( src - pszFilename ) );
#else
*lpParams = params ? hb_strdup( params ) : NULL;
*lpAppName = hb_strndup( pszFilename, ( ULONG ) ( src - pszFilename ) );
#endif
}
#endif
#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,
@@ -203,25 +246,22 @@ static int hb_fsProcessExec( const char *pszFilename,
#if defined( HB_OS_WIN_CE )
{
DWORD dwFlags = 0;
#if defined( UNICODE )
LPWSTR lpCommand = hb_mbtowc( pszFilename );
#else
char * lpCommand = hb_strdup( pszFilename );
#endif
LPTSTR lpAppName, lpParams;
BOOL fError;
HB_SYMBOL_UNUSED( hStdin );
HB_SYMBOL_UNUSED( hStdout );
HB_SYMBOL_UNUSED( hStderr );
hb_getCommand( pszFilename, &lpAppName, &lpParams );
hb_vmUnlock();
fError = ! CreateProcess( NULL, /* lpAppName */
lpCommand, /* lpCommandLine */
fError = ! CreateProcess( lpAppName, /* lpAppName */
lpParams, /* lpCommandLine */
NULL, /* lpProcessAttr */
NULL, /* lpThreadAttr */
FALSE, /* bInheritHandles */
dwFlags, /* dwCreationFlags */
0, /* dwCreationFlags */
NULL, /* lpEnvironment */
NULL, /* lpCurrentDirectory */
NULL, /* lpStartupInfo */
@@ -233,7 +273,11 @@ static int hb_fsProcessExec( const char *pszFilename,
iResult = 0;
}
hb_vmLock();
hb_xfree( lpCommand );
if( lpAppName )
hb_xfree( lpAppName );
if( lpParams )
hb_xfree( lpParams );
}
#elif defined( HB_OS_DOS ) || defined( HB_OS_WIN ) || defined( HB_OS_OS2 ) || \
defined( HB_OS_UNIX )