This commit is contained in:
Viktor Szakats
2013-03-21 01:22:55 +01:00
11 changed files with 200 additions and 113 deletions

View File

@@ -10,6 +10,56 @@
* Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment
*/
2013-03-20 16:22 UTC+0100 Viktor Szakats (harbour syenar.net)
* utils/hbmk2/hbmk2.prg
! fixed missed sysloc detection causing RTE in hbrun mode
when running scripts using #request to .hbc files with
libpath references in some cases
2013-03-20 12:34 UTC+0100 Viktor Szakats (harbour syenar.net)
* README.txt
+ added new ways of following commits, including e-mail.
Section moved to unstable source section.
2013-03-20 12:12 UTC+0100 Viktor Szakats (harbour syenar.net)
* doc/en/input.txt
+ use hb_keyChar(), some other corrections
2013-03-20 00:48 UTC+0100 Viktor Szakats (harbour syenar.net)
* config/postinst.hb
* utils/hbmk2/hbmk2.prg
% string forming optimizations
* doc/en/tlabel.txt
* doc/en/treport.txt
* made filename usage clear
* README.txt
+ added new OpenSSL documentation wiki
2013-03-19 14:18 UTC+0100 Viktor Szakats (harbour syenar.net)
* README.txt
+ added links where commits can be followed
2013-03-19 02:42 UTC+0100 Viktor Szakats (harbour syenar.net)
* doc/howtorep.txt
* minor casing
* src/vm/dlmalloc.c
* src/vm/hvm.c
! fixed mingw -Wstrict-prototypes warnings
2013-03-18 17:25 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/hbtip/httpcli.prg
+ Added: method delete() to post DELETE verb required for
RESTful implementation.
2013-03-19 00:13 UTC+0100 Viktor Szakats (harbour syenar.net)
* utils/hbmk2/hbmk2.prg
! silly regression in 2013-02-17 12:43 UTC+0100 causing
-icon= option to stop working.
Thanks to Pritpal for reporting.
2013-03-18 23:46 UTC+0100 vszakats (harbour syenar.net)
* README.txt
+ documented Git 1.7 requirement

View File

@@ -1302,6 +1302,14 @@ TABLE OF CONTENT
http://sourceforge.net/projects/harbour-project/files/binaries-windows/nightly/harbour-nightly-win.exe/download
http://sourceforge.net/projects/harbour-project/files/binaries-windows/nightly/harbour-nightly-win.7z/download
4.) Follow commits using any of these facilities
Web: https://github.com/harbour/core/commits/master
RSS: https://github.com/harbour/core/commits/master.atom
Twitter: https://twitter.com/harbourdev
E-mail: https://groups.google.com/forum/?fromgroups=#!forum/harbour-commits-git
Mac app: https://itunes.apple.com/us/app/committed/id560767719
Mac tool: https://github.com/marcocampana/git-notifier
10. TROUBLESHOOTING
===================
@@ -1639,6 +1647,7 @@ TABLE OF CONTENT
HB_WITH_OPENSSL - OpenSSL [multiplatform, free, open-source]
http://www.openssl.org/
http://www.openssl.org/related/binaries.html
http://wiki.opensslfoundation.com/
HB_WITH_PCRE - Perl Compatible Regular Expressions [multiplatform, free, open-source]
http://www.pcre.org/
HB_WITH_PGSQL - PostgreSQL [multiplatform, free, open-source]

View File

