diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 23efaf4a9b..86ce97ee93 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,16 @@ past entries belonging to author(s): Viktor Szakats. */ +2009-10-12 22:28 UTC+0200 Francesco Saverio Giudice (info/at/fsgiudice.com) + * harbour/src/rtl/hbini.prg + * Splitted hb_IniRdLow() internal function into two functions: + hb_IniFileLow( cFileSpec ) -> cData + hb_IniStringLow( hIni, cData, lKeyCaseSens, cSplitters, lAutoMain ) -> hIni + + Added new hb_IniString() funtion + hb_IniString( cData, lKeyCaseSens, cSplitters, lAutoMain ) -> hIni + that reads directly from a string. + So hb_IniRead() read from a file, hb_IniString() read from memory string. + 2009-10-12 18:42 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * contrib/hbtip/sendmail.prg ! Fixed wrongly referring to 7-bit encoding. @@ -31,8 +41,8 @@ 2009-10-12 18:24 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * contrib/hbtip/encqp.prg + Implemented quoted-printable encoder/decoder. - Not yet used. Not extremely well tested, just something - to start with. Please review. Probably should be done + Not yet used. Not extremely well tested, just something + to start with. Please review. Probably should be done in C for speed, but anyway. * contrib/hbtip/sendmail.prg @@ -118,7 +128,7 @@ * contrib/hbssl/hbssl.h * contrib/hbssl/sslctx.c + Added partial support for OpenSSL 1.0.0beta3. - Partial because I'm getting a few errors which I cannot resolve, + Partial because I'm getting a few errors which I cannot resolve, help/input is welcome from interested parties: --- cl.exe -nologo -I. -I../../../../../include -Gs -TP -W4 -wd4127 -Ot2b1 -EHs-c- -MT -IC:\devl\openssl-1.0.0-beta3\include -DOPENSSL_OPT_WINDLL -DUNICODE -Fossl.obj -c ../../../ssl.c @@ -183,9 +193,9 @@ * ChangeLog * harbour.spec * mpkg_tgz.sh - * Renamed 'source' dir to 'src' to move closer to other FOSS - projects. It's also easier to type, plus it has the side - effect that some cmdlines will be shorter in the + * Renamed 'source' dir to 'src' to move closer to other FOSS + projects. It's also easier to type, plus it has the side + effect that some cmdlines will be shorter in the build process. 2009-10-09 10:13 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) @@ -248,11 +258,11 @@ 2009-10-07 14:27 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * package/winuni/RELNOTES - + Note about upx update. (still no win64 support, but there are + + Note about upx update. (still no win64 support, but there are some other goodies for OS X and Linux) * utils/hbmk2/hbmk2.prg - + Enabled upx support on darwin. (You need to install it via + + Enabled upx support on darwin. (You need to install it via macports) * INSTALL @@ -356,10 +366,10 @@ * examples/hbdoc/examples/core_es/dbstrux.txt * examples/hbdoc2/hbdoc2.prg * HB_C52_STRICT -> HB_CLP_STRICT - We use it cover strict Clipper compatibility in general, not + We use it cover strict Clipper compatibility in general, not just for C5.2. * HB_C52_UNDOC -> HB_CLP_UNDOC - We use it cover Clipper undocumented stuff in general, not + We use it cover Clipper undocumented stuff in general, not just C5.2 version specific ones. 2009-10-07 11:23 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) @@ -372,10 +382,10 @@ 2009-10-07 10:47 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * utils/hbmk2/hbmk2.prg * config/global.mk - * Adapting to mingw64 distro change, where they've fixed + * Adapting to mingw64 distro change, where they've fixed toolchain prefix of 32-bit builds. (to i686-w64-mingw32- from x64_64-w64-mingw32-) - + 2009-10-07 09:58 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * source/rtl/gtwvt/gtwvt.h * source/rtl/gtwvt/gtwvt.c @@ -390,34 +400,34 @@ 2009-10-07 08:09 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * config/global.mk * config/detect.mk - + Added support for optional user.mk file (requires GNU Make - syntax) in Harbour source tree root to store user-specific - build settings. In general all documented settings from - INSTALL can be used here, but most probably you'll only - want to store portable settings (like HB_CONTRIBLIBS). - Usually you'll want to use + + Added support for optional user.mk file (requires GNU Make + syntax) in Harbour source tree root to store user-specific + build settings. In general all documented settings from + INSTALL can be used here, but most probably you'll only + want to store portable settings (like HB_CONTRIBLIBS). + Usually you'll want to use 'export HB_BUILD_* := ' syntax to specify them. - user.mk should not rely on any internal variables set - by our GNU Make system (like HB_PLATFORM), as they are - set later in the process thus not available at this + user.mk should not rely on any internal variables set + by our GNU Make system (like HB_PLATFORM), as they are + set later in the process thus not available at this point. - Please note that this is yet an experience and details - or even presence of the feature may change in the future, + Please note that this is yet an experience and details + or even presence of the feature may change in the future, we should see how useful it turns out to be. - * Changed conf.mk support, so that the file got renamed + * Changed conf.mk support, so that the file got renamed to config.mk and moved to source tree root (next to user.mk). 2009-10-07 07:36 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * contrib/hbct/ctwin.c - + Added HB_C52_STRICT guard around artificial windows + + Added HB_C52_STRICT guard around artificial windows size limits. Please review me. - HB_C52_STRICT macros should be renamed to HB_CLP_STRICT - to reflect usage of recent years, where it's also used + HB_C52_STRICT macros should be renamed to HB_CLP_STRICT + to reflect usage of recent years, where it's also used to cover 5.3 strictness f.e.. * source/rtl/gtwvt/gtwvt.c ! Minor formatting. - ! Fixed to use WVT_MAX_COLS instead of WVT_MAX_ROWS in one + ! Fixed to use WVT_MAX_COLS instead of WVT_MAX_ROWS in one place. * source/codepage/Makefile @@ -522,9 +532,9 @@ * config/global.mk * config/wce/msvcarm.mk * config/win/msvc.mk - + Replaced MSVC specific compiler version setting with generic + + Replaced MSVC specific compiler version setting with generic compiler version setting. - HB_VISUALC_VER_PRE80 and HB_VISUALC_VER_PRE70 settings are + HB_VISUALC_VER_PRE80 and HB_VISUALC_VER_PRE70 settings are deleted and HB_COMPILER_VER is activated. ; INCOMPATIBLE. diff --git a/harbour/src/rtl/hbini.prg b/harbour/src/rtl/hbini.prg index d4d361aa2c..200b1109fb 100644 --- a/harbour/src/rtl/hbini.prg +++ b/harbour/src/rtl/hbini.prg @@ -100,12 +100,20 @@ FUNCTION HB_IniNew( lAutoMain ) FUNCTION hb_IniRead( cFileSpec, lKeyCaseSens, cSplitters, lAutoMain ) + LOCAL cData + + cData := hb_IniFileLow( cFileSpec ) + + RETURN hb_IniString( cData, lKeyCaseSens, cSplitters, lAutoMain ) + +FUNCTION hb_IniString( cData, lKeyCaseSens, cSplitters, lAutoMain ) LOCAL hIni := hb_Hash() /* Default case sensitiveness for keys */ DEFAULT lKeyCaseSens TO .T. - DEFAULT cSplitters TO "=" - DEFAULT lAutoMain TO .T. + DEFAULT cSplitters TO "=" + DEFAULT lAutoMain TO .T. + DEFAULT cData TO "" hb_HCaseMatch( hIni, lKeyCaseSens ) @@ -113,14 +121,12 @@ FUNCTION hb_IniRead( cFileSpec, lKeyCaseSens, cSplitters, lAutoMain ) hIni[ "MAIN" ] := hb_Hash() ENDIF - RETURN hb_IniRdLow( hIni, cFileSpec, lKeyCaseSens, cSplitters, lAutoMain ) + RETURN hb_IniStringLow( hIni, cData, lKeyCaseSens, cSplitters, lAutoMain ) -STATIC FUNCTION hb_IniRdLow( hIni, cFileSpec, lKeyCaseSens, cSplitters, lAutoMain ) +STATIC FUNCTION hb_IniFileLow( cFileSpec ) LOCAL cFile, nLen - LOCAL aKeyVal, hCurrentSection - LOCAL hFile, nLineEnd - LOCAL cData, cLine - LOCAL reComment, reInclude, reSection, reSplitters + LOCAL hFile + LOCAL cData LOCAL aFiles := hb_aTokens( cFileSpec, hb_OSPathListSeparator() ) IF Empty( aFiles ) @@ -140,11 +146,6 @@ STATIC FUNCTION hb_IniRdLow( hIni, cFileSpec, lKeyCaseSens, cSplitters, lAutoMai RETURN NIL ENDIF - reComment := hb_RegexComp( s_cHalfLineComment + "|^[ \t]*" + s_cLineComment ) - reInclude := hb_RegexComp( "include (.*)" ) - reSection := hb_RegexComp( "[[](.*)[]]" ) - reSplitters := hb_RegexComp( cSplitters ) - /* we'll read the whole file, then we'll break it in lines. */ cData := Space( FSeek( hFile, 0, FS_END ) ) FSeek( hFile, 0, FS_SET ) @@ -152,6 +153,20 @@ STATIC FUNCTION hb_IniRdLow( hIni, cFileSpec, lKeyCaseSens, cSplitters, lAutoMai cData := Left( cData, nLen ) FClose( hFile ) + RETURN cData + +STATIC FUNCTION hb_IniStringLow( hIni, cData, lKeyCaseSens, cSplitters, lAutoMain ) + LOCAL nLen + LOCAL aKeyVal, hCurrentSection + LOCAL nLineEnd + LOCAL cLine + LOCAL reComment, reInclude, reSection, reSplitters + + reComment := hb_RegexComp( s_cHalfLineComment + "|^[ \t]*" + s_cLineComment ) + reInclude := hb_RegexComp( "include (.*)" ) + reSection := hb_RegexComp( "[[](.*)[]]" ) + reSplitters := hb_RegexComp( cSplitters ) + /* Always begin with the MAIN section */ IF lAutoMain hCurrentSection := hIni[ "MAIN" ] @@ -217,7 +232,7 @@ STATIC FUNCTION hb_IniRdLow( hIni, cFileSpec, lKeyCaseSens, cSplitters, lAutoMai IF Len( aKeyVal[ 2 ] ) == 0 LOOP ENDIF - hb_IniRdLow( hIni, aKeyVal[ 2 ], lKeyCaseSens, cSplitters, lAutoMain ) + hb_IniStringLow( hIni, hb_IniFileLow( aKeyVal[ 2 ] ), lKeyCaseSens, cSplitters, lAutoMain ) cLine := "" LOOP ENDIF