From 66729e4ddfe8c7e84c12302d3926582d9d580eb2 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Fri, 9 Mar 2001 22:06:19 +0000 Subject: emx+gcc support. --- os2/README.os2 | 259 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ os2/os2.diff | 234 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 493 insertions(+) create mode 100644 os2/README.os2 create mode 100644 os2/os2.diff (limited to 'os2') 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 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 + #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 -- cgit v1.1