@@ -288,23 +288,24 @@ PROCEDURE Main( ... )
/* In the generated script always use tar because we can't be sure
if cBin_Tar exists in the installation environment */
cSH_Script := '#!/bin/sh' + Chr( 10 )
cSH_Script += 'if [ "\$1" = "--extract" ]; then' + Chr( 10 )
cSH_Script += ' tail -c ' + hb_ntos( hb_FSize( cTar_Path ) ) + ' "\$0" > "' + cTar_NameExt + '"' + Chr( 10 )
cSH_Script += ' exit' + Chr( 10 )
cSH_Script += 'fi' + Chr( 10 )
cSH_Script += 'if [ \`id -u\` != 0 ]; then' + Chr( 10 )
cSH_Script += ' echo "This package has to be installed from root account."' + Chr( 10 )
cSH_Script += ' exit 1' + Chr( 10 )
cSH_Script += 'fi' + Chr( 10 )
cSH_Script += 'echo "Do you want to install Harbour (y/n)"' + Chr( 10 )
cSH_Script += 'read ASK' + Chr( 10 )
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( GetEnvC( "HB_PLATFORM" ) == "linux", "&& ldconfig", "" ) + Chr( 10 )
cSH_Script += 'exit \$?' + Chr( 10 )
cSH_Script += 'HB_INST_EOF' + Chr( 10 )
cSH_Script := ;
'#!/bin/sh' + Chr( 10 ) + ;
'if [ "\$1" = "--extract" ]; then' + Chr( 10 ) + ;
' tail -c ' + hb_ntos( hb_FSize( cTar_Path ) ) + ' "\$0" > "' + cTar_NameExt + '"' + Chr( 10 ) + ;
' exit' + Chr( 10 ) + ;
'fi' + Chr( 10 ) + ;
'if [ \`id -u\` != 0 ]; then' + Chr( 10 ) + ;
' echo "This package has to be installed from root account."' + Chr( 10 ) + ;
' exit 1' + Chr( 10 ) + ;
'fi' + Chr( 10 ) + ;
'echo "Do you want to install Harbour (y/n)"' + Chr( 10 ) + ;
'read ASK' + Chr( 10 ) + ;
'if [ "\${ASK}" != "y" ] && [ "\${ASK}" != "Y" ]; then' + Chr( 10 ) + ;
' exit 1' + Chr( 10 ) + ;
'fi' + Chr( 10 ) + ;
'(tail -c ' + hb_ntos( hb_FSize( cTar_Path ) ) + ' "\$0" | gzip -cd | (cd /;tar xvpf -)) ' + iif( GetEnvC( "HB_PLATFORM" ) == "linux", "&& ldconfig", "" ) + Chr( 10 ) + ;
'exit \$?' + Chr( 10 ) + ;
'HB_INST_EOF' + Chr( 10 )
hb_MemoWrit( tmp, cSH_Script + hb_MemoRead( cTar_Path ) )
@@ -684,17 +685,23 @@ STATIC FUNCTION __hb_extern_gen( aFuncList, cOutputName )
__hb_extern_get_exception_list( cOutputName, @aInclude, @aExclude, @hDynamic )
cExtern := ""
IF Empty( aInclude ) .AND. ;
Empty( aExclude )
cExtern += cLine
cExtern += " * NOTE: You can add manual override which functions to include or" + hb_eol()
cExtern += " * exclude from automatically generated EXTERNAL/DYNAMIC list." + hb_eol()
cExtern += cHelp
cExtern += ;
cLine + ;
" * NOTE: You can add manual override which functions to include or" + hb_eol() + ;
" * exclude from automatically generated EXTERNAL/DYNAMIC list." + hb_eol() + ;
cHelp
ELSE
cExtern += cLine
cExtern += " * NOTE: Following comments are control commands for the generator." + hb_eol()
cExtern += " * Do not edit them unless you know what you are doing." + hb_eol()
cExtern += cHelp
cExtern += ;
cLine + ;
" * NOTE: Following comments are control commands for the generator." + hb_eol() + ;
" * Do not edit them unless you know what you are doing." + hb_eol() + ;
cHelp
IF ! Empty( aInclude )
cExtern += hb_eol()
FOR EACH tmp IN aInclude
@@ -708,23 +715,26 @@ STATIC FUNCTION __hb_extern_gen( aFuncList, cOutputName )
NEXT
ENDIF
ENDIF
cExtern += hb_eol()
cExtern += cLine
cExtern += " * WARNING: Automatically generated code below. DO NOT EDIT! (except casing)" + hb_eol()
cExtern += " * Regenerate with HB_REBUILD_EXTERN=yes build option." + hb_eol()
cExtern += " */" + hb_eol()
cExtern += hb_eol()
cExtern += "#ifndef " + "__HBEXTERN_CH__" + Upper( hb_FNameName( cOutputName ) ) + "__" + hb_eol()
cExtern += "#define " + "__HBEXTERN_CH__" + Upper( hb_FNameName( cOutputName ) ) + "__" + hb_eol()
cExtern += hb_eol()
cExtern += "#if defined( __HBEXTREQ__ ) .OR. defined( " + cSelfName + "ANNOUNCE" + " )" + hb_eol()
cExtern += " ANNOUNCE " + cSelfName + hb_eol()
cExtern += "#endif" + hb_eol()
cExtern += hb_eol()
cExtern += "#if defined( __HBEXTREQ__ ) .OR. defined( " + cSelfName + "REQUEST" + " )" + hb_eol()
cExtern += " #command DYNAMIC <fncs,...> => EXTERNAL <fncs>" + hb_eol()
cExtern += "#endif" + hb_eol()
cExtern += hb_eol()
cExtern += ;
hb_eol() + ;
cLine + ;
" * WARNING: Automatically generated code below. DO NOT EDIT! (except casing)" + hb_eol() + ;
" * Regenerate with HB_REBUILD_EXTERN=yes build option." + hb_eol() + ;
" */" + hb_eol() + ;
hb_eol() + ;
"#ifndef " + "__HBEXTERN_CH__" + Upper( hb_FNameName( cOutputName ) ) + "__" + hb_eol() + ;
"#define " + "__HBEXTERN_CH__" + Upper( hb_FNameName( cOutputName ) ) + "__" + hb_eol() + ;
hb_eol() + ;
"#if defined( __HBEXTREQ__ ) .OR. defined( " + cSelfName + "ANNOUNCE" + " )" + hb_eol() + ;
" ANNOUNCE " + cSelfName + hb_eol() + ;
"#endif" + hb_eol() + ;
hb_eol() + ;
"#if defined( __HBEXTREQ__ ) .OR. defined( " + cSelfName + "REQUEST" + " )" + hb_eol() + ;
" #command DYNAMIC <fncs,...> => EXTERNAL <fncs>" + hb_eol() + ;
"#endif" + hb_eol() + ;
hb_eol()
IF Empty( aInclude )
aExtern := aFuncList
ELSE
@@ -742,11 +752,13 @@ STATIC FUNCTION __hb_extern_gen( aFuncList, cOutputName )
cExtern += "DYNAMIC " + hb_HGetDef( hDynamic, tmp, tmp ) + hb_eol()
ENDIF
NEXT
cExtern += hb_eol()
cExtern += "#if defined( __HBEXTREQ__ ) .OR. defined( " + cSelfName + "REQUEST" + " )" + hb_eol()
cExtern += " #uncommand DYNAMIC <fncs,...> => EXTERNAL <fncs>" + hb_eol()
cExtern += "#endif" + hb_eol()
cExtern += hb_eol()
cExtern += "#endif" + hb_eol()
cExtern += ;
hb_eol() + ;
"#if defined( __HBEXTREQ__ ) .OR. defined( " + cSelfName + "REQUEST" + " )" + hb_eol() + ;
" #uncommand DYNAMIC <fncs,...> => EXTERNAL <fncs>" + hb_eol() + ;
"#endif" + hb_eol() + ;
hb_eol() + ;
"#endif" + hb_eol()
RETURN hb_MemoWrit( cOutputName, cExtern )

