diff --git a/.gitattributes b/.gitattributes index 2043e29883..4d84913368 100644 --- a/.gitattributes +++ b/.gitattributes @@ -13,7 +13,7 @@ ChangeLog.txt ident *.cpp text *.css text *.def text -*.dif text +*.diff text *.h text *.hb text *.hbc text @@ -30,6 +30,7 @@ ChangeLog.txt ident *.mft text *.mk text *.nsi text +*.patch text *.pem text *.po text *.prg text @@ -73,7 +74,7 @@ ChangeLog.txt ident *.pdf binary *.pfb binary *.png binary -*.sq3 binary +*.sqlite3 binary *.tif binary # TOTEST: diff --git a/ChangeLog.txt b/ChangeLog.txt index fb2fc67fe5..836c5fdda4 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -7,6 +7,72 @@ Entries may not always be in chronological/commit order. See license at the end of file. */ +2017-09-13 12:38 UTC Viktor Szakats (vszakats users.noreply.github.com) + - doc/en/hashes.txt + - doc/en/rdddb.txt + * .gitattributes + * contrib/3rd/sqlite3/sqlite3.hbp + * contrib/hbbz2/3rd/bz2/bz2.hbp + * contrib/hbexpat/3rd/expat/expat.hbp + * contrib/hbfimage/hbfimage.hbp + * contrib/hbhpdf/3rd/libhpdf/libhpdf.hbp + * contrib/hblzf/3rd/liblzf/lzf.hbp + * contrib/hbmxml/3rd/minixml/mxml.hbp + * contrib/hbmzip/3rd/minizip/minizip.hbp + * contrib/hbodbc/hbodbc.hbp + * contrib/hbtinymt/3rd/tinymt/tinymt.hbp + * contrib/hbxdiff/3rd/libxdiff/xdiff.hbp + * contrib/sddsqlt3/tests/test.prg + * ChangeLog.txt + * doc/Makefile + * doc/oldnews.txt + * extras/ps32/readme.txt + * extras/superlib/readme.txt + * src/3rd/jpeg/Makefile + * src/3rd/pcre/Makefile + * src/3rd/png/Makefile + * src/3rd/tiff/Makefile + * src/3rd/zlib/Makefile + + contrib/hbsms/DEPRECATED.txt + + contrib/hbtpathy/DEPRECATED.txt + + contrib/xhb/WARNING.txt + * contrib/3rd/sqlite3/sqlite3.dif -> contrib/3rd/sqlite3/sqlite3.diff + * contrib/hbbz2/3rd/bz2/bz2.dif -> contrib/hbbz2/3rd/bz2/bz2.diff + * contrib/hbexpat/3rd/expat/expat.dif -> contrib/hbexpat/3rd/expat/expat.diff + * contrib/hbhpdf/3rd/libhpdf/libhpdf.dif -> contrib/hbhpdf/3rd/libhpdf/libhpdf.diff + * contrib/hblzf/3rd/liblzf/liblzf.dif -> contrib/hblzf/3rd/liblzf/liblzf.diff + * contrib/hbmxml/3rd/minixml/minixml.dif -> contrib/hbmxml/3rd/minixml/minixml.diff + * contrib/hbmzip/3rd/minizip/minizip.dif -> contrib/hbmzip/3rd/minizip/minizip.diff + * contrib/hbtinymt/3rd/tinymt/tinymt.dif -> contrib/hbtinymt/3rd/tinymt/tinymt.diff + * contrib/hbxdiff/3rd/libxdiff/libxdiff.dif -> contrib/hbxdiff/3rd/libxdiff/xdiff.diff + * contrib/sddsqlt3/tests/test.sq3 -> contrib/sddsqlt3/tests/test.sqlite3 + * extras/dbu/dbu52.dif -> extras/dbu/dbu52.patch + * extras/dbu/dbu53.dif -> extras/dbu/dbu53.patch + * extras/ps32/ps32.dif -> extras/ps32/ps32.patch + * extras/rl/rl.dif -> extras/rl/rl.patch + * extras/superlib/superlib.dif -> extras/superlib/superlib.patch + * extras/template/readme.txt -> extras/template/README.md + * src/3rd/hbdossrl/README -> src/3rd/hbdossrl/README.txt + * src/3rd/jpeg/jpeg.dif -> src/3rd/jpeg/jpeg.diff + * src/3rd/pcre/pcre.dif -> src/3rd/pcre/pcre.diff + * src/3rd/png/png.dif -> src/3rd/png/png.diff + * src/3rd/tiff/tiff.dif -> src/3rd/tiff/tiff.diff + * src/3rd/zlib/zlib.dif -> src/3rd/zlib/zlib.diff + * tests/hbpptest/_pp_test.prg -> tests/hbpp/_pp_test.prg + * tests/hbpptest/compare.hb -> tests/hbpp/compare.hb + * tests/hbpptest/hbpptest.hbp -> tests/hbpp/hbpptest.hbp + * tests/hbpptest/hbpptest.prg -> tests/hbpp/hbpptest.prg + * tests/tflock.prg -> tests/flock.prg + * contrib/hbfimage/fi_wrp.c -> contrib/hbfimage/core.c + * contrib/hbodbc/browodbc.prg -> contrib/hbodbc/browse.prg + * doc/cmdline.txt -> doc/cmdline.md + * extras/dbu/readme.txt -> extras/dbu/README.md + * extras/rl/readme.txt -> extras/rl/README.md + * some file renames synced with 3.4 fork, plus the content of + some of them. Some new text files added as well. + Note, 3rd party code rediffing won't work anymore on 8.3 + filesystems. + 2017-09-13 11:57 UTC Viktor Szakats (vszakats users.noreply.github.com) + src/rdd/usrrdd/rdds/arrayrdd.prg -> contrib/rddmisc/arrayrdd.prg + src/rdd/usrrdd/rdds/dbtcdx.prg -> contrib/rddmisc/dbtcdx.prg diff --git a/contrib/3rd/sqlite3/sqlite3.dif b/contrib/3rd/sqlite3/sqlite3.diff similarity index 100% rename from contrib/3rd/sqlite3/sqlite3.dif rename to contrib/3rd/sqlite3/sqlite3.diff diff --git a/contrib/3rd/sqlite3/sqlite3.hbp b/contrib/3rd/sqlite3/sqlite3.hbp index c21153eb63..048c17be39 100644 --- a/contrib/3rd/sqlite3/sqlite3.hbp +++ b/contrib/3rd/sqlite3/sqlite3.hbp @@ -47,7 +47,7 @@ sqlite3.c # ORIGIN http://www.sqlite.org/ # VER 3.8.2 # URL http://sqlite.org/2013/sqlite-amalgamation-3080200.zip -# DIFF sqlite3.dif +# DIFF sqlite3.diff # # MAP sqlite3.c # MAP sqlite3.h diff --git a/contrib/hbbz2/3rd/bz2/bz2.dif b/contrib/hbbz2/3rd/bz2/bz2.diff similarity index 100% rename from contrib/hbbz2/3rd/bz2/bz2.dif rename to contrib/hbbz2/3rd/bz2/bz2.diff diff --git a/contrib/hbbz2/3rd/bz2/bz2.hbp b/contrib/hbbz2/3rd/bz2/bz2.hbp index 490825c539..0a712a0748 100644 --- a/contrib/hbbz2/3rd/bz2/bz2.hbp +++ b/contrib/hbbz2/3rd/bz2/bz2.hbp @@ -29,7 +29,7 @@ randtabl.c # ORIGIN http://www.bzip.org/ # VER 1.0.6 # URL http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz -# DIFF bz2.dif +# DIFF bz2.diff # # MAP LICENSE # MAP blocksort.c blocksor.c diff --git a/contrib/hbexpat/3rd/expat/expat.dif b/contrib/hbexpat/3rd/expat/expat.diff similarity index 100% rename from contrib/hbexpat/3rd/expat/expat.dif rename to contrib/hbexpat/3rd/expat/expat.diff diff --git a/contrib/hbexpat/3rd/expat/expat.hbp b/contrib/hbexpat/3rd/expat/expat.hbp index 2644027ab5..2d813c0a2f 100644 --- a/contrib/hbexpat/3rd/expat/expat.hbp +++ b/contrib/hbexpat/3rd/expat/expat.hbp @@ -23,7 +23,7 @@ xmltok.c # ORIGIN https://expat.sourceforge.net/ # VER 2.2.1 # URL https://downloads.sourceforge.net/project/expat/expat/2.2.1/expat-2.2.1.tar.bz2 -# DIFF expat.dif +# DIFF expat.diff # # MAP COPYING # MAP lib/xmlparse.c xmlparse.c diff --git a/contrib/hbfimage/fi_wrp.c b/contrib/hbfimage/core.c similarity index 98% rename from contrib/hbfimage/fi_wrp.c rename to contrib/hbfimage/core.c index 71b2ef580a..819a9e3a5c 100644 --- a/contrib/hbfimage/fi_wrp.c +++ b/contrib/hbfimage/core.c @@ -1,5 +1,5 @@ /* - * FreeImage graphic library low level (client api) interface code. + * FreeImage graphic library low-level (client API) interface code. * * Copyright 2005 Francesco Saverio Giudice * Copyright 2012 Viktor Szakats (vszakats.net/harbour) @@ -62,7 +62,7 @@ #include "FreeImage.h" -#define hb_fi_retl( x ) hb_retl( x ? HB_TRUE : HB_FALSE ) +#define hb_fi_retl( x ) hb_retl( ( x ) ? HB_TRUE : HB_FALSE ) #define hb_fi_parl( x ) ( hb_parl( x ) ? TRUE : FALSE ) /* Error callback */ @@ -208,10 +208,9 @@ static void hb_FIMULTIBITMAP_ret( FIMULTIBITMAP * bitmap ) hb_retptrGC( ( void * ) ptr ); } -/* ************************* WRAPPED FUNCTIONS ****************************** */ +/* *** WRAPPED FUNCTIONS *** */ /* Init / Error routines */ -/* --------------------- */ HB_FUNC( FI_INITIALISE ) { @@ -224,7 +223,6 @@ HB_FUNC( FI_DEINITIALISE ) } /* Version routines */ -/* ---------------- */ HB_FUNC( FI_GETVERSION ) { @@ -237,7 +235,6 @@ HB_FUNC( FI_GETCOPYRIGHTMESSAGE ) } /* Message output functions */ -/* ------------------------ */ /* DLL_API void DLL_CALLCONV FreeImage_OutputMessageProc(int fif, const char *fmt, ...); */ @@ -285,7 +282,6 @@ HB_FUNC( FI_SETOUTPUTMESSAGE ) } /* Allocate / Clone / Unload routines */ -/* ---------------------------------- */ /* DLL_API FIBITMAP *DLL_CALLCONV FreeImage_Allocate(int width, int height, int bpp, unsigned red_mask FI_DEFAULT(0), unsigned green_mask FI_DEFAULT(0), unsigned blue_mask FI_DEFAULT(0)); */ HB_FUNC( FI_ALLOCATE ) @@ -351,7 +347,6 @@ HB_FUNC( FI_UNLOAD ) #endif /* Load / Save routines */ -/* -------------------- */ /* DLL_API FIBITMAP *DLL_CALLCONV FreeImage_LoadFromMemory(FREE_IMAGE_FORMAT fif, FIMEMORY *stream, int flags FI_DEFAULT(0)); */ /* DLL_API FIMEMORY *DLL_CALLCONV FreeImage_OpenMemory(BYTE *data FI_DEFAULT(0), DWORD size_in_bytes FI_DEFAULT(0)); */ @@ -423,7 +418,6 @@ HB_FUNC( FI_SAVE ) /* DLL_API BOOL DLL_CALLCONV FreeImage_SaveToHandle(FREE_IMAGE_FORMAT fif, FIBITMAP *dib, FreeImageIO *io, fi_handle handle, int flags FI_DEFAULT(0)); */ /* Memory I/O stream routines */ -/* -------------------------- */ /* DLL_API FIMEMORY *DLL_CALLCONV FreeImage_OpenMemory(BYTE *data FI_DEFAULT(0), DWORD size_in_bytes FI_DEFAULT(0)); @@ -436,7 +430,6 @@ HB_FUNC( FI_SAVE ) */ /* Plugin Interface */ -/* ---------------- */ /* DLL_API FREE_IMAGE_FORMAT DLL_CALLCONV FreeImage_RegisterLocalPlugin(FI_InitProc proc_address, const char *format FI_DEFAULT(0), const char *description FI_DEFAULT(0), const char *extension FI_DEFAULT(0), const char *regexpr FI_DEFAULT(0)); @@ -461,7 +454,6 @@ HB_FUNC( FI_SAVE ) */ /* Multipaging interface */ -/* --------------------- */ /* DLL_API FIMULTIBITMAP * DLL_CALLCONV FreeImage_OpenMultiBitmap(FREE_IMAGE_FORMAT fif, const char *filename, BOOL create_new, BOOL read_only, BOOL keep_cache_in_memory FI_DEFAULT(FALSE), int flags FI_DEFAULT(0)); */ HB_FUNC( FI_OPENMULTIBITMAP ) @@ -614,7 +606,6 @@ HB_FUNC( FI_MOVEPAGE ) /* DLL_API BOOL DLL_CALLCONV FreeImage_GetLockedPageNumbers(FIMULTIBITMAP *bitmap, int *pages, int *count); */ /* Filetype request routines */ -/* ------------------------- */ /* DLL_API FREE_IMAGE_FORMAT DLL_CALLCONV FreeImage_GetFileType(const char *filename, int size FI_DEFAULT(0)); */ HB_FUNC( FI_GETFILETYPE ) @@ -649,18 +640,18 @@ HB_FUNC( FI_GETFILETYPEFROMMEMORY ) } /* Image type request routine */ -/* -------------------------- */ HB_FUNC( FI_GETIMAGETYPE ) { if( hb_FIBITMAP_is( 1 ) ) + + if( dib ) hb_retni( FreeImage_GetImageType( hb_FIBITMAP_par( 1 ) ) ); else hb_errRT_BASE_SubstR( EG_ARG, 0, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } /* FreeImage helper routines */ -/* ------------------------- */ /* DLL_API BOOL DLL_CALLCONV FreeImage_IsLittleEndian(void); */ HB_FUNC( FI_ISLITTLEENDIAN ) @@ -673,7 +664,6 @@ HB_FUNC( FI_ISLITTLEENDIAN ) /* Pixel access routines */ -/* --------------------- */ /* DLL_API BYTE *DLL_CALLCONV FreeImage_GetBits(FIBITMAP *dib); */ HB_FUNC( FI_GETBITS ) @@ -707,7 +697,6 @@ HB_FUNC( FI_GETSCANLINE ) */ /* DIB info routines */ -/* ----------------- */ HB_FUNC( FI_GETCOLORSUSED ) { @@ -970,7 +959,6 @@ HB_FUNC( FI_SETBACKGROUNDCOLOR ) } /* ICC profile routines */ -/* -------------------- */ /* DLL_API FIICCPROFILE *DLL_CALLCONV FreeImage_GetICCProfile(FIBITMAP *dib); */ HB_FUNC( FI_GETICCPROFILE ) @@ -1008,7 +996,6 @@ HB_FUNC( FI_DESTROYICCPROFILE ) } /* Line conversion routines */ -/* ------------------------ */ /* DLL_API void DLL_CALLCONV FreeImage_ConvertLine1To4(BYTE *target, BYTE *source, int width_in_pixels); @@ -1050,7 +1037,6 @@ HB_FUNC( FI_DESTROYICCPROFILE ) */ /* Smart conversion routines */ -/* ------------------------- */ HB_FUNC( FI_CONVERTTO4BITS ) { @@ -1188,7 +1174,6 @@ HB_FUNC( FI_CONVERTTOTYPE ) /* DLL_API FIBITMAP* DLL_CALLCONV FreeImage_TmoReinhard05(FIBITMAP *src, double intensity FI_DEFAULT(0), double contrast FI_DEFAULT(0)); */ /* ZLib interface */ -/* -------------- */ /* DLL_API DWORD DLL_CALLCONV FreeImage_ZLibCompress(BYTE *target, DWORD target_size, BYTE *source, DWORD source_size); */ /* DLL_API DWORD DLL_CALLCONV FreeImage_ZLibUncompress(BYTE *target, DWORD target_size, BYTE *source, DWORD source_size); */ @@ -1197,7 +1182,6 @@ HB_FUNC( FI_CONVERTTOTYPE ) /* DLL_API DWORD DLL_CALLCONV FreeImage_ZLibCRC32(DWORD crc, BYTE *source, DWORD source_size); */ /* Metadata routines */ -/* ----------------- */ /* tag creation / destruction */ /* DLL_API FITAG *DLL_CALLCONV FreeImage_CreateTag(); */ @@ -1237,7 +1221,6 @@ HB_FUNC( FI_CONVERTTOTYPE ) /* DLL_API const char* DLL_CALLCONV FreeImage_TagToString(FREE_IMAGE_MDMODEL model, FITAG *tag, char *Make FI_DEFAULT(NULL)); */ /* Image manipulation toolkit */ -/* -------------------------- */ /* rotation and flipping */ @@ -1300,7 +1283,6 @@ HB_FUNC( FI_FLIPVERTICAL ) /* DLL_API BOOL DLL_CALLCONV FreeImage_JPEGTransform(const char *src_file, const char *dst_file, FREE_IMAGE_JPEG_OPERATION operation, BOOL perfect FI_DEFAULT(FALSE)); */ /* upsampling / downsampling */ -/* ------------------------- */ /* DLL_API FIBITMAP *DLL_CALLCONV FreeImage_Rescale(FIBITMAP *dib, int dst_width, int dst_height, FREE_IMAGE_FILTER filter); */ HB_FUNC( FI_RESCALE ) @@ -1322,7 +1304,6 @@ HB_FUNC( FI_RESCALE ) } /* color manipulation routines (point operations) */ -/* ---------------------------------------------- */ /* DLL_API BOOL DLL_CALLCONV FreeImage_AdjustCurve(FIBITMAP *dib, BYTE *LUT, FREE_IMAGE_COLOR_CHANNEL channel); */ @@ -1382,7 +1363,6 @@ HB_FUNC( FI_INVERT ) /* DLL_API BOOL DLL_CALLCONV FreeImage_GetHistogram(FIBITMAP *dib, DWORD *histo, FREE_IMAGE_COLOR_CHANNEL channel FI_DEFAULT(FICC_BLACK)); */ /* channel processing routines */ -/* --------------------------- */ /* DLL_API FIBITMAP *DLL_CALLCONV FreeImage_GetChannel(FIBITMAP *dib, FREE_IMAGE_COLOR_CHANNEL channel); */ HB_FUNC( FI_GETCHANNEL ) @@ -1404,7 +1384,6 @@ HB_FUNC( FI_GETCHANNEL ) /* DLL_API BOOL DLL_CALLCONV FreeImage_SetComplexChannel(FIBITMAP *dst, FIBITMAP *src, FREE_IMAGE_COLOR_CHANNEL channel); */ /* copy / paste / composite routines */ -/* --------------------------------- */ /* DLL_API FIBITMAP *DLL_CALLCONV FreeImage_Copy(FIBITMAP *dib, int left, int top, int right, int bottom); */ HB_FUNC( FI_COPY ) diff --git a/contrib/hbfimage/hbfimage.hbp b/contrib/hbfimage/hbfimage.hbp index 159b85252b..f90951bd07 100644 --- a/contrib/hbfimage/hbfimage.hbp +++ b/contrib/hbfimage/hbfimage.hbp @@ -20,4 +20,4 @@ ${hb_name}.hbx -fi_wrp.c +core.c diff --git a/contrib/hbhpdf/3rd/libhpdf/libhpdf.dif b/contrib/hbhpdf/3rd/libhpdf/libhpdf.diff similarity index 100% rename from contrib/hbhpdf/3rd/libhpdf/libhpdf.dif rename to contrib/hbhpdf/3rd/libhpdf/libhpdf.diff diff --git a/contrib/hbhpdf/3rd/libhpdf/libhpdf.hbp b/contrib/hbhpdf/3rd/libhpdf/libhpdf.hbp index 17081df2db..91de50354e 100644 --- a/contrib/hbhpdf/3rd/libhpdf/libhpdf.hbp +++ b/contrib/hbhpdf/3rd/libhpdf/libhpdf.hbp @@ -95,7 +95,7 @@ hpdfxref.c # ORIGIN http://libharu.org/ # VER 2.3.0RC3 # URL https://github.com/libharu/libharu/archive/RELEASE_2_3_0RC3.zip -# DIFF libhpdf.dif +# DIFF libhpdf.diff # # MAP README # MAP src/hpdf_3dmeasure.c hpdf3dme.c diff --git a/contrib/hblzf/3rd/liblzf/liblzf.dif b/contrib/hblzf/3rd/liblzf/liblzf.diff similarity index 100% rename from contrib/hblzf/3rd/liblzf/liblzf.dif rename to contrib/hblzf/3rd/liblzf/liblzf.diff diff --git a/contrib/hblzf/3rd/liblzf/lzf.hbp b/contrib/hblzf/3rd/liblzf/lzf.hbp index 0a82279cfc..1369fcf088 100644 --- a/contrib/hblzf/3rd/liblzf/lzf.hbp +++ b/contrib/hblzf/3rd/liblzf/lzf.hbp @@ -21,7 +21,7 @@ lzf_d.c # ORIGIN http://liblzf.plan9.de # VER 3.6 # URL http://dist.schmorp.de/liblzf/liblzf-3.6.tar.gz -# DIFF liblzf.dif +# DIFF liblzf.diff # # MAP LICENSE # MAP Changes diff --git a/contrib/hbmxml/3rd/minixml/minixml.dif b/contrib/hbmxml/3rd/minixml/minixml.diff similarity index 100% rename from contrib/hbmxml/3rd/minixml/minixml.dif rename to contrib/hbmxml/3rd/minixml/minixml.diff diff --git a/contrib/hbmxml/3rd/minixml/mxml.hbp b/contrib/hbmxml/3rd/minixml/mxml.hbp index 12baede2e0..2b5a4af82e 100644 --- a/contrib/hbmxml/3rd/minixml/mxml.hbp +++ b/contrib/hbmxml/3rd/minixml/mxml.hbp @@ -31,7 +31,7 @@ mxml_str.c # ORIGIN http://www.minixml.org # VER 2.8 # URL https://www.msweet.org/files/project3/mxml-2.8.tar.gz -# DIFF minixml.dif +# DIFF minixml.diff # # MAP COPYING # MAP config.h.in config.h diff --git a/contrib/hbmzip/3rd/minizip/minizip.dif b/contrib/hbmzip/3rd/minizip/minizip.diff similarity index 100% rename from contrib/hbmzip/3rd/minizip/minizip.dif rename to contrib/hbmzip/3rd/minizip/minizip.diff diff --git a/contrib/hbmzip/3rd/minizip/minizip.hbp b/contrib/hbmzip/3rd/minizip/minizip.hbp index f9dfe0c2eb..db9a82edc9 100644 --- a/contrib/hbmzip/3rd/minizip/minizip.hbp +++ b/contrib/hbmzip/3rd/minizip/minizip.hbp @@ -29,7 +29,7 @@ unzip.c # ORIGIN http://zlib.net/ # VER 1.2.8 # URL https://downloads.sourceforge.net/libpng/zlib128.zip -# DIFF minizip.dif +# DIFF minizip.diff # # MAP README # MAP contrib/minizip/crypt.h crypt.h diff --git a/contrib/hbodbc/browodbc.prg b/contrib/hbodbc/browse.prg similarity index 95% rename from contrib/hbodbc/browodbc.prg rename to contrib/hbodbc/browse.prg index dda5c79251..63eb83d605 100644 --- a/contrib/hbodbc/browodbc.prg +++ b/contrib/hbodbc/browse.prg @@ -5,6 +5,8 @@ * Copyright 1999-2001 Viktor Szakats (vszakats.net/harbour) for original FieldBlock function * Copyright 1999 Paul Tucker for original Skipped function * Copyright 2002 Tomaz Zupan modifications for ODBC + * This code is mostly derived work from Harbour RTL browse.prg, browdb.prg. + * and fieldbl.prg. Only minor changes were needed to adapt them to ODBC. * * 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 @@ -47,11 +49,6 @@ * */ - /* CREDITS: - * This code is mostly derived work from harbours RTL browse.prg, browdb.prg. - * and fieldbl.prg. Only minor changes were needed to adapt them to ODBC. - */ - #include "box.ch" #include "inkey.ch" #include "setcurs.ch" @@ -177,7 +174,7 @@ FUNCTION BrowseODBC( nTop, nLeft, nBottom, nRight, oDataSource ) RETURN .T. -STATIC PROCEDURE Statline( oBrw, oDataSource ) +STATIC PROCEDURE StatLine( oBrw, oDataSource ) LOCAL nTop := oBrw:nTop - 1 LOCAL nRight := oBrw:nRight @@ -203,9 +200,10 @@ STATIC FUNCTION Skipped( nRecs, oDataSource ) LOCAL nSkipped := 0 IF ! oDataSource:Eof() - IF nRecs == 0 + DO CASE + CASE nRecs == 0 // ODBC doesn't have Skip( 0 ) - ELSEIF nRecs > 0 + CASE nRecs > 0 DO WHILE nSkipped < nRecs IF ! oDataSource:Eof() oDataSource:next() @@ -216,7 +214,7 @@ STATIC FUNCTION Skipped( nRecs, oDataSource ) nSkipped++ ENDIF ENDDO - ELSEIF nRecs < 0 + CASE nRecs < 0 DO WHILE nSkipped > nRecs IF ! oDataSource:Bof() oDataSource:prior() @@ -226,7 +224,7 @@ STATIC FUNCTION Skipped( nRecs, oDataSource ) nSkipped-- ENDIF ENDDO - ENDIF + ENDCASE ENDIF RETURN nSkipped diff --git a/contrib/hbodbc/hbodbc.hbp b/contrib/hbodbc/hbodbc.hbp index a732bfb41b..e161ea5f3a 100644 --- a/contrib/hbodbc/hbodbc.hbp +++ b/contrib/hbodbc/hbodbc.hbp @@ -20,4 +20,4 @@ ${hb_name}.hbx odbc.c todbc.prg -browodbc.prg +browse.prg diff --git a/contrib/hbsms/DEPRECATED.txt b/contrib/hbsms/DEPRECATED.txt new file mode 100644 index 0000000000..36ca3f0189 --- /dev/null +++ b/contrib/hbsms/DEPRECATED.txt @@ -0,0 +1,6 @@ +This contrib is deprecated and not maintained anymore. + +It also never leapt out of an experimental stage, so use it with caution. + +Please either copy this code to your local application to continue using it, +or switch to a 3rd party solution ASAP. diff --git a/contrib/hbtinymt/3rd/tinymt/tinymt.dif b/contrib/hbtinymt/3rd/tinymt/tinymt.diff similarity index 100% rename from contrib/hbtinymt/3rd/tinymt/tinymt.dif rename to contrib/hbtinymt/3rd/tinymt/tinymt.diff diff --git a/contrib/hbtinymt/3rd/tinymt/tinymt.hbp b/contrib/hbtinymt/3rd/tinymt/tinymt.hbp index 2e048a005e..245260379b 100644 --- a/contrib/hbtinymt/3rd/tinymt/tinymt.hbp +++ b/contrib/hbtinymt/3rd/tinymt/tinymt.hbp @@ -16,7 +16,7 @@ tinymt64.c # ORIGIN http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/TINYMT/ # VER 1.0.3 # URL http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/TINYMT/TinyMT-src-1.0.3.zip -# DIFF tinymt.dif +# DIFF tinymt.diff # # MAP LICENSE.txt LICENSE.txt # MAP tinymt/tinymt32.c tinymt32.c diff --git a/contrib/hbtpathy/DEPRECATED.txt b/contrib/hbtpathy/DEPRECATED.txt new file mode 100644 index 0000000000..a8430bc43b --- /dev/null +++ b/contrib/hbtpathy/DEPRECATED.txt @@ -0,0 +1,6 @@ +This contrib is deprecated and not maintained anymore. + +It also hasn't been tested in a long time, so it likely contains bugs. +it's also an incomplete implementation of the original API. + +Please switch to the Harbour core serial API ASAP. diff --git a/contrib/hbxdiff/3rd/libxdiff/libxdiff.dif b/contrib/hbxdiff/3rd/libxdiff/xdiff.diff similarity index 100% rename from contrib/hbxdiff/3rd/libxdiff/libxdiff.dif rename to contrib/hbxdiff/3rd/libxdiff/xdiff.diff diff --git a/contrib/hbxdiff/3rd/libxdiff/xdiff.hbp b/contrib/hbxdiff/3rd/libxdiff/xdiff.hbp index 2567d75590..9762929a70 100644 --- a/contrib/hbxdiff/3rd/libxdiff/xdiff.hbp +++ b/contrib/hbxdiff/3rd/libxdiff/xdiff.hbp @@ -29,7 +29,7 @@ xversion.c # ORIGIN http://www.xmailserver.org/xdiff-lib.html # VER 0.23 # URL http://www.xmailserver.org/libxdiff-0.23.tar.gz -# DIFF libxdiff.dif +# DIFF xdiff.diff # # MAP AUTHORS # MAP COPYING diff --git a/contrib/sddsqlt3/tests/test.prg b/contrib/sddsqlt3/tests/test.prg index 724b75f130..8a050b973e 100644 --- a/contrib/sddsqlt3/tests/test.prg +++ b/contrib/sddsqlt3/tests/test.prg @@ -22,7 +22,7 @@ PROCEDURE Main() AEval( rddList(), {| X | QOut( X ) } ) ? "-1-" - ? "Connect:", tmp := rddInfo( RDDI_CONNECT, { "SQLITE3", hb_DirBase() + "test.sq3" } ) + ? "Connect:", tmp := rddInfo( RDDI_CONNECT, { "SQLITE3", hb_DirBase() + "test.sqlite3" } ) IF tmp == 0 ? "Unable connect to the server" ENDIF diff --git a/contrib/sddsqlt3/tests/test.sq3 b/contrib/sddsqlt3/tests/test.sqlite3 similarity index 100% rename from contrib/sddsqlt3/tests/test.sq3 rename to contrib/sddsqlt3/tests/test.sqlite3 diff --git a/contrib/xhb/WARNING.txt b/contrib/xhb/WARNING.txt new file mode 100644 index 0000000000..12f1f9460a --- /dev/null +++ b/contrib/xhb/WARNING.txt @@ -0,0 +1,24 @@ +WARNING for XHB contrib users +============================= + +This contrib is deprecated and not maintained anymore. + +This was originally meant as a temporary stop-gap solution to help migrating +existing code written for xHarbour to Harbour, plus a means of documenting +the differences between these two branches of the language. The recommended +path is to gradually migrate to use native core Harbour functions and core +language elements, then finalize that process by dropping the need for this +library. + +Linking this library and/or using its headers (`hbcompat.ch` and `xhb.ch` in +particular) may cause various unintended side-effects both at compilation +and runtime. + +Most of this code is also never tested by this fork, and none of it is ever +used, so the chances of bugs is higher than in other parts of Harbour. + +If you can't do without some parts of this code, feel free to fork it locally +or publicly and continue maintaining it there, otherwise try switching to +core Harbour functionality ASAP. + +-Viktor diff --git a/doc/Makefile b/doc/Makefile index 9f14623e58..873a0107ba 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -4,7 +4,7 @@ DOC_FILES := \ c_std.txt \ class_tp.txt \ clipper.txt \ - cmdline.txt \ + cmdline.md \ cmpopt.txt \ codebloc.txt \ codestyl.txt \ diff --git a/doc/cmdline.md b/doc/cmdline.md new file mode 100644 index 0000000000..8330cd5ca6 --- /dev/null +++ b/doc/cmdline.md @@ -0,0 +1,98 @@ +# Harbour switch handling spec + +This spec goes for `CLIPPERCMD`, `HARBOURCMD`, Harbour compiler and +`#pragma` directives in the source code. + +The command-line always overrides the envvar. + +Note that some switches are not accepted in envvar, some others in +`#pragma`s. + +First the parser should start to step through all the tokens in the +string separated by whitespace. (or just walk through all `argv[]`) + +1. If the token begins with `-`, it should be treated as a new style switch. + + One or more switch characters can follow this. The `-` sign inside the + token will turn off the switch. + + If the switch has an argument all the following characters are treated + as part of the argument. + + The `/` sign has no special meaning here. + + ``` + Switch Resulting options + + -wn ( W N ) + -w-n ( !W N ) + -wi/harbour/include/ ( W I=/harbour/include/ ) + -wi/harbour/include/n ( W I=/harbour/include/n ) + -wes0n ( W ES=0 N ) + -wen ( W [invalid switch: e] N ) + -wesn ( W ES=Default(0) N ) + -wses ( W S ES=Default(0) ) + -wess ( W ES=Default(0) S ) + - ( [invalid switch] ) + -w-n-p ( !W !N P ) + -w-n-p- ( !W !N !P ) + + -w- -w -w- ( finally: !W ) + ``` + +2. If the token begins with `/`, it should be treated as a compatibility + style switch. + + The parser scans the token for the next `/` sign or `EOS` and treats the + resulting string as one switch. + + This means that a switch with an argument containing `/` sign has some + limitations. This may be solved by allowing the usage of quote characters. + This is mostly a problem on systems which use `/` as path separator. + + The `-` sign has no special meaning here, it cannot be used to disable + a switch. + + ``` + Switch Resulting options + + /w/n ( W N ) + /wo/n ( [invalid switch: wo] N ) + /ihello/world/ ( I=hello [invalid switch: world] [invalid switch: /] ) + /i"hello/world/"/w ( I=hello/world/ W ) + /ihello\world\ ( I=hello\world\ ) + ``` + +3. If the token begins with anything else it should be skipped. + + The Harbour switches are always case insensitive. + + In the Harbour command-line the two style can be used together: + ``` + harbour -wnes2 /gc0/q0 -iC:\hb\include + ``` + + Exceptions: + + - Handling of the `/CREDIT` undocumented switch on Harbour command-line + is unusual, check the current code for this. + + - `CLIPPER`, `HARBOUR` envvars and Harbour application command-line + parsing is a different beast, see `src/vm/cmdarg.c` for a NOTE. + + Just some examples for the various accepted forms: + + ``` + //F20 == /F20 == F20 == F:20 == F20X + F20//F:30000000 NOIDLE + F0NOIDLEX10 + SQUAWKNOIDLE + ``` + + `//` should always be used on the command-line. + +--- +Copyright (c) 1999-2009 Viktor Szakats (vszakats.net/harbour) +Licensed under Creative Commons Attribution-ShareAlike 4.0: + +See LICENSE.txt diff --git a/doc/cmdline.txt b/doc/cmdline.txt deleted file mode 100644 index 6ecc4f8073..0000000000 --- a/doc/cmdline.txt +++ /dev/null @@ -1,98 +0,0 @@ -Harbour switch handling spec -============================ - -This spec goes for CLIPPERCMD, HARBOURCMD, Harbour -compiler and #pragma directives in the source code. - -The command line always overrides the envvar. - -Note that some switches are not accepted in envvar, -some others in #pragmas. - -First the parser should start to step through -all the tokens in the string separated by -whitespace. (or just walk through all argv[]) - -1.) If the token begins with "-", it - should be treated as a new style switch. - - One or more switch characters can follow - this. The "-" sign inside the token - will turn off the switch. - - If the switch has an argument all the following - characters are treated as part of the argument. - - The "/" sign has no special meaning here. - - Switch Resulting options - - -wn ( W N ) - -w-n ( !W N ) - -wi/harbour/include/ ( W I=/harbour/include/ ) - -wi/harbour/include/n ( W I=/harbour/include/n ) - -wes0n ( W ES=0 N ) - -wen ( W [invalid switch: e] N ) - -wesn ( W ES=Default(0) N ) - -wses ( W S ES=Default(0) ) - -wess ( W ES=Default(0) S ) - - ( [invalid switch] ) - -w-n-p ( !W !N P ) - -w-n-p- ( !W !N !P ) - - -w- -w -w- ( finally: !W ) - -2.) If the token begins with "/", it - should be treated as a compatibility style switch. - - The parser scans the token for the next "/" sign or EOS - and treats the resulting string as one switch. - - This means that a switch with an argument containing - "/" sign has some limitations. This may be solved by - allowing the usage of quote characters. This is mostly - a problem on systems which use "/" as path separator. - - The "-" sign has no special meaning here, it can't be - used to disable a switch. - - Switch Resulting options - - /w/n ( W N ) - /wo/n ( [invalid switch: wo] N ) - /ihello/world/ ( I=hello [invalid switch: world] [invalid switch: /] ) - /i"hello/world/"/w ( I=hello/world/ W ) - /ihello\world\ ( I=hello\world\ ) - -3.) If the token begins with anything else it should - be skipped. - -The Harbour switches are always case insensitive. - -In the Harbour commandline the two style can be used together: -harbour -wnes2 /gc0/q0 -iC:\hello - -Exceptions: - -- Handling of the /CREDIT undocumented switch - on Harbour command line is unusual, check the current code - for this. - -- The CLIPPER, HARBOUR and Harbour application - command line parsing is a different beast, - see cmdarg.c for a NOTE. - - Just some examples for the various accepted forms: - //F20 == /F20 == F20 == F:20 == F20X - //TMPPATH:C:\hello - F20//TMPPATH:/temp///F:30000000 NOIDLE - F0NOIDLEX10 - SQUAWKNOIDLE - - "//" should always be used on the command line. - - -[ Copyright (c) 1999-2009 Viktor Szakats (vszakats.net/harbour) - Licensed under Creative Commons Attribution-ShareAlike 4.0: - - See LICENSE.txt ] diff --git a/doc/en/hashes.txt b/doc/en/hashes.txt deleted file mode 100644 index dcfd70bad7..0000000000 --- a/doc/en/hashes.txt +++ /dev/null @@ -1,967 +0,0 @@ -/* - * Copyright 2009 April White - * Copyright 2007 Przemyslaw Czerpak - * - * See COPYING.txt for licensing terms. - * - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_Hash() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Returns a hash table - $SYNTAX$ - hb_Hash( [ , ], [ , ], ... ) -> hsTable - $ARGUMENTS$ - entry key; - can be of type: number, date, datetime, string, pointer - - entry value; can be of type: block, string, numeric, date/datetime, logical, nil, pointer, array, hash table - - Equivalent to: - hsTable := { => } - hsTable := { => , => , => } - $RETURNS$ - A hash table built from the initial key/value pairs - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HHasKey() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Determines whether a hash table has an entry with a give key - $SYNTAX$ - hb_HHasKey( , ) -> lExists - $ARGUMENTS$ - a hash table - - a key value to be queried for; - can be of type: number, date, datetime, string, pointer - $RETURNS$ - A logical value indicating whether the key exists within the hash table - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HPos() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Locates the index of a key within a hash table - $SYNTAX$ - hb_HPos( , ) -> nPosition - $ARGUMENTS$ - a hash table - - key for which its position is to be determined; - can be of type: number, date, datetime, string, pointer - $RETURNS$ - A integer number being the index position of the key within the hash table. - - TODO: what is the return value if the key does not exist? zero (0)? RTE? - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HGet() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Returns a hash value - $SYNTAX$ - hb_HGet( , ) -> - $ARGUMENTS$ - a hash table - - key to be retrieve from the hash table; - can be of type: number, date, datetime, string, pointer - $RETURNS$ - Either the value within the hash table for the given key. - - An array access error occurs of the key is not found - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HGetDef() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Returns a hash value, or a default value if the key is not present - $SYNTAX$ - hb_HGetDef( , , [] ) -> - $ARGUMENTS$ - a hash table - - key to be retrieve from the hash table; - can be of type: number, date, datetime, string, pointer - - a default value to be returned if the - hash table does not contain the key - $RETURNS$ - Either the value within the hash table for the given key, - or the default value. - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HSet() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Sets a hash value - $SYNTAX$ - hb_HSet( , , ) -> - $ARGUMENTS$ - a hash table - - the key of the entry to be set; - can be of type: number, date, datetime, string, pointer - - the entry value - $RETURNS$ - The hash table - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HDel() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Removes a key/value pair from a hash table - $SYNTAX$ - hb_HDel( , ) -> - $ARGUMENTS$ - a hash table - - key to be removed from the hash table; - can be of type: number, date, datetime, string, pointer - $RETURNS$ - The hash table - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HKeyAt() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Gets a hash table key at a given position - $SYNTAX$ - hb_HKeyAt( , ) -> - $ARGUMENTS$ - a hash table - - the position of an entry within the hash table that will - be returned - $RETURNS$ - The key at the given position of the hash table; - the type will be one: number, date, datetime, string, pointer - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HValueAt() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Gets/sets a hash value at a given position - $SYNTAX$ - hb_HValueAt( , , [] ) -> - $ARGUMENTS$ - a hash table - - the position of an entry within the hash table that will - be returned - - a new value to be assigned to the hash table at the given - position - $RETURNS$ - The existing value, or the new value if it is given - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HPairAt() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Returns a two-dimensional array of a hash table entry key/value pair - $SYNTAX$ - hb_HPairAt( , ) -> - $ARGUMENTS$ - a hash table - - the position of an entry within the hash table that will - be returned - $RETURNS$ - A two-dimensional array of the key/value pair entry of the hash table - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HDelAt() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Removes an entry from a hash table based on its index position - $SYNTAX$ - hb_HDelAt( , ) -> - $ARGUMENTS$ - a hash table - - the position of an entry within the hash table that will - be deleted - $RETURNS$ - The hash table - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HKeys() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Returns an array of the keys of a hash table - $SYNTAX$ - hb_HKeys( ) -> - $ARGUMENTS$ - a hash table - $RETURNS$ - An array of all the hash table keys - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HValues() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Returns an array of the values of a hash table - $SYNTAX$ - hb_HValues( ) -> - $ARGUMENTS$ - a hash table - $RETURNS$ - An array of all the hash values - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HFill() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Fills a hash table with a value - $SYNTAX$ - hb_HFill( , ) -> - $ARGUMENTS$ - a hash table - - fill value; can be of type: block, string, numeric, date/datetime, logical, nil, pointer, array, hash table - $RETURNS$ - The hash table - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HClone() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Creates a copy of a hash table - $SYNTAX$ - hb_HClone( ) -> - $ARGUMENTS$ - a hash table - $RETURNS$ - A cloned copy of the hash table - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HCopy() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Adds entries from the source hash table to the destination hash table - $SYNTAX$ - hb_HCopy( , , [], [] ) -> - $ARGUMENTS$ - a destination hash table - - a source hash table - - starting index, defaults to 1 if omitted - - counter, defaults to (length) - is omitted - $RETURNS$ - The destination hash table - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HMerge() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Merges a source hash table into a destination hash table - $SYNTAX$ - hb_HMerge( , , | ) -> - $ARGUMENTS$ - a destination hash table - - a source hash table - - a code block that will be evaluated for each entry within the - source hash table; the code block will be passed the entry key, value and - position; if the code block returns a true value, the entry will be added to - the destination hash table - - the position of an entry within the source hash table that will - be appended to the destination hash table - - TODO: the source code passes either a number or HB_HASH_UNION; research this - $RETURNS$ - The destination hash table with the contents of the source hash table merged - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HEval() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Evaluate a code block across the contents of a hash table - $SYNTAX$ - hb_HEval( , , [], [] ) -> - $ARGUMENTS$ - a hash table - - code block to be evaluated - - starting index, defaults to 1 if omitted - - counter, defaults to (length) - is omitted - $RETURNS$ - The hash table - $DESCRIPTION$ - The code block is evaluated for every hash table entry starting at - for items. - - The code block is passed the entry key, value, and numeric position - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HScan() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Scans a hash table - $SYNTAX$ - hb_HScan( , , [], [, [] ) -> nPosition - $ARGUMENTS$ - a hash table - - to be located within the hash table - - starting index, defaults to 1 if omitted - - counter, defaults to (length) - is omitted - - logical valuye indicating whether the comparision - is to be be exact or not - $RETURNS$ - The position of the located value within the hash table, or zero (0) if not found. - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HSort() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Reorganizes the internal list of the hash table to be sorted - $SYNTAX$ - hb_HSort( ) -> - $ARGUMENTS$ - a hash table - $RETURNS$ - The hash table sorted - - TODO: is the original table altered? - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HCaseMatch() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Sets the 'case match' flag for the hash table - $SYNTAX$ - hb_HCaseMatch( , [] ) -> - $ARGUMENTS$ - a hash table - - a logical value indicating to turn on or off - the 'case match' flag of the hash table - $RETURNS$ - The previous value of the 'case match' flag - $DESCRIPTION$ - This function returns the old flag value - $EXAMPLES$ - LOCAL hsTable, lFlag - hsTable := { "one" => 1, "two" => 2 } - // turn 'case match' on for a new hash table, storing ol flag - lFlag := hb_HCaseMatch( hsTable, .T. ) - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HBinary() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Sets the 'binary' flag for the hash table - $SYNTAX$ - hb_HBinary( , [] ) -> - $ARGUMENTS$ - a hash table - - a logical value indicating to turn on or off - the 'binary' flag of the hash table - $RETURNS$ - The previous value of the 'binary' flag - $DESCRIPTION$ - This function is equivalent to hb_HBinary() but it returns - the old flag value rather than the hash table - $EXAMPLES$ - LOCAL hsTable, lFlag - hsTable := { "one" => 1, "two" => 2 } - // turn 'binary' on for a new hash table, storing ol flag - lFlag := hb_HBinary( hsTable, .T. ) - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HAutoAdd() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Sets the 'auto add' flag for the hash table - $SYNTAX$ - hb_HAutoAdd( , [] ) -> - $ARGUMENTS$ - a hash table - - a logical value indicating to turn on or off - the 'auto add' flag of the hash table - $RETURNS$ - The previous value of the 'auto add' flag - $DESCRIPTION$ - This function is equivalent to hb_HAutoAdd() but it returns - the old flag value rather than the hash table - $EXAMPLES$ - LOCAL hsTable, lFlag - hsTable := { "one" => 1, "two" => 2 } - // turn 'auto add' on for a new hash table, storing ol flag - lFlag := hb_HAutoAdd( hsTable, .T. ) - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Procedure - $NAME$ - hb_HAllocate() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Preallocates a hash table - $SYNTAX$ - hb_HAllocate( , ) - $ARGUMENTS$ - a hash table - - number of items to preallocate in the hash table - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - hb_HDefault() - $CATEGORY$ - API - $SUBCATEGORY$ - Hash table - $ONELINER$ - Returns/sets a default value for a hash table. - $SYNTAX$ - hb_HDefault( , ) -> - $ARGUMENTS$ - a hash table - - - $RETURNS$ - The previous default value assigned to the hash table - $DESCRIPTION$ - - $EXAMPLES$ - - $STATUS$ - R - $COMPLIANCE$ - H - $PLATFORMS$ - - $FILES$ - - $SEEALSO$ - TODO: locate and list those methods that use this feature - $END$ - */ diff --git a/doc/en/rdddb.txt b/doc/en/rdddb.txt deleted file mode 100644 index bf2adbe8b1..0000000000 --- a/doc/en/rdddb.txt +++ /dev/null @@ -1,1280 +0,0 @@ -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Function - $NAME$ - dbEval() - $CATEGORY$ - API - $SUBCATEGORY$ - Execute and Execution - $ONELINER$ - Performs a code block operation on the current Database - $SYNTAX$ - dbEval( , - [], [], - [], [], - [] ) --> NIL - $ARGUMENTS$ - Operation that is to be performed - - Code block for the For condition - - Code block for the WHILE condition - - Number of NEXT records to process - - Record number to work on exactly - - Toggle to rewind record pointer - $RETURNS$ - dbEval() always returns NIL - $DESCRIPTION$ - Performs a code block operation on the current Database - $EXAMPLES$ - LOCAL nCount - - USE test - - dbGoto( 4 ) - ? RecNo() - COUNT TO nCount NEXT 10 - ? RecNo(), nCount - COUNT TO nCount - ? RecNo(), nCount - $STATUS$ - S - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - Eval() - $END$ - */ - -/* $DOC$ - $TEMPLATE$ - Function - $NAME$ - Dbf() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Alias name of a work area - $SYNTAX$ - Dbf() --> cWorkArea - $RETURNS$ - Name of alias - $DESCRIPTION$ - This function returns the same alias name of the currently selected - work area. - $EXAMPLES$ - USE test - SELECT 0 - ? iif( Dbf() == "", "No Name", Dbf() ) - ? test->( Dbf() ) - ? Alias( 1 ) - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - Alias() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Function - $NAME$ - dbAppend() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Appends a new record to a database file. - $SYNTAX$ - dbAppend( [] ) --> NIL - $ARGUMENTS$ - Toggle to release record locks - $RETURNS$ - dbAppend() always returns NIL - $DESCRIPTION$ - This function add a new record to the end of the database - in the selected or aliased work area. All fields in that - database will be given empty data values - character fields - will be filled with blank spaces, date fields with hb_SToD(), - numeric fields with 0, logical fields with .F., and memo fields - with NULL bytes. The header of the database is not updated until - the record is flushed from the buffer and the contents are - written to the disk. - - Under a networking environment, dbAppend() performs an additional - operation: It attempts to lock the newly added record. If - the database file is currently locked or if a locking assignment - is made to `LastRec() + 1`, NetErr() will return a logical true (.T.) - immediately after the dbAppend() function. This function does - not unlock the locked records. - - If is passed a logical true (.T.) value, it will - release the record locks, which allows the application to maintain - multiple record locks during an appending operation. The - default for this parameter is a logical false (.F.). - $EXAMPLES$ - LOCAL cName := "Harbour", nAge := 15 - USE test - test->( dbAppend() ) - test->first := cName - test->age := nAge - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - dbUnlock(), dbUnlockAll() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Function - $NAME$ - dbClearFilter() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Clears the current filter condition in a work area - $SYNTAX$ - dbClearFilter() --> NIL - $RETURNS$ - dbClearFilter() always returns NIL - $DESCRIPTION$ - This function clears any active filter conduction - for the current or selected work area. - $EXAMPLES$ - USE test - SET FILTER TO hb_LeftEq( test->first, "An" ) - dbGoTop() - dbEval( {|| QOut( test->first ) } ) - dbClearFilter() - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - dbSetFilter(), dbFilter() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Function - $NAME$ - dbCloseAll() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Close all open files in all work areas. - $SYNTAX$ - dbCloseAll() --> NIL - $RETURNS$ - dbCloseAll() always return NIL - $DESCRIPTION$ - This function close all open databases and all associated - indexes. In addition, it closes all format files and moves - the work area pointer to the first position - $EXAMPLES$ - USE test NEW - dbEdit() - USE test1 NEW - dbEdit() - dbCloseAll() - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - dbUseArea(), dbCloseArea() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Procedure - $NAME$ - dbCloseArea() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Close a database file in a work area. - $SYNTAX$ - dbCloseArea() - $DESCRIPTION$ - This function will close any database open in the selected - or aliased work area. - $EXAMPLES$ - USE test - dbEdit() - test->( dbCloseArea() ) - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - dbUseArea(), dbCloseAll() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Procedure - $NAME$ - dbCommit() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Updates all index and database buffers for a given work area - $SYNTAX$ - dbCommit() - $DESCRIPTION$ - This function updates all of the information for a give, selected, - or active work area. This operation includes all database and index - buffers for that work area only. This function does not update all - open work areas. - $EXAMPLES$ - LOCAL GetList := {} - LOCAL cName := Space( 40 ) - LOCAL nAge := 0 - - USE test EXCLUSIVE NEW - - @ 10, 10 GET cName - @ 11, 10 GET nAge - READ - - IF Updated() - dbAppend() - test->first := cName - test->age := nAge - dbCommit() - ENDIF - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - dbCloseAll(), dbCommitAll(), dbUnlock() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Procedure - $NAME$ - dbCommitAll() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Flushes the memory buffer and performs a hard-disk write - $SYNTAX$ - dbCommit() - $DESCRIPTION$ - This function performs a hard-disk write for all work areas. - Before the disk write is performed, all buffers are flushed. - open work areas. - $EXAMPLES$ - // FIXME - LOCAL GetList := {} - LOCAL cName := Space( 40 ) - LOCAL nId := 0 - - USE test EXCLUSIVE NEW - USE testid NEW INDEX testid - - @ 10, 10 GET cName - @ 11, 10 GET nId - READ - - IF Updated() - dbAppend() - test->first := cName - test->Id := nId - IF ! testid->( dbSeek( nId ) ) - testid->( dbAppend() ) - testid->Id := nId - ENDIF - ENDIF - dbCommitAll() - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - dbCloseAll(), dbCommit(), dbUnlock() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Procedure - $NAME$ - dbCreate() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Creates an empty database from a array. - $SYNTAX$ - dbCreate( , , [], [], [], - [], [], [] ) - $ARGUMENTS$ - Name of database file to be create - - Name of a multidimensional array that contains the - database structure - - Name of the RDD - - 3-way toggle to Open the file in New or Current work area: - - - NIL The file is not opened. - True It is opened in a New area. - False It is opened in the current area. - - - Name of database Alias - $DESCRIPTION$ - This function creates the database file specified as from the - multidimensional array . If no file extension is use with - the .dbf extension is assumed. - The array specified in must follow a few guidelines when being - built prior to a call to dbCreate(): - - - All subscripts values in the second dimension must be set to proper values - - - The fourth subscript value in the second dimension - which contains - the decimal value-must he specified. even 1kw non-numeric fields. - - - The second subscript value in the second dimension-which contains - the field data type-must contain a proper value: C, D, L, M or N - It is possible to use additional letters for clarity (e.g., 'Numeric' - for 'N'): however, the first letter of this array element must - be a proper value. - - The dbCreate() function does not use the decimal field to - calculate the length of a character held longer than 256. Values - up to the maximum length of a character field (which is 65519 bytes) - are stored directly in the database in the length attribute if that - database was created via this function. However, a file containing - fields longer than 256 bytes is not compatible with any interpreter. - - The parameter specifies the name of the Replaceable - Database Driver to use to create the database. If it is not - specified, then the Replaceable Database Driver in the current work - area is used. - - The parameter specifies if the already created database is - to be opened, and where. If NIL, the file is not opened. If True, - it is opened in a New area, and if False it is opened in the current - area (closing any file already occupying that area). - The parameter specifies the alias name for the new opened - database. - $EXAMPLES$ - LOCAL aStruct := { ; - { "CHARACTER", "C", 25, 0 }, ; - { "NUMERIC", "N", 8, 0 }, ; - { "DOUBLE", "N", 8, 2 }, ; - { "DATE", "D", 8, 0 }, ; - { "LOGICAL", "L", 1, 0 }, ; - { "MEMO1", "M", 10, 0 }, ; - { "MEMO2", "M", 10, 0 } } - - REQUEST DBFCDX - - ? dbCreate( "testdbf", aStruct, "DBFCDX", .T., "MYALIAS" ) - $STATUS$ - R - $COMPLIANCE$ - This function is not CA-Cl*pper compliant - $FILES$ - Library is rdd - Header is dbstruct.ch - $SEEALSO$ - AFields()*, dbStruct() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Procedure - $NAME$ - dbDelete() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Mark a record for deletion in a database. - $SYNTAX$ - dbDelete() - $DESCRIPTION$ - This function marks a record for deletion in the selected - or aliased work area. If the DELETED setting is on, the record - will still be visible until the record pointer in that work area - is moved to another record. - - In a networking situation, this function requires that the record - be locked prior to issuing the dbDelete() function. - $EXAMPLES$ - LOCAL nAge := 50 - USE test NEW - INDEX ON field->age TO test - IF dbSeek( nAge ) .AND. RLock() - dbDelete() - ENDIF - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - dbRecall() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Function - $NAME$ - dbFilter() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Return the filter expression in a work area - $SYNTAX$ - dbFilter() --> cFilter - $RETURNS$ - dbFilter() returns the filter expression. - $DESCRIPTION$ - This function return the expression of the `SET FILTER TO` command - for the current or designated work area. If no filter condition - is present, a null string will be returned. - $EXAMPLES$ - USE test INDEX test NEW - SET FILTER TO field->first = "Harbour" - USE testid INDEX testid NEW - SET FILTER TO field->age == 25 - SELECT test - - ? dbFilter() - ? testid->( dbFilter() ) - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - dbRelation(), dbRSelect() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Procedure - $NAME$ - dbGoBottom() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Moves the record pointer to the bottom of the database. - $SYNTAX$ - dbGoBottom() - $DESCRIPTION$ - This function moves the record pointer in the selected or aliased - work area to the end of the file. The position of the record pointer - is affected by the values in the index key or by an active FILTER - condition. Otherwise, if no index is active or if no filter condition - is present, the value of the record pointer will be LastRec(). - $EXAMPLES$ - USE test - dbGoTop() - ? RecNo() - dbGoBottom() - ? RecNo() - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - Bof(), Eof(), dbSkip(), dbSeek(), dbGoTop() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Procedure - $NAME$ - dbGoto() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Position the record pointer to a specific location. - $SYNTAX$ - dbGoto( ) - $ARGUMENTS$ - Record number or unique identity - $DESCRIPTION$ - This function places the record pointer, if working with a .dbf file, - in selected or aliased work area at the record number specified by - . The position is not affected by an active index or - by any environmental SET condition. - - The parameter may be something other than a record - number. In some data formats, for example, the value of - is a unique primary key while in other formats, could - be an array offset if the data set was an array. - - Issuing a `dbGoto( RecNo() )` call in a network environment will refresh - the database and index buffers. This is the same as a `dbSkip( 0 )` call. - $EXAMPLES$ - // The following example uses dbGoto() to iteratively process - // every fourth record: - - dbUseArea( .T., "DBFNTX", "sales", "sales", .T. ) - - // toggle every fourth record - DO WHILE ! Eof() - dbGoto( RecNo() + 4 ) - sales->Group := "Bear" - ENDDO - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - Bof(), Eof(), dbGoTop(), dbGoBottom(), dbSeek(), dbSkip() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Procedure - $NAME$ - dbGoTop() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Moves the record pointer to the top of the database. - $SYNTAX$ - dbGoTop() - $DESCRIPTION$ - This function moves the record pointer in the selected or aliased - work area to the top of the file. The position of the record pointer - is affected by the values in the index key or by an active FILTER - condition. Otherwise, if no index is active or if no filter condition - is present, the value of RecNo() will be 1. - $EXAMPLES$ - USE test - dbGoTop() - ? RecNo() - dbGoBottom() - ? RecNo() - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - Bof(), Eof(), dbSkip(), dbSeek(), dbGoBottom() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Procedure - $NAME$ - dbRecall() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Recalls a record previously marked for deletion. - $SYNTAX$ - dbRecall() - $DESCRIPTION$ - This function unmarks those records marked for deletion and - reactivates them in the aliased or selected work area. If a record - is DELETED and the DELETED setting is on, the record will still be - visible for a dbRecall() provided that the database record pointer - has not been skipped. Once a record marked for deletion with the - DELETE setting ON has been skipped, it no longer can be brought back - with dbRecall(). - $EXAMPLES$ - USE test NEW - dbGoto( 10 ) - dbDelete() - ? Deleted() - dbRecall() - ? Deleted() - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - dbDelete() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Function - $NAME$ - dbRLock() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - This function locks the record based on identity - $SYNTAX$ - dbRLock( [] ) --> lSuccess - $ARGUMENTS$ - Record identifier - $RETURNS$ - dbRLock() returns a logical true (.T.) if lock was successful - $DESCRIPTION$ - This function attempts to lock a record which is identified - by in the active data set. If the lock is successful - the function will return a logical true (.T.) value; otherwise - a logical false (.F.) will be returned. If is not - passed it will be assumed to lock the current active record/data - item. - $EXAMPLES$ - LOCAL nRecNo - USE test NEW - FOR nRecNo := 1 TO LastRec() - IF ! dbRLock() - dbUnlock() - ENDIF - NEXT - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - dbUnlock(), dbUnlockAll(), FLock(), RLock() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Function - $NAME$ - dbRLockList() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - This function return a list of locked records in the database work area - $SYNTAX$ - dbRLockList() --> aRecordLocks - $RETURNS$ - is an array of lock records - $DESCRIPTION$ - This function will return an array of locked records in a given - and active work area. If the return array is an empty array - (meaning no elements in it), then there are no locked records in that - work area. - $EXAMPLES$ - LOCAL nRecNo - USE test NEW - dbGoto( 10 ) - ? RLock() - dbGoto( 100 ) - ? RLock() - FOR EACH nRecNo IN dbRLockList() - ? nRecNo - NEXT - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - RLock(), dbRLock(), dbRUnlock() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Procedure - $NAME$ - dbRUnlock() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Unlocks a record based on its identifier - $SYNTAX$ - dbRUnlock( [] ) - $ARGUMENTS$ - Record identifier, typically a record number - $DESCRIPTION$ - This function will attempt to unlock the record specified as - , which in a .dbf format is the record number. If not - specified, them the current active record/data item will be - unlocked - $EXAMPLES$ - USE test NEW - dbGoto( 10 ) - IF RLock() - ? test->age - dbRUnlock() - ENDIF - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - RLock(), dbRLock(), dbRLockList() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Function - $NAME$ - dbSeek() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Searches for a value based on an active index. - $SYNTAX$ - dbSeek( , [], [] ) --> lFound - $ARGUMENTS$ - Any expression - - Toggle SOFTSEEK condition - - is an optional logical value that set the current - record position to the last record if successful - $RETURNS$ - dbSeek() returns logical true (.T.) if found, otherwise false - $DESCRIPTION$ - This function searches for the first record in a database file whose - index key matches . If the item is found, the function will - return a logical true (.T.), the value of Found() will be a logical - true (.T.), and the value of Eof() will be a logical false (.F.). If - no item is found. then the function will return a logical false, the - value of Found() will be a logical false (.F.), and the value of - Eof() will be a logical true (.T.). - - This function always "rewinds" the database pointer and starts the - search from the top of the file. - - If the SOFTSEEK flag is on or if is set to a logical true - (.T.) the value of Found() will be a logical false and Eof() will be - false if there is an item in the index key with a greater value than - the key expression ; at this point the record pointer will - position itself on that record. However, if there is no greater key - in the index, Eof() will return a logical true (.T.) value. If - is not passed, the function will look to the internal - status of SOFTSEEK before performing the operation. The default of - is a logical false (.F.) - $EXAMPLES$ - PROCEDURE Main() - - LOCAL nAge - - USE test NEW - INDEX ON field->age TO test - dbGoto( 10 ) - nAge := test->age - dbGoTop() - IF dbSeek( nAge ) - ? test->first - ENDIF - - RETURN - - STATIC PROCEDURE EmployeeLookup() - - LOCAL cName - - ACCEPT "Employee name: " TO cName - IF Employee->( dbSeek( cName ) ) - Employee->( ViewRecord() ) - ELSE - ? "Not found" - ENDIF - - RETURN - - STATIC PROCEDURE ViewRecord() - - ? field->name - - RETURN - $STATUS$ - S - $COMPLIANCE$ - dbSeek() is Compatible with CA-Cl*pper 5.3 - $FILES$ - Library is rdd - $SEEALSO$ - dbGoBottom(), dbGoTop(), dbSkip(), Eof(), Bof(), Found() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Procedure - $NAME$ - dbSelectArea() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Change to another work area - $SYNTAX$ - dbSelectArea( ) --> NIL - $ARGUMENTS$ - Alias or work area - $DESCRIPTION$ - This function moves the Harbour internal primary focus to the work - area designated by . If is numeric, then it will - select the numeric work area; if is character, then it will - select the work area with the alias name. - - `dbSelectArea( 0 )` will select the next available and unused work area. - Up to 65534 work areas are supported. Each work area has its own alias - and record pointer, as well as its own Found(), dbFilter(), - dbRSelect() and dbRelation() function values. - $EXAMPLES$ - LOCAL nAge - USE test NEW - COPY TO test1 - USE test1 NEW - INDEX ON field->age TO test1 - dbSelectArea( "test" ) - dbGoto( 100 ) - ? nAge := field->age - dbSelectArea( "test1" ) - IF dbSeek( nAge ) - ? field->first - ENDIF - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - dbUseArea(), Select() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Function - $NAME$ - dbSetDriver() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Establishes the RDD name for the selected work area - $SYNTAX$ - dbSetDriver( [] ) --> cCurrentDriver - $ARGUMENTS$ - Optional database driver name - $RETURNS$ - dbSetDriver() returns the name of active driver - $DESCRIPTION$ - This function returns the name of the current database driver for the - selected work area. The default will be "DBFNTX". If specified, - contains the name of the database driver that should be - used to activate and manage the work area. If the specified driver is - not available, this function will have no effect. - $EXAMPLES$ - ? dbSetDriver( "DBFNSX" ) - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - dbUseArea() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Procedure - $NAME$ - dbSkip() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Moves the record pointer in the selected work area. - $SYNTAX$ - dbSkip( [] ) - $ARGUMENTS$ - Numbers of records to move record pointer. - $DESCRIPTION$ - This function moves the record pointer in the selected or - aliased work area. The default value for will be 1. - A `dbSkip( 0 )` will flush and refresh the internal database buffer and - make any changes made to the record visible without moving the record - pointer in either direction. - $EXAMPLES$ - USE test NEW - dbGoTop() - DO WHILE ! Eof() - ? test->age, test->first - dbSkip() - ENDDO - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - Bof(), dbGoBottom(), dbGoTop(), dbSeek(), Eof() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Procedure - $NAME$ - dbSetFilter() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Establishes a filter condition for a work area. - $SYNTAX$ - dbSetFilter( , [] ) - $ARGUMENTS$ - Code block expression for filtered evaluation. - - Optional character expression of code block. - $DESCRIPTION$ - This function masks a database so that only those records that meet - the condition prescribed by the expression in the code block - and literally expressed as are visible. - If is not passed to this function, then the dbFilter() - function will return an empty string showing no filter in that work - area which in fact, would be not correct. - $EXAMPLES$ - USE test NEW - dbSetFilter( {|| test->age > 30 }, "test->age > 30" ) - dbGoTop() - ? RecNo() - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - dbFilter(), dbClearFilter() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Function - $NAME$ - dbStruct() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Creates a multidimensional array of a database structure. - $SYNTAX$ - dbStruct() --> aStruct - $RETURNS$ - dbStruct() returns an array pointer to database structure - $DESCRIPTION$ - This function returns a multidimensional array. This array has array - pointers to other arrays, each of which contains the characteristic - of a field in the active work area. The length of this array is based - in the number of fields in that particular work area. In other words, - `Len( dbStruct() )` is equal to the value obtained from FCount(). - Each subscript position - $EXAMPLES$ - #include "dbstruct.ch" - LOCAL field - USE test NEW - FOR EACH field IN dbStruct() - ? field[ DBS_NAME ] - NEXT - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - Header is dbstruct.ch - $SEEALSO$ - AFields()* - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Procedure - $NAME$ - dbUnlock() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Unlock a record or release a file lock - $SYNTAX$ - dbUnlock() - $DESCRIPTION$ - This function releases the file or record lock in the currently - selected or aliased work area. It will not unlock an associated lock - in a related databases. - $EXAMPLES$ - LOCAL nAge := 30 - USE test NEW - INDEX ON field->age TO test - IF test->( dbSeek( nAge ) ) - IF test->( RLock() ) - dbDelete() - ELSE - dbUnlock() - ENDIF - ENDIF - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - dbUnlockAll(), FLock(), RLock() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Procedure - $NAME$ - dbUnlockAll() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Unlocks all records and releases all file locks in all work areas. - $SYNTAX$ - dbUnlockAll() - $DESCRIPTION$ - This function will remove all file and record locks in all work area. - $EXAMPLES$ - LOCAL nAge := 50 - USE test NEW - INDEX ON field->age TO test - IF test->( dbSeek( nAge ) ) - IF test->( RLock() ) - dbDelete() - ELSE - dbUnlock() - ENDIF - ELSE - dbUnlockAll() - ENDIF - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - dbUnlock(), FLock(), RLock() - $END$ - */ - -/* $DOC$ - $AUTHOR$ - Copyright 1999 Luiz Rafael Culik - $TEMPLATE$ - Procedure - $NAME$ - dbUseArea() - $CATEGORY$ - API - $SUBCATEGORY$ - Database - $ONELINER$ - Opens a work area and uses a database file. - $SYNTAX$ - dbUseArea( [], [], , [], - [], [] ) - $ARGUMENTS$ - A optional logical expression for the new work area - - Database driver name - - File Name - - Alias name - - Shared/exclusive status flag - - Read-write status flag. - $DESCRIPTION$ - This function opens an existing database named in the current - work area. If is set to a logical true (.T.) value, then - the database will be opened in the next available and unused - work area. The default value of is a logical false (.F.). - If used, is the name of the database driver associated with - the file that is opened. The default for this will be the - value of dbSetDriver(). - - If used, contains the alias name for that work area, If not - specified, the root name of the database specified in will be - used. - - If is set to a logical true (.T.) value, the database that - is specified in will be opened by the user *exclusively*. Thus - locking it from all other nodes or users on the network. If - is set to a logical false (.F.) value, then the database will be in - SHARED mode. If is not passed, then the function will turn - to the internal setting of SET EXCLUSIVE to determine a setting. - - If is specified, the file will be set to *read only* mode. - If it is not specified, the file will he opened in normal read-write - mode. - $EXAMPLES$ - ? dbUseArea( .T.,, "test" ) - $STATUS$ - R - $COMPLIANCE$ - C - $FILES$ - Library is rdd - $SEEALSO$ - dbCloseArea(), dbSetDriver(), Select(), Set() - $END$ - */ diff --git a/doc/oldnews.txt b/doc/oldnews.txt index 6b11d2c225..29ba7158f1 100644 --- a/doc/oldnews.txt +++ b/doc/oldnews.txt @@ -854,8 +854,8 @@ Version 1.0.0 rc1 (2008-06-04) tag: 1.0.0rc1 General ============================= -- The SourceForge repository was moved from CVS to SVN -- added docs/howtorep.txt +- The source repository was moved from CVS to SVN +- added docs/howtovcs.txt - changed pack_src.sh to extract list of files from local SVN copy using SVN commands - improved CYGWIN compatibility @@ -870,15 +870,15 @@ General who want to change the grammar files needs bison - removed all HB_COMPAT_XHB definitions from source code - now all covered extensions should be supported by hbcompat.ch and/or xhb library -- removed 3-rd party header files from SVN, f.e.: ace.h +- removed 3rd party header files from SVN, f.e.: ace.h Portability ----------- - eliminated errno access for platforms which do not have it. - added support for PocketPC WINCE with MSVC, POCC, CeGCC and MinGWCE. - added support for cross WinCE builds -- extended hb* scripts for cross builds: hbw* - Win32, hbce* - WinCE -- added support for creating RPMs with Harbour cross build for Win32 and +- extended hb* scripts for cross builds: hbw* - Windows, hbce* - WinCE +- added support for creating RPMs with Harbour cross build for Windows and WinCE. - added support for MS-Windows UNICDE builds. - added support for shared libraries (.sl) in HPUX builds diff --git a/extras/dbu/readme.txt b/extras/dbu/README.md similarity index 89% rename from extras/dbu/readme.txt rename to extras/dbu/README.md index fc1487c788..1baef0b63f 100644 --- a/extras/dbu/readme.txt +++ b/extras/dbu/README.md @@ -8,10 +8,10 @@ 3.) Apply supplied patch to the source using GNU Patch: For CA-Cl*pper 5.2e sources: - patch -lNi dbu52.dif + patch -lNi dbu52.patch For CA-Cl*pper 5.3b sources: - patch -lNi dbu53.dif + patch -lNi dbu53.patch 4.) Build it: hbmk2 dbu.hbp diff --git a/extras/dbu/dbu52.dif b/extras/dbu/dbu52.patch similarity index 100% rename from extras/dbu/dbu52.dif rename to extras/dbu/dbu52.patch diff --git a/extras/dbu/dbu53.dif b/extras/dbu/dbu53.patch similarity index 100% rename from extras/dbu/dbu53.dif rename to extras/dbu/dbu53.patch diff --git a/extras/ps32/ps32.dif b/extras/ps32/ps32.patch similarity index 100% rename from extras/ps32/ps32.dif rename to extras/ps32/ps32.patch diff --git a/extras/ps32/readme.txt b/extras/ps32/readme.txt index 3c484bd7d7..e450b9a137 100644 --- a/extras/ps32/readme.txt +++ b/extras/ps32/readme.txt @@ -10,7 +10,7 @@ PSTest.prg 3.) Apply supplied patch to the source using GNU Patch: - patch -lNi ps32.dif + patch -lNi ps32.patch 4.) Build it: hbmk2 ps32.hbp diff --git a/extras/rl/readme.txt b/extras/rl/README.md similarity index 94% rename from extras/rl/readme.txt rename to extras/rl/README.md index f543410e03..5003143e83 100644 --- a/extras/rl/readme.txt +++ b/extras/rl/README.md @@ -6,7 +6,7 @@ hbformat -lFCaseLow=yes -nEol=0 -lIndent=no -lCase=no -lSpaces=no "*.prg" 3.) Apply supplied patch to the source using GNU Patch: - patch -lNi rl.dif + patch -lNi rl.patch 4.) Build it: hbmk2 rl.hbp diff --git a/extras/rl/rl.dif b/extras/rl/rl.patch similarity index 100% rename from extras/rl/rl.dif rename to extras/rl/rl.patch diff --git a/extras/superlib/readme.txt b/extras/superlib/readme.txt index fe17c3ff30..d41ad60fd2 100644 --- a/extras/superlib/readme.txt +++ b/extras/superlib/readme.txt @@ -13,7 +13,7 @@ hbformat -lFCaseLow=yes -nEol=0 -lIndent=no -lCase=no -lSpaces=no "*.prg" 4.) Apply supplied patch to the source using GNU Patch: - patch -lNi superlib.dif + patch -lNi superlib.patch 5.) Build it: hbmk2 superlib.hbp diff --git a/extras/superlib/superlib.dif b/extras/superlib/superlib.patch similarity index 100% rename from extras/superlib/superlib.dif rename to extras/superlib/superlib.patch diff --git a/extras/template/readme.txt b/extras/template/README.md similarity index 100% rename from extras/template/readme.txt rename to extras/template/README.md diff --git a/src/3rd/hbdossrl/README b/src/3rd/hbdossrl/README.txt similarity index 100% rename from src/3rd/hbdossrl/README rename to src/3rd/hbdossrl/README.txt diff --git a/src/3rd/jpeg/Makefile b/src/3rd/jpeg/Makefile index c5c83ade75..d08e38f078 100644 --- a/src/3rd/jpeg/Makefile +++ b/src/3rd/jpeg/Makefile @@ -102,7 +102,7 @@ endif # ORIGIN http://www.ijg.org/ # VER 9a # URL http://www.ijg.org/files/jpegsrc.v9a.tar.gz -# DIFF jpeg.dif +# DIFF jpeg.diff # # MAP README # MAP cderror.h diff --git a/src/3rd/jpeg/jpeg.dif b/src/3rd/jpeg/jpeg.diff similarity index 100% rename from src/3rd/jpeg/jpeg.dif rename to src/3rd/jpeg/jpeg.diff diff --git a/src/3rd/pcre/Makefile b/src/3rd/pcre/Makefile index 42edf97712..e97b9d83e7 100644 --- a/src/3rd/pcre/Makefile +++ b/src/3rd/pcre/Makefile @@ -80,7 +80,7 @@ endif # ORIGIN http://www.pcre.org/ # VER 8.34 # URL ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.34.tar.gz -# DIFF pcre.dif +# DIFF pcre.diff # # MAP LICENCE # MAP config.h.generic config.h diff --git a/src/3rd/pcre/pcre.dif b/src/3rd/pcre/pcre.diff similarity index 100% rename from src/3rd/pcre/pcre.dif rename to src/3rd/pcre/pcre.diff diff --git a/src/3rd/png/Makefile b/src/3rd/png/Makefile index 6cc3e3ecf6..30b988961d 100644 --- a/src/3rd/png/Makefile +++ b/src/3rd/png/Makefile @@ -66,7 +66,7 @@ endif # ORIGIN http://libpng.org/pub/png/libpng.html # VER 1.6.8 # URL http://downloads.sourceforge.net/libpng/libpng-1.6.8.tar.gz -# DIFF png.dif +# DIFF png.diff # # MAP LICENSE # MAP png.c diff --git a/src/3rd/png/png.dif b/src/3rd/png/png.diff similarity index 100% rename from src/3rd/png/png.dif rename to src/3rd/png/png.diff diff --git a/src/3rd/tiff/Makefile b/src/3rd/tiff/Makefile index 7033dd17ed..f35100206e 100644 --- a/src/3rd/tiff/Makefile +++ b/src/3rd/tiff/Makefile @@ -91,7 +91,7 @@ endif # ORIGIN http://www.remotesensing.org/libtiff/ # VER 4.0.3 # URL http://download.osgeo.org/libtiff/tiff-4.0.3.zip -# DIFF tiff.dif +# DIFF tiff.diff # # MAP COPYRIGHT LICENSE # MAP libtiff/tif_aux.c auxtif.c diff --git a/src/3rd/tiff/tiff.dif b/src/3rd/tiff/tiff.diff similarity index 100% rename from src/3rd/tiff/tiff.dif rename to src/3rd/tiff/tiff.diff diff --git a/src/3rd/zlib/Makefile b/src/3rd/zlib/Makefile index 50dbc061b7..cff3166770 100644 --- a/src/3rd/zlib/Makefile +++ b/src/3rd/zlib/Makefile @@ -57,7 +57,7 @@ endif # ORIGIN http://zlib.net/ # VER 1.2.11 # URL https://github.com/madler/zlib/archive/v1.2.11.zip -# DIFF zlib.dif +# DIFF zlib.diff # # MAP README # MAP adler32.c diff --git a/src/3rd/zlib/zlib.dif b/src/3rd/zlib/zlib.diff similarity index 100% rename from src/3rd/zlib/zlib.dif rename to src/3rd/zlib/zlib.diff diff --git a/tests/tflock.prg b/tests/flock.prg similarity index 100% rename from tests/tflock.prg rename to tests/flock.prg diff --git a/tests/hbpptest/_pp_test.prg b/tests/hbpp/_pp_test.prg similarity index 100% rename from tests/hbpptest/_pp_test.prg rename to tests/hbpp/_pp_test.prg diff --git a/tests/hbpptest/compare.hb b/tests/hbpp/compare.hb similarity index 100% rename from tests/hbpptest/compare.hb rename to tests/hbpp/compare.hb diff --git a/tests/hbpptest/hbpptest.hbp b/tests/hbpp/hbpptest.hbp similarity index 100% rename from tests/hbpptest/hbpptest.hbp rename to tests/hbpp/hbpptest.hbp diff --git a/tests/hbpptest/hbpptest.prg b/tests/hbpp/hbpptest.prg similarity index 100% rename from tests/hbpptest/hbpptest.prg rename to tests/hbpp/hbpptest.prg