2010-10-27 05:21 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)

* src/rtl/gete.c
    % Optimization to GETENV()/HB_GETENV(). Patch by Tamas Tevesz.
    + Added more details to comment on why it's needed to strip '='
      part from envvar name.

  * contrib/hbqt/tests/demoqt.prg
  * contrib/hbqt/tests/dialogqt.prg
  * contrib/hbqt/tests/testqaim.prg
    ! Fixed external files' references to use executable's
      directory as a base, instead of current dir.

  * contrib/hbhpdf/harupdf.c
    ! HPDF_Page_CreateStampAnnot(): Fixed wrongly passed 3rd parameter.

  * contrib/hbssl/evpmd.c
    ! EVP_SIGNFINAL(): Fixed wrong returned buffer size.

  * config/postinst.hbs
    * Implemented GetEnv() caching, based on patch sent by
      Tamas Tevesz and further optimized.
This commit is contained in:
Viktor Szakats
2010-10-27 03:23:49 +00:00
parent 5afc7f78ad
commit 872abe845b
8 changed files with 135 additions and 116 deletions

View File

@@ -16,6 +16,28 @@
The license applies to all entries newer than 2009-04-28.
*/
2010-10-27 05:21 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* src/rtl/gete.c
% Optimization to GETENV()/HB_GETENV(). Patch by Tamas Tevesz.
+ Added more details to comment on why it's needed to strip '='
part from envvar name.
* contrib/hbqt/tests/demoqt.prg
* contrib/hbqt/tests/dialogqt.prg
* contrib/hbqt/tests/testqaim.prg
! Fixed external files' references to use executable's
directory as a base, instead of current dir.
* contrib/hbhpdf/harupdf.c
! HPDF_Page_CreateStampAnnot(): Fixed wrongly passed 3rd parameter.
* contrib/hbssl/evpmd.c
! EVP_SIGNFINAL(): Fixed wrong returned buffer size.
* config/postinst.hbs
* Implemented GetEnv() caching, based on patch sent by
Tamas Tevesz and further optimized.
2010-10-25 17:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/rtl/hbjson.c
* modified the if() condition to pacify some compiler warnings

View File

