19990825-12:50 GMT+1
This commit is contained in:
@@ -1,3 +1,60 @@
|
||||
19990825-12:50 GMT+1 Victor Szel <info@szelvesz.hu>
|
||||
|
||||
* 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 <alinares@fivetech.com>
|
||||
* 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.
|
||||
|
||||
|
||||
@@ -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$
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 },
|
||||
|
||||
@@ -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 )
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
#include <ctype.h>
|
||||
#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 */
|
||||
|
||||
@@ -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 )
|
||||
|
||||
@@ -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 <info@szelvesz.hu>:
|
||||
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 <unistd.h>
|
||||
@@ -60,8 +69,6 @@
|
||||
#include <io.h>
|
||||
#endif
|
||||
#include <fcntl.h>
|
||||
#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
|
||||
|
||||
@@ -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" );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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! */
|
||||
}
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 ) );
|
||||
}
|
||||
|
||||
|
||||
@@ -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 );
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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! */
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -2,23 +2,18 @@
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "extend.h"
|
||||
#include <ctype.h>
|
||||
#include "extend.h"
|
||||
|
||||
#ifdef __DOS__
|
||||
#include <dos.h>
|
||||
#include <dir.h>
|
||||
#include <bios.h>
|
||||
#include <dir.h>
|
||||
#include <bios.h>
|
||||
#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(<NDIR>)
|
||||
* $ARGUMENTS$
|
||||
* <NDIR> 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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user