From a352ff57ce98c9ae381446fe21d5d31335efe5c6 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Sat, 20 Feb 2010 14:56:27 +0000 Subject: [PATCH] 2010-02-20 15:55 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * src/rtl/philes.c * include/hbextern.ch + Added HB_CURDRIVE(). Similar to Xbase++ CURDRIVE(), but always provided by Harbour core. * utils/hbmk2/hbmk2.prg - Deleted mapping from hb_CurDrive() to CurDrive(). * examples/httpsrv/uhttpd.prg * examples/httpsrv/modules/tableservletdb.prg * examples/gtwvw/tests/wvwtest9.prg * Changed to use hb_CurDrive() which is always available in Harbour core, instead of Xbase++ specific CurDrive(). --- harbour/ChangeLog | 15 ++ harbour/examples/gtwvw/tests/wvwtest9.prg | 2 +- .../httpsrv/modules/tableservletdb.prg | 2 +- harbour/examples/httpsrv/uhttpd.prg | 8 +- harbour/include/hbextern.ch | 152 +++++++++--------- harbour/src/rtl/philes.c | 36 +++++ harbour/utils/hbmk2/hbmk2.prg | 1 - 7 files changed, 133 insertions(+), 83 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 103279a248..e854028446 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,21 @@ past entries belonging to author(s): Viktor Szakats. */ +2010-02-20 15:55 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) + * src/rtl/philes.c + * include/hbextern.ch + + Added HB_CURDRIVE(). Similar to Xbase++ CURDRIVE(), but + always provided by Harbour core. + + * utils/hbmk2/hbmk2.prg + - Deleted mapping from hb_CurDrive() to CurDrive(). + + * examples/httpsrv/uhttpd.prg + * examples/httpsrv/modules/tableservletdb.prg + * examples/gtwvw/tests/wvwtest9.prg + * Changed to use hb_CurDrive() which is always available in + Harbour core, instead of Xbase++ specific CurDrive(). + 2010-02-20 13:02 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * contrib/Makefile - contrib/xpp diff --git a/harbour/examples/gtwvw/tests/wvwtest9.prg b/harbour/examples/gtwvw/tests/wvwtest9.prg index e466ca745e..8c013323ed 100644 --- a/harbour/examples/gtwvw/tests/wvwtest9.prg +++ b/harbour/examples/gtwvw/tests/wvwtest9.prg @@ -564,7 +564,7 @@ FUNCTION DEMO_Browse() nHScrollBar := wvw_xbCreate( nCurWindow, 0, oBrowse:nBottom+1, oBrowse:nLeft, oBrowse:nRight-oBrowse:nLeft+1, /*aBlock*/ {|nWinNum, nXBid, nXBmsg, nXBpos| HXBscroller(oBrowse, nWinNum, nXBid, nXBmsg)}, /*aOffset*/ NIL) nVScrollBar := wvw_xbCreate( nCurWindow, 1, oBrowse:nTop, oBrowse:nRight+1, oBrowse:nBottom-oBrowse:nTop+1, /*aBlock*/ {|nWinNum, nXBid, nXBmsg, nXBpos| VXBscroller(oBrowse, nWinNum, nXBid, nXBmsg)}, /*aOffset*/ NIL) - DispOutAt( nTop + 1-nTop, nleft-nleft, padc( CurDrive()+':\'+CurDir()+'\'+'test.dbf', nRight - nLeft + 1 ), 'W+/W' ) + DispOutAt( nTop + 1-nTop, nleft-nleft, padc( hb_CurDrive()+':\'+CurDir()+'\'+'test.dbf', nRight - nLeft + 1 ), 'W+/W' ) oBrowse:ForceStable() RefreshHXB(oBrowse, nCurWindow, nHScrollBar) //20040704 diff --git a/harbour/examples/httpsrv/modules/tableservletdb.prg b/harbour/examples/httpsrv/modules/tableservletdb.prg index 6147dfac1e..70300b63bf 100644 --- a/harbour/examples/httpsrv/modules/tableservletdb.prg +++ b/harbour/examples/httpsrv/modules/tableservletdb.prg @@ -157,7 +157,7 @@ RETURN Self METHOD Open() CLASS TableManager LOCAL cDBF := ::cTable - //hb_ToOutDebug( "CurPath = %s", CurDrive() + hb_osDriveSeparator() + HB_OSPathSeparator() + CurDir() ) + //hb_ToOutDebug( "CurPath = %s", hb_CurDrive() + hb_osDriveSeparator() + HB_OSPathSeparator() + CurDir() ) //hb_ToOutDebug( "before: cDBF = %s, Used() = %s\n", cDBF, Used() ) diff --git a/harbour/examples/httpsrv/uhttpd.prg b/harbour/examples/httpsrv/uhttpd.prg index 5bebd2f08c..be92a966bf 100644 --- a/harbour/examples/httpsrv/uhttpd.prg +++ b/harbour/examples/httpsrv/uhttpd.prg @@ -1551,21 +1551,21 @@ STATIC FUNCTION CGIExec( cProc, /*@*/ cOutPut ) // No hIn, hErr == hOut // save current directory - cCurPath := CurDrive() + hb_osDriveSeparator() + HB_OSPathSeparator() + CurDir() + cCurPath := hb_CurDrive() + hb_osDriveSeparator() + HB_OSPathSeparator() + CurDir() //hb_toOutDebug( "cCurPath: %s\n\r", cCurPath ) // Change dir to document root DirChange( s_cDocumentRoot ) - //hb_toOutDebug( "New Path: %s\n\r", CurDrive() + hb_osDriveSeparator() + HB_OSPathSeparator() + CurDir() ) + //hb_toOutDebug( "New Path: %s\n\r", hb_CurDrive() + hb_osDriveSeparator() + HB_OSPathSeparator() + CurDir() ) hProc := hb_processOpen( cProc, @hIn, @hOut, @hOut, .T. ) // .T. = Detached Process (Hide Window) // return to original folder DirChange( cCurPath ) - //hb_toOutDebug( "New 2 Path: %s\n\r", CurDrive() + hb_osDriveSeparator() + HB_OSPathSeparator() + CurDir() ) + //hb_toOutDebug( "New 2 Path: %s\n\r", hb_CurDrive() + hb_osDriveSeparator() + HB_OSPathSeparator() + CurDir() ) IF hProc > -1 //hb_toOutDebug( "Process handler: %s\n\r", hProc ) @@ -2807,7 +2807,7 @@ STATIC FUNCTION Handler_HrbScript( cFileName ) IF !EMPTY( pHRB := HB_HRBLOAD( cHRBBody ) ) // save current directory - cCurPath := CurDrive() + hb_osDriveSeparator() + HB_OSPathSeparator() + CurDir() + cCurPath := hb_CurDrive() + hb_osDriveSeparator() + HB_OSPathSeparator() + CurDir() // Change dir to document root DirChange( s_cDocumentRoot ) diff --git a/harbour/include/hbextern.ch b/harbour/include/hbextern.ch index 69a69c82e9..87425dc67c 100644 --- a/harbour/include/hbextern.ch +++ b/harbour/include/hbextern.ch @@ -866,6 +866,82 @@ EXTERNAL HB_IDLESLEEP EXTERNAL HB_IDLESTATE EXTERNAL HB_RELEASECPU +EXTERNAL HB_AT +EXTERNAL HB_ATI +EXTERNAL HB_RAT +EXTERNAL HB_AINS +EXTERNAL HB_ADEL +EXTERNAL HB_ASCAN +EXTERNAL HB_RASCAN +EXTERNAL HB_ANSITOOEM +EXTERNAL HB_CLRAREA +EXTERNAL HB_COLORTON +EXTERNAL HB_NTOCOLOR +EXTERNAL HB_DISKSPACE +EXTERNAL HB_FCREATE +EXTERNAL HB_FSIZE +EXTERNAL HB_FEOF +EXTERNAL HB_FCOMMIT +EXTERNAL HB_FLOCK +EXTERNAL HB_FUNLOCK +EXTERNAL HB_FTEMPCREATE +EXTERNAL HB_FTEMPCREATEEX +EXTERNAL HB_FCOPY +EXTERNAL HB_FSETATTR +EXTERNAL HB_FGETATTR +EXTERNAL HB_FSETDATETIME +EXTERNAL HB_FGETDATETIME +EXTERNAL HB_FSETDEVMODE +EXTERNAL HB_FISDEVICE +EXTERNAL HB_FILEEXISTS +EXTERNAL HB_DIREXISTS +EXTERNAL HB_FNAMEEXISTS +EXTERNAL HB_FNAMEMERGE +EXTERNAL HB_FNAMESPLIT +EXTERNAL HB_DIRSCAN +EXTERNAL HB_PROCESSOPEN +EXTERNAL HB_PROCESSVALUE +EXTERNAL HB_PROCESSCLOSE +EXTERNAL HB_PROCESSRUN +EXTERNAL HB_GCSTEP +EXTERNAL HB_GCALL +EXTERNAL HB_KEYCLEAR +EXTERNAL HB_KEYPUT +EXTERNAL HB_KEYINS +EXTERNAL HB_OEMTOANSI +EXTERNAL HB_OSERROR +EXTERNAL HB_OSDRIVESEPARATOR +EXTERNAL HB_OSPATHDELIMITERS +EXTERNAL HB_OSPATHLISTSEPARATOR +EXTERNAL HB_OSPATHSEPARATOR +EXTERNAL HB_OSFILEMASK +EXTERNAL HB_SETKEY +EXTERNAL HB_SETKEYARRAY +EXTERNAL HB_SETKEYCHECK +EXTERNAL HB_SETKEYGET +EXTERNAL HB_SETKEYSAVE +EXTERNAL HB_SETLASTKEY +EXTERNAL HB_SHADOW +EXTERNAL HB_TRACELEVEL +EXTERNAL HB_TRACESTATE +EXTERNAL HB_TRACESTRING +EXTERNAL HB_TRACELOGLEVEL +EXTERNAL HB_TRACELOG +EXTERNAL HB_TRACELOGAT +EXTERNAL HB_CSTR +EXTERNAL HB_VALTOEXP +EXTERNAL HB_VALTOSTR +EXTERNAL HB_STRTOEXP +EXTERNAL HB_TOKENCOUNT +EXTERNAL HB_TOKENGET +EXTERNAL HB_TOKENPTR +EXTERNAL HB_ATOKENS +EXTERNAL HB_STRSHRINK +EXTERNAL HB_MEMOREAD +EXTERNAL HB_MEMOWRIT +EXTERNAL HB_NTOS +EXTERNAL HB_MILLISECONDS +EXTERNAL HB_CURDRIVE EXTERNAL HB_OSNEWLINE EXTERNAL HB_OSISWINNT EXTERNAL HB_OSISWINCE @@ -1036,82 +1112,6 @@ EXTERNAL HB_MUTEXSUBSCRIBE EXTERNAL HB_MUTEXSUBSCRIBENOW EXTERNAL HB_MUTEXQUEUEINFO -EXTERNAL HB_AT -EXTERNAL HB_ATI -EXTERNAL HB_RAT -EXTERNAL HB_AINS -EXTERNAL HB_ADEL -EXTERNAL HB_ASCAN -EXTERNAL HB_RASCAN -EXTERNAL HB_ANSITOOEM -EXTERNAL HB_CLRAREA -EXTERNAL HB_COLORTON -EXTERNAL HB_NTOCOLOR -EXTERNAL HB_DISKSPACE -EXTERNAL HB_FCREATE -EXTERNAL HB_FSIZE -EXTERNAL HB_FEOF -EXTERNAL HB_FCOMMIT -EXTERNAL HB_FLOCK -EXTERNAL HB_FUNLOCK -EXTERNAL HB_FTEMPCREATE -EXTERNAL HB_FTEMPCREATEEX -EXTERNAL HB_FCOPY -EXTERNAL HB_FSETATTR -EXTERNAL HB_FGETATTR -EXTERNAL HB_FSETDATETIME -EXTERNAL HB_FGETDATETIME -EXTERNAL HB_FSETDEVMODE -EXTERNAL HB_FISDEVICE -EXTERNAL HB_FILEEXISTS -EXTERNAL HB_DIREXISTS -EXTERNAL HB_FNAMEEXISTS -EXTERNAL HB_FNAMEMERGE -EXTERNAL HB_FNAMESPLIT -EXTERNAL HB_DIRSCAN -EXTERNAL HB_PROCESSOPEN -EXTERNAL HB_PROCESSVALUE -EXTERNAL HB_PROCESSCLOSE -EXTERNAL HB_PROCESSRUN -EXTERNAL HB_GCSTEP -EXTERNAL HB_GCALL -EXTERNAL HB_KEYCLEAR -EXTERNAL HB_KEYPUT -EXTERNAL HB_KEYINS -EXTERNAL HB_OEMTOANSI -EXTERNAL HB_OSERROR -EXTERNAL HB_OSDRIVESEPARATOR -EXTERNAL HB_OSPATHDELIMITERS -EXTERNAL HB_OSPATHLISTSEPARATOR -EXTERNAL HB_OSPATHSEPARATOR -EXTERNAL HB_OSFILEMASK -EXTERNAL HB_SETKEY -EXTERNAL HB_SETKEYARRAY -EXTERNAL HB_SETKEYCHECK -EXTERNAL HB_SETKEYGET -EXTERNAL HB_SETKEYSAVE -EXTERNAL HB_SETLASTKEY -EXTERNAL HB_SHADOW -EXTERNAL HB_TRACELEVEL -EXTERNAL HB_TRACESTATE -EXTERNAL HB_TRACESTRING -EXTERNAL HB_TRACELOGLEVEL -EXTERNAL HB_TRACELOG -EXTERNAL HB_TRACELOGAT -EXTERNAL HB_CSTR -EXTERNAL HB_VALTOEXP -EXTERNAL HB_VALTOSTR -EXTERNAL HB_STRTOEXP -EXTERNAL HB_TOKENCOUNT -EXTERNAL HB_TOKENGET -EXTERNAL HB_TOKENPTR -EXTERNAL HB_ATOKENS -EXTERNAL HB_STRSHRINK -EXTERNAL HB_MEMOREAD -EXTERNAL HB_MEMOWRIT -EXTERNAL HB_NTOS -EXTERNAL HB_MILLISECONDS - EXTERNAL HB_HASH EXTERNAL HB_HHASKEY EXTERNAL HB_HPOS diff --git a/harbour/src/rtl/philes.c b/harbour/src/rtl/philes.c index ddf4e8524d..b2409e34e7 100644 --- a/harbour/src/rtl/philes.c +++ b/harbour/src/rtl/philes.c @@ -284,6 +284,42 @@ HB_FUNC( CURDIR ) hb_retc( szBuffer ); } +HB_FUNC( HB_CURDRIVE ) +{ +#if defined( HB_OS_HAS_DRIVE_LETTER ) + char szCurDrive[ 1 ]; + const char * szDrive; + + szCurDrive[ 0 ] = ( ( char ) hb_fsCurDrv() ) + 'A'; + hb_retclen( szCurDrive, 1 ); + + szDrive = hb_parc( 1 ); + if( szDrive ) + { + int iDrive = -1; + + if( *szDrive >= 'A' && *szDrive <= 'Z' ) + iDrive = *szDrive - 'A'; + else if( *szDrive >= 'a' && *szDrive <= 'z' ) + iDrive = *szDrive - 'a'; + + if( iDrive >= 0 ) + { + while( hb_fsChDrv( iDrive ) != 0 ) + { + HB_USHORT uiAction = hb_errRT_BASE_Ext1( EG_OPEN, 6001, NULL, + HB_ERR_FUNCNAME, 0, EF_CANDEFAULT | EF_CANRETRY, + HB_ERR_ARGS_BASEPARAMS ); + if( uiAction != E_RETRY ) + break; + } + } + } +#else + hb_retc_null(); +#endif +} + HB_FUNC( HB_PROGNAME ) { const char * szBaseName = hb_cmdargARGVN( 0 ); diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index 17d56ccde2..e0026c207b 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -346,7 +346,6 @@ REQUEST hbmk_KEYW #define hb_DirCreate( d ) MakeDir( d ) #define hb_DirDelete( d ) DirRemove( d ) -#define hb_CurDrive() CurDrive() PROCEDURE Main( ... ) LOCAL aArgsIn := hb_AParams()