View File

@@ -70,6 +70,7 @@ CREATE CLASS TIPClientHTTP FROM TIPClient
METHOD Get( cQuery )
METHOD Post( xPostData, cQuery )
METHOD Put( xPostData, cQuery )
METHOD Delete( xPostData, cQuery )
METHOD ReadHeaders( lClear )
METHOD Read( nLen )
METHOD UseBasicAuth() INLINE ::cAuthMode := "Basic"
@@ -123,6 +124,10 @@ METHOD Put( xPostData, cQuery ) CLASS TIPClientHTTP
RETURN ::postByVerb( xPostData, cQuery, "PUT" )
METHOD Delete( xPostData, cQuery ) CLASS TIPClientHTTP
RETURN ::postByVerb( xPostData, cQuery, "DELETE" )
METHOD PostByVerb( xPostData, cQuery, cVerb ) CLASS TIPClientHTTP
LOCAL cData, nI, cTmp, y

View File

@@ -21,7 +21,7 @@
$ONELINER$
Extracts the next key code from the Harbour keyboard buffer.
$SYNTAX$
Inkey( [<nTimeout>] [,<nEvents>] ) --> nKey
Inkey( [<nTimeout>] [, <nEvents>] ) --> nKey
$ARGUMENTS$
<nTimeout> is an optional timeout value in seconds, with a granularity
of 1/10th of a second. If omitted, Inkey() returns immediately. If set
@@ -120,7 +120,7 @@
$SUBCATEGORY$
User interface
$ONELINER$
DO NOT CALL THIS FUNCTION DIRECTLY!
Use hb_keyPut() instead
$SYNTAX$
KEYBOARD <cString>
CLEAR TYPEAHEAD
@@ -226,7 +226,7 @@
EXIT
ELSE
IF nKey != 0
cChar := Chr( nKey )
cChar := hb_keyChar( nKey )
ENDIF
ENDIF
ENDDO

