summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Gavin <pete@gentoo.org>2001-04-15 18:57:14 +0000
committerPeter Gavin <pete@gentoo.org>2001-04-15 18:57:14 +0000
commit77babd7d9bdfc2a0bf8974604f1458cae049863c (patch)
tree776921f43e58da1dbf36c8c0b559e87137ece577 /gnome-extra
parent*** empty log message *** (diff)
downloadgentoo-2-77babd7d9bdfc2a0bf8974604f1458cae049863c.tar.gz
gentoo-2-77babd7d9bdfc2a0bf8974604f1458cae049863c.tar.bz2
gentoo-2-77babd7d9bdfc2a0bf8974604f1458cae049863c.zip
more gnome updates
Diffstat (limited to 'gnome-extra')
-rw-r--r--gnome-extra/gtkhtml/files/digest-gtkhtml-0.8.31
-rw-r--r--gnome-extra/gtkhtml/files/gtkhtml-0.8.3-gentoo.diff5092
-rw-r--r--gnome-extra/gtkhtml/gtkhtml-0.8.3.ebuild74
3 files changed, 5167 insertions, 0 deletions
diff --git a/gnome-extra/gtkhtml/files/digest-gtkhtml-0.8.3 b/gnome-extra/gtkhtml/files/digest-gtkhtml-0.8.3
new file mode 100644
index 000000000000..8cd6570b4e8c
--- /dev/null
+++ b/gnome-extra/gtkhtml/files/digest-gtkhtml-0.8.3
@@ -0,0 +1 @@
+MD5 64514460001885497198b7e389c33077 gtkhtml-0.8.3.tar.gz
diff --git a/gnome-extra/gtkhtml/files/gtkhtml-0.8.3-gentoo.diff b/gnome-extra/gtkhtml/files/gtkhtml-0.8.3-gentoo.diff
new file mode 100644
index 000000000000..1094dcf6c5ce
--- /dev/null
+++ b/gnome-extra/gtkhtml/files/gtkhtml-0.8.3-gentoo.diff
@@ -0,0 +1,5092 @@
+diff -urP gtkhtml-0.8.3.orig/intl/ChangeLog gtkhtml-0.8.3/intl/ChangeLog
+--- gtkhtml-0.8.3.orig/intl/ChangeLog Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/ChangeLog Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,1086 @@
++1998-04-29 Ulrich Drepper <drepper@cygnus.com>
++
++ * intl/localealias.c (read_alias_file): Use unsigned char for
++ local variables. Remove unused variable tp.
++ * intl/l10nflist.c (_nl_normalize_codeset): Use unsigned char *
++ for type of codeset. For loosing Solaris systems.
++ * intl/loadinfo.h: Adapt prototype of _nl_normalize_codeset.
++ * intl/bindtextdom.c (BINDTEXTDOMAIN): Don't define local variable
++ len if not needed.
++ Patches by Jim Meyering.
++
++1998-04-28 Ulrich Drepper <drepper@cygnus.com>
++
++ * loadmsgcat.c (_nl_load_domain): Don't assign the element use_mmap if
++ mmap is not supported.
++
++ * hash-string.h: Don't include <values.h>.
++
++1998-04-27 Ulrich Drepper <drepper@cygnus.com>
++
++ * textdomain.c: Use strdup is available.
++
++ * localealias.c: Define HAVE_MEMPCPY so that we can use this
++ function. Define and use semapahores to protect modfication of
++ global objects when compiling for glibc. Add code to allow
++ freeing alias table.
++
++ * l10nflist.c: Don't assume stpcpy not being a macro.
++
++ * gettextP.h: Define internal_function macri if not already done.
++ Use glibc byte-swap macros instead of defining SWAP when compiled
++ for glibc.
++ (struct loaded_domain): Add elements to allow unloading.
++
++ * Makefile.in (distclean): Don't remove libintl.h here.
++
++ * bindtextdomain.c: Carry over changes from glibc. Use strdup if
++ available.
++
++ * dcgettext.c: Don't assume stpcpy not being a macro. Mark internal
++ functions. Add memory freeing code for glibc.
++
++ * dgettext.c: Update copyright.
++
++ * explodename.c: Include stdlib.h and string.h only if they exist.
++ Use strings.h eventually.
++
++ * finddomain.c: Mark internal functions. Use strdup if available.
++ Add memory freeing code for glibc.
++
++1997-10-10 20:00 Ulrich Drepper <drepper@cygnus.com>
++
++ * libgettext.h: Fix dummy textdomain and bindtextdomain macros.
++ They should return reasonable values.
++ Reported by Tom Tromey <tromey@cygnus.com>.
++
++1997-09-16 03:33 Ulrich Drepper <drepper@cygnus.com>
++
++ * libgettext.h: Define PARAMS also to `args' if __cplusplus is defined.
++ * intlh.inst.in: Likewise.
++ Reported by Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr>.
++
++ * libintl.glibc: Update from current glibc version.
++
++1997-09-06 02:10 Ulrich Drepper <drepper@cygnus.com>
++
++ * intlh.inst.in: Reformat copyright.
++
++1997-08-19 15:22 Ulrich Drepper <drepper@cygnus.com>
++
++ * dcgettext.c (DCGETTEXT): Remove wrong comment.
++
++1997-08-16 00:13 Ulrich Drepper <drepper@cygnus.com>
++
++ * Makefile.in (install-data): Don't change directory to install.
++
++1997-08-01 14:30 Ulrich Drepper <drepper@cygnus.com>
++
++ * cat-compat.c: Fix copyright.
++
++ * localealias.c: Don't define strchr unless !HAVE_STRCHR.
++
++ * loadmsgcat.c: Update copyright. Fix typos.
++
++ * l10nflist.c: Don't define strchr unless !HAVE_STRCHR.
++ (_nl_make_l10nflist): Handle sponsor and revision correctly.
++
++ * gettext.c: Update copyright.
++ * gettext.h: Likewise.
++ * hash-string.h: Likewise.
++
++ * finddomain.c: Remoave dead code. Define strchr only if
++ !HAVE_STRCHR.
++
++ * explodename.c: Include <sys/types.h>.
++
++ * explodename.c: Reformat copyright text.
++ (_nl_explode_name): Fix typo.
++
++ * dcgettext.c: Define and use __set_errno.
++ (guess_category_value): Don't use setlocale if HAVE_LC_MESSAGES is
++ not defined.
++
++ * bindtextdom.c: Pretty printing.
++
++1997-05-01 02:25 Ulrich Drepper <drepper@cygnus.com>
++
++ * dcgettext.c (guess_category_value): Don't depend on
++ HAVE_LC_MESSAGES. We don't need the macro here.
++ Patch by Bruno Haible <haible@ilog.fr>.
++
++ * cat-compat.c (textdomain): DoN't refer to HAVE_SETLOCALE_NULL
++ macro. Instead use HAVE_LOCALE_NULL and define it when using
++ glibc, as in dcgettext.c.
++ Patch by Bruno Haible <haible@ilog.fr>.
++
++ * Makefile.in (CPPFLAGS): New variable. Reported by Franc,ois
++ Pinard.
++
++Mon Mar 10 06:51:17 1997 Ulrich Drepper <drepper@cygnus.com>
++
++ * Makefile.in: Implement handling of libtool.
++
++ * gettextP.h: Change data structures for use of generic lowlevel
++ i18n file handling.
++
++Wed Dec 4 20:21:18 1996 Ulrich Drepper <drepper@cygnus.com>
++
++ * textdomain.c: Put parentheses around arguments of memcpy macro
++ definition.
++ * localealias.c: Likewise.
++ * l10nflist.c: Likewise.
++ * finddomain.c: Likewise.
++ * bindtextdom.c: Likewise.
++ Reported by Thomas Esken.
++
++Mon Nov 25 22:57:51 1996 Ulrich Drepper <drepper@cygnus.com>
++
++ * textdomain.c: Move definition of `memcpy` macro to right
++ position.
++
++Fri Nov 22 04:01:58 1996 Ulrich Drepper <drepper@cygnus.com>
++
++ * finddomain.c [!HAVE_STRING_H && !_LIBC]: Define memcpy using
++ bcopy if not already defined. Reported by Thomas Esken.
++ * bindtextdom.c: Likewise.
++ * l10nflist.c: Likewise.
++ * localealias.c: Likewise.
++ * textdomain.c: Likewise.
++
++Tue Oct 29 11:10:27 1996 Ulrich Drepper <drepper@cygnus.com>
++
++ * Makefile.in (libdir): Change to use exec_prefix instead of
++ prefix. Reported by Knut-HåvardAksnes <etokna@eto.ericsson.se>.
++
++Sat Aug 31 03:07:09 1996 Ulrich Drepper <drepper@cygnus.com>
++
++ * l10nflist.c (_nl_normalize_codeset): We convert to lower case,
++ so don't prepend uppercase `ISO' for only numeric arg.
++
++Fri Jul 19 00:15:46 1996 Ulrich Drepper <drepper@cygnus.com>
++
++ * l10nflist.c: Move inclusion of argz.h, ctype.h, stdlib.h after
++ definition of _GNU_SOURCE. Patch by Roland McGrath.
++
++ * Makefile.in (uninstall): Fix another bug with `for' loop and
++ empty arguments. Patch by Jim Meyering. Correct name os
++ uninstalled files: no intl- prefix anymore.
++
++ * Makefile.in (install-data): Again work around shells which
++ cannot handle mpty for list. Reported by Jim Meyering.
++
++Sat Jul 13 18:11:35 1996 Ulrich Drepper <drepper@cygnus.com>
++
++ * Makefile.in (install): Split goal. Now depend on install-exec
++ and install-data.
++ (install-exec, install-data): New goals. Created from former
++ install goal.
++ Reported by Karl Berry.
++
++Sat Jun 22 04:58:14 1996 Ulrich Drepper <drepper@cygnus.com>
++
++ * Makefile.in (MKINSTALLDIRS): New variable. Path to
++ mkinstalldirs script.
++ (install): use MKINSTALLDIRS variable or if the script is not present
++ try to find it in the $top_scrdir).
++
++Wed Jun 19 02:56:56 1996 Ulrich Drepper <drepper@cygnus.com>
++
++ * l10nflist.c: Linux libc *partly* includes the argz_* functions.
++ Grr. Work around by renaming the static version and use macros
++ for renaming.
++
++Tue Jun 18 20:11:17 1996 Ulrich Drepper <drepper@cygnus.com>
++
++ * l10nflist.c: Correct presence test macros of __argz_* functions.
++
++ * l10nflist.c: Include <argz.h> based on test of it instead when
++ __argz_* functions are available.
++ Reported by Andreas Schwab.
++
++Thu Jun 13 15:17:44 1996 Ulrich Drepper <drepper@cygnus.com>
++
++ * explodename.c, l10nflist.c: Define NULL for dumb systems.
++
++Tue Jun 11 17:05:13 1996 Ulrich Drepper <drepper@cygnus.com>
++
++ * intlh.inst.in, libgettext.h (dcgettext): Rename local variable
++ result to __result to prevent name clash.
++
++ * l10nflist.c, localealias.c, dcgettext.c: Define _GNU_SOURCE to
++ get prototype for stpcpy and strcasecmp.
++
++ * intlh.inst.in, libgettext.h: Move declaration of
++ `_nl_msg_cat_cntr' outside __extension__ block to prevent warning
++ from gcc's -Wnested-extern option.
++
++Fri Jun 7 01:58:00 1996 Ulrich Drepper <drepper@cygnus.com>
++
++ * Makefile.in (install): Remove comment.
++
++Thu Jun 6 17:28:17 1996 Ulrich Drepper <drepper@cygnus.com>
++
++ * Makefile.in (install): Work around for another Buglix stupidity.
++ Always use an `else' close for `if's. Reported by Nelson Beebe.
++
++ * Makefile.in (intlh.inst): Correct typo in phony rule.
++ Reported by Nelson Beebe.
++
++Thu Jun 6 01:49:52 1996 Ulrich Drepper <drepper@cygnus.com>
++
++ * dcgettext.c (read_alias_file): Rename variable alloca_list to
++ block_list as the macro calls assume.
++ Patch by Eric Backus.
++
++ * localealias.c [!HAVE_ALLOCA]: Define alloca as macro using
++ malloc.
++ (read_alias_file): Rename varriabe alloca_list to block_list as the
++ macro calls assume.
++ Patch by Eric Backus.
++
++ * l10nflist.c: Correct conditional for <argz.h> inclusion.
++ Reported by Roland McGrath.
++
++ * Makefile.in (all): Depend on all-@USE_INCLUDED_LIBINTL@, not
++ all-@USE_NLS@.
++
++ * Makefile.in (install): intlh.inst comes from local dir, not
++ $(srcdir).
++
++ * Makefile.in (intlh.inst): Special handling of this goal. If
++ used in gettext, this is really a rul to construct this file. If
++ used in any other package it is defined as a .PHONY rule with
++ empty body.
++
++ * finddomain.c: Extract locale file information handling into
++ l10nfile.c. Rename local stpcpy__ function to stpcpy.
++
++ * dcgettext.c (stpcpy): Add local definition.
++
++ * l10nflist.c: Solve some portability problems. Patches partly by
++ Thomas Esken. Add local definition of stpcpy.
++
++Tue Jun 4 02:47:49 1996 Ulrich Drepper <drepper@cygnus.com>
++
++ * intlh.inst.in: Don't depend including <locale.h> on
++ HAVE_LOCALE_H. Instead configure must rewrite this fiile
++ depending on the result of the configure run.
++
++ * Makefile.in (install): libintl.inst is now called intlh.inst.
++ Add rules for updating intlh.inst from intlh.inst.in.
++
++ * libintl.inst: Renamed to intlh.inst.in.
++
++ * localealias.c, dcgettext.c [__GNUC__]: Define HAVE_ALLOCA to 1
++ because gcc has __buitlin_alloca.
++ Reported by Roland McGrath.
++
++Mon Jun 3 00:32:16 1996 Ulrich Drepper <drepper@cygnus.com>
++
++ * Makefile.in (installcheck): New goal to fulfill needs of
++ automake's distcheck.
++
++ * Makefile.in (install): Reorder commands so that VERSION is
++ found.
++
++ * Makefile.in (gettextsrcdir): Now use subdirectory intl/ in
++ @datadir@/gettext.
++ (COMSRCS): Add l10nfile.c.
++ (OBJECTS): Add l10nfile.o.
++ (DISTFILES): Rename to DISTFILE.normal. Remove $(DISTFILES.common).
++ (DISTFILE.gettext): Remove $(DISTFILES.common).
++ (all-gettext): Remove goal.
++ (install): If $(PACKAGE) = gettext install, otherwose do nothing. No
++ package but gettext itself should install libintl.h + headers.
++ (dist): Extend goal to work for gettext, too.
++ (dist-gettext): Remove goal.
++
++ * dcgettext.c [!HAVE_ALLOCA]: Define macro alloca by using malloc.
++
++Sun Jun 2 17:33:06 1996 Ulrich Drepper <drepper@cygnus.com>
++
++ * loadmsgcat.c (_nl_load_domain): Parameter is now comes from
++ find_l10nfile.
++
++Sat Jun 1 02:23:03 1996 Ulrich Drepper <drepper@cygnus.com>
++
++ * l10nflist.c (__argz_next): Add definition.
++
++ * dcgettext.c [!HAVE_ALLOCA]: Add code for handling missing alloca
++ code. Use new l10nfile handling.
++
++ * localealias.c [!HAVE_ALLOCA]: Add code for handling missing
++ alloca code.
++
++ * l10nflist.c: Initial revision.
++
++Tue Apr 2 18:51:18 1996 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (all-gettext): New goal. Same as all-yes.
++
++Thu Mar 28 23:01:22 1996 Karl Eichwalder <ke@ke.central.de>
++
++ * Makefile.in (gettextsrcdir): Define using @datadir@.
++
++Tue Mar 26 12:39:14 1996 Ulrich Drepper <drepper@myware>
++
++ * finddomain.c: Include <ctype.h>. Reported by Roland McGrath.
++
++Sat Mar 23 02:00:35 1996 Ulrich Drepper <drepper@myware>
++
++ * finddomain.c (stpcpy): Rename to stpcpy__ to prevent clashing
++ with external declaration.
++
++Sat Mar 2 00:47:09 1996 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (all-no): Rename from all_no.
++
++Sat Feb 17 00:25:59 1996 Ulrich Drepper <drepper@myware>
++
++ * gettextP.h [loaded_domain]: Array `successor' must now contain up
++ to 63 elements (because of codeset name normalization).
++
++ * finddomain.c: Implement codeset name normalization.
++
++Thu Feb 15 04:39:09 1996 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (all): Define to `all-@USE_NLS@'.
++ (all-yes, all_no): New goals. `all-no' is noop, `all-yes'
++ is former all.
++
++Mon Jan 15 21:46:01 1996 Howard Gayle <howard@hal.com>
++
++ * localealias.c (alias_compare): Increment string pointers in loop
++ of strcasecmp replacement.
++
++Fri Dec 29 21:16:34 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (install-src): Who commented this goal out ? :-)
++
++Fri Dec 29 15:08:16 1995 Ulrich Drepper <drepper@myware>
++
++ * dcgettext.c (DCGETTEXT): Save `errno'. Failing system calls
++ should not effect it because a missing catalog is no error.
++ Reported by Harald K<o:>nig <koenig@tat.physik.uni-tuebingen.de>.
++
++Tue Dec 19 22:09:13 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (Makefile): Explicitly use $(SHELL) for running
++ shell scripts.
++
++Fri Dec 15 17:34:59 1995 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
++
++ * Makefile.in (install-src): Only install library and header when
++ we use the own implementation. Don't do it when using the
++ system's gettext or catgets functions.
++
++ * dcgettext.c (find_msg): Must not swap domain->hash_size here.
++
++Sat Dec 9 16:24:37 1995 Ulrich Drepper <drepper@myware>
++
++ * localealias.c, libintl.inst, libgettext.h, hash-string.h,
++ gettextP.h, finddomain.c, dcgettext.c, cat-compat.c:
++ Use PARAMS instead of __P. Suggested by Roland McGrath.
++
++Tue Dec 5 11:39:14 1995 Larry Schwimmer <rosebud@cyclone.stanford.edu>
++
++ * libgettext.h: Use `#if !defined (_LIBINTL_H)' instead of `#if
++ !_LIBINTL_H' because Solaris defines _LIBINTL_H as empty.
++
++Mon Dec 4 15:42:07 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (install-src):
++ Install libintl.inst instead of libintl.h.install.
++
++Sat Dec 2 22:51:38 1995 Marcus Daniels <marcus@sysc.pdx.edu>
++
++ * cat-compat.c (textdomain):
++ Reverse order in which files are tried you load. First
++ try local file, when this failed absolute path.
++
++Wed Nov 29 02:03:53 1995 Nelson H. F. Beebe <beebe@math.utah.edu>
++
++ * cat-compat.c (bindtextdomain): Add missing { }.
++
++Sun Nov 26 18:21:41 1995 Ulrich Drepper <drepper@myware>
++
++ * libintl.inst: Add missing __P definition. Reported by Nelson Beebe.
++
++ * Makefile.in:
++ Add dummy `all' and `dvi' goals. Reported by Tom Tromey.
++
++Sat Nov 25 16:12:01 1995 Franc,ois Pinard <pinard@iro.umontreal.ca>
++
++ * hash-string.h: Capitalize arguments of macros.
++
++Sat Nov 25 12:01:36 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (DISTFILES): Prevent files names longer than 13
++ characters. libintl.h.glibc->libintl.glibc,
++ libintl.h.install->libintl.inst. Reported by Joshua R. Poulson.
++
++Sat Nov 25 11:31:12 1995 Eric Backus <ericb@lsid.hp.com>
++
++ * dcgettext.c: Fix bug in preprocessor conditionals.
++
++Sat Nov 25 02:35:27 1995 Nelson H. F. Beebe <beebe@math.utah.edu>
++
++ * libgettext.h: Solaris cc does not understand
++ #if !SYMBOL1 && !SYMBOL2. Sad but true.
++
++Thu Nov 23 16:22:14 1995 Ulrich Drepper <drepper@myware>
++
++ * hash-string.h (hash_string):
++ Fix for machine with >32 bit `unsigned long's.
++
++ * dcgettext.c (DCGETTEXT):
++ Fix horrible bug in loop for alternative translation.
++
++Thu Nov 23 01:45:29 1995 Ulrich Drepper <drepper@myware>
++
++ * po2tbl.sed.in, linux-msg.sed, xopen-msg.sed:
++ Some further simplifications in message number generation.
++
++Mon Nov 20 21:08:43 1995 Ulrich Drepper <drepper@myware>
++
++ * libintl.h.glibc: Use __const instead of const in prototypes.
++
++ * Makefile.in (install-src):
++ Install libintl.h.install instead of libintl.h. This
++ is a stripped-down version. Suggested by Peter Miller.
++
++ * libintl.h.install, libintl.h.glibc: Initial revision.
++
++ * localealias.c (_nl_expand_alias, read_alias_file):
++ Protect prototypes in type casts by __P.
++
++Tue Nov 14 16:43:58 1995 Ulrich Drepper <drepper@myware>
++
++ * hash-string.h: Correct prototype for hash_string.
++
++Sun Nov 12 12:42:30 1995 Ulrich Drepper <drepper@myware>
++
++ * hash-string.h (hash_string): Add prototype.
++
++ * gettextP.h: Fix copyright.
++ (SWAP): Add prototype.
++
++Wed Nov 8 22:56:33 1995 Ulrich Drepper <drepper@myware>
++
++ * localealias.c (read_alias_file): Forgot sizeof.
++ Avoid calling *printf function. This introduces a big overhead.
++ Patch by Roland McGrath.
++
++Tue Nov 7 14:21:08 1995 Ulrich Drepper <drepper@myware>
++
++ * finddomain.c, cat-compat.c: Wrong indentation in #if for stpcpy.
++
++ * finddomain.c (stpcpy):
++ Define substitution function local. The macro was to flaky.
++
++ * cat-compat.c: Fix typo.
++
++ * xopen-msg.sed, linux-msg.sed:
++ While bringing message number to right place only accept digits.
++
++ * linux-msg.sed, xopen-msg.sed: Now that the counter does not have
++ leading 0s we don't need to remove them. Reported by Marcus
++ Daniels.
++
++ * Makefile.in (../po/cat-id-tbl.o): Use $(top_srdir) in
++ dependency. Reported by Marcus Daniels.
++
++ * cat-compat.c: (stpcpy) [!_LIBC && !HAVE_STPCPY]: Define replacement.
++ Generally cleanup using #if instead of #ifndef.
++
++ * Makefile.in: Correct typos in comment. By Franc,ois Pinard.
++
++Mon Nov 6 00:27:02 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (install-src): Don't install libintl.h and libintl.a
++ if we use an available gettext implementation.
++
++Sun Nov 5 22:02:08 1995 Ulrich Drepper <drepper@myware>
++
++ * libgettext.h: Fix typo: HAVE_CATGETTS -> HAVE_CATGETS. Reported
++ by Franc,ois Pinard.
++
++ * libgettext.h: Use #if instead of #ifdef/#ifndef.
++
++ * finddomain.c:
++ Comments describing what has to be done should start with FIXME.
++
++Sun Nov 5 19:38:01 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (DISTFILES): Split. Use DISTFILES with normal meaning.
++ DISTFILES.common names the files common to both dist goals.
++ DISTFILES.gettext are the files only distributed in GNU gettext.
++
++Sun Nov 5 17:32:54 1995 Ulrich Drepper <drepper@myware>
++
++ * dcgettext.c (DCGETTEXT): Correct searching in derived locales.
++ This was necessary since a change in _nl_find_msg several weeks
++ ago. I really don't know this is still not fixed.
++
++Sun Nov 5 12:43:12 1995 Ulrich Drepper <drepper@myware>
++
++ * loadmsgcat.c (_nl_load_domain): Test for FILENAME == NULL. This
++ might mark a special condition.
++
++ * finddomain.c (make_entry_rec): Don't make illegal entry as decided.
++
++ * Makefile.in (dist): Suppress error message when ln failed.
++ Get files from $(srcdir) explicitly.
++
++ * libgettext.h (gettext_const): Rename to gettext_noop.
++
++Fri Nov 3 07:36:50 1995 Ulrich Drepper <drepper@myware>
++
++ * finddomain.c (make_entry_rec):
++ Protect against wrong locale names by testing mask.
++
++ * libgettext.h (gettext_const): Add macro definition.
++ Capitalize macro arguments.
++
++Thu Nov 2 23:15:51 1995 Ulrich Drepper <drepper@myware>
++
++ * finddomain.c (_nl_find_domain):
++ Test for pointer != NULL before accessing value.
++ Reported by Tom Tromey.
++
++ * gettext.c (NULL):
++ Define as (void*)0 instad of 0. Reported by Franc,ois Pinard.
++
++Mon Oct 30 21:28:52 1995 Ulrich Drepper <drepper@myware>
++
++ * po2tbl.sed.in: Serious typo bug fixed by Jim Meyering.
++
++Sat Oct 28 23:20:47 1995 Ulrich Drepper <drepper@myware>
++
++ * libgettext.h: Disable dcgettext optimization for Solaris 2.3.
++
++ * localealias.c (alias_compare):
++ Peter Miller reported that tolower in some systems is
++ even dumber than I thought. Protect call by `isupper'.
++
++Fri Oct 27 22:22:51 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (libdir, includedir): New variables.
++ (install-src): Install libintl.a and libintl.h in correct dirs.
++
++Fri Oct 27 22:07:29 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (SOURCES): Fix typo: intrl.compat.c -> intl-compat.c.
++
++ * po2tbl.sed.in: Patch for buggy SEDs by Christian von Roques.
++
++ * localealias.c:
++ Fix typo and superflous test. Reported by Christian von Roques.
++
++Fri Oct 6 11:52:05 1995 Ulrich Drepper <drepper@myware>
++
++ * finddomain.c (_nl_find_domain):
++ Correct some remainder from the pre-CEN syntax. Now
++ we don't have a constant number of successors anymore.
++
++Wed Sep 27 21:41:13 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (DISTFILES): Add libintl.h.glibc.
++
++ * Makefile.in (dist-libc): Add goal for packing sources for glibc.
++ (COMSRCS, COMHDRS): Splitted to separate sources shared with glibc.
++
++ * loadmsgcat.c: Forget to continue #if line.
++
++ * localealias.c:
++ [_LIBC]: Rename strcasecmp to __strcasecmp to keep ANSI C name
++ space clean.
++
++ * dcgettext.c, finddomain.c: Better comment to last change.
++
++ * loadmsgcat.c:
++ [_LIBC]: Rename fstat, open, close, read, mmap, and munmap to
++ __fstat, __open, __close, __read, __mmap, and __munmap resp
++ to keep ANSI C name space clean.
++
++ * finddomain.c:
++ [_LIBC]: Rename stpcpy to __stpcpy to keep ANSI C name space clean.
++
++ * dcgettext.c:
++ [_LIBC]: Rename getced and stpcpy to __getcwd and __stpcpy resp to
++ keep ANSI C name space clean.
++
++ * libgettext.h:
++ Include sys/types.h for those old SysV systems out there.
++ Reported by Francesco Potorti`.
++
++ * loadmsgcat.c (use_mmap): Define if compiled for glibc.
++
++ * bindtextdom.c: Include all those standard headers
++ unconditionally if _LIBC is defined.
++
++ * finddomain.c: Fix 2 times defiend -> defined.
++
++ * textdomain.c: Include libintl.h instead of libgettext.h when
++ compiling for glibc. Include all those standard headers
++ unconditionally if _LIBC is defined.
++
++ * localealias.c, loadmsgcat.c: Prepare to be compiled in glibc.
++
++ * gettext.c:
++ Include libintl.h instead of libgettext.h when compiling for glibc.
++ Get NULL from stddef.h if we compile for glibc.
++
++ * finddomain.c: Include libintl.h instead of libgettext.h when
++ compiling for glibc. Include all those standard headers
++ unconditionally if _LIBC is defined.
++
++ * dcgettext.c: Include all those standard headers unconditionally
++ if _LIBC is defined.
++
++ * dgettext.c: If compiled in glibc include libintl.h instead of
++ libgettext.h.
++ (locale.h): Don't rely on HAVE_LOCALE_H when compiling for glibc.
++
++ * dcgettext.c: If compiled in glibc include libintl.h instead of
++ libgettext.h.
++ (getcwd): Don't rely on HAVE_GETCWD when compiling for glibc.
++
++ * bindtextdom.c:
++ If compiled in glibc include libintl.h instead of libgettext.h.
++
++Mon Sep 25 22:23:06 1995 Ulrich Drepper <drepper@myware>
++
++ * localealias.c (_nl_expand_alias): Don't call bsearch if NMAP <= 0.
++ Reported by Marcus Daniels.
++
++ * cat-compat.c (bindtextdomain):
++ String used in putenv must not be recycled.
++ Reported by Marcus Daniels.
++
++ * libgettext.h (__USE_GNU_GETTEXT):
++ Additional symbol to signal that we use GNU gettext
++ library.
++
++ * cat-compat.c (bindtextdomain):
++ Fix bug with the strange stpcpy replacement.
++ Reported by Nelson Beebe.
++
++Sat Sep 23 08:23:51 1995 Ulrich Drepper <drepper@myware>
++
++ * cat-compat.c: Include <string.h> for stpcpy prototype.
++
++ * localealias.c (read_alias_file):
++ While expand strdup code temporary variable `cp' hided
++ higher level variable with same name. Rename to `tp'.
++
++ * textdomain.c (textdomain):
++ Avoid warning by using temporary variable in strdup code.
++
++ * finddomain.c (_nl_find_domain): Remove unused variable `application'.
++
++Thu Sep 21 15:51:44 1995 Ulrich Drepper <drepper@myware>
++
++ * localealias.c (alias_compare):
++ Use strcasecmp() only if available. Else use
++ implementation in place.
++
++ * intl-compat.c:
++ Wrapper functions now call *__ functions instead of __*.
++
++ * libgettext.h: Declare prototypes for *__ functions instead for __*.
++
++ * cat-compat.c, loadmsgcat.c:
++ Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
++ of the standard libc and so prevent libintl.a from being used
++ standalone.
++
++ * bindtextdom.c:
++ Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
++ of the standard libc and so prevent libintl.a from being used
++ standalone.
++ Rename to bindtextdomain__ if not used in GNU C Library.
++
++ * dgettext.c:
++ Rename function to dgettext__ if not used in GNU C Library.
++
++ * gettext.c:
++ Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
++ of the standard libc and so prevent libintl.a from being used
++ standalone.
++ Functions now called gettext__ if not used in GNU C Library.
++
++ * dcgettext.c, localealias.c, textdomain.c, finddomain.c:
++ Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
++ of the standard libc and so prevent libintl.a from being used
++ standalone.
++
++Sun Sep 17 23:14:49 1995 Ulrich Drepper <drepper@myware>
++
++ * finddomain.c: Correct some bugs in handling of CEN standard
++ locale definitions.
++
++Thu Sep 7 01:49:28 1995 Ulrich Drepper <drepper@myware>
++
++ * finddomain.c: Implement CEN syntax.
++
++ * gettextP.h (loaded_domain): Extend number of successors to 31.
++
++Sat Aug 19 19:25:29 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (aliaspath): Remove path to X11 locale dir.
++
++ * Makefile.in: Make install-src depend on install. This helps
++ gettext to install the sources and other packages can use the
++ install goal.
++
++Sat Aug 19 15:19:33 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (uninstall): Remove stuff installed by install-src.
++
++Tue Aug 15 13:13:53 1995 Ulrich Drepper <drepper@myware>
++
++ * VERSION.in: Initial revision.
++
++ * Makefile.in (DISTFILES):
++ Add VERSION file. This is not necessary for gettext, but
++ for other packages using this library.
++
++Tue Aug 15 06:16:44 1995 Ulrich Drepper <drepper@myware>
++
++ * gettextP.h (_nl_find_domain):
++ New prototype after changing search strategy.
++
++ * finddomain.c (_nl_find_domain):
++ We now try only to find a specified catalog. Fall back to other
++ catalogs listed in the locale list is now done in __dcgettext.
++
++ * dcgettext.c (__dcgettext):
++ Now we provide message fall back even to different languages.
++ I.e. if a message is not available in one language all the other
++ in the locale list a tried. Formerly fall back was only possible
++ within one language. Implemented by moving one loop from
++ _nl_find_domain to here.
++
++Mon Aug 14 23:45:50 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (gettextsrcdir):
++ Directory where source of GNU gettext library are made
++ available.
++ (INSTALL, INSTALL_DATA): Programs used for installing sources.
++ (gettext-src): New. Rule to install GNU gettext sources for use in
++ gettextize shell script.
++
++Sun Aug 13 14:40:48 1995 Ulrich Drepper <drepper@myware>
++
++ * loadmsgcat.c (_nl_load_domain):
++ Use mmap for loading only when munmap function is
++ also available.
++
++ * Makefile.in (install): Depend on `all' goal.
++
++Wed Aug 9 11:04:33 1995 Ulrich Drepper <drepper@myware>
++
++ * localealias.c (read_alias_file):
++ Do not overwrite '\n' when terminating alias value string.
++
++ * localealias.c (read_alias_file):
++ Handle long lines. Ignore the rest not fitting in
++ the buffer after the initial `fgets' call.
++
++Wed Aug 9 00:54:29 1995 Ulrich Drepper <drepper@myware>
++
++ * gettextP.h (_nl_load_domain):
++ Add prototype, replacing prototype for _nl_load_msg_cat.
++
++ * finddomain.c (_nl_find_domain):
++ Remove unneeded variable filename and filename_len.
++ (expand_alias): Remove prototype because functions does not
++ exist anymore.
++
++ * localealias.c (read_alias_file):
++ Change type of fname_len parameter to int.
++ (xmalloc): Add prototype.
++
++ * loadmsgcat.c: Better prototypes for xmalloc.
++
++Tue Aug 8 22:30:39 1995 Ulrich Drepper <drepper@myware>
++
++ * finddomain.c (_nl_find_domain):
++ Allow alias name to be constructed from the four components.
++
++ * Makefile.in (aliaspath): New variable. Set to preliminary value.
++ (SOURCES): Add localealias.c.
++ (OBJECTS): Add localealias.o.
++
++ * gettextP.h: Add prototype for _nl_expand_alias.
++
++ * finddomain.c: Aliasing handled in intl/localealias.c.
++
++ * localealias.c: Aliasing for locale names.
++
++ * bindtextdom.c: Better prototypes for xmalloc and xstrdup.
++
++Mon Aug 7 23:47:42 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (DISTFILES): gettext.perl is now found in misc/.
++
++ * cat-compat.c (bindtextdomain):
++ Correct implementation. dirname parameter was not used.
++ Reported by Marcus Daniels.
++
++ * gettextP.h (loaded_domain):
++ New fields `successor' and `decided' for oo, lazy
++ message handling implementation.
++
++ * dcgettext.c:
++ Adopt for oo, lazy message handliing.
++ Now we can inherit translations from less specific locales.
++ (find_msg): New function.
++
++ * loadmsgcat.c, finddomain.c:
++ Complete rewrite. Implement oo, lazy message handling :-).
++ We now have an additional environment variable `LANGUAGE' with
++ a higher priority than LC_ALL for the LC_MESSAGE locale.
++ Here we can set a colon separated list of specifications each
++ of the form `language[_territory[.codeset]][@modifier]'.
++
++Sat Aug 5 09:55:42 1995 Ulrich Drepper <drepper@myware>
++
++ * finddomain.c (unistd.h):
++ Include to get _PC_PATH_MAX defined on system having it.
++
++Fri Aug 4 22:42:00 1995 Ulrich Drepper <drepper@myware>
++
++ * finddomain.c (stpcpy): Include prototype.
++
++ * Makefile.in (dist): Remove `copying instead' message.
++
++Wed Aug 2 18:52:03 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (ID, TAGS): Do not use $^.
++
++Tue Aug 1 20:07:11 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (TAGS, ID): Use $^ as command argument.
++ (TAGS): Give etags -o option t write to current directory,
++ not $(srcdir).
++ (ID): Use $(srcdir) instead os $(top_srcdir)/src.
++ (distclean): Remove ID.
++
++Sun Jul 30 11:51:46 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (gnulocaledir):
++ New variable, always using share/ for data directory.
++ (DEFS): Add GNULOCALEDIR, used in finddomain.c.
++
++ * finddomain.c (_nl_default_dirname):
++ Set to GNULOCALEDIR, because it always has to point
++ to the directory where GNU gettext Library writes it to.
++
++ * intl-compat.c (textdomain, bindtextdomain):
++ Undefine macros before function definition.
++
++Sat Jul 22 01:10:02 1995 Ulrich Drepper <drepper@myware>
++
++ * libgettext.h (_LIBINTL_H):
++ Protect definition in case where this file is included as
++ libgettext.h on Solaris machines. Add comment about this.
++
++Wed Jul 19 02:36:42 1995 Ulrich Drepper <drepper@myware>
++
++ * intl-compat.c (textdomain): Correct typo.
++
++Wed Jul 19 01:51:35 1995 Ulrich Drepper <drepper@myware>
++
++ * dcgettext.c (dcgettext): Function now called __dcgettext.
++
++ * dgettext.c (dgettext): Now called __dgettext and calls
++ __dcgettext.
++
++ * gettext.c (gettext):
++ Function now called __gettext and calls __dgettext.
++
++ * textdomain.c (textdomain): Function now called __textdomain.
++
++ * bindtextdom.c (bindtextdomain): Function now called
++ __bindtextdomain.
++
++ * intl-compat.c: Initial revision.
++
++ * Makefile.in (SOURCES): Add intl-compat.c.
++ (OBJECTS): We always compile the GNU gettext library functions.
++ OBJECTS contains all objects but cat-compat.o, ../po/cat-if-tbl.o,
++ and intl-compat.o.
++ (GETTOBJS): Contains now only intl-compat.o.
++
++ * libgettext.h:
++ Re-include protection matches dualistic character of libgettext.h.
++ For all functions in GNU gettext library define __ counter part.
++
++ * finddomain.c (strchr): Define as index if not found in C library.
++ (_nl_find_domain): For relative paths paste / in between.
++
++Tue Jul 18 16:37:45 1995 Ulrich Drepper <drepper@myware>
++
++ * loadmsgcat.c, finddomain.c: Add inclusion of sys/types.h.
++
++ * xopen-msg.sed: Fix bug with `msgstr ""' lines.
++ A little bit better comments.
++
++Tue Jul 18 01:18:27 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in:
++ po-mode.el, makelinks, combine-sh are now found in ../misc.
++
++ * po-mode.el, makelinks, combine-sh, elisp-comp:
++ Moved to ../misc/.
++
++ * libgettext.h, gettextP.h, gettext.h: Uniform test for __STDC__.
++
++Sun Jul 16 22:33:02 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (INSTALL, INSTALL_DATA): New variables.
++ (install-data, uninstall): Install/uninstall .elc file.
++
++ * po-mode.el (Installation comment):
++ Add .pox as possible extension of .po files.
++
++Sun Jul 16 13:23:27 1995 Ulrich Drepper <drepper@myware>
++
++ * elisp-comp: Complete new version by Franc,ois: This does not
++ fail when not compiling in the source directory.
++
++Sun Jul 16 00:12:17 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (../po/cat-id-tbl.o):
++ Use $(MAKE) instead of make for recursive make.
++
++ * Makefile.in (.el.elc): Use $(SHELL) instead of /bin/sh.
++ (install-exec): Add missing dummy goal.
++ (install-data, uninstall): @ in multi-line shell command at
++ beginning, not in front of echo. Reported by Eric Backus.
++
++Sat Jul 15 00:21:28 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (DISTFILES):
++ Rename libgettext.perl to gettext.perl to fit in 14 chars
++ file systems.
++
++ * gettext.perl:
++ Rename to gettext.perl to fit in 14 chars file systems.
++
++Thu Jul 13 23:17:20 1995 Ulrich Drepper <drepper@myware>
++
++ * cat-compat.c: If !STDC_HEADERS try to include malloc.h.
++
++Thu Jul 13 20:55:02 1995 Ulrich Drepper <drepper@myware>
++
++ * po2tbl.sed.in: Pretty printing.
++
++ * linux-msg.sed, xopen-msg.sed:
++ Correct bugs with handling substitute flags in branches.
++
++ * hash-string.h (hash_string):
++ Old K&R compilers don't under stand `unsigned char'.
++
++ * gettext.h (nls_uint32):
++ Some old K&R compilers (eg HP) don't understand `unsigned int'.
++
++ * cat-compat.c (msg_to_cat_id): De-ANSI-fy prototypes.
++
++Thu Jul 13 01:34:33 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (ELCFILES): New variable.
++ (DISTFILES): Add elisp-comp.
++ Add implicit rule for .el -> .elc compilation.
++ (install-data): install $ELCFILES
++ (clean): renamed po-to-tbl and po-to-msg to po2tbl and po2msg resp.
++
++ * elisp-comp: Initial revision
++
++Wed Jul 12 16:14:52 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in:
++ cat-id-tbl.c is now found in po/. This enables us to use an identical
++ intl/ directory in all packages.
++
++ * dcgettext.c (dcgettext): hashing does not work for table size <= 2.
++
++ * textdomain.c: fix typo (#if def -> #if defined)
++
++Tue Jul 11 18:44:43 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in (stamp-cat-id): use top_srcdir to address source files
++ (DISTFILES,distclean): move tupdate.perl to src/
++
++ * po-to-tbl.sed.in:
++ add additional jump to clear change flag to recognize multiline strings
++
++Tue Jul 11 01:32:50 1995 Ulrich Drepper <drepper@myware>
++
++ * textdomain.c: Protect inclusion of stdlib.h and string.h.
++
++ * loadmsgcat.c: Protect inclusion of stdlib.h.
++
++ * libgettext.h: Protect inclusion of locale.h.
++ Allow use in C++ programs.
++ Define NULL is not happened already.
++
++ * Makefile.in (DISTFILES): ship po-to-tbl.sed.in instead of
++ po-to-tbl.sed.
++ (distclean): remove po-to-tbl.sed and tupdate.perl.
++
++ * tupdate.perl.in: Substitute Perl path even in exec line.
++ Don't include entries without translation from old .po file.
++
++Tue Jul 4 00:41:51 1995 Ulrich Drepper <drepper@myware>
++
++ * tupdate.perl.in: use "Updated: " in msgid "".
++
++ * cat-compat.c: Fix typo (LOCALDIR -> LOCALEDIR).
++ Define getenv if !__STDC__.
++
++ * bindtextdom.c: Protect stdlib.h and string.h inclusion.
++ Define free if !__STDC__.
++
++ * finddomain.c: Change DEF_MSG_DOM_DIR to LOCALEDIR.
++ Define free if !__STDC__.
++
++ * cat-compat.c: Change DEF_MSG_DOM_DIR to LOCALEDIR.
++
++Mon Jul 3 23:56:30 1995 Ulrich Drepper <drepper@myware>
++
++ * Makefile.in: Use LOCALEDIR instead of DEF_MSG_DOM_DIR.
++ Remove unneeded $(srcdir) from Makefile.in dependency.
++
++ * makelinks: Add copyright and short description.
++
++ * po-mode.el: Last version for 0.7.
++
++ * tupdate.perl.in: Fix die message.
++
++ * dcgettext.c: Protect include of string.h.
++
++ * gettext.c: Protect include of stdlib.h and further tries to get NULL.
++
++ * finddomain.c: Some corrections in includes.
++
++ * Makefile.in (INCLUDES): Prune list correct path to Makefile.in.
++
++ * po-to-tbl.sed: Adopt for new .po file format.
++
++ * linux-msg.sed, xopen-msg.sed: Adopt for new .po file format.
++
++Sun Jul 2 23:55:03 1995 Ulrich Drepper <drepper@myware>
++
++ * tupdate.perl.in: Complete rewrite for new .po file format.
++
++Sun Jul 2 02:06:50 1995 Ulrich Drepper <drepper@myware>
++
++ * First official release. This directory contains all the code
++ needed to internationalize own packages. It provides functions
++ which allow to use the X/Open catgets function with an interface
++ like the Uniforum gettext function. For system which does not
++ have neither of those a complete implementation is provided.
+diff -urP gtkhtml-0.8.3.orig/intl/Makefile.in gtkhtml-0.8.3/intl/Makefile.in
+--- gtkhtml-0.8.3.orig/intl/Makefile.in Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/Makefile.in Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,214 @@
++# Makefile for directory with message catalog handling in GNU NLS Utilities.
++# Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
++#
++# 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 program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++
++PACKAGE = @PACKAGE@
++VERSION = @VERSION@
++
++SHELL = /bin/sh
++
++srcdir = @srcdir@
++top_srcdir = @top_srcdir@
++top_builddir = ..
++VPATH = @srcdir@
++
++prefix = @prefix@
++exec_prefix = @exec_prefix@
++transform = @program_transform_name@
++libdir = $(exec_prefix)/lib
++includedir = $(prefix)/include
++datadir = $(prefix)/@DATADIRNAME@
++localedir = $(datadir)/locale
++gnulocaledir = $(prefix)/share/locale
++gettextsrcdir = @datadir@/gettext/intl
++aliaspath = $(localedir):.
++subdir = intl
++
++INSTALL = @INSTALL@
++INSTALL_DATA = @INSTALL_DATA@
++MKINSTALLDIRS = @MKINSTALLDIRS@
++
++l = @l@
++
++AR = ar
++CC = @CC@
++LIBTOOL = @LIBTOOL@
++RANLIB = @RANLIB@
++
++DEFS = -DLOCALEDIR=\"$(localedir)\" -DGNULOCALEDIR=\"$(gnulocaledir)\" \
++-DLOCALE_ALIAS_PATH=\"$(aliaspath)\" @DEFS@
++CPPFLAGS = @CPPFLAGS@
++CFLAGS = @CFLAGS@
++LDFLAGS = @LDFLAGS@
++
++COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
++
++HEADERS = $(COMHDRS) libgettext.h loadinfo.h
++COMHDRS = gettext.h gettextP.h hash-string.h
++SOURCES = $(COMSRCS) intl-compat.c cat-compat.c
++COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \
++finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \
++explodename.c
++OBJECTS = @INTLOBJS@ bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \
++finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \
++explodename.$lo
++CATOBJS = cat-compat.$lo ../po/cat-id-tbl.$lo
++GETTOBJS = intl-compat.$lo
++DISTFILES.common = ChangeLog Makefile.in linux-msg.sed po2tbl.sed.in \
++xopen-msg.sed $(HEADERS) $(SOURCES)
++DISTFILES.normal = VERSION
++DISTFILES.gettext = libintl.glibc intlh.inst.in
++
++.SUFFIXES:
++.SUFFIXES: .c .o .lo
++.c.o:
++ $(COMPILE) $<
++.c.lo:
++ $(LIBTOOL) --mode=compile $(COMPILE) $<
++
++INCLUDES = -I.. -I. -I$(top_srcdir)/intl -I$(top_srcdir)/lib
++
++all: all-@USE_INCLUDED_LIBINTL@
++
++all-yes: libintl.$la intlh.inst
++all-no:
++
++libintl.a: $(OBJECTS)
++ rm -f $@
++ $(AR) cru $@ $(OBJECTS)
++ $(RANLIB) $@
++
++libintl.la: $(OBJECTS)
++ $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ $(OBJECTS) \
++ -version-info 1:0 -rpath $(libdir)
++
++../po/cat-id-tbl.$lo: ../po/cat-id-tbl.c $(top_srcdir)/po/$(PACKAGE).pot
++ cd ../po && $(MAKE) cat-id-tbl.$lo
++
++check: all
++
++# This installation goal is only used in GNU gettext. Packages which
++# only use the library should use install instead.
++
++# We must not install the libintl.h/libintl.a files if we are on a
++# system which has the gettext() function in its C library or in a
++# separate library or use the catgets interface. A special case is
++# where configure found a previously installed GNU gettext library.
++# If you want to use the one which comes with this version of the
++# package, you have to use `configure --with-included-gettext'.
++install: install-exec install-data
++install-exec: all
++ if test "$(PACKAGE)" = "gettext" \
++ && test '@INTLOBJS@' = '$(GETTOBJS)'; then \
++ if test -r $(MKINSTALLDIRS); then \
++ $(MKINSTALLDIRS) $(libdir) $(includedir); \
++ else \
++ $(top_srcdir)/mkinstalldirs $(libdir) $(includedir); \
++ fi; \
++ $(INSTALL_DATA) intlh.inst $(includedir)/libintl.h; \
++ $(INSTALL_DATA) libintl.a $(libdir)/libintl.a; \
++ else \
++ : ; \
++ fi
++install-data: all
++ if test "$(PACKAGE)" = "gettext"; then \
++ if test -r $(MKINSTALLDIRS); then \
++ $(MKINSTALLDIRS) $(gettextsrcdir); \
++ else \
++ $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \
++ fi; \
++ $(INSTALL_DATA) VERSION $(gettextsrcdir)/VERSION; \
++ dists="$(DISTFILES.common)"; \
++ for file in $$dists; do \
++ $(INSTALL_DATA) $(srcdir)/$$file $(gettextsrcdir)/$$file; \
++ done; \
++ else \
++ : ; \
++ fi
++
++# Define this as empty until I found a useful application.
++installcheck:
++
++uninstall:
++ dists="$(DISTFILES.common)"; \
++ for file in $$dists; do \
++ rm -f $(gettextsrcdir)/$$file; \
++ done
++
++info dvi:
++
++$(OBJECTS): ../config.h libgettext.h
++bindtextdom.$lo finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h
++dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.h
++
++tags: TAGS
++
++TAGS: $(HEADERS) $(SOURCES)
++ here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES)
++
++id: ID
++
++ID: $(HEADERS) $(SOURCES)
++ here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES)
++
++
++mostlyclean:
++ rm -f *.a *.o *.lo core core.*
++
++clean: mostlyclean
++
++distclean: clean
++ rm -f Makefile ID TAGS po2msg.sed po2tbl.sed
++
++maintainer-clean: distclean
++ @echo "This command is intended for maintainers to use;"
++ @echo "it deletes files that may require special tools to rebuild."
++
++
++# GNU gettext needs not contain the file `VERSION' but contains some
++# other files which should not be distributed in other packages.
++distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
++dist distdir: Makefile $(DISTFILES)
++ if test "$(PACKAGE)" = gettext; then \
++ additional="$(DISTFILES.gettext)"; \
++ else \
++ additional="$(DISTFILES.normal)"; \
++ fi; \
++ for file in $(DISTFILES.common) $$additional; do \
++ ln $(srcdir)/$$file $(distdir) 2> /dev/null \
++ || cp -p $(srcdir)/$$file $(distdir); \
++ done
++
++dist-libc:
++ tar zcvf intl-glibc.tar.gz $(COMSRCS) $(COMHDRS) libintl.h.glibc
++
++Makefile: Makefile.in ../config.status
++ cd .. \
++ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
++
++# The dependency for intlh.inst is different in gettext and all other
++# packages. Because we cannot you GNU make features we have to solve
++# the problem while rewriting Makefile.in.
++@GT_YES@intlh.inst: intlh.inst.in ../config.status
++@GT_YES@ cd .. \
++@GT_YES@ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \
++@GT_YES@ $(SHELL) ./config.status
++@GT_NO@.PHONY: intlh.inst
++@GT_NO@intlh.inst:
++
++# Tell versions [3.59,3.63) of GNU make not to export all variables.
++# Otherwise a system limit (for SysV at least) may be exceeded.
++.NOEXPORT:
+diff -urP gtkhtml-0.8.3.orig/intl/VERSION gtkhtml-0.8.3/intl/VERSION
+--- gtkhtml-0.8.3.orig/intl/VERSION Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/VERSION Fri Mar 16 14:46:14 2001
+@@ -0,0 +1 @@
++GNU gettext library from gettext-0.10.35
+diff -urP gtkhtml-0.8.3.orig/intl/bindtextdom.c gtkhtml-0.8.3/intl/bindtextdom.c
+--- gtkhtml-0.8.3.orig/intl/bindtextdom.c Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/bindtextdom.c Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,203 @@
++/* Implementation of the bindtextdomain(3) function
++ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
++
++ 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 program; if not, write to the Free Software Foundation,
++ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++#if defined STDC_HEADERS || defined _LIBC
++# include <stdlib.h>
++#else
++# ifdef HAVE_MALLOC_H
++# include <malloc.h>
++# else
++void free ();
++# endif
++#endif
++
++#if defined HAVE_STRING_H || defined _LIBC
++# include <string.h>
++#else
++# include <strings.h>
++# ifndef memcpy
++# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
++# endif
++#endif
++
++#ifdef _LIBC
++# include <libintl.h>
++#else
++# include "libgettext.h"
++#endif
++#include "gettext.h"
++#include "gettextP.h"
++
++/* @@ end of prolog @@ */
++
++/* Contains the default location of the message catalogs. */
++extern const char _nl_default_dirname[];
++
++/* List with bindings of specific domains. */
++extern struct binding *_nl_domain_bindings;
++
++
++/* Names for the libintl functions are a problem. They must not clash
++ with existing names and they should follow ANSI C. But this source
++ code is also used in GNU C Library where the names have a __
++ prefix. So we have to make a difference here. */
++#ifdef _LIBC
++# define BINDTEXTDOMAIN __bindtextdomain
++# ifndef strdup
++# define strdup(str) __strdup (str)
++# endif
++#else
++# define BINDTEXTDOMAIN bindtextdomain__
++#endif
++
++/* Specify that the DOMAINNAME message catalog will be found
++ in DIRNAME rather than in the system locale data base. */
++char *
++BINDTEXTDOMAIN (domainname, dirname)
++ const char *domainname;
++ const char *dirname;
++{
++ struct binding *binding;
++
++ /* Some sanity checks. */
++ if (domainname == NULL || domainname[0] == '\0')
++ return NULL;
++
++ for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
++ {
++ int compare = strcmp (domainname, binding->domainname);
++ if (compare == 0)
++ /* We found it! */
++ break;
++ if (compare < 0)
++ {
++ /* It is not in the list. */
++ binding = NULL;
++ break;
++ }
++ }
++
++ if (dirname == NULL)
++ /* The current binding has be to returned. */
++ return binding == NULL ? (char *) _nl_default_dirname : binding->dirname;
++
++ if (binding != NULL)
++ {
++ /* The domain is already bound. If the new value and the old
++ one are equal we simply do nothing. Otherwise replace the
++ old binding. */
++ if (strcmp (dirname, binding->dirname) != 0)
++ {
++ char *new_dirname;
++
++ if (strcmp (dirname, _nl_default_dirname) == 0)
++ new_dirname = (char *) _nl_default_dirname;
++ else
++ {
++#if defined _LIBC || defined HAVE_STRDUP
++ new_dirname = strdup (dirname);
++ if (new_dirname == NULL)
++ return NULL;
++#else
++ size_t len = strlen (dirname) + 1;
++ new_dirname = (char *) malloc (len);
++ if (new_dirname == NULL)
++ return NULL;
++
++ memcpy (new_dirname, dirname, len);
++#endif
++ }
++
++ if (binding->dirname != _nl_default_dirname)
++ free (binding->dirname);
++
++ binding->dirname = new_dirname;
++ }
++ }
++ else
++ {
++ /* We have to create a new binding. */
++#if !defined _LIBC && !defined HAVE_STRDUP
++ size_t len;
++#endif
++ struct binding *new_binding =
++ (struct binding *) malloc (sizeof (*new_binding));
++
++ if (new_binding == NULL)
++ return NULL;
++
++#if defined _LIBC || defined HAVE_STRDUP
++ new_binding->domainname = strdup (domainname);
++ if (new_binding->domainname == NULL)
++ return NULL;
++#else
++ len = strlen (domainname) + 1;
++ new_binding->domainname = (char *) malloc (len);
++ if (new_binding->domainname == NULL)
++ return NULL;
++ memcpy (new_binding->domainname, domainname, len);
++#endif
++
++ if (strcmp (dirname, _nl_default_dirname) == 0)
++ new_binding->dirname = (char *) _nl_default_dirname;
++ else
++ {
++#if defined _LIBC || defined HAVE_STRDUP
++ new_binding->dirname = strdup (dirname);
++ if (new_binding->dirname == NULL)
++ return NULL;
++#else
++ len = strlen (dirname) + 1;
++ new_binding->dirname = (char *) malloc (len);
++ if (new_binding->dirname == NULL)
++ return NULL;
++ memcpy (new_binding->dirname, dirname, len);
++#endif
++ }
++
++ /* Now enqueue it. */
++ if (_nl_domain_bindings == NULL
++ || strcmp (domainname, _nl_domain_bindings->domainname) < 0)
++ {
++ new_binding->next = _nl_domain_bindings;
++ _nl_domain_bindings = new_binding;
++ }
++ else
++ {
++ binding = _nl_domain_bindings;
++ while (binding->next != NULL
++ && strcmp (domainname, binding->next->domainname) > 0)
++ binding = binding->next;
++
++ new_binding->next = binding->next;
++ binding->next = new_binding;
++ }
++
++ binding = new_binding;
++ }
++
++ return binding->dirname;
++}
++
++#ifdef _LIBC
++/* Alias for function name in GNU C Library. */
++weak_alias (__bindtextdomain, bindtextdomain);
++#endif
+diff -urP gtkhtml-0.8.3.orig/intl/cat-compat.c gtkhtml-0.8.3/intl/cat-compat.c
+--- gtkhtml-0.8.3.orig/intl/cat-compat.c Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/cat-compat.c Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,262 @@
++/* Compatibility code for gettext-using-catgets interface.
++ Copyright (C) 1995, 1997 Free Software Foundation, Inc.
++
++ 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 program; if not, write to the Free Software Foundation,
++ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++#include <stdio.h>
++
++#ifdef STDC_HEADERS
++# include <stdlib.h>
++# include <string.h>
++#else
++char *getenv ();
++# ifdef HAVE_MALLOC_H
++# include <malloc.h>
++# endif
++#endif
++
++#ifdef HAVE_NL_TYPES_H
++# include <nl_types.h>
++#endif
++
++#include "libgettext.h"
++
++/* @@ end of prolog @@ */
++
++/* XPG3 defines the result of `setlocale (category, NULL)' as:
++ ``Directs `setlocale()' to query `category' and return the current
++ setting of `local'.''
++ However it does not specify the exact format. And even worse: POSIX
++ defines this not at all. So we can use this feature only on selected
++ system (e.g. those using GNU C Library). */
++#ifdef _LIBC
++# define HAVE_LOCALE_NULL
++#endif
++
++/* The catalog descriptor. */
++static nl_catd catalog = (nl_catd) -1;
++
++/* Name of the default catalog. */
++static const char default_catalog_name[] = "messages";
++
++/* Name of currently used catalog. */
++static const char *catalog_name = default_catalog_name;
++
++/* Get ID for given string. If not found return -1. */
++static int msg_to_cat_id PARAMS ((const char *msg));
++
++/* Substitution for systems lacking this function in their C library. */
++#if !_LIBC && !HAVE_STPCPY
++static char *stpcpy PARAMS ((char *dest, const char *src));
++#endif
++
++
++/* Set currently used domain/catalog. */
++char *
++textdomain (domainname)
++ const char *domainname;
++{
++ nl_catd new_catalog;
++ char *new_name;
++ size_t new_name_len;
++ char *lang;
++
++#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES \
++ && defined HAVE_LOCALE_NULL
++ lang = setlocale (LC_MESSAGES, NULL);
++#else
++ lang = getenv ("LC_ALL");
++ if (lang == NULL || lang[0] == '\0')
++ {
++ lang = getenv ("LC_MESSAGES");
++ if (lang == NULL || lang[0] == '\0')
++ lang = getenv ("LANG");
++ }
++#endif
++ if (lang == NULL || lang[0] == '\0')
++ lang = "C";
++
++ /* See whether name of currently used domain is asked. */
++ if (domainname == NULL)
++ return (char *) catalog_name;
++
++ if (domainname[0] == '\0')
++ domainname = default_catalog_name;
++
++ /* Compute length of added path element. */
++ new_name_len = sizeof (LOCALEDIR) - 1 + 1 + strlen (lang)
++ + sizeof ("/LC_MESSAGES/") - 1 + sizeof (PACKAGE) - 1
++ + sizeof (".cat");
++
++ new_name = (char *) malloc (new_name_len);
++ if (new_name == NULL)
++ return NULL;
++
++ strcpy (new_name, PACKAGE);
++ new_catalog = catopen (new_name, 0);
++
++ if (new_catalog == (nl_catd) -1)
++ {
++ /* NLSPATH search didn't work, try absolute path */
++ sprintf (new_name, "%s/%s/LC_MESSAGES/%s.cat", LOCALEDIR, lang,
++ PACKAGE);
++ new_catalog = catopen (new_name, 0);
++
++ if (new_catalog == (nl_catd) -1)
++ {
++ free (new_name);
++ return (char *) catalog_name;
++ }
++ }
++
++ /* Close old catalog. */
++ if (catalog != (nl_catd) -1)
++ catclose (catalog);
++ if (catalog_name != default_catalog_name)
++ free ((char *) catalog_name);
++
++ catalog = new_catalog;
++ catalog_name = new_name;
++
++ return (char *) catalog_name;
++}
++
++char *
++bindtextdomain (domainname, dirname)
++ const char *domainname;
++ const char *dirname;
++{
++#if HAVE_SETENV || HAVE_PUTENV
++ char *old_val, *new_val, *cp;
++ size_t new_val_len;
++
++ /* This does not make much sense here but to be compatible do it. */
++ if (domainname == NULL)
++ return NULL;
++
++ /* Compute length of added path element. If we use setenv we don't need
++ the first byts for NLSPATH=, but why complicate the code for this
++ peanuts. */
++ new_val_len = sizeof ("NLSPATH=") - 1 + strlen (dirname)
++ + sizeof ("/%L/LC_MESSAGES/%N.cat");
++
++ old_val = getenv ("NLSPATH");
++ if (old_val == NULL || old_val[0] == '\0')
++ {
++ old_val = NULL;
++ new_val_len += 1 + sizeof (LOCALEDIR) - 1
++ + sizeof ("/%L/LC_MESSAGES/%N.cat");
++ }
++ else
++ new_val_len += strlen (old_val);
++
++ new_val = (char *) malloc (new_val_len);
++ if (new_val == NULL)
++ return NULL;
++
++# if HAVE_SETENV
++ cp = new_val;
++# else
++ cp = stpcpy (new_val, "NLSPATH=");
++# endif
++
++ cp = stpcpy (cp, dirname);
++ cp = stpcpy (cp, "/%L/LC_MESSAGES/%N.cat:");
++
++ if (old_val == NULL)
++ {
++# if __STDC__
++ stpcpy (cp, LOCALEDIR "/%L/LC_MESSAGES/%N.cat");
++# else
++
++ cp = stpcpy (cp, LOCALEDIR);
++ stpcpy (cp, "/%L/LC_MESSAGES/%N.cat");
++# endif
++ }
++ else
++ stpcpy (cp, old_val);
++
++# if HAVE_SETENV
++ setenv ("NLSPATH", new_val, 1);
++ free (new_val);
++# else
++ putenv (new_val);
++ /* Do *not* free the environment entry we just entered. It is used
++ from now on. */
++# endif
++
++#endif
++
++ return (char *) domainname;
++}
++
++#undef gettext
++char *
++gettext (msg)
++ const char *msg;
++{
++ int msgid;
++
++ if (msg == NULL || catalog == (nl_catd) -1)
++ return (char *) msg;
++
++ /* Get the message from the catalog. We always use set number 1.
++ The message ID is computed by the function `msg_to_cat_id'
++ which works on the table generated by `po-to-tbl'. */
++ msgid = msg_to_cat_id (msg);
++ if (msgid == -1)
++ return (char *) msg;
++
++ return catgets (catalog, 1, msgid, (char *) msg);
++}
++
++/* Look through the table `_msg_tbl' which has `_msg_tbl_length' entries
++ for the one equal to msg. If it is found return the ID. In case when
++ the string is not found return -1. */
++static int
++msg_to_cat_id (msg)
++ const char *msg;
++{
++ int cnt;
++
++ for (cnt = 0; cnt < _msg_tbl_length; ++cnt)
++ if (strcmp (msg, _msg_tbl[cnt]._msg) == 0)
++ return _msg_tbl[cnt]._msg_number;
++
++ return -1;
++}
++
++
++/* @@ begin of epilog @@ */
++
++/* We don't want libintl.a to depend on any other library. So we
++ avoid the non-standard function stpcpy. In GNU C Library this
++ function is available, though. Also allow the symbol HAVE_STPCPY
++ to be defined. */
++#if !_LIBC && !HAVE_STPCPY
++static char *
++stpcpy (dest, src)
++ char *dest;
++ const char *src;
++{
++ while ((*dest++ = *src++) != '\0')
++ /* Do nothing. */ ;
++ return dest - 1;
++}
++#endif
+diff -urP gtkhtml-0.8.3.orig/intl/dcgettext.c gtkhtml-0.8.3/intl/dcgettext.c
+--- gtkhtml-0.8.3.orig/intl/dcgettext.c Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/dcgettext.c Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,624 @@
++/* Implementation of the dcgettext(3) function.
++ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
++
++ 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 program; if not, write to the Free Software Foundation,
++ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++#include <sys/types.h>
++
++#ifdef __GNUC__
++# define alloca __builtin_alloca
++# define HAVE_ALLOCA 1
++#else
++# if defined HAVE_ALLOCA_H || defined _LIBC
++# include <alloca.h>
++# else
++# ifdef _AIX
++ #pragma alloca
++# else
++# ifndef alloca
++char *alloca ();
++# endif
++# endif
++# endif
++#endif
++
++#include <errno.h>
++#ifndef errno
++extern int errno;
++#endif
++#ifndef __set_errno
++# define __set_errno(val) errno = (val)
++#endif
++
++#if defined STDC_HEADERS || defined _LIBC
++# include <stdlib.h>
++#else
++char *getenv ();
++# ifdef HAVE_MALLOC_H
++# include <malloc.h>
++# else
++void free ();
++# endif
++#endif
++
++#if defined HAVE_STRING_H || defined _LIBC
++# ifndef _GNU_SOURCE
++# define _GNU_SOURCE 1
++# endif
++# include <string.h>
++#else
++# include <strings.h>
++#endif
++#if !HAVE_STRCHR && !defined _LIBC
++# ifndef strchr
++# define strchr index
++# endif
++#endif
++
++#if defined HAVE_UNISTD_H || defined _LIBC
++# include <unistd.h>
++#endif
++
++#include "gettext.h"
++#include "gettextP.h"
++#ifdef _LIBC
++# include <libintl.h>
++#else
++# include "libgettext.h"
++#endif
++#include "hash-string.h"
++
++/* @@ end of prolog @@ */
++
++#ifdef _LIBC
++/* Rename the non ANSI C functions. This is required by the standard
++ because some ANSI C functions will require linking with this object
++ file and the name space must not be polluted. */
++# define getcwd __getcwd
++# ifndef stpcpy
++# define stpcpy __stpcpy
++# endif
++#else
++# if !defined HAVE_GETCWD
++char *getwd ();
++# define getcwd(buf, max) getwd (buf)
++# else
++char *getcwd ();
++# endif
++# ifndef HAVE_STPCPY
++static char *stpcpy PARAMS ((char *dest, const char *src));
++# endif
++#endif
++
++/* Amount to increase buffer size by in each try. */
++#define PATH_INCR 32
++
++/* The following is from pathmax.h. */
++/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define
++ PATH_MAX but might cause redefinition warnings when sys/param.h is
++ later included (as on MORE/BSD 4.3). */
++#if defined(_POSIX_VERSION) || (defined(HAVE_LIMITS_H) && !defined(__GNUC__))
++# include <limits.h>
++#endif
++
++#ifndef _POSIX_PATH_MAX
++# define _POSIX_PATH_MAX 255
++#endif
++
++#if !defined(PATH_MAX) && defined(_PC_PATH_MAX)
++# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX))
++#endif
++
++/* Don't include sys/param.h if it already has been. */
++#if defined(HAVE_SYS_PARAM_H) && !defined(PATH_MAX) && !defined(MAXPATHLEN)
++# include <sys/param.h>
++#endif
++
++#if !defined(PATH_MAX) && defined(MAXPATHLEN)
++# define PATH_MAX MAXPATHLEN
++#endif
++
++#ifndef PATH_MAX
++# define PATH_MAX _POSIX_PATH_MAX
++#endif
++
++/* XPG3 defines the result of `setlocale (category, NULL)' as:
++ ``Directs `setlocale()' to query `category' and return the current
++ setting of `local'.''
++ However it does not specify the exact format. And even worse: POSIX
++ defines this not at all. So we can use this feature only on selected
++ system (e.g. those using GNU C Library). */
++#ifdef _LIBC
++# define HAVE_LOCALE_NULL
++#endif
++
++/* Name of the default domain used for gettext(3) prior any call to
++ textdomain(3). The default value for this is "messages". */
++const char _nl_default_default_domain[] = "messages";
++
++/* Value used as the default domain for gettext(3). */
++const char *_nl_current_default_domain = _nl_default_default_domain;
++
++/* Contains the default location of the message catalogs. */
++const char _nl_default_dirname[] = GNULOCALEDIR;
++
++/* List with bindings of specific domains created by bindtextdomain()
++ calls. */
++struct binding *_nl_domain_bindings;
++
++/* Prototypes for local functions. */
++static char *find_msg PARAMS ((struct loaded_l10nfile *domain_file,
++ const char *msgid)) internal_function;
++static const char *category_to_name PARAMS ((int category)) internal_function;
++static const char *guess_category_value PARAMS ((int category,
++ const char *categoryname))
++ internal_function;
++
++
++/* For those loosing systems which don't have `alloca' we have to add
++ some additional code emulating it. */
++#ifdef HAVE_ALLOCA
++/* Nothing has to be done. */
++# define ADD_BLOCK(list, address) /* nothing */
++# define FREE_BLOCKS(list) /* nothing */
++#else
++struct block_list
++{
++ void *address;
++ struct block_list *next;
++};
++# define ADD_BLOCK(list, addr) \
++ do { \
++ struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \
++ /* If we cannot get a free block we cannot add the new element to \
++ the list. */ \
++ if (newp != NULL) { \
++ newp->address = (addr); \
++ newp->next = (list); \
++ (list) = newp; \
++ } \
++ } while (0)
++# define FREE_BLOCKS(list) \
++ do { \
++ while (list != NULL) { \
++ struct block_list *old = list; \
++ list = list->next; \
++ free (old); \
++ } \
++ } while (0)
++# undef alloca
++# define alloca(size) (malloc (size))
++#endif /* have alloca */
++
++
++/* Names for the libintl functions are a problem. They must not clash
++ with existing names and they should follow ANSI C. But this source
++ code is also used in GNU C Library where the names have a __
++ prefix. So we have to make a difference here. */
++#ifdef _LIBC
++# define DCGETTEXT __dcgettext
++#else
++# define DCGETTEXT dcgettext__
++#endif
++
++/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
++ locale. */
++char *
++DCGETTEXT (domainname, msgid, category)
++ const char *domainname;
++ const char *msgid;
++ int category;
++{
++#ifndef HAVE_ALLOCA
++ struct block_list *block_list = NULL;
++#endif
++ struct loaded_l10nfile *domain;
++ struct binding *binding;
++ const char *categoryname;
++ const char *categoryvalue;
++ char *dirname, *xdomainname;
++ char *single_locale;
++ char *retval;
++ int saved_errno = errno;
++
++ /* If no real MSGID is given return NULL. */
++ if (msgid == NULL)
++ return NULL;
++
++ /* If DOMAINNAME is NULL, we are interested in the default domain. If
++ CATEGORY is not LC_MESSAGES this might not make much sense but the
++ defintion left this undefined. */
++ if (domainname == NULL)
++ domainname = _nl_current_default_domain;
++
++ /* First find matching binding. */
++ for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
++ {
++ int compare = strcmp (domainname, binding->domainname);
++ if (compare == 0)
++ /* We found it! */
++ break;
++ if (compare < 0)
++ {
++ /* It is not in the list. */
++ binding = NULL;
++ break;
++ }
++ }
++
++ if (binding == NULL)
++ dirname = (char *) _nl_default_dirname;
++ else if (binding->dirname[0] == '/')
++ dirname = binding->dirname;
++ else
++ {
++ /* We have a relative path. Make it absolute now. */
++ size_t dirname_len = strlen (binding->dirname) + 1;
++ size_t path_max;
++ char *ret;
++
++ path_max = (unsigned) PATH_MAX;
++ path_max += 2; /* The getcwd docs say to do this. */
++
++ dirname = (char *) alloca (path_max + dirname_len);
++ ADD_BLOCK (block_list, dirname);
++
++ __set_errno (0);
++ while ((ret = getcwd (dirname, path_max)) == NULL && errno == ERANGE)
++ {
++ path_max += PATH_INCR;
++ dirname = (char *) alloca (path_max + dirname_len);
++ ADD_BLOCK (block_list, dirname);
++ __set_errno (0);
++ }
++
++ if (ret == NULL)
++ {
++ /* We cannot get the current working directory. Don't signal an
++ error but simply return the default string. */
++ FREE_BLOCKS (block_list);
++ __set_errno (saved_errno);
++ return (char *) msgid;
++ }
++
++ stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname);
++ }
++
++ /* Now determine the symbolic name of CATEGORY and its value. */
++ categoryname = category_to_name (category);
++ categoryvalue = guess_category_value (category, categoryname);
++
++ xdomainname = (char *) alloca (strlen (categoryname)
++ + strlen (domainname) + 5);
++ ADD_BLOCK (block_list, xdomainname);
++
++ stpcpy (stpcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"),
++ domainname),
++ ".mo");
++
++ /* Creating working area. */
++ single_locale = (char *) alloca (strlen (categoryvalue) + 1);
++ ADD_BLOCK (block_list, single_locale);
++
++
++ /* Search for the given string. This is a loop because we perhaps
++ got an ordered list of languages to consider for th translation. */
++ while (1)
++ {
++ /* Make CATEGORYVALUE point to the next element of the list. */
++ while (categoryvalue[0] != '\0' && categoryvalue[0] == ':')
++ ++categoryvalue;
++ if (categoryvalue[0] == '\0')
++ {
++ /* The whole contents of CATEGORYVALUE has been searched but
++ no valid entry has been found. We solve this situation
++ by implicitly appending a "C" entry, i.e. no translation
++ will take place. */
++ single_locale[0] = 'C';
++ single_locale[1] = '\0';
++ }
++ else
++ {
++ char *cp = single_locale;
++ while (categoryvalue[0] != '\0' && categoryvalue[0] != ':')
++ *cp++ = *categoryvalue++;
++ *cp = '\0';
++ }
++
++ /* If the current locale value is C (or POSIX) we don't load a
++ domain. Return the MSGID. */
++ if (strcmp (single_locale, "C") == 0
++ || strcmp (single_locale, "POSIX") == 0)
++ {
++ FREE_BLOCKS (block_list);
++ __set_errno (saved_errno);
++ return (char *) msgid;
++ }
++
++
++ /* Find structure describing the message catalog matching the
++ DOMAINNAME and CATEGORY. */
++ domain = _nl_find_domain (dirname, single_locale, xdomainname);
++
++ if (domain != NULL)
++ {
++ retval = find_msg (domain, msgid);
++
++ if (retval == NULL)
++ {
++ int cnt;
++
++ for (cnt = 0; domain->successor[cnt] != NULL; ++cnt)
++ {
++ retval = find_msg (domain->successor[cnt], msgid);
++
++ if (retval != NULL)
++ break;
++ }
++ }
++
++ if (retval != NULL)
++ {
++ FREE_BLOCKS (block_list);
++ __set_errno (saved_errno);
++ return retval;
++ }
++ }
++ }
++ /* NOTREACHED */
++}
++
++#ifdef _LIBC
++/* Alias for function name in GNU C Library. */
++weak_alias (__dcgettext, dcgettext);
++#endif
++
++
++static char *
++internal_function
++find_msg (domain_file, msgid)
++ struct loaded_l10nfile *domain_file;
++ const char *msgid;
++{
++ size_t top, act, bottom;
++ struct loaded_domain *domain;
++
++ if (domain_file->decided == 0)
++ _nl_load_domain (domain_file);
++
++ if (domain_file->data == NULL)
++ return NULL;
++
++ domain = (struct loaded_domain *) domain_file->data;
++
++ /* Locate the MSGID and its translation. */
++ if (domain->hash_size > 2 && domain->hash_tab != NULL)
++ {
++ /* Use the hashing table. */
++ nls_uint32 len = strlen (msgid);
++ nls_uint32 hash_val = hash_string (msgid);
++ nls_uint32 idx = hash_val % domain->hash_size;
++ nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
++ nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]);
++
++ if (nstr == 0)
++ /* Hash table entry is empty. */
++ return NULL;
++
++ if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len
++ && strcmp (msgid,
++ domain->data + W (domain->must_swap,
++ domain->orig_tab[nstr - 1].offset)) == 0)
++ return (char *) domain->data + W (domain->must_swap,
++ domain->trans_tab[nstr - 1].offset);
++
++ while (1)
++ {
++ if (idx >= domain->hash_size - incr)
++ idx -= domain->hash_size - incr;
++ else
++ idx += incr;
++
++ nstr = W (domain->must_swap, domain->hash_tab[idx]);
++ if (nstr == 0)
++ /* Hash table entry is empty. */
++ return NULL;
++
++ if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len
++ && strcmp (msgid,
++ domain->data + W (domain->must_swap,
++ domain->orig_tab[nstr - 1].offset))
++ == 0)
++ return (char *) domain->data
++ + W (domain->must_swap, domain->trans_tab[nstr - 1].offset);
++ }
++ /* NOTREACHED */
++ }
++
++ /* Now we try the default method: binary search in the sorted
++ array of messages. */
++ bottom = 0;
++ top = domain->nstrings;
++ while (bottom < top)
++ {
++ int cmp_val;
++
++ act = (bottom + top) / 2;
++ cmp_val = strcmp (msgid, domain->data
++ + W (domain->must_swap,
++ domain->orig_tab[act].offset));
++ if (cmp_val < 0)
++ top = act;
++ else if (cmp_val > 0)
++ bottom = act + 1;
++ else
++ break;
++ }
++
++ /* If an translation is found return this. */
++ return bottom >= top ? NULL : (char *) domain->data
++ + W (domain->must_swap,
++ domain->trans_tab[act].offset);
++}
++
++
++/* Return string representation of locale CATEGORY. */
++static const char *
++internal_function
++category_to_name (category)
++ int category;
++{
++ const char *retval;
++
++ switch (category)
++ {
++#ifdef LC_COLLATE
++ case LC_COLLATE:
++ retval = "LC_COLLATE";
++ break;
++#endif
++#ifdef LC_CTYPE
++ case LC_CTYPE:
++ retval = "LC_CTYPE";
++ break;
++#endif
++#ifdef LC_MONETARY
++ case LC_MONETARY:
++ retval = "LC_MONETARY";
++ break;
++#endif
++#ifdef LC_NUMERIC
++ case LC_NUMERIC:
++ retval = "LC_NUMERIC";
++ break;
++#endif
++#ifdef LC_TIME
++ case LC_TIME:
++ retval = "LC_TIME";
++ break;
++#endif
++#ifdef LC_MESSAGES
++ case LC_MESSAGES:
++ retval = "LC_MESSAGES";
++ break;
++#endif
++#ifdef LC_RESPONSE
++ case LC_RESPONSE:
++ retval = "LC_RESPONSE";
++ break;
++#endif
++#ifdef LC_ALL
++ case LC_ALL:
++ /* This might not make sense but is perhaps better than any other
++ value. */
++ retval = "LC_ALL";
++ break;
++#endif
++ default:
++ /* If you have a better idea for a default value let me know. */
++ retval = "LC_XXX";
++ }
++
++ return retval;
++}
++
++/* Guess value of current locale from value of the environment variables. */
++static const char *
++internal_function
++guess_category_value (category, categoryname)
++ int category;
++ const char *categoryname;
++{
++ const char *retval;
++
++ /* The highest priority value is the `LANGUAGE' environment
++ variable. This is a GNU extension. */
++ retval = getenv ("LANGUAGE");
++ if (retval != NULL && retval[0] != '\0')
++ return retval;
++
++ /* `LANGUAGE' is not set. So we have to proceed with the POSIX
++ methods of looking to `LC_ALL', `LC_xxx', and `LANG'. On some
++ systems this can be done by the `setlocale' function itself. */
++#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL
++ return setlocale (category, NULL);
++#else
++ /* Setting of LC_ALL overwrites all other. */
++ retval = getenv ("LC_ALL");
++ if (retval != NULL && retval[0] != '\0')
++ return retval;
++
++ /* Next comes the name of the desired category. */
++ retval = getenv (categoryname);
++ if (retval != NULL && retval[0] != '\0')
++ return retval;
++
++ /* Last possibility is the LANG environment variable. */
++ retval = getenv ("LANG");
++ if (retval != NULL && retval[0] != '\0')
++ return retval;
++
++ /* We use C as the default domain. POSIX says this is implementation
++ defined. */
++ return "C";
++#endif
++}
++
++/* @@ begin of epilog @@ */
++
++/* We don't want libintl.a to depend on any other library. So we
++ avoid the non-standard function stpcpy. In GNU C Library this
++ function is available, though. Also allow the symbol HAVE_STPCPY
++ to be defined. */
++#if !_LIBC && !HAVE_STPCPY
++static char *
++stpcpy (dest, src)
++ char *dest;
++ const char *src;
++{
++ while ((*dest++ = *src++) != '\0')
++ /* Do nothing. */ ;
++ return dest - 1;
++}
++#endif
++
++
++#ifdef _LIBC
++/* If we want to free all resources we have to do some work at
++ program's end. */
++static void __attribute__ ((unused))
++free_mem (void)
++{
++ struct binding *runp;
++
++ for (runp = _nl_domain_bindings; runp != NULL; runp = runp->next)
++ {
++ free (runp->domainname);
++ if (runp->dirname != _nl_default_dirname)
++ /* Yes, this is a pointer comparison. */
++ free (runp->dirname);
++ }
++
++ if (_nl_current_default_domain != _nl_default_default_domain)
++ /* Yes, again a pointer comparison. */
++ free ((char *) _nl_current_default_domain);
++}
++
++text_set_element (__libc_subfreeres, free_mem);
++#endif
+diff -urP gtkhtml-0.8.3.orig/intl/dgettext.c gtkhtml-0.8.3/intl/dgettext.c
+--- gtkhtml-0.8.3.orig/intl/dgettext.c Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/dgettext.c Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,59 @@
++/* Implementation of the dgettext(3) function
++ Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
++
++ 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 program; if not, write to the Free Software Foundation,
++ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++#if defined HAVE_LOCALE_H || defined _LIBC
++# include <locale.h>
++#endif
++
++#ifdef _LIBC
++# include <libintl.h>
++#else
++# include "libgettext.h"
++#endif
++
++/* @@ end of prolog @@ */
++
++/* Names for the libintl functions are a problem. They must not clash
++ with existing names and they should follow ANSI C. But this source
++ code is also used in GNU C Library where the names have a __
++ prefix. So we have to make a difference here. */
++#ifdef _LIBC
++# define DGETTEXT __dgettext
++# define DCGETTEXT __dcgettext
++#else
++# define DGETTEXT dgettext__
++# define DCGETTEXT dcgettext__
++#endif
++
++/* Look up MSGID in the DOMAINNAME message catalog of the current
++ LC_MESSAGES locale. */
++char *
++DGETTEXT (domainname, msgid)
++ const char *domainname;
++ const char *msgid;
++{
++ return DCGETTEXT (domainname, msgid, LC_MESSAGES);
++}
++
++#ifdef _LIBC
++/* Alias for function name in GNU C Library. */
++weak_alias (__dgettext, dgettext);
++#endif
+diff -urP gtkhtml-0.8.3.orig/intl/explodename.c gtkhtml-0.8.3/intl/explodename.c
+--- gtkhtml-0.8.3.orig/intl/explodename.c Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/explodename.c Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,188 @@
++/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
++ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
++
++ 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 program; if not, write to the Free Software Foundation,
++ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++#if defined STDC_HEADERS || defined _LIBC
++# include <stdlib.h>
++#endif
++
++#if defined HAVE_STRING_H || defined _LIBC
++# include <string.h>
++#else
++# include <strings.h>
++#endif
++#include <sys/types.h>
++
++#include "loadinfo.h"
++
++/* On some strange systems still no definition of NULL is found. Sigh! */
++#ifndef NULL
++# if defined __STDC__ && __STDC__
++# define NULL ((void *) 0)
++# else
++# define NULL 0
++# endif
++#endif
++
++/* @@ end of prolog @@ */
++
++int
++_nl_explode_name (name, language, modifier, territory, codeset,
++ normalized_codeset, special, sponsor, revision)
++ char *name;
++ const char **language;
++ const char **modifier;
++ const char **territory;
++ const char **codeset;
++ const char **normalized_codeset;
++ const char **special;
++ const char **sponsor;
++ const char **revision;
++{
++ enum { undecided, xpg, cen } syntax;
++ char *cp;
++ int mask;
++
++ *modifier = NULL;
++ *territory = NULL;
++ *codeset = NULL;
++ *normalized_codeset = NULL;
++ *special = NULL;
++ *sponsor = NULL;
++ *revision = NULL;
++
++ /* Now we determine the single parts of the locale name. First
++ look for the language. Termination symbols are `_' and `@' if
++ we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */
++ mask = 0;
++ syntax = undecided;
++ *language = cp = name;
++ while (cp[0] != '\0' && cp[0] != '_' && cp[0] != '@'
++ && cp[0] != '+' && cp[0] != ',')
++ ++cp;
++
++ if (*language == cp)
++ /* This does not make sense: language has to be specified. Use
++ this entry as it is without exploding. Perhaps it is an alias. */
++ cp = strchr (*language, '\0');
++ else if (cp[0] == '_')
++ {
++ /* Next is the territory. */
++ cp[0] = '\0';
++ *territory = ++cp;
++
++ while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@'
++ && cp[0] != '+' && cp[0] != ',' && cp[0] != '_')
++ ++cp;
++
++ mask |= TERRITORY;
++
++ if (cp[0] == '.')
++ {
++ /* Next is the codeset. */
++ syntax = xpg;
++ cp[0] = '\0';
++ *codeset = ++cp;
++
++ while (cp[0] != '\0' && cp[0] != '@')
++ ++cp;
++
++ mask |= XPG_CODESET;
++
++ if (*codeset != cp && (*codeset)[0] != '\0')
++ {
++ *normalized_codeset = _nl_normalize_codeset (*codeset,
++ cp - *codeset);
++ if (strcmp (*codeset, *normalized_codeset) == 0)
++ free ((char *) *normalized_codeset);
++ else
++ mask |= XPG_NORM_CODESET;
++ }
++ }
++ }
++
++ if (cp[0] == '@' || (syntax != xpg && cp[0] == '+'))
++ {
++ /* Next is the modifier. */
++ syntax = cp[0] == '@' ? xpg : cen;
++ cp[0] = '\0';
++ *modifier = ++cp;
++
++ while (syntax == cen && cp[0] != '\0' && cp[0] != '+'
++ && cp[0] != ',' && cp[0] != '_')
++ ++cp;
++
++ mask |= XPG_MODIFIER | CEN_AUDIENCE;
++ }
++
++ if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_'))
++ {
++ syntax = cen;
++
++ if (cp[0] == '+')
++ {
++ /* Next is special application (CEN syntax). */
++ cp[0] = '\0';
++ *special = ++cp;
++
++ while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_')
++ ++cp;
++
++ mask |= CEN_SPECIAL;
++ }
++
++ if (cp[0] == ',')
++ {
++ /* Next is sponsor (CEN syntax). */
++ cp[0] = '\0';
++ *sponsor = ++cp;
++
++ while (cp[0] != '\0' && cp[0] != '_')
++ ++cp;
++
++ mask |= CEN_SPONSOR;
++ }
++
++ if (cp[0] == '_')
++ {
++ /* Next is revision (CEN syntax). */
++ cp[0] = '\0';
++ *revision = ++cp;
++
++ mask |= CEN_REVISION;
++ }
++ }
++
++ /* For CEN syntax values it might be important to have the
++ separator character in the file name, not for XPG syntax. */
++ if (syntax == xpg)
++ {
++ if (*territory != NULL && (*territory)[0] == '\0')
++ mask &= ~TERRITORY;
++
++ if (*codeset != NULL && (*codeset)[0] == '\0')
++ mask &= ~XPG_CODESET;
++
++ if (*modifier != NULL && (*modifier)[0] == '\0')
++ mask &= ~XPG_MODIFIER;
++ }
++
++ return mask;
++}
+diff -urP gtkhtml-0.8.3.orig/intl/finddomain.c gtkhtml-0.8.3/intl/finddomain.c
+--- gtkhtml-0.8.3.orig/intl/finddomain.c Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/finddomain.c Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,216 @@
++/* Handle list of needed message catalogs
++ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
++ Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
++
++ 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 program; if not, write to the Free Software Foundation,
++ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++#include <ctype.h>
++#include <errno.h>
++#include <stdio.h>
++#include <sys/types.h>
++
++#if defined STDC_HEADERS || defined _LIBC
++# include <stdlib.h>
++#else
++# ifdef HAVE_MALLOC_H
++# include <malloc.h>
++# else
++void free ();
++# endif
++#endif
++
++#if defined HAVE_STRING_H || defined _LIBC
++# include <string.h>
++#else
++# include <strings.h>
++# ifndef memcpy
++# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
++# endif
++#endif
++#if !HAVE_STRCHR && !defined _LIBC
++# ifndef strchr
++# define strchr index
++# endif
++#endif
++
++#if defined HAVE_UNISTD_H || defined _LIBC
++# include <unistd.h>
++#endif
++
++#include "gettext.h"
++#include "gettextP.h"
++#ifdef _LIBC
++# include <libintl.h>
++#else
++# include "libgettext.h"
++#endif
++
++/* @@ end of prolog @@ */
++/* List of already loaded domains. */
++static struct loaded_l10nfile *_nl_loaded_domains;
++
++
++/* Return a data structure describing the message catalog described by
++ the DOMAINNAME and CATEGORY parameters with respect to the currently
++ established bindings. */
++struct loaded_l10nfile *
++internal_function
++_nl_find_domain (dirname, locale, domainname)
++ const char *dirname;
++ char *locale;
++ const char *domainname;
++{
++ struct loaded_l10nfile *retval;
++ const char *language;
++ const char *modifier;
++ const char *territory;
++ const char *codeset;
++ const char *normalized_codeset;
++ const char *special;
++ const char *sponsor;
++ const char *revision;
++ const char *alias_value;
++ int mask;
++
++ /* LOCALE can consist of up to four recognized parts for the XPG syntax:
++
++ language[_territory[.codeset]][@modifier]
++
++ and six parts for the CEN syntax:
++
++ language[_territory][+audience][+special][,[sponsor][_revision]]
++
++ Beside the first part all of them are allowed to be missing. If
++ the full specified locale is not found, the less specific one are
++ looked for. The various parts will be stripped off according to
++ the following order:
++ (1) revision
++ (2) sponsor
++ (3) special
++ (4) codeset
++ (5) normalized codeset
++ (6) territory
++ (7) audience/modifier
++ */
++
++ /* If we have already tested for this locale entry there has to
++ be one data set in the list of loaded domains. */
++ retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
++ strlen (dirname) + 1, 0, locale, NULL, NULL,
++ NULL, NULL, NULL, NULL, NULL, domainname, 0);
++ if (retval != NULL)
++ {
++ /* We know something about this locale. */
++ int cnt;
++
++ if (retval->decided == 0)
++ _nl_load_domain (retval);
++
++ if (retval->data != NULL)
++ return retval;
++
++ for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
++ {
++ if (retval->successor[cnt]->decided == 0)
++ _nl_load_domain (retval->successor[cnt]);
++
++ if (retval->successor[cnt]->data != NULL)
++ break;
++ }
++ return cnt >= 0 ? retval : NULL;
++ /* NOTREACHED */
++ }
++
++ /* See whether the locale value is an alias. If yes its value
++ *overwrites* the alias name. No test for the original value is
++ done. */
++ alias_value = _nl_expand_alias (locale);
++ if (alias_value != NULL)
++ {
++#if defined _LIBC || defined HAVE_STRDUP
++ locale = strdup (alias_value);
++ if (locale == NULL)
++ return NULL;
++#else
++ size_t len = strlen (alias_value) + 1;
++ locale = (char *) malloc (len);
++ if (locale == NULL)
++ return NULL;
++
++ memcpy (locale, alias_value, len);
++#endif
++ }
++
++ /* Now we determine the single parts of the locale name. First
++ look for the language. Termination symbols are `_' and `@' if
++ we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */
++ mask = _nl_explode_name (locale, &language, &modifier, &territory,
++ &codeset, &normalized_codeset, &special,
++ &sponsor, &revision);
++
++ /* Create all possible locale entries which might be interested in
++ generalization. */
++ retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
++ strlen (dirname) + 1, mask, language, territory,
++ codeset, normalized_codeset, modifier, special,
++ sponsor, revision, domainname, 1);
++ if (retval == NULL)
++ /* This means we are out of core. */
++ return NULL;
++
++ if (retval->decided == 0)
++ _nl_load_domain (retval);
++ if (retval->data == NULL)
++ {
++ int cnt;
++ for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
++ {
++ if (retval->successor[cnt]->decided == 0)
++ _nl_load_domain (retval->successor[cnt]);
++ if (retval->successor[cnt]->data != NULL)
++ break;
++ }
++ }
++
++ /* The room for an alias was dynamically allocated. Free it now. */
++ if (alias_value != NULL)
++ free (locale);
++
++ return retval;
++}
++
++
++#ifdef _LIBC
++static void __attribute__ ((unused))
++free_mem (void)
++{
++ struct loaded_l10nfile *runp = _nl_loaded_domains;
++
++ while (runp != NULL)
++ {
++ struct loaded_l10nfile *here = runp;
++ if (runp->data != NULL)
++ _nl_unload_domain ((struct loaded_domain *) runp->data);
++ runp = runp->next;
++ free (here);
++ }
++}
++
++text_set_element (__libc_subfreeres, free_mem);
++#endif
+diff -urP gtkhtml-0.8.3.orig/intl/gettext.c gtkhtml-0.8.3/intl/gettext.c
+--- gtkhtml-0.8.3.orig/intl/gettext.c Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/gettext.c Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,70 @@
++/* Implementation of gettext(3) function.
++ Copyright (C) 1995, 1997 Free Software Foundation, Inc.
++
++ 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 program; if not, write to the Free Software Foundation,
++ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++#ifdef _LIBC
++# define __need_NULL
++# include <stddef.h>
++#else
++# ifdef STDC_HEADERS
++# include <stdlib.h> /* Just for NULL. */
++# else
++# ifdef HAVE_STRING_H
++# include <string.h>
++# else
++# define NULL ((void *) 0)
++# endif
++# endif
++#endif
++
++#ifdef _LIBC
++# include <libintl.h>
++#else
++# include "libgettext.h"
++#endif
++
++/* @@ end of prolog @@ */
++
++/* Names for the libintl functions are a problem. They must not clash
++ with existing names and they should follow ANSI C. But this source
++ code is also used in GNU C Library where the names have a __
++ prefix. So we have to make a difference here. */
++#ifdef _LIBC
++# define GETTEXT __gettext
++# define DGETTEXT __dgettext
++#else
++# define GETTEXT gettext__
++# define DGETTEXT dgettext__
++#endif
++
++/* Look up MSGID in the current default message catalog for the current
++ LC_MESSAGES locale. If not found, returns MSGID itself (the default
++ text). */
++char *
++GETTEXT (msgid)
++ const char *msgid;
++{
++ return DGETTEXT (NULL, msgid);
++}
++
++#ifdef _LIBC
++/* Alias for function name in GNU C Library. */
++weak_alias (__gettext, gettext);
++#endif
+diff -urP gtkhtml-0.8.3.orig/intl/gettext.h gtkhtml-0.8.3/intl/gettext.h
+--- gtkhtml-0.8.3.orig/intl/gettext.h Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/gettext.h Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,105 @@
++/* Internal header for GNU gettext internationalization functions.
++ Copyright (C) 1995, 1997 Free Software Foundation, Inc.
++
++ 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 Library General Public
++ License along with the GNU C Library; see the file COPYING.LIB. If not,
++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA. */
++
++#ifndef _GETTEXT_H
++#define _GETTEXT_H 1
++
++#include <stdio.h>
++
++#if HAVE_LIMITS_H || _LIBC
++# include <limits.h>
++#endif
++
++/* @@ end of prolog @@ */
++
++/* The magic number of the GNU message catalog format. */
++#define _MAGIC 0x950412de
++#define _MAGIC_SWAPPED 0xde120495
++
++/* Revision number of the currently used .mo (binary) file format. */
++#define MO_REVISION_NUMBER 0
++
++/* The following contortions are an attempt to use the C preprocessor
++ to determine an unsigned integral type that is 32 bits wide. An
++ alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
++ doing that would require that the configure script compile and *run*
++ the resulting executable. Locally running cross-compiled executables
++ is usually not possible. */
++
++#if __STDC__
++# define UINT_MAX_32_BITS 4294967295U
++#else
++# define UINT_MAX_32_BITS 0xFFFFFFFF
++#endif
++
++/* If UINT_MAX isn't defined, assume it's a 32-bit type.
++ This should be valid for all systems GNU cares about because
++ that doesn't include 16-bit systems, and only modern systems
++ (that certainly have <limits.h>) have 64+-bit integral types. */
++
++#ifndef UINT_MAX
++# define UINT_MAX UINT_MAX_32_BITS
++#endif
++
++#if UINT_MAX == UINT_MAX_32_BITS
++typedef unsigned nls_uint32;
++#else
++# if USHRT_MAX == UINT_MAX_32_BITS
++typedef unsigned short nls_uint32;
++# else
++# if ULONG_MAX == UINT_MAX_32_BITS
++typedef unsigned long nls_uint32;
++# else
++ /* The following line is intended to throw an error. Using #error is
++ not portable enough. */
++ "Cannot determine unsigned 32-bit data type."
++# endif
++# endif
++#endif
++
++
++/* Header for binary .mo file format. */
++struct mo_file_header
++{
++ /* The magic number. */
++ nls_uint32 magic;
++ /* The revision number of the file format. */
++ nls_uint32 revision;
++ /* The number of strings pairs. */
++ nls_uint32 nstrings;
++ /* Offset of table with start offsets of original strings. */
++ nls_uint32 orig_tab_offset;
++ /* Offset of table with start offsets of translation strings. */
++ nls_uint32 trans_tab_offset;
++ /* Size of hashing table. */
++ nls_uint32 hash_tab_size;
++ /* Offset of first hashing entry. */
++ nls_uint32 hash_tab_offset;
++};
++
++struct string_desc
++{
++ /* Length of addressed string. */
++ nls_uint32 length;
++ /* Offset of string in file. */
++ nls_uint32 offset;
++};
++
++/* @@ begin of epilog @@ */
++
++#endif /* gettext.h */
+diff -urP gtkhtml-0.8.3.orig/intl/gettextP.h gtkhtml-0.8.3/intl/gettextP.h
+--- gtkhtml-0.8.3.orig/intl/gettextP.h Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/gettextP.h Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,89 @@
++/* Header describing internals of gettext library
++ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
++ Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
++
++ 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 program; if not, write to the Free Software Foundation,
++ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++#ifndef _GETTEXTP_H
++#define _GETTEXTP_H
++
++#include "loadinfo.h"
++
++/* @@ end of prolog @@ */
++
++#ifndef PARAMS
++# if __STDC__
++# define PARAMS(args) args
++# else
++# define PARAMS(args) ()
++# endif
++#endif
++
++#ifndef internal_function
++# define internal_function
++#endif
++
++#ifndef W
++# define W(flag, data) ((flag) ? SWAP (data) : (data))
++#endif
++
++
++#ifdef _LIBC
++# include <byteswap.h>
++# define SWAP(i) bswap_32 (i)
++#else
++static nls_uint32 SWAP PARAMS ((nls_uint32 i));
++
++static inline nls_uint32
++SWAP (i)
++ nls_uint32 i;
++{
++ return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
++}
++#endif
++
++
++struct loaded_domain
++{
++ const char *data;
++ int use_mmap;
++ size_t mmap_size;
++ int must_swap;
++ nls_uint32 nstrings;
++ struct string_desc *orig_tab;
++ struct string_desc *trans_tab;
++ nls_uint32 hash_size;
++ nls_uint32 *hash_tab;
++};
++
++struct binding
++{
++ struct binding *next;
++ char *domainname;
++ char *dirname;
++};
++
++struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname,
++ char *__locale,
++ const char *__domainname))
++ internal_function;
++void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain))
++ internal_function;
++void _nl_unload_domain PARAMS ((struct loaded_domain *__domain))
++ internal_function;
++
++/* @@ begin of epilog @@ */
++
++#endif /* gettextP.h */
+diff -urP gtkhtml-0.8.3.orig/intl/hash-string.h gtkhtml-0.8.3/intl/hash-string.h
+--- gtkhtml-0.8.3.orig/intl/hash-string.h Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/hash-string.h Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,59 @@
++/* Implements a string hashing function.
++ Copyright (C) 1995, 1997 Free Software Foundation, Inc.
++
++ 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 Library General Public
++ License along with the GNU C Library; see the file COPYING.LIB. If not,
++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA. */
++
++/* @@ end of prolog @@ */
++
++#ifndef PARAMS
++# if __STDC__
++# define PARAMS(Args) Args
++# else
++# define PARAMS(Args) ()
++# endif
++#endif
++
++/* We assume to have `unsigned long int' value with at least 32 bits. */
++#define HASHWORDBITS 32
++
++
++/* Defines the so called `hashpjw' function by P.J. Weinberger
++ [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
++ 1986, 1987 Bell Telephone Laboratories, Inc.] */
++static unsigned long hash_string PARAMS ((const char *__str_param));
++
++static inline unsigned long
++hash_string (str_param)
++ const char *str_param;
++{
++ unsigned long int hval, g;
++ const char *str = str_param;
++
++ /* Compute the hash value for the given string. */
++ hval = 0;
++ while (*str != '\0')
++ {
++ hval <<= 4;
++ hval += (unsigned long) *str++;
++ g = hval & ((unsigned long) 0xf << (HASHWORDBITS - 4));
++ if (g != 0)
++ {
++ hval ^= g >> (HASHWORDBITS - 8);
++ hval ^= g;
++ }
++ }
++ return hval;
++}
+diff -urP gtkhtml-0.8.3.orig/intl/intl-compat.c gtkhtml-0.8.3/intl/intl-compat.c
+--- gtkhtml-0.8.3.orig/intl/intl-compat.c Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/intl-compat.c Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,76 @@
++/* intl-compat.c - Stub functions to call gettext functions from GNU gettext
++ Library.
++ Copyright (C) 1995 Software Foundation, Inc.
++
++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 program; if not, write to the Free Software
++Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++#include "libgettext.h"
++
++/* @@ end of prolog @@ */
++
++
++#undef gettext
++#undef dgettext
++#undef dcgettext
++#undef textdomain
++#undef bindtextdomain
++
++
++char *
++bindtextdomain (domainname, dirname)
++ const char *domainname;
++ const char *dirname;
++{
++ return bindtextdomain__ (domainname, dirname);
++}
++
++
++char *
++dcgettext (domainname, msgid, category)
++ const char *domainname;
++ const char *msgid;
++ int category;
++{
++ return dcgettext__ (domainname, msgid, category);
++}
++
++
++char *
++dgettext (domainname, msgid)
++ const char *domainname;
++ const char *msgid;
++{
++ return dgettext__ (domainname, msgid);
++}
++
++
++char *
++gettext (msgid)
++ const char *msgid;
++{
++ return gettext__ (msgid);
++}
++
++
++char *
++textdomain (domainname)
++ const char *domainname;
++{
++ return textdomain__ (domainname);
++}
+diff -urP gtkhtml-0.8.3.orig/intl/l10nflist.c gtkhtml-0.8.3/intl/l10nflist.c
+--- gtkhtml-0.8.3.orig/intl/l10nflist.c Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/l10nflist.c Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,411 @@
++/* Handle list of needed message catalogs
++ Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
++ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
++
++ 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 program; if not, write to the Free Software Foundation,
++ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++
++#if defined HAVE_STRING_H || defined _LIBC
++# ifndef _GNU_SOURCE
++# define _GNU_SOURCE 1
++# endif
++# include <string.h>
++#else
++# include <strings.h>
++# ifndef memcpy
++# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
++# endif
++#endif
++#if !HAVE_STRCHR && !defined _LIBC
++# ifndef strchr
++# define strchr index
++# endif
++#endif
++
++#if defined _LIBC || defined HAVE_ARGZ_H
++# include <argz.h>
++#endif
++#include <ctype.h>
++#include <sys/types.h>
++
++#if defined STDC_HEADERS || defined _LIBC
++# include <stdlib.h>
++#endif
++
++#include "loadinfo.h"
++
++/* On some strange systems still no definition of NULL is found. Sigh! */
++#ifndef NULL
++# if defined __STDC__ && __STDC__
++# define NULL ((void *) 0)
++# else
++# define NULL 0
++# endif
++#endif
++
++/* @@ end of prolog @@ */
++
++#ifdef _LIBC
++/* Rename the non ANSI C functions. This is required by the standard
++ because some ANSI C functions will require linking with this object
++ file and the name space must not be polluted. */
++# ifndef stpcpy
++# define stpcpy(dest, src) __stpcpy(dest, src)
++# endif
++#else
++# ifndef HAVE_STPCPY
++static char *stpcpy PARAMS ((char *dest, const char *src));
++# endif
++#endif
++
++/* Define function which are usually not available. */
++
++#if !defined _LIBC && !defined HAVE___ARGZ_COUNT
++/* Returns the number of strings in ARGZ. */
++static size_t argz_count__ PARAMS ((const char *argz, size_t len));
++
++static size_t
++argz_count__ (argz, len)
++ const char *argz;
++ size_t len;
++{
++ size_t count = 0;
++ while (len > 0)
++ {
++ size_t part_len = strlen (argz);
++ argz += part_len + 1;
++ len -= part_len + 1;
++ count++;
++ }
++ return count;
++}
++# undef __argz_count
++# define __argz_count(argz, len) argz_count__ (argz, len)
++#endif /* !_LIBC && !HAVE___ARGZ_COUNT */
++
++#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY
++/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's
++ except the last into the character SEP. */
++static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep));
++
++static void
++argz_stringify__ (argz, len, sep)
++ char *argz;
++ size_t len;
++ int sep;
++{
++ while (len > 0)
++ {
++ size_t part_len = strlen (argz);
++ argz += part_len;
++ len -= part_len + 1;
++ if (len > 0)
++ *argz++ = sep;
++ }
++}
++# undef __argz_stringify
++# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep)
++#endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */
++
++#if !defined _LIBC && !defined HAVE___ARGZ_NEXT
++static char *argz_next__ PARAMS ((char *argz, size_t argz_len,
++ const char *entry));
++
++static char *
++argz_next__ (argz, argz_len, entry)
++ char *argz;
++ size_t argz_len;
++ const char *entry;
++{
++ if (entry)
++ {
++ if (entry < argz + argz_len)
++ entry = strchr (entry, '\0') + 1;
++
++ return entry >= argz + argz_len ? NULL : (char *) entry;
++ }
++ else
++ if (argz_len > 0)
++ return argz;
++ else
++ return 0;
++}
++# undef __argz_next
++# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry)
++#endif /* !_LIBC && !HAVE___ARGZ_NEXT */
++
++
++/* Return number of bits set in X. */
++static int pop PARAMS ((int x));
++
++static inline int
++pop (x)
++ int x;
++{
++ /* We assume that no more than 16 bits are used. */
++ x = ((x & ~0x5555) >> 1) + (x & 0x5555);
++ x = ((x & ~0x3333) >> 2) + (x & 0x3333);
++ x = ((x >> 4) + x) & 0x0f0f;
++ x = ((x >> 8) + x) & 0xff;
++
++ return x;
++}
++
++
++struct loaded_l10nfile *
++_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language,
++ territory, codeset, normalized_codeset, modifier, special,
++ sponsor, revision, filename, do_allocate)
++ struct loaded_l10nfile **l10nfile_list;
++ const char *dirlist;
++ size_t dirlist_len;
++ int mask;
++ const char *language;
++ const char *territory;
++ const char *codeset;
++ const char *normalized_codeset;
++ const char *modifier;
++ const char *special;
++ const char *sponsor;
++ const char *revision;
++ const char *filename;
++ int do_allocate;
++{
++ char *abs_filename;
++ struct loaded_l10nfile *last = NULL;
++ struct loaded_l10nfile *retval;
++ char *cp;
++ size_t entries;
++ int cnt;
++
++ /* Allocate room for the full file name. */
++ abs_filename = (char *) malloc (dirlist_len
++ + strlen (language)
++ + ((mask & TERRITORY) != 0
++ ? strlen (territory) + 1 : 0)
++ + ((mask & XPG_CODESET) != 0
++ ? strlen (codeset) + 1 : 0)
++ + ((mask & XPG_NORM_CODESET) != 0
++ ? strlen (normalized_codeset) + 1 : 0)
++ + (((mask & XPG_MODIFIER) != 0
++ || (mask & CEN_AUDIENCE) != 0)
++ ? strlen (modifier) + 1 : 0)
++ + ((mask & CEN_SPECIAL) != 0
++ ? strlen (special) + 1 : 0)
++ + (((mask & CEN_SPONSOR) != 0
++ || (mask & CEN_REVISION) != 0)
++ ? (1 + ((mask & CEN_SPONSOR) != 0
++ ? strlen (sponsor) + 1 : 0)
++ + ((mask & CEN_REVISION) != 0
++ ? strlen (revision) + 1 : 0)) : 0)
++ + 1 + strlen (filename) + 1);
++
++ if (abs_filename == NULL)
++ return NULL;
++
++ retval = NULL;
++ last = NULL;
++
++ /* Construct file name. */
++ memcpy (abs_filename, dirlist, dirlist_len);
++ __argz_stringify (abs_filename, dirlist_len, ':');
++ cp = abs_filename + (dirlist_len - 1);
++ *cp++ = '/';
++ cp = stpcpy (cp, language);
++
++ if ((mask & TERRITORY) != 0)
++ {
++ *cp++ = '_';
++ cp = stpcpy (cp, territory);
++ }
++ if ((mask & XPG_CODESET) != 0)
++ {
++ *cp++ = '.';
++ cp = stpcpy (cp, codeset);
++ }
++ if ((mask & XPG_NORM_CODESET) != 0)
++ {
++ *cp++ = '.';
++ cp = stpcpy (cp, normalized_codeset);
++ }
++ if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0)
++ {
++ /* This component can be part of both syntaces but has different
++ leading characters. For CEN we use `+', else `@'. */
++ *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@';
++ cp = stpcpy (cp, modifier);
++ }
++ if ((mask & CEN_SPECIAL) != 0)
++ {
++ *cp++ = '+';
++ cp = stpcpy (cp, special);
++ }
++ if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0)
++ {
++ *cp++ = ',';
++ if ((mask & CEN_SPONSOR) != 0)
++ cp = stpcpy (cp, sponsor);
++ if ((mask & CEN_REVISION) != 0)
++ {
++ *cp++ = '_';
++ cp = stpcpy (cp, revision);
++ }
++ }
++
++ *cp++ = '/';
++ stpcpy (cp, filename);
++
++ /* Look in list of already loaded domains whether it is already
++ available. */
++ last = NULL;
++ for (retval = *l10nfile_list; retval != NULL; retval = retval->next)
++ if (retval->filename != NULL)
++ {
++ int compare = strcmp (retval->filename, abs_filename);
++ if (compare == 0)
++ /* We found it! */
++ break;
++ if (compare < 0)
++ {
++ /* It's not in the list. */
++ retval = NULL;
++ break;
++ }
++
++ last = retval;
++ }
++
++ if (retval != NULL || do_allocate == 0)
++ {
++ free (abs_filename);
++ return retval;
++ }
++
++ retval = (struct loaded_l10nfile *)
++ malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len)
++ * (1 << pop (mask))
++ * sizeof (struct loaded_l10nfile *)));
++ if (retval == NULL)
++ return NULL;
++
++ retval->filename = abs_filename;
++ retval->decided = (__argz_count (dirlist, dirlist_len) != 1
++ || ((mask & XPG_CODESET) != 0
++ && (mask & XPG_NORM_CODESET) != 0));
++ retval->data = NULL;
++
++ if (last == NULL)
++ {
++ retval->next = *l10nfile_list;
++ *l10nfile_list = retval;
++ }
++ else
++ {
++ retval->next = last->next;
++ last->next = retval;
++ }
++
++ entries = 0;
++ /* If the DIRLIST is a real list the RETVAL entry corresponds not to
++ a real file. So we have to use the DIRLIST separation mechanism
++ of the inner loop. */
++ cnt = __argz_count (dirlist, dirlist_len) == 1 ? mask - 1 : mask;
++ for (; cnt >= 0; --cnt)
++ if ((cnt & ~mask) == 0
++ && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0)
++ && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0))
++ {
++ /* Iterate over all elements of the DIRLIST. */
++ char *dir = NULL;
++
++ while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir))
++ != NULL)
++ retval->successor[entries++]
++ = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, cnt,
++ language, territory, codeset,
++ normalized_codeset, modifier, special,
++ sponsor, revision, filename, 1);
++ }
++ retval->successor[entries] = NULL;
++
++ return retval;
++}
++
++/* Normalize codeset name. There is no standard for the codeset
++ names. Normalization allows the user to use any of the common
++ names. */
++const char *
++_nl_normalize_codeset (codeset, name_len)
++ const unsigned char *codeset;
++ size_t name_len;
++{
++ int len = 0;
++ int only_digit = 1;
++ char *retval;
++ char *wp;
++ size_t cnt;
++
++ for (cnt = 0; cnt < name_len; ++cnt)
++ if (isalnum (codeset[cnt]))
++ {
++ ++len;
++
++ if (isalpha (codeset[cnt]))
++ only_digit = 0;
++ }
++
++ retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1);
++
++ if (retval != NULL)
++ {
++ if (only_digit)
++ wp = stpcpy (retval, "iso");
++ else
++ wp = retval;
++
++ for (cnt = 0; cnt < name_len; ++cnt)
++ if (isalpha (codeset[cnt]))
++ *wp++ = tolower (codeset[cnt]);
++ else if (isdigit (codeset[cnt]))
++ *wp++ = codeset[cnt];
++
++ *wp = '\0';
++ }
++
++ return (const char *) retval;
++}
++
++
++/* @@ begin of epilog @@ */
++
++/* We don't want libintl.a to depend on any other library. So we
++ avoid the non-standard function stpcpy. In GNU C Library this
++ function is available, though. Also allow the symbol HAVE_STPCPY
++ to be defined. */
++#if !_LIBC && !HAVE_STPCPY
++static char *
++stpcpy (dest, src)
++ char *dest;
++ const char *src;
++{
++ while ((*dest++ = *src++) != '\0')
++ /* Do nothing. */ ;
++ return dest - 1;
++}
++#endif
+diff -urP gtkhtml-0.8.3.orig/intl/libgettext.h gtkhtml-0.8.3/intl/libgettext.h
+--- gtkhtml-0.8.3.orig/intl/libgettext.h Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/libgettext.h Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,182 @@
++/* Message catalogs for internationalization.
++ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
++
++ 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 program; if not, write to the Free Software Foundation,
++ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++/* Because on some systems (e.g. Solaris) we sometimes have to include
++ the systems libintl.h as well as this file we have more complex
++ include protection above. But the systems header might perhaps also
++ define _LIBINTL_H and therefore we have to protect the definition here. */
++
++#if !defined _LIBINTL_H || !defined _LIBGETTEXT_H
++#ifndef _LIBINTL_H
++# define _LIBINTL_H 1
++#endif
++#define _LIBGETTEXT_H 1
++
++/* We define an additional symbol to signal that we use the GNU
++ implementation of gettext. */
++#define __USE_GNU_GETTEXT 1
++
++#include <sys/types.h>
++
++#if HAVE_LOCALE_H
++# include <locale.h>
++#endif
++
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++/* @@ end of prolog @@ */
++
++#ifndef PARAMS
++# if __STDC__ || defined __cplusplus
++# define PARAMS(args) args
++# else
++# define PARAMS(args) ()
++# endif
++#endif
++
++#ifndef NULL
++# if !defined __cplusplus || defined __GNUC__
++# define NULL ((void *) 0)
++# else
++# define NULL (0)
++# endif
++#endif
++
++#if !HAVE_LC_MESSAGES
++/* This value determines the behaviour of the gettext() and dgettext()
++ function. But some system does not have this defined. Define it
++ to a default value. */
++# define LC_MESSAGES (-1)
++#endif
++
++
++/* Declarations for gettext-using-catgets interface. Derived from
++ Jim Meyering's libintl.h. */
++struct _msg_ent
++{
++ const char *_msg;
++ int _msg_number;
++};
++
++
++#if HAVE_CATGETS
++/* These two variables are defined in the automatically by po-to-tbl.sed
++ generated file `cat-id-tbl.c'. */
++extern const struct _msg_ent _msg_tbl[];
++extern int _msg_tbl_length;
++#endif
++
++
++/* For automatical extraction of messages sometimes no real
++ translation is needed. Instead the string itself is the result. */
++#define gettext_noop(Str) (Str)
++
++/* Look up MSGID in the current default message catalog for the current
++ LC_MESSAGES locale. If not found, returns MSGID itself (the default
++ text). */
++extern char *gettext PARAMS ((const char *__msgid));
++extern char *gettext__ PARAMS ((const char *__msgid));
++
++/* Look up MSGID in the DOMAINNAME message catalog for the current
++ LC_MESSAGES locale. */
++extern char *dgettext PARAMS ((const char *__domainname, const char *__msgid));
++extern char *dgettext__ PARAMS ((const char *__domainname,
++ const char *__msgid));
++
++/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
++ locale. */
++extern char *dcgettext PARAMS ((const char *__domainname, const char *__msgid,
++ int __category));
++extern char *dcgettext__ PARAMS ((const char *__domainname,
++ const char *__msgid, int __category));
++
++
++/* Set the current default message catalog to DOMAINNAME.
++ If DOMAINNAME is null, return the current default.
++ If DOMAINNAME is "", reset to the default of "messages". */
++extern char *textdomain PARAMS ((const char *__domainname));
++extern char *textdomain__ PARAMS ((const char *__domainname));
++
++/* Specify that the DOMAINNAME message catalog will be found
++ in DIRNAME rather than in the system locale data base. */
++extern char *bindtextdomain PARAMS ((const char *__domainname,
++ const char *__dirname));
++extern char *bindtextdomain__ PARAMS ((const char *__domainname,
++ const char *__dirname));
++
++#if ENABLE_NLS
++
++/* Solaris 2.3 has the gettext function but dcgettext is missing.
++ So we omit this optimization for Solaris 2.3. BTW, Solaris 2.4
++ has dcgettext. */
++# if !HAVE_CATGETS && (!HAVE_GETTEXT || HAVE_DCGETTEXT)
++
++# define gettext(Msgid) \
++ dgettext (NULL, Msgid)
++
++# define dgettext(Domainname, Msgid) \
++ dcgettext (Domainname, Msgid, LC_MESSAGES)
++
++# if defined __GNUC__ && __GNUC__ == 2 && __GNUC_MINOR__ >= 7
++/* This global variable is defined in loadmsgcat.c. We need a sign,
++ whether a new catalog was loaded, which can be associated with all
++ translations. */
++extern int _nl_msg_cat_cntr;
++
++# define dcgettext(Domainname, Msgid, Category) \
++ (__extension__ \
++ ({ \
++ char *__result; \
++ if (__builtin_constant_p (Msgid)) \
++ { \
++ static char *__translation__; \
++ static int __catalog_counter__; \
++ if (! __translation__ || __catalog_counter__ != _nl_msg_cat_cntr) \
++ { \
++ __translation__ = \
++ dcgettext__ (Domainname, Msgid, Category); \
++ __catalog_counter__ = _nl_msg_cat_cntr; \
++ } \
++ __result = __translation__; \
++ } \
++ else \
++ __result = dcgettext__ (Domainname, Msgid, Category); \
++ __result; \
++ }))
++# endif
++# endif
++
++#else
++
++# define gettext(Msgid) (Msgid)
++# define dgettext(Domainname, Msgid) (Msgid)
++# define dcgettext(Domainname, Msgid, Category) (Msgid)
++# define textdomain(Domainname) ((char *) Domainname)
++# define bindtextdomain(Domainname, Dirname) ((char *) Dirname)
++
++#endif
++
++/* @@ begin of epilog @@ */
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif
+diff -urP gtkhtml-0.8.3.orig/intl/linux-msg.sed gtkhtml-0.8.3/intl/linux-msg.sed
+--- gtkhtml-0.8.3.orig/intl/linux-msg.sed Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/linux-msg.sed Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,100 @@
++# po2msg.sed - Convert Uniforum style .po file to Linux style .msg file
++# Copyright (C) 1995 Free Software Foundation, Inc.
++# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
++#
++# 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 program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++#
++#
++# The first directive in the .msg should be the definition of the
++# message set number. We use always set number 1.
++#
++1 {
++ i\
++$set 1 # Automatically created by po2msg.sed
++ h
++ s/.*/0/
++ x
++}
++#
++# Mitch's old catalog format does not allow comments.
++#
++# We copy the original message as a comment into the .msg file.
++#
++/^msgid/ {
++ s/msgid[ ]*"//
++#
++# This does not work now with the new format.
++# /"$/! {
++# s/\\$//
++# s/$/ ... (more lines following)"/
++# }
++ x
++# The following nice solution is by
++# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
++ td
++# Increment a decimal number in pattern space.
++# First hide trailing `9' digits.
++ :d
++ s/9\(_*\)$/_\1/
++ td
++# Assure at least one digit is available.
++ s/^\(_*\)$/0\1/
++# Increment the last digit.
++ s/8\(_*\)$/9\1/
++ s/7\(_*\)$/8\1/
++ s/6\(_*\)$/7\1/
++ s/5\(_*\)$/6\1/
++ s/4\(_*\)$/5\1/
++ s/3\(_*\)$/4\1/
++ s/2\(_*\)$/3\1/
++ s/1\(_*\)$/2\1/
++ s/0\(_*\)$/1\1/
++# Convert the hidden `9' digits to `0's.
++ s/_/0/g
++ x
++ G
++ s/\(.*\)"\n\([0-9]*\)/$ #\2 Original Message:(\1)/p
++}
++#
++# The .msg file contains, other then the .po file, only the translations
++# but each given a unique ID. Starting from 1 and incrementing by 1 for
++# each message we assign them to the messages.
++# It is important that the .po file used to generate the cat-id-tbl.c file
++# (with po-to-tbl) is the same as the one used here. (At least the order
++# of declarations must not be changed.)
++#
++/^msgstr/ {
++ s/msgstr[ ]*"\(.*\)"/# \1/
++# Clear substitution flag.
++ tb
++# Append the next line.
++ :b
++ N
++# Look whether second part is continuation line.
++ s/\(.*\n\)"\(.*\)"/\1\2/
++# Yes, then branch.
++ ta
++ P
++ D
++# Note that D includes a jump to the start!!
++# We found a continuation line. But before printing insert '\'.
++ :a
++ s/\(.*\)\(\n.*\)/\1\\\2/
++ P
++# We cannot use D here.
++ s/.*\n\(.*\)/\1/
++ tb
++}
++d
+diff -urP gtkhtml-0.8.3.orig/intl/loadinfo.h gtkhtml-0.8.3/intl/loadinfo.h
+--- gtkhtml-0.8.3.orig/intl/loadinfo.h Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/loadinfo.h Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,76 @@
++/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
++
++ 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 program; if not, write to the Free Software Foundation,
++ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++#ifndef PARAMS
++# if __STDC__
++# define PARAMS(args) args
++# else
++# define PARAMS(args) ()
++# endif
++#endif
++
++/* Encoding of locale name parts. */
++#define CEN_REVISION 1
++#define CEN_SPONSOR 2
++#define CEN_SPECIAL 4
++#define XPG_NORM_CODESET 8
++#define XPG_CODESET 16
++#define TERRITORY 32
++#define CEN_AUDIENCE 64
++#define XPG_MODIFIER 128
++
++#define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE)
++#define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER)
++
++
++struct loaded_l10nfile
++{
++ const char *filename;
++ int decided;
++
++ const void *data;
++
++ struct loaded_l10nfile *next;
++ struct loaded_l10nfile *successor[1];
++};
++
++
++extern const char *_nl_normalize_codeset PARAMS ((const unsigned char *codeset,
++ size_t name_len));
++
++extern struct loaded_l10nfile *
++_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list,
++ const char *dirlist, size_t dirlist_len, int mask,
++ const char *language, const char *territory,
++ const char *codeset,
++ const char *normalized_codeset,
++ const char *modifier, const char *special,
++ const char *sponsor, const char *revision,
++ const char *filename, int do_allocate));
++
++
++extern const char *_nl_expand_alias PARAMS ((const char *name));
++
++extern int _nl_explode_name PARAMS ((char *name, const char **language,
++ const char **modifier,
++ const char **territory,
++ const char **codeset,
++ const char **normalized_codeset,
++ const char **special,
++ const char **sponsor,
++ const char **revision));
+diff -urP gtkhtml-0.8.3.orig/intl/loadmsgcat.c gtkhtml-0.8.3/intl/loadmsgcat.c
+--- gtkhtml-0.8.3.orig/intl/loadmsgcat.c Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/loadmsgcat.c Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,222 @@
++/* Load needed message catalogs.
++ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
++
++ 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 program; if not, write to the Free Software Foundation,
++ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++#include <fcntl.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++
++#if defined STDC_HEADERS || defined _LIBC
++# include <stdlib.h>
++#endif
++
++#if defined HAVE_UNISTD_H || defined _LIBC
++# include <unistd.h>
++#endif
++
++#if (defined HAVE_MMAP && defined HAVE_MUNMAP) || defined _LIBC
++# include <sys/mman.h>
++#endif
++
++#include "gettext.h"
++#include "gettextP.h"
++
++/* @@ end of prolog @@ */
++
++#ifdef _LIBC
++/* Rename the non ISO C functions. This is required by the standard
++ because some ISO C functions will require linking with this object
++ file and the name space must not be polluted. */
++# define open __open
++# define close __close
++# define read __read
++# define mmap __mmap
++# define munmap __munmap
++#endif
++
++/* We need a sign, whether a new catalog was loaded, which can be associated
++ with all translations. This is important if the translations are
++ cached by one of GCC's features. */
++int _nl_msg_cat_cntr = 0;
++
++
++/* Load the message catalogs specified by FILENAME. If it is no valid
++ message catalog do nothing. */
++void
++internal_function
++_nl_load_domain (domain_file)
++ struct loaded_l10nfile *domain_file;
++{
++ int fd;
++ size_t size;
++ struct stat st;
++ struct mo_file_header *data = (struct mo_file_header *) -1;
++#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
++ || defined _LIBC
++ int use_mmap = 0;
++#endif
++ struct loaded_domain *domain;
++
++ domain_file->decided = 1;
++ domain_file->data = NULL;
++
++ /* If the record does not represent a valid locale the FILENAME
++ might be NULL. This can happen when according to the given
++ specification the locale file name is different for XPG and CEN
++ syntax. */
++ if (domain_file->filename == NULL)
++ return;
++
++ /* Try to open the addressed file. */
++ fd = open (domain_file->filename, O_RDONLY);
++ if (fd == -1)
++ return;
++
++ /* We must know about the size of the file. */
++ if (fstat (fd, &st) != 0
++ || (size = (size_t) st.st_size) != st.st_size
++ || size < sizeof (struct mo_file_header))
++ {
++ /* Something went wrong. */
++ close (fd);
++ return;
++ }
++
++#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
++ || defined _LIBC
++ /* Now we are ready to load the file. If mmap() is available we try
++ this first. If not available or it failed we try to load it. */
++ data = (struct mo_file_header *) mmap (NULL, size, PROT_READ,
++ MAP_PRIVATE, fd, 0);
++
++ if (data != (struct mo_file_header *) -1)
++ {
++ /* mmap() call was successful. */
++ close (fd);
++ use_mmap = 1;
++ }
++#endif
++
++ /* If the data is not yet available (i.e. mmap'ed) we try to load
++ it manually. */
++ if (data == (struct mo_file_header *) -1)
++ {
++ size_t to_read;
++ char *read_ptr;
++
++ data = (struct mo_file_header *) malloc (size);
++ if (data == NULL)
++ return;
++
++ to_read = size;
++ read_ptr = (char *) data;
++ do
++ {
++ long int nb = (long int) read (fd, read_ptr, to_read);
++ if (nb == -1)
++ {
++ close (fd);
++ return;
++ }
++
++ read_ptr += nb;
++ to_read -= nb;
++ }
++ while (to_read > 0);
++
++ close (fd);
++ }
++
++ /* Using the magic number we can test whether it really is a message
++ catalog file. */
++ if (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED)
++ {
++ /* The magic number is wrong: not a message catalog file. */
++#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
++ || defined _LIBC
++ if (use_mmap)
++ munmap ((caddr_t) data, size);
++ else
++#endif
++ free (data);
++ return;
++ }
++
++ domain_file->data
++ = (struct loaded_domain *) malloc (sizeof (struct loaded_domain));
++ if (domain_file->data == NULL)
++ return;
++
++ domain = (struct loaded_domain *) domain_file->data;
++ domain->data = (char *) data;
++#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
++ || defined _LIBC
++ domain->use_mmap = use_mmap;
++#endif
++ domain->mmap_size = size;
++ domain->must_swap = data->magic != _MAGIC;
++
++ /* Fill in the information about the available tables. */
++ switch (W (domain->must_swap, data->revision))
++ {
++ case 0:
++ domain->nstrings = W (domain->must_swap, data->nstrings);
++ domain->orig_tab = (struct string_desc *)
++ ((char *) data + W (domain->must_swap, data->orig_tab_offset));
++ domain->trans_tab = (struct string_desc *)
++ ((char *) data + W (domain->must_swap, data->trans_tab_offset));
++ domain->hash_size = W (domain->must_swap, data->hash_tab_size);
++ domain->hash_tab = (nls_uint32 *)
++ ((char *) data + W (domain->must_swap, data->hash_tab_offset));
++ break;
++ default:
++ /* This is an illegal revision. */
++#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
++ || defined _LIBC
++ if (use_mmap)
++ munmap ((caddr_t) data, size);
++ else
++#endif
++ free (data);
++ free (domain);
++ domain_file->data = NULL;
++ return;
++ }
++
++ /* Show that one domain is changed. This might make some cached
++ translations invalid. */
++ ++_nl_msg_cat_cntr;
++}
++
++
++#ifdef _LIBC
++void
++internal_function
++_nl_unload_domain (domain)
++ struct loaded_domain *domain;
++{
++ if (domain->use_mmap)
++ munmap ((caddr_t) domain->data, domain->mmap_size);
++ else
++ free ((void *) domain->data);
++
++ free (domain);
++}
++#endif
+diff -urP gtkhtml-0.8.3.orig/intl/localealias.c gtkhtml-0.8.3/intl/localealias.c
+--- gtkhtml-0.8.3.orig/intl/localealias.c Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/localealias.c Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,424 @@
++/* Handle aliases for locale names.
++ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
++ Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
++
++ 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 program; if not, write to the Free Software Foundation,
++ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++#include <ctype.h>
++#include <stdio.h>
++#include <sys/types.h>
++
++#ifdef __GNUC__
++# define alloca __builtin_alloca
++# define HAVE_ALLOCA 1
++#else
++# if defined HAVE_ALLOCA_H || defined _LIBC
++# include <alloca.h>
++# else
++# ifdef _AIX
++ #pragma alloca
++# else
++# ifndef alloca
++char *alloca ();
++# endif
++# endif
++# endif
++#endif
++
++#if defined STDC_HEADERS || defined _LIBC
++# include <stdlib.h>
++#else
++char *getenv ();
++# ifdef HAVE_MALLOC_H
++# include <malloc.h>
++# else
++void free ();
++# endif
++#endif
++
++#if defined HAVE_STRING_H || defined _LIBC
++# ifndef _GNU_SOURCE
++# define _GNU_SOURCE 1
++# endif
++# include <string.h>
++#else
++# include <strings.h>
++# ifndef memcpy
++# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
++# endif
++#endif
++#if !HAVE_STRCHR && !defined _LIBC
++# ifndef strchr
++# define strchr index
++# endif
++#endif
++
++#include "gettext.h"
++#include "gettextP.h"
++
++/* @@ end of prolog @@ */
++
++#ifdef _LIBC
++/* Rename the non ANSI C functions. This is required by the standard
++ because some ANSI C functions will require linking with this object
++ file and the name space must not be polluted. */
++# define strcasecmp __strcasecmp
++
++# define mempcpy __mempcpy
++# define HAVE_MEMPCPY 1
++
++/* We need locking here since we can be called from different places. */
++# include <bits/libc-lock.h>
++
++__libc_lock_define_initialized (static, lock);
++#endif
++
++
++/* For those loosing systems which don't have `alloca' we have to add
++ some additional code emulating it. */
++#ifdef HAVE_ALLOCA
++/* Nothing has to be done. */
++# define ADD_BLOCK(list, address) /* nothing */
++# define FREE_BLOCKS(list) /* nothing */
++#else
++struct block_list
++{
++ void *address;
++ struct block_list *next;
++};
++# define ADD_BLOCK(list, addr) \
++ do { \
++ struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \
++ /* If we cannot get a free block we cannot add the new element to \
++ the list. */ \
++ if (newp != NULL) { \
++ newp->address = (addr); \
++ newp->next = (list); \
++ (list) = newp; \
++ } \
++ } while (0)
++# define FREE_BLOCKS(list) \
++ do { \
++ while (list != NULL) { \
++ struct block_list *old = list; \
++ list = list->next; \
++ free (old); \
++ } \
++ } while (0)
++# undef alloca
++# define alloca(size) (malloc (size))
++#endif /* have alloca */
++
++
++struct alias_map
++{
++ const char *alias;
++ const char *value;
++};
++
++
++static char *string_space = NULL;
++static size_t string_space_act = 0;
++static size_t string_space_max = 0;
++static struct alias_map *map;
++static size_t nmap = 0;
++static size_t maxmap = 0;
++
++
++/* Prototypes for local functions. */
++static size_t read_alias_file PARAMS ((const char *fname, int fname_len))
++ internal_function;
++static void extend_alias_table PARAMS ((void));
++static int alias_compare PARAMS ((const struct alias_map *map1,
++ const struct alias_map *map2));
++
++
++const char *
++_nl_expand_alias (name)
++ const char *name;
++{
++ static const char *locale_alias_path = LOCALE_ALIAS_PATH;
++ struct alias_map *retval;
++ const char *result = NULL;
++ size_t added;
++
++#ifdef _LIBC
++ __libc_lock_lock (lock);
++#endif
++
++ do
++ {
++ struct alias_map item;
++
++ item.alias = name;
++
++ if (nmap > 0)
++ retval = (struct alias_map *) bsearch (&item, map, nmap,
++ sizeof (struct alias_map),
++ (int (*) PARAMS ((const void *,
++ const void *))
++ ) alias_compare);
++ else
++ retval = NULL;
++
++ /* We really found an alias. Return the value. */
++ if (retval != NULL)
++ {
++ result = retval->value;
++ break;
++ }
++
++ /* Perhaps we can find another alias file. */
++ added = 0;
++ while (added == 0 && locale_alias_path[0] != '\0')
++ {
++ const char *start;
++
++ while (locale_alias_path[0] == ':')
++ ++locale_alias_path;
++ start = locale_alias_path;
++
++ while (locale_alias_path[0] != '\0' && locale_alias_path[0] != ':')
++ ++locale_alias_path;
++
++ if (start < locale_alias_path)
++ added = read_alias_file (start, locale_alias_path - start);
++ }
++ }
++ while (added != 0);
++
++#ifdef _LIBC
++ __libc_lock_unlock (lock);
++#endif
++
++ return result;
++}
++
++
++static size_t
++internal_function
++read_alias_file (fname, fname_len)
++ const char *fname;
++ int fname_len;
++{
++#ifndef HAVE_ALLOCA
++ struct block_list *block_list = NULL;
++#endif
++ FILE *fp;
++ char *full_fname;
++ size_t added;
++ static const char aliasfile[] = "/locale.alias";
++
++ full_fname = (char *) alloca (fname_len + sizeof aliasfile);
++ ADD_BLOCK (block_list, full_fname);
++#ifdef HAVE_MEMPCPY
++ mempcpy (mempcpy (full_fname, fname, fname_len),
++ aliasfile, sizeof aliasfile);
++#else
++ memcpy (full_fname, fname, fname_len);
++ memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile);
++#endif
++
++ fp = fopen (full_fname, "r");
++ if (fp == NULL)
++ {
++ FREE_BLOCKS (block_list);
++ return 0;
++ }
++
++ added = 0;
++ while (!feof (fp))
++ {
++ /* It is a reasonable approach to use a fix buffer here because
++ a) we are only interested in the first two fields
++ b) these fields must be usable as file names and so must not
++ be that long
++ */
++ unsigned char buf[BUFSIZ];
++ unsigned char *alias;
++ unsigned char *value;
++ unsigned char *cp;
++
++ if (fgets (buf, sizeof buf, fp) == NULL)
++ /* EOF reached. */
++ break;
++
++ /* Possibly not the whole line fits into the buffer. Ignore
++ the rest of the line. */
++ if (strchr (buf, '\n') == NULL)
++ {
++ char altbuf[BUFSIZ];
++ do
++ if (fgets (altbuf, sizeof altbuf, fp) == NULL)
++ /* Make sure the inner loop will be left. The outer loop
++ will exit at the `feof' test. */
++ break;
++ while (strchr (altbuf, '\n') == NULL);
++ }
++
++ cp = buf;
++ /* Ignore leading white space. */
++ while (isspace (cp[0]))
++ ++cp;
++
++ /* A leading '#' signals a comment line. */
++ if (cp[0] != '\0' && cp[0] != '#')
++ {
++ alias = cp++;
++ while (cp[0] != '\0' && !isspace (cp[0]))
++ ++cp;
++ /* Terminate alias name. */
++ if (cp[0] != '\0')
++ *cp++ = '\0';
++
++ /* Now look for the beginning of the value. */
++ while (isspace (cp[0]))
++ ++cp;
++
++ if (cp[0] != '\0')
++ {
++ size_t alias_len;
++ size_t value_len;
++
++ value = cp++;
++ while (cp[0] != '\0' && !isspace (cp[0]))
++ ++cp;
++ /* Terminate value. */
++ if (cp[0] == '\n')
++ {
++ /* This has to be done to make the following test
++ for the end of line possible. We are looking for
++ the terminating '\n' which do not overwrite here. */
++ *cp++ = '\0';
++ *cp = '\n';
++ }
++ else if (cp[0] != '\0')
++ *cp++ = '\0';
++
++ if (nmap >= maxmap)
++ extend_alias_table ();
++
++ alias_len = strlen (alias) + 1;
++ value_len = strlen (value) + 1;
++
++ if (string_space_act + alias_len + value_len > string_space_max)
++ {
++ /* Increase size of memory pool. */
++ size_t new_size = (string_space_max
++ + (alias_len + value_len > 1024
++ ? alias_len + value_len : 1024));
++ char *new_pool = (char *) realloc (string_space, new_size);
++ if (new_pool == NULL)
++ {
++ FREE_BLOCKS (block_list);
++ return added;
++ }
++ string_space = new_pool;
++ string_space_max = new_size;
++ }
++
++ map[nmap].alias = memcpy (&string_space[string_space_act],
++ alias, alias_len);
++ string_space_act += alias_len;
++
++ map[nmap].value = memcpy (&string_space[string_space_act],
++ value, value_len);
++ string_space_act += value_len;
++
++ ++nmap;
++ ++added;
++ }
++ }
++ }
++
++ /* Should we test for ferror()? I think we have to silently ignore
++ errors. --drepper */
++ fclose (fp);
++
++ if (added > 0)
++ qsort (map, nmap, sizeof (struct alias_map),
++ (int (*) PARAMS ((const void *, const void *))) alias_compare);
++
++ FREE_BLOCKS (block_list);
++ return added;
++}
++
++
++static void
++extend_alias_table ()
++{
++ size_t new_size;
++ struct alias_map *new_map;
++
++ new_size = maxmap == 0 ? 100 : 2 * maxmap;
++ new_map = (struct alias_map *) realloc (map, (new_size
++ * sizeof (struct alias_map)));
++ if (new_map == NULL)
++ /* Simply don't extend: we don't have any more core. */
++ return;
++
++ map = new_map;
++ maxmap = new_size;
++}
++
++
++#ifdef _LIBC
++static void __attribute__ ((unused))
++free_mem (void)
++{
++ if (string_space != NULL)
++ free (string_space);
++ if (map != NULL)
++ free (map);
++}
++text_set_element (__libc_subfreeres, free_mem);
++#endif
++
++
++static int
++alias_compare (map1, map2)
++ const struct alias_map *map1;
++ const struct alias_map *map2;
++{
++#if defined _LIBC || defined HAVE_STRCASECMP
++ return strcasecmp (map1->alias, map2->alias);
++#else
++ const unsigned char *p1 = (const unsigned char *) map1->alias;
++ const unsigned char *p2 = (const unsigned char *) map2->alias;
++ unsigned char c1, c2;
++
++ if (p1 == p2)
++ return 0;
++
++ do
++ {
++ /* I know this seems to be odd but the tolower() function in
++ some systems libc cannot handle nonalpha characters. */
++ c1 = isupper (*p1) ? tolower (*p1) : *p1;
++ c2 = isupper (*p2) ? tolower (*p2) : *p2;
++ if (c1 == '\0')
++ break;
++ ++p1;
++ ++p2;
++ }
++ while (c1 == c2);
++
++ return c1 - c2;
++#endif
++}
+diff -urP gtkhtml-0.8.3.orig/intl/po2tbl.sed.in gtkhtml-0.8.3/intl/po2tbl.sed.in
+--- gtkhtml-0.8.3.orig/intl/po2tbl.sed.in Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/po2tbl.sed.in Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,102 @@
++# po2tbl.sed - Convert Uniforum style .po file to lookup table for catgets
++# Copyright (C) 1995 Free Software Foundation, Inc.
++# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
++#
++# 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 program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++#
++1 {
++ i\
++/* Automatically generated by po2tbl.sed from @PACKAGE NAME@.pot. */\
++\
++#if HAVE_CONFIG_H\
++# include <config.h>\
++#endif\
++\
++#include "libgettext.h"\
++\
++const struct _msg_ent _msg_tbl[] = {
++ h
++ s/.*/0/
++ x
++}
++#
++# Write msgid entries in C array form.
++#
++/^msgid/ {
++ s/msgid[ ]*\(".*"\)/ {\1/
++ tb
++# Append the next line
++ :b
++ N
++# Look whether second part is continuation line.
++ s/\(.*\)"\(\n\)"\(.*"\)/\1\2\3/
++# Yes, then branch.
++ ta
++# Because we assume that the input file correctly formed the line
++# just read cannot be again be a msgid line. So it's safe to ignore
++# it.
++ s/\(.*\)\n.*/\1/
++ bc
++# We found a continuation line. But before printing insert '\'.
++ :a
++ s/\(.*\)\(\n.*\)/\1\\\2/
++ P
++# We cannot use D here.
++ s/.*\n\(.*\)/\1/
++# Some buggy seds do not clear the `successful substitution since last ``t'''
++# flag on `N', so we do a `t' here to clear it.
++ tb
++# Not reached
++ :c
++ x
++# The following nice solution is by
++# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
++ td
++# Increment a decimal number in pattern space.
++# First hide trailing `9' digits.
++ :d
++ s/9\(_*\)$/_\1/
++ td
++# Assure at least one digit is available.
++ s/^\(_*\)$/0\1/
++# Increment the last digit.
++ s/8\(_*\)$/9\1/
++ s/7\(_*\)$/8\1/
++ s/6\(_*\)$/7\1/
++ s/5\(_*\)$/6\1/
++ s/4\(_*\)$/5\1/
++ s/3\(_*\)$/4\1/
++ s/2\(_*\)$/3\1/
++ s/1\(_*\)$/2\1/
++ s/0\(_*\)$/1\1/
++# Convert the hidden `9' digits to `0's.
++ s/_/0/g
++ x
++ G
++ s/\(.*\)\n\([0-9]*\)/\1, \2},/
++ s/\(.*\)"$/\1/
++ p
++}
++#
++# Last line.
++#
++$ {
++ i\
++};\
++
++ g
++ s/0*\(.*\)/int _msg_tbl_length = \1;/p
++}
++d
+diff -urP gtkhtml-0.8.3.orig/intl/textdomain.c gtkhtml-0.8.3/intl/textdomain.c
+--- gtkhtml-0.8.3.orig/intl/textdomain.c Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/textdomain.c Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,108 @@
++/* Implementation of the textdomain(3) function.
++ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
++ Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
++
++ 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 program; if not, write to the Free Software Foundation,
++ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++#if defined STDC_HEADERS || defined _LIBC
++# include <stdlib.h>
++#endif
++
++#if defined STDC_HEADERS || defined HAVE_STRING_H || defined _LIBC
++# include <string.h>
++#else
++# include <strings.h>
++# ifndef memcpy
++# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
++# endif
++#endif
++
++#ifdef _LIBC
++# include <libintl.h>
++#else
++# include "libgettext.h"
++#endif
++
++/* @@ end of prolog @@ */
++
++/* Name of the default text domain. */
++extern const char _nl_default_default_domain[];
++
++/* Default text domain in which entries for gettext(3) are to be found. */
++extern const char *_nl_current_default_domain;
++
++
++/* Names for the libintl functions are a problem. They must not clash
++ with existing names and they should follow ANSI C. But this source
++ code is also used in GNU C Library where the names have a __
++ prefix. So we have to make a difference here. */
++#ifdef _LIBC
++# define TEXTDOMAIN __textdomain
++# ifndef strdup
++# define strdup(str) __strdup (str)
++# endif
++#else
++# define TEXTDOMAIN textdomain__
++#endif
++
++/* Set the current default message catalog to DOMAINNAME.
++ If DOMAINNAME is null, return the current default.
++ If DOMAINNAME is "", reset to the default of "messages". */
++char *
++TEXTDOMAIN (domainname)
++ const char *domainname;
++{
++ char *old;
++
++ /* A NULL pointer requests the current setting. */
++ if (domainname == NULL)
++ return (char *) _nl_current_default_domain;
++
++ old = (char *) _nl_current_default_domain;
++
++ /* If domain name is the null string set to default domain "messages". */
++ if (domainname[0] == '\0'
++ || strcmp (domainname, _nl_default_default_domain) == 0)
++ _nl_current_default_domain = _nl_default_default_domain;
++ else
++ {
++ /* If the following malloc fails `_nl_current_default_domain'
++ will be NULL. This value will be returned and so signals we
++ are out of core. */
++#if defined _LIBC || defined HAVE_STRDUP
++ _nl_current_default_domain = strdup (domainname);
++#else
++ size_t len = strlen (domainname) + 1;
++ char *cp = (char *) malloc (len);
++ if (cp != NULL)
++ memcpy (cp, domainname, len);
++ _nl_current_default_domain = cp;
++#endif
++ }
++
++ if (old != _nl_default_default_domain)
++ free (old);
++
++ return (char *) _nl_current_default_domain;
++}
++
++#ifdef _LIBC
++/* Alias for function name in GNU C Library. */
++weak_alias (__textdomain, textdomain);
++#endif
+diff -urP gtkhtml-0.8.3.orig/intl/xopen-msg.sed gtkhtml-0.8.3/intl/xopen-msg.sed
+--- gtkhtml-0.8.3.orig/intl/xopen-msg.sed Wed Dec 31 19:00:00 1969
++++ gtkhtml-0.8.3/intl/xopen-msg.sed Fri Mar 16 14:46:14 2001
+@@ -0,0 +1,104 @@
++# po2msg.sed - Convert Uniforum style .po file to X/Open style .msg file
++# Copyright (C) 1995 Free Software Foundation, Inc.
++# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
++#
++# 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 program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++#
++#
++# The first directive in the .msg should be the definition of the
++# message set number. We use always set number 1.
++#
++1 {
++ i\
++$set 1 # Automatically created by po2msg.sed
++ h
++ s/.*/0/
++ x
++}
++#
++# We copy all comments into the .msg file. Perhaps they can help.
++#
++/^#/ s/^#[ ]*/$ /p
++#
++# We copy the original message as a comment into the .msg file.
++#
++/^msgid/ {
++# Does not work now
++# /"$/! {
++# s/\\$//
++# s/$/ ... (more lines following)"/
++# }
++ s/^msgid[ ]*"\(.*\)"$/$ Original Message: \1/
++ p
++}
++#
++# The .msg file contains, other then the .po file, only the translations
++# but each given a unique ID. Starting from 1 and incrementing by 1 for
++# each message we assign them to the messages.
++# It is important that the .po file used to generate the cat-id-tbl.c file
++# (with po-to-tbl) is the same as the one used here. (At least the order
++# of declarations must not be changed.)
++#
++/^msgstr/ {
++ s/msgstr[ ]*"\(.*\)"/\1/
++ x
++# The following nice solution is by
++# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
++ td
++# Increment a decimal number in pattern space.
++# First hide trailing `9' digits.
++ :d
++ s/9\(_*\)$/_\1/
++ td
++# Assure at least one digit is available.
++ s/^\(_*\)$/0\1/
++# Increment the last digit.
++ s/8\(_*\)$/9\1/
++ s/7\(_*\)$/8\1/
++ s/6\(_*\)$/7\1/
++ s/5\(_*\)$/6\1/
++ s/4\(_*\)$/5\1/
++ s/3\(_*\)$/4\1/
++ s/2\(_*\)$/3\1/
++ s/1\(_*\)$/2\1/
++ s/0\(_*\)$/1\1/
++# Convert the hidden `9' digits to `0's.
++ s/_/0/g
++ x
++# Bring the line in the format `<number> <message>'
++ G
++ s/^[^\n]*$/& /
++ s/\(.*\)\n\([0-9]*\)/\2 \1/
++# Clear flag from last substitution.
++ tb
++# Append the next line.
++ :b
++ N
++# Look whether second part is a continuation line.
++ s/\(.*\n\)"\(.*\)"/\1\2/
++# Yes, then branch.
++ ta
++ P
++ D
++# Note that `D' includes a jump to the start!!
++# We found a continuation line. But before printing insert '\'.
++ :a
++ s/\(.*\)\(\n.*\)/\1\\\2/
++ P
++# We cannot use the sed command `D' here
++ s/.*\n\(.*\)/\1/
++ tb
++}
++d
+diff -urP gtkhtml-0.8.3.orig/src/Makefile.am gtkhtml-0.8.3/src/Makefile.am
+--- gtkhtml-0.8.3.orig/src/Makefile.am Wed Jan 24 07:10:23 2001
++++ gtkhtml-0.8.3/src/Makefile.am Sun Apr 15 11:14:19 2001
+@@ -95,6 +95,7 @@
+ htmltypes.h \
+ htmlundo.h \
+ htmlundo-action.h \
++ htmlurl.h \
+ htmlvspace.h \
+ gtkhtml-keybinding.h \
+ htmliframe.h \
+@@ -187,7 +188,6 @@
+
+ testgtkhtml_SOURCES = \
+ testgtkhtml.c \
+- htmlurl.h \
+ htmlurl.c
+
+ testgtkhtml_CFLAGS = $(GLIBWWW_CFLAGS)
diff --git a/gnome-extra/gtkhtml/gtkhtml-0.8.3.ebuild b/gnome-extra/gtkhtml/gtkhtml-0.8.3.ebuild
new file mode 100644
index 000000000000..f25b62652d50
--- /dev/null
+++ b/gnome-extra/gtkhtml/gtkhtml-0.8.3.ebuild
@@ -0,0 +1,74 @@
+# Copyright 1999-2000 Gentoo Technologies, Inc.
+# Distributed under the terms of the GNU General Public License, v2 or later
+# Author Achim Gottinger <achim@gentoo.org>
+# $Header: /var/cvsroot/gentoo-x86/gnome-extra/gtkhtml/gtkhtml-0.8.3.ebuild,v 1.1 2001/04/15 18:57:14 pete Exp $
+
+A=${P}.tar.gz
+S=${WORKDIR}/${P}
+DESCRIPTION="gtkhtml"
+SRC_URI="ftp://ftp.gnome.org/pub/GNOME/unstable/sources/gtkhtml/${A}
+ ftp://gnome.eazel.com/pub/gnome/unstable/sources/${PN}/${A}"
+HOMEPAGE="http://www.gnome.org/"
+
+RDEPEND=">=gnome-base/gal-0.5
+ >=gnome-base/gconf-1.0
+ >=gnome-base/control-center-1.2.4
+ >=gnome-base/glibwww-0.2-r1
+ >=gnome-base/libghttp-1.0.9"
+
+DEPEND="${RDEPEND}
+ >=sys-devel/automake-1.4"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+ patch -p1 < ${FILESDIR}/${P}-gentoo.diff
+# try aclocal -I macros
+# try autoconf
+ try automake
+}
+
+src_compile() {
+
+ local myconf
+
+ if [ -z "`use nls`" ]
+ then
+ myconf="--disable-nls"
+ fi
+
+ if [ "`use bonobo`" ]
+ then
+ myconf="${myconf} --with-bonobo"
+ else
+ myconf="${myconf} --without-bonobo"
+ fi
+
+ try ./configure --host=${CHOST} --prefix=/opt/gnome \
+ --sysconfdir=/etc/opt/gnome ${myconf} --with-gconf
+
+ try make
+}
+
+src_install() {
+
+ try make DESTDIR=${D} install
+ #insinto /opt/gnome/include/gtkhtml
+ #doins src/htmlurl.h
+ dodoc AUTHORS COPYING* ChangeLog README
+ dodoc NEWS TODO
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+