From 231d40b08d57738cdaad78b2b037b52f6ee8255b Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Wed, 13 Jun 2012 13:47:13 +0000 Subject: [PATCH] 2012-06-13 15:44 UTC+0200 Viktor Szakats (harbour syenar.net) * contrib/hbrun/hbrun.prg * contrib/hbrun/plugins.prg * utils/hbmk2/hbmk2.prg * synced recent changes + changed extension filename to /.harbour/hb_extension (hb_ext.ini in MS-DOS) envvar to HB_EXTENSION + plugins are now loaded from /.harbour/*.hb, /.harbour/*.hrb --- harbour/ChangeLog | 15 +++++-- harbour/contrib/hbrun/hbrun.prg | 61 +++++++++++++++----------- harbour/contrib/hbrun/plugins.prg | 13 +++--- harbour/utils/hbmk2/hbmk2.prg | 71 ++++++++++++++++++------------- 4 files changed, 97 insertions(+), 63 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 3b958b0539..f2da33c397 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,15 @@ The license applies to all entries newer than 2009-04-28. */ +2012-06-13 15:44 UTC+0200 Viktor Szakats (harbour syenar.net) + * contrib/hbrun/hbrun.prg + * contrib/hbrun/plugins.prg + * utils/hbmk2/hbmk2.prg + * synced recent changes + + changed extension filename to /.harbour/hb_extension (hb_ext.ini in MS-DOS) + envvar to HB_EXTENSION + + plugins are now loaded from /.harbour/*.hb, /.harbour/*.hrb + 2012-06-13 15:31 UTC+0200 Viktor Szakats (harbour syenar.net) * contrib/hbrun/hbrun.prg * utils/hbmk2/hbmk2.prg @@ -50,9 +59,9 @@ to run it, type: 'hbmk2 .' Missing is extension registration, plugins don't seem to work yet, and I plan to switch from full screen - prompt to shell-like prompt. Plugin paths, extension - configuration, history on-disk files need further - polishing. + prompt to shell-like prompt. + ; Plugin paths, extension configuration, history on-disk + files need further polishing. [DONE] + hbmk2 will act as a hbrun, if renamed to hbrun * contrib/hbqt/qtcore/hbqt_misc.prg diff --git a/harbour/contrib/hbrun/hbrun.prg b/harbour/contrib/hbrun/hbrun.prg index 10d74149bc..ad282e4820 100644 --- a/harbour/contrib/hbrun/hbrun.prg +++ b/harbour/contrib/hbrun/hbrun.prg @@ -88,6 +88,13 @@ STATIC s_cProgName /* ********************************************************************** */ +#if defined( __PLATFORM__DOS ) +# define _EXT_FILE_ "hb_ext.ini" +#else +# define _EXT_FILE_ "hb_extension" +#endif +#define _EXT_ENV_ "HB_EXTENSION" + PROCEDURE _APPMAIN( cFile, ... ) LOCAL cExt LOCAL hHeaders @@ -102,8 +109,8 @@ PROCEDURE _APPMAIN( cFile, ... ) aDynamic := {} - LoadExtDynamicFromFile( aDynamic, hb_DirBase() + "hbrun.ext" ) - LoadExtDynamicFromString( aDynamic, GetEnv( "HBRUN_EXT" ) ) + LoadExtDynamicFromFile( aDynamic, __hbrun_ConfigDir() + _EXT_FILE_ ) + LoadExtDynamicFromString( aDynamic, GetEnv( _EXT_ENV_ ) ) /* TODO: Rework parameter handling */ IF PCount() > 0 @@ -223,6 +230,32 @@ EXIT PROCEDURE hbrun_exit() RETURN +FUNCTION __hbrun_ConfigDir() + LOCAL cEnvVar + LOCAL cDir + +#if defined( __PLATFORM__WINDOWS ) + cEnvVar := "APPDATA" +#else + cEnvVar := "HOME" +#endif + + IF ! Empty( GetEnv( cEnvVar ) ) +#if defined( __PLATFORM__DOS ) + cDir := GetEnv( cEnvVar ) + hb_ps() + "~harbour" +#else + cDir := GetEnv( cEnvVar ) + hb_ps() + ".harbour" +#endif + ELSE + cDir := hb_DirBase() + ENDIF + + IF ! hb_DirExists( cDir ) + hb_DirCreate( cDir ) + ENDIF + + RETURN cDir + hb_ps() + STATIC PROCEDURE LoadExtDynamicFromFile( aDynamic, cFileName ) LOCAL cItem @@ -745,37 +778,15 @@ STATIC PROCEDURE hbrun_HistorySave() RETURN STATIC FUNCTION hbrun_HistoryFileName() - LOCAL cEnvVar - LOCAL cDir LOCAL cFileName -#if defined( __PLATFORM__WINDOWS ) - cEnvVar := "APPDATA" -#else - cEnvVar := "HOME" -#endif - #if defined( __PLATFORM__DOS ) cFileName := "hbhist.ini" #else cFileName := ".hb_history" #endif - IF ! Empty( GetEnv( cEnvVar ) ) -#if defined( __PLATFORM__DOS ) - cDir := GetEnv( cEnvVar ) + hb_ps() + "~harbour" -#else - cDir := GetEnv( cEnvVar ) + hb_ps() + ".harbour" -#endif - ELSE - cDir := hb_DirBase() - ENDIF - - IF ! hb_DirExists( cDir ) - hb_DirCreate( cDir ) - ENDIF - - RETURN cDir + hb_ps() + cFileName + RETURN __hbrun_ConfigDir() + cFileName FUNCTION __hbrun_FindInPath( cFileName, xPath ) LOCAL cDir diff --git a/harbour/contrib/hbrun/plugins.prg b/harbour/contrib/hbrun/plugins.prg index d448846369..07e94e10b7 100644 --- a/harbour/contrib/hbrun/plugins.prg +++ b/harbour/contrib/hbrun/plugins.prg @@ -57,16 +57,19 @@ FUNCTION __hbrun_plugins() LOCAL hPlugins := { => } + LOCAL cDir + LOCAL cExt LOCAL file ADD PLUGIN TO hPlugins FILE "netiomgm.prg" ADD PLUGIN TO hPlugins FILE "extdynpl.hb" - FOR EACH file IN Directory( hb_DirBase() + "*.hb" ) - hPlugins[ hb_DirBase() + file[ F_NAME ] ] := MemoRead( hb_DirBase() + file[ F_NAME ] ) - NEXT - FOR EACH file IN Directory( hb_DirBase() + "*.hrb" ) - hPlugins[ hb_DirBase() + file[ F_NAME ] ] := MemoRead( hb_DirBase() + file[ F_NAME ] ) + cDir := __hbrun_ConfigDir() + + FOR EACH cExt IN { "*.hb", "*.hrb" } + FOR EACH file IN Directory( cDir + cExt ) + hPlugins[ cDir + file[ F_NAME ] ] := MemoRead( cDir + file[ F_NAME ] ) + NEXT NEXT RETURN hPlugins diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index ab9c654da7..803ca70f80 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -12155,8 +12155,12 @@ STATIC FUNCTION hbmk_CoreHeaderFiles() /* Emulate a minimal hbrun */ -#define _EXT_FILE_ "hbmk.ext" -#define _EXT_ENV_ "HBMK_EXT" +#if defined( __PLATFORM__DOS ) +# define _EXT_FILE_ "hb_ext.ini" +#else +# define _EXT_FILE_ "hb_extension" +#endif +#define _EXT_ENV_ "HB_EXTENSION" STATIC PROCEDURE __hbrun_minimal( cFile, ... ) LOCAL aDynamic := {} @@ -12244,7 +12248,7 @@ STATIC PROCEDURE __hbrun_minimal( cFile, ... ) EXIT ENDIF CASE ".hrb" - __hbrun_LoadExtDynamicFromFile( aDynamic, hb_DirBase() + _EXT_FILE_ ) + __hbrun_LoadExtDynamicFromFile( aDynamic, __hbrun_ConfigDir() + _EXT_FILE_ ) __hbrun_LoadExtDynamicFromString( aDynamic, GetEnv( _EXT_ENV_ ) ) __hbrun_extensions_dynamic_init( aDynamic ) s_cDirBase_hbrun := hb_DirBase() @@ -12253,14 +12257,14 @@ STATIC PROCEDURE __hbrun_minimal( cFile, ... ) hb_hrbRun( cFile, ... ) EXIT CASE ".dbf" - __hbrun_LoadExtDynamicFromFile( aDynamic, hb_DirBase() + _EXT_FILE_ ) + __hbrun_LoadExtDynamicFromFile( aDynamic, __hbrun_ConfigDir() + _EXT_FILE_ ) __hbrun_LoadExtDynamicFromString( aDynamic, GetEnv( _EXT_ENV_ ) ) __hbrun_extensions_dynamic_init( aDynamic ) __hbrun_shell( hb_AParams(), "USE " + cFile + " SHARED" ) EXIT ENDSWITCH ELSE - __hbrun_LoadExtDynamicFromFile( aDynamic, hb_DirBase() + _EXT_FILE_ ) + __hbrun_LoadExtDynamicFromFile( aDynamic, __hbrun_ConfigDir() + _EXT_FILE_ ) __hbrun_LoadExtDynamicFromString( aDynamic, GetEnv( _EXT_ENV_ ) ) __hbrun_extensions_dynamic_init( aDynamic ) __hbrun_shell( hb_AParams() ) @@ -12286,6 +12290,32 @@ STATIC FUNCTION __hbrun_FileSig( cFile ) RETURN cExt +STATIC FUNCTION __hbrun_ConfigDir() + LOCAL cEnvVar + LOCAL cDir + +#if defined( __PLATFORM__WINDOWS ) + cEnvVar := "APPDATA" +#else + cEnvVar := "HOME" +#endif + + IF ! Empty( GetEnv( cEnvVar ) ) +#if defined( __PLATFORM__DOS ) + cDir := GetEnv( cEnvVar ) + hb_ps() + "~harbour" +#else + cDir := GetEnv( cEnvVar ) + hb_ps() + ".harbour" +#endif + ELSE + cDir := hb_DirBase() + ENDIF + + IF ! hb_DirExists( cDir ) + hb_DirCreate( cDir ) + ENDIF + + RETURN cDir + hb_ps() + STATIC PROCEDURE __hbrun_LoadExtDynamicFromFile( aDynamic, cFileName ) LOCAL cItem @@ -12397,14 +12427,17 @@ STATIC FUNCTION __hbrun_extensions_get_list() FUNCTION __hbrun_plugins() LOCAL hPlugins := { => } + LOCAL cDir LOCAL cExt LOCAL file ADD PLUGIN TO hPlugins FILE "p_extdyn.hb" + cDir := __hbrun_ConfigDir() + FOR EACH cExt IN { "*.hb", "*.hrb" } - FOR EACH file IN Directory( hb_DirBase() + cExt ) - hPlugins[ hb_DirBase() + file[ F_NAME ] ] := MemoRead( hb_DirBase() + file[ F_NAME ] ) /* TODO: decide where to load plugins from */ + FOR EACH file IN Directory( cDir + cExt ) + hPlugins[ cDir + file[ F_NAME ] ] := MemoRead( cDir + file[ F_NAME ] ) NEXT NEXT @@ -12836,37 +12869,15 @@ STATIC PROCEDURE __hbrun_HistorySave() RETURN STATIC FUNCTION __hbrun_HistoryFileName() - LOCAL cEnvVar - LOCAL cDir LOCAL cFileName -#if defined( __PLATFORM__WINDOWS ) - cEnvVar := "APPDATA" -#else - cEnvVar := "HOME" -#endif - #if defined( __PLATFORM__DOS ) cFileName := "hbhist.ini" #else cFileName := ".hb_history" #endif - IF ! Empty( GetEnv( cEnvVar ) ) -#if defined( __PLATFORM__DOS ) - cDir := GetEnv( cEnvVar ) + hb_ps() + "~harbour" -#else - cDir := GetEnv( cEnvVar ) + hb_ps() + ".harbour" -#endif - ELSE - cDir := hb_DirBase() - ENDIF - - IF ! hb_DirExists( cDir ) - hb_DirCreate( cDir ) - ENDIF - - RETURN cDir + hb_ps() + cFileName + RETURN __hbrun_ConfigDir() + cFileName #if defined( __PLATFORM__WINDOWS )