View File

@@ -62,7 +62,7 @@
$EXAMPLES$
PROCEDURE Main()
USE test NEW
LABEL FORM EE
LABEL FORM test.lbl
USE
RETURN
$STATUS$

View File

@@ -90,7 +90,7 @@
$EXAMPLES$
PROCEDURE Main()
USE test NEW
REPORT FORM EE
REPORT FORM test.frm
USE
RETURN
$STATUS$

View File

@@ -33,7 +33,7 @@ by Viktor Szakats
3) Resolve any conflicts
4) Run 'hbrun bin/commit' to create new ChangeLog.txt entry
with timestamp and list of modified files
5) Edit ChangeLog.txt with a text editor (do not use Notepad.exe)
5) Edit ChangeLog.txt with a text editor (do not use notepad.exe)
6) Copy the last ChangeLog.txt entry to the clipboard
If it's a single atomic change, it's better to copy only
the description itself without the entry header and list

View File

@@ -1024,7 +1024,7 @@ DLMALLOC_EXPORT size_t dlmalloc_max_footprint(void);
guarantee that this number of bytes can actually be obtained from
the system.
*/
DLMALLOC_EXPORT size_t dlmalloc_footprint_limit();
DLMALLOC_EXPORT size_t dlmalloc_footprint_limit(void);
/*
malloc_set_footprint_limit();

View File

@@ -12232,6 +12232,7 @@ HB_LANG_REQUEST( HB_LANG_DEFAULT )
HB_EXTERN_BEGIN
extern void HB_FORCE_LINK_MAIN( void );
HB_EXTERN_END
extern void _hb_forceLinkMain( void );
void _hb_forceLinkMain()
{
HB_FORCE_LINK_MAIN();

View File

@@ -1014,6 +1014,7 @@ STATIC FUNCTION hbmk_new( lShellMode )
hbmk[ _HBMK_aINCPATH ] := {}
hbmk[ _HBMK_aLIBPATH ] := {}
hbmk[ _HBMK_lSysLoc ] := .F.
hbmk[ _HBMK_lDumpInfo ] := .F.
hbmk[ _HBMK_lMarkdown ] := .F.
hbmk[ _HBMK_bOut ] := {| cText | OutStd( cText ) }
@@ -1254,6 +1255,22 @@ STATIC PROCEDURE hbmk_harbour_dirlayout_init( hbmk )
hbmk[ _HBMK_cHB_INSTALL_ADD ] := hb_PathNormalize( hb_DirSepAdd( hbmk[ _HBMK_cHB_INSTALL_PFX ] ) ) + _HBMK_SPECDIR_ADDONS
ENDIF
#if defined( __PLATFORM__UNIX )
/* Detect system locations to enable shared library option by default */
IF hbmk[ _HBMK_cPLAT ] == "beos"
hbmk[ _HBMK_lSysLoc ] := ;
LEFTEQUAL( hbmk[ _HBMK_cHB_INSTALL_BIN ], "/boot/common" ) .OR. ;
LEFTEQUAL( hbmk[ _HBMK_cHB_INSTALL_BIN ], "/boot/system" ) .OR. ;
LEFTEQUAL( hbmk[ _HBMK_cHB_INSTALL_BIN ], "/boot/home/config" ) .OR. ;
AScan( ListToArray( GetEnv( "LIBRARY_PATH" ), ":" ), {| tmp | LEFTEQUAL( hbmk[ _HBMK_cHB_INSTALL_LIB ], tmp ) } ) > 0
ELSE
hbmk[ _HBMK_lSysLoc ] := ;
LEFTEQUAL( hbmk[ _HBMK_cHB_INSTALL_BIN ], "/usr/local/bin" ) .OR. ;
LEFTEQUAL( hbmk[ _HBMK_cHB_INSTALL_BIN ], "/usr/bin" ) .OR. ;
AScan( ListToArray( GetEnv( "LD_LIBRARY_PATH" ), ":" ), {| tmp | LEFTEQUAL( hbmk[ _HBMK_cHB_INSTALL_LIB ], tmp ) } ) > 0
ENDIF
#endif
RETURN
STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExitStr )
@@ -1979,27 +1996,7 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit
hbmk_OutErr( hbmk, hb_StrFormat( I_( e"Error: %1$s not set, failed to autodetect.\nRun this tool from its original location inside the Harbour installation or set %1$s environment variable to Harbour's root directory." ), _HBMK_ENV_INSTALL_PFX ) )
RETURN _EXIT_FAILHBDETECT
ENDIF
#if defined( __PLATFORM__UNIX )
/* Detect system locations to enable shared library option by default */
IF hbmk[ _HBMK_cPLAT ] == "beos"
hbmk[ _HBMK_lSysLoc ] := ;
LEFTEQUAL( hbmk[ _HBMK_cHB_INSTALL_BIN ], "/boot/common" ) .OR. ;
LEFTEQUAL( hbmk[ _HBMK_cHB_INSTALL_BIN ], "/boot/system" ) .OR. ;
LEFTEQUAL( hbmk[ _HBMK_cHB_INSTALL_BIN ], "/boot/home/config" ) .OR. ;
AScan( ListToArray( GetEnv( "LIBRARY_PATH" ), ":" ), {| tmp | LEFTEQUAL( hbmk[ _HBMK_cHB_INSTALL_LIB ], tmp ) } ) > 0
ELSE
hbmk[ _HBMK_lSysLoc ] := ;
LEFTEQUAL( hbmk[ _HBMK_cHB_INSTALL_BIN ], "/usr/local/bin" ) .OR. ;
LEFTEQUAL( hbmk[ _HBMK_cHB_INSTALL_BIN ], "/usr/bin" ) .OR. ;
AScan( ListToArray( GetEnv( "LD_LIBRARY_PATH" ), ":" ), {| tmp | LEFTEQUAL( hbmk[ _HBMK_cHB_INSTALL_LIB ], tmp ) } ) > 0
ENDIF
#else
hbmk[ _HBMK_lSysLoc ] := .F.
#endif
ELSE
hbmk[ _HBMK_lSysLoc ] := .F.
hbmk[ _HBMK_cHB_INSTALL_LI3 ] := ""
hbmk[ _HBMK_cHB_INSTALL_BIN ] := ""
hbmk[ _HBMK_cHB_INSTALL_LIB ] := ""
@@ -3100,6 +3097,15 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit
ENDIF
ENDIF
/* NOTE: Keep this before the "-i" check. */
CASE Left( cParamL, Len( "-icon=" ) ) == "-icon="
cParam := MacroProc( hbmk, SubStr( cParam, Len( "-icon=" ) + 1 ), aParam[ _PAR_cFileName ] )
IF ! Empty( cParam )
AAdd( hbmk[ _HBMK_aICON ], hb_PathNormalize( PathMakeAbsolute( hb_DirSepToOS( cParam ), aParam[ _PAR_cFileName ] ) ) )
ENDIF
/* NOTE: Keep this after the "-icon=" check. */
CASE Left( cParamL, 2 ) == "-i" .AND. ;
Len( cParamL ) > 2 .AND. !( cParamL == "-i-" )
@@ -3117,13 +3123,6 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit
NEXT
ENDIF
CASE Left( cParamL, Len( "-icon=" ) ) == "-icon="
cParam := MacroProc( hbmk, SubStr( cParam, Len( "-icon=" ) + 1 ), aParam[ _PAR_cFileName ] )
IF ! Empty( cParam )
AAdd( hbmk[ _HBMK_aICON ], hb_PathNormalize( PathMakeAbsolute( hb_DirSepToOS( cParam ), aParam[ _PAR_cFileName ] ) ) )
ENDIF
CASE Left( cParamL, Len( "-manifest=" ) ) == "-manifest="
cParam := MacroProc( hbmk, SubStr( cParam, Len( "-manifest=" ) + 1 ), aParam[ _PAR_cFileName ] )
@@ -13477,17 +13476,23 @@ STATIC FUNCTION __hb_extern_gen( hbmk, aFuncList, cOutputName )
__hb_extern_get_exception_list( cOutputName, @aInclude, @aExclude, @hDynamic )
cExtern := ""
IF Empty( aInclude ) .AND. ;
Empty( aExclude )
cExtern += cLine
cExtern += " * NOTE: You can add manual override which functions to include or" + hb_eol()
cExtern += " * exclude from automatically generated EXTERNAL/DYNAMIC list." + hb_eol()
cExtern += cHelp
cExtern += ;
cLine + ;
" * NOTE: You can add manual override which functions to include or" + hb_eol() + ;
" * exclude from automatically generated EXTERNAL/DYNAMIC list." + hb_eol() + ;
cHelp
ELSE
cExtern += cLine
cExtern += " * NOTE: Following comments are control commands for the generator." + hb_eol()
cExtern += " * Do not edit them unless you know what you are doing." + hb_eol()
cExtern += cHelp
cExtern += ;
cLine + ;
" * NOTE: Following comments are control commands for the generator." + hb_eol() + ;
" * Do not edit them unless you know what you are doing." + hb_eol() + ;
cHelp
IF ! Empty( aInclude )
cExtern += hb_eol()
FOR EACH tmp IN aInclude
@@ -13501,23 +13506,26 @@ STATIC FUNCTION __hb_extern_gen( hbmk, aFuncList, cOutputName )
NEXT
ENDIF
ENDIF
cExtern += hb_eol()
cExtern += cLine
cExtern += " * WARNING: Automatically generated code below. DO NOT EDIT! (except casing)" + hb_eol()
cExtern += " * Regenerate using " + _SELF_NAME_ + " '-hbx=' option." + hb_eol()
cExtern += " */" + hb_eol()
cExtern += hb_eol()
cExtern += "#ifndef " + "__HBEXTERN_CH__" + StrToDefine( hb_FNameName( cOutputName ) ) + "__" + hb_eol()
cExtern += "#define " + "__HBEXTERN_CH__" + StrToDefine( hb_FNameName( cOutputName ) ) + "__" + hb_eol()
cExtern += hb_eol()
cExtern += "#if defined( " + _HBMK_HBEXTREQ + " ) .OR. defined( " + cSelfName + "ANNOUNCE" + " )" + hb_eol()
cExtern += " ANNOUNCE " + cSelfName + hb_eol()
cExtern += "#endif" + hb_eol()
cExtern += hb_eol()
cExtern += "#if defined( " + _HBMK_HBEXTREQ + " ) .OR. defined( " + cSelfName + "REQUEST" + " )" + hb_eol()
cExtern += " #command DYNAMIC <fncs,...> => EXTERNAL <fncs>" + hb_eol()
cExtern += "#endif" + hb_eol()
cExtern += hb_eol()
cExtern += ;
hb_eol() + ;
cLine + ;
" * WARNING: Automatically generated code below. DO NOT EDIT! (except casing)" + hb_eol() + ;
" * Regenerate using " + _SELF_NAME_ + " '-hbx=' option." + hb_eol() + ;
" */" + hb_eol() + ;
hb_eol() + ;
"#ifndef " + "__HBEXTERN_CH__" + StrToDefine( hb_FNameName( cOutputName ) ) + "__" + hb_eol() + ;
"#define " + "__HBEXTERN_CH__" + StrToDefine( hb_FNameName( cOutputName ) ) + "__" + hb_eol() + ;
hb_eol() + ;
"#if defined( " + _HBMK_HBEXTREQ + " ) .OR. defined( " + cSelfName + "ANNOUNCE" + " )" + hb_eol() + ;
" ANNOUNCE " + cSelfName + hb_eol() + ;
"#endif" + hb_eol() + ;
hb_eol() + ;
"#if defined( " + _HBMK_HBEXTREQ + " ) .OR. defined( " + cSelfName + "REQUEST" + " )" + hb_eol() + ;
" #command DYNAMIC <fncs,...> => EXTERNAL <fncs>" + hb_eol() + ;
"#endif" + hb_eol() + ;
hb_eol()
IF Empty( aInclude )
aExtern := aFuncList
ELSE
@@ -13535,12 +13543,14 @@ STATIC FUNCTION __hb_extern_gen( hbmk, aFuncList, cOutputName )
cExtern += "DYNAMIC " + hb_HGetDef( hDynamic, tmp, tmp ) + hb_eol()
ENDIF
NEXT
cExtern += hb_eol()
cExtern += "#if defined( " + _HBMK_HBEXTREQ + " ) .OR. defined( " + cSelfName + "REQUEST" + " )" + hb_eol()
cExtern += " #uncommand DYNAMIC <fncs,...> => EXTERNAL <fncs>" + hb_eol()
cExtern += "#endif" + hb_eol()
cExtern += hb_eol()
cExtern += "#endif" + hb_eol()
cExtern += ;
hb_eol() + ;
"#if defined( " + _HBMK_HBEXTREQ + " ) .OR. defined( " + cSelfName + "REQUEST" + " )" + hb_eol() + ;
" #uncommand DYNAMIC <fncs,...> => EXTERNAL <fncs>" + hb_eol() + ;
"#endif" + hb_eol() + ;
hb_eol() + ;
"#endif" + hb_eol()
/* Do not touch the file if the content is unchanged */
IF hb_MemoRead( cOutputName ) == cExtern