@@ -55,9 +55,9 @@ PROCEDURE Main( ... )
LOCAL cMT_Versioned
LOCAL cMT_Versionless
IF Empty( GetEnv( "HB_PLATFORM" ) ) .OR. ;
Empty( GetEnv( "HB_COMPILER" ) ) .OR. ;
Empty( GetEnv( "HB_HOST_BIN_DIR" ) )
IF Empty( GetEnvC( "HB_PLATFORM" ) ) .OR. ;
Empty( GetEnvC( "HB_COMPILER" ) ) .OR. ;
Empty( GetEnvC( "HB_HOST_BIN_DIR" ) )
OutStd( "! Error: This program has to be called from the GNU Make process." + hb_eol() )
ErrorLevel( 1 )
@@ -69,10 +69,10 @@ PROCEDURE Main( ... )
IF AScan( hb_AParams(), {| tmp | Lower( tmp ) == "install" } ) > 0
/* Installing some misc files */
tmp := GetEnv( "HB_INSTALL_DOC" )
tmp := GetEnvC( "HB_INSTALL_DOC" )
IF ! tmp == "no"
IF GetEnv( "HB_PLATFORM" ) $ "win|wce|os2|dos"
tmp := GetEnv( "HB_INSTALL_PREFIX" )
IF GetEnvC( "HB_PLATFORM" ) $ "win|wce|os2|dos"
tmp := GetEnvC( "HB_INSTALL_PREFIX" )
ENDIF
IF ! Empty( tmp )
@@ -80,7 +80,7 @@ PROCEDURE Main( ... )
IF DirBuild( tmp )
FOR EACH aFile IN Directory( "Change*" )
mk_hb_FCopy( aFile[ F_NAME ], tmp + hb_ps() + iif( GetEnv( "HB_PLATFORM" ) == "dos", "CHANGES", "" ) )
mk_hb_FCopy( aFile[ F_NAME ], tmp + hb_ps() + iif( GetEnvC( "HB_PLATFORM" ) == "dos", "CHANGES", "" ) )
NEXT
mk_hb_FCopy( "COPYING", tmp + hb_ps() )
@@ -93,37 +93,37 @@ PROCEDURE Main( ... )
ENDIF
ENDIF
IF ! Empty( GetEnv( "HB_INSTALL_BIN" ) ) .AND. ;
! GetEnv( "HB_BUILD_PARTS" ) == "lib"
IF ! Empty( GetEnvC( "HB_INSTALL_BIN" ) ) .AND. ;
! GetEnvC( "HB_BUILD_PARTS" ) == "lib"
OutStd( "! Copying Harbour script (.hbs) files..." + hb_eol() )
/* public Harbour scripts */
FOR EACH tmp IN { "bin/hbmk2l2d.hbs" ,;
"bin/hbxpatch.hbs" }
mk_hb_FCopy( tmp, GetEnv( "HB_INSTALL_BIN" ) + hb_ps() )
mk_hb_FCopy( tmp, GetEnvC( "HB_INSTALL_BIN" ) + hb_ps() )
NEXT
ENDIF
IF ! Empty( GetEnv( "HB_INSTALL_ETC" ) )
IF ! Empty( GetEnvC( "HB_INSTALL_ETC" ) )
OutStd( "! Copying *nix config files..." + hb_eol() )
IF DirBuild( GetEnv( "HB_INSTALL_ETC" ) )
mk_hb_FCopy( "src/rtl/gtcrs/hb-charmap.def", GetEnv( "HB_INSTALL_ETC" ) + hb_ps(), .T. )
IF DirBuild( GetEnvC( "HB_INSTALL_ETC" ) )
mk_hb_FCopy( "src/rtl/gtcrs/hb-charmap.def", GetEnvC( "HB_INSTALL_ETC" ) + hb_ps(), .T. )
ELSE
OutStd( hb_StrFormat( "! Error: Cannot create directory '%1$s'", GetEnv( "HB_INSTALL_ETC" ) ) + hb_eol() )
OutStd( hb_StrFormat( "! Error: Cannot create directory '%1$s'", GetEnvC( "HB_INSTALL_ETC" ) ) + hb_eol() )
ENDIF
IF ! Empty( GetEnv( "HB_INSTALL_DYN" ) )
IF ! Empty( GetEnvC( "HB_INSTALL_DYN" ) )
OutStd( "! Creating *nix ld config file..." + hb_eol() )
tmp := GetEnv( "HB_INSTALL_ETC" ) + hb_ps() + ".." + hb_ps() + "ld.so.conf.d"
tmp := GetEnvC( "HB_INSTALL_ETC" ) + hb_ps() + ".." + hb_ps() + "ld.so.conf.d"
IF DirBuild( tmp )
tmp1 := GetEnv( "HB_INSTALL_DYN" )
IF Left( tmp1, Len( GetEnv( "HB_INSTALL_PKG_ROOT" ) ) ) == GetEnv( "HB_INSTALL_PKG_ROOT" )
tmp1 := SubStr( tmp1, Len( GetEnv( "HB_INSTALL_PKG_ROOT" ) ) + 1 )
tmp1 := GetEnvC( "HB_INSTALL_DYN" )
IF Left( tmp1, Len( GetEnvC( "HB_INSTALL_PKG_ROOT" ) ) ) == GetEnvC( "HB_INSTALL_PKG_ROOT" )
tmp1 := SubStr( tmp1, Len( GetEnvC( "HB_INSTALL_PKG_ROOT" ) ) + 1 )
ENDIF
hb_MemoWrit( tmp + hb_ps() + "harbour.conf", tmp1 + hb_eol() )
ELSE
@@ -132,48 +132,48 @@ PROCEDURE Main( ... )
ENDIF
ENDIF
IF ! Empty( GetEnv( "HB_INSTALL_MAN" ) )
IF ! Empty( GetEnvC( "HB_INSTALL_MAN" ) )
OutStd( "! Copying *nix man files..." + hb_eol() )
IF DirBuild( GetEnv( "HB_INSTALL_MAN" ) + hb_ps() + "man1" )
IF DirBuild( GetEnvC( "HB_INSTALL_MAN" ) + hb_ps() + "man1" )
FOR EACH tmp IN { "src/main/harbour.1" ,;
"src/pp/hbpp.1" ,;
"utils/hbmk2/hbmk2.1" ,;
"utils/hbrun/hbrun.1" ,;
"utils/hbtest/hbtest.1" }
mk_hb_FCopy( tmp, GetEnv( "HB_INSTALL_MAN" ) + hb_ps() + "man1" + hb_ps(), .T. )
mk_hb_FCopy( tmp, GetEnvC( "HB_INSTALL_MAN" ) + hb_ps() + "man1" + hb_ps(), .T. )
NEXT
ELSE
OutStd( hb_StrFormat( "! Error: Cannot create directory '%1$s'", GetEnv( "HB_INSTALL_MAN" ) ) + hb_eol() )
OutStd( hb_StrFormat( "! Error: Cannot create directory '%1$s'", GetEnvC( "HB_INSTALL_MAN" ) ) + hb_eol() )
ENDIF
ENDIF
IF !( GetEnv( "HB_PLATFORM" ) $ "win|wce|os2|dos" ) .AND. ;
! Empty( GetEnv( "HB_INSTALL_DYN" ) )
IF !( GetEnvC( "HB_PLATFORM" ) $ "win|wce|os2|dos" ) .AND. ;
! Empty( GetEnvC( "HB_INSTALL_DYN" ) )
OutStd( "! Creating dynamic lib symlinks..." + hb_eol() )
cST_Versioned := GetEnv( "HB_DYNLIB_PREF" ) + GetEnv( "HB_DYNLIB_ST" ) + GetEnv( "HB_DYNLIB_EXT" )
cST_Versionless := GetEnv( "HB_DYNLIB_PREF" ) + GetEnv( "HB_DYNLIB_BASE_ST" ) + GetEnv( "HB_DYNLIB_EXT" )
cMT_Versioned := GetEnv( "HB_DYNLIB_PREF" ) + GetEnv( "HB_DYNLIB_MT" ) + GetEnv( "HB_DYNLIB_EXT" )
cMT_Versionless := GetEnv( "HB_DYNLIB_PREF" ) + GetEnv( "HB_DYNLIB_BASE_MT" ) + GetEnv( "HB_DYNLIB_EXT" )
cST_Versioned := GetEnvC( "HB_DYNLIB_PREF" ) + GetEnvC( "HB_DYNLIB_ST" ) + GetEnvC( "HB_DYNLIB_EXT" )
cST_Versionless := GetEnvC( "HB_DYNLIB_PREF" ) + GetEnvC( "HB_DYNLIB_BASE_ST" ) + GetEnvC( "HB_DYNLIB_EXT" )
cMT_Versioned := GetEnvC( "HB_DYNLIB_PREF" ) + GetEnvC( "HB_DYNLIB_MT" ) + GetEnvC( "HB_DYNLIB_EXT" )
cMT_Versionless := GetEnvC( "HB_DYNLIB_PREF" ) + GetEnvC( "HB_DYNLIB_BASE_MT" ) + GetEnvC( "HB_DYNLIB_EXT" )
mk_hb_FLinkSym( cST_Versioned, PathSepToSelf( GetEnv( "HB_INSTALL_DYN" ) ) + hb_ps() + cST_Versionless )
mk_hb_FLinkSym( cMT_Versioned, PathSepToSelf( GetEnv( "HB_INSTALL_DYN" ) ) + hb_ps() + cMT_Versionless )
mk_hb_FLinkSym( cST_Versioned, PathSepToSelf( GetEnvC( "HB_INSTALL_DYN" ) ) + hb_ps() + cST_Versionless )
mk_hb_FLinkSym( cMT_Versioned, PathSepToSelf( GetEnvC( "HB_INSTALL_DYN" ) ) + hb_ps() + cMT_Versionless )
DO CASE
CASE EndsWith( GetEnv( "HB_INSTALL_DYN" ), "/usr/lib/harbour" ) .OR. ;
EndsWith( GetEnv( "HB_INSTALL_DYN" ), "/usr/lib64/harbour" ) .OR. ;
EndsWith( GetEnv( "HB_INSTALL_DYN" ), "/usr/local/lib/harbour" ) .OR. ;
EndsWith( GetEnv( "HB_INSTALL_DYN" ), "/usr/local/lib64/harbour" )
CASE EndsWith( GetEnvC( "HB_INSTALL_DYN" ), "/usr/lib/harbour" ) .OR. ;
EndsWith( GetEnvC( "HB_INSTALL_DYN" ), "/usr/lib64/harbour" ) .OR. ;
EndsWith( GetEnvC( "HB_INSTALL_DYN" ), "/usr/local/lib/harbour" ) .OR. ;
EndsWith( GetEnvC( "HB_INSTALL_DYN" ), "/usr/local/lib64/harbour" )
mk_hb_FLinkSym( "harbour" + hb_ps() + cST_Versioned, PathSepToSelf( GetEnv( "HB_INSTALL_DYN" ) ) + hb_ps() + ".." + hb_ps() + cST_Versionless )
mk_hb_FLinkSym( "harbour" + hb_ps() + cST_Versioned, PathSepToSelf( GetEnv( "HB_INSTALL_DYN" ) ) + hb_ps() + ".." + hb_ps() + cST_Versioned )
mk_hb_FLinkSym( "harbour" + hb_ps() + cMT_Versioned, PathSepToSelf( GetEnv( "HB_INSTALL_DYN" ) ) + hb_ps() + ".." + hb_ps() + cMT_Versionless )
mk_hb_FLinkSym( "harbour" + hb_ps() + cMT_Versioned, PathSepToSelf( GetEnv( "HB_INSTALL_DYN" ) ) + hb_ps() + ".." + hb_ps() + cMT_Versioned )
mk_hb_FLinkSym( "harbour" + hb_ps() + cST_Versioned, PathSepToSelf( GetEnvC( "HB_INSTALL_DYN" ) ) + hb_ps() + ".." + hb_ps() + cST_Versionless )
mk_hb_FLinkSym( "harbour" + hb_ps() + cST_Versioned, PathSepToSelf( GetEnvC( "HB_INSTALL_DYN" ) ) + hb_ps() + ".." + hb_ps() + cST_Versioned )
mk_hb_FLinkSym( "harbour" + hb_ps() + cMT_Versioned, PathSepToSelf( GetEnvC( "HB_INSTALL_DYN" ) ) + hb_ps() + ".." + hb_ps() + cMT_Versionless )
mk_hb_FLinkSym( "harbour" + hb_ps() + cMT_Versioned, PathSepToSelf( GetEnvC( "HB_INSTALL_DYN" ) ) + hb_ps() + ".." + hb_ps() + cMT_Versioned )
CASE GetEnv( "HB_INSTALL_DYN" ) == "/usr/local/harbour/lib"
CASE GetEnvC( "HB_INSTALL_DYN" ) == "/usr/local/harbour/lib"
/* TOFIX: Rewrite this in .prg */
#if 0
ld="/usr/lib"
@@ -189,8 +189,8 @@ PROCEDURE Main( ... )
/* Creating language files */
IF ! Empty( GetEnv( "HB_INSTALL_BIN" ) ) .AND. ;
! GetEnv( "HB_BUILD_PARTS" ) == "lib"
IF ! Empty( GetEnvC( "HB_INSTALL_BIN" ) ) .AND. ;
! GetEnvC( "HB_BUILD_PARTS" ) == "lib"
OutStd( "! Making core translation (.hbl) files..." + hb_eol() )
@@ -198,7 +198,7 @@ PROCEDURE Main( ... )
IF "D" $ tmp[ F_ATTR ] .AND. !( tmp[ F_NAME ] == "." ) .AND. !( tmp[ F_NAME ] == ".." )
FOR EACH aFile IN Directory( "utils" + hb_ps() + tmp[ F_NAME ] + hb_ps() + "*.po" )
mk_hbl( "utils" + hb_ps() + tmp[ F_NAME ] + hb_ps() + aFile[ F_NAME ],;
PathSepToSelf( GetEnv( "HB_INSTALL_BIN" ) ) + hb_ps() + FNameExtSet( aFile[ F_NAME ], ".hbl" ) )
PathSepToSelf( GetEnvC( "HB_INSTALL_BIN" ) ) + hb_ps() + FNameExtSet( aFile[ F_NAME ], ".hbl" ) )
NEXT
ENDIF
NEXT
@@ -206,7 +206,7 @@ PROCEDURE Main( ... )
/* Creating docs for core */
IF ! Empty( tmp := GetEnv( "HB_INSTALL_DOC" ) ) .AND. ! tmp == "no"
IF ! Empty( tmp := GetEnvC( "HB_INSTALL_DOC" ) ) .AND. ! tmp == "no"
OutStd( "! Compiling core documentation (.hbd)..." + hb_eol() )
@@ -215,12 +215,12 @@ PROCEDURE Main( ... )
/* Creating install packages */
IF GetEnv( "HB_BUILD_PKG" ) == "yes" .AND. ;
! Empty( GetEnv( "HB_TOP" ) )
IF GetEnvC( "HB_BUILD_PKG" ) == "yes" .AND. ;
! Empty( GetEnvC( "HB_TOP" ) )
IF GetEnv( "HB_PLATFORM" ) $ "win|wce|os2|dos"
IF GetEnvC( "HB_PLATFORM" ) $ "win|wce|os2|dos"
tmp := GetEnv( "HB_TOP" ) + hb_ps() + GetEnv( "HB_PKGNAME" ) + ".zip"
tmp := GetEnvC( "HB_TOP" ) + hb_ps() + GetEnvC( "HB_PKGNAME" ) + ".zip"
OutStd( "! Making Harbour .zip install package: '" + tmp + "'" + hb_eol() )
@@ -233,23 +233,23 @@ PROCEDURE Main( ... )
first to avoid mixing in an existing .zip file. [vszakats] */
cOldDir := hb_ps() + CurDir()
DirChange( GetEnv( "HB_INSTALL_PKG_ROOT" ) )
DirChange( GetEnvC( "HB_INSTALL_PKG_ROOT" ) )
mk_hb_processRun( PathSepToSelf( GetEnv( "HB_DIR_ZIP" ) ) + "zip" +;
mk_hb_processRun( PathSepToSelf( GetEnvC( "HB_DIR_ZIP" ) ) + "zip" +;
" -q -9 -X -r -o" +;
" " + FNameEscape( tmp ) +;
" . -i " + FNameEscape( GetEnv( "HB_PKGNAME" ) + hb_ps() + "*" ) +;
" . -i " + FNameEscape( GetEnvC( "HB_PKGNAME" ) + hb_ps() + "*" ) +;
" -x *.tds -x *.exp" )
DirChange( cOldDir )
IF GetEnv( "HB_PLATFORM" ) $ "win|wce"
IF GetEnvC( "HB_PLATFORM" ) $ "win|wce"
tmp := GetEnv( "HB_TOP" ) + hb_ps() + GetEnv( "HB_PKGNAME" ) + ".exe"
tmp := GetEnvC( "HB_TOP" ) + hb_ps() + GetEnvC( "HB_PKGNAME" ) + ".exe"
OutStd( "! Making Harbour .exe install package: '" + tmp + "'" + hb_eol() )
mk_hb_processRun( PathSepToSelf( GetEnv( "HB_DIR_NSIS" ) ) + "makensis.exe" +;
mk_hb_processRun( PathSepToSelf( GetEnvC( "HB_DIR_NSIS" ) ) + "makensis.exe" +;
" -V2" +;
" " + FNameEscape( StrTran( "package/mpkg_win.nsi", "/", hb_ps() ) ) )
ENDIF
@@ -267,23 +267,23 @@ PROCEDURE Main( ... )
IF ! Empty( cBin_Tar )
cTar_Name := GetEnv( "HB_PKGNAME" )
cTar_Name := GetEnvC( "HB_PKGNAME" )
IF ! Empty( tmp := unix_name() )
cTar_Name += "-" + tmp
ENDIF
cTar_NameExt := cTar_Name + iif( GetEnv( "HB_PLATFORM" ) == "dos", ".tgz", ".bin.tar.gz" )
cTar_Path := GetEnv( "HB_TOP" ) + hb_ps() + cTar_NameExt
cTar_NameExt := cTar_Name + iif( GetEnvC( "HB_PLATFORM" ) == "dos", ".tgz", ".bin.tar.gz" )
cTar_Path := GetEnvC( "HB_TOP" ) + hb_ps() + cTar_NameExt
OutStd( "! Making Harbour tar install package: '" + cTar_Path + "'" + hb_eol() )
FErase( cTar_Path )
cOwner := "root"
cGroup := iif( GetEnv( "HB_PLATFORM" ) == "darwin" .OR. ;
GetEnv( "HB_PLATFORM" ) == "bsd", "wheel", "root" )
cGroup := iif( GetEnvC( "HB_PLATFORM" ) == "darwin" .OR. ;
GetEnvC( "HB_PLATFORM" ) == "bsd", "wheel", "root" )
cOldDir := hb_ps() + CurDir()
DirChange( GetEnv( "HB_INSTALL_PKG_ROOT" ) )
DirChange( GetEnvC( "HB_INSTALL_PKG_ROOT" ) )
/* TODO: Add support for non-GNU non-BSD tar (which gets the data from stdio) */
@@ -295,9 +295,9 @@ PROCEDURE Main( ... )
DirChange( cOldDir )
IF !( GetEnv( "HB_PLATFORM" ) == "dos" )
IF !( GetEnvC( "HB_PLATFORM" ) == "dos" )
tmp := GetEnv( "HB_TOP" ) + hb_ps() + cTar_Name + ".inst.sh"
tmp := GetEnvC( "HB_TOP" ) + hb_ps() + cTar_Name + ".inst.sh"
OutStd( "! Making Harbour tar installer package: '" + tmp + "'" + hb_eol() )
@@ -317,7 +317,7 @@ PROCEDURE Main( ... )
cSH_Script += 'if [ "\${ASK}" != "y" ] && [ "\${ASK}" != "Y" ]; then' + Chr( 10 )
cSH_Script += ' exit 1' + Chr( 10 )
cSH_Script += 'fi' + Chr( 10 )
cSH_Script += '(tail -c ' + hb_ntos( hb_FSize( cTar_Path ) ) + ' "\$0" | gzip -cd | (cd /;tar xvpf -)) ' + iif( GetEnv( "HB_PLATFORM" ) == "linux", "&& ldconfig", "" ) + Chr( 10 )
cSH_Script += '(tail -c ' + hb_ntos( hb_FSize( cTar_Path ) ) + ' "\$0" | gzip -cd | (cd /;tar xvpf -)) ' + iif( GetEnvC( "HB_PLATFORM" ) == "linux", "&& ldconfig", "" ) + Chr( 10 )
cSH_Script += 'exit \$?' + Chr( 10 )
cSH_Script += 'HB_INST_EOF' + Chr( 10 )
@@ -334,7 +334,7 @@ PROCEDURE Main( ... )
/* Executing user postinst configuration script */
IF ! Empty( tmp := GetEnv( "HB_INSTALL_SCRIPT" ) )
IF ! Empty( tmp := GetEnvC( "HB_INSTALL_SCRIPT" ) )
mk_hb_processRun( tmp )
ENDIF
@@ -564,8 +564,8 @@ STATIC FUNCTION unix_name()
LOCAL tmp
DO CASE
CASE GetEnv( "HB_PLATFORM" ) == "dos" ; RETURN "djgpp"
CASE GetEnv( "HB_PLATFORM" ) == "win" ; RETURN GetEnv( "HB_COMPILER" )
CASE GetEnvC( "HB_PLATFORM" ) == "dos" ; RETURN "djgpp"
CASE GetEnvC( "HB_PLATFORM" ) == "win" ; RETURN GetEnvC( "HB_COMPILER" )
CASE ! Empty( tmp := query_rpm( "mandriva-release-One", "mdv" ) ) ; RETURN tmp
CASE ! Empty( tmp := query_rpm( "mandriva-release" , "mdv" ) ) ; RETURN tmp
CASE ! Empty( tmp := query_rpm( "redhat-release" , "rh" ) ) ; RETURN tmp
@@ -582,11 +582,11 @@ STATIC FUNCTION unix_name()
STATIC FUNCTION mk_extern_core()
LOCAL aExtern
IF GetEnv( "HB_REBUILD_EXTERN" ) == "yes" .AND. ;
! Empty( GetEnv( "HB_DYNLIB_ST" ) )
IF GetEnvC( "HB_REBUILD_EXTERN" ) == "yes" .AND. ;
! Empty( GetEnvC( "HB_DYNLIB_ST" ) )
/* TOFIX: Use list of libs instead of dynamic lib */
IF ( aExtern := __hb_extern_get_list( PathSepToSelf( GetEnv( "HB_DYNLIB_DIR" ) ) + hb_ps() + GetEnv( "HB_DYNLIB_PREF" ) + GetEnv( "HB_DYNLIB_ST" ) + GetEnv( "HB_DYNLIB_EXT" ) ) ) != NIL
IF ( aExtern := __hb_extern_get_list( PathSepToSelf( GetEnvC( "HB_DYNLIB_DIR" ) ) + hb_ps() + GetEnvC( "HB_DYNLIB_PREF" ) + GetEnvC( "HB_DYNLIB_ST" ) + GetEnvC( "HB_DYNLIB_EXT" ) ) ) != NIL
OutStd( "! Generating core extern headers..." + hb_eol() )
@@ -602,4 +602,13 @@ STATIC FUNCTION mk_extern_core()
RETURN .F.
STATIC FUNCTION GetEnvC( cEnvVar )
STATIC s_hEnvCache := { => }
IF cEnvVar $ s_hEnvCache
RETURN s_hEnvCache[ cEnvVar ]
ENDIF
RETURN s_hEnvCache[ cEnvVar ] := GetEnv( cEnvVar )
#include "hbextern.hbs"

View File

@@ -2084,7 +2084,7 @@ HB_FUNC( HPDF_Page_CreateStampAnnot )
rc.right = ( HPDF_REAL ) hb_parvnd( 2, 3 );
rc.bottom = ( HPDF_REAL ) hb_parvnd( 2, 4 );
hb_retptr( HPDF_Page_CreateStampAnnot( ( HPDF_Page ) hb_parptr( 1 ), rc, ( HPDF_StampAnnotName ) hb_parc( 3 ), hb_parc( 4 ), ( HPDF_Encoder ) hb_parptr( 5 ) ) );
hb_retptr( HPDF_Page_CreateStampAnnot( ( HPDF_Page ) hb_parptr( 1 ), rc, ( HPDF_StampAnnotName ) hb_parni( 3 ), hb_parc( 4 ), ( HPDF_Encoder ) hb_parptr( 5 ) ) );
#else
hb_retptr( NULL );
#endif

View File

@@ -236,16 +236,16 @@ STATIC FUNCTION Build_MenuBar( oWnd )
oActNew := QAction( oMenu1 )
oActNew:setText( "&New" )
oActNew:setIcon( "new.png" )
oActNew:setIcon( hb_dirBase() + "new.png" )
oActNew:connect( "triggered(bool)", {|w,l| FileDialog( "New" , w, l ) } )
oMenu1:addAction( oActNew )
oActOpen := oMenu1:addAction( "open.png", "&Open" )
oActOpen := oMenu1:addAction( hb_dirBase() + "open.png", "&Open" )
oActOpen:connect( QT_EVE_TRIGGERED_B, {|w,l| FileDialog( "Open" , w, l ) } )
oMenu1:addSeparator()
oActSave := oMenu1:addAction( "save.png", "&Save" )
oActSave := oMenu1:addAction( hb_dirBase() + "save.png", "&Save" )
oActSave:connect( QT_EVE_TRIGGERED_B, {|w,l| FileDialog( "Save" , w, l ) } )
oMenu1:addSeparator()
@@ -303,7 +303,7 @@ STATIC FUNCTION Build_ToolBar( oWnd )
/* Create an action */
oActNew := QAction( oWnd )
oActNew:setText( "&New" )
oActNew:setIcon( "new.png" )
oActNew:setIcon( hb_dirBase() + "new.png" )
oActNew:setToolTip( "A New File" )
oActNew:connect( QT_EVE_TRIGGERED_B, {|w,l| FileDialog( "New" , w, l ) } )
@@ -313,7 +313,7 @@ STATIC FUNCTION Build_ToolBar( oWnd )
/* Create another action */
oActOpen := QAction( oWnd )
oActOpen:setText( "&Open" )
oActOpen:setIcon( "open.png" )
oActOpen:setIcon( hb_dirBase() + "open.png" )
oActOpen:setToolTip( "Select a file to be opened!" )
oActOpen:connect( QT_EVE_TRIGGERED_B, {|w,l| FileDialog( "Open" , w, l ) } )
/* Attach Action with Toolbar */
@@ -324,7 +324,7 @@ STATIC FUNCTION Build_ToolBar( oWnd )
/* Create another action */
oActSave := QAction( oWnd )
oActSave:setText( "&Save" )
oActSave:setIcon( "save.png" )
oActSave:setIcon( hb_dirBase() + "save.png" )
oActSave:setToolTip( "Save this file!" )
oActSave:connect( oActSave, QT_EVE_TRIGGERED_B, {|w,l| FileDialog( "Save" , w, l ) } )
/* Attach Action with Toolbar */
@@ -611,7 +611,7 @@ STATIC FUNCTION Dialogs( cType )
ENDCASE
oDlg := NIL
HB_GCALL( .T.)
HB_GCALL( .T. )
RETURN nil
@@ -630,16 +630,16 @@ FUNCTION ShowInSystemTray( oWnd )
oMenuSys := QMenu( oWnd )
oMenuSys:setTitle( "&File" )
oActShow := oMenuSys:addAction( "new.png" , "&Show" )
oActShow := oMenuSys:addAction( hb_dirBase() + "new.png" , "&Show" )
oActShow:connect( QT_EVE_TRIGGERED_B, {|| oWnd:show() } )
oMenuSys:addSeparator()
oActHide := oMenuSys:addAction( "new.png" , "&Show" )
oActHide := oMenuSys:addAction( hb_dirBase() + "new.png" , "&Show" )
oActHide:connect( QT_EVE_TRIGGERED_B, {|| oWnd:hide() } )
oSys := QSystemTrayIcon( oWnd )
oSys:setIcon( 'new.png' )
oSys:setIcon( hb_dirBase() + "new.png" )
oSys:setContextMenu( oMenuSys )
oSys:showMessage( "Harbour-QT", "This is Harbour-QT System Tray" )
oSys:show()

View File

@@ -149,10 +149,10 @@ STATIC FUNCTION Build_MenuBar( oWnd )
oMenu1 := QMenu()
oMenu1:setTitle( "&File" )
__HBQT_SLOTS_CONNECT( s_slots, oMenu1:addAction_1( "new.png" , "&New" ), QT_EVE_TRIGGERED_B, {|w,l| FileDialog( "New" , w, l ) } )
__HBQT_SLOTS_CONNECT( s_slots, oMenu1:addAction_1( "open.png", "&Open" ), QT_EVE_TRIGGERED_B, {|w,l| FileDialog( "Open", w, l ) } )
__HBQT_SLOTS_CONNECT( s_slots, oMenu1:addAction_1( hb_dirBase() + "new.png" , "&New" ), QT_EVE_TRIGGERED_B, {|w,l| FileDialog( "New" , w, l ) } )
__HBQT_SLOTS_CONNECT( s_slots, oMenu1:addAction_1( hb_dirBase() + "open.png", "&Open" ), QT_EVE_TRIGGERED_B, {|w,l| FileDialog( "Open", w, l ) } )
oMenu1:addSeparator()
__HBQT_SLOTS_CONNECT( s_slots, oMenu1:addAction_1( "save.png", "&Save" ), QT_EVE_TRIGGERED_B, {|w,l| FileDialog( "Save", w, l ) } )
__HBQT_SLOTS_CONNECT( s_slots, oMenu1:addAction_1( hb_dirBase() + "save.png", "&Save" ), QT_EVE_TRIGGERED_B, {|w,l| FileDialog( "Save", w, l ) } )
oMenu1:addSeparator()
__HBQT_SLOTS_CONNECT( s_slots, oMenu1:addAction( "E&xit" ), QT_EVE_TRIGGERED_B, {|w,l| w := w, l := l, MsgInfo( "Exit ?" ) } )
oMenuBar:addMenu( oMenu1 )
@@ -186,7 +186,7 @@ STATIC FUNCTION Build_ToolBar( oWnd )
/* Create an action */
oActNew := QAction( oWnd )
oActNew:setText( "&New" )
oActNew:setIcon( "new.png" )
oActNew:setIcon( hb_dirBase() + "new.png" )
oActNew:setToolTip( "A New File" )
/* Attach codeblock to be triggered */
__HBQT_SLOTS_CONNECT( s_slots, oActNew, QT_EVE_TRIGGERED_B, {|w,l| FileDialog( "New" , w, l ) } )
@@ -196,7 +196,7 @@ STATIC FUNCTION Build_ToolBar( oWnd )
/* Create another action */
oActOpen := QAction( oWnd )
oActOpen:setText( "&Open" )
oActOpen:setIcon( "open.png" )
oActOpen:setIcon( hb_dirBase() + "open.png" )
oActOpen:setToolTip( "Select a file to be opened!" )
/* Attach codeblock to be triggered */
__HBQT_SLOTS_CONNECT( s_slots, oActOpen, QT_EVE_TRIGGERED_B, {|w,l| FileDialog( "Open" , w, l ) } )
@@ -208,7 +208,7 @@ STATIC FUNCTION Build_ToolBar( oWnd )
/* Create another action */
oActSave := QAction( oWnd )
oActSave:setText( "&Save" )
oActSave:setIcon( "save.png" )
oActSave:setIcon( hb_dirBase() + "save.png" )
oActSave:setToolTip( "Save this file!" )
/* Attach codeblock to be triggered */
__HBQT_SLOTS_CONNECT( s_slots, oActSave, QT_EVE_TRIGGERED_B, {|w,l| FileDialog( "Save" , w, l ) } )
@@ -551,7 +551,7 @@ STATIC FUNCTION Dialogs( cType )
ENDCASE
oDlg := NIL
HB_GCALL( .T.)
HB_GCALL( .T. )
RETURN nil
@@ -573,12 +573,12 @@ FUNCTION ShowInSystemTray( oWnd )
oMenu := QMenu( oWnd )
oMenu:setTitle( "&File" )
__HBQT_SLOTS_CONNECT( s_slots, oMenu:addAction_1( "new.png" , "&Show" ), QT_EVE_TRIGGERED_B, {|| oWnd:show() } )
__HBQT_SLOTS_CONNECT( s_slots, oMenu:addAction_1( hb_dirBase() + "new.png" , "&Show" ), QT_EVE_TRIGGERED_B, {|| oWnd:show() } )
oMenu:addSeparator()
__HBQT_SLOTS_CONNECT( s_slots, oMenu:addAction_1( "save.png", "&Hide" ), QT_EVE_TRIGGERED_B, {|| oWnd:hide() } )
__HBQT_SLOTS_CONNECT( s_slots, oMenu:addAction_1( hb_dirBase() + "save.png", "&Hide" ), QT_EVE_TRIGGERED_B, {|| oWnd:hide() } )
oSys := QSystemTrayIcon( oWnd )
oSys:setIcon( 'new.png' )
oSys:setIcon( hb_dirBase() + "new.png" )
oSys:setContextMenu( oMenu )
oSys:showMessage( "Harbour-QT", "This is Harbour-QT System Tray" )
oSys:show()

View File

@@ -48,7 +48,7 @@ PROCEDURE Main()
oAlphaColor:setAlpha( 128 )
oBackBrush := QBrush( QColor( 255, 255, 100 ), Qt_BDiagPattern ) // Yellow Diagonal lines
oSize := QSize( 80, 30 ) // Default header sizes
oPixmap := QPixMap( "harbour-icon.png" ) // Image
oPixmap := QPixMap( hb_dirBase() + "harbour-icon.png" ) // Image
oIcon := QIcon( oPixMap ) // Icon (reusing the image)
oFont := QFont() // Bold Italic font
oFont:setBold( .T. )

View File

@@ -472,7 +472,7 @@ HB_FUNC( EVP_SIGNFINAL )
if( ctx )
{
unsigned char * buffer = ( unsigned char * ) hb_xgrab( EVP_MAX_MD_SIZE + 1 );
unsigned char * buffer = ( unsigned char * ) hb_xgrab( EVP_PKEY_size( hb_EVP_PKEY_par( 3 ) ) + 1 );
unsigned int size = 0;
hb_retni( EVP_SignFinal( ctx, buffer, &size, hb_EVP_PKEY_par( 3 ) ) );

View File

@@ -71,19 +71,13 @@ HB_FUNC( GETENV )
if( pName && hb_pcount() == 1 )
{
char * pszName = hb_itemGetC( pName );
HB_SIZE nName = strlen( pszName );
HB_SIZE nPos;
char * ptr;
/* strip the '=' or else it will clear the variable! */
for( nPos = 0; nPos < nName; nPos++ )
{
if( pszName[ nPos ] == '=' )
{
pszName[ nPos ] = '\0';
break;
}
}
/* strip the '=' or else some C RTLs (f.e. Borland C++
and watcom) will clear the variable! */
ptr = strchr( pszName, '=' );
if( ptr )
*ptr = '\0';
if( pszName[ 0 ] != '\0' )
{
@@ -140,19 +134,13 @@ HB_FUNC( HB_GETENV )
if( pName )
{
char * pszName = hb_itemGetC( pName );
HB_SIZE nName = strlen( pszName );
HB_SIZE nPos;
char * ptr;
/* strip the '=' or else it will clear the variable! */
for( nPos = 0; nPos < nName; nPos++ )
{
if( pszName[ nPos ] == '=' )
{
pszName[ nPos ] = '\0';
break;
}
}
/* strip the '=' or else some C RTLs (f.e. Borland C++
and watcom) will clear the variable! */
ptr = strchr( pszName, '=' );
if( ptr )
*ptr = '\0';
if( pszName[ 0 ] != '\0' )
{