summaryrefslogtreecommitdiffstats
path: root/os2
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2001-03-09 22:06:19 +0000
committerBruno Haible <bruno@clisp.org>2001-03-09 22:06:19 +0000
commit66729e4ddfe8c7e84c12302d3926582d9d580eb2 (patch)
tree857da30d04521121974dd0596f175a42b85ef41d /os2
parent53b1b4f2c1a46c8c25e14aa780d0d3f040fe2926 (diff)
downloadexternal_gettext-66729e4ddfe8c7e84c12302d3926582d9d580eb2.zip
external_gettext-66729e4ddfe8c7e84c12302d3926582d9d580eb2.tar.gz
external_gettext-66729e4ddfe8c7e84c12302d3926582d9d580eb2.tar.bz2
emx+gcc support.
Diffstat (limited to 'os2')
-rw-r--r--os2/README.os2259
-rw-r--r--os2/os2.diff234
2 files changed, 493 insertions, 0 deletions
diff --git a/os2/README.os2 b/os2/README.os2
new file mode 100644
index 0000000..70f1ec8
--- /dev/null
+++ b/os2/README.os2
@@ -0,0 +1,259 @@
+/*-------------- GNU gettext version 0.10.36 ---------------------------*/
+/*-------------- ported to run with emx+gcc on OS/2 --------------------*/
+
+Jun SAWATAISHI <jsawa@attglobal.net> Sat, 24 Feb 2001 03:22:12 +0900
+
+
+
+
+Environment Variables
+====================
+
+ GNULOCALEDIR env. var. is not used !!
+
+ In your `config.sys'
+
+ set UNIXROOT=x: ; directory where you installed
+
+ If you executed "make prefix=x:/usr" and
+ "make prefix=x:/usr",
+ or
+ "configure --with-included-gettext --prefix=x:/usr" and
+ "make install",
+
+ this env. var. is not essential.
+
+
+ set LANG=YOUR_CHOICE ; always REQUIRED
+
+ e.g. de, pt_BR, ja_JP.SJIS
+
+ __Important notice__
+
+ If LANG env. var. is not exist,
+ program will always show English message, even
+ if LANGUAGE env. var. is properly set.
+
+
+ set LANGUAGE=xx ; optional, two letter for you country
+
+ Chinese `zh', Czech `cs', Danish `da', Dutch `nl', Esperanto `eo',
+ Finnish `fi', French `fr', Irish `ga', German `de', Greek `el',
+ Italian `it', Japanese `ja', Indonesian `in', Norwegian `no',
+ Polish `pl', Portuguese `pt', Russian `ru', Spanish `es', Swedish
+ `sv' and Turkish `tr'.
+
+ Replace xx by the two-letter ISO 639 code for your language.
+ Read Info manual of gettext.
+
+ LANGUAGE env. var. overrides LANG.
+ When LANG=deutsch and LANGUAGE=ja,
+ Japanese message will shown by programs.
+
+
+
+ Here is a partial copy of README file included in libiconv-1.3
+ (this is old, libiconv-1.6 has been released)
+
+> LIBICONV - character set conversion library
+>
+>This library provides an iconv() implementation, for use on systems which
+>don't have one, or whose implementation cannot convert from/to Unicode.
+>
+>It provides support for the encodings:
+>
+> European languages
+> ASCII, ISO-8859-{1,2,3,4,5,7,9,10,13,14,15,16},
+> KOI8-R, KOI8-U, KOI8-RU,
+> CP{1250,1251,1252,1253,1254,1257}, CP{850,866},
+> Mac{Roman,CentralEurope,Iceland,Croatian,Romania},
+> Mac{Cyrillic,Ukraine,Greek,Turkish},
+> Macintosh
+> Semitic languages
+> ISO-8859-{6,8}, CP{1255,1256}, Mac{Hebrew,Arabic}
+> Japanese
+> EUC-JP, SHIFT-JIS, CP932, ISO-2022-JP, ISO-2022-JP-2, ISO-2022-JP-1
+> Chinese
+> EUC-CN, HZ, GBK, EUC-TW, BIG5, CP950, ISO-2022-CN, ISO-2022-CN-EXT
+> Korean
+> EUC-KR, CP949, ISO-2022-KR
+> Armenian
+> ARMSCII-8
+> Georgian
+> Georgian-Academy, Georgian-PS
+> Thai
+> TIS-620, CP874, MacThai
+> Laotian
+> MuleLao-1, CP1133
+> Vietnamese
+> VISCII, TCVN, CP1258
+> Platform specifics
+> HP-ROMAN8, NEXTSTEP
+> Full Unicode
+> UTF-8
+> UCS-2, UCS-2BE, UCS-2LE
+> UCS-4, UCS-4BE, UCS-4LE
+> UTF-16, UTF-16BE, UTF-16LE
+> UTF-7
+> JAVA
+> Full Unicode, in terms of `uint16_t' or `uint32_t'
+> (with machine dependent endianness and alignment)
+> UCS-2-INTERNAL, UCS-4-INTERNAL
+>
+>It can convert from any of these encodings to any other, through Unicode
+>conversion. It has also some limited support for transliteration, i.e.
+>when a character cannot be represented in the target character set, it can
+>be approximated through one or several similarly looking characters.
+
+ How to Link Gettext with Other Softwares
+=========================================
+
+ - Be sure that gettext has been installed
+ e.g.
+ c:/usr/include/libintl.h
+ c:/usr/lib/libintl.{a,lib}
+ c:/usr/lib/charset.alias
+ c:/usr/dll/intl36f5.dll
+ c:/usr/share/locale/??/LC_MESSAGE/*.mo
+ c:/usr/share/locale/locale.alias
+ c:/usr/bin/gettext.exe
+ gettextize
+ msgcmp.exe
+ msgcomm.exe
+ msgfmt.exe
+ msgmerge.exe
+ msgunfmt.exe
+ xgettext.exe
+
+ - Be sure that sources are prepared for gettext
+
+ - If you do _not_ want to use UNIXROOT env. var
+
+ Programs main source should contain a line:
+ bindtextdomain (PACKAGE, LOCALEDIR);
+
+ Define LOCALEDIR as your directory to be installed
+
+ If you like to install "x:/foo",
+ > make prefix=x:/foo -- this makes LOCALEDIR
+ ="x:/foo/share/locale"
+ and
+ > make prefix=x:/foo install
+ or
+ > sh configure --with-included-gettext --prefix=x:/foo
+ > make install
+
+ Files will be intalled this way
+
+ x:/foo/bin/*.exe
+ x:/foo/share/locale/??/LC_MESSAGE/*.mo
+ x:/foo/lib/charset.alias
+
+ __Important notice__
+
+ When UNIXROOT env. var. exists, search path may vary
+
+ e.g. UNIXROOT=y:
+ LOCALEDIR is assumed as "y:/usr/share/locale"
+ charset.alias is assumed to be in "y:/usr/lib"
+
+
+ When UNIXROOT env. var. is not set or is empty and HOME env.
+ var. is "x:/foo", `x:/usr/share/locale' is assumed as LOCALEDIR.
+
+
+
+ - If you want to FIX LOCALEDIR in the way of XFree86
+
+ __Important notice__
+
+ If compile time LOCALEDIR definition is equal to
+ "/XFree86/lib/locale/X11"
+ or
+ "__XOS2RedirRoot(/XFree86/lib/X11/locale)"
+ programs will _not_ read UNIXROOT env. var.
+
+ This implementation is intented to keep upper compatibility with
+ conventional way of XFree86 OS/2 programs (gtk related ones).
+
+
+ Here I assume X11ROOT env. var. is "n:"
+
+ Method-1:
+ > sh configure --with-included-gettext \ (line is not break)
+ --prefix=n:/XFree86 --datadir=n:/XFree86/lib/X11
+ > make install
+
+
+ Method-2:
+
+ > make prefix=n:/XFree86 datadir=n:/XFree86/lib/X11
+ > make install prefix=n:/XFree86 datadir=n:/XFree86/lib/X11
+
+ Method-3: require modification of source codes
+ Change
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ to
+ bindtextdomain (PACKAGE, __XOS2RedirRoot("/XFree86/lib/X11/locale"));
+ or
+ bindtextdomain (PACKAGE,"/XFree86/lib/X11/locale";
+
+ > make (prefix is meaningless for LOCALEDIR)
+ > make install prefix=n:/XFree86 datadir=n:/XFree86/lib/X11
+
+
+ Method-1, 2, 3 will intall files this way
+
+ n:/XFree86/bin/*.exe
+ n:/XFree86/lib/X11/locale/??/LC_MESSAGE/*.mo
+ n:/XFree86/lib/charset.alias
+
+ __Important notice__
+
+ If UNIXROOT is set, search path for `charset.alias' will change
+
+ e.g. UNIXROOT=e:
+ charset.alias is assumed to be in "e:/usr/lib"
+ (LOCALEDIR is ommited by programs)
+
+ You shoud copy `n:/XFree86/lib/charset.alias' in `e:/usr/lib'
+
+ When UNIXROOT env. var. is not set or is empty and HOME env.
+ var. is "x:/foo", `x:/usr/lib/charset.alias' will be searched for.
+
+
+ - Summary
+
+ compile time env. var. LOCALEDIR for running
+ LOCALEDIR UNIXROOT HOME programs
+========================================================================
+ __XOS2RedirRoot(XLOCALEDIR) x: y:/foo __XOS2RedirRoot(XLOCALEDIR)
+ __XOS2RedirRoot(XLOCALEDIR) x: - __XOS2RedirRoot(XLOCALEDIR)
+ __XOS2RedirRoot(XLOCALEDIR) - y:/foo __XOS2RedirRoot(XLOCALEDIR)
+ __XOS2RedirRoot(XLOCALEDIR) - - __XOS2RedirRoot(XLOCALEDIR)
+ XLOCALEDIR x: y:/foo __XOS2RedirRoot(XLOCALEDIR)
+ XLOCALEDIR x: - __XOS2RedirRoot(XLOCALEDIR)
+ XLOCALEDIR - y:/foo __XOS2RedirRoot(XLOCALEDIR)
+ XLOCALEDIR - - __XOS2RedirRoot(XLOCALEDIR)
+ c:/DIR/share/locale x: y:/foo x:/usr/share/locale
+ c:/DIR/share/locale x: - x:/usr/share/locale
+ c:/DIR/share/locale - y:/foo y:/usr/share/locale
+ c:/DIR/share/locale - - c:/DIR/share/locale
+ /DIR/share/locale x: y:/foo x:/usr/share/locale
+ /DIR/share/locale x: - x:/usr/share/locale
+ /DIR/share/locale - y:/foo y:/usr/share/locale
+ /DIR/share/locale - - /DIR/share/locale
+
+
+ Note: XLOCALEDIR = "/XFree86/lib/X11/locale"
+
+
+
+
+Modifications on gettext utilities
+==================================
+
+ JAPANESE shift JIS code is accepted by the programs, when
+ "charset=sjis" in PO file
+
+#EOF
diff --git a/os2/os2.diff b/os2/os2.diff
new file mode 100644
index 0000000..c83951f
--- /dev/null
+++ b/os2/os2.diff
@@ -0,0 +1,234 @@
+diff -PurwbB -X x-os2unix.dat gettext-2001-02-05/intl/bindtextdom.c gettext-2001-02-05-os2/intl/bindtextdom.c
+*** gettext-2001-02-05/intl/bindtextdom.c Mon Jan 22 21:48:00 2001
+--- gettext-2001-02-05-os2/intl/bindtextdom.c Thu Mar 1 02:40:40 2001
+***************
+*** 56,62 ****
+--- 56,66 ----
+ /* @@ end of prolog @@ */
+
+ /* Contains the default location of the message catalogs. */
++ #ifndef __EMX__
+ extern const char _nl_default_dirname[];
++ #else
++ extern char *_nl_default_dirname;
++ #endif
+
+ /* List with bindings of specific domains. */
+ extern struct binding *_nl_domain_bindings;
+***************
+*** 99,104 ****
+--- 103,111 ----
+ {
+ struct binding *binding;
+ int modified;
++ #ifdef __EMX__
++ UnixRoot(_nl_default_dirname, LOCALEDIR, EMX_LOCALEDIR);
++ #endif /* __EMX__ */
+
+ /* Some sanity checks. */
+ if (domainname == NULL || domainname[0] == '\0')
+***************
+*** 127,133 ****
+ break;
+ }
+ }
+!
+ if (binding != NULL)
+ {
+ if (dirnamep)
+--- 134,182 ----
+ break;
+ }
+ }
+! #ifdef __EMX__
+! if (_fngetdrive(*dirnamep) == 0) /* drive name is absent */
+! {
+! if (strlen(*dirnamep) >= strlen(OLD_EMX_XLOCALEDIR))
+! {
+! if (strnicmp(*dirnamep, OLD_EMX_XLOCALEDIR,
+! strlen(OLD_EMX_XLOCALEDIR)) != 0)
+! {
+! UnixRoot(*dirnamep, LOCALEDIR, EMX_LOCALEDIR);
+! }
+! else
+! {
+! char *s, *x11root = getenv("X11ROOT");
+! if (x11root)
+! {
+! s = (char *)malloc(strlen(OLD_EMX_XLOCALEDIR)
+! + strlen(x11root) +1 );
+! sprintf(s, "%s%s", x11root, OLD_EMX_XLOCALEDIR);
+! *dirnamep = s;
+! }
+! }
+! }
+! else
+! {
+! UnixRoot(*dirnamep, LOCALEDIR, EMX_LOCALEDIR);
+! }
+! }
+! else
+! {
+! size_t l = strlen(OLD_EMX_XLOCALEDIR);
+! if ( strlen(*dirnamep) >= (l - 2))
+! {
+! char dir[_MAX_DIR];
+! _splitpath(*dirnamep, NULL, dir, NULL, NULL);
+! if (strnicmp(dir,OLD_EMX_XLOCALEDIR, l - 6) != 0)
+! UnixRoot(*dirnamep, *dirnamep, EMX_LOCALEDIR);
+! }
+! else
+! {
+! UnixRoot(*dirnamep, *dirnamep, EMX_LOCALEDIR);
+! }
+! }
+! #endif /* __EMX__ */
+ if (binding != NULL)
+ {
+ if (dirnamep)
+diff -PurwbB -X x-os2unix.dat gettext-2001-02-05/intl/dcigettext.c gettext-2001-02-05-os2/intl/dcigettext.c
+*** gettext-2001-02-05/intl/dcigettext.c Wed Jan 24 22:51:14 2001
+--- gettext-2001-02-05-os2/intl/dcigettext.c Thu Mar 1 02:40:40 2001
+***************
+*** 256,263 ****
+ const char *_nl_current_default_domain = _nl_default_default_domain;
+
+ /* Contains the default location of the message catalogs. */
+ const char _nl_default_dirname[] = LOCALEDIR;
+!
+ /* List with bindings of specific domains created by bindtextdomain()
+ calls. */
+ struct binding *_nl_domain_bindings;
+--- 256,266 ----
+ const char *_nl_current_default_domain = _nl_default_default_domain;
+
+ /* Contains the default location of the message catalogs. */
++ #ifndef __EMX__
+ const char _nl_default_dirname[] = LOCALEDIR;
+! #else
+! char *_nl_default_dirname = NULL;
+! #endif /* __EMX__ */
+ /* List with bindings of specific domains created by bindtextdomain()
+ calls. */
+ struct binding *_nl_domain_bindings;
+***************
+*** 387,392 ****
+--- 390,398 ----
+ size_t msgid_len;
+ #endif
+ size_t domainname_len;
++ #ifdef __EMX__
++ UnixRoot(_nl_default_dirname, LOCALEDIR, EMX_LOCALEDIR);
++ #endif /* __EMX__ */
+
+ /* If no real MSGID is given return NULL. */
+ if (msgid1 == NULL)
+***************
+*** 450,455 ****
+--- 456,468 ----
+ if (binding == NULL)
+ dirname = (char *) _nl_default_dirname;
+ else if (binding->dirname[0] == '/')
++ #ifdef __EMX__
++ {
++ UnixRoot(binding->dirname, LOCALEDIR, EMX_LOCALEDIR);
++ dirname = binding->dirname;
++ }
++ else if (_fnisabs(binding->dirname))
++ #endif /* __EMX__ */
+ dirname = binding->dirname;
+ else
+ {
+diff -PurwbB -X x-os2unix.dat gettext-2001-02-05/intl/libgnuintl.h gettext-2001-02-05-os2/intl/libgnuintl.h
+*** gettext-2001-02-05/intl/libgnuintl.h Tue Feb 6 21:58:40 2001
+--- gettext-2001-02-05-os2/intl/libgnuintl.h Thu Mar 1 02:40:40 2001
+***************
+*** 38,43 ****
+--- 38,53 ----
+ # define PARAMS(args) ()
+ # endif
+ #endif
++ #ifdef __EMX__
++ #define EMX_LOCALEDIR "/usr/share/locale"
++ #define OLD_EMX_XLOCALEDIR "/XFree86/lib/X11/locale"
++ #define UnixRoot(a, b, c) ({ char *s = NULL, *u = getenv("UNIXROOT"), \
++ *h = getenv("HOME"); s = (char *)malloc(strlen(c) + 3 ); \
++ if (u && u[1] == ':') strncpy(s, u, 2); \
++ else if (a && a[0]=='/' && h && h[1]==':') strncpy(s, h, 2); \
++ if ( s[1] == ':') { strcat(s, c); (a) = s; } else { \
++ strcpy(s, b); a = s;}})
++ #endif /* __EMX__ */
+
+ #ifdef __cplusplus
+ extern "C" {
+diff -PurwbB -X x-os2unix.dat gettext-2001-02-05/intl/localcharset.c gettext-2001-02-05-os2/intl/localcharset.c
+*** gettext-2001-02-05/intl/localcharset.c Mon Jan 15 23:54:02 2001
+--- gettext-2001-02-05-os2/intl/localcharset.c Thu Mar 1 02:40:40 2001
+***************
+*** 55,60 ****
+--- 55,64 ----
+ # include <windows.h>
+ #endif
+
++ #ifdef __EMX__
++ #include "libgnuintl.h"
++ #endif /* __EMX__*/
++
+ #ifndef DIRECTORY_SEPARATOR
+ # define DIRECTORY_SEPARATOR '/'
+ #endif
+***************
+*** 88,96 ****
+--- 92,106 ----
+ {
+ #ifndef WIN32
+ FILE *fp;
++ #ifndef __EMX__
+ const char *dir = LIBDIR;
++ #endif /* __EMX__ */
+ const char *base = "charset.alias";
+ char *file_name;
++ #ifdef __EMX__
++ char *dir = NULL;
++ UnixRoot(dir, LIBDIR,"/usr/lib");
++ #endif /* __EMX__ */
+
+ /* Concatenate dir and base into freshly allocated file_name. */
+ {
+diff -PurwbB -X x-os2unix.dat gettext-2001-02-05/intl/localealias.c gettext-2001-02-05-os2/intl/localealias.c
+*** gettext-2001-02-05/intl/localealias.c Mon Jan 22 21:48:00 2001
+--- gettext-2001-02-05-os2/intl/localealias.c Thu Mar 1 02:40:40 2001
+***************
+*** 98,103 ****
+--- 98,106 ----
+ # undef feof
+ # define feof(s) feof_unlocked (s)
+ #endif
++ #ifdef __EMX__
++ #include "libgnuintl.h"
++ #endif /* __EMX__*/
+
+
+ struct alias_map
+***************
+*** 127,137 ****
+--- 130,148 ----
+ _nl_expand_alias (name)
+ const char *name;
+ {
++ #ifndef __EMX__
+ static const char *locale_alias_path = LOCALE_ALIAS_PATH;
++ #else
++ /* static const char *locale_alias_path = NULL; */
++ char *locale_alias_path = NULL;
++ #endif
+ struct alias_map *retval;
+ const char *result = NULL;
+ size_t added;
+
++ #ifdef __EMX__
++ UnixRoot(locale_alias_path, LOCALE_ALIAS_PATH, EMX_LOCALEDIR);
++ #endif /* __EMX__*/
+ #ifdef _LIBC
+ __libc_lock_lock (lock);
+ #endif