From 7bfa0865d47ba53501bf16627fe152581df7a558 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Tue, 7 Mar 2000 02:03:22 +0000 Subject: [PATCH] 20000307-02:55 GMT+1 Victor Szakats --- harbour/ChangeLog | 32 ++ harbour/contrib/odbc/odbccall.prg | 2 +- harbour/doc/en/input.txt | 10 +- harbour/include/hbclip.ch | 1 + harbour/include/hbextern.ch | 501 ++++++++++++++++------------ harbour/makefile.bc | 10 + harbour/makefile.vc | 4 + harbour/source/debug/debugger.prg | 4 +- harbour/source/rtl/alert.prg | 2 +- harbour/source/rtl/console.c | 4 +- harbour/source/rtl/inkey.c | 4 +- harbour/source/vm/cmdarg.c | 8 +- harbour/source/vm/harbinit.prg | 6 +- harbour/utils/hbextern/Makefile | 28 ++ harbour/utils/hbextern/hbextern.prg | 262 +++++++++++++++ harbour/utils/hbextern/make_c5x.bat | 8 + 16 files changed, 644 insertions(+), 242 deletions(-) create mode 100644 harbour/utils/hbextern/Makefile create mode 100644 harbour/utils/hbextern/hbextern.prg create mode 100644 harbour/utils/hbextern/make_c5x.bat diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 0aba50b030..c73cfcbf2d 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,35 @@ +20000307-02:55 GMT+1 Victor Szakats + * makefile.bc + makefile.vc + ! trace.c was missing. + * makefile.bc + ! dbftools.c was missing. + * include/hbextern.ch + ! Updated. + * source/vm/harbinit.prg + * Modified so that HBEXTERN will recognize its PROCEDURES. + + utils/hbextern/hbextern.prg + + utils/hbextern/make_c5x.bat + + utils/hbextern/Makefile + + HBEXTERN.CH generator added. (work of Ryszard Glab) + * include/hbclip.ch + + hb_Shadow() added. + * source/rtl/inkey.c + source/rtl/console.c + source/vm/cmdarg.c + contrib/odbc/odbccall.prg + source/rtl/alert.prg + doc/en/input.txt + source/debug/debugger.prg + * __ARGCHECK -> HB_ARGCHECK + __ARGSTRING -> HB_ARGSTRING + __ARGC -> HB_ARGC + __ARGV -> HB_ARGV + __SHADOW -> HB_SHADOW + __KEYPUT -> HB_KEYPUT + Name of some Harbour internal functions changed to better reflect that + they are Harbour extensions. + 2000-03-06 20:05 GMT-5 David G. Holm * tests/regress/Makefile ! Several of the supported platforms begin program execution with diff --git a/harbour/contrib/odbc/odbccall.prg b/harbour/contrib/odbc/odbccall.prg index 98c5c5b5bf..a277e896c7 100644 --- a/harbour/contrib/odbc/odbccall.prg +++ b/harbour/contrib/odbc/odbccall.prg @@ -3,7 +3,7 @@ FUNCTION Main() - LOCAL cExePath := substr( __argv(0), 1, rat( "\", __argv(0) ) - 1 ) + LOCAL cExePath := substr( hb_argv(0), 1, rat( "\", hb_argv(0) ) - 1 ) LOCAL cConStr := ; "DBQ=" + cExePath + "\harbour.mdb;" + ; "Driver={Microsoft Access Driver (*.mdb)}" diff --git a/harbour/doc/en/input.txt b/harbour/doc/en/input.txt index 11dab36e70..adf63a8501 100644 --- a/harbour/doc/en/input.txt +++ b/harbour/doc/en/input.txt @@ -120,13 +120,13 @@ /* $DOC$ * $FUNCNAME$ - * __KEYPUT() + * HB_KEYPUT() * $CATEGORY$ * Console input * $ONELINER$ * Put an inkey code to the keyboard buffer * $SYNTAX$ - * __keyPut( ) + * hb_keyPut( ) * $ARGUMENTS$ * is the inkey code, which should be inserted into the * keyboard buffer. @@ -140,10 +140,10 @@ * be inserted. * $EXAMPLES$ * // Stuff an Alt+PgDn key into the keyboard buffer - * __keyPut( K_ALT_PGDN ) + * hb_keyPut( K_ALT_PGDN ) * $TESTS$ - * __keyPut( K_ALT_PGDN ) ; ? INKEY() ==> 417 - * __keyPut( K_F11 ) ; ? INKEY() ==> -40 + * hb_keyPut( K_ALT_PGDN ) ; ? INKEY() ==> 417 + * hb_keyPut( K_F11 ) ; ? INKEY() ==> -40 * $STATUS$ * R * $COMPLIANCE$ diff --git a/harbour/include/hbclip.ch b/harbour/include/hbclip.ch index 754a125aaf..6ebee1d787 100644 --- a/harbour/include/hbclip.ch +++ b/harbour/include/hbclip.ch @@ -49,6 +49,7 @@ #define HB_CLIP_CH_ #xtranslate hb_OSNewLine() => ( Chr( 13 ) + Chr( 10 ) ) +#xtranslate hb_Shadow( t, l, b, r, c ) => dbgShadow( t, l, b, r, c ) #endif /* HB_CLIP_CH_ */ diff --git a/harbour/include/hbextern.ch b/harbour/include/hbextern.ch index 92bc78201f..dc1f444ff1 100644 --- a/harbour/include/hbextern.ch +++ b/harbour/include/hbextern.ch @@ -40,68 +40,10 @@ /* TOFIX: Add #ifdefs for the Xbase++/VO/C5.3 extension parts [vszakats] */ -EXTERNAL __PREPROCESS - // Files from: vm // // -//symbols from file: vm\cmdarg.c -// -EXTERNAL __ARGCHECK -EXTERNAL __ARGSTRING -EXTERNAL __ARGC -EXTERNAL __ARGV -// -//symbols from file: vm\debug.c -// -EXTERNAL __VMSTKGCOUNT -EXTERNAL __VMSTKGLIST -EXTERNAL __VMSTKLCOUNT -EXTERNAL __VMSTKLLIST -EXTERNAL __VMPARLLIST -EXTERNAL __VMVARLGET -// -//symbols from file: vm\dynsym.c -// -EXTERNAL __DYNSCOUNT -EXTERNAL __DYNSGETNAME -EXTERNAL __DYNSGETINDEX -// -//symbols from file: vm\hvm.c -// -EXTERNAL LEN -EXTERNAL EMPTY -EXTERNAL VALTYPE -EXTERNAL TYPE -EXTERNAL WORD -EXTERNAL PROCNAME -EXTERNAL PROCLINE -EXTERNAL PROCFILE -EXTERNAL ERRORLEVEL -EXTERNAL PCOUNT -EXTERNAL HB_PVALUE -EXTERNAL __QUIT -EXTERNAL BREAK -EXTERNAL __XHELP -EXTERNAL __VMVARSLIST -EXTERNAL __VMVARSGET -// -//symbols from file: vm\initsymb.c -// -// -//symbols from file: vm\main.c -// -// -//symbols from file: vm\mainstd.c -// -// -//symbols from file: vm\mainwin.c -// -//------------------------------------------------------------ -// Files from: rtl -// -// -//symbols from file: rtl\arrays.c +//symbols from file: vm\arrays.c // EXTERNAL ARRAY EXTERNAL AADD @@ -115,7 +57,11 @@ EXTERNAL AEVAL EXTERNAL ACOPY EXTERNAL ACLONE // -//symbols from file: rtl\classes.c +//symbols from file: vm\break.c +// +EXTERNAL BREAK +// +//symbols from file: vm\classes.c // EXTERNAL __CLSADDMSG EXTERNAL __CLSNEW @@ -136,9 +82,99 @@ EXTERNAL __CLASSINSTANCE EXTERNAL __CLASSADD EXTERNAL __CLASSNAME EXTERNAL __CLASSSEL +EXTERNAL __GETMESSAGE // -//symbols from file: rtl\codebloc.c +//symbols from file: vm\cmdarg.c // +EXTERNAL HB_ARGCHECK +EXTERNAL HB_ARGSTRING +EXTERNAL HB_ARGC +EXTERNAL HB_ARGV +// +//symbols from file: vm\debug.c +// +EXTERNAL __VMSTKGCOUNT +EXTERNAL __VMSTKGLIST +EXTERNAL __VMSTKLCOUNT +EXTERNAL __VMSTKLLIST +EXTERNAL __VMPARLLIST +EXTERNAL __VMVARLGET +// +//symbols from file: vm\dynsym.c +// +EXTERNAL __DYNSCOUNT +EXTERNAL __DYNSGETNAME +EXTERNAL __DYNSGETINDEX +// +//symbols from file: vm\fm.c +// +EXTERNAL MEMORY +// +//symbols from file: vm\hvm.c +// +EXTERNAL ERRORLEVEL +EXTERNAL __VMVARSLIST +EXTERNAL __VMVARSGET +// +//symbols from file: vm\initexit.c +// +EXTERNAL __QUIT +// +//symbols from file: vm\memvars.c +// +EXTERNAL __MVPUBLIC +EXTERNAL __QQPUB +EXTERNAL __MVPRIVATE +EXTERNAL __MVXRELEASE +EXTERNAL __MVRELEASE +EXTERNAL __MVSCOPE +EXTERNAL __MVCLEAR +EXTERNAL __MVDBGINFO +EXTERNAL __MVGET +EXTERNAL __MVPUT +EXTERNAL __MVSAVE +EXTERNAL __MVRESTORE +EXTERNAL __MCLEAR +EXTERNAL __MRELEASE +EXTERNAL __MXRELEASE +EXTERNAL __MSAVE +EXTERNAL __MRESTORE +// +//symbols from file: vm\pcount.c +// +EXTERNAL PCOUNT +// +//symbols from file: vm\proc.c +// +EXTERNAL PROCNAME +EXTERNAL PROCLINE +EXTERNAL PROCFILE +// +//symbols from file: vm\pvalue.c +// +EXTERNAL HB_PVALUE +// +//symbols from file: vm\harbinit.prg +// +EXTERNAL CLIPPER520 +#ifdef HB_COMPAT_C53 +EXTERNAL CLIPPER530 +#endif +EXTERNAL __SETHELPK +//------------------------------------------------------------ +// Files from: rtl +// +// +//symbols from file: rtl\binnum.c +// +EXTERNAL BIN2W +EXTERNAL BIN2I +EXTERNAL BIN2L +EXTERNAL BIN2U +EXTERNAL I2BIN +EXTERNAL W2BIN +EXTERNAL L2BIN +EXTERNAL U2BIN // //symbols from file: rtl\console.c // @@ -168,7 +204,7 @@ EXTERNAL DISPEND EXTERNAL DISPCOUNT EXTERNAL ISCOLOR EXTERNAL NOSNOW -EXTERNAL __SHADOW +EXTERNAL HB_SHADOW EXTERNAL DBGSHADOW EXTERNAL SAVESCREEN EXTERNAL RESTSCREEN @@ -190,9 +226,9 @@ EXTERNAL DTOC EXTERNAL DTOS EXTERNAL STOD EXTERNAL HB_STOD -EXTERNAL DAY -EXTERNAL MONTH EXTERNAL YEAR +EXTERNAL MONTH +EXTERNAL DAY EXTERNAL TIME EXTERNAL DATE EXTERNAL DOW @@ -213,6 +249,10 @@ EXTERNAL DIRECTORY EXTERNAL DO EXTERNAL EVAL // +//symbols from file: rtl\empty.c +// +EXTERNAL EMPTY +// //symbols from file: rtl\environ.c // EXTERNAL OS @@ -229,9 +269,6 @@ EXTERNAL ERRORBLOCK EXTERNAL DOSERROR EXTERNAL __ERRRT_BASE // -//symbols from file: rtl\extend.c -// -// //symbols from file: rtl\filesys.c // EXTERNAL FOPEN @@ -253,25 +290,11 @@ EXTERNAL DISKSPACE EXTERNAL ISDISK EXTERNAL DISKCHANGE EXTERNAL DISKNAME -EXTERNAL BIN2W -EXTERNAL BIN2I -EXTERNAL BIN2L -EXTERNAL I2BIN -EXTERNAL L2BIN +EXTERNAL CURDRIVE EXTERNAL HB_FNAMESPLIT EXTERNAL HB_FNAMEMERGE EXTERNAL FSETDEVMOD // -//symbols from file: rtl\fm.c -// -EXTERNAL MEMORY -// -//symbols from file: rtl\gtapi.c -// -// -//symbols from file: rtl\gtxxx.c -// -// //symbols from file: rtl\hardcr.c // EXTERNAL HARDCR @@ -280,17 +303,19 @@ EXTERNAL HARDCR // EXTERNAL INKEY EXTERNAL __KEYBOARD -EXTERNAL __KEYPUT +EXTERNAL HB_KEYPUT EXTERNAL NEXTKEY EXTERNAL LASTKEY EXTERNAL FKLABEL EXTERNAL FKMAX // -//symbols from file: rtl\itemapi.c +//symbols from file: rtl\isprint.c // +EXTERNAL ISPRINTER // -//symbols from file: rtl\langapi.c +//symbols from file: rtl\len.c // +EXTERNAL LEN // //symbols from file: rtl\math.c // @@ -313,33 +338,16 @@ EXTERNAL MEMOWRIT // EXTERNAL MEMOLINE // -//symbols from file: rtl\memvars.c -// -EXTERNAL __MVPUBLIC -EXTERNAL __QQPUB -EXTERNAL __MVPRIVATE -EXTERNAL __MVXRELEASE -EXTERNAL __MVRELEASE -EXTERNAL __MVSCOPE -EXTERNAL __MVCLEAR -EXTERNAL __MVDBGINFO -EXTERNAL __MVGET -EXTERNAL __MVPUT -EXTERNAL __MVSAVE -EXTERNAL __MVRESTORE -EXTERNAL __MCLEAR -EXTERNAL __MRELEASE -EXTERNAL __MXRELEASE -EXTERNAL __MSAVE -EXTERNAL __MRESTORE -// //symbols from file: rtl\mlcount.c // EXTERNAL MLCOUNT // +//symbols from file: rtl\mlpos.c +// +EXTERNAL MLPOS +// //symbols from file: rtl\mouseapi.c // -#ifdef HB_COMPAT_C53 EXTERNAL MPRESENT EXTERNAL MHIDE EXTERNAL MSHOW @@ -353,22 +361,32 @@ EXTERNAL MDBLCLK EXTERNAL MSAVESTATE EXTERNAL MRESTSTATE EXTERNAL MSETBOUNDS -#endif -#ifdef HB_COMPAT_XPP EXTERNAL NUMBUTTONS EXTERNAL SETMOUSE -#endif -// -//symbols from file: rtl\mousexxx.c -// -// -//symbols from file: rtl\msgxxx.c -// // //symbols from file: rtl\mtran.c // EXTERNAL MEMOTRAN // +//symbols from file: rtl\natmsg.c +// +EXTERNAL ISAFFIRM +EXTERNAL ISNEGATIVE +EXTERNAL NATIONMSG +EXTERNAL _NATSORTVER +EXTERNAL _NATMSGVER +// +//symbols from file: rtl\net.c +// +EXTERNAL NETNAME +// +//symbols from file: rtl\oemansi.c +// +EXTERNAL HB_ANSITOOEM +EXTERNAL HB_OEMTOANSI +EXTERNAL CONVTOOEMCP +EXTERNAL CONVTOANSICP +// //symbols from file: rtl\oldbox.c // EXTERNAL __BOX @@ -380,6 +398,15 @@ EXTERNAL __BOXS EXTERNAL __ATCLEAR EXTERNAL __CLEAR // +//symbols from file: rtl\samples.c +// +EXTERNAL AMPM +EXTERNAL DAYS +EXTERNAL ELAPTIME +EXTERNAL LENNUM +EXTERNAL SECS +EXTERNAL TSTRING +// //symbols from file: rtl\set.c // EXTERNAL SETCANCEL @@ -393,6 +420,10 @@ EXTERNAL __DEFPATH EXTERNAL SETCOLOR EXTERNAL COLORSELECT // +//symbols from file: rtl\soundex.c +// +EXTERNAL SOUNDEX +// //symbols from file: rtl\strings.c // EXTERNAL ISALPHA @@ -429,10 +460,31 @@ EXTERNAL HB_VALTOSTR // EXTERNAL TONE // +//symbols from file: rtl\trace.c +// +EXTERNAL HB_TRACESTATE +EXTERNAL HB_TRACELEVEL +// //symbols from file: rtl\transfrm.c // EXTERNAL TRANSFORM // +//symbols from file: rtl\type.c +// +EXTERNAL TYPE +// +//symbols from file: rtl\valtype.c +// +EXTERNAL VALTYPE +// +//symbols from file: rtl\word.c +// +EXTERNAL WORD +// +//symbols from file: rtl\xhelp.c +// +EXTERNAL __XHELP +// //symbols from file: rtl\achoice.prg // EXTERNAL ACHOICE @@ -453,11 +505,16 @@ EXTERNAL ASORT //symbols from file: rtl\browdb.prg // EXTERNAL TBROWSEDB +EXTERNAL DBSKIPPER // //symbols from file: rtl\browse.prg // EXTERNAL BROWSE // +//symbols from file: rtl\dbedit.prg +// +EXTERNAL DBEDIT +// //symbols from file: rtl\devoutp.prg // EXTERNAL DEVOUTPICT @@ -468,96 +525,49 @@ EXTERNAL __DIR // //symbols from file: rtl\dummy.prg // -EXTERNAL ORDBAGEXT -EXTERNAL ORDBAGNAME -EXTERNAL ORDCONDSET -EXTERNAL ORDCREATE -EXTERNAL ORDDESTROY -EXTERNAL ORDFOR -EXTERNAL ORDKEY -EXTERNAL ORDLISTADD -EXTERNAL ORDLISTCLEAR -EXTERNAL ORDLISTREBUILD -EXTERNAL ORDNAME -EXTERNAL ORDNUMBER -EXTERNAL ORDSETFOCUS -EXTERNAL INDEXORD -EXTERNAL DBSEEK -EXTERNAL DBSETRELATION -EXTERNAL DBCLEARRELATION -EXTERNAL DBEVAL +EXTERNAL ORDCOND +EXTERNAL ORDDESCEND +EXTERNAL ORDISUNIQUE +EXTERNAL ORDKEYADD +EXTERNAL ORDKEYCOUNT +EXTERNAL ORDKEYDEL +EXTERNAL ORDKEYGOTO +EXTERNAL ORDKEYNO +EXTERNAL ORDKEYVAL +EXTERNAL ORDSCOPE +EXTERNAL ORDSETRELATION +EXTERNAL ORDSKIPUNIQUE EXTERNAL DBFILEGET EXTERNAL DBFILEPUT EXTERNAL DBINFO EXTERNAL DBORDERINFO EXTERNAL DBRECORDINFO EXTERNAL DBFIELDINFO +EXTERNAL DBSETRELATION +EXTERNAL DBCLEARRELATION EXTERNAL MEMOEDIT EXTERNAL MLCTOPOS -EXTERNAL MLPOS EXTERNAL MPOSTOLC EXTERNAL __DBAPP EXTERNAL __DBCOPY -EXTERNAL __DBCOPYSTRUCT -EXTERNAL __DBCOPYXSTRUCT -EXTERNAL __DBCREATE EXTERNAL __DBDELIM EXTERNAL __DBJOIN EXTERNAL __DBLIST -EXTERNAL __DBPACK EXTERNAL __DBSDF EXTERNAL __DBSORT EXTERNAL __DBTOTAL EXTERNAL __DBUPDATE -EXTERNAL __DBZAP EXTERNAL __DBARRANGE EXTERNAL __DBFLIST EXTERNAL __DBOPENSDF -EXTERNAL __DBSETFOUND -EXTERNAL __DBSETLOCATE EXTERNAL __DBTRANS EXTERNAL __DBTRANSREC -EXTERNAL DBEDIT -EXTERNAL ISPRINTER -EXTERNAL NETNAME -EXTERNAL __TYPEFILE -EXTERNAL __LABELFORM -EXTERNAL __REPORTFORM -EXTERNAL GETACTIVE -EXTERNAL GETAPPLYKEY -EXTERNAL GETDOSETKEY -EXTERNAL GETPOSTVALIDATE -EXTERNAL GETPREVALIDATE -EXTERNAL GETREADER -EXTERNAL READFORMAT -EXTERNAL READKILL -EXTERNAL READUPDATED -EXTERNAL UPDATED -EXTERNAL __SETFORMAT -EXTERNAL AMPM -EXTERNAL TSTRING -EXTERNAL SECS -EXTERNAL DAYS -EXTERNAL LENNUM -EXTERNAL ELAPTIME -EXTERNAL SOUNDEX -EXTERNAL _NATSORTVER -EXTERNAL ISAFFIRM -EXTERNAL ISNEGATIVE -EXTERNAL NATIONMSG -EXTERNAL _NATMSGVER -// -//symbols from file: rtl\errorsys.prg -// // //symbols from file: rtl\fieldbl.prg // EXTERNAL FIELDBLOCK EXTERNAL FIELDWBLOCK // -//symbols from file: rtl\harbinit.prg -// -// //symbols from file: rtl\input.prg // EXTERNAL __INPUT @@ -588,27 +598,10 @@ EXTERNAL __OBJDELMETHOD EXTERNAL __OBJDELINLINE EXTERNAL __OBJDELDATA // -//symbols from file: rtl\rddord.prg -// -EXTERNAL DBCREATEINDEX -EXTERNAL DBSETINDEX -EXTERNAL DBCLEARINDEX -EXTERNAL DBREINDEX -EXTERNAL DBSETORDER -EXTERNAL INDEXEXT -EXTERNAL INDEXKEY -// //symbols from file: rtl\readkey.prg // EXTERNAL READKEY // -//symbols from file: rtl\readvar.prg -// -EXTERNAL READVAR -// -//symbols from file: rtl\setfunc.prg -// -// //symbols from file: rtl\setkey.prg // EXTERNAL SETKEY @@ -632,9 +625,6 @@ EXTERNAL TBROWSENEW // EXTERNAL TCLASS // -//symbols from file: rtl\terror.prg -// -// //symbols from file: rtl\text.prg // EXTERNAL __TEXTSAVE @@ -649,8 +639,33 @@ EXTERNAL _GET_ //symbols from file: rtl\tgetlist.prg // EXTERNAL READMODAL +EXTERNAL GETREADER +EXTERNAL GETPREVALIDATE +EXTERNAL GETPOSTVALIDATE +EXTERNAL GETDOSETKEY +EXTERNAL READFORMAT +EXTERNAL __SETFORMAT +EXTERNAL READKILL +EXTERNAL __KILLREAD +EXTERNAL GETACTIVE +EXTERNAL READVAR EXTERNAL READEXIT EXTERNAL READINSERT +EXTERNAL READUPDATED +EXTERNAL UPDATED +EXTERNAL GETAPPLYKEY +// +//symbols from file: rtl\tlabel.prg +// +EXTERNAL __LABELFORM +// +//symbols from file: rtl\treport.prg +// +EXTERNAL __REPORTFORM +// +//symbols from file: rtl\typefile.prg +// +EXTERNAL __TYPEFILE // //symbols from file: rtl\wait.prg // @@ -672,6 +687,8 @@ EXTERNAL _DELIM EXTERNAL RDDSYS EXTERNAL AFIELDS EXTERNAL ALIAS +EXTERNAL DBEVAL +EXTERNAL DBF EXTERNAL BOF EXTERNAL DBAPPEND EXTERNAL DBCLEARFILTER @@ -679,26 +696,31 @@ EXTERNAL DBCLOSEALL EXTERNAL DBCLOSEAREA EXTERNAL DBCOMMIT EXTERNAL DBCOMMITALL +EXTERNAL __DBCONTINUE EXTERNAL DBCREATE EXTERNAL DBDELETE -EXTERNAL DBF EXTERNAL DBFILTER EXTERNAL DBGOBOTTOM EXTERNAL DBGOTO EXTERNAL DBGOTOP +EXTERNAL __DBLOCATE +EXTERNAL __DBSETLOCATE +EXTERNAL __DBPACK EXTERNAL DBRECALL EXTERNAL DBRLOCK EXTERNAL DBRLOCKLIST EXTERNAL DBRUNLOCK +EXTERNAL DBSEEK EXTERNAL DBSELECTAREA -EXTERNAL DBSETDRIVER -EXTERNAL DBSETFILTER +EXTERNAL __DBSETFOUND EXTERNAL DBSKIP +EXTERNAL DBSETFILTER EXTERNAL DBSTRUCT EXTERNAL DBTABLEEXT EXTERNAL DBUNLOCK EXTERNAL DBUNLOCKALL EXTERNAL DBUSEAREA +EXTERNAL __DBZAP EXTERNAL DELETED EXTERNAL EOF EXTERNAL FCOUNT @@ -709,14 +731,27 @@ EXTERNAL FIELDPUT EXTERNAL FLOCK EXTERNAL FOUND EXTERNAL HEADER +EXTERNAL INDEXORD EXTERNAL LASTREC EXTERNAL LOCK EXTERNAL LUPDATE EXTERNAL NETERR +EXTERNAL ORDBAGEXT +EXTERNAL ORDBAGNAME +EXTERNAL ORDCONDSET +EXTERNAL ORDCREATE +EXTERNAL ORDDESTROY +EXTERNAL ORDFOR +EXTERNAL ORDKEY +EXTERNAL ORDLISTADD +EXTERNAL ORDLISTCLEAR +EXTERNAL ORDLISTREBUILD +EXTERNAL ORDNAME +EXTERNAL ORDNUMBER +EXTERNAL ORDSETFOCUS EXTERNAL RDDLIST EXTERNAL RDDNAME EXTERNAL RDDREGISTER -EXTERNAL RDDSETDEFAULT EXTERNAL RECCOUNT EXTERNAL RECNO EXTERNAL RECSIZE @@ -724,6 +759,8 @@ EXTERNAL RLOCK EXTERNAL SELECT EXTERNAL USED EXTERNAL __RDDSETDEFAULT +EXTERNAL RDDSETDEFAULT +EXTERNAL DBSETDRIVER // //symbols from file: rdd\dbf1.c // @@ -732,6 +769,11 @@ EXTERNAL DBF_GETFUNCTABLE // //symbols from file: rdd\dbnubs.c // +EXTERNAL DBREINDEX +EXTERNAL DBCREATEINDEX +EXTERNAL DBCLEARINDEX +EXTERNAL DBSETINDEX +EXTERNAL DBSETORDER EXTERNAL __DBSEEK EXTERNAL __DBSKIP EXTERNAL __DBGOTOP @@ -767,20 +809,27 @@ EXTERNAL DELIM_GETFUNCTABLE EXTERNAL _SDFC EXTERNAL SDF_GETFUNCTABLE // -//symbols from file: rdd\dbf0.prg +//symbols from file: rdd\dbstrux.prg // +EXTERNAL __DBCOPYSTRUCT +EXTERNAL __DBCOPYXSTRUCT +EXTERNAL __DBCREATE +#ifdef HARBOUR_STRICT_CLIPPER_COMPATIBILITY +EXTERNAL __FLEDIT +#endif +EXTERNAL __DBSTRUCTFILTER // -//symbols from file: rdd\delim0.prg -// -// -//symbols from file: rdd\rddsys.prg -// -// -//symbols from file: rdd\sdf0.prg +//symbols from file: rdd\rddord.prg // +EXTERNAL INDEXEXT +EXTERNAL INDEXKEY //------------------------------------------------------------ -// Files from: hbpp +// Files from: pp // +// +//symbols from file: pp\hbpplib.c +// +EXTERNAL __PREPROCESS //------------------------------------------------------------ // Files from: tools // @@ -821,6 +870,18 @@ EXTERNAL GT_CHRFIRST // EXTERNAL GT_CHRTOTAL // +//symbols from file: tools\ctchksum.c +// +EXTERNAL CT_CHECKSUM +// +//symbols from file: tools\ctchrmix.c +// +EXTERNAL CT_CHARMIX +// +//symbols from file: tools\ctcrypt.c +// +EXTERNAL CT_CRYPT +// //symbols from file: tools\dates2.c // EXTERNAL AMONTHS @@ -839,6 +900,12 @@ EXTERNAL BOY // EXTERNAL DATETIME // +//symbols from file: tools\dbftools.c +// +EXTERNAL FIELDTYPE +EXTERNAL FIELDSIZE +EXTERNAL FIELDDECI +// //symbols from file: tools\hb_f.c // EXTERNAL HB_FUSE @@ -920,6 +987,9 @@ EXTERNAL GT_STRRIGHT // EXTERNAL TFILEREAD // +//symbols from file: tools\html.prg +// +// //symbols from file: tools\nconvert.prg // EXTERNAL ISBIN @@ -948,17 +1018,4 @@ EXTERNAL TOCHAR EXTERNAL DEBUG //------------------------------------------------------------ -EXTERNAL DBFCDX -EXTERNAL DBFNTX -EXTERNAL RDDSYS -EXTERNAL _DBF -EXTERNAL _DELIM -EXTERNAL RDDSYS -EXTERNAL _SDF -EXTERNAL SysInit -EXTERNAL CLIPPER520 -#ifdef HB_COMPAT_C53 -EXTERNAL CLIPPER530 -#endif - #endif /* HB_EXTERN_CH_ */ diff --git a/harbour/makefile.bc b/harbour/makefile.bc index 0c74427173..8aedeed8c6 100644 --- a/harbour/makefile.bc +++ b/harbour/makefile.bc @@ -190,6 +190,7 @@ HARBOUR_LIB_OBJS = $(OBJ_DIR)\achoice.obj \ $(OBJ_DIR)\tgetlist.obj \ $(OBJ_DIR)\tlabel.obj \ $(OBJ_DIR)\tone.obj \ + $(OBJ_DIR)\trace.obj \ $(OBJ_DIR)\transfrm.obj \ $(OBJ_DIR)\treport.obj \ $(OBJ_DIR)\type.obj \ @@ -213,6 +214,7 @@ TOOLS_LIB_OBJS = $(OBJ_DIR)\asciisum.obj \ $(OBJ_DIR)\chrtotal.obj \ $(OBJ_DIR)\dates2.obj \ $(OBJ_DIR)\datesx.obj \ + $(OBJ_DIR)\dbftools.obj \ $(OBJ_DIR)\fileread.obj \ $(OBJ_DIR)\hb_f.obj \ $(OBJ_DIR)\html.obj \ @@ -875,6 +877,10 @@ $(OBJ_DIR)\tone.obj : $(RTL_DIR)\tone.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, +$(OBJ_DIR)\trace.obj : $(RTL_DIR)\trace.c + $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** + tlib $(HARBOUR_LIB) -+$@,, + $(OBJ_DIR)\transfrm.obj : $(RTL_DIR)\transfrm.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, @@ -1034,6 +1040,10 @@ $(OBJ_DIR)\datesx.obj : $(TOOLS_DIR)\datesx.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(TOOLS_LIB) -+$@,, +$(OBJ_DIR)\dbftools.obj : $(TOOLS_DIR)\dbftools.c + $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** + tlib $(TOOLS_LIB) -+$@,, + $(OBJ_DIR)\fileread.c : $(TOOLS_DIR)\fileread.prg $(HARBOUR_EXE) $** -i$(INCLUDE_DIR) -n $(HARBOUR_OPT) -o$@ diff --git a/harbour/makefile.vc b/harbour/makefile.vc index 07ebf94afd..2a502f62df 100644 --- a/harbour/makefile.vc +++ b/harbour/makefile.vc @@ -173,6 +173,7 @@ HARBOUR_LIB_OBJS = \ $(OBJ_DIR)\tgetlist.obj \ $(OBJ_DIR)\tlabel.obj \ $(OBJ_DIR)\tone.obj \ + $(OBJ_DIR)\trace.obj \ $(OBJ_DIR)\transfrm.obj \ $(OBJ_DIR)\treport.obj \ $(OBJ_DIR)\type.obj \ @@ -869,6 +870,9 @@ $(OBJ_DIR)\tlabel.obj : $(OBJ_DIR)\tlabel.c $(OBJ_DIR)\tone.obj : $(RTL_DIR)\tone.c $(CC) -W1 -nologo -I$(INCLUDE_DIR) -DHARBOUR_USE_WIN_GTAPI -c -TP -Fo$@ $** +$(OBJ_DIR)\trace.obj : $(RTL_DIR)\trace.c + $(CC) -W1 -nologo -I$(INCLUDE_DIR) -DHARBOUR_USE_WIN_GTAPI -c -TP -Fo$@ $** + $(OBJ_DIR)\transfrm.obj : $(RTL_DIR)\transfrm.c $(CC) $(CLIBFLAGS) -Fo$@ $** diff --git a/harbour/source/debug/debugger.prg b/harbour/source/debug/debugger.prg index af844ad65e..fdc1801a24 100644 --- a/harbour/source/debug/debugger.prg +++ b/harbour/source/debug/debugger.prg @@ -985,7 +985,7 @@ METHOD Show( lFocused ) CLASS TDbWindow ::SetFocus( lFocused ) If ::lShadow - __Shadow( ::nTop, ::nLeft, ::nBottom, ::nRight ) + hb_Shadow( ::nTop, ::nLeft, ::nBottom, ::nRight ) endif return nil @@ -1232,7 +1232,7 @@ METHOD Display() CLASS TDbMenu else ::cBackImage = SaveScreen( ::nTop, ::nLeft, ::nBottom + 1, ::nRight + 2 ) @ ::nTop, ::nLeft, ::nBottom, ::nRight BOX B_SINGLE - __Shadow( ::nTop, ::nLeft, ::nBottom, ::nRight ) + hb_Shadow( ::nTop, ::nLeft, ::nBottom, ::nRight ) endif for n = 1 to Len( ::aItems ) diff --git a/harbour/source/rtl/alert.prg b/harbour/source/rtl/alert.prg index 9e32d59f88..48507da299 100644 --- a/harbour/source/rtl/alert.prg +++ b/harbour/source/rtl/alert.prg @@ -65,7 +65,7 @@ FUNCTION Alert( xMessage, aOptions, cColorNorm, nDelay ) if it is not, the console mode is choosen here. [vszakats] */ LOCAL lConsole := .F. - DEFAULT s_lNoAlert TO __argCheck( "NOALERT" ) + DEFAULT s_lNoAlert TO hb_argCheck( "NOALERT" ) IF s_lNoAlert RETURN NIL diff --git a/harbour/source/rtl/console.c b/harbour/source/rtl/console.c index 0629b7dd54..8286f11486 100644 --- a/harbour/source/rtl/console.c +++ b/harbour/source/rtl/console.c @@ -881,7 +881,7 @@ HARBOUR HB_NOSNOW( void ) hb_gtSetSnowFlag( hb_parl( 1 ) ); } -HARBOUR HB___SHADOW( void ) +HARBOUR HB_HB_SHADOW( void ) { if( hb_pcount() >= 4 ) { @@ -895,7 +895,7 @@ HARBOUR HB___SHADOW( void ) HARBOUR HB_DBGSHADOW( void ) { - HB___SHADOW(); + HB_HB_SHADOW(); } HARBOUR HB_SAVESCREEN( void ) diff --git a/harbour/source/rtl/inkey.c b/harbour/source/rtl/inkey.c index e0fe63a4d0..0e4919216e 100644 --- a/harbour/source/rtl/inkey.c +++ b/harbour/source/rtl/inkey.c @@ -72,7 +72,7 @@ * www - http://www.harbour-project.org * * Copyright 1999 Victor Szakats - * HB___KEYPUT() + * HB_HB_KEYPUT() * * See doc/license.txt for licensing terms. * @@ -1013,7 +1013,7 @@ void hb_inkeyPut( int ch ) } } -HARBOUR HB___KEYPUT( void ) +HARBOUR HB_HB_KEYPUT( void ) { if( ISNUM( 1 ) ) hb_inkeyPut( hb_parni( 1 ) ); diff --git a/harbour/source/vm/cmdarg.c b/harbour/source/vm/cmdarg.c index 9bba54eeb0..7b5504189b 100644 --- a/harbour/source/vm/cmdarg.c +++ b/harbour/source/vm/cmdarg.c @@ -203,14 +203,14 @@ int hb_cmdargNum( const char * pszName ) /* Check if an internal switch has been set */ -HARBOUR HB___ARGCHECK( void ) +HARBOUR HB_HB_ARGCHECK( void ) { hb_retl( ISCHAR( 1 ) ? hb_cmdargCheck( hb_parc( 1 ) ) : FALSE ); } /* Returns the value of an internal switch */ -HARBOUR HB___ARGSTRING( void ) +HARBOUR HB_HB_ARGSTRING( void ) { if( ISCHAR( 1 ) ) { @@ -229,7 +229,7 @@ HARBOUR HB___ARGSTRING( void ) /* Returns the number of command line arguments passed to the application, this also includes the internal arguments. */ -HARBOUR HB___ARGC( void ) +HARBOUR HB_HB_ARGC( void ) { hb_retni( s_argc - 1 ); } @@ -238,7 +238,7 @@ HARBOUR HB___ARGC( void ) the parameter zero, it will return the name of the executable, as written in the command line. */ -HARBOUR HB___ARGV( void ) +HARBOUR HB_HB_ARGV( void ) { if( ISNUM( 1 ) ) { diff --git a/harbour/source/vm/harbinit.prg b/harbour/source/vm/harbinit.prg index 7df07a385f..039b0885c8 100644 --- a/harbour/source/vm/harbinit.prg +++ b/harbour/source/vm/harbinit.prg @@ -39,13 +39,13 @@ ANNOUNCE SysInit /* NOTE: For complete compatibility */ -PROCEDURE CLIPPER520 +PROCEDURE CLIPPER520() RETURN #ifdef HB_COMPAT_C53 /* NOTE: For complete compatibility */ -PROCEDURE CLIPPER530 +PROCEDURE CLIPPER530() RETURN #endif @@ -64,7 +64,7 @@ INIT PROCEDURE ClipInit RETURN -PROCEDURE __SetHelpK +PROCEDURE __SetHelpK() SET KEY K_F1 TO __XHELP diff --git a/harbour/utils/hbextern/Makefile b/harbour/utils/hbextern/Makefile new file mode 100644 index 0000000000..de9c175a2b --- /dev/null +++ b/harbour/utils/hbextern/Makefile @@ -0,0 +1,28 @@ +# +# $Id$ +# + +ifeq ($(HB_MAIN),) + HB_MAIN = std +endif + +ROOT = ../../ + +PRG_SOURCES=\ + hbextern.prg \ + +PRG_MAIN=hbextern.prg + +LIBS=\ + debug \ + vm \ + rtl \ + rdd \ + rtl \ + vm \ + macro \ + pp \ + runner \ + common \ + +include $(TOP)$(ROOT)config/bin.cf diff --git a/harbour/utils/hbextern/hbextern.prg b/harbour/utils/hbextern/hbextern.prg new file mode 100644 index 0000000000..9264a08684 --- /dev/null +++ b/harbour/utils/hbextern/hbextern.prg @@ -0,0 +1,262 @@ +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * HBEXTERN.CH generator + * + * Copyright 1999 Ryszard Glab + * www - http://www.harbour-project.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version, with one exception: + * + * The exception is that if you link the Harbour Runtime Library (HRL) + * and/or the Harbour Virtual Machine (HVM) with other files to produce + * an executable, this does not by itself cause the resulting executable + * to be covered by the GNU General Public License. Your use of that + * executable is in no way restricted on account of linking the HRL + * and/or HVM code into it. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit + * their web site at http://www.gnu.org/). + * + */ + +/* NOTE: The process is not completely automatical, the generated output should + be edited by hand after extraction. */ + +#include "common.ch" +#include "fileio.ch" + +#include "hbclip.ch" + +#define PATH_SEPARATOR "\" +#define BASE_DIR "..\..\source\" + +STATIC aNames := {} + +PROCEDURE MAIN() +LOCAL aDirs:={ BASE_DIR + "vm",; + BASE_DIR + "rtl",; + BASE_DIR + "rdd",; + BASE_DIR + "pp",; + BASE_DIR + "tools" } +LOCAL i +LOCAL aFiles +LOCAL nOutput +LOCAL nTime:=SECONDS() + + nOutput =FCREATE( "hbextern.ch_" ) + IF( nOutput > 0 ) + FOR i:=1 TO LEN(aDirs) + FWRITE( nOutput, "// Files from: " +aDirs[i] ) + FWRITE( nOutput, hb_OSNewLine() ) + FWRITE( nOutput, "//" ) + FWRITE( nOutput, hb_OSNewLine() ) + aFiles =DIRECTORY( aDirs[i] +PATH_SEPARATOR +"*.c" ) + ProcessDir( nOutput, aFiles, aDirs[ i ] ) + aFiles =DIRECTORY( aDirs[i] +PATH_SEPARATOR +"*.prg" ) + ProcessDir( nOutput, aFiles, aDirs[ i ] ) + FWRITE( nOutput, "//" ) + FWRITE( nOutput, REPLICATE( "-", 60) ) + FWRITE( nOutput, hb_OSNewLine() ) + NEXT + FCLOSE( nOutput ) + ENDIF + ? SECONDS() - nTime + +RETURN + +PROCEDURE ProcessDir( nOutput, aFiles, cDir ) +LOCAL i, nLen + + ? "Files from ", cDir + nLen =LEN( aFiles ) + FOR i:=1 TO nLen + FWRITE( nOutput, "//" ) + FWRITE( nOutput, hb_OSNewLine() ) + FWRITE( nOutput, "//symbols from file: " +Lower(cDir+ PATH_SEPARATOR +aFiles[i][ 1 ] )) + FWRITE( nOutput, hb_OSNewLine() ) + FWRITE( nOutput, "//" ) + FWRITE( nOutput, hb_OSNewLine() ) + ProcessFile( nOutput, cDir + PATH_SEPARATOR + aFiles[ i ][ 1 ] ) + NEXT + +RETURN + +PROCEDURE ProcessFile( nOut, cFile ) +LOCAL nH + + ? cFile + IF( AT( "INITSYMB.C", UPPER(cFile) ) == 0 ) + nH =FOPEN( cFile ) + IF( nH > 0 ) + FILEEVAL( nH, 255, hb_OSNewLine(), {|c| Processline(nOut, c)} ) + FCLOSE( nH ) + ENDIF + ENDIF + +RETURN + +PROCEDURE ProcessLine( nOut, cLine ) +LOCAL nPos + + nPos =AT( "//", cLine ) + IF( nPos > 0 .AND. nPos < 7 ) + RETURN + ELSE + nPos =AT( "*", cLine ) + IF( nPos > 0 .AND. nPos < 7 ) + RETURN + ENDIF + ENDIF + + nPos =AT( "HARBOUR", cLine ) + IF( nPos > 0 ) + cLine = LTRIM( SUBSTR( cLine, nPos+7 ) ) + IF( AT( "HB_", cLine ) == 1 ) + nPos =AT( "(", cLine ) + IF( nPos > 0 ) + cLine :=ALLTRIM( SUBSTR( cLine, 4, nPos-4 ) ) + ? cLine + IF( (ISALPHA(cLine) .OR. cLine="_") .AND. ASCAN( aNames, {|c|c==cLine} ) == 0 ) + AADD( aNames, cLine ) + FWRITE( nOut, "EXTERNAL " +cLine + hb_OSNewLine() ) + ENDIF + ENDIF + ENDIF + ELSE + cLine =UPPER( cLine ) + nPos =AT( "FUNCTION", cLine ) + IF( nPos > 0 ) + IF( AT( "STATIC", cLine ) == 0 ) + cLine = LTRIM( SUBSTR( cLine, nPos+8 ) ) + nPos =AT( "(", cLine ) + IF( nPos > 0 ) + cLine :=ALLTRIM( LEFT( cLine, nPos-1 ) ) + ? cLine + IF( (ISALPHA(cLine) .OR. cLine="_") .AND. !(" " $ cLine) .AND. ASCAN( aNames, {|c|c==cLine} ) == 0 ) + AADD( aNames, cLine ) + FWRITE( nOut, "EXTERNAL " +cLine + hb_OSNewLine() ) + ENDIF + ENDIF + ENDIF + ELSE + nPos =AT( "PROCEDURE", cLine ) + IF( nPos > 0 ) + IF( AT( "STATIC", cLine ) == 0 ) + cLine = LTRIM( SUBSTR( cLine, nPos+9 ) ) + nPos =AT( "(", cLine ) + IF( nPos > 0 ) + cLine :=ALLTRIM( LEFT( cLine, nPos-1 ) ) + ? cLine + IF( (ISALPHA(cLine) .OR. cLine="_") .AND. !(" " $ cLine) .AND. ASCAN( aNames, {|c|c==cLine} ) == 0 ) + AADD( aNames, cLine ) + FWRITE( nOut, "EXTERNAL " +cLine + hb_OSNewLine() ) + ENDIF + ENDIF + ENDIF + ENDIF + ENDIF + ENDIF + +RETURN + +/// ------------------------------------------------ + +PROCEDURE FileEval( nHandle, nLineLength, cDelim, bBlock ) + LOCAL cLine + + FSEEK( nHandle, 0 ) + + cLine := FReadLn( nHandle, 1, nLineLength, cDelim ) + IF FERROR() != 0 + RETURN + ENDIF + + DO WHILE !( cLine == "" ) + + EVAL( bBlock, cLine ) + + // Read next line + cLine := FReadLn( nHandle, 1, nLineLength, cDelim ) + IF FERROR() != 0 + RETURN + ENDIF + + ENDDO + + RETURN + +FUNCTION FReadLn( nHandle, nLines, nLineLength, cDelim ) + + LOCAL nCurPos // Current position in file + LOCAL nFileSize // The size of the file + LOCAL nChrsToRead // Number of character to read + LOCAL nChrsRead // Number of characters actually read + LOCAL cBuffer // File read buffer + LOCAL cLines // Return value, the lines read + LOCAL nCount // Counts number of lines read + LOCAL nEOLPos // Position of EOL in cBuffer + + DEFAULT nLines TO 1 + DEFAULT nLineLength TO 80 + DEFAULT cDelim TO ( CHR(13) + CHR(10) ) + + nCurPos := FSEEK( nHandle, 0, FS_RELATIVE ) + nFileSize := FSEEK( nHandle, 0, FS_END ) + FSEEK( nHandle, nCurPos ) + + // Make sure no attempt is made to read past EOF + nChrsToRead := MIN( nLineLength, nFileSize - nCurPos ) + + cLines := '' + nCount := 1 + DO WHILE (( nCount <= nLines ) .AND. ( nChrsToRead != 0 )) + + cBuffer := SPACE( nChrsToRead ) + nChrsRead := FREAD( nHandle, @cBuffer, nChrsToRead ) + + // Check for error condition + IF !(nChrsRead == nChrsToRead) + // Error! + // In order to stay conceptually compatible with the other + // low-level file functions, force the user to check FERROR() + // (which was set by the FREAD() above) to discover this fact + // + nChrsToRead := 0 + ENDIF + + nEOLPos := AT( cDelim, cBuffer ) + + // Update buffer and current file position + IF ( nEOLPos == 0 ) + cLines += LEFT( cBuffer, nChrsRead ) + nCurPos += nChrsRead + ELSE + cLines += LEFT( cBuffer, ( nEOLPos + LEN( cDelim ) ) - 1 ) + nCurPos += ( nEOLPos + LEN( cDelim ) ) - 1 + FSEEK( nHandle, nCurPos, FS_SET ) + ENDIF + + // Make sure we don't try to read past EOF + IF (( nFileSize - nCurPos ) < nLineLength ) + nChrsToRead := ( nFileSize - nCurPos ) + ENDIF + + nCount++ + + ENDDO + + RETURN cLines diff --git a/harbour/utils/hbextern/make_c5x.bat b/harbour/utils/hbextern/make_c5x.bat new file mode 100644 index 0000000000..9cccaa7370 --- /dev/null +++ b/harbour/utils/hbextern/make_c5x.bat @@ -0,0 +1,8 @@ +@echo off +rem +rem $Id$ +rem + +clipper hbextern.prg /w /n /i..\..\include\ +rtlink fi hbextern +del *.obj