void hb_cmdargTEST( void ) { char * pszArg; printf( "INFO: %i\n", hb_cmdargCheck( "INFO" ) ); printf( " F: %s\n", pszArg = hb_cmdargString( "F" ) ); if( pszArg ) hb_xfree( pszArg ); printf( " Fn: %i\n", hb_cmdargNum( "F" ) ); printf( "TEMP: %s\n", pszArg = hb_cmdargString( "TEMP" ) ); if( pszArg ) hb_xfree( pszArg ); printf( "INFO: %i\n", hb_cmdargCheck( "INFO" ) ); printf( " F: %s\n", pszArg = hb_cmdargString( "F" ) ); if( pszArg ) hb_xfree( pszArg ); printf( " Fn: %i\n", hb_cmdargNum( "F" ) ); printf( "TEMP: %s\n", pszArg = hb_cmdargString( "TEMP" ) ); if( pszArg ) hb_xfree( pszArg ); }
/* Check for command line internal arguments */ void hb_cmdargProcess( void ) { int iHandles; if( hb_cmdargCheck( "INFO" ) ) { { char * pszVersion = hb_verHarbour(); hb_conOutErr( pszVersion, 0 ); hb_conOutErr( hb_conNewLine(), 0 ); hb_xfree( pszVersion ); } { char * pszVersion = hb_verPlatform(); hb_conOutErr( pszVersion, 0 ); hb_conOutErr( hb_conNewLine(), 0 ); hb_xfree( pszVersion ); } { char buffer[ 128 ]; #if defined( HB_CLP_STRICT ) hb_snprintf( buffer, sizeof( buffer ), "DS avail=%" HB_PFS "uKB OS avail=%" HB_PFS "uKB EMM avail=%" HB_PFS "uKB", hb_xquery( HB_MEM_BLOCK ), hb_xquery( HB_MEM_VM ), hb_xquery( HB_MEM_EMS ) ); #else hb_snprintf( buffer, sizeof( buffer ), "DS avail=%" HB_PFS "uKB OS avail=%" HB_PFS "uKB EMM avail=%" HB_PFS "uKB MemStat:%s MT:%s", hb_xquery( HB_MEM_BLOCK ), hb_xquery( HB_MEM_VM ), hb_xquery( HB_MEM_EMS ), hb_xquery( HB_MEM_USEDMAX ) ? "On" : "Off", hb_vmIsMt() ? "On" : "Off" ); #endif hb_conOutErr( buffer, 0 ); hb_conOutErr( hb_conNewLine(), 0 ); } } if( hb_cmdargCheck( "BUILD" ) ) hb_verBuildInfo(); iHandles = hb_cmdargNum( "F" ); if( iHandles > 20 ) { #if defined( __WATCOMC__ ) #if defined( HB_OS_OS2 ) DosSetMaxFH( iHandles ); #elif defined( HB_OS_DOS ) _grow_handles( iHandles ); #endif #endif } else if( iHandles < 0 ) { #if defined( __WATCOMC__ ) #if defined( HB_OS_OS2 ) DosSetMaxFH( 256 ); #endif #endif } }
void hb_conInit( void ) { HB_TRACE( HB_TR_DEBUG, ( "hb_conInit()" ) ); #if ! defined( HB_OS_WIN ) /* On Windows file handles with numbers 0, 1, 2 are transalted inside filesys to: GetStdHandle( STD_INPUT_HANDLE ), GetStdHandle( STD_OUTPUT_HANDLE ), GetStdHandle( STD_ERROR_HANDLE ) */ s_hFilenoStdin = fileno( stdin ); s_hFilenoStdout = fileno( stdout ); s_hFilenoStderr = fileno( stderr ); #endif #ifdef HB_CLP_UNDOC { /* Undocumented CA-Cl*pper switch //STDERR:x */ int iStderr = hb_cmdargNum( "STDERR" ); if( iStderr == 0 || iStderr == 1 ) /* //STDERR with no parameter or 0 */ s_hFilenoStderr = s_hFilenoStdout; /* disabled in default builds. It's not multiplatform and very * dangerous because it can redirect error messages to data files * [druzus] */ #ifdef HB_CLP_STRICT else if( iStderr > 0 ) /* //STDERR:x */ s_hFilenoStderr = ( HB_FHANDLE ) iStderr; #endif } #endif /* * Some compilers open stdout and stderr in text mode, but * Harbour needs them to be open in binary mode. */ hb_fsSetDevMode( s_hFilenoStdin, FD_BINARY ); hb_fsSetDevMode( s_hFilenoStdout, FD_BINARY ); hb_fsSetDevMode( s_hFilenoStderr, FD_BINARY ); if( hb_gtInit( s_hFilenoStdin, s_hFilenoStdout, s_hFilenoStderr ) != HB_SUCCESS ) hb_errInternal( 9995, "Harbour terminal (GT) initialization failure", NULL, NULL ); if( hb_cmdargCheck( "INFO" ) ) { hb_conOutErr( hb_gtVersion( 1 ), 0 ); hb_conOutErr( hb_conNewLine(), 0 ); } }