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.
This commit is contained in:
Viktor Szakats
2012-05-10 14:05:35 +00:00
parent 70f1e370e6
commit 690ce3b29d
8 changed files with 503 additions and 63 deletions

View File

@@ -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)

View File

@@ -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)

View File

@@ -351,11 +351,6 @@ msgstr " hbmk2 [opciones] [<script[s]>] <src[s][.prg|.c|.obj|.o|.rc|.res|.def|.
msgid "inherit .prg/.c/linker flags (or none) from Harbour build"
msgstr "heredar todos los flags .prg/.c/linker (o ninguno) desde construcción de Harbour "
#: hbmk2.prg:7787 hbmk2.prg:11440
#, c-format
msgid "cdp=EN"
msgstr "cdp=PTISO"
#: hbmk2.prg:7946 hbmk2.prg:11637
#, c-format
msgid "Notes:"
@@ -971,21 +966,11 @@ msgstr "crear/actualizar archivo .po desde fuentes. Combinar con anterior archiv
msgid "clean (in incremental build mode)"
msgstr "compilación limpia (en modo incremental)"
#: hbmk2.prg:7791 hbmk2.prg:11444
#, c-format
msgid "nix=EN"
msgstr "nix=UTF8"
#: hbmk2.prg:7942 hbmk2.prg:11633
#, c-format
msgid "stop after creating the object files and accept raw C flags\\ncreate link/copy hbmk2 to hbcc for the same effect"
msgstr "para después de creación de archivos objeto y aceptar flags de puro C\\ncrear un link o copiar hbmk2 a hbcc resultará el mismo efecto"
#: hbmk2.prg:7791 hbmk2.prg:11444
#, c-format
msgid "wdo=EN"
msgstr "wdo=PT850"
#: hbmk2.prg:7808 hbmk2.prg:11462
#, c-format
msgid "Translation (%1$s): (add your name here)"

View File

@@ -10,6 +10,7 @@
-nulrdd
-mt
hbmk2.prg
hbmk2c.c
hbmk2.%{hb_lng}.po
-hbl=hbmk2.%{hb_lng}.hbl

View File

@@ -867,21 +867,6 @@ msgstr "kimeneti fájlnév"
msgid "show commands executed"
msgstr "mutassa a végrehajtott parancsokat"
#: hbmk2.prg:7786 hbmk2.prg:11440
#, c-format
msgid "cdp=EN"
msgstr "cdp=HUISO"
#: hbmk2.prg:7790 hbmk2.prg:11444
#, c-format
msgid "wdo=EN"
msgstr "wdo=HU852"
#: hbmk2.prg:7790 hbmk2.prg:11444
#, c-format
msgid "nix=EN"
msgstr "nix=UTF8"
#: hbmk2.prg:7824 hbmk2.prg:11479
#, c-format
msgid "Syntax:"

View File

@@ -12426,7 +12426,7 @@ STATIC PROCEDURE GetUILangCDP( /* @ */ cLNG, /* @ */ cCDP )
INIT PROCEDURE ClipInit()
/* hb_cdpSelect( "UTF8EX" ) */
hb_cdpSelect( "UTF8EX" )
RETURN
@@ -12443,21 +12443,410 @@ STATIC PROCEDURE SetUILang( hbmk )
ENDIF
/* Setup input CP of the translation */
IF hb_Version( HB_VERSION_UNIX_COMPAT ) /* NOTE: Intentionally doing runtime branching to include all translatable strings in translation files. */
hb_cdpSelect( "UTF8EX" )
ELSE
hb_cdpSelect( Upper( SubStr( I_( "cdp=EN" ), Len( "cdp=" ) + 1 ) ) )
hb_cdpSelect( "UTF8EX" )
/* Setup output CP, separate for Windows/DOS/OS2 and *nix systems */
tmp := Upper( SubStr( iif( hb_Version( HB_VERSION_UNIX_COMPAT ), I_( "nix=EN" ), I_( "wdo=EN" ) ), Len( "xxx=" ) + 1 ) )
IF tmp == "UTF8" .OR. tmp == "UTF-8"
hb_SetDispCP( "UTF8" )
ELSEIF ! Empty( tmp )
hb_SetDispCP( tmp )
/* Configure terminal and OS codepage */
hbmk_auto_cp_term()
hbmk_auto_cp_os()
RETURN
STATIC FUNCTION hbmk_auto_cp_term()
LOCAL cCP
LOCAL cLang
#if defined( __PLATFORM__WINDOWS )
cCP := __CPWinToCPStd( hbmk_wapi_GetOEMCP() )
cLang := hb_UserLang()
#elif defined( __PLATFORM__UNIX )
IF ! Empty( GetEnv( "LANG" ) )
__UnixParseLangCP( GetEnv( "LANG" ), @cCP, @cLang )
ELSE
__UnixParseLangCP( GetEnv( "LC_CTYPE" ), @cCP, @cLang )
ENDIF
#elif defined( __PLATFORM__DOS )
/* TODO */
#elif defined( __PLATFORM__OS2 )
/* TODO */
#endif
IF ! Empty( cCP := __CPStdToHarbour( cCP, cLang ) )
hb_SetTermCP( cCP )
ENDIF
RETURN cCP
STATIC FUNCTION hbmk_auto_cp_os()
LOCAL cCP
LOCAL cLang
#if defined( __PLATFORM__WINDOWS )
cCP := __CPWinToCPStd( hbmk_wapi_GetACP() )
cLang := hb_UserLang()
#elif defined( __PLATFORM__UNIX )
IF ! Empty( GetEnv( "LANG" ) )
__UnixParseLangCP( GetEnv( "LANG" ), @cCP, @cLang )
ELSE
__UnixParseLangCP( GetEnv( "LC_CTYPE" ), @cCP, @cLang )
ENDIF
#elif defined( __PLATFORM__DOS )
/* TODO */
#elif defined( __PLATFORM__OS2 )
/* TODO */
#endif
IF ! Empty( cCP := __CPStdToHarbour( cCP, cLang ) )
Set( _SET_OSCODEPAGE, cCP )
ENDIF
RETURN cCP
/* language[_territory][.codeset] */
/* [language[_territory][.codeset][@modifier]] */
/* TODO: handle "C"/"POSIX" values and values starting with "/" */
STATIC FUNCTION __UnixParseLangCP( cString, /* @ */ cCP, /* @ */ cLang )
LOCAL tmp
IF ( tmp := At( ".", cString ) ) > 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

