diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 3221a174b3..157adec767 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,20 +16,43 @@ The license applies to all entries newer than 2009-04-28. */ +2012-05-09 16:04 UTC+0200 Viktor Szakats (harbour syenar.net) + * utils/hbmk2/Makefile + * utils/hbmk2/hbmk2.hbp + + utils/hbmk2/hbmk2c.c + * utils/hbmk2/hbmk2.prg + + added automatic detection of _SET_OSCODEPAGE and hb_SetDispCP() + Experimental, not well tested and it may need extensions to handle + all possible CPs and cases on *nix systems. + MS-DOS and OS/2 support are missing. + Autodetection will now be used instead of generic assumptions + and defaults stored in translation files. + + enabled UTF8EX HVM CP on remaining (non-*nix) platforms. + ; Once matured, this code can be moved to the core, possible + after rewrite in C. This will make it unnecessary to roll + private C code for hbmk2. + ; Several problems remain on non-*nix systems when working with + actual non-ASCII filenames. + + * utils/hbmk2/hbmk2.pt_BR.po + * utils/hbmk2/hbmk2.hu_HU.po + * utils/hbmk2/hbmk2.es_PE.po + - deleted translation (language) dependent CP settings. + 2012-05-09 14:35 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) * contrib/hbide/idemain.prg ! Disabled: :destroy() calls before application quits. * Simplified: ambigous variable reference. - ; NOTE: now hbIDE does not produces GPF on EXIT but throws - 2 RTE the contents of them can be viewed in tracelog. + ; NOTE: now hbIDE does not produces GPF on EXIT but throws + 2 RTE the contents of them can be viewed in tracelog. . Error BASE/1301 Object destructor failure: Reference to freed block. 2012-05-09 12:15 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) * contrib/hbqt/qtgui/hbqt_errorsys.prg - + Added: HB_TRACE() call if HVM is closed and error message - needs to be retrieved somehow. It will allow us to + + Added: HB_TRACE() call if HVM is closed and error message + needs to be retrieved somehow. It will allow us to peep in further to pin-point the EXIT GPF. * contrib/hbqt/qtgui/hbqtgui.hbx * Re-generated. @@ -41,8 +64,8 @@ ! Enabled: :destroy() calls before application quits. ; NOTE: now no more EXIT GPF is reported in hbIDE. - Please shout if you get one and report the message - available on std error output, for Window which + Please shout if you get one and report the message + available on std error output, for Window which will be debugger like debug.exe. 2012-05-09 16:14 UTC+0200 Viktor Szakats (harbour syenar.net) diff --git a/harbour/utils/hbmk2/Makefile b/harbour/utils/hbmk2/Makefile index 3c1efe26a5..761e67c2fb 100644 --- a/harbour/utils/hbmk2/Makefile +++ b/harbour/utils/hbmk2/Makefile @@ -9,6 +9,9 @@ include $(TOP)$(ROOT)config/global.mk PRG_SOURCES := \ hbmk2.prg \ +C_SOURCES := \ + hbmk2c.c \ + PRG_MAIN := hbmk2.prg LIBS = $(HB_LIBS_MT_NORDD) diff --git a/harbour/utils/hbmk2/hbmk2.es_PE.po b/harbour/utils/hbmk2/hbmk2.es_PE.po index f7f0a96191..7a865ad8e4 100644 --- a/harbour/utils/hbmk2/hbmk2.es_PE.po +++ b/harbour/utils/hbmk2/hbmk2.es_PE.po @@ -351,11 +351,6 @@ msgstr " hbmk2 [opciones] [] 0 + cLang := Left( cString, tmp - 1 ) + cCP := SubStr( cString, tmp + 1 ) + IF ( tmp := At( "@", cString ) ) > 0 + cCP := Left( cString, tmp - 1 ) + ENDIF + ELSE + cLang := cString + cCP := "UTF-8" + ENDIF + + RETURN NIL + +STATIC FUNCTION __CPUnixToCPStd( cCPUnix ) + + IF hb_isString( cCPUnix ) + + cCPUnix := StrTran( cCPUnix, "_" ) + cCPUnix := StrTran( cCPUnix, "-" ) + + /* TOFIX: update the list of std unix cp names */ + SWITCH Lower( cCPUnix ) + CASE "ibm437" + CASE "cp437" ; RETURN "cp437" + CASE "ibm737" + CASE "cp737" ; RETURN "cp737" + CASE "ibm775" + CASE "cp775" ; RETURN "cp775" + CASE "ibm850" + CASE "cp850" ; RETURN "cp850" + CASE "ibm852" + CASE "cp852" ; RETURN "cp852" + CASE "ibm857" + CASE "cp857" ; RETURN "cp857" + CASE "ibm860" + CASE "cp860" ; RETURN "cp860" + CASE "ibm861" + CASE "cp861" ; RETURN "cp861" + CASE "ibm865" + CASE "cp865" ; RETURN "cp865" + CASE "ibm866" + CASE "cp866" ; RETURN "cp866" + CASE "windows1250" ; RETURN "cp1250" + CASE "windows1251" ; RETURN "cp1251" + CASE "windows1252" ; RETURN "cp1252" + CASE "windows1253" ; RETURN "cp1253" + CASE "windows1254" ; RETURN "cp1254" + CASE "windows1257" ; RETURN "cp1257" + CASE "koi8r" ; RETURN "koi-8" + CASE "koi8u" ; RETURN "koi-8u" + CASE "iso88591" ; RETURN "iso8859-1" + CASE "iso88592" ; RETURN "iso8859-2" + CASE "iso88595" ; RETURN "iso8859-5" + CASE "iso88597" ; RETURN "iso8859-7" + CASE "iso88599" ; RETURN "iso8859-9" + CASE "utf8" ; RETURN "utf8" + ENDSWITCH + ENDIF + + RETURN "" + +STATIC FUNCTION __CPWinToCPStd( nCPWin ) + + IF hb_isNumeric( nCPWin ) + SWITCH nCPWin + CASE 437 ; RETURN "cp437" + CASE 737 ; RETURN "cp737" + CASE 775 ; RETURN "cp775" + CASE 850 ; RETURN "cp850" + CASE 852 ; RETURN "cp852" + CASE 857 ; RETURN "cp857" + CASE 860 ; RETURN "cp860" + CASE 861 ; RETURN "cp861" + CASE 865 ; RETURN "cp865" + CASE 866 ; RETURN "cp866" + CASE 1200 ; RETURN "utf16" + CASE 1250 ; RETURN "cp1250" + CASE 1251 ; RETURN "cp1251" + CASE 1252 ; RETURN "cp1252" + CASE 1253 ; RETURN "cp1253" + CASE 1254 ; RETURN "cp1254" + CASE 1257 ; RETURN "cp1257" + CASE 20866 ; RETURN "koi-8" + CASE 21866 ; RETURN "koi-8u" + CASE 28591 ; RETURN "iso8859-1" + CASE 28592 ; RETURN "iso8859-2" + CASE 28595 ; RETURN "iso8859-5" + CASE 28597 ; RETURN "iso8859-7" + CASE 28599 ; RETURN "iso8859-9" + CASE 65001 ; RETURN "utf8" + ENDSWITCH + ENDIF + + RETURN "" + +STATIC FUNCTION __CPStdToHarbour( cCPStd, cCtryStd ) + LOCAL cCP + LOCAL cCtryHb + LOCAL cdp + + IF ! Empty( cCPStd ) + IF Lower( cCPStd ) == "utf8" + cCP := "UTF8" + ELSEIF Lower( cCPStd ) == "utf16" + cCP := "UTF16LE" + ELSE + IF ! Empty( cCtryHb := __CtryStdToCtry( cCtryStd ) ) + FOR EACH cdp IN hb_cdpList() + IF Left( cdp, 2 ) == cCtryHb + IF Lower( cCPStd ) == hb_cdpUniID( cdp ) + cCP := cdp + EXIT + ENDIF + ENDIF + NEXT + ENDIF + IF Empty( cCP ) + FOR EACH cdp IN hb_cdpList() + IF Lower( cCPStd ) == hb_cdpUniID( cdp ) + cCP := cdp + EXIT + ENDIF + NEXT + ENDIF ENDIF ENDIF - RETURN + RETURN cCP + +STATIC FUNCTION __CtryStdToCtry( cCtryStd ) + LOCAL cCtryHb := Left( hb_cdpSelect(), 2 ) + + IF hb_isString( cCtryStd ) + SWITCH Lower( cCtryStd ) + CASE "af-za" ; EXIT + CASE "af" ; EXIT + CASE "ar-ae" ; EXIT + CASE "ar-bh" ; EXIT + CASE "ar-dz" ; EXIT + CASE "ar-eg" ; EXIT + CASE "ar-iq" ; EXIT + CASE "ar-jo" ; EXIT + CASE "ar-kw" ; EXIT + CASE "ar-lb" ; EXIT + CASE "ar-ly" ; EXIT + CASE "ar-ma" ; EXIT + CASE "ar-om" ; EXIT + CASE "ar-qa" ; EXIT + CASE "ar-sa" ; EXIT + CASE "ar-sy" ; EXIT + CASE "ar-tn" ; EXIT + CASE "ar-ye" ; EXIT + CASE "ar" ; EXIT + CASE "az-az-cyrl" ; EXIT + CASE "az-az-latn" ; EXIT + CASE "az" ; EXIT + CASE "be-by" ; EXIT + CASE "be" ; EXIT + CASE "bg-bg" + CASE "bg" ; cCtryHb := "BG" ; EXIT + CASE "ca-es" ; EXIT + CASE "ca" ; EXIT + CASE "cy-gb" ; EXIT + CASE "cs-cz" + CASE "cs" ; cCtryHb := "CS" ; EXIT + CASE "da-dk" + CASE "da" ; cCtryHb := "DK" ; EXIT + CASE "de-at" + CASE "de-ch" + CASE "de-de" + CASE "de-li" + CASE "de-lu" + CASE "de" ; cCtryHb := "DE" ; EXIT + CASE "div-mv" ; EXIT + CASE "div" ; EXIT + CASE "el-gr" + CASE "el" ; cCtryHb := "EL" ; EXIT + CASE "en-au" + CASE "en-bz" + CASE "en-ca" + CASE "en-cb" + CASE "en-gb" + CASE "en-ie" + CASE "en-jm" + CASE "en-nz" + CASE "en-ph" + CASE "en-tt" + CASE "en-us" + CASE "en-za" + CASE "en-zw" + CASE "en" ; cCtryHb := "EN" ; EXIT + CASE "es-ar" + CASE "es-bo" + CASE "es-cl" + CASE "es-co" + CASE "es-cr" + CASE "es-do" + CASE "es-ec" + CASE "es-es" + CASE "es-gt" + CASE "es-hn" + CASE "es-mx" + CASE "es-ni" + CASE "es-pa" + CASE "es-pe" + CASE "es-pr" + CASE "es-py" + CASE "es-sv" + CASE "es-uy" + CASE "es-ve" + CASE "es" ; cCtryHb := "ES" ; EXIT + CASE "et-ee" ; EXIT + CASE "et" ; EXIT + CASE "eu-es" ; EXIT + CASE "eu" ; EXIT + CASE "fa-ir" ; EXIT + CASE "fa" ; EXIT + CASE "fi-fi" + CASE "fi" ; cCtryHb := "FI" ; EXIT + CASE "fo-fo" ; EXIT + CASE "fo" ; EXIT + CASE "fr-be" + CASE "fr-ca" + CASE "fr-ch" + CASE "fr-fr" + CASE "fr-lu" + CASE "fr-mc" + CASE "fr" ; cCtryHb := "FR" ; EXIT + CASE "gl-es" ; EXIT + CASE "gl" ; EXIT + CASE "gu-in" ; EXIT + CASE "gu" ; EXIT + CASE "he-il" ; EXIT + CASE "he" ; EXIT + CASE "hi-in" ; EXIT + CASE "hi" ; EXIT + CASE "hr-hr" + CASE "hr" ; cCtryHb := "HR" ; EXIT + CASE "hu-hu" + CASE "hu" ; cCtryHb := "HU" ; EXIT + CASE "hy-am" ; EXIT + CASE "hy" ; EXIT + CASE "id-id" ; EXIT + CASE "id" ; EXIT + CASE "is-is" + CASE "is" ; cCtryHb := "IS" ; EXIT + CASE "it-ch" + CASE "it-it" + CASE "it" ; cCtryHb := "IT" ; EXIT + CASE "ja-jp" ; EXIT + CASE "ja" ; EXIT + CASE "ka-ge" ; EXIT + CASE "ka" ; EXIT + CASE "kk-kz" ; EXIT + CASE "kk" ; EXIT + CASE "kn-in" ; EXIT + CASE "kn" ; EXIT + CASE "ko-kr" ; EXIT + CASE "ko" ; EXIT + CASE "kok-in" ; EXIT + CASE "kok" ; EXIT + CASE "ky-kz" ; EXIT + CASE "ky" ; EXIT + CASE "lt-lt" + CASE "lt" ; cCtryHb := "LT" ; EXIT + CASE "lv-lv" ; EXIT + CASE "lv" ; EXIT + CASE "mk-mk" ; EXIT + CASE "mk" ; EXIT + CASE "mn-mn" ; EXIT + CASE "mn" ; EXIT + CASE "mr-in" ; EXIT + CASE "mr" ; EXIT + CASE "ms-bn" ; EXIT + CASE "ms-my" ; EXIT + CASE "ms" ; EXIT + CASE "nb-no" ; EXIT + CASE "nl-be" + CASE "nl-nl" + CASE "nl" ; cCtryHb := "NL" ; EXIT + CASE "nn-no" ; EXIT + CASE "no" ; cCtryHb := "NO" ; EXIT + CASE "pa-in" ; EXIT + CASE "pa" ; EXIT + CASE "pl-pl" + CASE "pl" ; cCtryHb := "PL" ; EXIT + CASE "pt-br" + CASE "pt-pt" + CASE "pt" ; cCtryHb := "PT" ; EXIT + CASE "ro-ro" + CASE "ro" ; cCtryHb := "RO" ; EXIT + CASE "ru-ru" + CASE "ru" ; cCtryHb := "RU" ; EXIT + CASE "sa-in" ; EXIT + CASE "sa" ; EXIT + CASE "sk-sk" + CASE "sk" ; cCtryHb := "SK" ; EXIT + CASE "sl-si" + CASE "sl" ; cCtryHb := "SL" ; EXIT + CASE "sq-al" ; EXIT + CASE "sq" ; EXIT + CASE "sr-sp-cyrl" + CASE "sr-sp-latn" ; cCtryHb := "SR" ; EXIT + CASE "sv-fi" + CASE "sv-se" + CASE "sv" ; cCtryHb := "SV" ; EXIT + CASE "sw-ke" ; EXIT + CASE "sw" ; EXIT + CASE "syr-sy" ; EXIT + CASE "syr" ; EXIT + CASE "ta-in" ; EXIT + CASE "ta" ; EXIT + CASE "te-in" ; EXIT + CASE "te" ; EXIT + CASE "th-th" ; EXIT + CASE "th" ; EXIT + CASE "tr-tr" + CASE "tr" ; cCtryHb := "TR" ; EXIT + CASE "tt-ru" ; EXIT + CASE "tt" ; EXIT + CASE "uk-ua" + CASE "uk" ; cCtryHb := "UA" ; EXIT + CASE "ur-pk" ; EXIT + CASE "ur" ; EXIT + CASE "uz-uz-cyrl" ; EXIT + CASE "uz-uz-latn" ; EXIT + CASE "uz" ; EXIT + CASE "vi-vn" ; EXIT + CASE "vi" ; EXIT + CASE "zh-chs" ; EXIT + CASE "zh-cht" ; EXIT + CASE "zh-cn" ; EXIT + CASE "zh-hk" ; EXIT + CASE "zh-mo" ; EXIT + CASE "zh-sg" ; EXIT + CASE "zh-tw" ; EXIT + ENDSWITCH + ENDIF + + RETURN cCtryHb STATIC PROCEDURE ShowHeader( hbmk ) LOCAL cTrsText diff --git a/harbour/utils/hbmk2/hbmk2.pt_BR.po b/harbour/utils/hbmk2/hbmk2.pt_BR.po index 6511e95783..9ab00335ca 100644 --- a/harbour/utils/hbmk2/hbmk2.pt_BR.po +++ b/harbour/utils/hbmk2/hbmk2.pt_BR.po @@ -351,11 +351,6 @@ msgstr " hbmk2 [opções] [] + +HB_FUNC( HBMK_WAPI_GETACP ) +{ + hb_retnl( GetACP() ); +} + +HB_FUNC( HBMK_WAPI_GETOEMCP ) +{ + hb_retnl( GetOEMCP() ); +} + +#endif