From 6233f45db9936f7746c7f4ae55b860ed587ba20b Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Wed, 25 Aug 1999 11:05:30 +0000 Subject: [PATCH] 19990825-12:50 GMT+1 --- harbour/ChangeLog | 60 +- harbour/doc/subcodes.txt | 17 +- harbour/include/external.ch | 505 +++++++++------- harbour/source/compiler/harbour.y | 5 +- harbour/source/debug/debugger.prg | 4 +- harbour/source/rdd/dbcmd.c | 54 -- harbour/source/rtl/arrays.c | 5 +- harbour/source/rtl/console.c | 310 +++++----- harbour/source/rtl/copyfile.c | 47 +- harbour/source/rtl/dates.c | 607 +++++++++++--------- harbour/source/rtl/descend.c | 47 +- harbour/source/rtl/filesys.c | 47 +- harbour/source/rtl/hardcr.c | 14 +- harbour/source/rtl/itemapi.c | 162 +++--- harbour/source/rtl/mtran.c | 22 +- harbour/source/rtl/strings.c | 211 ++----- harbour/source/rtl/transfrm.c | 412 ++++++------- harbour/source/runner/stdalone/external.prg | 505 +++++++++------- harbour/source/tools/io.c | 80 +-- 19 files changed, 1642 insertions(+), 1472 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index ca02a876d4..1510bb369a 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,60 @@ +19990825-12:50 GMT+1 Victor Szel + + * source/rdd/dbcmd.c + - Removed symbol init code. + * source/tools/io.c + ! Modified so that it defines each function everytime, not just when + __DOS__ constant is defined. __DOS__ guard was moved around the function + bodies. + ! Removed FILE() function from here, since it's already declared in + Harbour RTL/filesys.c + * include/external.ch + source/runner/stdalone/external.prg + + Updated list of EXTERNAL, now including RDD and HBPP functions. + * source/compiler/harbour.y + ! Compile time parameter checking modified for RTRIM(), TRIM() since we + have a Harbour extension here, which should be allowed, added missing + LEFT() from the compile-time parameter checking list. + * source/rtl/filesys.c + + Added parameter count checking to FILE() + * source/rtl/transfrm.c + + Added parameter count checking to TRANSFORM() + * source/rtl/dates.c + + Added parameter count checking to CTOD(), DTOC(), DAY(), MONTH(), YEAR(), + DOW(). + * Code reformatting, variable scoping, some small optimalizations. + * source/rtl/strings.c + doc/subcodes.txt + * Some pcount() checkings converted to IS*() macros in PAD*(), *TRIM(). + * RTRIM(), TRIM() will now consider more than two parameters as an error. + - Removed parameter count checking from RIGHT(). + + NOTE: added about RTRIM(), TRIM(), ALLTRIM() Harbour extension. + % Simplified checking code for LEFT() and RIGHT() + ! LEFT(),STRTRAN() are no longer launching custom Harbour error codes + 3009/3010, this was not compatible, Clipper launches a standard error + code here. + * AT() parameter checking standardized. + * source/rtl/itemapi.c + * hb_itemGetL() and hb_itemGetNL() made consistent with the recent changes + in hb_parl() and hb_parnl(). + * Some code reformatting, some casts added, some branch and retval + optimalization. 0 -> NULL, '\0' + * source/debug/debugger.prg + * SHADOW() -> __SHADOW() + * source/rtl/console.c + - SHADOW() changed to __SHADOW() since it's not a std Clipper function. + ! SETCURSOR() is returning SC_NORMAL if there's no GT API. + * Some reformatting, some small optimalizations, added some copyright + info. + + Parameter count error added to DEVPOS(), SETPOS(), PROW(), PCOL(), + COL(), ROW() + * source/rtl/copyfile.c ( #include "itemapi.h" removed ) + source/rtl/hardcr.c + source/rtl/mtran.c + source/rtl/arrays.c ( 0 -> NULL ) + source/rtl/descend.c ( hb_pcount() call removed ) + * Reformatting. Small cleanup. Some small optimalizations. + 19990825-09:02 GMT+1 Antonio Linares * source/debug/tbrwtext.prg * Improved display functionality. @@ -73,6 +130,7 @@ WITH PARAMETERS PASSED BY REFERENCE, PLEASE ALSO NOTE THAT FRead() IS NOT WORKING RIGHT NOW ) + * source/rtl/filesys.c doc/subcodes.txt * Huge cleanup, reformatted, eliminated usage of internal structures, fixed types, standardized variable names, explicit constants changed @@ -111,7 +169,7 @@ decimals now are only accessed for DOUBLE types (and of course only set for DOUBLE return types). The bug could be observed by running AC_TEST pressing PgDn at the bottom of the list then pressing Up button, the - index display was shown with decimals in it. + index display was shown with decimals in it (DOS/DJGPP). % MIN(), MAX() code optimalized. * Some direct hb_param() calls changed to macros. diff --git a/harbour/doc/subcodes.txt b/harbour/doc/subcodes.txt index debd2cb3c8..d1e7c19049 100644 --- a/harbour/doc/subcodes.txt +++ b/harbour/doc/subcodes.txt @@ -684,7 +684,6 @@ start from 3000 * $STATUS$ * Clipper * $SEEALSO$ - * BASE/3009 * $END$ */ @@ -1212,7 +1211,6 @@ start from 3000 * $STATUS$ * Harbour specific * $SEEALSO$ - * * $END$ */ @@ -1220,17 +1218,12 @@ start from 3000 * $SUBCODE$ * BASE/3009 * $CATEGORY$ - * arguments + * (not used yet) * $ONELINER$ - * Incorrect type of argument * $DESCRIPTION$ - * The second argument is not a numeric value. * $FUNCTION$ - * LEFT * $STATUS$ - * Harbour specific * $SEEALSO$ - * * $END$ */ @@ -1238,15 +1231,11 @@ start from 3000 * $SUBCODE$ * BASE/3010 * $CATEGORY$ - * arguments + * (not used yet) * $ONELINER$ - * Invalid argument passed to a function * $DESCRIPTION$ - * The second arguments passed to a function is not a string. * $FUNCTION$ - * STRTRAN * $STATUS$ - * Harbour specific * $SEEALSO$ * * $END$ @@ -1254,7 +1243,7 @@ start from 3000 /* $DOC$ * $SUBCODE$ - * BASE/3010 + * BASE/3011 * $CATEGORY$ * arguments * $ONELINER$ diff --git a/harbour/include/external.ch b/harbour/include/external.ch index f20b65d0b1..ebdf59d3cc 100644 --- a/harbour/include/external.ch +++ b/harbour/include/external.ch @@ -33,11 +33,16 @@ their web site at http://www.gnu.org/). */ -// // Files from: vm // // -//symbols from file: vm/hvm.c +//symbols from file: vm\dynsym.c +// +EXTERNAL __DYNSCOUNT +EXTERNAL __DYNSGETNAME +EXTERNAL __DYNSGETINDEX +// +//symbols from file: vm\hvm.c // EXTERNAL ERRORSYS EXTERNAL ERRORNEW @@ -52,50 +57,30 @@ EXTERNAL __QUIT EXTERNAL ERRORLEVEL EXTERNAL PCOUNT EXTERNAL PVALUE +EXTERNAL BREAK // -//symbols from file: vm/dynsym.c -// -EXTERNAL __DYNSCOUNT -EXTERNAL __DYNSGETNAME -EXTERNAL __DYNSGETINDEX -// -//symbols from file: vm/initsymb.c +//symbols from file: vm\initsymb.c // //------------------------------------------------------------ // Files from: rtl // // -//symbols from file: rtl/arrays.c +//symbols from file: rtl\arrays.c // -EXTERNAL AADD -EXTERNAL ACLONE -EXTERNAL ACOPY -EXTERNAL ADEL -EXTERNAL AEVAL -EXTERNAL AFILL -EXTERNAL AINS EXTERNAL ARRAY -EXTERNAL ASCAN +EXTERNAL AADD EXTERNAL ASIZE -EXTERNAL ASORT EXTERNAL ATAIL +EXTERNAL AINS +EXTERNAL ADEL +EXTERNAL AFILL +EXTERNAL ASCAN +EXTERNAL AEVAL +EXTERNAL ACOPY +EXTERNAL ACLONE // -//symbols from file: rtl/classes.c +//symbols from file: rtl\classes.c // -EXTERNAL __CLSNEW -EXTERNAL __CLSINST -EXTERNAL __CLSINSTSUPER -EXTERNAL __CLSADDMSG -EXTERNAL __CLSDELMSG -EXTERNAL __CLSMODMSG -EXTERNAL __CLS_CNTCLSDATA -EXTERNAL __CLS_CNTDATA -EXTERNAL __CLS_DECDATA -EXTERNAL __CLS_INCDATA -EXTERNAL __OBJGETCLSNAME -EXTERNAL __OBJCLONE -EXTERNAL __OBJHASMSG -EXTERNAL __OBJSENDMSG EXTERNAL __OBJGETMSGLIST EXTERNAL __OBJGETMETHODLIST EXTERNAL __OBJGETVALUELIST @@ -110,139 +95,152 @@ EXTERNAL __OBJDELINLINE EXTERNAL __OBJDELMETHOD EXTERNAL __OBJMODINLINE EXTERNAL __OBJMODMETHOD +EXTERNAL __CLSADDMSG +EXTERNAL __CLSNEW +EXTERNAL __CLSDELMSG +EXTERNAL __CLSINST +EXTERNAL __CLSMODMSG +EXTERNAL __OBJGETCLSNAME +EXTERNAL __OBJHASMSG +EXTERNAL __OBJCLONE +EXTERNAL __OBJSENDMSG +EXTERNAL __CLSINSTSUPER +EXTERNAL __CLS_CNTCLSDATA +EXTERNAL __CLS_CNTDATA +EXTERNAL __CLS_DECDATA +EXTERNAL __CLS_INCDATA // -//symbols from file: rtl/codebloc.c +//symbols from file: rtl\codebloc.c // // -//symbols from file: rtl/console.c +//symbols from file: rtl\console.c // -EXTERNAL __ACCEPT -EXTERNAL __EJECT -EXTERNAL COL -EXTERNAL ROW -EXTERNAL DBGSHADOW -EXTERNAL DEVOUT -EXTERNAL DEVOUTPICT -EXTERNAL DEVPOS -EXTERNAL DISPBEGIN -EXTERNAL DISPBOX -EXTERNAL DISPCOUNT -EXTERNAL DISPEND -EXTERNAL DISPOUT -EXTERNAL ISCOLOR -EXTERNAL MAXCOL -EXTERNAL MAXROW -EXTERNAL NOSNOW EXTERNAL OUTSTD EXTERNAL OUTERR -EXTERNAL PCOL +EXTERNAL QQOUT +EXTERNAL QOUT +EXTERNAL SETPOS +EXTERNAL DEVPOS +EXTERNAL DEVOUT +EXTERNAL DISPOUT +EXTERNAL __EJECT EXTERNAL PROW -EXTERNAL RESTSCREEN +EXTERNAL PCOL +EXTERNAL SETPRC EXTERNAL SCROLL +EXTERNAL MAXROW +EXTERNAL MAXCOL +EXTERNAL ROW +EXTERNAL COL +EXTERNAL DISPBOX +EXTERNAL DISPBEGIN +EXTERNAL DISPEND +EXTERNAL DISPCOUNT +EXTERNAL ISCOLOR +EXTERNAL NOSNOW +EXTERNAL __SHADOW +EXTERNAL DBGSHADOW EXTERNAL SAVESCREEN +EXTERNAL RESTSCREEN EXTERNAL SETCURSOR EXTERNAL SETBLINK -EXTERNAL SETPOS -EXTERNAL SETPRC -EXTERNAL SHADOW -EXTERNAL QOUT -EXTERNAL QQOUT +EXTERNAL __ACCEPT EXTERNAL __COLORINDEX // -//symbols from file: rtl/copyfile.c +//symbols from file: rtl\copyfile.c // EXTERNAL __COPYFILE // -//symbols from file: rtl/dates.c +//symbols from file: rtl\dates.c // -EXTERNAL CDOW -EXTERNAL CMONTH EXTERNAL CTOD -EXTERNAL DATE -EXTERNAL DAY -EXTERNAL DOW EXTERNAL DTOC EXTERNAL DTOS -EXTERNAL MONTH -EXTERNAL SECONDS EXTERNAL STOD -EXTERNAL TIME +EXTERNAL DAY +EXTERNAL MONTH EXTERNAL YEAR +EXTERNAL TIME +EXTERNAL DATE +EXTERNAL DOW +EXTERNAL CMONTH +EXTERNAL CDOW +EXTERNAL SECONDS // -//symbols from file: rtl/descend.c +//symbols from file: rtl\descend.c // EXTERNAL DESCEND // -//symbols from file: rtl/dir.c +//symbols from file: rtl\dir.c // EXTERNAL DIRECTORY // -//symbols from file: rtl/do.c +//symbols from file: rtl\do.c // EXTERNAL DO // -//symbols from file: rtl/environ.c +//symbols from file: rtl\environ.c // -EXTERNAL __RUN -EXTERNAL GETENV EXTERNAL OS EXTERNAL VERSION +EXTERNAL GETENV +EXTERNAL __RUN // -//symbols from file: rtl/errorapi.c +//symbols from file: rtl\errorapi.c // EXTERNAL __ERRRT_BASE // -//symbols from file: rtl/extend.c +//symbols from file: rtl\extend.c // // -//symbols from file: rtl/filesys.c +//symbols from file: rtl\filesys.c // +EXTERNAL FOPEN +EXTERNAL FCREATE +EXTERNAL FREAD +EXTERNAL FWRITE +EXTERNAL FERROR +EXTERNAL FCLOSE +EXTERNAL FERASE +EXTERNAL FRENAME +EXTERNAL FSEEK +EXTERNAL FILE +EXTERNAL FREADSTR +EXTERNAL CURDIR EXTERNAL BIN2I EXTERNAL BIN2L EXTERNAL BIN2W -EXTERNAL FCLOSE -EXTERNAL FCREATE -EXTERNAL FERASE -EXTERNAL FERROR -EXTERNAL FILE -EXTERNAL FOPEN -EXTERNAL FREAD -EXTERNAL FREADSTR -EXTERNAL FRENAME -EXTERNAL FSEEK -EXTERNAL FWRITE -EXTERNAL CURDIR EXTERNAL I2BIN EXTERNAL L2BIN EXTERNAL W2BIN // -//symbols from file: rtl/fm.c +//symbols from file: rtl\fm.c // // -//symbols from file: rtl/gtapi.c +//symbols from file: rtl\gtapi.c // // -//symbols from file: rtl/gtxxx.c +//symbols from file: rtl\gtxxx.c // // -//symbols from file: rtl/hardcr.c +//symbols from file: rtl\hardcr.c // EXTERNAL HARDCR // -//symbols from file: rtl/inkey.c +//symbols from file: rtl\inkey.c // -EXTERNAL __KEYBOARD EXTERNAL INKEY -EXTERNAL LASTKEY +EXTERNAL __KEYBOARD EXTERNAL NEXTKEY +EXTERNAL LASTKEY // -//symbols from file: rtl/itemapi.c +//symbols from file: rtl\itemapi.c // // -//symbols from file: rtl/langapi.c +//symbols from file: rtl\langapi.c // // -//symbols from file: rtl/math.c +//symbols from file: rtl\math.c // EXTERNAL ABS EXTERNAL EXP @@ -254,7 +252,7 @@ EXTERNAL MOD EXTERNAL ROUND EXTERNAL SQRT // -//symbols from file: rtl/memvars.c +//symbols from file: rtl\memvars.c // EXTERNAL __MVPUBLIC EXTERNAL __MVPRIVATE @@ -263,192 +261,295 @@ EXTERNAL __MVRELEASE EXTERNAL __MVSCOPE EXTERNAL __MVCLEAR // -//symbols from file: rtl/msgxxx.c +//symbols from file: rtl\msgxxx.c // // -//symbols from file: rtl/mtran.c +//symbols from file: rtl\mtran.c // EXTERNAL MEMOTRAN // -//symbols from file: rtl/set.c +//symbols from file: rtl\set.c // -EXTERNAL SET EXTERNAL __SETCENTURY +EXTERNAL SET // -//symbols from file: rtl/setcolor.c +//symbols from file: rtl\setcolor.c // EXTERNAL SETCOLOR EXTERNAL COLORSELECT // -//symbols from file: rtl/strings.c +//symbols from file: rtl\strings.c // -EXTERNAL ALLTRIM -EXTERNAL ASC -EXTERNAL AT -EXTERNAL CHR EXTERNAL ISALPHA EXTERNAL ISDIGIT EXTERNAL ISUPPER EXTERNAL ISLOWER -EXTERNAL LEFT -EXTERNAL LOWER EXTERNAL LTRIM -EXTERNAL PAD -EXTERNAL PADC -EXTERNAL PADL -EXTERNAL PADR -EXTERNAL RAT -EXTERNAL REPLICATE -EXTERNAL RIGHT EXTERNAL RTRIM -EXTERNAL SPACE -EXTERNAL STR -EXTERNAL STRTRAN -EXTERNAL STUFF -EXTERNAL SUBSTR EXTERNAL TRIM +EXTERNAL ALLTRIM +EXTERNAL PADR +EXTERNAL PAD +EXTERNAL PADL +EXTERNAL PADC +EXTERNAL AT +EXTERNAL RAT +EXTERNAL CHR +EXTERNAL ASC +EXTERNAL LEFT +EXTERNAL RIGHT +EXTERNAL SUBSTR +EXTERNAL LOWER EXTERNAL UPPER +EXTERNAL REPLICATE +EXTERNAL SPACE +EXTERNAL STUFF +EXTERNAL STRTRAN EXTERNAL VAL +EXTERNAL STR +EXTERNAL STRZERO // -//symbols from file: rtl/transfrm.c -// -EXTERNAL TRANSFORM -// -//symbols from file: rtl/tone.c +//symbols from file: rtl\tone.c // EXTERNAL TONE // -//symbols from file: rtl/achoice.prg +//symbols from file: rtl\transfrm.c +// +EXTERNAL TRANSFORM +// +//symbols from file: rtl\achoice.prg // EXTERNAL ACHOICE // -//symbols from file: rtl/adir.prg +//symbols from file: rtl\adir.prg // EXTERNAL ADIR // -//symbols from file: rtl/alert.prg +//symbols from file: rtl\alert.prg // EXTERNAL ALERT // -//symbols from file: rtl/asort.prg +//symbols from file: rtl\asort.prg +// +EXTERNAL ASORT +// +//symbols from file: rtl\browdb.prg +// +EXTERNAL TBROWSEDB +// +//symbols from file: rtl\devoutp.prg +// +EXTERNAL DEVOUTPICT +// +//symbols from file: rtl\errorsys.prg // // -//symbols from file: rtl/devoutp.prg -// -// -//symbols from file: rtl/terror.prg -// -// -//symbols from file: rtl/errorsys.prg -// -// -//symbols from file: rtl/menuto.prg +//symbols from file: rtl\menuto.prg // EXTERNAL __ATPROMPT EXTERNAL __MENUTO // -//symbols from file: rtl/objfunc.prg +//symbols from file: rtl\objfunc.prg // // -//symbols from file: rtl/readvar.prg +//symbols from file: rtl\readvar.prg // EXTERNAL READVAR // -//symbols from file: rtl/setkey.prg +//symbols from file: rtl\setkey.prg // EXTERNAL SETKEY EXTERNAL SETKEYGET EXTERNAL SETKEYSAVE EXTERNAL SETKEYCHECK // -//symbols from file: rtl/tclass.prg +//symbols from file: rtl\tbcolumn.prg +// +EXTERNAL TBCOLUMNNEW +// +//symbols from file: rtl\tbrowse.prg +// +EXTERNAL TBROWSENEW +// +//symbols from file: rtl\tclass.prg // EXTERNAL TCLASS // -//symbols from file: rtl/tget.prg +//symbols from file: rtl\terror.prg +// +// +//symbols from file: rtl\tget.prg // EXTERNAL GETNEW EXTERNAL _GET_ // -//symbols from file: rtl/tgetlist.prg +//symbols from file: rtl\tgetlist.prg // EXTERNAL READMODAL // -//symbols from file: rtl/tbcolumn.prg -// -EXTERNAL TBCOLUMNNEW -// -//symbols from file: rtl/tbrowse.prg -// -EXTERNAL TBROWSENEW -// -//symbols from file: rtl/xsavescr.prg +//symbols from file: rtl\xsavescr.prg // EXTERNAL __XSAVESCREEN EXTERNAL __XRESTSCREEN +//------------------------------------------------------------ +// Files from: rdd // -//symbols from file: rtl/browdb.prg // -EXTERNAL TBROWSEDB +//symbols from file: rdd\dbcmd.c +// +EXTERNAL DBF +EXTERNAL SDF +EXTERNAL DELIM +EXTERNAL RDDSYS +EXTERNAL AFIELDS +EXTERNAL ALIAS +EXTERNAL BOF +EXTERNAL DBCLOSEALL +EXTERNAL DBCLOSEAREA +EXTERNAL DBCOMMIT +EXTERNAL DBCREATE +EXTERNAL DBDELETE +EXTERNAL DBGOBOTTOM +EXTERNAL DBGOTO +EXTERNAL DBGOTOP +EXTERNAL DBRECALL +EXTERNAL DBRLOCK +EXTERNAL DBRLOCKLIST +EXTERNAL DBRUNLOCK +EXTERNAL DBSELECTAREA +EXTERNAL DBSETDRIVER +EXTERNAL DBSKIP +EXTERNAL DBSTRUCT +EXTERNAL DBTABLEEXT +EXTERNAL DBUNLOCK +EXTERNAL DBUNLOCKALL +EXTERNAL DBUSEAREA +EXTERNAL DELETED +EXTERNAL EOF +EXTERNAL FCOUNT +EXTERNAL FIELDGET +EXTERNAL FIELDNAME +EXTERNAL FIELDPOS +EXTERNAL FIELDPUT +EXTERNAL FLOCK +EXTERNAL FOUND +EXTERNAL HEADER +EXTERNAL LASTREC +EXTERNAL LUPDATE +EXTERNAL NETERR +EXTERNAL RDDLIST +EXTERNAL RDDNAME +EXTERNAL RDDREGISTER +EXTERNAL RDDSETDEFAULT +EXTERNAL RDDSHUTDOWN +EXTERNAL RECCOUNT +EXTERNAL RECNO +EXTERNAL RECSIZE +EXTERNAL RLOCK +EXTERNAL SELECT +EXTERNAL USED +// +//symbols from file: rdd\dbf1.c +// +EXTERNAL _DBF +EXTERNAL DBF_GETFUNCTABLE +// +//symbols from file: rdd\delim1.c +// +EXTERNAL _DELIM +EXTERNAL DELIM_GETFUNCTABLE +// +//symbols from file: rdd\sdf1.c +// +EXTERNAL _SDF +EXTERNAL SDF_GETFUNCTABLE +// +//symbols from file: rdd\dbf0.prg +// +// +//symbols from file: rdd\delim0.prg +// +// +//symbols from file: rdd\rddsys.prg +// +// +//symbols from file: rdd\sdf0.prg +// +//------------------------------------------------------------ +// Files from: hbpp +// +// +//symbols from file: hbpp\hbpp.c +// +// +//symbols from file: hbpp\hbppint.c +// +// +//symbols from file: hbpp\hbpplib.c +// +EXTERNAL __PREPROCESS +// +//symbols from file: hbpp\table.c +// //------------------------------------------------------------ // Files from: tools // // -//symbols from file: tools/asciisum.c +//symbols from file: tools\asciisum.c // EXTERNAL GT_ASCIISUM // -//symbols from file: tools/ascpos.c +//symbols from file: tools\ascpos.c // EXTERNAL GT_ASCPOS // -//symbols from file: tools/atdiff.c +//symbols from file: tools\atdiff.c // EXTERNAL GT_ATDIFF // -//symbols from file: tools/chareven.c +//symbols from file: tools\chareven.c // EXTERNAL GT_CHAREVEN // -//symbols from file: tools/charmix.c +//symbols from file: tools\charmix.c // EXTERNAL GT_CHARMIX // -//symbols from file: tools/charodd.c +//symbols from file: tools\charodd.c // EXTERNAL GT_CHARODD // -//symbols from file: tools/chrcount.c +//symbols from file: tools\chrcount.c // EXTERNAL GT_CHRCOUNT // -//symbols from file: tools/chrfirst.c +//symbols from file: tools\chrfirst.c // EXTERNAL GT_CHRFIRST // -//symbols from file: tools/chrtotal.c +//symbols from file: tools\chrtotal.c // EXTERNAL GT_CHRTOTAL // -//symbols from file: tools/dates2.c +//symbols from file: tools\dates2.c // -EXTERNAL ADAYS EXTERNAL AMONTHS -EXTERNAL BOM -EXTERNAL BOY -EXTERNAL DAYSINMONTH -EXTERNAL DOY -EXTERNAL EOM -EXTERNAL EOY +EXTERNAL ADAYS EXTERNAL ISLEAPYEAR +EXTERNAL DAYSINMONTH +EXTERNAL EOM +EXTERNAL BOM EXTERNAL WOM +EXTERNAL DOY EXTERNAL WOY +EXTERNAL EOY +EXTERNAL BOY // -//symbols from file: tools/datesx.c +//symbols from file: tools\datesx.c // EXTERNAL DATETIME // -//symbols from file: tools/debug.c +//symbols from file: tools\debug.c // EXTERNAL __ASTATIC EXTERNAL __STATIC @@ -458,7 +559,7 @@ EXTERNAL __STACKLEN EXTERNAL __ASTACK EXTERNAL __APARAM // -//symbols from file: tools/hb_f.c +//symbols from file: tools\hb_f.c // EXTERNAL HB_FUSE EXTERNAL HB_FRECNO @@ -471,11 +572,17 @@ EXTERNAL HB_FGOTOP EXTERNAL HB_FLASTREC EXTERNAL HB_FSELECT // -//symbols from file: tools/io.c +//symbols from file: tools\io.c // -//removed manually +EXTERNAL RENFILE +EXTERNAL CD +EXTERNAL MD +EXTERNAL RD +EXTERNAL DISKUSED +EXTERNAL DISKFREE +EXTERNAL DISKFULL // -//symbols from file: tools/mathx.c +//symbols from file: tools\mathx.c // EXTERNAL ACOS EXTERNAL ASIN @@ -489,60 +596,60 @@ EXTERNAL TAN EXTERNAL TANH EXTERNAL PI // -//symbols from file: tools/strasint.c +//symbols from file: tools\strasint.c // // -//symbols from file: tools/strcount.c +//symbols from file: tools\strcount.c // EXTERNAL GT_STRCOUNT // -//symbols from file: tools/strcspn.c +//symbols from file: tools\strcspn.c // EXTERNAL GT_STRCSPN // -//symbols from file: tools/strdiff.c +//symbols from file: tools\strdiff.c // EXTERNAL GT_STRDIFF // -//symbols from file: tools/strexpan.c +//symbols from file: tools\strexpan.c // EXTERNAL GT_STREXPAND // -//symbols from file: tools/strfmt.c +//symbols from file: tools\strfmt.c // EXTERNAL STRFORMAT // -//symbols from file: tools/stringsx.c +//symbols from file: tools\stringsx.c // EXTERNAL STRTOKEN EXTERNAL STRDUMP EXTERNAL ROT13 // -//symbols from file: tools/strleft.c +//symbols from file: tools\strleft.c // EXTERNAL GT_STRLEFT // -//symbols from file: tools/strpbrk.c +//symbols from file: tools\strpbrk.c // EXTERNAL GT_STRPBRK // -//symbols from file: tools/strright.c +//symbols from file: tools\strright.c // EXTERNAL GT_STRRIGHT // -//symbols from file: tools/fileread.prg +//symbols from file: tools\fileread.prg // EXTERNAL TFILEREAD // -//symbols from file: tools/numtxten.prg +//symbols from file: tools\numtxten.prg // EXTERNAL NUMTOTXTEN // -//symbols from file: tools/numtxthu.prg +//symbols from file: tools\numtxthu.prg // EXTERNAL NUMTOTXTHU // -//symbols from file: tools/stringp.prg +//symbols from file: tools\stringp.prg // EXTERNAL DEFAULT EXTERNAL TOCHAR diff --git a/harbour/source/compiler/harbour.y b/harbour/source/compiler/harbour.y index 84e1e242c4..fba3e7e159 100644 --- a/harbour/source/compiler/harbour.y +++ b/harbour/source/compiler/harbour.y @@ -5843,6 +5843,7 @@ static FUNCINFO _StdFun[] = { { "INKEY" , 0, 2 }, { "INT" , 1, 1 }, { "LASTREC" , 0, 0 }, +{ "LEFT" , 2, 2 }, { "LEN" , 1, 1 }, { "LOG" , 1, 1 }, { "LOWER" , 1, 1 }, @@ -5859,7 +5860,7 @@ static FUNCINFO _StdFun[] = { { "RLOCK" , 0, 0 }, { "ROUND" , 2, 2 }, { "ROW" , 0, 0 }, -{ "RTRIM" , 1, 1 }, +{ "RTRIM" , 1, 2 }, /* Second parameter is a Harbour extension */ { "SECONDS" , 0, 0 }, { "SELECT" , 0, 1 }, { "SETPOS" , 2, 2 }, @@ -5869,7 +5870,7 @@ static FUNCINFO _StdFun[] = { { "SUBSTR" , 2, 3 }, { "TIME" , 0, 0 }, { "TRANSFORM" , 2, 2 }, -{ "TRIM" , 1, 1 }, +{ "TRIM" , 1, 2 }, /* Second parameter is a Harbour extension */ { "TYPE" , 1, 1 }, { "UPPER" , 1, 1 }, { "VAL" , 1, 1 }, diff --git a/harbour/source/debug/debugger.prg b/harbour/source/debug/debugger.prg index a30a75ae02..c408f069cb 100644 --- a/harbour/source/debug/debugger.prg +++ b/harbour/source/debug/debugger.prg @@ -327,7 +327,7 @@ METHOD InputBox( cMsg, uValue ) CLASS TDebugger @ nTop, nLeft, nBottom, nRight BOX B_SINGLE COLOR ::oPullDown:cClrPopup @ nTop, nLeft + ( ( nRight - nLeft ) ) / 2 - Len( cMsg ) / 2 SAY ; cMsg COLOR ::oPullDown:cClrPopup - Shadow( nTop, nLeft, nBottom, nRight ) + __Shadow( nTop, nLeft, nBottom, nRight ) @ nTop + 1, nLeft + 1 GET uTemp nOldCursor = SetCursor( 1 ) @@ -653,7 +653,7 @@ METHOD Display() CLASS TDbMenu else ::cBackImage = SaveScreen( ::nTop, ::nLeft, ::nBottom + 1, ::nRight + 1 ) @ ::nTop, ::nLeft, ::nBottom, ::nRight BOX B_SINGLE - Shadow( ::nTop, ::nLeft, ::nBottom, ::nRight ) + __Shadow( ::nTop, ::nLeft, ::nBottom, ::nRight ) endif for n = 1 to Len( ::aItems ) diff --git a/harbour/source/rdd/dbcmd.c b/harbour/source/rdd/dbcmd.c index 49a248e0eb..5584482af9 100644 --- a/harbour/source/rdd/dbcmd.c +++ b/harbour/source/rdd/dbcmd.c @@ -25,7 +25,6 @@ #include #include "extend.h" #include "itemapi.h" -#include "init.h" #include "errorapi.h" #include "rddapi.h" #include "set.h" @@ -110,59 +109,6 @@ HARBOUR HB_RLOCK( void ); HARBOUR HB_SELECT( void ); HARBOUR HB_USED( void ); -HB_INIT_SYMBOLS_BEGIN( dbCmd__InitSymbols ) -{ "AFIELDS", FS_PUBLIC, HB_AFIELDS, 0 }, -{ "ALIAS", FS_PUBLIC, HB_ALIAS, 0 }, -{ "BOF", FS_PUBLIC, HB_BOF, 0 }, -{ "DBCLOSEALL", FS_PUBLIC, HB_DBCLOSEALL, 0 }, -{ "DBCLOSEAREA", FS_PUBLIC, HB_DBCLOSEAREA, 0 }, -{ "DBCOMMIT", FS_PUBLIC, HB_DBCOMMIT, 0 }, -{ "DBCREATE", FS_PUBLIC, HB_DBCREATE, 0 }, -{ "DBDELETE", FS_PUBLIC, HB_DBDELETE, 0 }, -{ "DBGOBOTTOM", FS_PUBLIC, HB_DBGOBOTTOM, 0 }, -{ "DBGOTO", FS_PUBLIC, HB_DBGOTO, 0 }, -{ "DBGOTOP", FS_PUBLIC, HB_DBGOTOP, 0 }, -{ "DBRECALL", FS_PUBLIC, HB_DBRECALL, 0 }, -{ "DBRLOCK", FS_PUBLIC, HB_DBRLOCK, 0 }, -{ "DBRLOCKLIST", FS_PUBLIC, HB_DBRLOCKLIST, 0 }, -{ "DBRUNLOCK", FS_PUBLIC, HB_DBRUNLOCK, 0 }, -{ "DBSELECTAREA", FS_PUBLIC, HB_DBSELECTAREA, 0 }, -{ "DBSETDRIVER", FS_PUBLIC, HB_DBSETDRIVER, 0 }, -{ "DBSKIP", FS_PUBLIC, HB_DBSKIP, 0 }, -{ "DBSTRUCT", FS_PUBLIC, HB_DBSTRUCT, 0 }, -{ "DBTABLEEXT", FS_PUBLIC, HB_DBTABLEEXT, 0 }, -{ "DBUNLOCK", FS_PUBLIC, HB_DBUNLOCK, 0 }, -{ "DBUNLOCKALL", FS_PUBLIC, HB_DBUNLOCKALL, 0 }, -{ "DBUSEAREA", FS_PUBLIC, HB_DBUSEAREA, 0 }, -{ "DELETED", FS_PUBLIC, HB_DELETED, 0 }, -{ "EOF", FS_PUBLIC, HB_EOF, 0 }, -{ "FCOUNT", FS_PUBLIC, HB_FCOUNT, 0 }, -{ "FIELDGET", FS_PUBLIC, HB_FIELDGET, 0 }, -{ "FIELDNAME", FS_PUBLIC, HB_FIELDNAME, 0 }, -{ "FIELDPOS", FS_PUBLIC, HB_FIELDPOS, 0 }, -{ "FIELDPUT", FS_PUBLIC, HB_FIELDPUT, 0 }, -{ "FLOCK", FS_PUBLIC, HB_FLOCK, 0 }, -{ "FOUND", FS_PUBLIC, HB_FOUND, 0 }, -{ "HEADER", FS_PUBLIC, HB_HEADER, 0 }, -{ "LASTREC", FS_PUBLIC, HB_LASTREC, 0 }, -{ "LUPDATE", FS_PUBLIC, HB_LUPDATE, 0 }, -{ "NETERR", FS_PUBLIC, HB_NETERR, 0 }, -{ "RDDLIST", FS_PUBLIC, HB_RDDLIST, 0 }, -{ "RDDNAME", FS_PUBLIC, HB_RDDNAME, 0 }, -{ "RDDREGISTER", FS_PUBLIC, HB_RDDREGISTER, 0 }, -{ "RDDSETDEFAULT", FS_PUBLIC, HB_RDDSETDEFAULT, 0 }, -{ "RDDSHUTDOWN", FS_PUBLIC, HB_RDDSHUTDOWN, 0 }, -{ "RECCOUNT", FS_PUBLIC, HB_RECCOUNT, 0 }, -{ "RECNO", FS_PUBLIC, HB_RECNO, 0 }, -{ "RECSIZE", FS_PUBLIC, HB_RECSIZE, 0 }, -{ "RLOCK", FS_PUBLIC, HB_RLOCK, 0 }, -{ "SELECT", FS_PUBLIC, HB_SELECT, 0 }, -{ "USED", FS_PUBLIC, HB_USED, 0 } -HB_INIT_SYMBOLS_END( dbCmd__InitSymbols ) -#if ! defined(__GNUC__) -#pragma startup dbCmd__InitSymbols -#endif - static char * szDefDriver = 0; /* Default RDD name */ static USHORT uiCurrArea = 1; /* Selectd area */ static LPRDDNODE pRddList = 0; /* Registered RDD's */ diff --git a/harbour/source/rtl/arrays.c b/harbour/source/rtl/arrays.c index 9b03fa35df..9a29986ca1 100644 --- a/harbour/source/rtl/arrays.c +++ b/harbour/source/rtl/arrays.c @@ -582,7 +582,7 @@ void hb_arrayCopy( PHB_ITEM pSrcArray, PHB_ITEM pDstArray, ULONG ulStart, PHB_ITEM hb_arrayClone( PHB_ITEM pSrcArray ) { - PHB_ITEM pDstArray = hb_itemNew( 0 ); + PHB_ITEM pDstArray = hb_itemNew( NULL ); if( IS_ARRAY( pSrcArray ) ) { @@ -671,8 +671,7 @@ HARBOUR HB_AADD( void ) hb_errRT_BASE( EG_ARG, 1123, NULL, "AADD" ); } else - /* NOTE: Clipper catches this at compile time! */ - hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "AADD" ); + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "AADD" ); /* NOTE: Clipper catches this at compile time! */ } HARBOUR HB_ASIZE( void ) diff --git a/harbour/source/rtl/console.c b/harbour/source/rtl/console.c index 9504de5f4f..b6ac378956 100644 --- a/harbour/source/rtl/console.c +++ b/harbour/source/rtl/console.c @@ -34,22 +34,31 @@ HB_DEVPOS(), hb_dispout(), HB___EJECT(), hb_max_col(), HB_MAXCOL(), hb_max_row(), HB_MAXROW(), hb_out(), hb_outerr(), HB_OUTERR(), hb_outstd(), HB_OUTSTD(), HB_PCOL(), HB_PROW(), hb_setpos(), - HB_SETPOS(), HB_SETPRC(), HB_SCROLL(), and InitializeConsole(). + HB_SETPOS(), HB_SETPRC(), HB_SCROLL(), and hb_consoleInitialize(). See doc/hdr_tpl.txt, Version 1.2 or later, for licensing terms. */ /* Harbour Project source code http://www.Harbour-Project.org/ The following functions are Copyright 1999 Victor Szel : + HB_DISPBOX() GT version. + HB_DISPBEGIN() + HB_DISPEND() + HB_DISPCOUNT() + HB_ISCOLOR() + HB_NOSNOW() HB___COLORINDEX(). See doc/hdr_tpl.txt, Version 1.2 or later, for licensing terms. */ #include "extend.h" #include "itemapi.h" +#include "errorapi.h" #include "dates.h" #include "set.h" #include "inkey.h" +#include "gtapi.h" /* HARBOUR_USE_GTAPI is checked inside gtapi.h, so that + we can always get the border styles */ #if defined(__GNUC__) #include @@ -60,8 +69,6 @@ #include #endif #include -#include "gtapi.h" /* HARBOUR_USE_GTAPI is checked inside gtapi.h, so that - we can always get the border styles */ #define ACCEPT_BUFFER_LEN 256 /*length of input buffer for ACCEPT command */ @@ -72,24 +79,24 @@ #endif static USHORT dev_row, dev_col, p_row, p_col; -static char CrLf [ CRLF_BUFFER_LEN ]; +static char CrLf[ CRLF_BUFFER_LEN ]; void hb_consoleRelease( void ) { #ifdef HARBOUR_USE_GTAPI - hb_gtExit (); + hb_gtExit(); #endif } void hb_consoleInitialize( void ) { #if defined(OS_DOS_COMPATIBLE) - CrLf [0] = 13; - CrLf [1] = 10; - CrLf [2] = 0; + CrLf[ 0 ] = 13; + CrLf[ 1 ] = 10; + CrLf[ 2 ] = 0; #else - CrLf [0] = 10; - CrLf [1] = 0; + CrLf[ 0 ] = 10; + CrLf[ 1 ] = 0; #endif p_row = p_col = 0; @@ -116,7 +123,7 @@ void hb_consoleInitialize( void ) WORD hb_max_row( void ) { #ifdef HARBOUR_USE_GTAPI - return hb_gtMaxRow (); + return hb_gtMaxRow(); #else return 23; /* QUESTION: Shouldn't this be 24 ? info@szelvesz.hu */ #endif /* ANSWER : No. ANSI terminals commonly only have 24 lines */ @@ -125,7 +132,7 @@ WORD hb_max_row( void ) WORD hb_max_col( void ) { #ifdef HARBOUR_USE_GTAPI - return hb_gtMaxCol (); + return hb_gtMaxCol(); #else return 79; #endif @@ -144,76 +151,76 @@ static void adjust_pos( char * fpStr, ULONG len, WORD * row, WORD * col, WORD ma case 7: break; case 8: - if( *col ) (*col)--; + if( *col ) ( *col )--; else { *col = max_col; - if( *row ) (*row)--; + if( *row ) ( *row )--; } break; case 10: - if( *row < max_row ) (*row)++; + if( *row < max_row ) ( *row )++; break; case 13: *col = 0; break; default: - if( *col < max_col ) (*col)++; + if( *col < max_col ) ( *col )++; else { *col = 0; - if( *row < max_row ) (*row)++; + if( *row < max_row ) ( *row )++; } } } } #endif -typedef void hb_out_func_typedef (char *, ULONG); +typedef void hb_out_func_typedef( char *, ULONG ); /* Format items for output, then call specified output function */ static void hb_out( WORD wParam, hb_out_func_typedef * hb_out_func ) { char * szText; PHB_ITEM pItem = hb_param( wParam, IT_ANY ); - char szBuffer [ 11 ]; + char szBuffer[ 11 ]; switch( hb_parinfo( wParam ) ) { case IT_STRING: - hb_out_func( hb_parc( wParam ), hb_parclen( wParam ) ); - break; + hb_out_func( hb_parc( wParam ), hb_parclen( wParam ) ); + break; case IT_DATE: - szText = hb_dtoc( hb_pards( wParam ), szBuffer, hb_set.HB_SET_DATEFORMAT ); - if( szText ) - hb_out_func( szText, strlen( szText ) ); - break; + szText = hb_dtoc( hb_pards( wParam ), szBuffer, hb_set.HB_SET_DATEFORMAT ); + if( szText ) + hb_out_func( szText, strlen( szText ) ); + break; case IT_DOUBLE: case IT_INTEGER: case IT_LONG: - szText = hb_itemStr( pItem, 0, 0 ); /* Let hb_itemStr() do the hard work */ - if( szText ) - { - hb_out_func( szText, strlen( szText ) ); - hb_xfree( szText ); - } - break; + szText = hb_itemStr( pItem, 0, 0 ); /* Let hb_itemStr() do the hard work */ + if( szText ) + { + hb_out_func( szText, strlen( szText ) ); + hb_xfree( szText ); + } + break; case IT_NIL: - hb_out_func( "NIL", 3 ); - break; + hb_out_func( "NIL", 3 ); + break; case IT_LOGICAL: - if( hb_parl( wParam ) ) - hb_out_func( ".T.", 3 ); - else - hb_out_func( ".F.", 3 ); - break; + if( hb_parl( wParam ) ) + hb_out_func( ".T.", 3 ); + else + hb_out_func( ".F.", 3 ); + break; default: - break; + break; } } @@ -233,9 +240,9 @@ static void hb_outstd( char * fpStr, ULONG len ) printf( "%s", fpStr ); fflush( stdout ); #ifdef HARBOUR_USE_GTAPI - #ifndef __CYGWIN__ + #ifndef __CYGWIN__ if( isatty( fileno( stdout ) ) ) - #endif + #endif { dev_row = hb_gt_Row(); dev_col = hb_gt_Col(); @@ -263,9 +270,9 @@ static void hb_outerr( char * fpStr, ULONG len ) fprintf( stderr, "%s", fpStr ); fflush( stderr ); #ifdef HARBOUR_USE_GTAPI - #ifndef __CYGWIN__ + #ifndef __CYGWIN__ if( isatty( fileno( stderr ) ) ) - #endif + #endif { dev_row = hb_gt_Row(); dev_col = hb_gt_Col(); @@ -284,17 +291,17 @@ static void hb_altout( char * fpStr, ULONG len ) if( hb_set.HB_SET_CONSOLE ) { - #ifdef HARBOUR_USE_GTAPI +#ifdef HARBOUR_USE_GTAPI hb_gtWriteCon( fpStr, len ); hb_gtGetPos( &dev_row, &dev_col ); - #else +#else ULONG count = len; if( strlen( fpStr ) != count ) while( count-- ) printf( "%c", *fpPtr++ ); else printf( "%s", fpStr ); adjust_pos( fpStr, len, &dev_row, &dev_col, hb_max_row(), hb_max_col() ); - #endif +#endif } if( hb_set.HB_SET_ALTERNATE && hb_set_althan >= 0 ) { @@ -395,11 +402,11 @@ static void hb_devout( char * fpStr, ULONG len ) } else { - #ifdef HARBOUR_USE_GTAPI +#ifdef HARBOUR_USE_GTAPI /* Otherwise, display to console */ hb_gtWrite( fpStr, len ); hb_gtGetPos( &dev_row, &dev_col ); - #else +#else ULONG count = len; char * fpPtr = fpStr; if( strlen( fpStr ) != count ) @@ -407,33 +414,33 @@ static void hb_devout( char * fpStr, ULONG len ) else printf( "%s", fpStr ); adjust_pos( fpStr, len, &dev_row, &dev_col, hb_max_row(), hb_max_col() ); - #endif +#endif } } /* Output an item to the screen */ static void hb_dispout( char * fpStr, ULONG len ) { - #ifdef HARBOUR_USE_GTAPI - /* Display to console */ - hb_gtWrite( fpStr, len ); - hb_gtGetPos( &dev_row, &dev_col ); - #else - ULONG count = len; - char * fpPtr = fpStr; - if( strlen( fpStr ) != count ) - while( count-- ) printf( "%c", *fpPtr++ ); - else - printf( "%s", fpStr ); - adjust_pos( fpStr, len, &dev_row, &dev_col, hb_max_row(), hb_max_col() ); - #endif +#ifdef HARBOUR_USE_GTAPI + /* Display to console */ + hb_gtWrite( fpStr, len ); + hb_gtGetPos( &dev_row, &dev_col ); +#else + ULONG count = len; + char * fpPtr = fpStr; + if( strlen( fpStr ) != count ) + while( count-- ) printf( "%c", *fpPtr++ ); + else + printf( "%s", fpStr ); + adjust_pos( fpStr, len, &dev_row, &dev_col, hb_max_row(), hb_max_col() ); +#endif } void hb_setpos( WORD row, WORD col ) { - #ifdef HARBOUR_USE_GTAPI +#ifdef HARBOUR_USE_GTAPI hb_gtSetPos( row, col ); - #else +#else WORD count; if( row < dev_row || col < dev_col ) @@ -445,9 +452,10 @@ void hb_setpos( WORD row, WORD col ) else if( row > dev_row ) dev_col = 0; for( count = dev_row; count < row; count++ ) printf("\n"); for( count = dev_col; count < col; count++ ) printf(" "); - #endif - dev_row = row; - dev_col = col; +#endif + + dev_row = row; + dev_col = col; } void hb_devpos( WORD row, WORD col ) @@ -511,7 +519,9 @@ HARBOUR HB_QQOUT( void ) /* writes a list of values to the current device (scree HARBOUR HB_QOUT( void ) { WORD count; - hb_altout( CrLf, CRLF_BUFFER_LEN-1 ); + + hb_altout( CrLf, CRLF_BUFFER_LEN - 1 ); + if( hb_set.HB_SET_PRINTER && hb_set_printhan >= 0 ) { p_row++; @@ -519,12 +529,13 @@ HARBOUR HB_QOUT( void ) count = p_col; while( count-- > 0 ) write( hb_set_printhan, " ", 1 ); } + HB_QQOUT(); } HARBOUR HB_SETPOS( void ) /* Sets the screen position */ { - if( hb_pcount() > 1 ) + if( hb_pcount() == 2 ) { if( ISNUM( 1 ) && ISNUM( 2 ) ) { @@ -536,6 +547,7 @@ HARBOUR HB_SETPOS( void ) /* Sets the screen position */ if( i_row < 0 ) row = 0; else if( i_row > hb_max_row() ) row = hb_max_row(); else row = i_row; + if( i_col < 0 ) col = 0; else if( i_col > hb_max_col() ) col = hb_max_col(); else col = i_col; @@ -544,11 +556,13 @@ HARBOUR HB_SETPOS( void ) /* Sets the screen position */ hb_setpos( row, col ); } } + else + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "SETPOS" ); /* NOTE: Clipper catches this at compile time! */ } HARBOUR HB_DEVPOS( void ) /* Sets the screen and/or printer position */ { - if( hb_pcount() > 1 ) + if( hb_pcount() == 2 ) { if( ISNUM( 1 ) && ISNUM( 2 ) ) { @@ -560,6 +574,7 @@ HARBOUR HB_DEVPOS( void ) /* Sets the screen and/or printer position */ if( l_row < 0 ) row = 0; else if( l_row > USHRT_MAX ) row = USHRT_MAX; else row = l_row; + if( l_col < 0 ) col = 0; else if( l_col > USHRT_MAX ) col = USHRT_MAX; else col = l_col; @@ -568,6 +583,8 @@ HARBOUR HB_DEVPOS( void ) /* Sets the screen and/or printer position */ hb_devpos( row, col ); } } + else + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "DEVPOS" ); /* NOTE: Clipper catches this at compile time! */ } HARBOUR HB_DEVOUT( void ) /* writes a single value to the current device (screen or printer), but is not affected by SET ALTERNATE */ @@ -576,10 +593,11 @@ HARBOUR HB_DEVOUT( void ) /* writes a single value to the current device (screen { #ifdef HARBOUR_USE_GTAPI char fpOldColor[ CLR_STRLEN ]; + if( ISCHAR( 2 ) ) { hb_gtGetColorStr( fpOldColor ); - hb_gtSetColorStr( hb_parc(2) ); + hb_gtSetColorStr( hb_parc( 2 ) ); } #endif @@ -604,7 +622,7 @@ HARBOUR HB_DISPOUT( void ) /* writes a single value to the current device (scree if( ISCHAR( 2 ) ) { hb_gtGetColorStr( fpOldColor ); - hb_gtSetColorStr( hb_parc(2) ); + hb_gtSetColorStr( hb_parc( 2 ) ); } #endif @@ -630,31 +648,36 @@ HARBOUR HB___EJECT( void ) /* Ejects the current page from the printer */ HARBOUR HB_PROW( void ) /* Returns the current printer row position */ { - hb_retni( p_row ); + if( hb_pcount() == 0 ) + hb_retni( p_row ); + else + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "PROW" ); /* NOTE: Clipper catches this at compile time! */ } HARBOUR HB_PCOL( void ) /* Returns the current printer row position */ { - hb_retni( p_col ); + if( hb_pcount() == 0 ) + hb_retni( p_col ); + else + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "PCOL" ); /* NOTE: Clipper catches this at compile time! */ } HARBOUR HB_SETPRC( void ) /* Sets the current printer row and column positions */ { - if( hb_pcount() > 1 ) + if( ISNUM( 1 ) && ISNUM( 2 ) ) { - if( ISNUM( 1 ) && ISNUM( 2 ) ) - { - long l_row = hb_parnl( 1 ); - long l_col = hb_parnl( 2 ); + long l_row = hb_parnl( 1 ); + long l_col = hb_parnl( 2 ); - /* Limit the new position to the range (0,0) to (65535,65535) */ - if( l_row < 0 ) p_row = 0; - else if( l_row > USHRT_MAX ) p_row = USHRT_MAX; - else p_row = l_row; - if( l_col < 0 ) p_col = 0; - else if( l_col > USHRT_MAX ) p_col = USHRT_MAX; - else p_col = l_col; - } + /* Limit the new position to the range (0,0) to (65535,65535) */ + + if( l_row < 0 ) p_row = 0; + else if( l_row > USHRT_MAX ) p_row = USHRT_MAX; + else p_row = l_row; + + if( l_col < 0 ) p_col = 0; + else if( l_col > USHRT_MAX ) p_col = USHRT_MAX; + else p_col = l_col; } } @@ -708,28 +731,38 @@ HARBOUR HB_SCROLL( void ) /* Scrolls a screen region (requires the GT API) */ HARBOUR HB_MAXROW( void ) /* Return the maximum screen row number (zero origin) */ { - hb_retni( hb_max_row () ); + hb_retni( hb_max_row() ); } HARBOUR HB_MAXCOL( void ) /* Return the maximum screen column number (zero origin) */ { - hb_retni( hb_max_col () ); + hb_retni( hb_max_col() ); } HARBOUR HB_ROW( void ) /* Return the current screen row position (zero origin) */ { + if( hb_pcount() == 0 ) + { #ifdef HARBOUR_USE_GTAPI - hb_gtGetPos( &dev_row, & dev_col); + hb_gtGetPos( &dev_row, & dev_col); #endif - hb_retni( dev_row ); + hb_retni( dev_row ); + } + else + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "ROW" ); /* NOTE: Clipper catches this at compile time! */ } HARBOUR HB_COL( void ) /* Return the current screen column position (zero origin) */ { + if( hb_pcount() == 0 ) + { #ifdef HARBOUR_USE_GTAPI - hb_gtGetPos( &dev_row, & dev_col); + hb_gtGetPos( &dev_row, &dev_col); #endif - hb_retni( dev_col ); + hb_retni( dev_col ); + } + else + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "COL" ); /* NOTE: Clipper catches this at compile time! */ } HARBOUR HB_DISPBOX (void) @@ -737,30 +770,30 @@ HARBOUR HB_DISPBOX (void) #ifdef HARBOUR_USE_GTAPI if( ISNUM( 1 ) && ISNUM( 2 ) && ISNUM( 3 ) && ISNUM( 4 ) ) { - char szOldColor [CLR_STRLEN]; + char szOldColor[ CLR_STRLEN ]; if( ISCHAR( 6 ) ) { - hb_gtGetColorStr(szOldColor); - hb_gtSetColorStr(hb_parc(6)); + hb_gtGetColorStr( szOldColor ); + hb_gtSetColorStr( hb_parc( 6 ) ); } if( ISCHAR( 5 ) ) { - hb_gtBox(hb_parni(1), hb_parni(2), hb_parni(3), hb_parni(4), hb_parc(5)); + hb_gtBox( hb_parni( 1 ), hb_parni( 2 ), hb_parni( 3 ), hb_parni( 4 ), hb_parc( 5 )); } else if( ISNUM( 5 ) && hb_parni( 5 ) == 2 ) { - hb_gtBoxD(hb_parni(1), hb_parni(2), hb_parni(3), hb_parni(4)); + hb_gtBoxD( hb_parni( 1 ), hb_parni( 2 ), hb_parni( 3 ), hb_parni( 4 ) ); } else { - hb_gtBoxS(hb_parni(1), hb_parni(2), hb_parni(3), hb_parni(4)); + hb_gtBoxS( hb_parni( 1 ), hb_parni( 2 ), hb_parni( 3 ), hb_parni( 4 ) ); } if( ISCHAR( 6 ) ) { - hb_gtSetColorStr(szOldColor); + hb_gtSetColorStr( szOldColor ); } } #else @@ -774,10 +807,10 @@ HARBOUR HB_DISPBOX (void) char Borders[ 9 ]; /* Set limits on the box coordinates to (0,0) and (max_row(),max_col()) */ - if( i_top < 0 ) top = 0; else top = (WORD)i_top; - if( i_left < 0 ) left = 0; else left = (WORD)i_left; - if( i_bottom < 0 ) bottom = 0; else bottom = (WORD)i_bottom; - if( i_right < 0 ) right = 0; else right = (WORD)i_right; + if( i_top < 0 ) top = 0; else top = ( WORD ) i_top; + if( i_left < 0 ) left = 0; else left = ( WORD ) i_left; + if( i_bottom < 0 ) bottom = 0; else bottom = ( WORD ) i_bottom; + if( i_right < 0 ) right = 0; else right = ( WORD ) i_right; if( top > hb_max_row() ) top = hb_max_row(); if( left > hb_max_col() ) left = hb_max_col(); if( bottom > hb_max_row() ) bottom = hb_max_row(); @@ -849,11 +882,11 @@ HARBOUR HB_DISPBOX (void) hb_setpos( top, left ); if( height > 1 && width > 1 ) printf( "%c", Borders[ 0 ] ); /* Upper left corner */ - for( col = (height > 1 ? left + 1 : left ); col < (height > 1 ? right : right + 1); col++ ) + for( col = ( height > 1 ? left + 1 : left ); col < ( height > 1 ? right : right + 1 ); col++ ) printf( "%c", Borders[ 1 ] ); /* Top line */ if( height > 1 && width > 1 ) printf( "%c", Borders[ 2 ] ); /* Upper right corner */ - for( row = (height > 1 ? top + 1 : top); row < (width > 1 ? bottom : bottom + 1); row++ ) + for( row = ( height > 1 ? top + 1 : top ); row < ( width > 1 ? bottom : bottom + 1 ); row++ ) { hb_setpos( row, left ); if( height > 1 ) @@ -894,18 +927,18 @@ HARBOUR HB_DISPEND (void) HARBOUR HB_DISPCOUNT (void) { #ifdef HARBOUR_USE_GTAPI - hb_retni(hb_gtDispCount()); + hb_retni( hb_gtDispCount() ); #else - hb_retni(0); + hb_retni( 0 ); #endif } HARBOUR HB_ISCOLOR (void) { #ifdef HARBOUR_USE_GTAPI - hb_retl(hb_gtIsColor()); + hb_retl( hb_gtIsColor() ); #else - hb_retl(FALSE); + hb_retl( FALSE ); #endif } @@ -914,29 +947,32 @@ HARBOUR HB_NOSNOW (void) #ifdef HARBOUR_USE_GTAPI if( ISLOG( 1 ) ) { - hb_gtSetSnowFlag(hb_parl(1)); + hb_gtSetSnowFlag( hb_parl( 1 ) ); } #endif } -HARBOUR HB_SHADOW (void) +HARBOUR HB___SHADOW (void) { #ifdef HARBOUR_USE_GTAPI - USHORT uiAttr; + USHORT uiAttr; if( hb_pcount() == 4 ) uiAttr = 7; else if( hb_pcount() == 5 ) - uiAttr = hb_parni(5); + uiAttr = hb_parni( 5 ); if( hb_pcount() > 3 ) - hb_gt_DrawShadow(hb_parni(1)+1,hb_parni(2)+1,hb_parni(3)+1,hb_parni(4)+1,uiAttr); + hb_gt_DrawShadow( hb_parni( 1 ) + 1, + hb_parni( 2 ) + 1, + hb_parni( 3 ) + 1, + hb_parni( 4 ) + 1, uiAttr); #endif } HARBOUR HB_DBGSHADOW (void) { - HB_SHADOW(); + HB___SHADOW(); } HARBOUR HB_SAVESCREEN (void) @@ -955,9 +991,9 @@ HARBOUR HB_SAVESCREEN (void) if( ISNUM( uiX ) ) uiCoords[uiX - 1 ] = hb_parni( uiX ); - hb_gtRectSize( uiCoords[0], uiCoords[1], uiCoords[2], uiCoords[3], &uiX ); + hb_gtRectSize( uiCoords[ 0 ], uiCoords[ 1 ], uiCoords[ 2 ], uiCoords[ 3 ], &uiX ); pBuffer = ( char * ) hb_xgrab( uiX ); - hb_gtSave( uiCoords[0], uiCoords[1], uiCoords[2], uiCoords[3], pBuffer ); + hb_gtSave( uiCoords[ 0 ], uiCoords[ 1 ], uiCoords[ 2 ], uiCoords[ 3 ], pBuffer ); hb_retclen( pBuffer, uiX ); hb_xfree( ( void * ) pBuffer ); #endif @@ -966,21 +1002,21 @@ HARBOUR HB_SAVESCREEN (void) HARBOUR HB_RESTSCREEN (void) { #ifdef HARBOUR_USE_GTAPI - USHORT uiX; - USHORT uiCoords[ 4 ]; - - uiCoords[ 0 ] = 0; - uiCoords[ 1 ] = 0; - uiCoords[ 2 ] = hb_gtMaxRow(); - uiCoords[ 3 ] = hb_gtMaxCol(); - if( hb_pcount() == 5 ) { + USHORT uiX; + USHORT uiCoords[ 4 ]; + + uiCoords[ 0 ] = 0; + uiCoords[ 1 ] = 0; + uiCoords[ 2 ] = hb_gtMaxRow(); + uiCoords[ 3 ] = hb_gtMaxCol(); + for( uiX = 1; uiX < 5; uiX++ ) if( ISNUM( uiX ) ) uiCoords[uiX - 1 ] = hb_parni( uiX ); - hb_gtRest( uiCoords[0], uiCoords[1], uiCoords[2], uiCoords[3], + hb_gtRest( uiCoords[ 0 ], uiCoords[ 1 ], uiCoords[ 2 ], uiCoords[ 3 ], hb_parc( 5 ) ); } #endif @@ -996,6 +1032,8 @@ HARBOUR HB_SETCURSOR( void ) hb_gtSetCursor( hb_parni( 1 ) ); hb_retni( usPreviousCursor ); +#else + hb_retni( SC_NORMAL ); #endif } @@ -1015,26 +1053,26 @@ HARBOUR HB_SETBLINK( void ) } HARBOUR HB___ACCEPT( void ) /* Internal Clipper function used in ACCEPT command */ - /* Basically the simplest Clipper function to */ - /* receive data. Parameter : cPrompt. Returns : cRet */ + /* Basically the simplest Clipper function to */ + /* receive data. Parameter : cPrompt. Returns : cRet */ { - char *szResult = ( char * ) hb_xgrab(ACCEPT_BUFFER_LEN); /* Return parameter. */ - char *szPrompt = hb_parc(1); /* Pass prompt */ - ULONG len = hb_parclen(1); + char * szResult = ( char * ) hb_xgrab( ACCEPT_BUFFER_LEN ); /* Return parameter. */ + char * szPrompt = hb_parc( 1 ); /* Pass prompt */ + ULONG len = hb_parclen( 1 ); int input; if( hb_pcount() == 1 ) /* cPrompt passed */ { - hb_altout( CrLf, CRLF_BUFFER_LEN-1 ); + hb_altout( CrLf, CRLF_BUFFER_LEN - 1 ); hb_altout( szPrompt, len ); } #ifdef OS_UNIX_COMPATIBLE /* Read the data using fgets(), because hb_inkeyPoll() doesn't support Unix compatible operating systems yet. */ - szResult[0] = '\x0'; /* start with something defined */ + szResult[ 0 ] = '\0'; /* start with something defined */ if( fgets( szResult, ACCEPT_BUFFER_LEN, stdin ) ) { - strtok(szResult, "\n"); /* strip off the trailing newline + strtok( szResult, "\n" ); /* strip off the trailing newline if it exists */ } #else diff --git a/harbour/source/rtl/copyfile.c b/harbour/source/rtl/copyfile.c index 77973f4899..0a2b1a89b6 100644 --- a/harbour/source/rtl/copyfile.c +++ b/harbour/source/rtl/copyfile.c @@ -23,7 +23,6 @@ */ #include "extend.h" -#include "itemapi.h" #include "errorapi.h" #include "filesys.h" @@ -34,7 +33,7 @@ #define BUFFER_SIZE 8192 -static BOOL hb_fsCopy(char* szSource, char* szDest, ULONG* pulWrittenTotal) +static BOOL hb_fsCopy( char * szSource, char * szDest, ULONG * pulWrittenTotal ) { BOOL bRetVal = FALSE; ULONG ulWrittenTotal = 0L; @@ -42,27 +41,27 @@ static BOOL hb_fsCopy(char* szSource, char* szDest, ULONG* pulWrittenTotal) FHANDLE fhndSource; FHANDLE fhndDest; - while ((fhndSource = hb_fsOpen(( BYTE * ) szSource, FO_READ)) == FS_ERROR) + while( ( fhndSource = hb_fsOpen( ( BYTE * ) szSource, FO_READ ) ) == FS_ERROR ) { - if (hb_errRT_BASE_Ext1(EG_OPEN, 2012, NULL, szSource, hb_fsError(), EF_CANDEFAULT | EF_CANRETRY ) == E_DEFAULT) + if( hb_errRT_BASE_Ext1( EG_OPEN, 2012, NULL, szSource, hb_fsError(), EF_CANDEFAULT | EF_CANRETRY ) == E_DEFAULT ) { - ulWrittenTotal = (ULONG)-1L; + ulWrittenTotal = ( ULONG ) -1L; break; } } - if (fhndSource != FS_ERROR) + if( fhndSource != FS_ERROR ) { - while ((fhndDest = hb_fsCreate(( BYTE * ) szDest, FC_NORMAL)) == FS_ERROR) + while( ( fhndDest = hb_fsCreate( ( BYTE * ) szDest, FC_NORMAL ) ) == FS_ERROR ) { - if (hb_errRT_BASE_Ext1(EG_CREATE, 2012, NULL, szDest, hb_fsError(), EF_CANDEFAULT | EF_CANRETRY ) == E_DEFAULT) + if( hb_errRT_BASE_Ext1( EG_CREATE, 2012, NULL, szDest, hb_fsError(), EF_CANDEFAULT | EF_CANRETRY ) == E_DEFAULT ) { - ulWrittenTotal = (ULONG)-2L; + ulWrittenTotal = ( ULONG ) -2L; break; } } - if (fhndDest != FS_ERROR) + if( fhndDest != FS_ERROR ) { #ifdef OS_UNIX_COMPATIBLE struct stat struFileInfo; @@ -72,41 +71,41 @@ static BOOL hb_fsCopy(char* szSource, char* szDest, ULONG* pulWrittenTotal) USHORT usRead; USHORT usWritten; - buffer = (BYTE * ) hb_xgrab( BUFFER_SIZE ); + buffer = ( BYTE * ) hb_xgrab( BUFFER_SIZE ); /* QUESTION: Does Clipper throw an error on read or write operation ? */ /* QUESTION: What is the E_DEFAULT behaviour on that error ? */ bRetVal = TRUE; - while ((usRead = hb_fsRead(fhndSource, buffer, BUFFER_SIZE)) != 0) + while( ( usRead = hb_fsRead( fhndSource, buffer, BUFFER_SIZE ) ) != 0 ) { - while ((usWritten = hb_fsWrite(fhndDest, buffer, usRead)) != usRead) + while( ( usWritten = hb_fsWrite( fhndDest, buffer, usRead ) ) != usRead ) { - if (hb_errRT_BASE_Ext1(EG_WRITE, 2012, NULL, szDest, hb_fsError(), EF_CANDEFAULT | EF_CANRETRY ) == E_DEFAULT) + if( hb_errRT_BASE_Ext1( EG_WRITE, 2012, NULL, szDest, hb_fsError(), EF_CANDEFAULT | EF_CANRETRY ) == E_DEFAULT ) { bRetVal = FALSE; break; } } - ulWrittenTotal += (ULONG)usWritten; + ulWrittenTotal += ( ULONG ) usWritten; } - hb_xfree(buffer); + hb_xfree( buffer ); #ifdef OS_UNIX_COMPATIBLE if( iSuccess == 0 ) fchmod( fhndDest, struFileInfo.st_mode ); #endif - hb_fsClose(fhndDest); + hb_fsClose( fhndDest ); } - hb_fsClose(fhndSource); + hb_fsClose( fhndSource ); } - if ( pulWrittenTotal != NULL ) + if( pulWrittenTotal != NULL ) *pulWrittenTotal = ulWrittenTotal; return bRetVal; @@ -116,21 +115,17 @@ static BOOL hb_fsCopy(char* szSource, char* szDest, ULONG* pulWrittenTotal) HARBOUR HB___COPYFILE( void ) { - if ( ISCHAR(1) && ISCHAR(2) ) + if( ISCHAR( 1 ) && ISCHAR( 2 ) ) { #ifdef HARBOUR_STRICT_CLIPPER_COMPATIBILITY - if (!hb_fsCopy( hb_parc(1), hb_parc(2), NULL )) - { + if( ! hb_fsCopy( hb_parc( 1 ), hb_parc( 2 ), NULL ) ) hb_retl( FALSE ); - } #else ULONG ulWrittenTotal; - hb_fsCopy( hb_parc(1), hb_parc(2), &ulWrittenTotal ); + hb_fsCopy( hb_parc( 1 ), hb_parc( 2 ), &ulWrittenTotal ); hb_retnl( ulWrittenTotal ); #endif } else - { hb_errRT_BASE( EG_ARG, 2010, NULL, "__COPYFILE" ); - } } diff --git a/harbour/source/rtl/dates.c b/harbour/source/rtl/dates.c index efe84881d8..50e30a4ec0 100644 --- a/harbour/source/rtl/dates.c +++ b/harbour/source/rtl/dates.c @@ -60,72 +60,77 @@ double hb_secondsToday( void ) #if defined(__TURBOC__) || defined(__BORLANDC__) || defined(__DJGPP__) /* || defined(_MSC_VER) */ struct time t; gettime( &t ); - return( ( ( t.ti_hour * 3600 ) + ( t.ti_min * 60 ) + t.ti_sec ) + (double)t.ti_hund /100 ); + return( ( ( t.ti_hour * 3600 ) + ( t.ti_min * 60 ) + t.ti_sec ) + ( double ) t.ti_hund / 100 ); #elif defined(_MSC_VER) struct _timeb tb; struct tm *oTime; _ftime( &tb ); - oTime = localtime(&tb.time); - return( ( oTime->tm_hour * 3600 ) + - ( oTime->tm_min * 60 ) + - oTime->tm_sec + - ( (double) tb.millitm /1000 ) ); + oTime = localtime( &tb.time ); + return ( oTime->tm_hour * 3600 ) + + ( oTime->tm_min * 60 ) + + oTime->tm_sec + + ( ( double ) tb.millitm / 1000 ); #else time_t t; struct tm *oTime; - time(&t); - oTime = localtime(&t); - return( ( oTime->tm_hour * 3600 ) + ( oTime->tm_min * 60 ) + oTime->tm_sec ); + time( &t ); + oTime = localtime( &t ); + return ( oTime->tm_hour * 3600 ) + ( oTime->tm_min * 60 ) + oTime->tm_sec; #endif } -char *hb_cmonth( int month ) +char * hb_cmonth( int month ) { if( month >= 1 && month <= 12 ) return hb_monthsname[ month - 1 ]; - - return ""; + else + return ""; } -char *hb_cdow( int day ) +char * hb_cdow( int day ) { if( day >= 1 && day <= 7 ) return hb_daysname[ day - 1 ]; - - return ""; + else + return ""; } long hb_dateEncode( long lDay, long lMonth, long lYear ) { BOOL bValid = FALSE; - long lFactor = ( lMonth < 3 ) ? -1: 0; + long lFactor = ( lMonth < 3 ) ? -1 : 0; /* Perform date validation */ - if (lMonth >= 1 && lMonth <= 12 && lDay >= 1 - && lYear >= 1 && lYear <= 2999) + if( lMonth >= 1 && lMonth <= 12 && lDay >= 1 + && lYear >= 1 && lYear <= 2999 ) { /* Month, year, and lower day limits are simple, but upper day limit is dependent upon month and leap year */ - int aiDayLimit [12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; - if( (( lYear % 4 == 0 && lYear % 100 != 0 ) || lYear % 400 == 0 ) ) + int aiDayLimit[ 12 ] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + + if( ( ( lYear % 4 == 0 && lYear % 100 != 0 ) || lYear % 400 == 0 ) ) aiDayLimit[ 1 ] = 29; - if( lDay <= (long)aiDayLimit[ (int)lMonth - 1 ] ) bValid = TRUE; + + if( lDay <= ( long ) aiDayLimit[ ( int ) lMonth - 1 ] ) + bValid = TRUE; } + if( bValid ) return ( 1461 * ( lFactor + 4800 + lYear ) / 4 ) + ( ( lMonth - 2 - ( lFactor * 12 ) ) * 367 ) / 12 - ( 3 * ( ( lYear + 4900 + lFactor ) / 100 ) / 4 ) + lDay - 32075; - else return ( 0 ); + else + return 0; } void hb_dateDecode( long julian, long * plDay, long * plMonth, long * plYear ) { - long U, V, W, X; - if( julian > 0 ) { + long U, V, W, X; + julian += 68569; W = ( julian * 4 ) / 146097; julian -= ( ( 146097 * W ) + 3 ) / 4; @@ -133,16 +138,15 @@ void hb_dateDecode( long julian, long * plDay, long * plMonth, long * plYear ) julian -= ( ( 1461 * X ) / 4 ) - 31; V = 80 * julian / 2447; U = V / 11; - if( plDay ) * plDay = julian - ( 2447 * V / 80 ); - if( plMonth ) * plMonth = V + 2 - ( U * 12 ); - if( plYear ) * plYear = X + U + ( W - 49 ) * 100; + + if( plDay ) *plDay = julian - ( 2447 * V / 80 ); + if( plMonth ) *plMonth = V + 2 - ( U * 12 ); + if( plYear ) *plYear = X + U + ( W - 49 ) * 100; } else - { - * plDay = 0; - * plMonth = 0; - * plYear = 0; - } + *plDay = + *plMonth = + *plYear = 0; } void hb_dateStrPut( char * szDate, long lDay, long lMonth, long lYear ) @@ -169,218 +173,244 @@ void hb_dateStrGet( const char * szDate, long * plDay, long * plMonth, long * pl *plYear = ( ( szDate[ 0 ] - '0' ) * 1000 ) + ( ( szDate[ 1 ] - '0' ) * 100 ) + ( ( szDate[ 2 ] - '0' ) * 10 ) + ( szDate[ 3 ] - '0' ); } - else *plDay = *plMonth = *plYear = 0; /* Date string missing or bad length, - so force an empty date */ + else + /* Date string missing or bad length, so force an empty date */ + *plDay = + *plMonth = + *plYear = 0; } HARBOUR HB_CTOD( void ) { - char * szDate = hb_parc( 1 ); - int d_value = 0, m_value = 0, y_value = 0; - int d_pos = 0, m_pos = 0, y_pos = 0; - int count, digit, size = strlen (hb_set.HB_SET_DATEFORMAT); - char szDateFormat[ 9 ]; - - if( szDate ) + if( hb_pcount() == 1 ) { - for( count = 0; count < size; count++) + char * szDate = hb_parc( 1 ); + int d_value = 0, m_value = 0, y_value = 0; + char szDateFormat[ 9 ]; + + if( szDate ) { - switch (hb_set.HB_SET_DATEFORMAT [count]) + int d_pos = 0, m_pos = 0, y_pos = 0; + int count, digit, size = strlen( hb_set.HB_SET_DATEFORMAT ); + + for( count = 0; count < size; count++) { - case 'D': - case 'd': - if (d_pos == 0) - { - if (m_pos == 0 && y_pos == 0) d_pos = 1; - else if (m_pos == 0 || y_pos == 0) d_pos = 2; - else d_pos = 3; - } - break; - case 'M': - case 'm': - if (m_pos == 0) - { - if (d_pos == 0 && y_pos == 0) m_pos = 1; - else if (d_pos == 0 || y_pos == 0) m_pos = 2; - else m_pos = 3; - } - break; - case 'Y': - case 'y': - if (y_pos == 0) - { - if (m_pos == 0 && d_pos == 0) y_pos = 1; - else if (m_pos == 0 || d_pos == 0) y_pos = 2; - else y_pos = 3; - } - } - } - size = strlen (szDate); - for( count = 0; count < size; count++) - { - digit = szDate [count]; - if (isdigit (digit)) - { - if (d_pos == 1) + switch( hb_set.HB_SET_DATEFORMAT[ count ] ) { - d_value = (d_value * 10) + digit - '0'; - } - else if (m_pos == 1) - { - m_value = (m_value * 10) + digit - '0'; - } - else if (y_pos == 1) - { - y_value = (y_value * 10) + digit - '0'; + case 'D': + case 'd': + if( d_pos == 0 ) + { + if( m_pos == 0 && y_pos == 0 ) d_pos = 1; + else if( m_pos == 0 || y_pos == 0 ) d_pos = 2; + else d_pos = 3; + } + break; + case 'M': + case 'm': + if( m_pos == 0 ) + { + if( d_pos == 0 && y_pos == 0 ) m_pos = 1; + else if( d_pos == 0 || y_pos == 0 ) m_pos = 2; + else m_pos = 3; + } + break; + case 'Y': + case 'y': + if( y_pos == 0 ) + { + if( m_pos == 0 && d_pos == 0 ) y_pos = 1; + else if( m_pos == 0 || d_pos == 0 ) y_pos = 2; + else y_pos = 3; + } } } - else if( digit != ' ' ) + + size = strlen( szDate ); + + for( count = 0; count < size; count++ ) { - d_pos--; - m_pos--; - y_pos--; + digit = szDate[ count ]; + if( isdigit( digit ) ) + { + if( d_pos == 1 ) + { + d_value = ( d_value * 10 ) + digit - '0'; + } + else if( m_pos == 1 ) + { + m_value = ( m_value * 10 ) + digit - '0'; + } + else if( y_pos == 1 ) + { + y_value = ( y_value * 10 ) + digit - '0'; + } + } + else if( digit != ' ' ) + { + d_pos--; + m_pos--; + y_pos--; + } + } + + if( y_value > 0 && y_value < 100 ) + { + count = hb_set.HB_SET_EPOCH % 100; + digit = hb_set.HB_SET_EPOCH / 100; + + if( y_value >= count ) + y_value += ( digit * 100 ); + else + y_value += ( ( digit * 100 ) + 100 ); } } - if (y_value > 0 && y_value < 100) - { - count = hb_set.HB_SET_EPOCH % 100; - digit = hb_set.HB_SET_EPOCH / 100; - if (y_value >= count) y_value += (digit * 100); - else y_value += ((digit * 100) + 100); - } + + sprintf( szDateFormat, "%04i%02i%02i", y_value, m_value, d_value ); + + hb_retds( szDateFormat ); } - sprintf (szDateFormat, "%04i%02i%02i", y_value, m_value, d_value); - hb_retds( szDateFormat ); + else + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "CTOD" ); /* NOTE: Clipper catches this at compile time! */ } -char * hb_dtoc (const char * szDate, char * szFormattedDate, const char * szDateFormat) +char * hb_dtoc( const char * szDate, char * szFormattedDate, const char * szDateFormat ) { /* * NOTE: szFormattedDate must point to a buffer of at least 11 bytes. * szDateFormat must point to a buffer holding the date format to use. */ - int digit, digit_count, format_count, size; - BOOL used_d, used_m, used_y; - const char *szPtr; + int format_count, digit_count, size; /* * Determine the maximum size of the formatted date string */ - size = strlen (szDateFormat); - if (size > 10) size = 10; + size = strlen( szDateFormat ); + if( size > 10 ) size = 10; if( szDate && szFormattedDate && strlen( szDate ) == 8 ) /* A valid date is always 8 characters */ { + const char *szPtr; + int digit; + BOOL used_d, used_m, used_y; + format_count = 0; used_d = used_m = used_y = FALSE; szPtr = szDateFormat; - while (format_count < size) + + while( format_count < size ) { - digit = toupper (*szPtr); + digit = toupper( *szPtr ); szPtr++; digit_count = 1; - while (toupper (*szPtr) == digit && format_count < size) + while( toupper( *szPtr ) == digit && format_count < size ) { szPtr++; - if (format_count + digit_count < size) digit_count++; + if( format_count + digit_count < size ) digit_count++; } - switch (digit) + switch( digit ) { case 'D': - switch (digit_count) + switch( digit_count ) { case 4: - if (!used_d && format_count < size) + if( ! used_d && format_count < size ) { - szFormattedDate [format_count++] = '0'; + szFormattedDate[ format_count++ ] = '0'; digit_count--; } case 3: - if (!used_d && format_count < size) + if( ! used_d && format_count < size ) { - szFormattedDate [format_count++] = '0'; + szFormattedDate[ format_count++ ] = '0'; digit_count--; } case 2: - if (!used_d && format_count < size) + if( ! used_d && format_count < size ) { - szFormattedDate [format_count++] = szDate [6]; + szFormattedDate[ format_count++ ] = szDate[ 6 ]; digit_count--; } default: - if (!used_d && format_count < size) + if( ! used_d && format_count < size ) { - szFormattedDate [format_count++] = szDate [7]; + szFormattedDate[ format_count++ ] = szDate[ 7 ]; digit_count--; } - while (digit_count-- > 0 && format_count < size) szFormattedDate [format_count++] = digit; + while( digit_count-- > 0 && format_count < size ) szFormattedDate[ format_count++ ] = digit; } used_d = TRUE; break; + case 'M': - switch (digit_count) + switch ( digit_count ) { case 4: - if (!used_m && format_count < size) + if( ! used_m && format_count < size ) { - szFormattedDate [format_count++] = '0'; + szFormattedDate[ format_count++ ] = '0'; digit_count--; } case 3: - if (!used_m && format_count < size) + if( ! used_m && format_count < size ) { - szFormattedDate [format_count++] = '0'; + szFormattedDate[ format_count++ ] = '0'; digit_count--; } case 2: - if (!used_m && format_count < size) + if( ! used_m && format_count < size ) { - szFormattedDate [format_count++] = szDate [4]; + szFormattedDate[ format_count++ ] = szDate[ 4 ]; digit_count--; } default: - if (!used_m && format_count < size) + if( ! used_m && format_count < size ) { - szFormattedDate [format_count++] = szDate [5]; + szFormattedDate[ format_count++ ] = szDate[ 5 ]; digit_count--; } - while (digit_count-- > 0 && format_count < size) szFormattedDate [format_count++] = digit; + while( digit_count-- > 0 && format_count < size ) szFormattedDate[ format_count++ ] = digit; } used_m = TRUE; break; + case 'Y': - switch (digit_count) + switch( digit_count ) { case 4: - if (!used_y && format_count < size) + if( ! used_y && format_count < size ) { - szFormattedDate [format_count++] = szDate [0]; + szFormattedDate[ format_count++ ] = szDate[ 0 ]; digit_count--; } + case 3: - if (!used_y && format_count < size) + if( ! used_y && format_count < size ) { - szFormattedDate [format_count++] = szDate [1]; + szFormattedDate[ format_count++ ] = szDate[ 1 ]; digit_count--; } + case 2: - if (!used_y && format_count < size) + if( ! used_y && format_count < size ) { - szFormattedDate [format_count++] = szDate [2]; + szFormattedDate[ format_count++ ] = szDate[ 2 ]; digit_count--; } + default: - if (!used_y && format_count < size) + if( ! used_y && format_count < size ) { - szFormattedDate [format_count++] = szDate [3]; + szFormattedDate[ format_count++ ] = szDate[ 3 ]; digit_count--; } - while (digit_count-- > 0 && format_count < size) szFormattedDate [format_count++] = digit; + while( digit_count-- > 0 && format_count < size ) szFormattedDate[ format_count++ ] = digit; } used_y = TRUE; break; + default: - while (digit_count-- > 0 && format_count < size) szFormattedDate [format_count++] = digit; + while( digit_count-- > 0 && format_count < size ) szFormattedDate[ format_count++ ] = digit; } } } @@ -389,8 +419,9 @@ char * hb_dtoc (const char * szDate, char * szFormattedDate, const char * szDate /* Not a valid date string, so return a blank date with separators */ format_count = size; /* size is either 8 or 10 */ strncpy( szFormattedDate, szDateFormat, size ); - for (digit_count = 0; digit_count < size; digit_count++) - switch (szFormattedDate [digit_count]) + + for( digit_count = 0; digit_count < size; digit_count++ ) + switch( szFormattedDate[ digit_count ] ) { case 'D': case 'd': @@ -398,18 +429,26 @@ char * hb_dtoc (const char * szDate, char * szFormattedDate, const char * szDate case 'm': case 'Y': case 'y': - szFormattedDate [digit_count] = ' '; + szFormattedDate[ digit_count ] = ' '; } } - szFormattedDate [format_count] = 0; - return (szFormattedDate); + + szFormattedDate[ format_count ] = '\0'; + + return szFormattedDate; } HARBOUR HB_DTOC( void ) { - char * szDate = hb_pards( 1 ); - char szFormatted[ 11 ]; - hb_retc( hb_dtoc( szDate, szFormatted, hb_set.HB_SET_DATEFORMAT ) ); + if( hb_pcount() == 1 ) + { + char * szDate = hb_pards( 1 ); + char szFormatted[ 11 ]; + + hb_retc( hb_dtoc( szDate, szFormatted, hb_set.HB_SET_DATEFORMAT ) ); + } + else + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "DTOC" ); /* NOTE: Clipper catches this at compile time! */ } /* QUESTION: Should we drop error checkings to make it faster ? */ @@ -428,105 +467,111 @@ HARBOUR HB_DTOS( void ) #ifndef HB_OPTIMIZE_DTOS } else - { - hb_errRT_BASE(EG_ARG, 1120, NULL, "DTOS"); - } + hb_errRT_BASE( EG_ARG, 1120, NULL, "DTOS" ); } else - { - /* NOTE: Clipper catches this at compile time! */ - hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "DTOS"); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "DTOS" ); /* NOTE: Clipper catches this at compile time! */ #endif } +/* NOTE: XBase++ checks for the parameter count at compile time */ + HARBOUR HB_STOD( void ) { - hb_retds( hb_parc(1) ); + hb_retds( hb_parc( 1 ) ); } HARBOUR HB_DAY( void ) { - PHB_ITEM pDate = hb_param( 1, IT_DATE ); - long lDay, lMonth, lYear; - - if( pDate ) + if( hb_pcount() == 1 ) { - PHB_ITEM pReturn = hb_itemNew( NULL ); + PHB_ITEM pDate = hb_param( 1, IT_DATE ); - hb_dateDecode( pDate->item.asDate.value, &lDay, &lMonth, &lYear ); + if( pDate ) + { + PHB_ITEM pReturn = hb_itemNew( NULL ); + long lDay, lMonth, lYear; - pReturn->type = IT_LONG; - pReturn->item.asLong.value =lDay; - pReturn->item.asLong.length =3; - hb_itemReturn( pReturn ); - hb_itemRelease( pReturn ); + hb_dateDecode( pDate->item.asDate.value, &lDay, &lMonth, &lYear ); + + pReturn->type = IT_LONG; + pReturn->item.asLong.value = lDay; + pReturn->item.asLong.length = 3; + hb_itemReturn( pReturn ); + hb_itemRelease( pReturn ); /* - hb_retni( lDay ); + hb_retni( lDay ); * It is dangerous to manipulate the stack return value directly! - stack.Return.item.asInteger.length = 3; + stack.Return.item.asInteger.length = 3; */ + } + else + hb_errRT_BASE( EG_ARG, 1114, NULL, "DAY" ); } else - { - hb_errRT_BASE(EG_ARG, 1114, NULL, "DAY"); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "DAY" ); /* NOTE: Clipper catches this at compile time! */ } HARBOUR HB_MONTH( void ) { - PHB_ITEM pDate = hb_param( 1, IT_DATE ); - long lDay, lMonth, lYear; - - if( pDate ) + if( hb_pcount() == 1 ) { - PHB_ITEM pReturn = hb_itemNew( NULL ); + PHB_ITEM pDate = hb_param( 1, IT_DATE ); - hb_dateDecode( pDate->item.asDate.value, &lDay, &lMonth, &lYear ); + if( pDate ) + { + PHB_ITEM pReturn = hb_itemNew( NULL ); + long lDay, lMonth, lYear; - pReturn->type = IT_LONG; - pReturn->item.asLong.value =lMonth; - pReturn->item.asLong.length =3; - hb_itemReturn( pReturn ); - hb_itemRelease( pReturn ); + hb_dateDecode( pDate->item.asDate.value, &lDay, &lMonth, &lYear ); + + pReturn->type = IT_LONG; + pReturn->item.asLong.value = lMonth; + pReturn->item.asLong.length = 3; + hb_itemReturn( pReturn ); + hb_itemRelease( pReturn ); /* - hb_retni( lMonth ); + hb_retni( lMonth ); * It is dangerous to manipulate the stack return value directly! - stack.Return.item.asInteger.length = 3; + stack.Return.item.asInteger.length = 3; */ + } + else + hb_errRT_BASE( EG_ARG, 1113, NULL, "MONTH" ); } else - { - hb_errRT_BASE(EG_ARG, 1113, NULL, "MONTH"); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "MONTH" ); /* NOTE: Clipper catches this at compile time! */ } HARBOUR HB_YEAR( void ) { - PHB_ITEM pDate = hb_param( 1, IT_DATE ); - long lDay, lMonth, lYear; - - if( pDate ) + if( hb_pcount() == 1 ) { - PHB_ITEM pReturn = hb_itemNew( NULL ); + PHB_ITEM pDate = hb_param( 1, IT_DATE ); - hb_dateDecode( pDate->item.asDate.value, &lDay, &lMonth, &lYear ); + if( pDate ) + { + PHB_ITEM pReturn = hb_itemNew( NULL ); + long lDay, lMonth, lYear; - pReturn->type = IT_LONG; - pReturn->item.asLong.value =lYear; - pReturn->item.asLong.length =5; - hb_itemReturn( pReturn ); - hb_itemRelease( pReturn ); + hb_dateDecode( pDate->item.asDate.value, &lDay, &lMonth, &lYear ); + + pReturn->type = IT_LONG; + pReturn->item.asLong.value = lYear; + pReturn->item.asLong.length = 5; + hb_itemReturn( pReturn ); + hb_itemRelease( pReturn ); /* - hb_retni( lYear ); + hb_retni( lYear ); * It is dangerous to manipulate the stack return value directly! - stack.Return.item.asInteger.length = 5; + stack.Return.item.asInteger.length = 5; */ + } + else + hb_errRT_BASE( EG_ARG, 1112, NULL, "YEAR" ); } else - { - hb_errRT_BASE(EG_ARG, 1112, NULL, "YEAR"); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "YEAR" ); /* NOTE: Clipper catches this at compile time! */ } HARBOUR HB_TIME( void ) @@ -534,18 +579,16 @@ HARBOUR HB_TIME( void ) if( hb_pcount() == 0 ) { time_t t; - struct tm *oTime; - char szTime[9]; + struct tm * oTime; + char szTime[ 9 ]; - time(&t); - oTime = localtime(&t); - sprintf(szTime, "%02d:%02d:%02d", oTime->tm_hour, oTime->tm_min, oTime->tm_sec); - hb_retclen(szTime, 8); + time( &t ); + oTime = localtime( &t ); + sprintf( szTime, "%02d:%02d:%02d", oTime->tm_hour, oTime->tm_min, oTime->tm_sec ); + hb_retclen( szTime, 8 ); } else - { - hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "TIME"); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "TIME" ); } HARBOUR HB_DATE( void ) @@ -553,28 +596,25 @@ HARBOUR HB_DATE( void ) if( hb_pcount() == 0 ) { time_t t; - struct tm *oTime; - char szTime[9]; + struct tm * oTime; + char szTime[ 9 ]; - time(&t); - oTime = localtime(&t); - sprintf(szTime, "%04d%02d%02d", oTime->tm_year + 1900, oTime->tm_mon + 1, oTime->tm_mday); - hb_retds(szTime); + time( &t ); + oTime = localtime( &t ); + sprintf( szTime, "%04d%02d%02d", oTime->tm_year + 1900, oTime->tm_mon + 1, oTime->tm_mday ); + hb_retds( szTime ); } else - { - /* NOTE: Clipper catches this at compile time! */ - hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "DATE"); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "DATE" ); /* NOTE: Clipper catches this at compile time! */ } + long hb_dow( long d, long m, long y ) { - if( m < 3 ) - { - m += 13; - y--; - } + { + m += 13; + y--; + } else m++; @@ -583,86 +623,82 @@ long hb_dow( long d, long m, long y ) HARBOUR HB_DOW( void ) { - PHB_ITEM pDate = hb_param( 1, IT_DATE ); - long lDay, lMonth, lYear; - - if( pDate ) + if( hb_pcount() == 1 ) { - PHB_ITEM pReturn = hb_itemNew( NULL ); + PHB_ITEM pDate = hb_param( 1, IT_DATE ); - pReturn->type = IT_LONG; - - if( pDate->item.asDate.value ) + if( pDate ) { - hb_dateDecode( pDate->item.asDate.value, &lDay, &lMonth, &lYear ); - pReturn->item.asLong.value =hb_dow( lDay, lMonth, lYear ); - /* hb_retni( hb_dow( lDay, lMonth, lYear ) ); - */ + PHB_ITEM pReturn = hb_itemNew( NULL ); + + pReturn->type = IT_LONG; + + if( pDate->item.asDate.value ) + { + long lDay, lMonth, lYear; + + hb_dateDecode( pDate->item.asDate.value, &lDay, &lMonth, &lYear ); + pReturn->item.asLong.value = hb_dow( lDay, lMonth, lYear ); + /* hb_retni( hb_dow( lDay, lMonth, lYear ) ); + */ + } + else + pReturn->item.asLong.value = 0; + /* hb_retni( 0 ); + */ + + pReturn->item.asLong.length = 3; + hb_itemReturn( pReturn ); + hb_itemRelease( pReturn ); +/* + stack.Return.item.asInteger.length = 3; + */ } else - pReturn->item.asLong.value =0; - /* hb_retni( 0 ); - */ - - pReturn->item.asLong.length =3; - hb_itemReturn( pReturn ); - hb_itemRelease( pReturn ); -/* - stack.Return.item.asInteger.length = 3; - */ + hb_errRT_BASE( EG_ARG, 1115, NULL, "DOW" ); } else - { - hb_errRT_BASE(EG_ARG, 1115, NULL, "DOW"); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "DOW" ); /* NOTE: Clipper catches this at compile time! */ } HARBOUR HB_CMONTH( void ) { - PHB_ITEM pDate = hb_param( 1, IT_DATE ); - long lDay, lMonth, lYear; - - if( hb_pcount() ) + if( hb_pcount() == 1 ) { - if( pDate ) - { - hb_dateDecode( pDate->item.asDate.value, &lDay, &lMonth, &lYear ); - hb_retc( hb_cmonth( lMonth ) ); - } - else - { - hb_errRT_BASE(EG_ARG, 1116, NULL, "CMONTH"); - } + PHB_ITEM pDate = hb_param( 1, IT_DATE ); + + if( pDate ) + { + long lDay, lMonth, lYear; + + hb_dateDecode( pDate->item.asDate.value, &lDay, &lMonth, &lYear ); + hb_retc( hb_cmonth( lMonth ) ); + } + else + hb_errRT_BASE( EG_ARG, 1116, NULL, "CMONTH" ); } else - { - /* NOTE: Clipper catches this at compile time! */ - hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "CMONTH"); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "CMONTH" ); /* NOTE: Clipper catches this at compile time! */ } HARBOUR HB_CDOW( void ) { - PHB_ITEM pDate = hb_param( 1, IT_DATE ); - long lDay, lMonth, lYear; - - if( hb_pcount() ) + if( hb_pcount() == 1 ) { + PHB_ITEM pDate = hb_param( 1, IT_DATE ); + if( pDate ) { + long lDay, lMonth, lYear; + hb_dateDecode( pDate->item.asDate.value, &lDay, &lMonth, &lYear ); hb_retc( hb_cdow( hb_dow( lDay, lMonth, lYear ) ) ); } else - { - hb_errRT_BASE(EG_ARG, 1117, NULL, "CDOW"); - } + hb_errRT_BASE( EG_ARG, 1117, NULL, "CDOW" ); } else - { - /* NOTE: Clipper catches this at compile time! */ - hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "CDOW"); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "CDOW" ); /* NOTE: Clipper catches this at compile time! */ } HARBOUR HB_SECONDS( void ) @@ -670,8 +706,5 @@ HARBOUR HB_SECONDS( void ) if( hb_pcount() == 0 ) hb_retnd( hb_secondsToday() ); else - { - /* QUESTION: Clipper catches this at compile time! */ - hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "SECONDS"); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "SECONDS" ); /* NOTE: Clipper catches this at compile time! */ } diff --git a/harbour/source/rtl/descend.c b/harbour/source/rtl/descend.c index 6279451bff..174cd7bafc 100644 --- a/harbour/source/rtl/descend.c +++ b/harbour/source/rtl/descend.c @@ -80,38 +80,35 @@ char * hb_strDescend( char * szText, ULONG ulLen ) HARBOUR HB_DESCEND( void ) { - if( hb_pcount() == 1 ) + PHB_ITEM pItem = hb_param( 1, IT_ANY ); + + if( pItem ) { - PHB_ITEM pItem = hb_param( 1, IT_ANY ); - - if( pItem ) + if( IS_STRING( pItem ) ) + hb_retclen( hb_strDescend( pItem->item.asString.value, pItem->item.asString.length ), pItem->item.asString.length ); + else if( IS_DATE( pItem ) ) + hb_retnl( 5231808 - pItem->item.asDate.value ); + else if( IS_NUMERIC( pItem ) ) { - if( IS_STRING( pItem ) ) - hb_retclen( hb_strDescend( pItem->item.asString.value, pItem->item.asString.length ), pItem->item.asString.length ); - else if( IS_DATE( pItem ) ) - hb_retnl( 5231808 - pItem->item.asDate.value ); - else if( IS_NUMERIC( pItem ) ) - { - PHB_ITEM pReturn; - double dValue; + PHB_ITEM pReturn; + double dValue; - if( IS_DOUBLE( pItem ) ) - dValue = pItem->item.asDouble.value; - else if( IS_INTEGER( pItem ) ) - dValue = ( double ) pItem->item.asInteger.value; - else if( IS_LONG( pItem ) ) - dValue = ( double ) pItem->item.asLong.value; + if( IS_DOUBLE( pItem ) ) + dValue = pItem->item.asDouble.value; + else if( IS_INTEGER( pItem ) ) + dValue = ( double ) pItem->item.asInteger.value; + else if( IS_LONG( pItem ) ) + dValue = ( double ) pItem->item.asLong.value; - pReturn = hb_itemPutND( NULL, -1 * dValue ); - hb_itemReturn( pReturn ); - hb_itemRelease( pReturn ); + pReturn = hb_itemPutND( NULL, -1 * dValue ); + hb_itemReturn( pReturn ); + hb_itemRelease( pReturn ); /* It is dangerous to operate on the stack directly - stack.Return.wDec = pItem->wDec; + stack.Return.wDec = pItem->wDec; */ - } - else if( IS_LOGICAL( pItem ) ) - hb_retl( ! pItem->item.asLogical.value ); } + else if( IS_LOGICAL( pItem ) ) + hb_retl( ! pItem->item.asLogical.value ); } } diff --git a/harbour/source/rtl/filesys.c b/harbour/source/rtl/filesys.c index 0b08906bc1..454fca0ad3 100644 --- a/harbour/source/rtl/filesys.c +++ b/harbour/source/rtl/filesys.c @@ -2,7 +2,7 @@ * $Id$ */ -/* NOTE: In DOS/DJGPP under WinNT4 hb_fsSeek( fhnd, offset < 0, FS_SET) will +/* NOTE: In DOS/DJGPP under WinNT4 hb_fsSeek( fhnd, offset < 0, FS_SET) will set the file pointer to the passed negative value, and the subsequent hb_fsWrite() call will fail. In CA-Clipper hb_fsSeek() will fail, the pointer will not be moved, and thus the hb_fsWrite() call will @@ -698,7 +698,7 @@ HARBOUR HB_FOPEN( void ) { if( ISCHAR( 1 ) ) { - hb_retni( hb_fsOpen( ( BYTE * ) hb_parc( 1 ), + hb_retni( hb_fsOpen( ( BYTE * ) hb_parc( 1 ), ISNUM( 2 ) ? hb_parni( 2 ) : FO_READ ) ); } else @@ -713,7 +713,7 @@ HARBOUR HB_FCREATE( void ) FHANDLE hFileHandle; if( ISCHAR( 1 ) ) - hFileHandle = hb_fsCreate( ( BYTE * ) hb_parc( 1 ), + hFileHandle = hb_fsCreate( ( BYTE * ) hb_parc( 1 ), ISNUM( 2 ) ? hb_parni( 2 ) : FC_NORMAL ); else hFileHandle = FS_ERROR; @@ -756,8 +756,8 @@ HARBOUR HB_FWRITE( void ) ULONG ulWritten; if( ISNUM( 1 ) && ISCHAR( 2 ) ) - ulWritten = hb_fsWrite( hb_parni( 1 ), - ( BYTE * ) hb_parc( 2 ), + ulWritten = hb_fsWrite( hb_parni( 1 ), + ( BYTE * ) hb_parc( 2 ), ISNUM( 3 ) ? hb_parnl( 3 ) : hb_parclen( 2 ) ); else ulWritten = 0; @@ -797,7 +797,7 @@ HARBOUR HB_FRENAME( void ) { if( ISCHAR( 1 ) && ISCHAR( 2 ) ) { - hb_fsRename( ( BYTE * ) hb_parc( 1 ), + hb_fsRename( ( BYTE * ) hb_parc( 1 ), ( BYTE * ) hb_parc( 2 ) ); } @@ -809,8 +809,8 @@ HARBOUR HB_FSEEK( void ) ULONG ulPos; if( ISNUM( 1 ) && ISNUM( 2 ) ) - ulPos = hb_fsSeek( hb_parni( 1 ), - hb_parnl( 2 ), + ulPos = hb_fsSeek( hb_parni( 1 ), + hb_parnl( 2 ), ISNUM( 3 ) ? hb_parni( 3 ) : FS_SET ); else ulPos = 0; @@ -820,39 +820,44 @@ HARBOUR HB_FSEEK( void ) HARBOUR HB_FILE( void ) { - if( ISCHAR( 1 ) ) + if( hb_pcount() == 1 ) { + if( ISCHAR( 1 ) ) + { /* TODO: Check if F_OK is defined in all compilers */ #ifdef OS_UNIX_COMPATIBLE - hb_retl( access( hb_parc( 1 ), F_OK ) == 0 ); + hb_retl( access( hb_parc( 1 ), F_OK ) == 0 ); #else #ifdef __MPW__ - int hFileHandle; + int hFileHandle; - if( ( hFileHandle = open( hb_parc( 1 ), O_RDONLY ) ) >= 0 ) - { - close( hFileHandle ); - hb_retl( TRUE ); - } - else - hb_retl( FALSE ); + if( ( hFileHandle = open( hb_parc( 1 ), O_RDONLY ) ) >= 0 ) + { + close( hFileHandle ); + hb_retl( TRUE ); + } + else + hb_retl( FALSE ); #else - hb_retl( access( hb_parc( 1 ), 0 ) == 0 ); + hb_retl( access( hb_parc( 1 ), 0 ) == 0 ); #endif #endif + } + else + hb_retl( FALSE ); } else - hb_retl( FALSE ); + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "FILE" ); /* NOTE: Clipper catches this at compile time! */ } HARBOUR HB_FREADSTR( void ) @@ -887,7 +892,7 @@ HARBOUR HB_FREADSTR( void ) HARBOUR HB_CURDIR( void ) { - hb_retc( ( char * ) hb_fsCurDir( ( ISCHAR( 1 ) && hb_parclen( 1 ) > 0 ) ? + hb_retc( ( char * ) hb_fsCurDir( ( ISCHAR( 1 ) && hb_parclen( 1 ) > 0 ) ? ( USHORT )( toupper( *hb_parc( 1 ) ) - 'A' + 1 ) : 0 ) ); } diff --git a/harbour/source/rtl/hardcr.c b/harbour/source/rtl/hardcr.c index d2678aae76..2e31be319c 100644 --- a/harbour/source/rtl/hardcr.c +++ b/harbour/source/rtl/hardcr.c @@ -64,19 +64,19 @@ #include "extend.h" -#define CHR_HARD1 ((char)13) +#define CHR_HARD1 ( ( char ) 13 ) -#define CHR_SOFT1 ((char)141) -#define CHR_SOFT2 ((char)10) +#define CHR_SOFT1 ( ( char ) 141 ) +#define CHR_SOFT2 ( ( char ) 10 ) char * hb_strHardCR( char * pszString, ULONG ulStringLen ) { ULONG ulStringPos; - for ( ulStringPos = 0; ulStringPos < ulStringLen; ulStringPos++ ) + for( ulStringPos = 0; ulStringPos < ulStringLen; ulStringPos++ ) { - if ( pszString[ ulStringPos ] == CHR_SOFT1 && - pszString[ ulStringPos + 1 ] == CHR_SOFT2 ) + if( pszString[ ulStringPos ] == CHR_SOFT1 && + pszString[ ulStringPos + 1 ] == CHR_SOFT2 ) { pszString[ ulStringPos ] = CHR_HARD1; } @@ -87,7 +87,7 @@ char * hb_strHardCR( char * pszString, ULONG ulStringLen ) HARBOUR HB_HARDCR( void ) { - if ( ISCHAR( 1 ) ) + if( ISCHAR( 1 ) ) { ULONG ulStringLen = hb_parclen( 1 ); diff --git a/harbour/source/rtl/itemapi.c b/harbour/source/rtl/itemapi.c index ebea4cb73c..bc71ac56d7 100644 --- a/harbour/source/rtl/itemapi.c +++ b/harbour/source/rtl/itemapi.c @@ -39,6 +39,7 @@ BOOL hb_evalNew( PEVALINFO pEvalInfo, PHB_ITEM pItem ) pEvalInfo->pItems[ 0 ] = pItem; bResult = TRUE; } + return bResult; } @@ -54,13 +55,14 @@ BOOL hb_evalPutParam( PEVALINFO pEvalInfo, PHB_ITEM pItem ) { if( ! pEvalInfo->pItems[ w ] ) { - pEvalInfo->pItems[ w ] = hb_itemNew( 0 ); + pEvalInfo->pItems[ w ] = hb_itemNew( NULL ); hb_itemCopy( pEvalInfo->pItems[ w ], pItem ); bResult = TRUE; break; } } } + return bResult; } @@ -74,14 +76,16 @@ BOOL hb_evalRelease( PEVALINFO pEvalInfo ) for( w = 0; w < HB_EVAL_PARAM_MAX_ + 1; w++ ) hb_itemRelease( pEvalInfo->pItems[ w ] ); + bResult = TRUE; } + return bResult; } PHB_ITEM hb_evalLaunch( PEVALINFO pEvalInfo ) { - PHB_ITEM pResult = 0; + PHB_ITEM pResult = NULL; if( pEvalInfo ) { @@ -91,23 +95,26 @@ PHB_ITEM hb_evalLaunch( PEVALINFO pEvalInfo ) { hb_vmPushSymbol( hb_dynsymGet( hb_itemGetC( pEvalInfo->pItems[ 0 ] ) )->pSymbol ); hb_vmPushNil(); - while( w < (HB_EVAL_PARAM_MAX_ + 1) && pEvalInfo->pItems[ w ] ) + while( w < ( HB_EVAL_PARAM_MAX_ + 1 ) && pEvalInfo->pItems[ w ] ) hb_vmPush( pEvalInfo->pItems[ w++ ] ); hb_vmDo( w - 1 ); - pResult = hb_itemNew( 0 ); + + pResult = hb_itemNew( NULL ); hb_itemCopy( pResult, &stack.Return ); } else if( IS_BLOCK( pEvalInfo->pItems[ 0 ] ) ) { hb_vmPushSymbol( &symEval ); hb_vmPush( pEvalInfo->pItems[ 0 ] ); - while( w < (HB_EVAL_PARAM_MAX_ + 1) && pEvalInfo->pItems[ w ] ) + while( w < ( HB_EVAL_PARAM_MAX_ + 1 ) && pEvalInfo->pItems[ w ] ) hb_vmPush( pEvalInfo->pItems[ w++ ] ); hb_vmDo( w - 1 ); - pResult = hb_itemNew( 0 ); + + pResult = hb_itemNew( NULL ); hb_itemCopy( pResult, &stack.Return ); } } + return pResult; } @@ -125,10 +132,10 @@ PHB_ITEM hb_itemNew( PHB_ITEM pNull ) PHB_ITEM hb_itemParam( WORD wParam ) { - PHB_ITEM pNew = hb_itemNew( 0 ); + PHB_ITEM pNew = hb_itemNew( NULL ); if( hb_param( wParam, IT_ANY ) ) - hb_itemCopy(pNew, hb_param( wParam, IT_ANY )); + hb_itemCopy( pNew, hb_param( wParam, IT_ANY )); return pNew; } @@ -139,34 +146,36 @@ BOOL hb_itemRelease( PHB_ITEM pItem ) if( pItem ) { - hb_itemClear(pItem); + hb_itemClear( pItem ); hb_xfree( pItem ); bResult = TRUE; } + return bResult; } PHB_ITEM hb_itemArrayNew( ULONG ulLen ) { - PHB_ITEM pItem = hb_itemNew(0); + PHB_ITEM pItem = hb_itemNew( NULL ); - hb_arrayNew(pItem, ulLen); + hb_arrayNew( pItem, ulLen ); return pItem; } PHB_ITEM hb_itemArrayGet( PHB_ITEM pArray, ULONG ulIndex ) { - PHB_ITEM pItem = hb_itemNew(0); + PHB_ITEM pItem = hb_itemNew( NULL ); - hb_arrayGet(pArray, ulIndex, pItem); + hb_arrayGet( pArray, ulIndex, pItem ); return pItem; } PHB_ITEM hb_itemArrayPut( PHB_ITEM pArray, ULONG ulIndex, PHB_ITEM pItem ) { - hb_arraySet(pArray, ulIndex, pItem); + hb_arraySet( pArray, ulIndex, pItem ); + return pArray; } @@ -175,12 +184,13 @@ PHB_ITEM hb_itemPutC( PHB_ITEM pItem, char * szText ) if( pItem ) hb_itemClear( pItem ); else - pItem = hb_itemNew(0); + pItem = hb_itemNew( NULL ); pItem->type = IT_STRING; pItem->item.asString.length = strlen( szText ); pItem->item.asString.value = ( char * ) hb_xgrab( pItem->item.asString.length + 1 ); strcpy( pItem->item.asString.value, szText ); + return pItem; } @@ -189,24 +199,24 @@ PHB_ITEM hb_itemPutCL( PHB_ITEM pItem, char * nszText, ULONG ulLen ) if( pItem ) hb_itemClear( pItem ); else - pItem = hb_itemNew(0); + pItem = hb_itemNew( NULL ); pItem->type = IT_STRING; pItem->item.asString.length = ulLen; pItem->item.asString.value = ( char * ) hb_xgrab( ulLen + 1 ); memcpy( pItem->item.asString.value, nszText, ulLen ); - pItem->item.asString.value[ ulLen ] = 0; + pItem->item.asString.value[ ulLen ] = '\0'; return pItem; } -char *hb_itemGetC( PHB_ITEM pItem ) +char * hb_itemGetC( PHB_ITEM pItem ) { if( pItem && IS_STRING( pItem ) ) { - char *szResult = (char *) hb_xgrab(pItem->item.asString.length + 1); - memcpy(szResult, pItem->item.asString.value, pItem->item.asString.length); - szResult[ pItem->item.asString.length ] = 0; + char * szResult = ( char * ) hb_xgrab( pItem->item.asString.length + 1 ); + memcpy( szResult, pItem->item.asString.value, pItem->item.asString.length ); + szResult[ pItem->item.asString.length ] = '\0'; return szResult; } @@ -214,14 +224,15 @@ char *hb_itemGetC( PHB_ITEM pItem ) return NULL; } -ULONG hb_itemCopyC( PHB_ITEM pItem, char *szBuffer, ULONG ulLen ) +ULONG hb_itemCopyC( PHB_ITEM pItem, char * szBuffer, ULONG ulLen ) { - if( pItem && IS_STRING(pItem) ) + if( pItem && IS_STRING( pItem ) ) { - if( !ulLen ) + if( ulLen == 0 ) ulLen = pItem->item.asString.length; - memcpy(szBuffer, pItem->item.asString.value, ulLen); + memcpy( szBuffer, pItem->item.asString.value, ulLen ); + return ulLen; } else @@ -234,15 +245,16 @@ BOOL hb_itemFreeC( char *szText ) if( szText ) { - hb_xfree(szText); + hb_xfree( szText ); bResult = TRUE; } + return bResult; } char *hb_itemGetDS( PHB_ITEM pItem, char *szDate ) { - if( pItem && IS_DATE(pItem) ) + if( pItem && IS_DATE( pItem ) ) { long lDay, lMonth, lYear; @@ -259,12 +271,18 @@ char *hb_itemGetDS( PHB_ITEM pItem, char *szDate ) BOOL hb_itemGetL( PHB_ITEM pItem ) { - if( pItem && IS_LOGICAL(pItem) ) + if( pItem ) { - return pItem->item.asLogical.value; + switch( pItem->type ) + { + case IT_LOGICAL: return pItem->item.asLogical.value; + case IT_INTEGER: return pItem->item.asInteger.value != 0; + case IT_LONG: return pItem->item.asLong.value != 0; + case IT_DOUBLE: return pItem->item.asDouble.value != 0.0; + } } - else - return FALSE; + + return FALSE; } double hb_itemGetND( PHB_ITEM pItem ) @@ -273,14 +291,13 @@ double hb_itemGetND( PHB_ITEM pItem ) { switch( pItem->type ) { - case IT_INTEGER: return pItem->item.asInteger.value; case IT_DOUBLE: return pItem->item.asDouble.value; - case IT_LONG: return pItem->item.asLong.value; - default: return 0; + case IT_INTEGER: return ( double ) pItem->item.asInteger.value; + case IT_LONG: return ( double ) pItem->item.asLong.value; } } - else - return 0; + + return 0; } long hb_itemGetNL( PHB_ITEM pItem ) @@ -289,20 +306,20 @@ long hb_itemGetNL( PHB_ITEM pItem ) { switch( pItem->type ) { - case IT_INTEGER: return pItem->item.asInteger.value; - case IT_DOUBLE: return pItem->item.asDouble.value; case IT_LONG: return pItem->item.asLong.value; - default: return 0; + case IT_INTEGER: return ( long ) pItem->item.asInteger.value; + case IT_DOUBLE: return ( long ) pItem->item.asDouble.value; + case IT_DATE: return pItem->item.asDate.value; } } - else - return 0; + + return 0; } PHB_ITEM hb_itemReturn( PHB_ITEM pItem ) { if( pItem ) - hb_itemCopy(&stack.Return, pItem); + hb_itemCopy( &stack.Return, pItem ); return pItem; } @@ -314,16 +331,16 @@ PHB_ITEM hb_itemPutDS( PHB_ITEM pItem, char *szDate ) if( pItem ) hb_itemClear( pItem ); else - pItem = hb_itemNew(0); + pItem = hb_itemNew( NULL ); hb_dateStrGet( szDate, &lDay, &lMonth, &lYear ); hb_itemClear( pItem ); - pItem->type = IT_DATE; + pItem->type = IT_DATE; /* QUESTION: Is this ok ? we are going to use a long to store the date */ /* QUESTION: What happens if we use sizeof( LONG ) instead ? */ /* QUESTION: Would it break Clipper language code ? */ - pItem->item.asDate.value = hb_dateEncode(lDay, lMonth, lYear); + pItem->item.asDate.value = hb_dateEncode( lDay, lMonth, lYear ); return pItem; } @@ -333,10 +350,11 @@ PHB_ITEM hb_itemPutL( PHB_ITEM pItem, BOOL bValue ) if( pItem ) hb_itemClear( pItem ); else - pItem = hb_itemNew(0); + pItem = hb_itemNew( NULL ); pItem->type = IT_LOGICAL; pItem->item.asLogical.value = bValue; + return pItem; } @@ -345,13 +363,14 @@ PHB_ITEM hb_itemPutND( PHB_ITEM pItem, double dNumber ) if( pItem ) hb_itemClear( pItem ); else - pItem = hb_itemNew(0); + pItem = hb_itemNew( NULL ); pItem->type = IT_DOUBLE; if( dNumber > 10000000000.0 ) pItem->item.asDouble.length = 20; else pItem->item.asDouble.length = 10; - pItem->item.asDouble.decimal = hb_set.HB_SET_DECIMALS; + pItem->item.asDouble.decimal = hb_set.HB_SET_DECIMALS; pItem->item.asDouble.value = dNumber; + return pItem; } @@ -360,11 +379,12 @@ PHB_ITEM hb_itemPutNL( PHB_ITEM pItem, long lNumber ) if( pItem ) hb_itemClear( pItem ); else - pItem = hb_itemNew(0); + pItem = hb_itemNew( NULL ); pItem->type = IT_LONG; pItem->item.asLong.length = 10; pItem->item.asLong.value = lNumber; + return pItem; } @@ -374,10 +394,11 @@ ULONG hb_itemSize( PHB_ITEM pItem ) { switch( pItem->type ) { - case IT_ARRAY: return hb_arrayLen(pItem); + case IT_ARRAY: return hb_arrayLen( pItem ); case IT_STRING: return pItem->item.asString.length; } } + return 0; } @@ -432,7 +453,7 @@ void hb_itemCopy( PHB_ITEM pDest, PHB_ITEM pSource ) { pDest->item.asString.value = ( char * ) hb_xgrab( pSource->item.asString.length + 1 ); memcpy( pDest->item.asString.value, pSource->item.asString.value, pSource->item.asString.length ); - pDest->item.asString.value[ pSource->item.asString.length ] = 0; + pDest->item.asString.value[ pSource->item.asString.length ] = '\0'; } else if( IS_ARRAY( pSource ) ) @@ -459,21 +480,21 @@ PHB_ITEM hb_itemUnRef( PHB_ITEM pItem ) { HB_VALUE_PTR pValue; - pValue = *(pItem->item.asMemvar.itemsbase) + pItem->item.asMemvar.offset + - pItem->item.asMemvar.value; + pValue = *( pItem->item.asMemvar.itemsbase ) + pItem->item.asMemvar.offset + + pItem->item.asMemvar.value; pItem = &pValue->item; } else { if( pItem->item.asRefer.value >= 0 ) - pItem = *(pItem->item.asRefer.itemsbase) + pItem->item.asRefer.offset + - pItem->item.asRefer.value; + pItem = *( pItem->item.asRefer.itemsbase ) + pItem->item.asRefer.offset + + pItem->item.asRefer.value; else { /* local variable referenced in a codeblock */ - pItem = hb_codeblockGetRef( *(pItem->item.asRefer.itemsbase) + pItem->item.asRefer.offset, - pItem ); + pItem = hb_codeblockGetRef( *( pItem->item.asRefer.itemsbase ) + pItem->item.asRefer.offset, + pItem ); } } } @@ -492,27 +513,29 @@ PHB_ITEM hb_itemUnRef( PHB_ITEM pItem ) /* Check whether two strings are equal (0), smaller (-1), or greater (1) */ int hb_itemStrCmp( PHB_ITEM pFirst, PHB_ITEM pSecond, BOOL bForceExact ) { - char *szFirst = pFirst->item.asString.value; - char *szSecond = pSecond->item.asString.value; + char * szFirst = pFirst->item.asString.value; + char * szSecond = pSecond->item.asString.value; ULONG lLenFirst = pFirst->item.asString.length; ULONG lLenSecond = pSecond->item.asString.length; - long lMinLen; - long lCounter; - int iRet = 0; /* Current status */ + long lMinLen; + long lCounter; + int iRet = 0; /* Current status */ - if (hb_set.HB_SET_EXACT && !bForceExact) + if ( hb_set.HB_SET_EXACT && ! bForceExact ) { /* SET EXACT ON and not using == */ /* Don't include trailing spaces */ while( lLenFirst > 0 && szFirst[ lLenFirst - 1 ] == ' ') lLenFirst--; while( lLenSecond > 0 && szSecond[ lLenSecond - 1 ] == ' ') lLenSecond--; } + lMinLen = lLenFirst < lLenSecond ? lLenFirst : lLenSecond; + if( lMinLen ) /* One of the strings is empty */ { for( lCounter = 0; lCounter < lMinLen && !iRet; lCounter++ ) { if( *szFirst != *szSecond ) /* Difference found */ - iRet = (*szFirst < *szSecond) ? -1 : 1; + iRet = ( *szFirst < *szSecond ) ? -1 : 1; else /* TODO : #define some constants*/ { szFirst++; @@ -521,9 +544,9 @@ int hb_itemStrCmp( PHB_ITEM pFirst, PHB_ITEM pSecond, BOOL bForceExact ) } if( hb_set.HB_SET_EXACT || bForceExact || lLenSecond > lCounter ) { /* Force an exact comparison */ - if( !iRet && lLenFirst != lLenSecond ) + if( ! iRet && lLenFirst != lLenSecond ) /* If length is different ! */ - iRet = (lLenFirst < lLenSecond) ? -1 : 1; + iRet = ( lLenFirst < lLenSecond ) ? -1 : 1; } } else @@ -531,12 +554,13 @@ int hb_itemStrCmp( PHB_ITEM pFirst, PHB_ITEM pSecond, BOOL bForceExact ) if( lLenFirst != lLenSecond ) /* Both empty ? */ { if( hb_set.HB_SET_EXACT || bForceExact ) - iRet = (lLenFirst < lLenSecond) ? -1 : 1; + iRet = ( lLenFirst < lLenSecond ) ? -1 : 1; else - iRet = (lLenSecond == 0) ? 0 : -1; + iRet = ( lLenSecond == 0 ) ? 0 : -1; } else iRet = 0; /* Both empty => Equal ! */ } - return(iRet); + + return iRet; } diff --git a/harbour/source/rtl/mtran.c b/harbour/source/rtl/mtran.c index 4e5e263658..ff68e60d8f 100644 --- a/harbour/source/rtl/mtran.c +++ b/harbour/source/rtl/mtran.c @@ -67,30 +67,30 @@ #include "extend.h" -#define CHR_HARD1 ((char)13) -#define CHR_HARD2 ((char)10) +#define CHR_HARD1 ( ( char ) 13 ) +#define CHR_HARD2 ( ( char ) 10 ) -#define CHR_SOFT1 ((char)141) -#define CHR_SOFT2 ((char)10) +#define CHR_SOFT1 ( ( char ) 141 ) +#define CHR_SOFT2 ( ( char ) 10 ) /* NOTE: pszResult must have an allocated buffer of at least */ /* ulStringLen */ -char * hb_strMemotran( char *pszResult, ULONG *ulResultLen, char *pszString, ULONG ulStringLen, char cHardcr, char cSoftcr ) +char * hb_strMemotran( char * pszResult, ULONG * ulResultLen, char * pszString, ULONG ulStringLen, char cHardcr, char cSoftcr ) { ULONG ulStringPos = 0; ULONG ulResultPos = 0; - while ( ulStringPos < ulStringLen ) + while( ulStringPos < ulStringLen ) { - if ( pszString[ ulStringPos ] == CHR_HARD1 && - pszString[ ulStringPos + 1 ] == CHR_HARD2 ) + if( pszString[ ulStringPos ] == CHR_HARD1 && + pszString[ ulStringPos + 1 ] == CHR_HARD2 ) { pszResult[ ulResultPos++ ] = cHardcr; ulStringPos += 2; } - else if ( pszString[ ulStringPos ] == CHR_SOFT1 && - pszString[ ulStringPos + 1 ] == CHR_SOFT2 ) + else if( pszString[ ulStringPos ] == CHR_SOFT1 && + pszString[ ulStringPos + 1 ] == CHR_SOFT2 ) { pszResult[ ulResultPos++ ] = cSoftcr; ulStringPos += 2; @@ -112,7 +112,7 @@ HARBOUR HB_MEMOTRAN( void ) { if( ISCHAR( 1 ) ) { - char *pszResult = (char *) hb_xgrab ( hb_parclen( 1 ) + 1 ); + char * pszResult = ( char * ) hb_xgrab ( hb_parclen( 1 ) + 1 ); char cHardcr = ISCHAR( 2 ) ? *hb_parc( 2 ) : ';'; char cSoftcr = ISCHAR( 3 ) ? *hb_parc( 3 ) : ' '; ULONG ulResultLen; diff --git a/harbour/source/rtl/strings.c b/harbour/source/rtl/strings.c index d641ae4487..31b9123522 100644 --- a/harbour/source/rtl/strings.c +++ b/harbour/source/rtl/strings.c @@ -222,15 +222,10 @@ HARBOUR HB_LTRIM( void ) hb_retclen( szText, lLen ); } else - { hb_errRT_BASE( EG_ARG, 1101, NULL, "LTRIM" ); - } } else - { - /* NOTE: Clipper catches this at compile time! */ - hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "LTRIM" ); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "LTRIM" ); /* NOTE: Clipper catches this at compile time! */ } /* returns szText and the new length in lLen */ @@ -250,67 +245,64 @@ ULONG hb_strRTrimLen( char *szText, ULONG lLen, BOOL bAnySpace ) return lLen; } +/* NOTE: The second parameter is a Harbour extension */ /* trims trailing spaces from a string */ /* TEST: QOUT( "rtrim( ' hello world ' ) = '" + rtrim( ' hello world ' ) + "'" ) */ HARBOUR HB_RTRIM( void ) { - if( hb_pcount() > 0 ) + if( hb_pcount() >= 1 && hb_pcount() <= 2 ) { PHB_ITEM pText = hb_param( 1, IT_STRING ); + if( pText ) { - BOOL bAnySpace = ( hb_pcount() > 1 ? hb_parl( 2 ) : FALSE ); + BOOL bAnySpace = ( ISLOG( 2 ) ? hb_parl( 2 ) : FALSE ); hb_retclen( pText->item.asString.value, hb_strRTrimLen( pText->item.asString.value, pText->item.asString.length, bAnySpace ) ); } else - { #ifdef HARBOUR_STRICT_CLIPPER_COMPATIBILITY /* Clipper doesn't error, but only in RTRIM. TRIM() throws an error, though */ hb_retc( "" ); #else hb_errRT_BASE( EG_ARG, 1100, NULL, "RTRIM" ); #endif - } } else - { - /* NOTE: Clipper catches this at compile time! */ - hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "RTRIM" ); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "RTRIM" ); /* NOTE: Clipper catches this at compile time! */ } +/* NOTE: The second parameter is a Harbour extension */ + /* synonymn for RTRIM */ HARBOUR HB_TRIM( void ) { - if( hb_pcount() > 0 ) + if( hb_pcount() >= 1 && hb_pcount() <= 2 ) { PHB_ITEM pText = hb_param( 1, IT_STRING ); + if( pText ) { - BOOL bAnySpace = ( hb_pcount() > 1 ? hb_parl( 2 ) : FALSE ); + BOOL bAnySpace = ( ISLOG( 2 ) ? hb_parl( 2 ) : FALSE ); hb_retclen( pText->item.asString.value, hb_strRTrimLen( pText->item.asString.value, pText->item.asString.length, bAnySpace ) ); } else - { hb_errRT_BASE( EG_ARG, 1100, NULL, "TRIM" ); - } } else - { - /* NOTE: Clipper catches this at compile time! */ - hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "TRIM" ); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "TRIM" ); /* NOTE: Clipper catches this at compile time! */ } +/* NOTE: The second parameter is a Harbour extension */ + /* trims leading and trailing spaces from a string */ /* TEST: QOUT( "alltrim( ' hello world ' ) = '" + alltrim( ' hello world ' ) + "'" ) */ HARBOUR HB_ALLTRIM( void ) { - if( hb_pcount() > 0 ) + if( ISCHAR( 1 ) ) { char *szText = hb_parc( 1 ); - BOOL bAnySpace = ( hb_pcount() > 1 ? hb_parl( 2 ) : FALSE ); + BOOL bAnySpace = ( ISLOG( 2 ) ? hb_parl( 2 ) : FALSE ); ULONG lLen; lLen = hb_strRTrimLen( szText, hb_parclen( 1 ), bAnySpace ); @@ -379,7 +371,7 @@ HARBOUR HB_PADR( void ) char buffer[ 128 ]; char *szText = hb_itemPadConv( hb_param( 1, IT_ANY ), buffer, &ulSize ); - if( szText && hb_pcount() > 1 ) + if( szText && ISNUM( 2 ) ) { LONG lLen = hb_parnl( 2 ); @@ -391,7 +383,7 @@ HARBOUR HB_PADR( void ) memcpy( szResult, szText, ( LONG ) ulSize ); - cPad = ( hb_pcount() > 2 ? *( hb_parc( 3 ) ) : ' ' ); + cPad = ( ISCHAR( 3 ) ? *( hb_parc( 3 ) ) : ' ' ); for( lPos = ( LONG ) ulSize; lPos < lLen; lPos++ ) szResult[ lPos ] = cPad; @@ -425,7 +417,7 @@ HARBOUR HB_PADL( void ) char buffer[ 128 ]; char * szText = hb_itemPadConv( hb_param( 1, IT_ANY ), buffer, &ulSize ); - if( szText && hb_pcount() > 1 ) + if( szText && ISNUM( 2 ) ) { LONG lLen = hb_parnl( 2 ); @@ -437,7 +429,7 @@ HARBOUR HB_PADL( void ) memcpy( szResult + lPos, szText, ( LONG ) ulSize ); - cPad = ( hb_pcount() > 2 ? *( hb_parc( 3 ) ) : ' '); + cPad = ( ISCHAR( 3 ) ? *( hb_parc( 3 ) ) : ' '); for(; lPos > 0; lPos--) { @@ -467,7 +459,7 @@ HARBOUR HB_PADC( void ) char buffer[ 128 ]; char *szText = hb_itemPadConv( hb_param( 1, IT_ANY ), buffer, &ulSize ); - if( szText && hb_pcount() > 1 ) + if( szText && ISNUM( 2 ) ) { LONG lLen = hb_parnl( 2 ); @@ -479,7 +471,7 @@ HARBOUR HB_PADC( void ) memcpy( szResult + lPos, szText, ( LONG ) ulSize + 1 ); - cPad = ( hb_pcount() > 2 ? *hb_parc( 3 ) : ' ' ); + cPad = ( ISCHAR( 3 ) ? *hb_parc( 3 ) : ' ' ); for( w = 0; w < lPos; w++ ) szResult[ w ] = cPad; @@ -537,25 +529,20 @@ ULONG hb_strAt( char *szSub, ULONG ulSubLen, char *szText, ULONG ulLen ) /* TEST: QOUT( "at( 'cde', 'abcdefgfedcba' ) = '" + at( 'cde', 'abcsefgfedcba' ) + "'" ) */ HARBOUR HB_AT( void ) { - PHB_ITEM pSub = hb_param( 1, IT_ANY ); - PHB_ITEM pText = hb_param( 2, IT_ANY ); - - if( pText && pSub ) + if( hb_pcount() == 2 ) { + PHB_ITEM pSub = hb_param( 1, IT_STRING ); + PHB_ITEM pText = hb_param( 2, IT_STRING ); + if( IS_STRING( pText ) && IS_STRING( pSub ) ) { hb_retnl( hb_strAt( pSub->item.asString.value, pSub->item.asString.length, pText->item.asString.value, pText->item.asString.length ) ); } else - { hb_errRT_BASE( EG_ARG, 1108, NULL, "AT" ); - } } else - { - /* NOTE: Clipper catches this at compile time! */ - hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "AT" ); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "AT" ); /* NOTE: Clipper catches this at compile time! */ } /* locates a substring in a string starting at the end */ @@ -567,9 +554,8 @@ HARBOUR HB_RAT( void ) if( ulSubLen ) { long lPos = hb_parclen( 2 ) - ulSubLen; - if( lPos < 0 ) - hb_retni( 0 ); - else + + if( lPos >= 0 ) { char *szSub = hb_parc( 1 ); char *szText = hb_parc( 2 ); @@ -581,8 +567,11 @@ HARBOUR HB_RAT( void ) bFound = ( memcmp( szSub, szText + lPos, ulSubLen ) == 0 ); lPos--; } + hb_retnl( bFound ? lPos + 2 : 0 ); } + else + hb_retni( 0 ); } else /* This function never seems to raise an error */ @@ -604,15 +593,10 @@ HARBOUR HB_CHR( void ) hb_retclen( chr, 1 ); } else - { hb_errRT_BASE( EG_ARG, 1104, NULL, "CHR" ); - } } else - { - /* NOTE: Clipper catches this at compile time! */ - hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "CHR" ); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "CHR" ); /* NOTE: Clipper catches this at compile time! */ } /* converts a character value to an ASCII code */ @@ -630,15 +614,10 @@ HARBOUR HB_ASC( void ) hb_retni( 0 ); } else - { hb_errRT_BASE( EG_ARG, 1107, NULL, "ASC" ); - } } else - { - /* NOTE: Clipper catches this at compile time! */ - hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "ASC" ); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "ASC" ); /* NOTE: Clipper catches this at compile time! */ } /* returns the left-most n characters in string */ @@ -648,73 +627,44 @@ HARBOUR HB_LEFT( void ) { PHB_ITEM pText = hb_param( 1, IT_STRING ); - if( pText ) + if( pText && ISNUM( 2 ) ) { - if( ISNUM( 2 ) ) - { - LONG lLen = hb_parnl( 2 ); + LONG lLen = hb_parnl( 2 ); - if( lLen > ( LONG ) pText->item.asString.length ) - lLen = ( LONG ) pText->item.asString.length; + if( lLen > ( LONG ) pText->item.asString.length ) + lLen = ( LONG ) pText->item.asString.length; - else if( lLen < 0 ) - lLen = 0; + else if( lLen < 0 ) + lLen = 0; - hb_retclen( pText->item.asString.value, lLen ); - } - else - { - hb_errRT_BASE( EG_ARG, 3009, NULL, "LEFT" ); - } + hb_retclen( pText->item.asString.value, lLen ); } else - { hb_errRT_BASE( EG_ARG, 1124, NULL, "LEFT" ); - } } else - { - /* NOTE: Clipper catches this at compile time! */ - hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "LEFT" ); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "LEFT" ); /* NOTE: Clipper catches this at compile time! */ } /* returns the right-most n characters in string */ HARBOUR HB_RIGHT( void ) { - if( hb_pcount() == 2 ) + PHB_ITEM pText = hb_param( 1, IT_STRING ); + + if( pText && ISNUM( 2 ) ) { - PHB_ITEM pText = hb_param( 1, IT_STRING ); + LONG lLen = hb_parnl( 2 ); - if( pText ) - { - if( ISNUM( 2 ) ) - { - LONG lLen = hb_parnl( 2 ); + if( lLen > ( LONG ) pText->item.asString.length ) + lLen = ( LONG ) pText->item.asString.length; - if( lLen > ( LONG ) pText->item.asString.length ) - lLen = ( LONG ) pText->item.asString.length; + else if( lLen < 0 ) + lLen = 0; - else if( lLen < 0 ) - lLen = 0; - - hb_retclen( pText->item.asString.value + pText->item.asString.length - lLen, lLen ); - } - else - { - /* Clipper doesn't error */ - hb_retc( "" ); - } - } - else - { - /* Clipper doesn't error */ - hb_retc( "" ); - } + hb_retclen( pText->item.asString.value + pText->item.asString.length - lLen, lLen ); } else { - /* NOTE: Clipper catches this at compile time! */ /* Clipper doesn't error */ hb_retc( "" ); } @@ -723,7 +673,7 @@ HARBOUR HB_RIGHT( void ) /* returns l characters from n characters into string */ HARBOUR HB_SUBSTR( void ) { - if( hb_pcount() > 1 && hb_pcount() < 4 ) + if( hb_pcount() >= 2 && hb_pcount() <= 3 ) { PHB_ITEM pText = hb_param( 1, IT_STRING ); @@ -765,15 +715,10 @@ HARBOUR HB_SUBSTR( void ) hb_retc( "" ); } else - { hb_errRT_BASE( EG_ARG, 1110, NULL, "SUBSTR" ); - } } else - { - /* NOTE: Clipper catches this at compile time! */ - hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "SUBSTR" ); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "SUBSTR" ); /* NOTE: Clipper catches this at compile time! */ } /* converts szText to lower case. Does not create a new string! */ @@ -801,15 +746,10 @@ HARBOUR HB_LOWER( void ) hb_retclen( hb_strLower( pText->item.asString.value, ulLen ), ulLen ); } else - { hb_errRT_BASE( EG_ARG, 1103, NULL, "LOWER" ); - } } else - { - /* NOTE: Clipper catches this at compile time! */ - hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "LOWER" ); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "LOWER" ); /* NOTE: Clipper catches this at compile time! */ } void hb_strupr( char * szText ) @@ -845,15 +785,10 @@ HARBOUR HB_UPPER( void ) hb_retclen( hb_strUpper( pText->item.asString.value, ulLen ), ulLen ); } else - { hb_errRT_BASE( EG_ARG, 1102, NULL, "UPPER" ); - } } else - { - /* NOTE: Clipper catches this at compile time! */ - hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "UPPER" ); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "UPPER" ); /* NOTE: Clipper catches this at compile time! */ } /* returns n copies of given string */ @@ -893,15 +828,10 @@ HARBOUR HB_REPLICATE( void ) hb_retc( "" ); } else - { hb_errRT_BASE( EG_ARG, 1106, NULL, "REPLICATE" ); - } } else - { - /* NOTE: Clipper catches this at compile time! */ - hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "REPLICATE" ); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "REPLICATE" ); /* NOTE: Clipper catches this at compile time! */ } /* returns n copies of a single space */ @@ -931,15 +861,10 @@ HARBOUR HB_SPACE( void ) hb_retc( "" ); } else - { hb_errRT_BASE( EG_ARG, 1105, NULL, "SPACE" ); - } } else - { - /* NOTE: Clipper catches this at compile time! */ - hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "SPACE" ); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "SPACE" ); /* NOTE: Clipper catches this at compile time! */ } /* replaces characters in a string */ @@ -1112,7 +1037,7 @@ HARBOUR HB_STRTRAN( void ) hb_retclen( szText, pText->item.asString.length ); } else - hb_errRT_BASE( EG_ARG, 3010, NULL, "STRTRAN" ); + hb_errRT_BASE( EG_ARG, 1126, NULL, "STRTRAN" ); } else hb_errRT_BASE( EG_ARG, 1126, NULL, "STRTRAN" ); @@ -1149,15 +1074,10 @@ HARBOUR HB_VAL( void ) stack.Return.item.asDouble.decimal = nDec; } else - { hb_errRT_BASE( EG_ARG, 1098, NULL, "VAL" ); - } } else - { - /* NOTE: Clipper catches this at compile time! */ - hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "VAL" ); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "VAL" ); /* NOTE: Clipper catches this at compile time! */ } /* converts a numeric to a string with optional width & precision. @@ -1357,7 +1277,7 @@ char * hb_itemStr( PHB_ITEM pNumber, PHB_ITEM pWidth, PHB_ITEM pDec ) HARBOUR HB_STR( void ) { - if( hb_pcount() > 0 && hb_pcount() < 4 ) + if( hb_pcount() >= 1 && hb_pcount() <= 3 ) { BOOL bValid = TRUE; PHB_ITEM pNumber = hb_param( 1, IT_NUMERIC ); @@ -1394,15 +1314,10 @@ HARBOUR HB_STR( void ) hb_retc( "" ); } else - { hb_errRT_BASE( EG_ARG, 1099, NULL, "STR" ); - } } else - { - /* NOTE: Clipper catches this at compile time! */ - hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "STR" ); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "STR" ); /* NOTE: Clipper catches this at compile time! */ } /* ------------------------------------------------- */ @@ -1479,7 +1394,7 @@ HARBOUR HB_STR( void ) HARBOUR HB_STRZERO( void ) { - if( hb_pcount() > 0 && hb_pcount() < 4 ) + if( hb_pcount() >= 1 && hb_pcount() <= 3 ) { BOOL bValid = TRUE; PHB_ITEM pNumber = hb_param( 1, IT_NUMERIC ); @@ -1549,9 +1464,7 @@ HARBOUR HB_STRZERO( void ) hb_retc( "" ); } else - { hb_errRT_BASE( EG_ARG, 9999, NULL, "STRZERO" ); - } } } diff --git a/harbour/source/rtl/transfrm.c b/harbour/source/rtl/transfrm.c index 6675c8f928..c277eb2e8e 100644 --- a/harbour/source/rtl/transfrm.c +++ b/harbour/source/rtl/transfrm.c @@ -374,245 +374,249 @@ static char *DatePicture( char * szDate, WORD wPicFlags, char * szResult ) HARBOUR HB_TRANSFORM( void ) { - PHB_ITEM pExp = hb_param( 1, IT_ANY ); /* Input parameter */ - - if( ISCHAR( 2 ) && hb_parclen( 2 ) > 0 ) + if( hb_pcount() == 2 ) { - PHB_ITEM pPic = hb_param( 2, IT_STRING ); /* Picture string */ + PHB_ITEM pExp = hb_param( 1, IT_ANY ); /* Input parameter */ - char *szPic = pPic->item.asString.value; - char *szTemp; - char *szResult; - char *szExp; - - ULONG ulPic = pPic->item.asString.length; - ULONG ulPicStart = 0; /* Start of template */ - ULONG ulExpPos = 0; - ULONG ulResultPos = 0; - ULONG n; - - WORD wPicFlags = 0; /* Function flags */ - - if( *szPic == '@' ) /* Function marker found */ + if( ISCHAR( 2 ) && hb_parclen( 2 ) > 0 ) { - wPicFlags = PictFunc( &szPic, &ulPic ); /* Get length of function */ - ulPicStart = pPic->item.asString.length - ulPic; - /* Get start of template */ - } + PHB_ITEM pPic = hb_param( 2, IT_STRING ); /* Picture string */ - switch( pExp->type & ~IT_BYREF ) - { - case IT_STRING: + char *szPic = pPic->item.asString.value; + char *szTemp; + char *szResult; + char *szExp; + + ULONG ulPic = pPic->item.asString.length; + ULONG ulPicStart = 0; /* Start of template */ + ULONG ulExpPos = 0; + ULONG ulResultPos = 0; + ULONG n; + + WORD wPicFlags = 0; /* Function flags */ + + if( *szPic == '@' ) /* Function marker found */ { - szExp = pExp->item.asString.value; - szResult = (char *)hb_xgrab( ( (ulPic-ulPicStart) > - pExp->item.asString.length) ? - (ulPic-ulPicStart) + 64 : pExp->item.asString.length + 64 ); - /* Grab enough */ - szPic += ulPicStart; /* Skip functions */ + wPicFlags = PictFunc( &szPic, &ulPic ); /* Get length of function */ + ulPicStart = pPic->item.asString.length - ulPic; + /* Get start of template */ + } - if( wPicFlags & PF_UPPER ) /* Function : @! */ + switch( pExp->type & ~IT_BYREF ) + { + case IT_STRING: { - szTemp = szExp; /* Convert to upper */ - for( n = pExp->item.asString.length; n ; n--) + szExp = pExp->item.asString.value; + szResult = (char *)hb_xgrab( ( (ulPic-ulPicStart) > + pExp->item.asString.length) ? + (ulPic-ulPicStart) + 64 : pExp->item.asString.length + 64 ); + /* Grab enough */ + szPic += ulPicStart; /* Skip functions */ + + if( wPicFlags & PF_UPPER ) /* Function : @! */ { - *szTemp = toupper( *szTemp ); - szTemp++; + szTemp = szExp; /* Convert to upper */ + for( n = pExp->item.asString.length; n ; n--) + { + *szTemp = toupper( *szTemp ); + szTemp++; + } } + + if( ulPic ) /* Template string */ + { + while( ulPic && ulExpPos < pExp->item.asString.length ) + { /* Analyze picture mask */ + switch( *szPic ) + { + case '!': /* Upper */ + { + szResult[ulResultPos++] = toupper(szExp[ulExpPos++]); + break; + } + case 'L': /* Ignored */ + case 'Y': + case '*': + case '$': + case '.': + case ',': + break; + + case '#': /* Out the character */ + case '9': + case 'A': + case 'N': + case 'X': + case ' ': + { + szResult[ulResultPos++] = szExp[ulExpPos++]; + break; + } + + default: /* Other choices */ + { + szResult[ulResultPos++] = *szPic; + ulExpPos++; + } + } + szPic++; + ulPic--; + } + } + else if( wPicFlags & (PF_UPPER + PF_REMAIN) ) + { /* Without template */ + for( n = pExp->item.asString.length; n; n--) + szResult[ulResultPos++] = *szExp++; + } + + if( ( wPicFlags & PF_REMAIN ) && ulPic ) + { /* Any chars left */ + for( n = ulPic; n; n--) + szResult[ulResultPos++] = *szPic; + /* Export remainder */ + } + hb_retclen(szResult, ulResultPos); + hb_xfree(szResult); + break; } - if( ulPic ) /* Template string */ + case IT_LOGICAL: { - while( ulPic && ulExpPos < pExp->item.asString.length ) - { /* Analyze picture mask */ + BOOL bDone = FALSE; + + szResult = (char *) hb_xgrab( ulPic + 1 ); + /* That's all folks */ + szPic += ulPicStart; /* Skip functions */ + ulResultPos = 1; + + if( ulPic ) /* Template string */ + { switch( *szPic ) { - case '!': /* Upper */ + case 'Y': /* Yes/No */ { - szResult[ulResultPos++] = toupper(szExp[ulExpPos++]); - break; - } - case 'L': /* Ignored */ - case 'Y': - case '*': - case '$': - case '.': - case ',': - break; - - case '#': /* Out the character */ - case '9': - case 'A': - case 'N': - case 'X': - case ' ': - { - szResult[ulResultPos++] = szExp[ulExpPos++]; + *szResult = pExp->item.asLogical.value ? 'Y' : 'N'; + szPic++; + ulPic--; + bDone = TRUE; /* Logical written */ break; } - default: /* Other choices */ + case '#': + case 'L': /* True/False */ { - szResult[ulResultPos++] = *szPic; - ulExpPos++; + *szResult = pExp->item.asLogical.value ? 'T' : 'F'; + szPic++; + ulPic--; + bDone = TRUE; + break; + } + + default: + { + *szResult = *szPic++; + ulPic--; } } - szPic++; - ulPic--; } + if( ( wPicFlags & PF_REMAIN ) && ulPic ) + { /* Any chars left */ + for( n = ulPic; n; n--) /* Copy remainder */ + szResult[ulResultPos++] = *szPic++; + if( !bDone ) /* Logical written ? */ + szResult[ulResultPos++] = pExp->item.asLogical.value ? 'T' : 'F'; + } + hb_retclen( szResult, ulResultPos ); + hb_xfree( szResult ); + break; } - else if( wPicFlags & (PF_UPPER + PF_REMAIN) ) - { /* Without template */ - for( n = pExp->item.asString.length; n; n--) - szResult[ulResultPos++] = *szExp++; - } - - if( ( wPicFlags & PF_REMAIN ) && ulPic ) - { /* Any chars left */ - for( n = ulPic; n; n--) - szResult[ulResultPos++] = *szPic; - /* Export remainder */ - } - hb_retclen(szResult, ulResultPos); - hb_xfree(szResult); - break; - } - - case IT_LOGICAL: - { - BOOL bDone = FALSE; - - szResult = (char *) hb_xgrab( ulPic + 1 ); - /* That's all folks */ - szPic += ulPicStart; /* Skip functions */ - ulResultPos = 1; - - if( ulPic ) /* Template string */ + case IT_INTEGER: { - switch( *szPic ) - { - case 'Y': /* Yes/No */ - { - *szResult = pExp->item.asLogical.value ? 'Y' : 'N'; - szPic++; - ulPic--; - bDone = TRUE; /* Logical written */ - break; - } - - case '#': - case 'L': /* True/False */ - { - *szResult = pExp->item.asLogical.value ? 'T' : 'F'; - szPic++; - ulPic--; - bDone = TRUE; - break; - } - - default: - { - *szResult = *szPic++; - ulPic--; - } - } + szResult = NumPicture( szPic + ulPicStart, ulPic, wPicFlags, + (double) pExp->item.asInteger.value, &ulResultPos, + pExp->item.asInteger.length, 0 ); + hb_retclen( szResult, ulResultPos ); + hb_xfree( szResult ); + break; } - if( ( wPicFlags & PF_REMAIN ) && ulPic ) - { /* Any chars left */ - for( n = ulPic; n; n--) /* Copy remainder */ - szResult[ulResultPos++] = *szPic++; - if( !bDone ) /* Logical written ? */ - szResult[ulResultPos++] = pExp->item.asLogical.value ? 'T' : 'F'; + case IT_LONG: + { + szResult = NumPicture( szPic + ulPicStart, ulPic, wPicFlags, + (double) pExp->item.asLong.value, &ulResultPos, + pExp->item.asLong.length, 0 ); + hb_retclen( szResult, ulResultPos ); + hb_xfree( szResult ); + break; + } + case IT_DOUBLE: + { + szResult = NumPicture( szPic + ulPicStart, ulPic, wPicFlags, + (double) pExp->item.asDouble.value, &ulResultPos, + pExp->item.asDouble.length, pExp->item.asDouble.decimal ); + hb_retclen( szResult, ulResultPos); + hb_xfree( szResult ); + break; + } + case IT_DATE: + { + char szResult[ 11 ]; + DatePicture( hb_pards( 1 ), wPicFlags, szResult ); + hb_retc( szResult ); + break; + } + default: + { + hb_errRT_BASE(EG_ARG, 1122, NULL, "TRANSFORM"); } - hb_retclen( szResult, ulResultPos ); - hb_xfree( szResult ); - break; - } - case IT_INTEGER: - { - szResult = NumPicture( szPic + ulPicStart, ulPic, wPicFlags, - (double) pExp->item.asInteger.value, &ulResultPos, - pExp->item.asInteger.length, 0 ); - hb_retclen( szResult, ulResultPos ); - hb_xfree( szResult ); - break; - } - case IT_LONG: - { - szResult = NumPicture( szPic + ulPicStart, ulPic, wPicFlags, - (double) pExp->item.asLong.value, &ulResultPos, - pExp->item.asLong.length, 0 ); - hb_retclen( szResult, ulResultPos ); - hb_xfree( szResult ); - break; - } - case IT_DOUBLE: - { - szResult = NumPicture( szPic + ulPicStart, ulPic, wPicFlags, - (double) pExp->item.asDouble.value, &ulResultPos, - pExp->item.asDouble.length, pExp->item.asDouble.decimal ); - hb_retclen( szResult, ulResultPos); - hb_xfree( szResult ); - break; - } - case IT_DATE: - { - char szResult[ 11 ]; - DatePicture( hb_pards( 1 ), wPicFlags, szResult ); - hb_retc( szResult ); - break; - } - default: - { - hb_errRT_BASE(EG_ARG, 1122, NULL, "TRANSFORM"); } } - } - else if ( ISCHAR( 2 ) || ISNIL( 2 ) ) /* No picture supplied */ - { - switch( pExp->type & ~IT_BYREF ) /* Default behaviour */ + else if ( ISCHAR( 2 ) || ISNIL( 2 ) ) /* No picture supplied */ { - case IT_STRING: + switch( pExp->type & ~IT_BYREF ) /* Default behaviour */ { - hb_retclen( pExp->item.asString.value, pExp->item.asString.length); - break; - } - case IT_LOGICAL: - { - hb_retc( pExp->item.asLogical.value ? "T" : "F" ); - break; - } - case IT_INTEGER: - case IT_LONG: - case IT_DOUBLE: - { - char * szStr = hb_itemStr(pExp, 0, 0); - - if (szStr) + case IT_STRING: { - hb_retc( szStr ); - hb_xfree( szStr ); + hb_retclen( pExp->item.asString.value, pExp->item.asString.length); + break; } - else - hb_retc(""); + case IT_LOGICAL: + { + hb_retc( pExp->item.asLogical.value ? "T" : "F" ); + break; + } + case IT_INTEGER: + case IT_LONG: + case IT_DOUBLE: + { + char * szStr = hb_itemStr(pExp, 0, 0); - break; - } - case IT_DATE: - { - char szResult[ 11 ]; - DatePicture( hb_pards( 1 ), 0, szResult ); - hb_retc( szResult ); - break; - } - default: - { - hb_errRT_BASE(EG_ARG, 1122, NULL, "TRANSFORM"); + if (szStr) + { + hb_retc( szStr ); + hb_xfree( szStr ); + } + else + hb_retc(""); + + break; + } + case IT_DATE: + { + char szResult[ 11 ]; + DatePicture( hb_pards( 1 ), 0, szResult ); + hb_retc( szResult ); + break; + } + default: + { + hb_errRT_BASE(EG_ARG, 1122, NULL, "TRANSFORM"); + } } } + else + hb_errRT_BASE(EG_ARG, 1122, NULL, "TRANSFORM"); } else - { - hb_errRT_BASE(EG_ARG, 1122, NULL, "TRANSFORM"); - } + hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "TRANSFORM" ); /* NOTE: Clipper catches this at compile time! */ } + diff --git a/harbour/source/runner/stdalone/external.prg b/harbour/source/runner/stdalone/external.prg index f1a44e68ac..3b369a1ad5 100644 --- a/harbour/source/runner/stdalone/external.prg +++ b/harbour/source/runner/stdalone/external.prg @@ -33,11 +33,16 @@ their web site at http://www.gnu.org/). */ -// // Files from: vm // // -//symbols from file: vm/hvm.c +//symbols from file: vm\dynsym.c +// +EXTERNAL __DYNSCOUNT +EXTERNAL __DYNSGETNAME +EXTERNAL __DYNSGETINDEX +// +//symbols from file: vm\hvm.c // EXTERNAL ERRORSYS EXTERNAL ERRORNEW @@ -52,50 +57,30 @@ EXTERNAL __QUIT EXTERNAL ERRORLEVEL EXTERNAL PCOUNT EXTERNAL PVALUE +EXTERNAL BREAK // -//symbols from file: vm/dynsym.c -// -EXTERNAL __DYNSCOUNT -EXTERNAL __DYNSGETNAME -EXTERNAL __DYNSGETINDEX -// -//symbols from file: vm/initsymb.c +//symbols from file: vm\initsymb.c // //------------------------------------------------------------ // Files from: rtl // // -//symbols from file: rtl/arrays.c +//symbols from file: rtl\arrays.c // -EXTERNAL AADD -EXTERNAL ACLONE -EXTERNAL ACOPY -EXTERNAL ADEL -EXTERNAL AEVAL -EXTERNAL AFILL -EXTERNAL AINS EXTERNAL ARRAY -EXTERNAL ASCAN +EXTERNAL AADD EXTERNAL ASIZE -EXTERNAL ASORT EXTERNAL ATAIL +EXTERNAL AINS +EXTERNAL ADEL +EXTERNAL AFILL +EXTERNAL ASCAN +EXTERNAL AEVAL +EXTERNAL ACOPY +EXTERNAL ACLONE // -//symbols from file: rtl/classes.c +//symbols from file: rtl\classes.c // -EXTERNAL __CLSNEW -EXTERNAL __CLSINST -EXTERNAL __CLSINSTSUPER -EXTERNAL __CLSADDMSG -EXTERNAL __CLSDELMSG -EXTERNAL __CLSMODMSG -EXTERNAL __CLS_CNTCLSDATA -EXTERNAL __CLS_CNTDATA -EXTERNAL __CLS_DECDATA -EXTERNAL __CLS_INCDATA -EXTERNAL __OBJGETCLSNAME -EXTERNAL __OBJCLONE -EXTERNAL __OBJHASMSG -EXTERNAL __OBJSENDMSG EXTERNAL __OBJGETMSGLIST EXTERNAL __OBJGETMETHODLIST EXTERNAL __OBJGETVALUELIST @@ -110,139 +95,152 @@ EXTERNAL __OBJDELINLINE EXTERNAL __OBJDELMETHOD EXTERNAL __OBJMODINLINE EXTERNAL __OBJMODMETHOD +EXTERNAL __CLSADDMSG +EXTERNAL __CLSNEW +EXTERNAL __CLSDELMSG +EXTERNAL __CLSINST +EXTERNAL __CLSMODMSG +EXTERNAL __OBJGETCLSNAME +EXTERNAL __OBJHASMSG +EXTERNAL __OBJCLONE +EXTERNAL __OBJSENDMSG +EXTERNAL __CLSINSTSUPER +EXTERNAL __CLS_CNTCLSDATA +EXTERNAL __CLS_CNTDATA +EXTERNAL __CLS_DECDATA +EXTERNAL __CLS_INCDATA // -//symbols from file: rtl/codebloc.c +//symbols from file: rtl\codebloc.c // // -//symbols from file: rtl/console.c +//symbols from file: rtl\console.c // -EXTERNAL __ACCEPT -EXTERNAL __EJECT -EXTERNAL COL -EXTERNAL ROW -EXTERNAL DBGSHADOW -EXTERNAL DEVOUT -EXTERNAL DEVOUTPICT -EXTERNAL DEVPOS -EXTERNAL DISPBEGIN -EXTERNAL DISPBOX -EXTERNAL DISPCOUNT -EXTERNAL DISPEND -EXTERNAL DISPOUT -EXTERNAL ISCOLOR -EXTERNAL MAXCOL -EXTERNAL MAXROW -EXTERNAL NOSNOW EXTERNAL OUTSTD EXTERNAL OUTERR -EXTERNAL PCOL +EXTERNAL QQOUT +EXTERNAL QOUT +EXTERNAL SETPOS +EXTERNAL DEVPOS +EXTERNAL DEVOUT +EXTERNAL DISPOUT +EXTERNAL __EJECT EXTERNAL PROW -EXTERNAL RESTSCREEN +EXTERNAL PCOL +EXTERNAL SETPRC EXTERNAL SCROLL +EXTERNAL MAXROW +EXTERNAL MAXCOL +EXTERNAL ROW +EXTERNAL COL +EXTERNAL DISPBOX +EXTERNAL DISPBEGIN +EXTERNAL DISPEND +EXTERNAL DISPCOUNT +EXTERNAL ISCOLOR +EXTERNAL NOSNOW +EXTERNAL __SHADOW +EXTERNAL DBGSHADOW EXTERNAL SAVESCREEN +EXTERNAL RESTSCREEN EXTERNAL SETCURSOR EXTERNAL SETBLINK -EXTERNAL SETPOS -EXTERNAL SETPRC -EXTERNAL SHADOW -EXTERNAL QOUT -EXTERNAL QQOUT +EXTERNAL __ACCEPT EXTERNAL __COLORINDEX // -//symbols from file: rtl/copyfile.c +//symbols from file: rtl\copyfile.c // EXTERNAL __COPYFILE // -//symbols from file: rtl/dates.c +//symbols from file: rtl\dates.c // -EXTERNAL CDOW -EXTERNAL CMONTH EXTERNAL CTOD -EXTERNAL DATE -EXTERNAL DAY -EXTERNAL DOW EXTERNAL DTOC EXTERNAL DTOS -EXTERNAL MONTH -EXTERNAL SECONDS EXTERNAL STOD -EXTERNAL TIME +EXTERNAL DAY +EXTERNAL MONTH EXTERNAL YEAR +EXTERNAL TIME +EXTERNAL DATE +EXTERNAL DOW +EXTERNAL CMONTH +EXTERNAL CDOW +EXTERNAL SECONDS // -//symbols from file: rtl/descend.c +//symbols from file: rtl\descend.c // EXTERNAL DESCEND // -//symbols from file: rtl/dir.c +//symbols from file: rtl\dir.c // EXTERNAL DIRECTORY // -//symbols from file: rtl/do.c +//symbols from file: rtl\do.c // EXTERNAL DO // -//symbols from file: rtl/environ.c +//symbols from file: rtl\environ.c // -EXTERNAL __RUN -EXTERNAL GETENV EXTERNAL OS EXTERNAL VERSION +EXTERNAL GETENV +EXTERNAL __RUN // -//symbols from file: rtl/errorapi.c +//symbols from file: rtl\errorapi.c // EXTERNAL __ERRRT_BASE // -//symbols from file: rtl/extend.c +//symbols from file: rtl\extend.c // // -//symbols from file: rtl/filesys.c +//symbols from file: rtl\filesys.c // +EXTERNAL FOPEN +EXTERNAL FCREATE +EXTERNAL FREAD +EXTERNAL FWRITE +EXTERNAL FERROR +EXTERNAL FCLOSE +EXTERNAL FERASE +EXTERNAL FRENAME +EXTERNAL FSEEK +EXTERNAL FILE +EXTERNAL FREADSTR +EXTERNAL CURDIR EXTERNAL BIN2I EXTERNAL BIN2L EXTERNAL BIN2W -EXTERNAL FCLOSE -EXTERNAL FCREATE -EXTERNAL FERASE -EXTERNAL FERROR -EXTERNAL FILE -EXTERNAL FOPEN -EXTERNAL FREAD -EXTERNAL FREADSTR -EXTERNAL FRENAME -EXTERNAL FSEEK -EXTERNAL FWRITE -EXTERNAL CURDIR EXTERNAL I2BIN EXTERNAL L2BIN EXTERNAL W2BIN // -//symbols from file: rtl/fm.c +//symbols from file: rtl\fm.c // // -//symbols from file: rtl/gtapi.c +//symbols from file: rtl\gtapi.c // // -//symbols from file: rtl/gtxxx.c +//symbols from file: rtl\gtxxx.c // // -//symbols from file: rtl/hardcr.c +//symbols from file: rtl\hardcr.c // EXTERNAL HARDCR // -//symbols from file: rtl/inkey.c +//symbols from file: rtl\inkey.c // -EXTERNAL __KEYBOARD EXTERNAL INKEY -EXTERNAL LASTKEY +EXTERNAL __KEYBOARD EXTERNAL NEXTKEY +EXTERNAL LASTKEY // -//symbols from file: rtl/itemapi.c +//symbols from file: rtl\itemapi.c // // -//symbols from file: rtl/langapi.c +//symbols from file: rtl\langapi.c // // -//symbols from file: rtl/math.c +//symbols from file: rtl\math.c // EXTERNAL ABS EXTERNAL EXP @@ -254,7 +252,7 @@ EXTERNAL MOD EXTERNAL ROUND EXTERNAL SQRT // -//symbols from file: rtl/memvars.c +//symbols from file: rtl\memvars.c // EXTERNAL __MVPUBLIC EXTERNAL __MVPRIVATE @@ -263,192 +261,295 @@ EXTERNAL __MVRELEASE EXTERNAL __MVSCOPE EXTERNAL __MVCLEAR // -//symbols from file: rtl/msgxxx.c +//symbols from file: rtl\msgxxx.c // // -//symbols from file: rtl/mtran.c +//symbols from file: rtl\mtran.c // EXTERNAL MEMOTRAN // -//symbols from file: rtl/set.c +//symbols from file: rtl\set.c // -EXTERNAL SET EXTERNAL __SETCENTURY +EXTERNAL SET // -//symbols from file: rtl/setcolor.c +//symbols from file: rtl\setcolor.c // EXTERNAL SETCOLOR EXTERNAL COLORSELECT // -//symbols from file: rtl/strings.c +//symbols from file: rtl\strings.c // -EXTERNAL ALLTRIM -EXTERNAL ASC -EXTERNAL AT -EXTERNAL CHR EXTERNAL ISALPHA EXTERNAL ISDIGIT EXTERNAL ISUPPER EXTERNAL ISLOWER -EXTERNAL LEFT -EXTERNAL LOWER EXTERNAL LTRIM -EXTERNAL PAD -EXTERNAL PADC -EXTERNAL PADL -EXTERNAL PADR -EXTERNAL RAT -EXTERNAL REPLICATE -EXTERNAL RIGHT EXTERNAL RTRIM -EXTERNAL SPACE -EXTERNAL STR -EXTERNAL STRTRAN -EXTERNAL STUFF -EXTERNAL SUBSTR EXTERNAL TRIM +EXTERNAL ALLTRIM +EXTERNAL PADR +EXTERNAL PAD +EXTERNAL PADL +EXTERNAL PADC +EXTERNAL AT +EXTERNAL RAT +EXTERNAL CHR +EXTERNAL ASC +EXTERNAL LEFT +EXTERNAL RIGHT +EXTERNAL SUBSTR +EXTERNAL LOWER EXTERNAL UPPER +EXTERNAL REPLICATE +EXTERNAL SPACE +EXTERNAL STUFF +EXTERNAL STRTRAN EXTERNAL VAL +EXTERNAL STR +EXTERNAL STRZERO // -//symbols from file: rtl/transfrm.c -// -EXTERNAL TRANSFORM -// -//symbols from file: rtl/tone.c +//symbols from file: rtl\tone.c // EXTERNAL TONE // -//symbols from file: rtl/achoice.prg +//symbols from file: rtl\transfrm.c +// +EXTERNAL TRANSFORM +// +//symbols from file: rtl\achoice.prg // EXTERNAL ACHOICE // -//symbols from file: rtl/adir.prg +//symbols from file: rtl\adir.prg // EXTERNAL ADIR // -//symbols from file: rtl/alert.prg +//symbols from file: rtl\alert.prg // EXTERNAL ALERT // -//symbols from file: rtl/asort.prg +//symbols from file: rtl\asort.prg +// +EXTERNAL ASORT +// +//symbols from file: rtl\browdb.prg +// +EXTERNAL TBROWSEDB +// +//symbols from file: rtl\devoutp.prg +// +EXTERNAL DEVOUTPICT +// +//symbols from file: rtl\errorsys.prg // // -//symbols from file: rtl/devoutp.prg -// -// -//symbols from file: rtl/terror.prg -// -// -//symbols from file: rtl/errorsys.prg -// -// -//symbols from file: rtl/menuto.prg +//symbols from file: rtl\menuto.prg // EXTERNAL __ATPROMPT EXTERNAL __MENUTO // -//symbols from file: rtl/objfunc.prg +//symbols from file: rtl\objfunc.prg // // -//symbols from file: rtl/readvar.prg +//symbols from file: rtl\readvar.prg // EXTERNAL READVAR // -//symbols from file: rtl/setkey.prg +//symbols from file: rtl\setkey.prg // EXTERNAL SETKEY EXTERNAL SETKEYGET EXTERNAL SETKEYSAVE EXTERNAL SETKEYCHECK // -//symbols from file: rtl/tclass.prg +//symbols from file: rtl\tbcolumn.prg +// +EXTERNAL TBCOLUMNNEW +// +//symbols from file: rtl\tbrowse.prg +// +EXTERNAL TBROWSENEW +// +//symbols from file: rtl\tclass.prg // EXTERNAL TCLASS // -//symbols from file: rtl/tget.prg +//symbols from file: rtl\terror.prg +// +// +//symbols from file: rtl\tget.prg // EXTERNAL GETNEW EXTERNAL _GET_ // -//symbols from file: rtl/tgetlist.prg +//symbols from file: rtl\tgetlist.prg // EXTERNAL READMODAL // -//symbols from file: rtl/tbcolumn.prg -// -EXTERNAL TBCOLUMNNEW -// -//symbols from file: rtl/tbrowse.prg -// -EXTERNAL TBROWSENEW -// -//symbols from file: rtl/xsavescr.prg +//symbols from file: rtl\xsavescr.prg // EXTERNAL __XSAVESCREEN EXTERNAL __XRESTSCREEN +//------------------------------------------------------------ +// Files from: rdd // -//symbols from file: rtl/browdb.prg // -EXTERNAL TBROWSEDB +//symbols from file: rdd\dbcmd.c +// +EXTERNAL DBF +EXTERNAL SDF +EXTERNAL DELIM +EXTERNAL RDDSYS +EXTERNAL AFIELDS +EXTERNAL ALIAS +EXTERNAL BOF +EXTERNAL DBCLOSEALL +EXTERNAL DBCLOSEAREA +EXTERNAL DBCOMMIT +EXTERNAL DBCREATE +EXTERNAL DBDELETE +EXTERNAL DBGOBOTTOM +EXTERNAL DBGOTO +EXTERNAL DBGOTOP +EXTERNAL DBRECALL +EXTERNAL DBRLOCK +EXTERNAL DBRLOCKLIST +EXTERNAL DBRUNLOCK +EXTERNAL DBSELECTAREA +EXTERNAL DBSETDRIVER +EXTERNAL DBSKIP +EXTERNAL DBSTRUCT +EXTERNAL DBTABLEEXT +EXTERNAL DBUNLOCK +EXTERNAL DBUNLOCKALL +EXTERNAL DBUSEAREA +EXTERNAL DELETED +EXTERNAL EOF +EXTERNAL FCOUNT +EXTERNAL FIELDGET +EXTERNAL FIELDNAME +EXTERNAL FIELDPOS +EXTERNAL FIELDPUT +EXTERNAL FLOCK +EXTERNAL FOUND +EXTERNAL HEADER +EXTERNAL LASTREC +EXTERNAL LUPDATE +EXTERNAL NETERR +EXTERNAL RDDLIST +EXTERNAL RDDNAME +EXTERNAL RDDREGISTER +EXTERNAL RDDSETDEFAULT +EXTERNAL RDDSHUTDOWN +EXTERNAL RECCOUNT +EXTERNAL RECNO +EXTERNAL RECSIZE +EXTERNAL RLOCK +EXTERNAL SELECT +EXTERNAL USED +// +//symbols from file: rdd\dbf1.c +// +EXTERNAL _DBF +EXTERNAL DBF_GETFUNCTABLE +// +//symbols from file: rdd\delim1.c +// +EXTERNAL _DELIM +EXTERNAL DELIM_GETFUNCTABLE +// +//symbols from file: rdd\sdf1.c +// +EXTERNAL _SDF +EXTERNAL SDF_GETFUNCTABLE +// +//symbols from file: rdd\dbf0.prg +// +// +//symbols from file: rdd\delim0.prg +// +// +//symbols from file: rdd\rddsys.prg +// +// +//symbols from file: rdd\sdf0.prg +// +//------------------------------------------------------------ +// Files from: hbpp +// +// +//symbols from file: hbpp\hbpp.c +// +// +//symbols from file: hbpp\hbppint.c +// +// +//symbols from file: hbpp\hbpplib.c +// +EXTERNAL __PREPROCESS +// +//symbols from file: hbpp\table.c +// //------------------------------------------------------------ // Files from: tools // // -//symbols from file: tools/asciisum.c +//symbols from file: tools\asciisum.c // EXTERNAL GT_ASCIISUM // -//symbols from file: tools/ascpos.c +//symbols from file: tools\ascpos.c // EXTERNAL GT_ASCPOS // -//symbols from file: tools/atdiff.c +//symbols from file: tools\atdiff.c // EXTERNAL GT_ATDIFF // -//symbols from file: tools/chareven.c +//symbols from file: tools\chareven.c // EXTERNAL GT_CHAREVEN // -//symbols from file: tools/charmix.c +//symbols from file: tools\charmix.c // EXTERNAL GT_CHARMIX // -//symbols from file: tools/charodd.c +//symbols from file: tools\charodd.c // EXTERNAL GT_CHARODD // -//symbols from file: tools/chrcount.c +//symbols from file: tools\chrcount.c // EXTERNAL GT_CHRCOUNT // -//symbols from file: tools/chrfirst.c +//symbols from file: tools\chrfirst.c // EXTERNAL GT_CHRFIRST // -//symbols from file: tools/chrtotal.c +//symbols from file: tools\chrtotal.c // EXTERNAL GT_CHRTOTAL // -//symbols from file: tools/dates2.c +//symbols from file: tools\dates2.c // -EXTERNAL ADAYS EXTERNAL AMONTHS -EXTERNAL BOM -EXTERNAL BOY -EXTERNAL DAYSINMONTH -EXTERNAL DOY -EXTERNAL EOM -EXTERNAL EOY +EXTERNAL ADAYS EXTERNAL ISLEAPYEAR +EXTERNAL DAYSINMONTH +EXTERNAL EOM +EXTERNAL BOM EXTERNAL WOM +EXTERNAL DOY EXTERNAL WOY +EXTERNAL EOY +EXTERNAL BOY // -//symbols from file: tools/datesx.c +//symbols from file: tools\datesx.c // EXTERNAL DATETIME // -//symbols from file: tools/debug.c +//symbols from file: tools\debug.c // EXTERNAL __ASTATIC EXTERNAL __STATIC @@ -458,7 +559,7 @@ EXTERNAL __STACKLEN EXTERNAL __ASTACK EXTERNAL __APARAM // -//symbols from file: tools/hb_f.c +//symbols from file: tools\hb_f.c // EXTERNAL HB_FUSE EXTERNAL HB_FRECNO @@ -471,11 +572,17 @@ EXTERNAL HB_FGOTOP EXTERNAL HB_FLASTREC EXTERNAL HB_FSELECT // -//symbols from file: tools/io.c +//symbols from file: tools\io.c // -// removed manually +EXTERNAL RENFILE +EXTERNAL CD +EXTERNAL MD +EXTERNAL RD +EXTERNAL DISKUSED +EXTERNAL DISKFREE +EXTERNAL DISKFULL // -//symbols from file: tools/mathx.c +//symbols from file: tools\mathx.c // EXTERNAL ACOS EXTERNAL ASIN @@ -489,60 +596,60 @@ EXTERNAL TAN EXTERNAL TANH EXTERNAL PI // -//symbols from file: tools/strasint.c +//symbols from file: tools\strasint.c // // -//symbols from file: tools/strcount.c +//symbols from file: tools\strcount.c // EXTERNAL GT_STRCOUNT // -//symbols from file: tools/strcspn.c +//symbols from file: tools\strcspn.c // EXTERNAL GT_STRCSPN // -//symbols from file: tools/strdiff.c +//symbols from file: tools\strdiff.c // EXTERNAL GT_STRDIFF // -//symbols from file: tools/strexpan.c +//symbols from file: tools\strexpan.c // EXTERNAL GT_STREXPAND // -//symbols from file: tools/strfmt.c +//symbols from file: tools\strfmt.c // EXTERNAL STRFORMAT // -//symbols from file: tools/stringsx.c +//symbols from file: tools\stringsx.c // EXTERNAL STRTOKEN EXTERNAL STRDUMP EXTERNAL ROT13 // -//symbols from file: tools/strleft.c +//symbols from file: tools\strleft.c // EXTERNAL GT_STRLEFT // -//symbols from file: tools/strpbrk.c +//symbols from file: tools\strpbrk.c // EXTERNAL GT_STRPBRK // -//symbols from file: tools/strright.c +//symbols from file: tools\strright.c // EXTERNAL GT_STRRIGHT // -//symbols from file: tools/fileread.prg +//symbols from file: tools\fileread.prg // EXTERNAL TFILEREAD // -//symbols from file: tools/numtxten.prg +//symbols from file: tools\numtxten.prg // EXTERNAL NUMTOTXTEN // -//symbols from file: tools/numtxthu.prg +//symbols from file: tools\numtxthu.prg // EXTERNAL NUMTOTXTHU // -//symbols from file: tools/stringp.prg +//symbols from file: tools\stringp.prg // EXTERNAL DEFAULT EXTERNAL TOCHAR diff --git a/harbour/source/tools/io.c b/harbour/source/tools/io.c index 573bb4ec55..0ab226261e 100644 --- a/harbour/source/tools/io.c +++ b/harbour/source/tools/io.c @@ -2,23 +2,18 @@ * $Id$ */ -#include "extend.h" #include +#include "extend.h" #ifdef __DOS__ #include -#include -#include +#include +#include #endif -#define TRUE 1 -#define FALSE 0 - - -#ifdef __DOS__ - HARBOUR HB_RENFILE(void) { +#ifdef __DOS__ int ok; PHB_ITEM arg1 = hb_param(1,IT_STRING); PHB_ITEM arg2 = hb_param(2,IT_STRING); @@ -30,6 +25,7 @@ HARBOUR HB_RENFILE(void) else _retl(FALSE); } +#endif } /* $DOC$ @@ -129,88 +125,43 @@ HARBOUR HB_RENFILE(void) HARBOUR HB_CD(void) - { +#ifdef __DOS__ PHB_ITEM MEUDIR = hb_param(1,IT_STRING); if(MEUDIR) { hb_retni(chdir(hb_parc(1))); } +#endif } HARBOUR HB_MD(void) { - +#ifdef __DOS__ PHB_ITEM MEUDIR = hb_param(1,IT_STRING); if(MEUDIR) { hb_retni(mkdir(hb_parc(1))); } +#endif } HARBOUR HB_RD(void) { +#ifdef __DOS__ PHB_ITEM MEUDIR = hb_param(1,IT_STRING); if(MEUDIR) { hb_retni(chdir(hb_parc(1))); } +#endif } -/* $DOC$ - * $FUNCNAME$ - * FILE() - * $CATEGORY$ - * DOS - * $ONELINER$ - * - * $SYNTAX$ - * RD() - * $ARGUMENTS$ - * FILE TO BE CHECKED - * $RETURNS$ - * .T. IF SUCEFUL - * .F. IF NOT - * - * $DESCRIPTION$ - * VERIFY IF A FILE EXISTS - * $EXAMPLES$ - * IF FILE("OLA.PRG") - * RETURN(.T.) - * ELSE - * RETURN(.F.) - * ENDIF - * - * $SEEALSO$ - * - * $INCLUDE$ - * extend.h dos.h dir.h bios.h internal.h - * $END$ - */ - -HARBOUR HB_FILE(void) -{ - PHB_ITEM arg1 = hb_param(1,IT_STRING); - char *arquivos; - int achou; - struct ffblk arquivo; - if (arg1) { - arquivos=hb_parc(1); - achou=findfirst(arquivos,&arquivo,FA_ARCH); - if (achou) - { - _retl(TRUE); - } - else - { - _retl(FALSE); - } - } -} HARBOUR HB_DISKUSED(void) { +#ifdef __DOS__ long bytsfree,bytsfull; struct diskfree_t disk; _dos_getdiskfree(0,&disk); @@ -221,10 +172,12 @@ HARBOUR HB_DISKUSED(void) (long) disk.sectors_per_cluster * (long ) disk.bytes_per_sector); hb_retnl(bytsfull-bytsfree); +#endif } HARBOUR HB_DISKFREE(void) { +#ifdef __DOS__ long bytsfree; struct diskfree_t disk; _dos_getdiskfree(0,&disk); @@ -233,10 +186,12 @@ HARBOUR HB_DISKFREE(void) (long ) disk.bytes_per_sector); hb_retnl(bytsfree); +#endif } HARBOUR HB_DISKFULL(void) { +#ifdef __DOS__ long bytsfull; struct diskfree_t disk; _dos_getdiskfree(0,&disk); @@ -245,6 +200,5 @@ HARBOUR HB_DISKFULL(void) (long) disk.sectors_per_cluster * (long ) disk.bytes_per_sector); hb_retnl(bytsfull); -} - #endif +}