View File

@@ -351,11 +351,6 @@ msgstr " hbmk2 [opções] [<script[s]>] <src[s][.prg|.c|.obj|.o|.rc|.res|.def|.
msgid "inherit .prg/.c/linker flags (or none) from Harbour build"
msgstr "herdar todos os flags .prg/.c/linker (ou nenhum) provindos do Harbour "
#: hbmk2.prg:7787 hbmk2.prg:11440
#, c-format
msgid "cdp=EN"
msgstr "cdp=PTISO"
#: hbmk2.prg:7946 hbmk2.prg:11637
#, c-format
msgid "Notes:"
@@ -971,21 +966,11 @@ msgstr "criar/atualizar arquivo .po à partir dos fontes. Se um arquivo .po com
msgid "clean (in incremental build mode)"
msgstr "compilação limpa (em modo de compilação incremental)"
#: hbmk2.prg:7791 hbmk2.prg:11444
#, c-format
msgid "nix=EN"
msgstr "nix=UTF8"
#: hbmk2.prg:7942 hbmk2.prg:11633
#, c-format
msgid "stop after creating the object files and accept raw C flags\\ncreate link/copy hbmk2 to hbcc for the same effect"
msgstr "interromper após criar os arquivos objetos e processa-los com o compilador C\\ncriar um link ou copiar o hbmk2 para hbcc resultará no mesmo efeito"
#: hbmk2.prg:7791 hbmk2.prg:11444
#, c-format
msgid "wdo=EN"
msgstr "wdo=PT850"
#: hbmk2.prg:7808 hbmk2.prg:11462
#, c-format
msgid "Translation (%1$s): (add your name here)"

View File

@@ -0,0 +1,69 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
* Windows API functions (winnls)
*
* Copyright 2009 Viktor Szakats (harbour syenar.net)
* www - http://harbour-project.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this software; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
*
* As a special exception, the Harbour Project gives permission for
* additional uses of the text contained in its release of Harbour.
*
* The exception is that, if you link the Harbour libraries with other
* files to produce an executable, this does not by itself cause the
* resulting executable to be covered by the GNU General Public License.
* Your use of that executable is in no way restricted on account of
* linking the Harbour library code into it.
*
* This exception does not however invalidate any other reasons why
* the executable file might be covered by the GNU General Public License.
*
* This exception applies only to the code released by the Harbour
* Project under the name Harbour. If you copy code from other
* Harbour Project or Free Software Foundation releases into a copy of
* Harbour, as the General Public License permits, the exception does
* not apply to the code that you add in this way. To avoid misleading
* anyone as to the status of such modified files, you must delete
* this exception notice from them.
*
* If you write modifications of your own for Harbour, it is your choice
* whether to permit this exception to apply to your modifications.
* If you do not wish that, delete this exception notice.
*
*/
#include "hbapi.h"
#if defined( HB_OS_WIN )
#include <windows.h>
HB_FUNC( HBMK_WAPI_GETACP )
{
hb_retnl( GetACP() );
}
HB_FUNC( HBMK_WAPI_GETOEMCP )
{
hb_retnl( GetOEMCP() );
}
#endif