aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/dillo/dillo-0.8.6/dillo-i18n.diff
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/dillo/dillo-0.8.6/dillo-i18n.diff')
-rw-r--r--recipes/dillo/dillo-0.8.6/dillo-i18n.diff48036
1 files changed, 48036 insertions, 0 deletions
diff --git a/recipes/dillo/dillo-0.8.6/dillo-i18n.diff b/recipes/dillo/dillo-0.8.6/dillo-i18n.diff
new file mode 100644
index 0000000000..b9ef35933c
--- /dev/null
+++ b/recipes/dillo/dillo-0.8.6/dillo-i18n.diff
@@ -0,0 +1,48036 @@
+===============================
+ Dillo i18n patch by Kiyo
+===============================
+
+This is an unofficial i18n patch.
+Please see ChangeLog for details.
+Please do not ask a dillo team about this patch.
+
+The newest patch can get in http://teki.jpn.ph/pc/software/index-e.shtml
+If you found bug, please mail to webmaster@teki.jpn.ph.
+
+
+diff -pruN dillo-0.8.6/ABOUT-NLS dillo-0.8.6-i18n-misc-20060709/ABOUT-NLS
+--- dillo-0.8.6/ABOUT-NLS 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/ABOUT-NLS 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,432 @@
++Notes on the Free Translation Project
++*************************************
++
++ Free software is going international! The Free Translation Project
++is a way to get maintainers of free software, translators, and users all
++together, so that will gradually become able to speak many languages.
++A few packages already provide translations for their messages.
++
++ If you found this `ABOUT-NLS' file inside a distribution, you may
++assume that the distributed package does use GNU `gettext' internally,
++itself available at your nearest GNU archive site. But you do _not_
++need to install GNU `gettext' prior to configuring, installing or using
++this package with messages translated.
++
++ Installers will find here some useful hints. These notes also
++explain how users should proceed for getting the programs to use the
++available translations. They tell how people wanting to contribute and
++work at translations should contact the appropriate team.
++
++ When reporting bugs in the `intl/' directory or bugs which may be
++related to internationalization, you should tell about the version of
++`gettext' which is used. The information can be found in the
++`intl/VERSION' file, in internationalized packages.
++
++Quick configuration advice
++==========================
++
++ If you want to exploit the full power of internationalization, you
++should configure it using
++
++ ./configure --with-included-gettext
++
++to force usage of internationalizing routines provided within this
++package, despite the existence of internationalizing capabilities in the
++operating system where this package is being installed. So far, only
++the `gettext' implementation in the GNU C library version 2 provides as
++many features (such as locale alias, message inheritance, automatic
++charset conversion or plural form handling) as the implementation here.
++It is also not possible to offer this additional functionality on top
++of a `catgets' implementation. Future versions of GNU `gettext' will
++very likely convey even more functionality. So it might be a good idea
++to change to GNU `gettext' as soon as possible.
++
++ So you need _not_ provide this option if you are using GNU libc 2 or
++you have installed a recent copy of the GNU gettext package with the
++included `libintl'.
++
++INSTALL Matters
++===============
++
++ Some packages are "localizable" when properly installed; the
++programs they contain can be made to speak your own native language.
++Most such packages use GNU `gettext'. Other packages have their own
++ways to internationalization, predating GNU `gettext'.
++
++ By default, this package will be installed to allow translation of
++messages. It will automatically detect whether the system already
++provides the GNU `gettext' functions. If not, the GNU `gettext' own
++library will be used. This library is wholly contained within this
++package, usually in the `intl/' subdirectory, so prior installation of
++the GNU `gettext' package is _not_ required. Installers may use
++special options at configuration time for changing the default
++behaviour. The commands:
++
++ ./configure --with-included-gettext
++ ./configure --disable-nls
++
++will respectively bypass any pre-existing `gettext' to use the
++internationalizing routines provided within this package, or else,
++_totally_ disable translation of messages.
++
++ When you already have GNU `gettext' installed on your system and run
++configure without an option for your new package, `configure' will
++probably detect the previously built and installed `libintl.a' file and
++will decide to use this. This might be not what is desirable. You
++should use the more recent version of the GNU `gettext' library. I.e.
++if the file `intl/VERSION' shows that the library which comes with this
++package is more recent, you should use
++
++ ./configure --with-included-gettext
++
++to prevent auto-detection.
++
++ The configuration process will not test for the `catgets' function
++and therefore it will not be used. The reason is that even an
++emulation of `gettext' on top of `catgets' could not provide all the
++extensions of the GNU `gettext' library.
++
++ Internationalized packages have usually many `po/LL.po' files, where
++LL gives an ISO 639 two-letter code identifying the language. Unless
++translations have been forbidden at `configure' time by using the
++`--disable-nls' switch, all available translations are installed
++together with the package. However, the environment variable `LINGUAS'
++may be set, prior to configuration, to limit the installed set.
++`LINGUAS' should then contain a space separated list of two-letter
++codes, stating which languages are allowed.
++
++Using This Package
++==================
++
++ As a user, if your language has been installed for this package, you
++only have to set the `LANG' environment variable to the appropriate
++`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code,
++and `CC' is an ISO 3166 two-letter country code. For example, let's
++suppose that you speak German and live in Germany. At the shell
++prompt, merely execute `setenv LANG de_DE' (in `csh'),
++`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
++This can be done from your `.login' or `.profile' file, once and for
++all.
++
++ You might think that the country code specification is redundant.
++But in fact, some languages have dialects in different countries. For
++example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
++country code serves to distinguish the dialects.
++
++ The locale naming convention of `LL_CC', with `LL' denoting the
++language and `CC' denoting the country, is the one use on systems based
++on GNU libc. On other systems, some variations of this scheme are
++used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
++locales supported by your system for your country by running the command
++`locale -a | grep '^LL''.
++
++ Not all programs have translations for all languages. By default, an
++English message is shown in place of a nonexistent translation. If you
++understand other languages, you can set up a priority list of languages.
++This is done through a different environment variable, called
++`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG'
++for the purpose of message handling, but you still need to have `LANG'
++set to the primary language; this is required by other parts of the
++system libraries. For example, some Swedish users who would rather
++read translations in German than English for when Swedish is not
++available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
++
++ In the `LANGUAGE' environment variable, but not in the `LANG'
++environment variable, `LL_CC' combinations can be abbreviated as `LL'
++to denote the language's main dialect. For example, `de' is equivalent
++to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
++(Portuguese as spoken in Portugal) in this context.
++
++Translating Teams
++=================
++
++ For the Free Translation Project to be a success, we need interested
++people who like their own language and write it well, and who are also
++able to synergize with other translators speaking the same language.
++Each translation team has its own mailing list. The up-to-date list of
++teams can be found at the Free Translation Project's homepage,
++`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
++area.
++
++ If you'd like to volunteer to _work_ at translating messages, you
++should become a member of the translating team for your own language.
++The subscribing address is _not_ the same as the list itself, it has
++`-request' appended. For example, speakers of Swedish can send a
++message to `sv-request@li.org', having this message body:
++
++ subscribe
++
++ Keep in mind that team members are expected to participate
++_actively_ in translations, or at solving translational difficulties,
++rather than merely lurking around. If your team does not exist yet and
++you want to start one, or if you are unsure about what to do or how to
++get started, please write to `translation@iro.umontreal.ca' to reach the
++coordinator for all translator teams.
++
++ The English team is special. It works at improving and uniformizing
++the terminology in use. Proven linguistic skill are praised more than
++programming skill, here.
++
++Available Packages
++==================
++
++ Languages are not equally supported in all packages. The following
++matrix shows the current state of internationalization, as of July
++2002. The matrix shows, in regard of each package, for which languages
++PO files have been submitted to translation coordination, with a
++translation percentage of at least 50%.
++
++ Ready PO files be bg ca cs da de el en eo es et fi fr
++ +----------------------------------------+
++ a2ps | [] [] [] [] |
++ bash | [] [] [] [] |
++ bfd | [] [] |
++ binutils | [] [] |
++ bison | [] [] [] [] |
++ clisp | [] [] [] [] |
++ clisp | |
++ clisplow | |
++ cpio | [] [] [] [] |
++ darkstat | () |
++ diffutils | [] [] [] [] [] [] |
++ enscript | [] [] |
++ error | [] [] [] |
++ fetchmail | [] () [] [] [] () |
++ fileutils | [] [] [] [] [] |
++ findutils | [] [] [] [] [] [] |
++ flex | [] [] [] [] [] |
++ gas | [] [] |
++ gawk | [] [] [] |
++ gcal | [] [] |
++ gcc | [] [] |
++ gettext | [] [] [] [] [] |
++ gnupg | [] [] [] [] [] [] [] |
++ gprof | [] [] |
++ gpsdrive | () () () () () |
++ grep | [] [] [] [] [] [] [] |
++ gretl | [] |
++ gthumb | () () () |
++ hello | [] [] [] [] [] [] [] [] [] |
++ id-utils | [] [] [] |
++ indent | [] [] [] [] [] |
++ jpilot | () [] [] [] |
++ jwhois | [] [] |
++ kbd | [] [] [] |
++ ld | [] [] |
++ libc | [] [] [] [] [] [] [] |
++ libiconv | [] [] [] [] |
++ lifelines | () () |
++ lilypond | [] [] [] |
++ lingoteach | [] [] |
++ lingoteach_lessons| () () |
++ lynx | [] [] [] [] [] |
++ m4 | [] [] [] [] [] |
++ make | [] [] [] [] |
++ man-db | [] () () [] () () |
++ mysecretdiary | [] [] [] |
++ nano | [] () [] [] [] [] |
++ nano_1_0 | [] () [] [] [] [] |
++ opcodes | [] [] [] |
++ parted | [] [] [] [] [] |
++ ptx | [] [] [] [] [] [] [] |
++ python | |
++ recode | [] [] [] [] [] [] |
++ sed | [] [] [] [] [] [] [] [] [] |
++ sh-utils | [] [] [] [] |
++ sharutils | [] [] [] [] [] [] |
++ sketch | () [] () |
++ soundtracker | [] [] [] |
++ sp | [] |
++ tar | [] [] [] [] [] [] |
++ texinfo | [] [] [] [] [] |
++ textutils | [] [] [] [] [] |
++ util-linux | [] [] [] [] [] [] |
++ vorbis-tools | [] |
++ wastesedge | |
++ wdiff | [] [] [] [] [] [] |
++ wget | [] [] [] [] [] [] [] [] [] [] |
++ +----------------------------------------+
++ be bg ca cs da de el en eo es et fi fr
++ 0 2 19 10 30 44 9 1 12 45 16 3 53
++
++ gl he hr hu id it ja ko lv nb nl nn
++ +-------------------------------------+
++ a2ps | () () [] |
++ bash | [] |
++ bfd | [] |
++ binutils | [] |
++ bison | [] [] [] [] |
++ clisp | [] |
++ clisp | |
++ clisplow | |
++ cpio | [] [] [] [] |
++ darkstat | () |
++ diffutils | [] [] [] [] [] |
++ enscript | [] [] |
++ error | [] |
++ fetchmail | [] |
++ fileutils | [] [] [] |
++ findutils | [] [] [] [] [] [] [] [] |
++ flex | [] |
++ gas | |
++ gawk | [] |
++ gcal | |
++ gcc | [] |
++ gettext | [] [] |
++ gnupg | [] [] [] [] |
++ gprof | |
++ gpsdrive | [] () () |
++ grep | [] [] [] [] [] [] [] |
++ gretl | |
++ gthumb | () () |
++ hello | [] [] [] [] [] [] [] [] [] [] [] [] |
++ id-utils | [] [] |
++ indent | [] [] [] [] |
++ jpilot | () () |
++ jwhois | [] [] |
++ kbd | |
++ ld | |
++ libc | [] [] [] [] |
++ libiconv | [] [] [] |
++ lifelines | |
++ lilypond | [] [] |
++ lingoteach | [] |
++ lingoteach_lessons| |
++ lynx | [] [] [] [] |
++ m4 | [] [] [] [] |
++ make | [] [] [] [] [] [] |
++ man-db | () () |
++ mysecretdiary | [] |
++ nano | [] [] [] [] [] [] |
++ nano_1_0 | [] [] [] [] [] |
++ opcodes | [] [] |
++ parted | [] [] [] |
++ ptx | [] [] [] [] [] |
++ python | |
++ recode | [] [] [] |
++ sed | [] [] [] [] [] [] [] [] |
++ sh-utils | [] [] [] |
++ sharutils | [] [] [] |
++ sketch | () |
++ soundtracker | [] [] |
++ sp | |
++ tar | [] [] [] [] [] |
++ texinfo | [] [] [] |
++ textutils | [] [] [] |
++ util-linux | () [] |
++ vorbis-tools | |
++ wastesedge | |
++ wdiff | [] [] [] |
++ wget | [] [] [] [] [] [] |
++ +-------------------------------------+
++ gl he hr hu id it ja ko lv nb nl nn
++ 23 9 12 18 14 13 26 9 1 8 19 4
++
++ no pl pt pt_BR ru sk sl sv tr uk zh_TW
++ +----------------------------------------+
++ a2ps | () () () [] [] [] [] [] | 10
++ bash | [] | 6
++ bfd | [] [] | 5
++ binutils | [] [] | 5
++ bison | [] [] [] | 11
++ clisp | | 5
++ clisp | | 0
++ clisplow | | 0
++ cpio | [] [] [] [] | 12
++ darkstat | [] () | 1
++ diffutils | [] [] [] [] [] [] | 17
++ enscript | [] [] [] [] | 8
++ error | [] [] [] | 7
++ fetchmail | () () [] | 6
++ fileutils | [] [] [] [] [] | 13
++ findutils | [] [] [] [] [] [] [] | 21
++ flex | [] [] [] | 9
++ gas | [] | 3
++ gawk | [] [] | 6
++ gcal | [] [] | 4
++ gcc | [] | 4
++ gettext | [] [] [] [] [] [] | 13
++ gnupg | [] [] [] | 14
++ gprof | [] [] | 4
++ gpsdrive | [] [] () | 3
++ grep | [] [] [] [] | 18
++ gretl | | 1
++ gthumb | () () [] | 1
++ hello | [] [] [] [] [] [] [] | 28
++ id-utils | [] [] [] [] | 9
++ indent | [] [] [] [] [] | 14
++ jpilot | () () [] | 4
++ jwhois | [] () () [] [] | 7
++ kbd | [] [] | 5
++ ld | [] [] | 4
++ libc | [] [] [] [] [] [] | 17
++ libiconv | [] [] [] [] | 11
++ lifelines | [] | 1
++ lilypond | [] | 6
++ lingoteach | [] [] | 5
++ lingoteach_lessons| | 0
++ lynx | [] [] [] [] | 13
++ m4 | [] [] [] | 12
++ make | [] [] [] [] | 14
++ man-db | | 3
++ mysecretdiary | [] [] [] | 7
++ nano | [] [] [] [] | 15
++ nano_1_0 | [] [] [] [] | 14
++ opcodes | [] [] | 7
++ parted | [] [] [] | 11
++ ptx | [] [] [] [] [] [] [] | 19
++ python | | 0
++ recode | [] [] [] [] [] [] | 15
++ sed | [] [] [] [] [] [] | 23
++ sh-utils | [] | 8
++ sharutils | [] [] [] [] | 13
++ sketch | [] () [] | 4
++ soundtracker | [] | 6
++ sp | | 1
++ tar | [] [] [] [] [] [] [] | 18
++ texinfo | [] [] | 10
++ textutils | [] [] [] [] [] | 13
++ util-linux | [] [] [] | 10
++ vorbis-tools | [] | 2
++ wastesedge | | 0
++ wdiff | [] [] [] [] [] | 14
++ wget | [] [] [] [] [] [] [] [] | 24
++ +----------------------------------------+
++ 36 teams no pl pt pt_BR ru sk sl sv tr uk zh_TW
++ 67 domains 4 15 2 24 26 12 10 47 42 4 8 594
++
++ Some counters in the preceding matrix are higher than the number of
++visible blocks let us expect. This is because a few extra PO files are
++used for implementing regional variants of languages, or language
++dialects.
++
++ For a PO file in the matrix above to be effective, the package to
++which it applies should also have been internationalized and
++distributed as such by its maintainer. There might be an observable
++lag between the mere existence a PO file and its wide availability in a
++distribution.
++
++ If July 2002 seems to be old, you may fetch a more recent copy of
++this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
++matrix with full percentage details can be found at
++`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
++
++Using `gettext' in new packages
++===============================
++
++ If you are writing a freely available program and want to
++internationalize it you are welcome to use GNU `gettext' in your
++package. Of course you have to respect the GNU Library General Public
++License which covers the use of the GNU `gettext' library. This means
++in particular that even non-free programs can use `libintl' as a shared
++library, whereas only free software can use `libintl' as a static
++library or use modified versions of `libintl'.
++
++ Once the sources are changed appropriately and the setup can handle
++to use of `gettext' the only thing missing are the translations. The
++Free Translation Project is also available for packages which are not
++developed inside the GNU project. Therefore the information given above
++applies also for every other Free Software Project. Contact
++`translation@iro.umontreal.ca' to make the `.pot' files available to
++the translation teams.
++
+diff -pruN dillo-0.8.6/AUTHORS dillo-0.8.6-i18n-misc-20060709/AUTHORS
+--- dillo-0.8.6/AUTHORS 2004-08-13 04:48:49.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/AUTHORS 2006-05-16 01:21:07.000000000 +0900
+@@ -35,6 +35,7 @@
+ * Adam Sampson
+ * Andreas Schweitzer
+ * Dominic Wong
++ * Kiyo
+ _________________________________________________________________
+
+ Web site logo:
+diff -pruN dillo-0.8.6/ChangeLog dillo-0.8.6-i18n-misc-20060709/ChangeLog
+--- dillo-0.8.6/ChangeLog 2006-04-27 01:06:54.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/ChangeLog 2006-07-09 00:53:02.000000000 +0900
+@@ -3,6 +3,13 @@ Dillo project
+ =============================================================================
+
+
++dillo-0.8.6-i18n-misc [??, 2006]
++
++ - * Applied 0.8.6 Changes to dillo-0.8.5-i18n-misc
++ * Some bug fixed.
++ Patches: Kiyo
++
++
+ dillo-0.8.6 [Apr 26, 2006]
+
+ - * Designed and implemented a dpi protocol library (libDpip.a in /dpip).
+@@ -52,6 +59,29 @@ dillo-0.8.6 [Apr 26, 2006]
+ Patch: Francis Daly
+
+
++dillo-0.8.5-i18n-misc [??, 2005]
++
++ - * Applied 0.8.5 Changes to dillo-0.8.4-i18n-misc
++ * Added dynamic font change system in a page unit.
++ * New-line processing is improved.
++ * Added send_referer option.
++ * Added the option which can specify config file.
++ * Two or more URLs are opened by tab.
++ * Added more checks for sane values in html.c.
++ * Fixed locale detection.
++ * Some bug fixed.
++ Patches: Kiyo
++ - * Fixed crash bug.
++ Patch: Richard Zidlicky
++ - * use an alternative rcfile from command line.
++ Patch: Tito
++ - * Fixed crash bug.
++ Patch: Christian Holland
++ - * Added Adblock.
++ * about:blank support.
++ Patches: Rudolf Polzer
++
++
+ dillo-0.8.5 [Jun 15, 2005]
+
+ - * Set "file:" to work as URI for current directory.
+@@ -65,6 +95,18 @@ dillo-0.8.5 [Jun 15, 2005]
+ Patches: Jorge Arellano
+
+
++dillo-0.8.4-i18n-misc [??, 2005]
++
++ - * Applied 0.8.4 Changes to dillo-0.8.3-i18n-misc
++ * Added more i18n.
++ * Some bug fixed.
++ Patch: Kiyo
++ - * Added Chinese Message Catalog.
++ po catalogs: Babyfai Cheung
++ - * cache-control
++ Patch:: madis
++
++
+ dillo-0.8.4 [Jan 11, 2005]
+
+ - * Fixed a possible attack (program abortion) by malicious web pages, which
+@@ -116,6 +158,15 @@ dillo-0.8.4 [Jan 11, 2005]
+ Patch: Tavis Ormandy
+
+
++dillo-0.8.3-i18n-misc [??, 2004]
++
++ - * Applied 0.8.3 Changes to dillo-0.8.2-i18n-misc
++ * Text Search in status bar
++ * Added more i18n.
++ * Some bug fixed.
++ Patch: Kiyo
++
++
+ dillo-0.8.3 [Oct 27, 2004]
+
+ - * Added a missing error handler for unreachable host in http.c.
+@@ -170,6 +221,12 @@ dillo-0.8.3 [Oct 27, 2004]
+ Patch: Björn Brill
+
+
++dillo-0.8.2-i18n-misc [??, 2004]
++
++ - * Applied 0.8.2 Changes to dillo-0.8.1-i18n-misc
++ Patch: Kiyo
++
++
+ dillo-0.8.2 [Jul 06, 2004]
+
+ - * Made PgUp/PgDn scroll by a full page, instead of a half (BUG#418).
+@@ -204,6 +261,12 @@ dillo-0.8.2 [Jul 06, 2004]
+ Patch: Diego Sáenz
+
+
++dillo-0.8.1-i18n-misc [??, 2004]
++
++ - * Applied 0.8.1 Changes to dillo-0.8.0-i18n-misc
++ Patch: Kiyo
++
++
+ dillo-0.8.1 [May 14, 2004]
+
+ - * Fixed dirent.h includes inside dpid.
+@@ -258,6 +321,13 @@ dillo-0.8.1 [May 14, 2004]
+ Patches: Jorge Arellano
+
+
++dillo-0.8.0-i18n-misc [??, 2004]
++
++ - * Applied 0.8.0 Changes to dillo-0.7.3-i18n-misc
++ * Fixed some bugs.
++ Patch: Kiyo
++
++
+ dillo-0.8.0 [Feb 08, 2004]
+
+ - * Added a right-mouse-button popup for images!
+@@ -391,9 +461,46 @@ dillo-0.8.0 [Feb 08, 2004]
+ - * Added the "-geometry" switch to the CLI.
+ Patch: Jorge Arellano, Jan Dittmer
+
++dillo-0.7.3-i18n-misc [Oct ??, 2003]
++
++ - * Xft support
++ * changed internal code that is processed by UTF-8
++ * charset automatic recognition support
++ * GUI setting tool
++ * Start-up URL specification support
++ * gzip compression transmission support
++ * SSL support
++ * BASIC authorization support
++ * Referer support
++ * User-Agent change support
++ * meta-refresh support(optional)
++ * "Character entity references" (like &#xnnnn;) support
++ * Gettextize
++ * multi byte char selection support
++ * Fixed scroll quantity
++ * Fixed tab, frame patch
++ * Change font setting code for i18n
++ * Add Search box
++ Patches: Kiyo(http://teki.jpn.ph/)
++ (These patches referred to --
++ Robert Thomson, Tor Andersson, Frank de lange, madis, Geoff Lane,
++ Lars Clausen, Jim Huang, Takubo, LJ, Sam Mason)
+
+ dillo-0.7.3 [Aug 03, 2003]
+
++ - * Implemented tabbed browsing, separated 'document' from 'interface' code
++ - Moved all document-specific code into DilloDoc (src/doc.c/h and
++ src/browser.h for definition of DilloDoc)
++ - Added tab browsing as an option (enabled by default, disable
++ with --disable-tabs configure option)
++ * Focus is on location bar on new empty window/tab
++ * Open new window on link-shift-click1, new tab on link-control-click1
++ - optionally open tab on link-click2 (pref tab_on_middle_click=YES)
++ * Implemented experimental frame and iframe support
++ - Added frame and iframe support as an option (enabled by default,
++ disable with --disable-frames configure option)
++ - Added support for named windows/frames (target= and name= parameters)
++ Patch: Frank de Lange
+ - * Some more selection goodies:
+ - Redesign of the selection state model, now the selection is preserved
+ as long as possible.
+diff -pruN dillo-0.8.6/Makefile.am dillo-0.8.6-i18n-misc-20060709/Makefile.am
+--- dillo-0.8.6/Makefile.am 2005-10-29 03:55:23.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/Makefile.am 2006-07-09 00:18:49.000000000 +0900
+@@ -1,5 +1,10 @@
+-SUBDIRS = doc dpip src dpid dpi
++AM_CPPFLAGS=-DDILLORC_SYS='"$(sysconfdir)/dillorc"' -DLOCALEDIR='"$(localedir)"'
+
+-EXTRA_DIST = ChangeLog.old dillorc install-dpi-local
++SUBDIRS = m4 doc dpip src dpid dpi config po
++
++EXTRA_DIST = config.rpath ChangeLog.old dillorc install-dpi-local autogen.sh bm-update
++bin_SCRIPTS = bm-update
+
+ sysconf_DATA = dillorc
++
++ACLOCAL_AMFLAGS = -I m4
+diff -pruN dillo-0.8.6/Makefile.in dillo-0.8.6-i18n-misc-20060709/Makefile.in
+--- dillo-0.8.6/Makefile.in 2006-04-27 01:07:27.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/Makefile.in 2006-07-09 00:26:09.000000000 +0900
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.5 from Makefile.am.
++# Makefile.in generated by automake 1.7.9 from Makefile.am.
+ # @configure_input@
+
+-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
++# Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -21,6 +21,7 @@ pkgdatadir = $(datadir)/@PACKAGE@
+ pkglibdir = $(libdir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
+ top_builddir = .
++
+ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+ INSTALL = @INSTALL@
+ install_sh_DATA = $(install_sh) -c -m 644
+@@ -37,51 +38,6 @@ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+ target_triplet = @target@
+-DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+- $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+- $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
+- config.guess config.sub depcomp install-sh missing
+-subdir = .
+-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+- $(ACLOCAL_M4)
+-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+- configure.lineno configure.status.lineno
+-mkinstalldirs = $(install_sh) -d
+-CONFIG_HEADER = config.h
+-CONFIG_CLEAN_FILES =
+-SOURCES =
+-DIST_SOURCES =
+-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+- html-recursive info-recursive install-data-recursive \
+- install-exec-recursive install-info-recursive \
+- install-recursive installcheck-recursive installdirs-recursive \
+- pdf-recursive ps-recursive uninstall-info-recursive \
+- uninstall-recursive
+-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+-am__vpath_adj = case $$p in \
+- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+- *) f=$$p;; \
+- esac;
+-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+-am__installdirs = "$(DESTDIR)$(sysconfdir)"
+-sysconfDATA_INSTALL = $(INSTALL_DATA)
+-DATA = $(sysconf_DATA)
+-ETAGS = etags
+-CTAGS = ctags
+-DIST_SUBDIRS = $(SUBDIRS)
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-distdir = $(PACKAGE)-$(VERSION)
+-top_distdir = $(distdir)
+-am__remove_distdir = \
+- { test ! -d $(distdir) \
+- || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+- && rm -fr $(distdir); }; }
+-DIST_ARCHIVES = $(distdir).tar.gz
+-GZIP_ENV = --best
+-distuninstallcheck_listfiles = find . -type f -print
+-distcleancheck_listfiles = find . -type f -print
+ ACLOCAL = @ACLOCAL@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+@@ -111,6 +67,7 @@ EXEEXT = @EXEEXT@
+ GLIB_CFLAGS = @GLIB_CFLAGS@
+ GLIB_CONFIG = @GLIB_CONFIG@
+ GLIB_LIBS = @GLIB_LIBS@
++GMSGFMT = @GMSGFMT@
+ GTK_CFLAGS = @GTK_CFLAGS@
+ GTK_CONFIG = @GTK_CONFIG@
+ GTK_LIBS = @GTK_LIBS@
+@@ -118,9 +75,12 @@ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
++INTLLIBS = @INTLLIBS@
+ LDFLAGS = @LDFLAGS@
+ LIBFLTK_CXXFLAGS = @LIBFLTK_CXXFLAGS@
+ LIBFLTK_LIBS = @LIBFLTK_LIBS@
++LIBICONV = @LIBICONV@
++LIBINTL = @LIBINTL@
+ LIBJPEG_CPPFLAGS = @LIBJPEG_CPPFLAGS@
+ LIBJPEG_LDFLAGS = @LIBJPEG_LDFLAGS@
+ LIBJPEG_LIBS = @LIBJPEG_LIBS@
+@@ -132,8 +92,13 @@ LIBPTHREAD_LIBS = @LIBPTHREAD_LIBS@
+ LIBS = @LIBS@
+ LIBSSL_LIBS = @LIBSSL_LIBS@
+ LIBZ_LIBS = @LIBZ_LIBS@
++LTLIBICONV = @LTLIBICONV@
++LTLIBINTL = @LTLIBINTL@
+ LTLIBOBJS = @LTLIBOBJS@
+ MAKEINFO = @MAKEINFO@
++MKINSTALLDIRS = @MKINSTALLDIRS@
++MSGFMT = @MSGFMT@
++MSGMERGE = @MSGMERGE@
+ OBJEXT = @OBJEXT@
+ PACKAGE = @PACKAGE@
+ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+@@ -142,11 +107,16 @@ PACKAGE_STRING = @PACKAGE_STRING@
+ PACKAGE_TARNAME = @PACKAGE_TARNAME@
+ PACKAGE_VERSION = @PACKAGE_VERSION@
+ PATH_SEPARATOR = @PATH_SEPARATOR@
++PKG_CONFIG = @PKG_CONFIG@
++POSUB = @POSUB@
+ RANLIB = @RANLIB@
+ SET_MAKE = @SET_MAKE@
+ SHELL = @SHELL@
+ STRIP = @STRIP@
++USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
++XFT_CONFIG = @XFT_CONFIG@
++XGETTEXT = @XGETTEXT@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_RANLIB = @ac_ct_RANLIB@
+@@ -158,8 +128,6 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TR
+ am__include = @am__include@
+ am__leading_dot = @am__leading_dot@
+ am__quote = @am__quote@
+-am__tar = @am__tar@
+-am__untar = @am__untar@
+ bindir = @bindir@
+ build = @build@
+ build_alias = @build_alias@
+@@ -178,9 +146,9 @@ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
++localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+-mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+@@ -192,45 +160,56 @@ target_alias = @target_alias@
+ target_cpu = @target_cpu@
+ target_os = @target_os@
+ target_vendor = @target_vendor@
+-SUBDIRS = doc dpip src dpid dpi
+-EXTRA_DIST = ChangeLog.old dillorc install-dpi-local
++AM_CPPFLAGS = -DDILLORC_SYS='"$(sysconfdir)/dillorc"' -DLOCALEDIR='"$(localedir)"'
++
++SUBDIRS = m4 doc dpip src dpid dpi config po
++
++EXTRA_DIST = config.rpath ChangeLog.old dillorc install-dpi-local autogen.sh bm-update
++bin_SCRIPTS = bm-update
++
+ sysconf_DATA = dillorc
++
++ACLOCAL_AMFLAGS = -I m4
++subdir = .
++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
++CONFIG_HEADER = config.h
++CONFIG_CLEAN_FILES =
++SCRIPTS = $(bin_SCRIPTS)
++
++DIST_SOURCES =
++DATA = $(sysconf_DATA)
++
++
++RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
++ ps-recursive install-info-recursive uninstall-info-recursive \
++ all-recursive install-data-recursive install-exec-recursive \
++ installdirs-recursive install-recursive uninstall-recursive \
++ check-recursive installcheck-recursive
++DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/configure \
++ ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL Makefile.am NEWS \
++ aclocal.m4 config.guess config.h.in config.rpath config.sub \
++ configure configure.in depcomp install-sh missing mkinstalldirs
++DIST_SUBDIRS = $(SUBDIRS)
+ all: config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+ .SUFFIXES:
+-am--refresh:
+- @:
+-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+- @for dep in $?; do \
+- case '$(am__configure_deps)' in \
+- *$$dep*) \
+- echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
+- cd $(srcdir) && $(AUTOMAKE) --gnu \
+- && exit 0; \
+- exit 1;; \
+- esac; \
+- done; \
+- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
++
++am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
++ configure.lineno
++$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu Makefile
+-.PRECIOUS: Makefile
+-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+- @case '$?' in \
+- *config.status*) \
+- echo ' $(SHELL) ./config.status'; \
+- $(SHELL) ./config.status;; \
+- *) \
+- echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+- esac;
++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
++ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
+
+-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
++$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+-
+-$(top_srcdir)/configure: $(am__configure_deps)
++$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
+ cd $(srcdir) && $(AUTOCONF)
+-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
++
++$(ACLOCAL_M4): configure.in m4/codeset.m4 m4/gettext.m4 m4/glibc21.m4 m4/iconv.m4 m4/intdiv0.m4 m4/intmax.m4 m4/inttypes-pri.m4 m4/inttypes.m4 m4/inttypes_h.m4 m4/isc-posix.m4 m4/lcmessage.m4 m4/lib-ld.m4 m4/lib-link.m4 m4/lib-prefix.m4 m4/longdouble.m4 m4/longlong.m4 m4/nls.m4 m4/po.m4 m4/printf-posix.m4 m4/progtest.m4 m4/signed.m4 m4/size_max.m4 m4/stdint_h.m4 m4/uintmax_t.m4 m4/ulonglong.m4 m4/wchar_t.m4 m4/wint_t.m4 m4/xsize.m4
+ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+
+ config.h: stamp-h1
+@@ -242,30 +221,51 @@ config.h: stamp-h1
+ stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status config.h
+-$(srcdir)/config.h.in: $(am__configure_deps)
++
++$(srcdir)/config.h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && $(AUTOHEADER)
+- rm -f stamp-h1
+- touch $@
++ touch $(srcdir)/config.h.in
+
+ distclean-hdr:
+ -rm -f config.h stamp-h1
++binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
++install-binSCRIPTS: $(bin_SCRIPTS)
++ @$(NORMAL_INSTALL)
++ $(mkinstalldirs) $(DESTDIR)$(bindir)
++ @list='$(bin_SCRIPTS)'; for p in $$list; do \
++ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
++ if test -f $$d$$p; then \
++ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
++ echo " $(binSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(bindir)/$$f"; \
++ $(binSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(bindir)/$$f; \
++ else :; fi; \
++ done
++
++uninstall-binSCRIPTS:
++ @$(NORMAL_UNINSTALL)
++ @list='$(bin_SCRIPTS)'; for p in $$list; do \
++ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
++ echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
++ rm -f $(DESTDIR)$(bindir)/$$f; \
++ done
+ uninstall-info-am:
++sysconfDATA_INSTALL = $(INSTALL_DATA)
+ install-sysconfDATA: $(sysconf_DATA)
+ @$(NORMAL_INSTALL)
+- test -z "$(sysconfdir)" || $(mkdir_p) "$(DESTDIR)$(sysconfdir)"
++ $(mkinstalldirs) $(DESTDIR)$(sysconfdir)
+ @list='$(sysconf_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+- f=$(am__strip_dir) \
+- echo " $(sysconfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(sysconfdir)/$$f'"; \
+- $(sysconfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(sysconfdir)/$$f"; \
++ f="`echo $$p | sed -e 's|^.*/||'`"; \
++ echo " $(sysconfDATA_INSTALL) $$d$$p $(DESTDIR)$(sysconfdir)/$$f"; \
++ $(sysconfDATA_INSTALL) $$d$$p $(DESTDIR)$(sysconfdir)/$$f; \
+ done
+
+ uninstall-sysconfDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(sysconf_DATA)'; for p in $$list; do \
+- f=$(am__strip_dir) \
+- echo " rm -f '$(DESTDIR)$(sysconfdir)/$$f'"; \
+- rm -f "$(DESTDIR)$(sysconfdir)/$$f"; \
++ f="`echo $$p | sed -e 's|^.*/||'`"; \
++ echo " rm -f $(DESTDIR)$(sysconfdir)/$$f"; \
++ rm -f $(DESTDIR)$(sysconfdir)/$$f; \
+ done
+
+ # This directory's subdirectories are mostly independent; you can cd
+@@ -275,13 +275,7 @@ uninstall-sysconfDATA:
+ # (which will cause the Makefiles to be regenerated when you run `make');
+ # (2) otherwise, pass the desired values on the `make' command line.
+ $(RECURSIVE_TARGETS):
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+@@ -293,7 +287,7 @@ $(RECURSIVE_TARGETS):
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+@@ -301,13 +295,7 @@ $(RECURSIVE_TARGETS):
+
+ mostlyclean-recursive clean-recursive distclean-recursive \
+ maintainer-clean-recursive:
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+@@ -328,7 +316,7 @@ maintainer-clean-recursive:
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+ tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+@@ -339,6 +327,14 @@ ctags-recursive:
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
++ETAGS = etags
++ETAGSFLAGS =
++
++CTAGS = ctags
++CTAGSFLAGS =
++
++tags: TAGS
++
+ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+@@ -347,22 +343,19 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+-tags: TAGS
+
+ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
++ if (etags --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+- empty_fix=.; \
+ else \
+ include_option=--include; \
+- empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+- test ! -f $$subdir/TAGS || \
++ test -f $$subdir/TAGS && \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+@@ -372,11 +365,10 @@ TAGS: tags-recursive $(HEADERS) $(SOURCE
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+- test -n "$$unique" || unique=$$empty_fix; \
+- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+- $$tags $$unique; \
+- fi
++ test -z "$(ETAGS_ARGS)$$tags$$unique" \
++ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
++ $$tags $$unique
++
+ ctags: CTAGS
+ CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+@@ -399,10 +391,24 @@ GTAGS:
+
+ distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
++
++top_distdir = .
++distdir = $(PACKAGE)-$(VERSION)
++
++am__remove_distdir = \
++ { test ! -d $(distdir) \
++ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
++ && rm -fr $(distdir); }; }
++
++GZIP_ENV = --best
++distuninstallcheck_listfiles = find . -type f -print
++distcleancheck_listfiles = find . -type f -print
+
+ distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ mkdir $(distdir)
++ $(mkinstalldirs) $(distdir)/po
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+@@ -414,7 +420,7 @@ distdir: $(DISTFILES)
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+- $(mkdir_p) "$(distdir)$$dir"; \
++ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+@@ -429,17 +435,15 @@ distdir: $(DISTFILES)
+ || exit 1; \
+ fi; \
+ done
+- list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
++ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+- test -d "$(distdir)/$$subdir" \
+- || $(mkdir_p) "$(distdir)/$$subdir" \
++ test -d $(distdir)/$$subdir \
++ || mkdir $(distdir)/$$subdir \
+ || exit 1; \
+- distdir=`$(am__cd) $(distdir) && pwd`; \
+- top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+- top_distdir="$$top_distdir" \
+- distdir="$$distdir/$$subdir" \
++ top_distdir="$(top_distdir)" \
++ distdir=../$(distdir)/$$subdir \
+ distdir) \
+ || exit 1; \
+ fi; \
+@@ -450,46 +454,19 @@ distdir: $(DISTFILES)
+ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r $(distdir)
+ dist-gzip: distdir
+- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+- $(am__remove_distdir)
+-
+-dist-bzip2: distdir
+- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+- $(am__remove_distdir)
+-
+-dist-tarZ: distdir
+- tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+- $(am__remove_distdir)
+-
+-dist-shar: distdir
+- shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+- $(am__remove_distdir)
+-
+-dist-zip: distdir
+- -rm -f $(distdir).zip
+- zip -rq $(distdir).zip $(distdir)
++ $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+ dist dist-all: distdir
+- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
++ $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+ # This target untars the dist file and tries a VPATH configuration. Then
+ # it guarantees that the distribution is self-contained by making another
+ # tarfile.
+ distcheck: dist
+- case '$(DIST_ARCHIVES)' in \
+- *.tar.gz*) \
+- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+- *.tar.bz2*) \
+- bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+- *.tar.Z*) \
+- uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+- *.shar.gz*) \
+- GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+- *.zip*) \
+- unzip $(distdir).zip ;;\
+- esac
++ $(am__remove_distdir)
++ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
+ chmod -R a-w $(distdir); chmod a+w $(distdir)
+ mkdir $(distdir)/_build
+ mkdir $(distdir)/_inst
+@@ -509,20 +486,19 @@ distcheck: dist
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+- (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
++ (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+- && $(MAKE) $(AM_MAKEFLAGS) dist \
+- && rm -rf $(DIST_ARCHIVES) \
++ && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
++ && rm -f $(distdir).tar.gz \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+ $(am__remove_distdir)
+- @(echo "$(distdir) archives ready for distribution: "; \
+- list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+- sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
++ @echo "$(distdir).tar.gz is ready for distribution" | \
++ sed 'h;s/./=/g;p;x;p;x'
+ distuninstallcheck:
+ @cd $(distuninstallcheck_dir) \
+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+@@ -543,12 +519,11 @@ distcleancheck: distclean
+ exit 1; } >&2
+ check-am: all-am
+ check: check-recursive
+-all-am: Makefile $(DATA) config.h
++all-am: Makefile $(SCRIPTS) $(DATA) config.h
+ installdirs: installdirs-recursive
+ installdirs-am:
+- for dir in "$(DESTDIR)$(sysconfdir)"; do \
+- test -z "$$dir" || $(mkdir_p) "$$dir"; \
+- done
++ $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(sysconfdir)
++
+ install: install-recursive
+ install-exec: install-exec-recursive
+ install-data: install-data-recursive
+@@ -568,7 +543,7 @@ mostlyclean-generic:
+ clean-generic:
+
+ distclean-generic:
+- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
++ -rm -f $(CONFIG_CLEAN_FILES)
+
+ maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+@@ -586,15 +561,13 @@ dvi: dvi-recursive
+
+ dvi-am:
+
+-html: html-recursive
+-
+ info: info-recursive
+
+ info-am:
+
+ install-data-am:
+
+-install-exec-am: install-sysconfDATA
++install-exec-am: install-binSCRIPTS install-sysconfDATA
+
+ install-info: install-info-recursive
+
+@@ -620,24 +593,28 @@ ps: ps-recursive
+
+ ps-am:
+
+-uninstall-am: uninstall-info-am uninstall-sysconfDATA
++uninstall-am: uninstall-binSCRIPTS uninstall-info-am \
++ uninstall-sysconfDATA
+
+ uninstall-info: uninstall-info-recursive
+
+-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
+- check-am clean clean-generic clean-recursive ctags \
+- ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \
+- dist-tarZ dist-zip distcheck distclean distclean-generic \
+- distclean-hdr distclean-recursive distclean-tags \
+- distcleancheck distdir distuninstallcheck dvi dvi-am html \
+- html-am info info-am install install-am install-data \
+- install-data-am install-exec install-exec-am install-info \
+- install-info-am install-man install-strip install-sysconfDATA \
++.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
++ clean-generic clean-recursive ctags ctags-recursive dist \
++ dist-all dist-gzip distcheck distclean distclean-generic \
++ distclean-hdr distclean-recursive distclean-tags distcleancheck \
++ distdir distuninstallcheck dvi dvi-am dvi-recursive info \
++ info-am info-recursive install install-am install-binSCRIPTS \
++ install-data install-data-am install-data-recursive \
++ install-exec install-exec-am install-exec-recursive \
++ install-info install-info-am install-info-recursive install-man \
++ install-recursive install-strip install-sysconfDATA \
+ installcheck installcheck-am installdirs installdirs-am \
+- maintainer-clean maintainer-clean-generic \
++ installdirs-recursive maintainer-clean maintainer-clean-generic \
+ maintainer-clean-recursive mostlyclean mostlyclean-generic \
+- mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+- uninstall uninstall-am uninstall-info-am uninstall-sysconfDATA
++ mostlyclean-recursive pdf pdf-am pdf-recursive ps ps-am \
++ ps-recursive tags tags-recursive uninstall uninstall-am \
++ uninstall-binSCRIPTS uninstall-info-am uninstall-info-recursive \
++ uninstall-recursive uninstall-sysconfDATA
+
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
+diff -pruN dillo-0.8.6/README dillo-0.8.6-i18n-misc-20060709/README
+--- dillo-0.8.6/README 2006-03-25 01:00:18.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/README 2006-05-16 01:21:07.000000000 +0900
+@@ -1,3 +1,14 @@
++===============================
++ Dillo i18n patch by Kiyo
++===============================
++
++This is an unofficial i18n patch.
++Please see ChangeLog for details.
++Please do not ask a dillo team about this patch.
++
++The newest patch can get in http://teki.jpn.ph/pc/software/index-e.shtml
++If you found bug, please mail to webmaster@teki.jpn.ph.
++
+ =======
+ Dillo
+ =======
+@@ -116,3 +127,5 @@ gcc
+ Jorge.-
+ (jcid@dillo.org)
+ Mar 24, 2006
++
++
+diff -pruN dillo-0.8.6/aclocal.m4 dillo-0.8.6-i18n-misc-20060709/aclocal.m4
+--- dillo-0.8.6/aclocal.m4 2006-04-27 01:06:18.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/aclocal.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -1,7 +1,7 @@
+-# generated automatically by aclocal 1.9.5 -*- Autoconf -*-
++# generated automatically by aclocal 1.7.9 -*- Autoconf -*-
+
+-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+-# 2005 Free Software Foundation, Inc.
++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
++# Free Software Foundation, Inc.
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -11,535 +11,496 @@
+ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ # PARTICULAR PURPOSE.
+
+-# Configure paths for GLIB
+-# Owen Taylor 97-11-3
++# Do all the work for Automake. -*- Autoconf -*-
+
+-dnl AM_PATH_GLIB([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+-dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if "gmodule" or
+-dnl gthread is specified in MODULES, pass to glib-config
+-dnl
+-AC_DEFUN(AM_PATH_GLIB,
+-[dnl
+-dnl Get the cflags and libraries from the glib-config script
+-dnl
+-AC_ARG_WITH(glib-prefix,[ --with-glib-prefix=PFX Prefix where GLIB is installed (optional)],
+- glib_config_prefix="$withval", glib_config_prefix="")
+-AC_ARG_WITH(glib-exec-prefix,[ --with-glib-exec-prefix=PFX Exec prefix where GLIB is installed (optional)],
+- glib_config_exec_prefix="$withval", glib_config_exec_prefix="")
+-AC_ARG_ENABLE(glibtest, [ --disable-glibtest Do not try to compile and run a test GLIB program],
+- , enable_glibtest=yes)
++# This macro actually does too much some checks are only needed if
++# your package does certain things. But this isn't really a big deal.
+
+- if test x$glib_config_exec_prefix != x ; then
+- glib_config_args="$glib_config_args --exec-prefix=$glib_config_exec_prefix"
+- if test x${GLIB_CONFIG+set} != xset ; then
+- GLIB_CONFIG=$glib_config_exec_prefix/bin/glib-config
+- fi
+- fi
+- if test x$glib_config_prefix != x ; then
+- glib_config_args="$glib_config_args --prefix=$glib_config_prefix"
+- if test x${GLIB_CONFIG+set} != xset ; then
+- GLIB_CONFIG=$glib_config_prefix/bin/glib-config
+- fi
+- fi
++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
++# Free Software Foundation, Inc.
+
+- for module in . $4
+- do
+- case "$module" in
+- gmodule)
+- glib_config_args="$glib_config_args gmodule"
+- ;;
+- gthread)
+- glib_config_args="$glib_config_args gthread"
+- ;;
+- esac
+- done
++# 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.
+
+- AC_PATH_PROG(GLIB_CONFIG, glib-config, no)
+- min_glib_version=ifelse([$1], ,0.99.7,$1)
+- AC_MSG_CHECKING(for GLIB - version >= $min_glib_version)
+- no_glib=""
+- if test "$GLIB_CONFIG" = "no" ; then
+- no_glib=yes
+- else
+- GLIB_CFLAGS=`$GLIB_CONFIG $glib_config_args --cflags`
+- GLIB_LIBS=`$GLIB_CONFIG $glib_config_args --libs`
+- glib_config_major_version=`$GLIB_CONFIG $glib_config_args --version | \
+- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+- glib_config_minor_version=`$GLIB_CONFIG $glib_config_args --version | \
+- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+- glib_config_micro_version=`$GLIB_CONFIG $glib_config_args --version | \
+- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+- if test "x$enable_glibtest" = "xyes" ; then
+- ac_save_CFLAGS="$CFLAGS"
+- ac_save_LIBS="$LIBS"
+- CFLAGS="$CFLAGS $GLIB_CFLAGS"
+- LIBS="$GLIB_LIBS $LIBS"
+-dnl
+-dnl Now check if the installed GLIB is sufficiently new. (Also sanity
+-dnl checks the results of glib-config to some extent
+-dnl
+- rm -f conf.glibtest
+- AC_TRY_RUN([
+-#include <glib.h>
+-#include <stdio.h>
+-#include <stdlib.h>
++# 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.
+
+-int
+-main ()
+-{
+- int major, minor, micro;
+- char *tmp_version;
++# 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.
+
+- system ("touch conf.glibtest");
++# serial 10
+
+- /* HP/UX 9 (%@#!) writes to sscanf strings */
+- tmp_version = g_strdup("$min_glib_version");
+- if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+- printf("%s, bad version string\n", "$min_glib_version");
+- exit(1);
+- }
++AC_PREREQ([2.54])
+
+- if ((glib_major_version != $glib_config_major_version) ||
+- (glib_minor_version != $glib_config_minor_version) ||
+- (glib_micro_version != $glib_config_micro_version))
+- {
+- printf("\n*** 'glib-config --version' returned %d.%d.%d, but GLIB (%d.%d.%d)\n",
+- $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version,
+- glib_major_version, glib_minor_version, glib_micro_version);
+- printf ("*** was found! If glib-config was correct, then it is best\n");
+- printf ("*** to remove the old version of GLIB. You may also be able to fix the error\n");
+- printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+- printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+- printf("*** required on your system.\n");
+- printf("*** If glib-config was wrong, set the environment variable GLIB_CONFIG\n");
+- printf("*** to point to the correct copy of glib-config, and remove the file config.cache\n");
+- printf("*** before re-running configure\n");
+- }
+- else if ((glib_major_version != GLIB_MAJOR_VERSION) ||
+- (glib_minor_version != GLIB_MINOR_VERSION) ||
+- (glib_micro_version != GLIB_MICRO_VERSION))
+- {
+- printf("*** GLIB header files (version %d.%d.%d) do not match\n",
+- GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
+- printf("*** library (version %d.%d.%d)\n",
+- glib_major_version, glib_minor_version, glib_micro_version);
+- }
+- else
+- {
+- if ((glib_major_version > major) ||
+- ((glib_major_version == major) && (glib_minor_version > minor)) ||
+- ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro)))
+- {
+- return 0;
+- }
+- else
+- {
+- printf("\n*** An old version of GLIB (%d.%d.%d) was found.\n",
+- glib_major_version, glib_minor_version, glib_micro_version);
+- printf("*** You need a version of GLIB newer than %d.%d.%d. The latest version of\n",
+- major, minor, micro);
+- printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
+- printf("***\n");
+- printf("*** If you have already installed a sufficiently new version, this error\n");
+- printf("*** probably means that the wrong copy of the glib-config shell script is\n");
+- printf("*** being found. The easiest way to fix this is to remove the old version\n");
+- printf("*** of GLIB, but you can also set the GLIB_CONFIG environment to point to the\n");
+- printf("*** correct copy of glib-config. (In this case, you will have to\n");
+- printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+- printf("*** so that the correct libraries are found at run-time))\n");
+- }
+- }
+- return 1;
+-}
+-],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+- CFLAGS="$ac_save_CFLAGS"
+- LIBS="$ac_save_LIBS"
+- fi
+- fi
+- if test "x$no_glib" = x ; then
+- AC_MSG_RESULT(yes)
+- ifelse([$2], , :, [$2])
++# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow
++# the ones we care about.
++m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
++
++# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
++# AM_INIT_AUTOMAKE([OPTIONS])
++# -----------------------------------------------
++# The call with PACKAGE and VERSION arguments is the old style
++# call (pre autoconf-2.50), which is being phased out. PACKAGE
++# and VERSION should now be passed to AC_INIT and removed from
++# the call to AM_INIT_AUTOMAKE.
++# We support both call styles for the transition. After
++# the next Automake release, Autoconf can make the AC_INIT
++# arguments mandatory, and then we can depend on a new Autoconf
++# release and drop the old call support.
++AC_DEFUN([AM_INIT_AUTOMAKE],
++[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
++ AC_REQUIRE([AC_PROG_INSTALL])dnl
++# test to see if srcdir already configured
++if test "`cd $srcdir && pwd`" != "`pwd`" &&
++ test -f $srcdir/config.status; then
++ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
++fi
++
++# test whether we have cygpath
++if test -z "$CYGPATH_W"; then
++ if (cygpath --version) >/dev/null 2>/dev/null; then
++ CYGPATH_W='cygpath -w'
+ else
+- AC_MSG_RESULT(no)
+- if test "$GLIB_CONFIG" = "no" ; then
+- echo "*** The glib-config script installed by GLIB could not be found"
+- echo "*** If GLIB was installed in PREFIX, make sure PREFIX/bin is in"
+- echo "*** your path, or set the GLIB_CONFIG environment variable to the"
+- echo "*** full path to glib-config."
+- else
+- if test -f conf.glibtest ; then
+- :
+- else
+- echo "*** Could not run GLIB test program, checking why..."
+- CFLAGS="$CFLAGS $GLIB_CFLAGS"
+- LIBS="$LIBS $GLIB_LIBS"
+- AC_TRY_LINK([
+-#include <glib.h>
+-#include <stdio.h>
+-], [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ],
+- [ echo "*** The test program compiled, but did not run. This usually means"
+- echo "*** that the run-time linker is not finding GLIB or finding the wrong"
+- echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
+- echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+- echo "*** to the installed location Also, make sure you have run ldconfig if that"
+- echo "*** is required on your system"
+- echo "***"
+- echo "*** If you have an old version installed, it is best to remove it, although"
+- echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
+- echo "***"
+- echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
+- echo "*** came with the system with the command"
+- echo "***"
+- echo "*** rpm --erase --nodeps gtk gtk-devel" ],
+- [ echo "*** The test program failed to compile or link. See the file config.log for the"
+- echo "*** exact error that occured. This usually means GLIB was incorrectly installed"
+- echo "*** or that you have moved GLIB since it was installed. In the latter case, you"
+- echo "*** may want to edit the glib-config script: $GLIB_CONFIG" ])
+- CFLAGS="$ac_save_CFLAGS"
+- LIBS="$ac_save_LIBS"
+- fi
+- fi
+- GLIB_CFLAGS=""
+- GLIB_LIBS=""
+- ifelse([$3], , :, [$3])
++ CYGPATH_W=echo
+ fi
+- AC_SUBST(GLIB_CFLAGS)
+- AC_SUBST(GLIB_LIBS)
+- rm -f conf.glibtest
+-])
+-
+-# Configure paths for GTK+
+-# Owen Taylor 97-11-3
++fi
++AC_SUBST([CYGPATH_W])
+
+-dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+-dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
+-dnl
+-AC_DEFUN(AM_PATH_GTK,
+-[dnl
+-dnl Get the cflags and libraries from the gtk-config script
+-dnl
+-AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
+- gtk_config_prefix="$withval", gtk_config_prefix="")
+-AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
+- gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="")
+-AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
+- , enable_gtktest=yes)
++# Define the identity of the package.
++dnl Distinguish between old-style and new-style calls.
++m4_ifval([$2],
++[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
++ AC_SUBST([PACKAGE], [$1])dnl
++ AC_SUBST([VERSION], [$2])],
++[_AM_SET_OPTIONS([$1])dnl
++ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
++ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+- for module in . $4
+- do
+- case "$module" in
+- gthread)
+- gtk_config_args="$gtk_config_args gthread"
+- ;;
+- esac
+- done
++_AM_IF_OPTION([no-define],,
++[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
++ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+- if test x$gtk_config_exec_prefix != x ; then
+- gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
+- if test x${GTK_CONFIG+set} != xset ; then
+- GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
+- fi
+- fi
+- if test x$gtk_config_prefix != x ; then
+- gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
+- if test x${GTK_CONFIG+set} != xset ; then
+- GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
+- fi
+- fi
++# Some tools Automake needs.
++AC_REQUIRE([AM_SANITY_CHECK])dnl
++AC_REQUIRE([AC_ARG_PROGRAM])dnl
++AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
++AM_MISSING_PROG(AUTOCONF, autoconf)
++AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
++AM_MISSING_PROG(AUTOHEADER, autoheader)
++AM_MISSING_PROG(MAKEINFO, makeinfo)
++AM_MISSING_PROG(AMTAR, tar)
++AM_PROG_INSTALL_SH
++AM_PROG_INSTALL_STRIP
++# We need awk for the "check" target. The system "awk" is bad on
++# some platforms.
++AC_REQUIRE([AC_PROG_AWK])dnl
++AC_REQUIRE([AC_PROG_MAKE_SET])dnl
++AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+
+- AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
+- min_gtk_version=ifelse([$1], ,0.99.7,$1)
+- AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
+- no_gtk=""
+- if test "$GTK_CONFIG" = "no" ; then
+- no_gtk=yes
+- else
+- GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
+- GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
+- gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \
+- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+- gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
+- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+- gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
+- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+- if test "x$enable_gtktest" = "xyes" ; then
+- ac_save_CFLAGS="$CFLAGS"
+- ac_save_LIBS="$LIBS"
+- CFLAGS="$CFLAGS $GTK_CFLAGS"
+- LIBS="$GTK_LIBS $LIBS"
+-dnl
+-dnl Now check if the installed GTK is sufficiently new. (Also sanity
+-dnl checks the results of gtk-config to some extent
+-dnl
+- rm -f conf.gtktest
+- AC_TRY_RUN([
+-#include <gtk/gtk.h>
+-#include <stdio.h>
+-#include <stdlib.h>
++_AM_IF_OPTION([no-dependencies],,
++[AC_PROVIDE_IFELSE([AC_PROG_CC],
++ [_AM_DEPENDENCIES(CC)],
++ [define([AC_PROG_CC],
++ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
++AC_PROVIDE_IFELSE([AC_PROG_CXX],
++ [_AM_DEPENDENCIES(CXX)],
++ [define([AC_PROG_CXX],
++ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
++])
++])
+
+-int
+-main ()
+-{
+- int major, minor, micro;
+- char *tmp_version;
+
+- system ("touch conf.gtktest");
++# When config.status generates a header, we must update the stamp-h file.
++# This file resides in the same directory as the config header
++# that is generated. The stamp files are numbered to have different names.
+
+- /* HP/UX 9 (%@#!) writes to sscanf strings */
+- tmp_version = g_strdup("$min_gtk_version");
+- if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+- printf("%s, bad version string\n", "$min_gtk_version");
+- exit(1);
+- }
++# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
++# loop where config.status creates the headers, so we can generate
++# our stamp files there.
++AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
++[# Compute $1's index in $config_headers.
++_am_stamp_count=1
++for _am_header in $config_headers :; do
++ case $_am_header in
++ $1 | $1:* )
++ break ;;
++ * )
++ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
++ esac
++done
++echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+- if ((gtk_major_version != $gtk_config_major_version) ||
+- (gtk_minor_version != $gtk_config_minor_version) ||
+- (gtk_micro_version != $gtk_config_micro_version))
+- {
+- printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
+- $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
+- gtk_major_version, gtk_minor_version, gtk_micro_version);
+- printf ("*** was found! If gtk-config was correct, then it is best\n");
+- printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
+- printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+- printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+- printf("*** required on your system.\n");
+- printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n");
+- printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n");
+- printf("*** before re-running configure\n");
+- }
+-#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION)
+- else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
+- (gtk_minor_version != GTK_MINOR_VERSION) ||
+- (gtk_micro_version != GTK_MICRO_VERSION))
+- {
+- printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
+- GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
+- printf("*** library (version %d.%d.%d)\n",
+- gtk_major_version, gtk_minor_version, gtk_micro_version);
+- }
+-#endif /* defined (GTK_MAJOR_VERSION) ... */
+- else
+- {
+- if ((gtk_major_version > major) ||
+- ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
+- ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
+- {
+- return 0;
+- }
+- else
+- {
+- printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
+- gtk_major_version, gtk_minor_version, gtk_micro_version);
+- printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
+- major, minor, micro);
+- printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
+- printf("***\n");
+- printf("*** If you have already installed a sufficiently new version, this error\n");
+- printf("*** probably means that the wrong copy of the gtk-config shell script is\n");
+- printf("*** being found. The easiest way to fix this is to remove the old version\n");
+- printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n");
+- printf("*** correct copy of gtk-config. (In this case, you will have to\n");
+- printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+- printf("*** so that the correct libraries are found at run-time))\n");
+- }
+- }
+- return 1;
+-}
+-],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+- CFLAGS="$ac_save_CFLAGS"
+- LIBS="$ac_save_LIBS"
+- fi
+- fi
+- if test "x$no_gtk" = x ; then
+- AC_MSG_RESULT(yes)
+- ifelse([$2], , :, [$2])
+- else
+- AC_MSG_RESULT(no)
+- if test "$GTK_CONFIG" = "no" ; then
+- echo "*** The gtk-config script installed by GTK could not be found"
+- echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in"
+- echo "*** your path, or set the GTK_CONFIG environment variable to the"
+- echo "*** full path to gtk-config."
+- else
+- if test -f conf.gtktest ; then
+- :
+- else
+- echo "*** Could not run GTK test program, checking why..."
+- CFLAGS="$CFLAGS $GTK_CFLAGS"
+- LIBS="$LIBS $GTK_LIBS"
+- AC_TRY_LINK([
+-#include <gtk/gtk.h>
+-#include <stdio.h>
+-], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
+- [ echo "*** The test program compiled, but did not run. This usually means"
+- echo "*** that the run-time linker is not finding GTK or finding the wrong"
+- echo "*** version of GTK. If it is not finding GTK, you'll need to set your"
+- echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+- echo "*** to the installed location Also, make sure you have run ldconfig if that"
+- echo "*** is required on your system"
+- echo "***"
+- echo "*** If you have an old version installed, it is best to remove it, although"
+- echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
+- echo "***"
+- echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
+- echo "*** came with the system with the command"
+- echo "***"
+- echo "*** rpm --erase --nodeps gtk gtk-devel" ],
+- [ echo "*** The test program failed to compile or link. See the file config.log for the"
+- echo "*** exact error that occured. This usually means GTK was incorrectly installed"
+- echo "*** or that you have moved GTK since it was installed. In the latter case, you"
+- echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ])
+- CFLAGS="$ac_save_CFLAGS"
+- LIBS="$ac_save_LIBS"
+- fi
+- fi
+- GTK_CFLAGS=""
+- GTK_LIBS=""
+- ifelse([$3], , :, [$3])
+- fi
+- AC_SUBST(GTK_CFLAGS)
+- AC_SUBST(GTK_LIBS)
+- rm -f conf.gtktest
+-])
++# Copyright 2002 Free Software Foundation, Inc.
+
+-# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# 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
+
+ # AM_AUTOMAKE_VERSION(VERSION)
+ # ----------------------------
+ # Automake X.Y traces this macro to ensure aclocal.m4 has been
+ # generated from the m4 files accompanying Automake X.Y.
+-AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
++AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"])
+
+ # AM_SET_CURRENT_AUTOMAKE_VERSION
+ # -------------------------------
+ # Call AM_AUTOMAKE_VERSION so it can be traced.
+ # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+ AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+- [AM_AUTOMAKE_VERSION([1.9.5])])
++ [AM_AUTOMAKE_VERSION([1.7.9])])
+
+-# AM_AUX_DIR_EXPAND -*- Autoconf -*-
++# Helper functions for option handling. -*- Autoconf -*-
+
+-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright 2001, 2002 Free Software Foundation, Inc.
+
+-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+-# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+-#
+-# Of course, Automake must honor this variable whenever it calls a
+-# tool from the auxiliary directory. The problem is that $srcdir (and
+-# therefore $ac_aux_dir as well) can be either absolute or relative,
+-# depending on how configure is run. This is pretty annoying, since
+-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+-# source directory, any form will work fine, but in subdirectories a
+-# relative path needs to be adjusted first.
+-#
+-# $ac_aux_dir/missing
+-# fails when called from a subdirectory if $ac_aux_dir is relative
+-# $top_srcdir/$ac_aux_dir/missing
+-# fails if $ac_aux_dir is absolute,
+-# fails when called from a subdirectory in a VPATH build with
+-# a relative $ac_aux_dir
+-#
+-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+-# are both prefixed by $srcdir. In an in-source build this is usually
+-# harmless because $srcdir is `.', but things will broke when you
+-# start a VPATH build or use an absolute $srcdir.
+-#
+-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+-# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+-# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+-# and then we would define $MISSING as
+-# MISSING="\${SHELL} $am_aux_dir/missing"
+-# This will work as long as MISSING is not called from configure, because
+-# unfortunately $(top_srcdir) has no meaning in configure.
+-# However there are other variables, like CC, which are often used in
+-# configure, and could therefore not use this "fixed" $ac_aux_dir.
+-#
+-# Another solution, used here, is to always expand $ac_aux_dir to an
+-# absolute PATH. The drawback is that using absolute paths prevent a
+-# configured tree to be moved without reconfiguration.
++# 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.
+
+-AC_DEFUN([AM_AUX_DIR_EXPAND],
+-[dnl Rely on autoconf to set up CDPATH properly.
+-AC_PREREQ([2.50])dnl
+-# expand $ac_aux_dir to an absolute path
+-am_aux_dir=`cd $ac_aux_dir && pwd`
+-])
++# 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.
+
++# serial 2
+
+-# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2005
+-# Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# _AM_MANGLE_OPTION(NAME)
++# -----------------------
++AC_DEFUN([_AM_MANGLE_OPTION],
++[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
++
++# _AM_SET_OPTION(NAME)
++# ------------------------------
++# Set option NAME. Presently that only means defining a flag for this option.
++AC_DEFUN([_AM_SET_OPTION],
++[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
++
++# _AM_SET_OPTIONS(OPTIONS)
++# ----------------------------------
++# OPTIONS is a space-separated list of Automake options.
++AC_DEFUN([_AM_SET_OPTIONS],
++[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
++
++# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
++# -------------------------------------------
++# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
++AC_DEFUN([_AM_IF_OPTION],
++[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
++
++#
++# Check to make sure that the build environment is sane.
++#
++
++# Copyright 1996, 1997, 2000, 2001 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.
++
++# serial 3
++
++# AM_SANITY_CHECK
++# ---------------
++AC_DEFUN([AM_SANITY_CHECK],
++[AC_MSG_CHECKING([whether build environment is sane])
++# Just in case
++sleep 1
++echo timestamp > conftest.file
++# Do `set' in a subshell so we don't clobber the current shell's
++# arguments. Must try -L first in case configure is actually a
++# symlink; some systems play weird games with the mod time of symlinks
++# (eg FreeBSD returns the mod time of the symlink's containing
++# directory).
++if (
++ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
++ if test "$[*]" = "X"; then
++ # -L didn't work.
++ set X `ls -t $srcdir/configure conftest.file`
++ fi
++ rm -f conftest.file
++ if test "$[*]" != "X $srcdir/configure conftest.file" \
++ && test "$[*]" != "X conftest.file $srcdir/configure"; then
++
++ # If neither matched, then we have a broken ls. This can happen
++ # if, for instance, CONFIG_SHELL is bash and it inherits a
++ # broken ls alias from the environment. This has actually
++ # happened. Such a system could not be considered "sane".
++ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
++alias in your environment])
++ fi
+
+-# serial 4
++ test "$[2]" = conftest.file
++ )
++then
++ # Ok.
++ :
++else
++ AC_MSG_ERROR([newly created file is older than distributed files!
++Check your system clock])
++fi
++AC_MSG_RESULT(yes)])
++
++# -*- Autoconf -*-
++
++
++# Copyright 1997, 1999, 2000, 2001 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.
+
+-# This was merged into AC_PROG_CC in Autoconf.
++# serial 3
++
++# AM_MISSING_PROG(NAME, PROGRAM)
++# ------------------------------
++AC_DEFUN([AM_MISSING_PROG],
++[AC_REQUIRE([AM_MISSING_HAS_RUN])
++$1=${$1-"${am_missing_run}$2"}
++AC_SUBST($1)])
+
+-AU_DEFUN([AM_PROG_CC_STDC],
+-[AC_PROG_CC
+-AC_DIAGNOSE([obsolete], [$0:
+- your code should no longer depend upon `am_cv_prog_cc_stdc', but upon
+- `ac_cv_prog_cc_stdc'. Remove this warning and the assignment when
+- you adjust the code. You can also remove the above call to
+- AC_PROG_CC if you already called it elsewhere.])
+-am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
++
++# AM_MISSING_HAS_RUN
++# ------------------
++# Define MISSING if not defined so far and test if it supports --run.
++# If it does, set am_missing_run to use it, otherwise, to nothing.
++AC_DEFUN([AM_MISSING_HAS_RUN],
++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
++test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
++# Use eval to expand $SHELL
++if eval "$MISSING --run true"; then
++ am_missing_run="$MISSING --run "
++else
++ am_missing_run=
++ AC_MSG_WARN([`missing' script is too old or missing])
++fi
+ ])
+-AU_DEFUN([fp_PROG_CC_STDC])
+
+-# AM_CONDITIONAL -*- Autoconf -*-
++# AM_AUX_DIR_EXPAND
+
+-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
+-# Free Software Foundation, Inc.
++# Copyright 2001 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.
++
++# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
++# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
++# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+ #
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Of course, Automake must honor this variable whenever it calls a
++# tool from the auxiliary directory. The problem is that $srcdir (and
++# therefore $ac_aux_dir as well) can be either absolute or relative,
++# depending on how configure is run. This is pretty annoying, since
++# it makes $ac_aux_dir quite unusable in subdirectories: in the top
++# source directory, any form will work fine, but in subdirectories a
++# relative path needs to be adjusted first.
++#
++# $ac_aux_dir/missing
++# fails when called from a subdirectory if $ac_aux_dir is relative
++# $top_srcdir/$ac_aux_dir/missing
++# fails if $ac_aux_dir is absolute,
++# fails when called from a subdirectory in a VPATH build with
++# a relative $ac_aux_dir
++#
++# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
++# are both prefixed by $srcdir. In an in-source build this is usually
++# harmless because $srcdir is `.', but things will broke when you
++# start a VPATH build or use an absolute $srcdir.
++#
++# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
++# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
++# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
++# and then we would define $MISSING as
++# MISSING="\${SHELL} $am_aux_dir/missing"
++# This will work as long as MISSING is not called from configure, because
++# unfortunately $(top_srcdir) has no meaning in configure.
++# However there are other variables, like CC, which are often used in
++# configure, and could therefore not use this "fixed" $ac_aux_dir.
++#
++# Another solution, used here, is to always expand $ac_aux_dir to an
++# absolute PATH. The drawback is that using absolute paths prevent a
++# configured tree to be moved without reconfiguration.
+
+-# serial 7
++# Rely on autoconf to set up CDPATH properly.
++AC_PREREQ([2.50])
+
+-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+-# -------------------------------------
+-# Define a conditional.
+-AC_DEFUN([AM_CONDITIONAL],
+-[AC_PREREQ(2.52)dnl
+- ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+-AC_SUBST([$1_TRUE])
+-AC_SUBST([$1_FALSE])
+-if $2; then
+- $1_TRUE=
+- $1_FALSE='#'
++AC_DEFUN([AM_AUX_DIR_EXPAND], [
++# expand $ac_aux_dir to an absolute path
++am_aux_dir=`cd $ac_aux_dir && pwd`
++])
++
++# AM_PROG_INSTALL_SH
++# ------------------
++# Define $install_sh.
++
++# Copyright 2001 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.
++
++AC_DEFUN([AM_PROG_INSTALL_SH],
++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
++install_sh=${install_sh-"$am_aux_dir/install-sh"}
++AC_SUBST(install_sh)])
++
++# AM_PROG_INSTALL_STRIP
++
++# Copyright 2001 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.
++
++# One issue with vendor `install' (even GNU) is that you can't
++# specify the program used to strip binaries. This is especially
++# annoying in cross-compiling environments, where the build's strip
++# is unlikely to handle the host's binaries.
++# Fortunately install-sh will honor a STRIPPROG variable, so we
++# always use install-sh in `make install-strip', and initialize
++# STRIPPROG with the value of the STRIP variable (set by the user).
++AC_DEFUN([AM_PROG_INSTALL_STRIP],
++[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
++# Installed binaries are usually stripped using `strip' when the user
++# run `make install-strip'. However `strip' might not be the right
++# tool to use in cross-compilation environments, therefore Automake
++# will honor the `STRIP' environment variable to overrule this program.
++dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
++if test "$cross_compiling" != no; then
++ AC_CHECK_TOOL([STRIP], [strip], :)
++fi
++INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
++AC_SUBST([INSTALL_STRIP_PROGRAM])])
++
++# -*- Autoconf -*-
++# Copyright (C) 2003 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.
++
++# serial 1
++
++# Check whether the underlying file-system supports filenames
++# with a leading dot. For instance MS-DOS doesn't.
++AC_DEFUN([AM_SET_LEADING_DOT],
++[rm -rf .tst 2>/dev/null
++mkdir .tst 2>/dev/null
++if test -d .tst; then
++ am__leading_dot=.
+ else
+- $1_TRUE='#'
+- $1_FALSE=
++ am__leading_dot=_
+ fi
+-AC_CONFIG_COMMANDS_PRE(
+-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+- AC_MSG_ERROR([[conditional "$1" was never defined.
+-Usually this means the macro was only invoked conditionally.]])
+-fi])])
++rmdir .tst 2>/dev/null
++AC_SUBST([am__leading_dot])])
+
++# serial 5 -*- Autoconf -*-
+
+-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+-# Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 1999, 2000, 2001, 2002, 2003 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.
+
+-# serial 8
+
+ # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+ # written in clear, in which case automake, when reading aclocal.m4,
+@@ -548,6 +509,7 @@ fi])])
+ # CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
++
+ # _AM_DEPENDENCIES(NAME)
+ # ----------------------
+ # See how the compiler implements dependency checking.
+@@ -606,9 +568,7 @@ AC_CACHE_CHECK([dependency style of $dep
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+- # Solaris 8's {/usr,}/bin/sh.
+- touch sub/conftst$i.h
++ : > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+@@ -636,14 +596,9 @@ AC_CACHE_CHECK([dependency style of $dep
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+- # or remarks (even with -Werror). So we grep stderr for any message
+- # that says an option was ignored or not supported.
+- # When given -MP, icc 7.0 and 7.1 complain thusly:
+- # icc: Command line warning: ignoring option '-M'; no argument required
+- # The diagnosis changed in icc 8.0:
+- # icc: Command line remark: option '-MP' not supported
+- if (grep 'ignoring option' conftest.err ||
+- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
++ # (even with -Werror). So we grep stderr for any message
++ # that says an option was ignored.
++ if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+@@ -677,8 +632,8 @@ AC_SUBST([DEPDIR], ["${am__leading_dot}d
+ # ------------
+ AC_DEFUN([AM_DEP_TRACK],
+ [AC_ARG_ENABLE(dependency-tracking,
+-[ --disable-dependency-tracking speeds up one-time build
+- --enable-dependency-tracking do not reject slow dependency extractors])
++[ --disable-dependency-tracking Speeds up one-time builds
++ --enable-dependency-tracking Do not reject slow dependency extractors])
+ if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+@@ -687,16 +642,26 @@ AM_CONDITIONAL([AMDEP], [test "x$enable_
+ AC_SUBST([AMDEPBACKSLASH])
+ ])
+
+-# Generate code to set up dependency tracking. -*- Autoconf -*-
++# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+-# Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright 1999, 2000, 2001, 2002 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.
+
+-#serial 3
++#serial 2
+
+ # _AM_OUTPUT_DEPENDENCY_COMMANDS
+ # ------------------------------
+@@ -715,21 +680,27 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS
+ else
+ continue
+ fi
+- # Extract the definition of DEPDIR, am__include, and am__quote
+- # from the Makefile without running `make'.
+- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
++ grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue
++ # Extract the definition of DEP_FILES from the Makefile without
++ # running `make'.
++ DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+ test -z "$DEPDIR" && continue
+- am__include=`sed -n 's/^am__include = //p' < "$mf"`
+- test -z "am__include" && continue
+- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+- U=`sed -n 's/^U = //p' < "$mf"`
+- # Find all dependency output files, they are included files with
+- # $(DEPDIR) in their names. We invoke sed twice because it is the
+- # simplest approach to changing $(DEPDIR) to its actual value in the
+- # expansion.
+- for file in `sed -n "
+- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
++ U=`sed -n -e '/^U = / s///p' < "$mf"`
++ test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
++ # We invoke sed twice because it is the simplest approach to
++ # changing $(DEPDIR) to its actual value in the expansion.
++ for file in `sed -n -e '
++ /^DEP_FILES = .*\\\\$/ {
++ s/^DEP_FILES = //
++ :loop
++ s/\\\\$//
++ p
++ n
++ /\\\\$/ b loop
++ p
++ }
++ /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+@@ -755,176 +726,26 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS]
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+ ])
+
+-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+-# Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# serial 8
+-
+-# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
+-AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
++# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+-# Do all the work for Automake. -*- Autoconf -*-
++# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+
+-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+-# Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# 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.
+
+-# serial 12
++# 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.
+
+-# This macro actually does too much. Some checks are only needed if
+-# your package does certain things. But this isn't really a big deal.
+-
+-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+-# AM_INIT_AUTOMAKE([OPTIONS])
+-# -----------------------------------------------
+-# The call with PACKAGE and VERSION arguments is the old style
+-# call (pre autoconf-2.50), which is being phased out. PACKAGE
+-# and VERSION should now be passed to AC_INIT and removed from
+-# the call to AM_INIT_AUTOMAKE.
+-# We support both call styles for the transition. After
+-# the next Automake release, Autoconf can make the AC_INIT
+-# arguments mandatory, and then we can depend on a new Autoconf
+-# release and drop the old call support.
+-AC_DEFUN([AM_INIT_AUTOMAKE],
+-[AC_PREREQ([2.58])dnl
+-dnl Autoconf wants to disallow AM_ names. We explicitly allow
+-dnl the ones we care about.
+-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+-AC_REQUIRE([AC_PROG_INSTALL])dnl
+-# test to see if srcdir already configured
+-if test "`cd $srcdir && pwd`" != "`pwd`" &&
+- test -f $srcdir/config.status; then
+- AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+-fi
+-
+-# test whether we have cygpath
+-if test -z "$CYGPATH_W"; then
+- if (cygpath --version) >/dev/null 2>/dev/null; then
+- CYGPATH_W='cygpath -w'
+- else
+- CYGPATH_W=echo
+- fi
+-fi
+-AC_SUBST([CYGPATH_W])
+-
+-# Define the identity of the package.
+-dnl Distinguish between old-style and new-style calls.
+-m4_ifval([$2],
+-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+- AC_SUBST([PACKAGE], [$1])dnl
+- AC_SUBST([VERSION], [$2])],
+-[_AM_SET_OPTIONS([$1])dnl
+- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+-
+-_AM_IF_OPTION([no-define],,
+-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+-
+-# Some tools Automake needs.
+-AC_REQUIRE([AM_SANITY_CHECK])dnl
+-AC_REQUIRE([AC_ARG_PROGRAM])dnl
+-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+-AM_MISSING_PROG(AUTOCONF, autoconf)
+-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+-AM_MISSING_PROG(AUTOHEADER, autoheader)
+-AM_MISSING_PROG(MAKEINFO, makeinfo)
+-AM_PROG_INSTALL_SH
+-AM_PROG_INSTALL_STRIP
+-AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+-# We need awk for the "check" target. The system "awk" is bad on
+-# some platforms.
+-AC_REQUIRE([AC_PROG_AWK])dnl
+-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+- [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+- [_AM_PROG_TAR([v7])])])
+-_AM_IF_OPTION([no-dependencies],,
+-[AC_PROVIDE_IFELSE([AC_PROG_CC],
+- [_AM_DEPENDENCIES(CC)],
+- [define([AC_PROG_CC],
+- defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+-AC_PROVIDE_IFELSE([AC_PROG_CXX],
+- [_AM_DEPENDENCIES(CXX)],
+- [define([AC_PROG_CXX],
+- defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+-])
+-])
+-
+-
+-# When config.status generates a header, we must update the stamp-h file.
+-# This file resides in the same directory as the config header
+-# that is generated. The stamp files are numbered to have different names.
+-
+-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+-# loop where config.status creates the headers, so we can generate
+-# our stamp files there.
+-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+-[# Compute $1's index in $config_headers.
+-_am_stamp_count=1
+-for _am_header in $config_headers :; do
+- case $_am_header in
+- $1 | $1:* )
+- break ;;
+- * )
+- _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+- esac
+-done
+-echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+-
+-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# AM_PROG_INSTALL_SH
+-# ------------------
+-# Define $install_sh.
+-AC_DEFUN([AM_PROG_INSTALL_SH],
+-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+-install_sh=${install_sh-"$am_aux_dir/install-sh"}
+-AC_SUBST(install_sh)])
+-
+-# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# serial 2
+-
+-# Check whether the underlying file-system supports filenames
+-# with a leading dot. For instance MS-DOS doesn't.
+-AC_DEFUN([AM_SET_LEADING_DOT],
+-[rm -rf .tst 2>/dev/null
+-mkdir .tst 2>/dev/null
+-if test -d .tst; then
+- am__leading_dot=.
+-else
+- am__leading_dot=_
+-fi
+-rmdir .tst 2>/dev/null
+-AC_SUBST([am__leading_dot])])
+-
+-# Check to see how 'make' treats includes. -*- Autoconf -*-
+-
+-# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# serial 3
++# serial 2
+
+ # AM_MAKE_INCLUDE()
+ # -----------------
+@@ -968,310 +789,2495 @@ AC_MSG_RESULT([$_am_result])
+ rm -f confinc confmf
+ ])
+
+-# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
++# AM_CONDITIONAL -*- Autoconf -*-
+
+-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
+-# Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright 1997, 2000, 2001 Free Software Foundation, Inc.
+
+-# serial 4
++# 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.
+
+-# AM_MISSING_PROG(NAME, PROGRAM)
+-# ------------------------------
+-AC_DEFUN([AM_MISSING_PROG],
+-[AC_REQUIRE([AM_MISSING_HAS_RUN])
+-$1=${$1-"${am_missing_run}$2"}
+-AC_SUBST($1)])
++# 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.
+
++# serial 5
+
+-# AM_MISSING_HAS_RUN
+-# ------------------
+-# Define MISSING if not defined so far and test if it supports --run.
+-# If it does, set am_missing_run to use it, otherwise, to nothing.
+-AC_DEFUN([AM_MISSING_HAS_RUN],
+-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+-# Use eval to expand $SHELL
+-if eval "$MISSING --run true"; then
+- am_missing_run="$MISSING --run "
++AC_PREREQ(2.52)
++
++# AM_CONDITIONAL(NAME, SHELL-CONDITION)
++# -------------------------------------
++# Define a conditional.
++AC_DEFUN([AM_CONDITIONAL],
++[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
++ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
++AC_SUBST([$1_TRUE])
++AC_SUBST([$1_FALSE])
++if $2; then
++ $1_TRUE=
++ $1_FALSE='#'
+ else
+- am_missing_run=
+- AC_MSG_WARN([`missing' script is too old or missing])
++ $1_TRUE='#'
++ $1_FALSE=
+ fi
+-])
++AC_CONFIG_COMMANDS_PRE(
++[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
++ AC_MSG_ERROR([conditional "$1" was never defined.
++Usually this means the macro was only invoked conditionally.])
++fi])])
+
+-# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*-
+
+-# AM_PROG_MKDIR_P
+-# ---------------
+-# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
+-#
+-# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
+-# created by `make install' are always world readable, even if the
+-# installer happens to have an overly restrictive umask (e.g. 077).
+-# This was a mistake. There are at least two reasons why we must not
+-# use `-m 0755':
+-# - it causes special bits like SGID to be ignored,
+-# - it may be too restrictive (some setups expect 775 directories).
+-#
+-# Do not use -m 0755 and let people choose whatever they expect by
+-# setting umask.
+-#
+-# We cannot accept any implementation of `mkdir' that recognizes `-p'.
+-# Some implementations (such as Solaris 8's) are not thread-safe: if a
+-# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
+-# concurrently, both version can detect that a/ is missing, but only
+-# one can create it and the other will error out. Consequently we
+-# restrict ourselves to GNU make (using the --version option ensures
+-# this.)
+-AC_DEFUN([AM_PROG_MKDIR_P],
+-[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+- # We used to keeping the `.' as first argument, in order to
+- # allow $(mkdir_p) to be used without argument. As in
+- # $(mkdir_p) $(somedir)
+- # where $(somedir) is conditionally defined. However this is wrong
+- # for two reasons:
+- # 1. if the package is installed by a user who cannot write `.'
+- # make install will fail,
+- # 2. the above comment should most certainly read
+- # $(mkdir_p) $(DESTDIR)$(somedir)
+- # so it does not work when $(somedir) is undefined and
+- # $(DESTDIR) is not.
+- # To support the latter case, we have to write
+- # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+- # so the `.' trick is pointless.
+- mkdir_p='mkdir -p --'
++# Copyright 1996, 1997, 2000, 2001 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.
++
++AC_PREREQ([2.52])
++
++# serial 6
++
++# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
++AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
++
++
++# Copyright 1996, 1997, 1999, 2000, 2001, 2002 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.
++
++# serial 2
++
++# @defmac AC_PROG_CC_STDC
++# @maindex PROG_CC_STDC
++# @ovindex CC
++# If the C compiler in not in ANSI C mode by default, try to add an option
++# to output variable @code{CC} to make it so. This macro tries various
++# options that select ANSI C on some system or another. It considers the
++# compiler to be in ANSI C mode if it handles function prototypes correctly.
++#
++# If you use this macro, you should check after calling it whether the C
++# compiler has been set to accept ANSI C; if not, the shell variable
++# @code{am_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source
++# code in ANSI C, you can make an un-ANSIfied copy of it by using the
++# program @code{ansi2knr}, which comes with Ghostscript.
++# @end defmac
++
++AC_DEFUN([AM_PROG_CC_STDC],
++[AC_REQUIRE([AC_PROG_CC])
++AC_BEFORE([$0], [AC_C_INLINE])
++AC_BEFORE([$0], [AC_C_CONST])
++dnl Force this before AC_PROG_CPP. Some cpp's, eg on HPUX, require
++dnl a magic option to avoid problems with ANSI preprocessor commands
++dnl like #elif.
++dnl FIXME: can't do this because then AC_AIX won't work due to a
++dnl circular dependency.
++dnl AC_BEFORE([$0], [AC_PROG_CPP])
++AC_MSG_CHECKING([for ${CC-cc} option to accept ANSI C])
++AC_CACHE_VAL(am_cv_prog_cc_stdc,
++[am_cv_prog_cc_stdc=no
++ac_save_CC="$CC"
++# Don't try gcc -ansi; that turns off useful extensions and
++# breaks some systems' header files.
++# AIX -qlanglvl=ansi
++# Ultrix and OSF/1 -std1
++# HP-UX 10.20 and later -Ae
++# HP-UX older versions -Aa -D_HPUX_SOURCE
++# SVR4 -Xc -D__EXTENSIONS__
++for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
++do
++ CC="$ac_save_CC $ac_arg"
++ AC_TRY_COMPILE(
++[#include <stdarg.h>
++#include <stdio.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
++struct buf { int x; };
++FILE * (*rcsopen) (struct buf *, struct stat *, int);
++static char *e (p, i)
++ char **p;
++ int i;
++{
++ return p[i];
++}
++static char *f (char * (*g) (char **, int), char **p, ...)
++{
++ char *s;
++ va_list v;
++ va_start (v,p);
++ s = g (p, va_arg (v,int));
++ va_end (v);
++ return s;
++}
++int test (int i, double x);
++struct s1 {int (*f) (int a);};
++struct s2 {int (*f) (double a);};
++int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
++int argc;
++char **argv;
++], [
++return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
++],
++[am_cv_prog_cc_stdc="$ac_arg"; break])
++done
++CC="$ac_save_CC"
++])
++if test -z "$am_cv_prog_cc_stdc"; then
++ AC_MSG_RESULT([none needed])
+ else
+- # On NextStep and OpenStep, the `mkdir' command does not
+- # recognize any option. It will interpret all options as
+- # directories to create, and then abort because `.' already
+- # exists.
+- for d in ./-p ./--version;
+- do
+- test -d $d && rmdir $d
+- done
+- # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+- if test -f "$ac_aux_dir/mkinstalldirs"; then
+- mkdir_p='$(mkinstalldirs)'
+- else
+- mkdir_p='$(install_sh) -d'
+- fi
++ AC_MSG_RESULT([$am_cv_prog_cc_stdc])
+ fi
+-AC_SUBST([mkdir_p])])
++case "x$am_cv_prog_cc_stdc" in
++ x|xno) ;;
++ *) CC="$CC $am_cv_prog_cc_stdc" ;;
++esac
++])
+
+-# Helper functions for option handling. -*- Autoconf -*-
++AU_DEFUN([fp_PROG_CC_STDC], [AM_PROG_CC_STDC])
+
+-# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# gettext.m4 serial 16 (gettext-0.11.4)
++dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
++dnl Bruno Haible <haible@clisp.cons.org>, 2000-2002.
++
++dnl Macro to add for using GNU gettext.
++
++dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
++dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
++dnl default (if it is not specified or empty) is 'no-libtool'.
++dnl INTLSYMBOL should be 'external' for packages with no intl directory,
++dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory.
++dnl If INTLSYMBOL is 'use-libtool', then a libtool library
++dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
++dnl depending on --{enable,disable}-{shared,static} and on the presence of
++dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
++dnl $(top_builddir)/intl/libintl.a will be created.
++dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
++dnl implementations (in libc or libintl) without the ngettext() function
++dnl will be ignored. If NEEDSYMBOL is specified and is
++dnl 'need-formatstring-macros', then GNU gettext implementations that don't
++dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
++dnl INTLDIR is used to find the intl libraries. If empty,
++dnl the value `$(top_builddir)/intl/' is used.
++dnl
++dnl The result of the configuration is one of three cases:
++dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
++dnl and used.
++dnl Catalog format: GNU --> install in $(datadir)
++dnl Catalog extension: .mo after installation, .gmo in source tree
++dnl 2) GNU gettext has been found in the system's C library.
++dnl Catalog format: GNU --> install in $(datadir)
++dnl Catalog extension: .mo after installation, .gmo in source tree
++dnl 3) No internationalization, always use English msgid.
++dnl Catalog format: none
++dnl Catalog extension: none
++dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
++dnl The use of .gmo is historical (it was needed to avoid overwriting the
++dnl GNU format catalogs when building on a platform with an X/Open gettext),
++dnl but we keep it in order not to force irrelevant filename changes on the
++dnl maintainers.
++dnl
++AC_DEFUN([AM_GNU_GETTEXT],
++[
++ dnl Argument checking.
++ ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
++ [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
++])])])])])
++ ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
++ [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
++])])])])
++ define(gt_included_intl, ifelse([$1], [external], [no], [yes]))
++ define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], []))
++
++ AC_REQUIRE([AM_PO_SUBDIRS])dnl
++ ifelse(gt_included_intl, yes, [
++ AC_REQUIRE([AM_INTL_SUBDIR])dnl
++ ])
++
++ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++ AC_REQUIRE([AC_LIB_RPATH])
++
++ dnl Sometimes libintl requires libiconv, so first search for libiconv.
++ dnl Ideally we would do this search only after the
++ dnl if test "$USE_NLS" = "yes"; then
++ dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then
++ dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
++ dnl the configure script would need to contain the same shell code
++ dnl again, outside any 'if'. There are two solutions:
++ dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
++ dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
++ dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
++ dnl documented, we avoid it.
++ ifelse(gt_included_intl, yes, , [
++ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
++ ])
++
++ AC_MSG_CHECKING([whether NLS is requested])
++ dnl Default is enabled NLS
++ AC_ARG_ENABLE(nls,
++ [ --disable-nls do not use Native Language Support],
++ USE_NLS=$enableval, USE_NLS=yes)
++ AC_MSG_RESULT($USE_NLS)
++ AC_SUBST(USE_NLS)
++
++ ifelse(gt_included_intl, yes, [
++ BUILD_INCLUDED_LIBINTL=no
++ USE_INCLUDED_LIBINTL=no
++ ])
++ LIBINTL=
++ LTLIBINTL=
++ POSUB=
++
++ dnl If we use NLS figure out what method
++ if test "$USE_NLS" = "yes"; then
++ gt_use_preinstalled_gnugettext=no
++ ifelse(gt_included_intl, yes, [
++ AC_MSG_CHECKING([whether included gettext is requested])
++ AC_ARG_WITH(included-gettext,
++ [ --with-included-gettext use the GNU gettext library included here],
++ nls_cv_force_use_gnu_gettext=$withval,
++ nls_cv_force_use_gnu_gettext=no)
++ AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
++
++ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
++ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
++ ])
++ dnl User does not insist on using GNU NLS library. Figure out what
++ dnl to use. If GNU gettext is available we use this. Else we have
++ dnl to fall back to GNU NLS library.
++
++ dnl Add a version number to the cache macros.
++ define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1)))
++ define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc])
++ define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl])
++
++ AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc,
++ [AC_TRY_LINK([#include <libintl.h>
++]ifelse([$2], [need-formatstring-macros],
++[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
++#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
++#endif
++changequote(,)dnl
++typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
++changequote([,])dnl
++], [])[extern int _nl_msg_cat_cntr;
++extern int *_nl_domain_bindings;],
++ [bindtextdomain ("", "");
++return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings],
++ gt_cv_func_gnugettext_libc=yes,
++ gt_cv_func_gnugettext_libc=no)])
++
++ if test "$gt_cv_func_gnugettext_libc" != "yes"; then
++ dnl Sometimes libintl requires libiconv, so first search for libiconv.
++ ifelse(gt_included_intl, yes, , [
++ AM_ICONV_LINK
++ ])
++ dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
++ dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
++ dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
++ dnl even if libiconv doesn't exist.
++ AC_LIB_LINKFLAGS_BODY([intl])
++ AC_CACHE_CHECK([for GNU gettext in libintl],
++ gt_cv_func_gnugettext_libintl,
++ [gt_save_CPPFLAGS="$CPPFLAGS"
++ CPPFLAGS="$CPPFLAGS $INCINTL"
++ gt_save_LIBS="$LIBS"
++ LIBS="$LIBS $LIBINTL"
++ dnl Now see whether libintl exists and does not depend on libiconv.
++ AC_TRY_LINK([#include <libintl.h>
++]ifelse([$2], [need-formatstring-macros],
++[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
++#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
++#endif
++changequote(,)dnl
++typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
++changequote([,])dnl
++], [])[extern int _nl_msg_cat_cntr;
++extern
++#ifdef __cplusplus
++"C"
++#endif
++const char *_nl_expand_alias ();],
++ [bindtextdomain ("", "");
++return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
++ gt_cv_func_gnugettext_libintl=yes,
++ gt_cv_func_gnugettext_libintl=no)
++ dnl Now see whether libintl exists and depends on libiconv.
++ if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then
++ LIBS="$LIBS $LIBICONV"
++ AC_TRY_LINK([#include <libintl.h>
++]ifelse([$2], [need-formatstring-macros],
++[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
++#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
++#endif
++changequote(,)dnl
++typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
++changequote([,])dnl
++], [])[extern int _nl_msg_cat_cntr;
++extern
++#ifdef __cplusplus
++"C"
++#endif
++const char *_nl_expand_alias ();],
++ [bindtextdomain ("", "");
++return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
++ [LIBINTL="$LIBINTL $LIBICONV"
++ LTLIBINTL="$LTLIBINTL $LTLIBICONV"
++ gt_cv_func_gnugettext_libintl=yes
++ ])
++ fi
++ CPPFLAGS="$gt_save_CPPFLAGS"
++ LIBS="$gt_save_LIBS"])
++ fi
++
++ dnl If an already present or preinstalled GNU gettext() is found,
++ dnl use it. But if this macro is used in GNU gettext, and GNU
++ dnl gettext is already preinstalled in libintl, we update this
++ dnl libintl. (Cf. the install rule in intl/Makefile.in.)
++ if test "$gt_cv_func_gnugettext_libc" = "yes" \
++ || { test "$gt_cv_func_gnugettext_libintl" = "yes" \
++ && test "$PACKAGE" != gettext; }; then
++ gt_use_preinstalled_gnugettext=yes
++ else
++ dnl Reset the values set by searching for libintl.
++ LIBINTL=
++ LTLIBINTL=
++ INCINTL=
++ fi
++
++ ifelse(gt_included_intl, yes, [
++ if test "$gt_use_preinstalled_gnugettext" != "yes"; then
++ dnl GNU gettext is not found in the C library.
++ dnl Fall back on included GNU gettext library.
++ nls_cv_use_gnu_gettext=yes
++ fi
++ fi
+
+-# serial 3
++ if test "$nls_cv_use_gnu_gettext" = "yes"; then
++ dnl Mark actions used to generate GNU NLS library.
++ INTLOBJS="\$(GETTOBJS)"
++ BUILD_INCLUDED_LIBINTL=yes
++ USE_INCLUDED_LIBINTL=yes
++ LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV"
++ LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV"
++ LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
++ fi
+
+-# _AM_MANGLE_OPTION(NAME)
+-# -----------------------
+-AC_DEFUN([_AM_MANGLE_OPTION],
+-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
++ if test "$gt_use_preinstalled_gnugettext" = "yes" \
++ || test "$nls_cv_use_gnu_gettext" = "yes"; then
++ dnl Mark actions to use GNU gettext tools.
++ CATOBJEXT=.gmo
++ fi
++ ])
+
+-# _AM_SET_OPTION(NAME)
+-# ------------------------------
+-# Set option NAME. Presently that only means defining a flag for this option.
+-AC_DEFUN([_AM_SET_OPTION],
+-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
++ if test "$gt_use_preinstalled_gnugettext" = "yes" \
++ || test "$nls_cv_use_gnu_gettext" = "yes"; then
++ AC_DEFINE(ENABLE_NLS, 1,
++ [Define to 1 if translation of program messages to the user's native language
++ is requested.])
++ else
++ USE_NLS=no
++ fi
++ fi
+
+-# _AM_SET_OPTIONS(OPTIONS)
+-# ----------------------------------
+-# OPTIONS is a space-separated list of Automake options.
+-AC_DEFUN([_AM_SET_OPTIONS],
+-[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
++ if test "$USE_NLS" = "yes"; then
+
+-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+-# -------------------------------------------
+-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+-AC_DEFUN([_AM_IF_OPTION],
+-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
++ if test "$gt_use_preinstalled_gnugettext" = "yes"; then
++ if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
++ AC_MSG_CHECKING([how to link with libintl])
++ AC_MSG_RESULT([$LIBINTL])
++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
++ fi
+
+-# Check to make sure that the build environment is sane. -*- Autoconf -*-
++ dnl For backward compatibility. Some packages may be using this.
++ AC_DEFINE(HAVE_GETTEXT, 1,
++ [Define if the GNU gettext() function is already present or preinstalled.])
++ AC_DEFINE(HAVE_DCGETTEXT, 1,
++ [Define if the GNU dcgettext() function is already present or preinstalled.])
++ fi
+
+-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+-# Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++ dnl We need to process the po/ directory.
++ POSUB=po
++ fi
+
+-# serial 4
++ ifelse(gt_included_intl, yes, [
++ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
++ dnl to 'yes' because some of the testsuite requires it.
++ if test "$PACKAGE" = gettext; then
++ BUILD_INCLUDED_LIBINTL=yes
++ fi
+
+-# AM_SANITY_CHECK
+-# ---------------
+-AC_DEFUN([AM_SANITY_CHECK],
+-[AC_MSG_CHECKING([whether build environment is sane])
+-# Just in case
+-sleep 1
+-echo timestamp > conftest.file
+-# Do `set' in a subshell so we don't clobber the current shell's
+-# arguments. Must try -L first in case configure is actually a
+-# symlink; some systems play weird games with the mod time of symlinks
+-# (eg FreeBSD returns the mod time of the symlink's containing
+-# directory).
+-if (
+- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+- if test "$[*]" = "X"; then
+- # -L didn't work.
+- set X `ls -t $srcdir/configure conftest.file`
+- fi
+- rm -f conftest.file
+- if test "$[*]" != "X $srcdir/configure conftest.file" \
+- && test "$[*]" != "X conftest.file $srcdir/configure"; then
++ dnl Make all variables we use known to autoconf.
++ AC_SUBST(BUILD_INCLUDED_LIBINTL)
++ AC_SUBST(USE_INCLUDED_LIBINTL)
++ AC_SUBST(CATOBJEXT)
++ AC_SUBST(INTLOBJS)
++
++ dnl For backward compatibility. Some configure.ins may be using this.
++ nls_cv_header_intl=
++ nls_cv_header_libgt=
++
++ dnl For backward compatibility. Some Makefiles may be using this.
++ DATADIRNAME=share
++ AC_SUBST(DATADIRNAME)
++
++ dnl For backward compatibility. Some Makefiles may be using this.
++ INSTOBJEXT=.mo
++ AC_SUBST(INSTOBJEXT)
++
++ dnl For backward compatibility. Some Makefiles may be using this.
++ GENCAT=gencat
++ AC_SUBST(GENCAT)
++
++ dnl Enable libtool support if the surrounding package wishes it.
++ INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
++ AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
++ ])
++
++ dnl For backward compatibility. Some Makefiles may be using this.
++ INTLLIBS="$LIBINTL"
++ AC_SUBST(INTLLIBS)
++
++ dnl Make all documented variables known to autoconf.
++ AC_SUBST(LIBINTL)
++ AC_SUBST(LTLIBINTL)
++ AC_SUBST(POSUB)
++])
+
+- # If neither matched, then we have a broken ls. This can happen
+- # if, for instance, CONFIG_SHELL is bash and it inherits a
+- # broken ls alias from the environment. This has actually
+- # happened. Such a system could not be considered "sane".
+- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+-alias in your environment])
+- fi
+
+- test "$[2]" = conftest.file
+- )
+-then
+- # Ok.
+- :
+-else
+- AC_MSG_ERROR([newly created file is older than distributed files!
+-Check your system clock])
+-fi
+-AC_MSG_RESULT(yes)])
++dnl Checks for all prerequisites of the po subdirectory,
++dnl except for USE_NLS.
++AC_DEFUN([AM_PO_SUBDIRS],
++[
++ AC_REQUIRE([AC_PROG_MAKE_SET])dnl
++ AC_REQUIRE([AC_PROG_INSTALL])dnl
++ AC_REQUIRE([AM_MKINSTALLDIRS])dnl
++
++ dnl Perform the following tests also if --disable-nls has been given,
++ dnl because they are needed for "make dist" to work.
++
++ dnl Search for GNU msgfmt in the PATH.
++ dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
++ dnl The second test excludes FreeBSD msgfmt.
++ AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
++ [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 &&
++ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
++ :)
++ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
++
++ dnl Search for GNU xgettext 0.11 or newer in the PATH.
++ dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
++ dnl The second test excludes FreeBSD xgettext.
++ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
++ [$ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 &&
++ (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
++ :)
++ dnl Remove leftover from FreeBSD xgettext call.
++ rm -f messages.po
++
++ dnl Search for GNU msgmerge 0.11 or newer in the PATH.
++ AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
++ [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :)
++
++ dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
++ dnl Test whether we really found GNU msgfmt.
++ if test "$GMSGFMT" != ":"; then
++ dnl If it is no GNU msgfmt we define it as : so that the
++ dnl Makefiles still can work.
++ if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 &&
++ (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
++ : ;
++ else
++ GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
++ AC_MSG_RESULT(
++ [found $GMSGFMT program is not GNU msgfmt; ignore it])
++ GMSGFMT=":"
++ fi
++ fi
+
+-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++ dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
++ dnl Test whether we really found GNU xgettext.
++ if test "$XGETTEXT" != ":"; then
++ dnl If it is no GNU xgettext we define it as : so that the
++ dnl Makefiles still can work.
++ if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 &&
++ (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
++ : ;
++ else
++ AC_MSG_RESULT(
++ [found xgettext program is not GNU xgettext; ignore it])
++ XGETTEXT=":"
++ fi
++ dnl Remove leftover from FreeBSD xgettext call.
++ rm -f messages.po
++ fi
+
+-# AM_PROG_INSTALL_STRIP
+-# ---------------------
+-# One issue with vendor `install' (even GNU) is that you can't
+-# specify the program used to strip binaries. This is especially
+-# annoying in cross-compiling environments, where the build's strip
+-# is unlikely to handle the host's binaries.
+-# Fortunately install-sh will honor a STRIPPROG variable, so we
+-# always use install-sh in `make install-strip', and initialize
+-# STRIPPROG with the value of the STRIP variable (set by the user).
+-AC_DEFUN([AM_PROG_INSTALL_STRIP],
+-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+-# Installed binaries are usually stripped using `strip' when the user
+-# run `make install-strip'. However `strip' might not be the right
+-# tool to use in cross-compilation environments, therefore Automake
+-# will honor the `STRIP' environment variable to overrule this program.
+-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+-if test "$cross_compiling" != no; then
+- AC_CHECK_TOOL([STRIP], [strip], :)
+-fi
+-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+-AC_SUBST([INSTALL_STRIP_PROGRAM])])
++ AC_OUTPUT_COMMANDS([
++ for ac_file in $CONFIG_FILES; do
++ # Support "outfile[:infile[:infile...]]"
++ case "$ac_file" in
++ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
++ esac
++ # PO directories have a Makefile.in generated from Makefile.in.in.
++ case "$ac_file" in */Makefile.in)
++ # Adjust a relative srcdir.
++ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
++ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
++ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
++ # In autoconf-2.13 it is called $ac_given_srcdir.
++ # In autoconf-2.50 it is called $srcdir.
++ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
++ case "$ac_given_srcdir" in
++ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
++ /*) top_srcdir="$ac_given_srcdir" ;;
++ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
++ esac
++ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
++ rm -f "$ac_dir/POTFILES"
++ test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
++ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
++ # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend
++ # on $ac_dir but don't depend on user-specified configuration
++ # parameters.
++ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
++ # The LINGUAS file contains the set of available languages.
++ if test -n "$ALL_LINGUAS"; then
++ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
++ fi
++ ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
++ # Hide the ALL_LINGUAS assigment from automake.
++ eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
++ fi
++ case "$ac_given_srcdir" in
++ .) srcdirpre= ;;
++ *) srcdirpre='$(srcdir)/' ;;
++ esac
++ POFILES=
++ GMOFILES=
++ UPDATEPOFILES=
++ DUMMYPOFILES=
++ for lang in $ALL_LINGUAS; do
++ POFILES="$POFILES $srcdirpre$lang.po"
++ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
++ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
++ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
++ done
++ # CATALOGS depends on both $ac_dir and the user's LINGUAS
++ # environment variable.
++ INST_LINGUAS=
++ if test -n "$ALL_LINGUAS"; then
++ for presentlang in $ALL_LINGUAS; do
++ useit=no
++ if test "%UNSET%" != "$LINGUAS"; then
++ desiredlanguages="$LINGUAS"
++ else
++ desiredlanguages="$ALL_LINGUAS"
++ fi
++ for desiredlang in $desiredlanguages; do
++ # Use the presentlang catalog if desiredlang is
++ # a. equal to presentlang, or
++ # b. a variant of presentlang (because in this case,
++ # presentlang can be used as a fallback for messages
++ # which are not translated in the desiredlang catalog).
++ case "$desiredlang" in
++ "$presentlang"*) useit=yes;;
++ esac
++ done
++ if test $useit = yes; then
++ INST_LINGUAS="$INST_LINGUAS $presentlang"
++ fi
++ done
++ fi
++ CATALOGS=
++ if test -n "$INST_LINGUAS"; then
++ for lang in $INST_LINGUAS; do
++ CATALOGS="$CATALOGS $lang.gmo"
++ done
++ fi
++ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
++ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
++ for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
++ if test -f "$f"; then
++ case "$f" in
++ *.orig | *.bak | *~) ;;
++ *) cat "$f" >> "$ac_dir/Makefile" ;;
++ esac
++ fi
++ done
++ fi
++ ;;
++ esac
++ done],
++ [# Capture the value of obsolete $ALL_LINGUAS because we need it to compute
++ # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it
++ # from automake.
++ eval 'ALL_LINGUAS''="$ALL_LINGUAS"'
++ # Capture the value of LINGUAS because we need it to compute CATALOGS.
++ LINGUAS="${LINGUAS-%UNSET%}"
++ ])
++])
+
+-# Check how to create a tarball. -*- Autoconf -*-
+
+-# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++dnl Checks for all prerequisites of the intl subdirectory,
++dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
++dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
++AC_DEFUN([AM_INTL_SUBDIR],
++[
++ AC_REQUIRE([AC_PROG_INSTALL])dnl
++ AC_REQUIRE([AM_MKINSTALLDIRS])dnl
++ AC_REQUIRE([AC_PROG_CC])dnl
++ AC_REQUIRE([AC_CANONICAL_HOST])dnl
++ AC_REQUIRE([AC_PROG_RANLIB])dnl
++ AC_REQUIRE([AC_ISC_POSIX])dnl
++ AC_REQUIRE([AC_HEADER_STDC])dnl
++ AC_REQUIRE([AC_C_CONST])dnl
++ AC_REQUIRE([AC_C_INLINE])dnl
++ AC_REQUIRE([AC_TYPE_OFF_T])dnl
++ AC_REQUIRE([AC_TYPE_SIZE_T])dnl
++ AC_REQUIRE([AC_FUNC_ALLOCA])dnl
++ AC_REQUIRE([AC_FUNC_MMAP])dnl
++ AC_REQUIRE([jm_GLIBC21])dnl
++ AC_REQUIRE([gt_INTDIV0])dnl
++ AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl
++ AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl
++ AC_REQUIRE([gt_INTTYPES_PRI])dnl
++
++ AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \
++stdlib.h string.h unistd.h sys/param.h])
++ AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \
++geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \
++strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next])
++
++ AM_ICONV
++ AM_LANGINFO_CODESET
++ if test $ac_cv_header_locale_h = yes; then
++ AM_LC_MESSAGES
++ fi
+
+-# serial 2
++ dnl intl/plural.c is generated from intl/plural.y. It requires bison,
++ dnl because plural.y uses bison specific features. It requires at least
++ dnl bison-1.26 because earlier versions generate a plural.c that doesn't
++ dnl compile.
++ dnl bison is only needed for the maintainer (who touches plural.y). But in
++ dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
++ dnl the rule in general Makefile. Now, some people carelessly touch the
++ dnl files or have a broken "make" program, hence the plural.c rule will
++ dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
++ dnl present or too old.
++ AC_CHECK_PROGS([INTLBISON], [bison])
++ if test -z "$INTLBISON"; then
++ ac_verc_fail=yes
++ else
++ dnl Found it, now check the version.
++ AC_MSG_CHECKING([version of bison])
++changequote(<<,>>)dnl
++ ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
++ case $ac_prog_version in
++ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
++ 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
++changequote([,])dnl
++ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
++ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
++ esac
++ AC_MSG_RESULT([$ac_prog_version])
++ fi
++ if test $ac_verc_fail = yes; then
++ INTLBISON=:
++ fi
++])
+
+-# _AM_PROG_TAR(FORMAT)
+-# --------------------
+-# Check how to create a tarball in format FORMAT.
+-# FORMAT should be one of `v7', `ustar', or `pax'.
+-#
+-# Substitute a variable $(am__tar) that is a command
+-# writing to stdout a FORMAT-tarball containing the directory
+-# $tardir.
+-# tardir=directory && $(am__tar) > result.tar
+-#
+-# Substitute a variable $(am__untar) that extract such
+-# a tarball read from stdin.
+-# $(am__untar) < result.tar
+-AC_DEFUN([_AM_PROG_TAR],
+-[# Always define AMTAR for backward compatibility.
+-AM_MISSING_PROG([AMTAR], [tar])
+-m4_if([$1], [v7],
+- [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+- [m4_case([$1], [ustar],, [pax],,
+- [m4_fatal([Unknown tar format])])
+-AC_MSG_CHECKING([how to create a $1 tar archive])
+-# Loop over all known methods to create a tar archive until one works.
+-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+-# Do not fold the above two line into one, because Tru64 sh and
+-# Solaris sh will not grok spaces in the rhs of `-'.
+-for _am_tool in $_am_tools
+-do
+- case $_am_tool in
+- gnutar)
+- for _am_tar in tar gnutar gtar;
+- do
+- AM_RUN_LOG([$_am_tar --version]) && break
++
++AC_DEFUN([AM_MKINSTALLDIRS],
++[
++ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
++ dnl find the mkinstalldirs script in another subdir but $(top_srcdir).
++ dnl Try to locate is.
++ MKINSTALLDIRS=
++ if test -n "$ac_aux_dir"; then
++ case "$ac_aux_dir" in
++ /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;;
++ *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;;
++ esac
++ fi
++ if test -z "$MKINSTALLDIRS"; then
++ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
++ fi
++ AC_SUBST(MKINSTALLDIRS)
++])
++
++
++dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
++AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
++
++# lib-prefix.m4 serial 1 (gettext-0.11)
++dnl Copyright (C) 2001-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++
++dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
++dnl to access previously installed libraries. The basic assumption is that
++dnl a user will want packages to use other packages he previously installed
++dnl with the same --prefix option.
++dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
++dnl libraries, but is otherwise very convenient.
++AC_DEFUN([AC_LIB_PREFIX],
++[
++ AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
++ AC_REQUIRE([AC_PROG_CC])
++ AC_REQUIRE([AC_CANONICAL_HOST])
++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++ dnl By default, look in $includedir and $libdir.
++ use_additional=yes
++ AC_LIB_WITH_FINAL_PREFIX([
++ eval additional_includedir=\"$includedir\"
++ eval additional_libdir=\"$libdir\"
++ ])
++ AC_ARG_WITH([lib-prefix],
++[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
++ --without-lib-prefix don't search for libraries in includedir and libdir],
++[
++ if test "X$withval" = "Xno"; then
++ use_additional=no
++ else
++ if test "X$withval" = "X"; then
++ AC_LIB_WITH_FINAL_PREFIX([
++ eval additional_includedir=\"$includedir\"
++ eval additional_libdir=\"$libdir\"
++ ])
++ else
++ additional_includedir="$withval/include"
++ additional_libdir="$withval/lib"
++ fi
++ fi
++])
++ if test $use_additional = yes; then
++ dnl Potentially add $additional_includedir to $CPPFLAGS.
++ dnl But don't add it
++ dnl 1. if it's the standard /usr/include,
++ dnl 2. if it's already present in $CPPFLAGS,
++ dnl 3. if it's /usr/local/include and we are using GCC on Linux,
++ dnl 4. if it doesn't exist as a directory.
++ if test "X$additional_includedir" != "X/usr/include"; then
++ haveit=
++ for x in $CPPFLAGS; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X-I$additional_includedir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test "X$additional_includedir" = "X/usr/local/include"; then
++ if test -n "$GCC"; then
++ case $host_os in
++ linux*) haveit=yes;;
++ esac
++ fi
++ fi
++ if test -z "$haveit"; then
++ if test -d "$additional_includedir"; then
++ dnl Really add $additional_includedir to $CPPFLAGS.
++ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
++ fi
++ fi
++ fi
++ fi
++ dnl Potentially add $additional_libdir to $LDFLAGS.
++ dnl But don't add it
++ dnl 1. if it's the standard /usr/lib,
++ dnl 2. if it's already present in $LDFLAGS,
++ dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
++ dnl 4. if it doesn't exist as a directory.
++ if test "X$additional_libdir" != "X/usr/lib"; then
++ haveit=
++ for x in $LDFLAGS; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X-L$additional_libdir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test "X$additional_libdir" = "X/usr/local/lib"; then
++ if test -n "$GCC"; then
++ case $host_os in
++ linux*) haveit=yes;;
++ esac
++ fi
++ fi
++ if test -z "$haveit"; then
++ if test -d "$additional_libdir"; then
++ dnl Really add $additional_libdir to $LDFLAGS.
++ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
++ fi
++ fi
++ fi
++ fi
++ fi
++])
++
++dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
++dnl acl_final_exec_prefix, containing the values to which $prefix and
++dnl $exec_prefix will expand at the end of the configure script.
++AC_DEFUN([AC_LIB_PREPARE_PREFIX],
++[
++ dnl Unfortunately, prefix and exec_prefix get only finally determined
++ dnl at the end of configure.
++ if test "X$prefix" = "XNONE"; then
++ acl_final_prefix="$ac_default_prefix"
++ else
++ acl_final_prefix="$prefix"
++ fi
++ if test "X$exec_prefix" = "XNONE"; then
++ acl_final_exec_prefix='${prefix}'
++ else
++ acl_final_exec_prefix="$exec_prefix"
++ fi
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
++ prefix="$acl_save_prefix"
++])
++
++dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
++dnl variables prefix and exec_prefix bound to the values they will have
++dnl at the end of the configure script.
++AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
++[
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ acl_save_exec_prefix="$exec_prefix"
++ exec_prefix="$acl_final_exec_prefix"
++ $1
++ exec_prefix="$acl_save_exec_prefix"
++ prefix="$acl_save_prefix"
++])
++
++# lib-link.m4 serial 3 (gettext-0.11.3)
++dnl Copyright (C) 2001-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++
++dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
++dnl the libraries corresponding to explicit and implicit dependencies.
++dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
++dnl augments the CPPFLAGS variable.
++AC_DEFUN([AC_LIB_LINKFLAGS],
++[
++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++ AC_REQUIRE([AC_LIB_RPATH])
++ define([Name],[translit([$1],[./-], [___])])
++ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
++ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
++ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
++ AC_LIB_LINKFLAGS_BODY([$1], [$2])
++ ac_cv_lib[]Name[]_libs="$LIB[]NAME"
++ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
++ ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
++ ])
++ LIB[]NAME="$ac_cv_lib[]Name[]_libs"
++ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
++ INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
++ AC_SUBST([LIB]NAME)
++ AC_SUBST([LTLIB]NAME)
++ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
++ dnl results of this search when this library appears as a dependency.
++ HAVE_LIB[]NAME=yes
++ undefine([Name])
++ undefine([NAME])
++])
++
++dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
++dnl searches for libname and the libraries corresponding to explicit and
++dnl implicit dependencies, together with the specified include files and
++dnl the ability to compile and link the specified testcode. If found, it
++dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
++dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
++dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
++dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
++AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
++[
++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++ AC_REQUIRE([AC_LIB_RPATH])
++ define([Name],[translit([$1],[./-], [___])])
++ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
++ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
++
++ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
++ dnl accordingly.
++ AC_LIB_LINKFLAGS_BODY([$1], [$2])
++
++ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
++ dnl because if the user has installed lib[]Name and not disabled its use
++ dnl via --without-lib[]Name-prefix, he wants to use it.
++ ac_save_CPPFLAGS="$CPPFLAGS"
++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
++
++ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
++ ac_save_LIBS="$LIBS"
++ LIBS="$LIBS $LIB[]NAME"
++ AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
++ LIBS="$ac_save_LIBS"
++ ])
++ if test "$ac_cv_lib[]Name" = yes; then
++ HAVE_LIB[]NAME=yes
++ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
++ AC_MSG_CHECKING([how to link with lib[]$1])
++ AC_MSG_RESULT([$LIB[]NAME])
++ else
++ HAVE_LIB[]NAME=no
++ dnl If $LIB[]NAME didn't lead to a usable library, we don't need
++ dnl $INC[]NAME either.
++ CPPFLAGS="$ac_save_CPPFLAGS"
++ LIB[]NAME=
++ LTLIB[]NAME=
++ fi
++ AC_SUBST([HAVE_LIB]NAME)
++ AC_SUBST([LIB]NAME)
++ AC_SUBST([LTLIB]NAME)
++ undefine([Name])
++ undefine([NAME])
++])
++
++dnl Determine the platform dependent parameters needed to use rpath:
++dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator,
++dnl hardcode_direct, hardcode_minus_L,
++dnl sys_lib_search_path_spec, sys_lib_dlsearch_path_spec.
++AC_DEFUN([AC_LIB_RPATH],
++[
++ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
++ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
++ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
++ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
++ AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
++ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
++ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
++ . ./conftest.sh
++ rm -f ./conftest.sh
++ acl_cv_rpath=done
++ ])
++ wl="$acl_cv_wl"
++ libext="$acl_cv_libext"
++ shlibext="$acl_cv_shlibext"
++ hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
++ hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
++ hardcode_direct="$acl_cv_hardcode_direct"
++ hardcode_minus_L="$acl_cv_hardcode_minus_L"
++ sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec"
++ sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec"
++ dnl Determine whether the user wants rpath handling at all.
++ AC_ARG_ENABLE(rpath,
++ [ --disable-rpath do not hardcode runtime library paths],
++ :, enable_rpath=yes)
++])
++
++dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
++dnl the libraries corresponding to explicit and implicit dependencies.
++dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
++AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
++[
++ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
++ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
++ dnl By default, look in $includedir and $libdir.
++ use_additional=yes
++ AC_LIB_WITH_FINAL_PREFIX([
++ eval additional_includedir=\"$includedir\"
++ eval additional_libdir=\"$libdir\"
++ ])
++ AC_ARG_WITH([lib$1-prefix],
++[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
++ --without-lib$1-prefix don't search for lib$1 in includedir and libdir],
++[
++ if test "X$withval" = "Xno"; then
++ use_additional=no
++ else
++ if test "X$withval" = "X"; then
++ AC_LIB_WITH_FINAL_PREFIX([
++ eval additional_includedir=\"$includedir\"
++ eval additional_libdir=\"$libdir\"
++ ])
++ else
++ additional_includedir="$withval/include"
++ additional_libdir="$withval/lib"
++ fi
++ fi
++])
++ dnl Search the library and its dependencies in $additional_libdir and
++ dnl $LDFLAGS. Using breadth-first-seach.
++ LIB[]NAME=
++ LTLIB[]NAME=
++ INC[]NAME=
++ rpathdirs=
++ ltrpathdirs=
++ names_already_handled=
++ names_next_round='$1 $2'
++ while test -n "$names_next_round"; do
++ names_this_round="$names_next_round"
++ names_next_round=
++ for name in $names_this_round; do
++ already_handled=
++ for n in $names_already_handled; do
++ if test "$n" = "$name"; then
++ already_handled=yes
++ break
++ fi
++ done
++ if test -z "$already_handled"; then
++ names_already_handled="$names_already_handled $name"
++ dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
++ dnl or AC_LIB_HAVE_LINKFLAGS call.
++ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
++ eval value=\"\$HAVE_LIB$uppername\"
++ if test -n "$value"; then
++ if test "$value" = yes; then
++ eval value=\"\$LIB$uppername\"
++ test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
++ eval value=\"\$LTLIB$uppername\"
++ test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
++ else
++ dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
++ dnl that this library doesn't exist. So just drop it.
++ :
++ fi
++ else
++ dnl Search the library lib$name in $additional_libdir and $LDFLAGS
++ dnl and the already constructed $LIBNAME/$LTLIBNAME.
++ found_dir=
++ found_la=
++ found_so=
++ found_a=
++ if test $use_additional = yes; then
++ if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
++ found_dir="$additional_libdir"
++ found_so="$additional_libdir/lib$name.$shlibext"
++ if test -f "$additional_libdir/lib$name.la"; then
++ found_la="$additional_libdir/lib$name.la"
++ fi
++ else
++ if test -f "$additional_libdir/lib$name.$libext"; then
++ found_dir="$additional_libdir"
++ found_a="$additional_libdir/lib$name.$libext"
++ if test -f "$additional_libdir/lib$name.la"; then
++ found_la="$additional_libdir/lib$name.la"
++ fi
++ fi
++ fi
++ fi
++ if test "X$found_dir" = "X"; then
++ for x in $LDFLAGS $LTLIB[]NAME; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ case "$x" in
++ -L*)
++ dir=`echo "X$x" | sed -e 's/^X-L//'`
++ if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
++ found_dir="$dir"
++ found_so="$dir/lib$name.$shlibext"
++ if test -f "$dir/lib$name.la"; then
++ found_la="$dir/lib$name.la"
++ fi
++ else
++ if test -f "$dir/lib$name.$libext"; then
++ found_dir="$dir"
++ found_a="$dir/lib$name.$libext"
++ if test -f "$dir/lib$name.la"; then
++ found_la="$dir/lib$name.la"
++ fi
++ fi
++ fi
++ ;;
++ esac
++ if test "X$found_dir" != "X"; then
++ break
++ fi
++ done
++ fi
++ if test "X$found_dir" != "X"; then
++ dnl Found the library.
++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
++ if test "X$found_so" != "X"; then
++ dnl Linking with a shared library. We attempt to hardcode its
++ dnl directory into the executable's runpath, unless it's the
++ dnl standard /usr/lib.
++ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
++ dnl No hardcoding is needed.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
++ else
++ dnl Use an explicit option to hardcode DIR into the resulting
++ dnl binary.
++ dnl Potentially add DIR to ltrpathdirs.
++ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
++ haveit=
++ for x in $ltrpathdirs; do
++ if test "X$x" = "X$found_dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ ltrpathdirs="$ltrpathdirs $found_dir"
++ fi
++ dnl The hardcoding into $LIBNAME is system dependent.
++ if test "$hardcode_direct" = yes; then
++ dnl Using DIR/libNAME.so during linking hardcodes DIR into the
++ dnl resulting binary.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
++ else
++ if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
++ dnl Use an explicit option to hardcode DIR into the resulting
++ dnl binary.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
++ dnl Potentially add DIR to rpathdirs.
++ dnl The rpathdirs will be appended to $LIBNAME at the end.
++ haveit=
++ for x in $rpathdirs; do
++ if test "X$x" = "X$found_dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ rpathdirs="$rpathdirs $found_dir"
++ fi
++ else
++ dnl Rely on "-L$found_dir".
++ dnl But don't add it if it's already contained in the LDFLAGS
++ dnl or the already constructed $LIBNAME
++ haveit=
++ for x in $LDFLAGS $LIB[]NAME; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X-L$found_dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
++ fi
++ if test "$hardcode_minus_L" != no; then
++ dnl FIXME: Not sure whether we should use
++ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
++ dnl here.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
++ else
++ dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH
++ dnl here, because this doesn't fit in flags passed to the
++ dnl compiler. So give up. No hardcoding. This affects only
++ dnl very old systems.
++ dnl FIXME: Not sure whether we should use
++ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
++ dnl here.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
++ fi
++ fi
++ fi
++ fi
++ else
++ if test "X$found_a" != "X"; then
++ dnl Linking with a static library.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
++ else
++ dnl We shouldn't come here, but anyway it's good to have a
++ dnl fallback.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
++ fi
++ fi
++ dnl Assume the include files are nearby.
++ additional_includedir=
++ case "$found_dir" in
++ */lib | */lib/)
++ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
++ additional_includedir="$basedir/include"
++ ;;
++ esac
++ if test "X$additional_includedir" != "X"; then
++ dnl Potentially add $additional_includedir to $INCNAME.
++ dnl But don't add it
++ dnl 1. if it's the standard /usr/include,
++ dnl 2. if it's /usr/local/include and we are using GCC on Linux,
++ dnl 3. if it's already present in $CPPFLAGS or the already
++ dnl constructed $INCNAME,
++ dnl 4. if it doesn't exist as a directory.
++ if test "X$additional_includedir" != "X/usr/include"; then
++ haveit=
++ if test "X$additional_includedir" = "X/usr/local/include"; then
++ if test -n "$GCC"; then
++ case $host_os in
++ linux*) haveit=yes;;
++ esac
++ fi
++ fi
++ if test -z "$haveit"; then
++ for x in $CPPFLAGS $INC[]NAME; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X-I$additional_includedir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test -d "$additional_includedir"; then
++ dnl Really add $additional_includedir to $INCNAME.
++ INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
++ fi
++ fi
++ fi
++ fi
++ fi
++ dnl Look for dependencies.
++ if test -n "$found_la"; then
++ dnl Read the .la file. It defines the variables
++ dnl dlname, library_names, old_library, dependency_libs, current,
++ dnl age, revision, installed, dlopen, dlpreopen, libdir.
++ save_libdir="$libdir"
++ case "$found_la" in
++ */* | *\\*) . "$found_la" ;;
++ *) . "./$found_la" ;;
++ esac
++ libdir="$save_libdir"
++ dnl We use only dependency_libs.
++ for dep in $dependency_libs; do
++ case "$dep" in
++ -L*)
++ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
++ dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
++ dnl But don't add it
++ dnl 1. if it's the standard /usr/lib,
++ dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
++ dnl 3. if it's already present in $LDFLAGS or the already
++ dnl constructed $LIBNAME,
++ dnl 4. if it doesn't exist as a directory.
++ if test "X$additional_libdir" != "X/usr/lib"; then
++ haveit=
++ if test "X$additional_libdir" = "X/usr/local/lib"; then
++ if test -n "$GCC"; then
++ case $host_os in
++ linux*) haveit=yes;;
++ esac
++ fi
++ fi
++ if test -z "$haveit"; then
++ haveit=
++ for x in $LDFLAGS $LIB[]NAME; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X-L$additional_libdir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test -d "$additional_libdir"; then
++ dnl Really add $additional_libdir to $LIBNAME.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
++ fi
++ fi
++ haveit=
++ for x in $LDFLAGS $LTLIB[]NAME; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X-L$additional_libdir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test -d "$additional_libdir"; then
++ dnl Really add $additional_libdir to $LTLIBNAME.
++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
++ fi
++ fi
++ fi
++ fi
++ ;;
++ -R*)
++ dir=`echo "X$dep" | sed -e 's/^X-R//'`
++ if test "$enable_rpath" != no; then
++ dnl Potentially add DIR to rpathdirs.
++ dnl The rpathdirs will be appended to $LIBNAME at the end.
++ haveit=
++ for x in $rpathdirs; do
++ if test "X$x" = "X$dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ rpathdirs="$rpathdirs $dir"
++ fi
++ dnl Potentially add DIR to ltrpathdirs.
++ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
++ haveit=
++ for x in $ltrpathdirs; do
++ if test "X$x" = "X$dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ ltrpathdirs="$ltrpathdirs $dir"
++ fi
++ fi
++ ;;
++ -l*)
++ dnl Handle this in the next round.
++ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
++ ;;
++ *.la)
++ dnl Handle this in the next round. Throw away the .la's
++ dnl directory; it is already contained in a preceding -L
++ dnl option.
++ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
++ ;;
++ *)
++ dnl Most likely an immediate library name.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
++ ;;
++ esac
++ done
++ fi
++ else
++ dnl Didn't find the library; assume it is in the system directories
++ dnl known to the linker and runtime loader. (All the system
++ dnl directories known to the linker should also be known to the
++ dnl runtime loader, otherwise the system is severely misconfigured.)
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
++ fi
++ fi
++ fi
+ done
+- am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+- am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+- am__untar="$_am_tar -xf -"
+- ;;
+- plaintar)
+- # Must skip GNU tar: if it does not support --format= it doesn't create
+- # ustar tarball either.
+- (tar --version) >/dev/null 2>&1 && continue
+- am__tar='tar chf - "$$tardir"'
+- am__tar_='tar chf - "$tardir"'
+- am__untar='tar xf -'
+- ;;
+- pax)
+- am__tar='pax -L -x $1 -w "$$tardir"'
+- am__tar_='pax -L -x $1 -w "$tardir"'
+- am__untar='pax -r'
+- ;;
+- cpio)
+- am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+- am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+- am__untar='cpio -i -H $1 -d'
++ done
++ if test "X$rpathdirs" != "X"; then
++ if test -n "$hardcode_libdir_separator"; then
++ dnl Weird platform: only the last -rpath option counts, the user must
++ dnl pass all path elements in one option. We can arrange that for a
++ dnl single library, but not when more than one $LIBNAMEs are used.
++ alldirs=
++ for found_dir in $rpathdirs; do
++ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
++ done
++ dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl.
++ acl_save_libdir="$libdir"
++ libdir="$alldirs"
++ eval flag=\"$hardcode_libdir_flag_spec\"
++ libdir="$acl_save_libdir"
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
++ else
++ dnl The -rpath options are cumulative.
++ for found_dir in $rpathdirs; do
++ acl_save_libdir="$libdir"
++ libdir="$found_dir"
++ eval flag=\"$hardcode_libdir_flag_spec\"
++ libdir="$acl_save_libdir"
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
++ done
++ fi
++ fi
++ if test "X$ltrpathdirs" != "X"; then
++ dnl When using libtool, the option that works for both libraries and
++ dnl executables is -R. The -R options are cumulative.
++ for found_dir in $ltrpathdirs; do
++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
++ done
++ fi
++])
++
++dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
++dnl unless already present in VAR.
++dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
++dnl contains two or three consecutive elements that belong together.
++AC_DEFUN([AC_LIB_APPENDTOVAR],
++[
++ for element in [$2]; do
++ haveit=
++ for x in $[$1]; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X$element"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ [$1]="${[$1]}${[$1]:+ }$element"
++ fi
++ done
++])
++
++# lib-ld.m4 serial 1 (gettext-0.11)
++dnl Copyright (C) 1996-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl Subroutines of libtool.m4,
++dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
++dnl with libtool.m4.
++
++dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
++AC_DEFUN([AC_LIB_PROG_LD_GNU],
++[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
++[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
++if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
++ acl_cv_prog_gnu_ld=yes
++else
++ acl_cv_prog_gnu_ld=no
++fi])
++with_gnu_ld=$acl_cv_prog_gnu_ld
++])
++
++dnl From libtool-1.4. Sets the variable LD.
++AC_DEFUN([AC_LIB_PROG_LD],
++[AC_ARG_WITH(gnu-ld,
++[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
++test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
++AC_REQUIRE([AC_PROG_CC])dnl
++AC_REQUIRE([AC_CANONICAL_HOST])dnl
++ac_prog=ld
++if test "$GCC" = yes; then
++ # Check if gcc -print-prog-name=ld gives a path.
++ AC_MSG_CHECKING([for ld used by GCC])
++ case $host in
++ *-*-mingw*)
++ # gcc leaves a trailing carriage return which upsets mingw
++ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
++ *)
++ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
++ esac
++ case $ac_prog in
++ # Accept absolute paths.
++ [[\\/]* | [A-Za-z]:[\\/]*)]
++ [re_direlt='/[^/][^/]*/\.\./']
++ # Canonicalize the path of ld
++ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
++ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
++ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
++ done
++ test -z "$LD" && LD="$ac_prog"
++ ;;
++ "")
++ # If it fails, then pretend we aren't using GCC.
++ ac_prog=ld
+ ;;
+- none)
+- am__tar=false
+- am__tar_=false
+- am__untar=false
++ *)
++ # If it is relative, then search for the first ld in PATH.
++ with_gnu_ld=unknown
+ ;;
+ esac
++elif test "$with_gnu_ld" = yes; then
++ AC_MSG_CHECKING([for GNU ld])
++else
++ AC_MSG_CHECKING([for non-GNU ld])
++fi
++AC_CACHE_VAL(acl_cv_path_LD,
++[if test -z "$LD"; then
++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
++ for ac_dir in $PATH; do
++ test -z "$ac_dir" && ac_dir=.
++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
++ acl_cv_path_LD="$ac_dir/$ac_prog"
++ # Check to see if the program is GNU ld. I'd rather use --version,
++ # but apparently some GNU ld's only accept -v.
++ # Break only if it was the GNU/non-GNU ld that we prefer.
++ if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
++ test "$with_gnu_ld" != no && break
++ else
++ test "$with_gnu_ld" != yes && break
++ fi
++ fi
++ done
++ IFS="$ac_save_ifs"
++else
++ acl_cv_path_LD="$LD" # Let the user override the test with a path.
++fi])
++LD="$acl_cv_path_LD"
++if test -n "$LD"; then
++ AC_MSG_RESULT($LD)
++else
++ AC_MSG_RESULT(no)
++fi
++test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
++AC_LIB_PROG_LD_GNU
++])
+
+- # If the value was cached, stop now. We just wanted to have am__tar
+- # and am__untar set.
+- test -n "${am_cv_prog_tar_$1}" && break
++# iconv.m4 serial AM4 (gettext-0.11.3)
++dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
++[
++ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++ AC_REQUIRE([AC_LIB_RPATH])
++
++ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
++ dnl accordingly.
++ AC_LIB_LINKFLAGS_BODY([iconv])
++])
+
+- # tar/untar a dummy directory, and stop if the command works
+- rm -rf conftest.dir
+- mkdir conftest.dir
+- echo GrepMe > conftest.dir/file
+- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+- rm -rf conftest.dir
+- if test -s conftest.tar; then
+- AM_RUN_LOG([$am__untar <conftest.tar])
+- grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
++AC_DEFUN([AM_ICONV_LINK],
++[
++ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
++ dnl those with the standalone portable GNU libiconv installed).
++
++ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
++ dnl accordingly.
++ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
++
++ dnl Add $INCICONV to CPPFLAGS before performing the following checks,
++ dnl because if the user has installed libiconv and not disabled its use
++ dnl via --without-libiconv-prefix, he wants to use it. The first
++ dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
++ am_save_CPPFLAGS="$CPPFLAGS"
++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
++
++ AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
++ am_cv_func_iconv="no, consider installing GNU libiconv"
++ am_cv_lib_iconv=no
++ AC_TRY_LINK([#include <stdlib.h>
++#include <iconv.h>],
++ [iconv_t cd = iconv_open("","");
++ iconv(cd,NULL,NULL,NULL,NULL);
++ iconv_close(cd);],
++ am_cv_func_iconv=yes)
++ if test "$am_cv_func_iconv" != yes; then
++ am_save_LIBS="$LIBS"
++ LIBS="$LIBS $LIBICONV"
++ AC_TRY_LINK([#include <stdlib.h>
++#include <iconv.h>],
++ [iconv_t cd = iconv_open("","");
++ iconv(cd,NULL,NULL,NULL,NULL);
++ iconv_close(cd);],
++ am_cv_lib_iconv=yes
++ am_cv_func_iconv=yes)
++ LIBS="$am_save_LIBS"
++ fi
++ ])
++ if test "$am_cv_func_iconv" = yes; then
++ AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
+ fi
+-done
+-rm -rf conftest.dir
++ if test "$am_cv_lib_iconv" = yes; then
++ AC_MSG_CHECKING([how to link with libiconv])
++ AC_MSG_RESULT([$LIBICONV])
++ else
++ dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
++ dnl either.
++ CPPFLAGS="$am_save_CPPFLAGS"
++ LIBICONV=
++ LTLIBICONV=
++ fi
++ AC_SUBST(LIBICONV)
++ AC_SUBST(LTLIBICONV)
++])
++
++AC_DEFUN([AM_ICONV],
++[
++ AM_ICONV_LINK
++ if test "$am_cv_func_iconv" = yes; then
++ AC_MSG_CHECKING([for iconv declaration])
++ AC_CACHE_VAL(am_cv_proto_iconv, [
++ AC_TRY_COMPILE([
++#include <stdlib.h>
++#include <iconv.h>
++extern
++#ifdef __cplusplus
++"C"
++#endif
++#if defined(__STDC__) || defined(__cplusplus)
++size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
++#else
++size_t iconv();
++#endif
++], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
++ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
++ am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
++ AC_MSG_RESULT([$]{ac_t:-
++ }[$]am_cv_proto_iconv)
++ AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
++ [Define as const if the declaration of iconv() needs const.])
++ fi
++])
++
++# progtest.m4 serial 2 (gettext-0.10.40)
++dnl Copyright (C) 1996-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl Ulrich Drepper <drepper@cygnus.com>, 1996.
++
++# Search path for a program which passes the given test.
++
++dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
++dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
++AC_DEFUN([AM_PATH_PROG_WITH_TEST],
++[# Extract the first word of "$2", so it can be a program name with args.
++set dummy $2; ac_word=[$]2
++AC_MSG_CHECKING([for $ac_word])
++AC_CACHE_VAL(ac_cv_path_$1,
++[case "[$]$1" in
++ /*)
++ ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
++ ;;
++ *)
++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
++ for ac_dir in ifelse([$5], , $PATH, [$5]); do
++ test -z "$ac_dir" && ac_dir=.
++ if test -f $ac_dir/$ac_word; then
++ if [$3]; then
++ ac_cv_path_$1="$ac_dir/$ac_word"
++ break
++ fi
++ fi
++ done
++ IFS="$ac_save_ifs"
++dnl If no 4th arg is given, leave the cache variable unset,
++dnl so AC_PATH_PROGS will keep looking.
++ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
++])dnl
++ ;;
++esac])dnl
++$1="$ac_cv_path_$1"
++if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
++ AC_MSG_RESULT([$]$1)
++else
++ AC_MSG_RESULT(no)
++fi
++AC_SUBST($1)dnl
++])
++
++# isc-posix.m4 serial 2 (gettext-0.11.2)
++dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++# This file is not needed with autoconf-2.53 and newer. Remove it in 2005.
++
++# This test replaces the one in autoconf.
++# Currently this macro should have the same name as the autoconf macro
++# because gettext's gettext.m4 (distributed in the automake package)
++# still uses it. Otherwise, the use in gettext.m4 makes autoheader
++# give these diagnostics:
++# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
++# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
++
++undefine([AC_ISC_POSIX])
++
++AC_DEFUN([AC_ISC_POSIX],
++ [
++ dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
++ AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
++ ]
++)
++
++# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40)
++dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++# Test for the GNU C Library, version 2.1 or newer.
++# From Bruno Haible.
++
++AC_DEFUN([jm_GLIBC21],
++ [
++ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer,
++ ac_cv_gnu_library_2_1,
++ [AC_EGREP_CPP([Lucky GNU user],
++ [
++#include <features.h>
++#ifdef __GNU_LIBRARY__
++ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
++ Lucky GNU user
++ #endif
++#endif
++ ],
++ ac_cv_gnu_library_2_1=yes,
++ ac_cv_gnu_library_2_1=no)
++ ]
++ )
++ AC_SUBST(GLIBC21)
++ GLIBC21="$ac_cv_gnu_library_2_1"
++ ]
++)
++
++# intdiv0.m4 serial 1 (gettext-0.11.3)
++dnl Copyright (C) 2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([gt_INTDIV0],
++[
++ AC_REQUIRE([AC_PROG_CC])dnl
++ AC_REQUIRE([AC_CANONICAL_HOST])dnl
++
++ AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
++ gt_cv_int_divbyzero_sigfpe,
++ [
++ AC_TRY_RUN([
++#include <stdlib.h>
++#include <signal.h>
++
++static void
++#ifdef __cplusplus
++sigfpe_handler (int sig)
++#else
++sigfpe_handler (sig) int sig;
++#endif
++{
++ /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */
++ exit (sig != SIGFPE);
++}
++
++int x = 1;
++int y = 0;
++int z;
++int nan;
++
++int main ()
++{
++ signal (SIGFPE, sigfpe_handler);
++/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */
++#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
++ signal (SIGTRAP, sigfpe_handler);
++#endif
++/* Linux/SPARC yields signal SIGILL. */
++#if defined (__sparc__) && defined (__linux__)
++ signal (SIGILL, sigfpe_handler);
++#endif
++
++ z = x / y;
++ nan = y / y;
++ exit (1);
++}
++], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no,
++ [
++ # Guess based on the CPU.
++ case "$host_cpu" in
++ alpha* | i[34567]86 | m68k | s390*)
++ gt_cv_int_divbyzero_sigfpe="guessing yes";;
++ *)
++ gt_cv_int_divbyzero_sigfpe="guessing no";;
++ esac
++ ])
++ ])
++ case "$gt_cv_int_divbyzero_sigfpe" in
++ *yes) value=1;;
++ *) value=0;;
++ esac
++ AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value,
++ [Define if integer division by zero raises signal SIGFPE.])
++])
++
++# uintmax_t.m4 serial 6 (gettext-0.11)
++dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Paul Eggert.
++
++AC_PREREQ(2.13)
++
++# Define uintmax_t to `unsigned long' or `unsigned long long'
++# if <inttypes.h> does not exist.
++
++AC_DEFUN([jm_AC_TYPE_UINTMAX_T],
++[
++ AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
++ AC_REQUIRE([jm_AC_HEADER_STDINT_H])
++ if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then
++ AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG])
++ test $ac_cv_type_unsigned_long_long = yes \
++ && ac_type='unsigned long long' \
++ || ac_type='unsigned long'
++ AC_DEFINE_UNQUOTED(uintmax_t, $ac_type,
++ [Define to unsigned long or unsigned long long
++ if <inttypes.h> and <stdint.h> don't define.])
++ fi
++])
++
++# inttypes_h.m4 serial 4 (gettext-0.11.4)
++dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Paul Eggert.
++
++# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
++# doesn't clash with <sys/types.h>, and declares uintmax_t.
++
++AC_DEFUN([jm_AC_HEADER_INTTYPES_H],
++[
++ AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h,
++ [AC_TRY_COMPILE(
++ [#include <sys/types.h>
++#include <inttypes.h>],
++ [uintmax_t i = (uintmax_t) -1;],
++ jm_ac_cv_header_inttypes_h=yes,
++ jm_ac_cv_header_inttypes_h=no)])
++ if test $jm_ac_cv_header_inttypes_h = yes; then
++ AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1,
++[Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
++ and declares uintmax_t. ])
++ fi
++])
++
++# stdint_h.m4 serial 2 (gettext-0.11.4)
++dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Paul Eggert.
++
++# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
++# doesn't clash with <sys/types.h>, and declares uintmax_t.
++
++AC_DEFUN([jm_AC_HEADER_STDINT_H],
++[
++ AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h,
++ [AC_TRY_COMPILE(
++ [#include <sys/types.h>
++#include <stdint.h>],
++ [uintmax_t i = (uintmax_t) -1;],
++ jm_ac_cv_header_stdint_h=yes,
++ jm_ac_cv_header_stdint_h=no)])
++ if test $jm_ac_cv_header_stdint_h = yes; then
++ AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1,
++[Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
++ and declares uintmax_t. ])
++ fi
++])
++
++# ulonglong.m4 serial 3
++dnl Copyright (C) 1999-2003 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Paul Eggert.
++
++# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works.
++
++AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG],
++[
++ AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long,
++ [AC_TRY_LINK([unsigned long long ull = 1ULL; int i = 63;],
++ [unsigned long long ullmax = (unsigned long long) -1;
++ return ull << i | ull >> i | ullmax / ull | ullmax % ull;],
++ ac_cv_type_unsigned_long_long=yes,
++ ac_cv_type_unsigned_long_long=no)])
++ if test $ac_cv_type_unsigned_long_long = yes; then
++ AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1,
++ [Define if you have the 'unsigned long long' type.])
++ fi
++])
++
++# inttypes.m4 serial 1 (gettext-0.11.4)
++dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Paul Eggert.
++
++# Define HAVE_INTTYPES_H if <inttypes.h> exists and doesn't clash with
++# <sys/types.h>.
++
++AC_DEFUN([gt_HEADER_INTTYPES_H],
++[
++ AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h,
++ [
++ AC_TRY_COMPILE(
++ [#include <sys/types.h>
++#include <inttypes.h>],
++ [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no)
++ ])
++ if test $gt_cv_header_inttypes_h = yes; then
++ AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1,
++ [Define if <inttypes.h> exists and doesn't clash with <sys/types.h>.])
++ fi
++])
++
++# inttypes-pri.m4 serial 1 (gettext-0.11.4)
++dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++
++# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
++# macros to non-string values. This is the case on AIX 4.3.3.
++
++AC_DEFUN([gt_INTTYPES_PRI],
++[
++ AC_REQUIRE([gt_HEADER_INTTYPES_H])
++ if test $gt_cv_header_inttypes_h = yes; then
++ AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
++ gt_cv_inttypes_pri_broken,
++ [
++ AC_TRY_COMPILE([#include <inttypes.h>
++#ifdef PRId32
++char *p = PRId32;
++#endif
++], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes)
++ ])
++ fi
++ if test "$gt_cv_inttypes_pri_broken" = yes; then
++ AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1,
++ [Define if <inttypes.h> exists and defines unusable PRI* macros.])
++ fi
++])
++
++# codeset.m4 serial AM1 (gettext-0.10.40)
++dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([AM_LANGINFO_CODESET],
++[
++ AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
++ [AC_TRY_LINK([#include <langinfo.h>],
++ [char* cs = nl_langinfo(CODESET);],
++ am_cv_langinfo_codeset=yes,
++ am_cv_langinfo_codeset=no)
++ ])
++ if test $am_cv_langinfo_codeset = yes; then
++ AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
++ [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
++ fi
++])
++
++# lcmessage.m4 serial 3 (gettext-0.11.3)
++dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl Ulrich Drepper <drepper@cygnus.com>, 1995.
++
++# Check whether LC_MESSAGES is available in <locale.h>.
++
++AC_DEFUN([AM_LC_MESSAGES],
++[
++ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
++ [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
++ am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
++ if test $am_cv_val_LC_MESSAGES = yes; then
++ AC_DEFINE(HAVE_LC_MESSAGES, 1,
++ [Define if your <locale.h> file defines LC_MESSAGES.])
++ fi
++])
++
++# Configure paths for GLIB
++# Owen Taylor 97-11-3
++
++dnl AM_PATH_GLIB([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
++dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if "gmodule" or
++dnl gthread is specified in MODULES, pass to glib-config
++dnl
++AC_DEFUN([AM_PATH_GLIB],
++[dnl
++dnl Get the cflags and libraries from the glib-config script
++dnl
++AC_ARG_WITH(glib-prefix,[ --with-glib-prefix=PFX Prefix where GLIB is installed (optional)],
++ glib_config_prefix="$withval", glib_config_prefix="")
++AC_ARG_WITH(glib-exec-prefix,[ --with-glib-exec-prefix=PFX Exec prefix where GLIB is installed (optional)],
++ glib_config_exec_prefix="$withval", glib_config_exec_prefix="")
++AC_ARG_ENABLE(glibtest, [ --disable-glibtest Do not try to compile and run a test GLIB program],
++ , enable_glibtest=yes)
++
++ if test x$glib_config_exec_prefix != x ; then
++ glib_config_args="$glib_config_args --exec-prefix=$glib_config_exec_prefix"
++ if test x${GLIB_CONFIG+set} != xset ; then
++ GLIB_CONFIG=$glib_config_exec_prefix/bin/glib-config
++ fi
++ fi
++ if test x$glib_config_prefix != x ; then
++ glib_config_args="$glib_config_args --prefix=$glib_config_prefix"
++ if test x${GLIB_CONFIG+set} != xset ; then
++ GLIB_CONFIG=$glib_config_prefix/bin/glib-config
++ fi
++ fi
++
++ for module in . $4
++ do
++ case "$module" in
++ gmodule)
++ glib_config_args="$glib_config_args gmodule"
++ ;;
++ gthread)
++ glib_config_args="$glib_config_args gthread"
++ ;;
++ esac
++ done
+
+-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+-AC_SUBST([am__tar])
+-AC_SUBST([am__untar])
+-]) # _AM_PROG_TAR
++ AC_PATH_PROG(GLIB_CONFIG, glib-config, no)
++ min_glib_version=ifelse([$1], ,0.99.7,$1)
++ AC_MSG_CHECKING(for GLIB - version >= $min_glib_version)
++ no_glib=""
++ if test "$GLIB_CONFIG" = "no" ; then
++ no_glib=yes
++ else
++ GLIB_CFLAGS=`$GLIB_CONFIG $glib_config_args --cflags`
++ GLIB_LIBS=`$GLIB_CONFIG $glib_config_args --libs`
++ glib_config_major_version=`$GLIB_CONFIG $glib_config_args --version | \
++ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
++ glib_config_minor_version=`$GLIB_CONFIG $glib_config_args --version | \
++ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
++ glib_config_micro_version=`$GLIB_CONFIG $glib_config_args --version | \
++ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
++ if test "x$enable_glibtest" = "xyes" ; then
++ ac_save_CFLAGS="$CFLAGS"
++ ac_save_LIBS="$LIBS"
++ CFLAGS="$CFLAGS $GLIB_CFLAGS"
++ LIBS="$GLIB_LIBS $LIBS"
++dnl
++dnl Now check if the installed GLIB is sufficiently new. (Also sanity
++dnl checks the results of glib-config to some extent
++dnl
++ rm -f conf.glibtest
++ AC_TRY_RUN([
++#include <glib.h>
++#include <stdio.h>
++#include <stdlib.h>
++
++int
++main ()
++{
++ int major, minor, micro;
++ char *tmp_version;
++
++ system ("touch conf.glibtest");
++
++ /* HP/UX 9 (%@#!) writes to sscanf strings */
++ tmp_version = g_strdup("$min_glib_version");
++ if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
++ printf("%s, bad version string\n", "$min_glib_version");
++ exit(1);
++ }
++
++ if ((glib_major_version != $glib_config_major_version) ||
++ (glib_minor_version != $glib_config_minor_version) ||
++ (glib_micro_version != $glib_config_micro_version))
++ {
++ printf("\n*** 'glib-config --version' returned %d.%d.%d, but GLIB (%d.%d.%d)\n",
++ $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version,
++ glib_major_version, glib_minor_version, glib_micro_version);
++ printf ("*** was found! If glib-config was correct, then it is best\n");
++ printf ("*** to remove the old version of GLIB. You may also be able to fix the error\n");
++ printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
++ printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
++ printf("*** required on your system.\n");
++ printf("*** If glib-config was wrong, set the environment variable GLIB_CONFIG\n");
++ printf("*** to point to the correct copy of glib-config, and remove the file config.cache\n");
++ printf("*** before re-running configure\n");
++ }
++ else if ((glib_major_version != GLIB_MAJOR_VERSION) ||
++ (glib_minor_version != GLIB_MINOR_VERSION) ||
++ (glib_micro_version != GLIB_MICRO_VERSION))
++ {
++ printf("*** GLIB header files (version %d.%d.%d) do not match\n",
++ GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
++ printf("*** library (version %d.%d.%d)\n",
++ glib_major_version, glib_minor_version, glib_micro_version);
++ }
++ else
++ {
++ if ((glib_major_version > major) ||
++ ((glib_major_version == major) && (glib_minor_version > minor)) ||
++ ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro)))
++ {
++ return 0;
++ }
++ else
++ {
++ printf("\n*** An old version of GLIB (%d.%d.%d) was found.\n",
++ glib_major_version, glib_minor_version, glib_micro_version);
++ printf("*** You need a version of GLIB newer than %d.%d.%d. The latest version of\n",
++ major, minor, micro);
++ printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
++ printf("***\n");
++ printf("*** If you have already installed a sufficiently new version, this error\n");
++ printf("*** probably means that the wrong copy of the glib-config shell script is\n");
++ printf("*** being found. The easiest way to fix this is to remove the old version\n");
++ printf("*** of GLIB, but you can also set the GLIB_CONFIG environment to point to the\n");
++ printf("*** correct copy of glib-config. (In this case, you will have to\n");
++ printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
++ printf("*** so that the correct libraries are found at run-time))\n");
++ }
++ }
++ return 1;
++}
++],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
++ CFLAGS="$ac_save_CFLAGS"
++ LIBS="$ac_save_LIBS"
++ fi
++ fi
++ if test "x$no_glib" = x ; then
++ AC_MSG_RESULT(yes)
++ ifelse([$2], , :, [$2])
++ else
++ AC_MSG_RESULT(no)
++ if test "$GLIB_CONFIG" = "no" ; then
++ echo "*** The glib-config script installed by GLIB could not be found"
++ echo "*** If GLIB was installed in PREFIX, make sure PREFIX/bin is in"
++ echo "*** your path, or set the GLIB_CONFIG environment variable to the"
++ echo "*** full path to glib-config."
++ else
++ if test -f conf.glibtest ; then
++ :
++ else
++ echo "*** Could not run GLIB test program, checking why..."
++ CFLAGS="$CFLAGS $GLIB_CFLAGS"
++ LIBS="$LIBS $GLIB_LIBS"
++ AC_TRY_LINK([
++#include <glib.h>
++#include <stdio.h>
++], [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ],
++ [ echo "*** The test program compiled, but did not run. This usually means"
++ echo "*** that the run-time linker is not finding GLIB or finding the wrong"
++ echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
++ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
++ echo "*** to the installed location Also, make sure you have run ldconfig if that"
++ echo "*** is required on your system"
++ echo "***"
++ echo "*** If you have an old version installed, it is best to remove it, although"
++ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
++ echo "***"
++ echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
++ echo "*** came with the system with the command"
++ echo "***"
++ echo "*** rpm --erase --nodeps gtk gtk-devel" ],
++ [ echo "*** The test program failed to compile or link. See the file config.log for the"
++ echo "*** exact error that occured. This usually means GLIB was incorrectly installed"
++ echo "*** or that you have moved GLIB since it was installed. In the latter case, you"
++ echo "*** may want to edit the glib-config script: $GLIB_CONFIG" ])
++ CFLAGS="$ac_save_CFLAGS"
++ LIBS="$ac_save_LIBS"
++ fi
++ fi
++ GLIB_CFLAGS=""
++ GLIB_LIBS=""
++ ifelse([$3], , :, [$3])
++ fi
++ AC_SUBST(GLIB_CFLAGS)
++ AC_SUBST(GLIB_LIBS)
++ rm -f conf.glibtest
++])
++
++# Configure paths for GTK+
++# Owen Taylor 97-11-3
++
++dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
++dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
++dnl
++AC_DEFUN([AM_PATH_GTK],
++[dnl
++dnl Get the cflags and libraries from the gtk-config script
++dnl
++AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
++ gtk_config_prefix="$withval", gtk_config_prefix="")
++AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
++ gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="")
++AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
++ , enable_gtktest=yes)
++
++ for module in . $4
++ do
++ case "$module" in
++ gthread)
++ gtk_config_args="$gtk_config_args gthread"
++ ;;
++ esac
++ done
++
++ if test x$gtk_config_exec_prefix != x ; then
++ gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
++ if test x${GTK_CONFIG+set} != xset ; then
++ GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
++ fi
++ fi
++ if test x$gtk_config_prefix != x ; then
++ gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
++ if test x${GTK_CONFIG+set} != xset ; then
++ GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
++ fi
++ fi
++
++ AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
++ min_gtk_version=ifelse([$1], ,0.99.7,$1)
++ AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
++ no_gtk=""
++ if test "$GTK_CONFIG" = "no" ; then
++ no_gtk=yes
++ else
++ GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
++ GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
++ gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \
++ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
++ gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
++ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
++ gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
++ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
++ if test "x$enable_gtktest" = "xyes" ; then
++ ac_save_CFLAGS="$CFLAGS"
++ ac_save_LIBS="$LIBS"
++ CFLAGS="$CFLAGS $GTK_CFLAGS"
++ LIBS="$GTK_LIBS $LIBS"
++dnl
++dnl Now check if the installed GTK is sufficiently new. (Also sanity
++dnl checks the results of gtk-config to some extent
++dnl
++ rm -f conf.gtktest
++ AC_TRY_RUN([
++#include <gtk/gtk.h>
++#include <stdio.h>
++#include <stdlib.h>
++
++int
++main ()
++{
++ int major, minor, micro;
++ char *tmp_version;
++
++ system ("touch conf.gtktest");
++
++ /* HP/UX 9 (%@#!) writes to sscanf strings */
++ tmp_version = g_strdup("$min_gtk_version");
++ if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
++ printf("%s, bad version string\n", "$min_gtk_version");
++ exit(1);
++ }
++
++ if ((gtk_major_version != $gtk_config_major_version) ||
++ (gtk_minor_version != $gtk_config_minor_version) ||
++ (gtk_micro_version != $gtk_config_micro_version))
++ {
++ printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
++ $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
++ gtk_major_version, gtk_minor_version, gtk_micro_version);
++ printf ("*** was found! If gtk-config was correct, then it is best\n");
++ printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
++ printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
++ printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
++ printf("*** required on your system.\n");
++ printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n");
++ printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n");
++ printf("*** before re-running configure\n");
++ }
++#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION)
++ else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
++ (gtk_minor_version != GTK_MINOR_VERSION) ||
++ (gtk_micro_version != GTK_MICRO_VERSION))
++ {
++ printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
++ GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
++ printf("*** library (version %d.%d.%d)\n",
++ gtk_major_version, gtk_minor_version, gtk_micro_version);
++ }
++#endif /* defined (GTK_MAJOR_VERSION) ... */
++ else
++ {
++ if ((gtk_major_version > major) ||
++ ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
++ ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
++ {
++ return 0;
++ }
++ else
++ {
++ printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
++ gtk_major_version, gtk_minor_version, gtk_micro_version);
++ printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
++ major, minor, micro);
++ printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
++ printf("***\n");
++ printf("*** If you have already installed a sufficiently new version, this error\n");
++ printf("*** probably means that the wrong copy of the gtk-config shell script is\n");
++ printf("*** being found. The easiest way to fix this is to remove the old version\n");
++ printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n");
++ printf("*** correct copy of gtk-config. (In this case, you will have to\n");
++ printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
++ printf("*** so that the correct libraries are found at run-time))\n");
++ }
++ }
++ return 1;
++}
++],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
++ CFLAGS="$ac_save_CFLAGS"
++ LIBS="$ac_save_LIBS"
++ fi
++ fi
++ if test "x$no_gtk" = x ; then
++ AC_MSG_RESULT(yes)
++ ifelse([$2], , :, [$2])
++ else
++ AC_MSG_RESULT(no)
++ if test "$GTK_CONFIG" = "no" ; then
++ echo "*** The gtk-config script installed by GTK could not be found"
++ echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in"
++ echo "*** your path, or set the GTK_CONFIG environment variable to the"
++ echo "*** full path to gtk-config."
++ else
++ if test -f conf.gtktest ; then
++ :
++ else
++ echo "*** Could not run GTK test program, checking why..."
++ CFLAGS="$CFLAGS $GTK_CFLAGS"
++ LIBS="$LIBS $GTK_LIBS"
++ AC_TRY_LINK([
++#include <gtk/gtk.h>
++#include <stdio.h>
++], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
++ [ echo "*** The test program compiled, but did not run. This usually means"
++ echo "*** that the run-time linker is not finding GTK or finding the wrong"
++ echo "*** version of GTK. If it is not finding GTK, you'll need to set your"
++ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
++ echo "*** to the installed location Also, make sure you have run ldconfig if that"
++ echo "*** is required on your system"
++ echo "***"
++ echo "*** If you have an old version installed, it is best to remove it, although"
++ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
++ echo "***"
++ echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
++ echo "*** came with the system with the command"
++ echo "***"
++ echo "*** rpm --erase --nodeps gtk gtk-devel" ],
++ [ echo "*** The test program failed to compile or link. See the file config.log for the"
++ echo "*** exact error that occured. This usually means GTK was incorrectly installed"
++ echo "*** or that you have moved GTK since it was installed. In the latter case, you"
++ echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ])
++ CFLAGS="$ac_save_CFLAGS"
++ LIBS="$ac_save_LIBS"
++ fi
++ fi
++ GTK_CFLAGS=""
++ GTK_LIBS=""
++ ifelse([$3], , :, [$3])
++ fi
++ AC_SUBST(GTK_CFLAGS)
++ AC_SUBST(GTK_LIBS)
++ rm -f conf.gtktest
++])
+
+diff -pruN dillo-0.8.6/autogen.sh dillo-0.8.6-i18n-misc-20060709/autogen.sh
+--- dillo-0.8.6/autogen.sh 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/autogen.sh 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,58 @@
++#!/bin/sh
++#
++# Script to generate configure&make stuff
++#
++
++#-----------------------------------------------------
++# If defined, get these programs from the environment
++#
++: ${ACLOCAL:=aclocal}
++: ${AUTOHEADER:=autoheader}
++: ${AUTOCONF:=autoconf}
++: ${AUTOMAKE:=automake}
++
++#-------------------------
++# Required binaries check
++#
++check_bin_file(){
++ which $1 > /dev/null 2>&1
++ if [ $? = 0 ]; then
++ return 0
++ else
++ return 1
++ fi
++}
++
++#------
++# Main
++#
++clear
++ERR="no"
++for cmd in "$ACLOCAL" "$AUTOHEADER" "$AUTOCONF" "$AUTOMAKE"
++do
++ if check_bin_file "$cmd"
++ then
++ echo -e "$cmd \tfound"
++ else
++ echo -e "$cmd \tNOT found"
++ ERR="yes"
++ fi
++done
++
++if test $ERR = "yes"
++then
++ echo
++ echo "ERROR: to run this program you need the following installed"
++ echo " $ACLOCAL $AUTOHEADER $AUTOCONF $AUTOMAKE"
++ echo
++ exit 1
++fi
++
++echo "[Checks passed]"
++echo "Generating..."
++
++"$ACLOCAL"
++"$AUTOHEADER"
++"$AUTOCONF"
++"$AUTOMAKE" -a -c
++
+diff -pruN dillo-0.8.6/bm-update dillo-0.8.6-i18n-misc-20060709/bm-update
+--- dillo-0.8.6/bm-update 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/bm-update 2006-07-09 00:32:51.000000000 +0900
+@@ -0,0 +1,54 @@
++#!/bin/sh
++SED=`which sed`
++if test "x$SED" = "x"; then
++ echo "ERROR: sed not found"
++ exit
++fi
++ICONV=`which iconv`
++if test "x$ICONV" = "x"; then
++ echo "ERROR: iconv not found"
++ exit
++fi
++
++CONVTEST=`LANG=C iconv -f UTF-8 -t UTF-8 ~/.dillo/bm.txt -o ~/.dillo/bm.txt.update 2>&1| sed -e "s/.*illegal.*/illegal/g"`
++
++rm -f ~/.dillo/bm.txt.update
++if test "x$CONVTEST" = "xillegal"; then
++ echo "bookmark needs update."
++else
++ echo "already updated.(or no bookmark)"
++ exit
++fi
++
++CHARSET=`locale | grep "LC_CTYPE.*\." | sed -e "s/^.*\.//g" -e "s/\"//g"`
++if test "x$CHARSET" = "x"; then
++ CHARSET="iso88591"
++fi
++
++case $CHARSET in
++ iso885915@euro)
++ CHARSET="iso885915"
++ ;;
++ koi8t)
++ CHARSET="koi8-t"
++ ;;
++ utf8*)
++ CHARSET="utf8"
++ ;;
++esac
++
++CONVTEST=`LANG=C iconv -f $CHARSET -t UTF-8 ~/.dillo/bm.txt -o ~/.dillo/bm.txt.update 2>&1| sed -e "s/.*illegal.*/illegal/g"`
++
++if test "x$CONVTEST" = "xillegal"; then
++ rm -f ~/.dillo/bm.txt.update
++ echo "** WARNING **: bookmark was broken!"
++ for i in `cat ~/.dillo/bm.txt|sed -e "s/ /\\\\\\\\s/g"`; do
++ echo $i|sed -e "s/\\\\s/ /g" |LANG=C iconv -f $CHARSET -t UTF-8 2>&1 >> ~/.dillo/bm.txt.update | sed -e "s/.*illegal.*/\\n/g" >> ~/.dillo/bm.txt.update;
++ done
++else
++ echo "update success!"
++fi
++
++mv -f ~/.dillo/bm.txt ~/.dillo/bm.txt.old
++mv -f ~/.dillo/bm.txt.update ~/.dillo/bm.txt
++echo "backup old bookmark as ~/.dillo/bm.txt.old"
+diff -pruN dillo-0.8.6/config/Makefile.am dillo-0.8.6-i18n-misc-20060709/config/Makefile.am
+--- dillo-0.8.6/config/Makefile.am 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/config/Makefile.am 2006-05-16 01:21:15.000000000 +0900
+@@ -0,0 +1,13 @@
++AM_CPPFLAGS=-DDILLORC_SYS='"$(sysconfdir)/dillorc"' @GTK_CFLAGS@ -DLOCALEDIR='"$(localedir)"'
++
++bin_PROGRAMS = dillocfg
++
++dillocfg_LDADD = @GTK_LIBS@
++dillocfg_SOURCES = dillocfg.c \
++ dillocfg.h \
++ dillocfg_option.c \
++ dillocfg_option.h \
++ dillocfg_token.h \
++ dillocfg_token.c
++
++#EXTRA_DIST = dillocfg.tcl
+diff -pruN dillo-0.8.6/config/Makefile.in dillo-0.8.6-i18n-misc-20060709/config/Makefile.in
+--- dillo-0.8.6/config/Makefile.in 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/config/Makefile.in 2006-05-16 01:21:15.000000000 +0900
+@@ -0,0 +1,450 @@
++# Makefile.in generated by automake 1.7.9 from Makefile.am.
++# @configure_input@
++
++# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
++# Free Software Foundation, Inc.
++# This Makefile.in is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
++# PARTICULAR PURPOSE.
++
++@SET_MAKE@
++
++srcdir = @srcdir@
++top_srcdir = @top_srcdir@
++VPATH = @srcdir@
++pkgdatadir = $(datadir)/@PACKAGE@
++pkglibdir = $(libdir)/@PACKAGE@
++pkgincludedir = $(includedir)/@PACKAGE@
++top_builddir = ..
++
++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
++INSTALL = @INSTALL@
++install_sh_DATA = $(install_sh) -c -m 644
++install_sh_PROGRAM = $(install_sh) -c
++install_sh_SCRIPT = $(install_sh) -c
++INSTALL_HEADER = $(INSTALL_DATA)
++transform = $(program_transform_name)
++NORMAL_INSTALL = :
++PRE_INSTALL = :
++POST_INSTALL = :
++NORMAL_UNINSTALL = :
++PRE_UNINSTALL = :
++POST_UNINSTALL = :
++build_triplet = @build@
++host_triplet = @host@
++target_triplet = @target@
++ACLOCAL = @ACLOCAL@
++AMDEP_FALSE = @AMDEP_FALSE@
++AMDEP_TRUE = @AMDEP_TRUE@
++AMTAR = @AMTAR@
++AUTOCONF = @AUTOCONF@
++AUTOHEADER = @AUTOHEADER@
++AUTOMAKE = @AUTOMAKE@
++AWK = @AWK@
++CC = @CC@
++CCDEPMODE = @CCDEPMODE@
++CFLAGS = @CFLAGS@
++CPP = @CPP@
++CPPFLAGS = @CPPFLAGS@
++CXX = @CXX@
++CXXDEPMODE = @CXXDEPMODE@
++CXXFLAGS = @CXXFLAGS@
++CYGPATH_W = @CYGPATH_W@
++DEFS = @DEFS@
++DEPDIR = @DEPDIR@
++DLGUI_FALSE = @DLGUI_FALSE@
++DLGUI_TRUE = @DLGUI_TRUE@
++ECHO_C = @ECHO_C@
++ECHO_N = @ECHO_N@
++ECHO_T = @ECHO_T@
++EGREP = @EGREP@
++EXEEXT = @EXEEXT@
++GLIB_CFLAGS = @GLIB_CFLAGS@
++GLIB_CONFIG = @GLIB_CONFIG@
++GLIB_LIBS = @GLIB_LIBS@
++GMSGFMT = @GMSGFMT@
++GTK_CFLAGS = @GTK_CFLAGS@
++GTK_CONFIG = @GTK_CONFIG@
++GTK_LIBS = @GTK_LIBS@
++INSTALL_DATA = @INSTALL_DATA@
++INSTALL_PROGRAM = @INSTALL_PROGRAM@
++INSTALL_SCRIPT = @INSTALL_SCRIPT@
++INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
++INTLLIBS = @INTLLIBS@
++LDFLAGS = @LDFLAGS@
++LIBFLTK_CXXFLAGS = @LIBFLTK_CXXFLAGS@
++LIBFLTK_LIBS = @LIBFLTK_LIBS@
++LIBICONV = @LIBICONV@
++LIBINTL = @LIBINTL@
++LIBJPEG_CPPFLAGS = @LIBJPEG_CPPFLAGS@
++LIBJPEG_LDFLAGS = @LIBJPEG_LDFLAGS@
++LIBJPEG_LIBS = @LIBJPEG_LIBS@
++LIBOBJS = @LIBOBJS@
++LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
++LIBPNG_LIBS = @LIBPNG_LIBS@
++LIBPTHREAD_LDFLAGS = @LIBPTHREAD_LDFLAGS@
++LIBPTHREAD_LIBS = @LIBPTHREAD_LIBS@
++LIBS = @LIBS@
++LIBSSL_LIBS = @LIBSSL_LIBS@
++LIBZ_LIBS = @LIBZ_LIBS@
++LTLIBICONV = @LTLIBICONV@
++LTLIBINTL = @LTLIBINTL@
++LTLIBOBJS = @LTLIBOBJS@
++MAKEINFO = @MAKEINFO@
++MKINSTALLDIRS = @MKINSTALLDIRS@
++MSGFMT = @MSGFMT@
++MSGMERGE = @MSGMERGE@
++OBJEXT = @OBJEXT@
++PACKAGE = @PACKAGE@
++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
++PACKAGE_NAME = @PACKAGE_NAME@
++PACKAGE_STRING = @PACKAGE_STRING@
++PACKAGE_TARNAME = @PACKAGE_TARNAME@
++PACKAGE_VERSION = @PACKAGE_VERSION@
++PATH_SEPARATOR = @PATH_SEPARATOR@
++PKG_CONFIG = @PKG_CONFIG@
++POSUB = @POSUB@
++RANLIB = @RANLIB@
++SET_MAKE = @SET_MAKE@
++SHELL = @SHELL@
++STRIP = @STRIP@
++USE_NLS = @USE_NLS@
++VERSION = @VERSION@
++XFT_CONFIG = @XFT_CONFIG@
++XGETTEXT = @XGETTEXT@
++ac_ct_CC = @ac_ct_CC@
++ac_ct_CXX = @ac_ct_CXX@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
++am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
++am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
++am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
++am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
++am__include = @am__include@
++am__leading_dot = @am__leading_dot@
++am__quote = @am__quote@
++bindir = @bindir@
++build = @build@
++build_alias = @build_alias@
++build_cpu = @build_cpu@
++build_os = @build_os@
++build_vendor = @build_vendor@
++datadir = @datadir@
++exec_prefix = @exec_prefix@
++host = @host@
++host_alias = @host_alias@
++host_cpu = @host_cpu@
++host_os = @host_os@
++host_vendor = @host_vendor@
++includedir = @includedir@
++infodir = @infodir@
++install_sh = @install_sh@
++libdir = @libdir@
++libexecdir = @libexecdir@
++localedir = @localedir@
++localstatedir = @localstatedir@
++mandir = @mandir@
++oldincludedir = @oldincludedir@
++prefix = @prefix@
++program_transform_name = @program_transform_name@
++sbindir = @sbindir@
++sharedstatedir = @sharedstatedir@
++sysconfdir = @sysconfdir@
++target = @target@
++target_alias = @target_alias@
++target_cpu = @target_cpu@
++target_os = @target_os@
++target_vendor = @target_vendor@
++AM_CPPFLAGS = -DDILLORC_SYS='"$(sysconfdir)/dillorc"' @GTK_CFLAGS@ -DLOCALEDIR='"$(localedir)"'
++
++bin_PROGRAMS = dillocfg
++
++dillocfg_LDADD = @GTK_LIBS@
++dillocfg_SOURCES = dillocfg.c \
++ dillocfg.h \
++ dillocfg_option.c \
++ dillocfg_option.h \
++ dillocfg_token.h \
++ dillocfg_token.c
++
++subdir = config
++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
++CONFIG_HEADER = $(top_builddir)/config.h
++CONFIG_CLEAN_FILES =
++bin_PROGRAMS = dillocfg$(EXEEXT)
++PROGRAMS = $(bin_PROGRAMS)
++
++am_dillocfg_OBJECTS = dillocfg.$(OBJEXT) dillocfg_option.$(OBJEXT) \
++ dillocfg_token.$(OBJEXT)
++dillocfg_OBJECTS = $(am_dillocfg_OBJECTS)
++dillocfg_DEPENDENCIES =
++dillocfg_LDFLAGS =
++
++DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
++depcomp = $(SHELL) $(top_srcdir)/depcomp
++am__depfiles_maybe = depfiles
++@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/dillocfg.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dillocfg_option.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dillocfg_token.Po
++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
++CCLD = $(CC)
++LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
++DIST_SOURCES = $(dillocfg_SOURCES)
++DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
++SOURCES = $(dillocfg_SOURCES)
++
++all: all-am
++
++.SUFFIXES:
++.SUFFIXES: .c .o .obj
++$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
++ cd $(top_srcdir) && \
++ $(AUTOMAKE) --gnu config/Makefile
++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
++binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
++install-binPROGRAMS: $(bin_PROGRAMS)
++ @$(NORMAL_INSTALL)
++ $(mkinstalldirs) $(DESTDIR)$(bindir)
++ @list='$(bin_PROGRAMS)'; for p in $$list; do \
++ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
++ if test -f $$p \
++ ; then \
++ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
++ echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
++ $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
++ else :; fi; \
++ done
++
++uninstall-binPROGRAMS:
++ @$(NORMAL_UNINSTALL)
++ @list='$(bin_PROGRAMS)'; for p in $$list; do \
++ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
++ echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
++ rm -f $(DESTDIR)$(bindir)/$$f; \
++ done
++
++clean-binPROGRAMS:
++ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
++dillocfg$(EXEEXT): $(dillocfg_OBJECTS) $(dillocfg_DEPENDENCIES)
++ @rm -f dillocfg$(EXEEXT)
++ $(LINK) $(dillocfg_LDFLAGS) $(dillocfg_OBJECTS) $(dillocfg_LDADD) $(LIBS)
++
++mostlyclean-compile:
++ -rm -f *.$(OBJEXT) core *.core
++
++distclean-compile:
++ -rm -f *.tab.c
++
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dillocfg.Po@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dillocfg_option.Po@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dillocfg_token.Po@am__quote@
++
++.c.o:
++@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
++@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
++@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
++@am__fastdepCC_TRUE@ fi
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
++
++.c.obj:
++@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
++@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
++@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
++@am__fastdepCC_TRUE@ fi
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
++uninstall-info-am:
++
++ETAGS = etags
++ETAGSFLAGS =
++
++CTAGS = ctags
++CTAGSFLAGS =
++
++tags: TAGS
++
++ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
++ unique=`for i in $$list; do \
++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
++ done | \
++ $(AWK) ' { files[$$0] = 1; } \
++ END { for (i in files) print i; }'`; \
++ mkid -fID $$unique
++
++TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
++ $(TAGS_FILES) $(LISP)
++ tags=; \
++ here=`pwd`; \
++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
++ unique=`for i in $$list; do \
++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
++ done | \
++ $(AWK) ' { files[$$0] = 1; } \
++ END { for (i in files) print i; }'`; \
++ test -z "$(ETAGS_ARGS)$$tags$$unique" \
++ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
++ $$tags $$unique
++
++ctags: CTAGS
++CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
++ $(TAGS_FILES) $(LISP)
++ tags=; \
++ here=`pwd`; \
++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
++ unique=`for i in $$list; do \
++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
++ done | \
++ $(AWK) ' { files[$$0] = 1; } \
++ END { for (i in files) print i; }'`; \
++ test -z "$(CTAGS_ARGS)$$tags$$unique" \
++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
++ $$tags $$unique
++
++GTAGS:
++ here=`$(am__cd) $(top_builddir) && pwd` \
++ && cd $(top_srcdir) \
++ && gtags -i $(GTAGS_ARGS) $$here
++
++distclean-tags:
++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
++
++top_distdir = ..
++distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
++
++distdir: $(DISTFILES)
++ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
++ list='$(DISTFILES)'; for file in $$list; do \
++ case $$file in \
++ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
++ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
++ esac; \
++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
++ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
++ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
++ dir="/$$dir"; \
++ $(mkinstalldirs) "$(distdir)$$dir"; \
++ else \
++ dir=''; \
++ fi; \
++ if test -d $$d/$$file; then \
++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
++ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
++ fi; \
++ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
++ else \
++ test -f $(distdir)/$$file \
++ || cp -p $$d/$$file $(distdir)/$$file \
++ || exit 1; \
++ fi; \
++ done
++check-am: all-am
++check: check-am
++all-am: Makefile $(PROGRAMS)
++
++installdirs:
++ $(mkinstalldirs) $(DESTDIR)$(bindir)
++install: install-am
++install-exec: install-exec-am
++install-data: install-data-am
++uninstall: uninstall-am
++
++install-am: all-am
++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
++
++installcheck: installcheck-am
++install-strip:
++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
++ `test -z '$(STRIP)' || \
++ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
++mostlyclean-generic:
++
++clean-generic:
++
++distclean-generic:
++ -rm -f $(CONFIG_CLEAN_FILES)
++
++maintainer-clean-generic:
++ @echo "This command is intended for maintainers to use"
++ @echo "it deletes files that may require special tools to rebuild."
++clean: clean-am
++
++clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
++
++distclean: distclean-am
++ -rm -rf ./$(DEPDIR)
++ -rm -f Makefile
++distclean-am: clean-am distclean-compile distclean-generic \
++ distclean-tags
++
++dvi: dvi-am
++
++dvi-am:
++
++info: info-am
++
++info-am:
++
++install-data-am:
++
++install-exec-am: install-binPROGRAMS
++
++install-info: install-info-am
++
++install-man:
++
++installcheck-am:
++
++maintainer-clean: maintainer-clean-am
++ -rm -rf ./$(DEPDIR)
++ -rm -f Makefile
++maintainer-clean-am: distclean-am maintainer-clean-generic
++
++mostlyclean: mostlyclean-am
++
++mostlyclean-am: mostlyclean-compile mostlyclean-generic
++
++pdf: pdf-am
++
++pdf-am:
++
++ps: ps-am
++
++ps-am:
++
++uninstall-am: uninstall-binPROGRAMS uninstall-info-am
++
++.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
++ clean-generic ctags distclean distclean-compile \
++ distclean-generic distclean-tags distdir dvi dvi-am info \
++ info-am install install-am install-binPROGRAMS install-data \
++ install-data-am install-exec install-exec-am install-info \
++ install-info-am install-man install-strip installcheck \
++ installcheck-am installdirs maintainer-clean \
++ maintainer-clean-generic mostlyclean mostlyclean-compile \
++ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
++ uninstall-am uninstall-binPROGRAMS uninstall-info-am
++
++
++#EXTRA_DIST = dillocfg.tcl
++# Tell versions [3.59,3.63) of GNU make to not export all variables.
++# Otherwise a system limit (for SysV at least) may be exceeded.
++.NOEXPORT:
+diff -pruN dillo-0.8.6/config/dillocfg.c dillo-0.8.6-i18n-misc-20060709/config/dillocfg.c
+--- dillo-0.8.6/config/dillocfg.c 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/config/dillocfg.c 2006-05-16 01:21:15.000000000 +0900
+@@ -0,0 +1,482 @@
++/*
++ * File: dillocfg-gtk.c
++ *
++ * Copyright (C) 2003 Kiyo <kiyo@teki.jpn.ph>
++ *
++ * 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 of the License, or
++ * (at your option) any later version.
++ */
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <ctype.h>
++#include <string.h>
++#include <locale.h>
++#include <gtk/gtk.h>
++
++#include "../config.h"
++#include "../src/intl.h"
++#include "dillocfg.h"
++#include "dillocfg_option.h"
++#include "dillocfg_token.h"
++
++static gboolean modified_ = FALSE;
++
++#define IS_LINE_END(c) (c == '\0' || c == '#')
++#define SKIPSPACE(buf, i) while (!IS_LINE_END(buf[i]) && isspace(buf[i])) i++
++
++DillocfgWin *DillocfgWin_new();
++void DillocfgWin_init(DillocfgWin *d, gboolean use_default);
++void DillocfgWin_free(GtkWidget *widget, DillocfgWin *d);
++void DillocfgWin_callback_reset(GtkButton *button, gpointer user_data);
++void DillocfgWin_callback_reload(GtkButton *button, gpointer user_data);
++void DillocfgWin_callback_save(GtkButton *button, gpointer user_data);
++DillocfgInterface *DillocfgInterface_new(DillocfgWin *w, const gchar *label);
++DillocfgFont *DillocfgFont_new(DillocfgWin *w, const gchar *label);
++DillocfgColor *DillocfgColor_new(DillocfgWin *w, const gchar *label);
++DillocfgNetwork *DillocfgNetwork_new(DillocfgWin *w, const gchar *label);
++#ifndef DISABLE_TABS
++DillocfgTab *DillocfgTab_new(DillocfgWin *w, const gchar *label);
++#endif
++DillocfgOther *DillocfgOther_new(DillocfgWin *w, const gchar *label);
++DillocfgCookie *DillocfgCookie_new(DillocfgWin *w, const gchar *label);
++void ReadUserconfig(DillocfgWin *d);
++void WriteUserconfig(DillocfgWin *d);
++
++/****************************** M A I N ********************************/
++int main(int argc, char **argv) {
++ DillocfgWin *dialog;
++
++#ifdef ENABLE_NLS
++ /* set locale */
++ gtk_set_locale();
++ /* Initialize Gettext */
++ bindtextdomain (PACKAGE, LOCALEDIR);
++ textdomain (PACKAGE);
++#endif
++ /* Initialize GUI and parse GTK related args */
++ gtk_init(&argc, &argv);
++ gdk_rgb_init();
++
++ dialog = DillocfgWin_new();
++ ReadUserconfig(dialog);
++
++ /* Start the GTK+ cycle */
++ gtk_main();
++
++ //g_print("Dillocfg:normal exit\n");
++ gtk_exit (0);
++ return 0;
++}
++
++DillocfgWin *DillocfgWin_new() {
++ DillocfgWin *d = g_new(DillocfgWin, 1);
++ GtkWidget *dialog_main = gtk_window_new(GTK_WINDOW_TOPLEVEL);//DIALOG);
++ GtkWidget *vbox = gtk_vbox_new(FALSE, 0);
++ GtkWidget *button_hbox = gtk_hbox_new(FALSE, 0);
++ GtkWidget *button_reset = gtk_button_new_with_label(_("Reset"));
++ GtkWidget *button_reload = gtk_button_new_with_label(_("Reload"));
++ GtkWidget *button_save = gtk_button_new_with_label(_("Save"));
++ GtkWidget *button_quit = gtk_button_new_with_label(_("Quit"));
++
++ gtk_window_set_title(GTK_WINDOW(dialog_main), _("Dillo Preferences"));
++ gtk_window_set_policy(GTK_WINDOW(dialog_main), TRUE, TRUE, FALSE);
++ gtk_signal_connect(GTK_OBJECT(dialog_main), "delete_event",
++ GTK_SIGNAL_FUNC(gtk_widget_destroy), d);
++ gtk_signal_connect(GTK_OBJECT(dialog_main), "destroy",
++ GTK_SIGNAL_FUNC(DillocfgWin_free), d);
++ gtk_window_set_wmclass(GTK_WINDOW(dialog_main), "dillocfg", _("Dillo Preferences"));
++ gtk_widget_set_usize(dialog_main, WIDTH, HEIGHT);
++
++ d->notebook = gtk_notebook_new();
++ gtk_notebook_set_homogeneous_tabs(GTK_NOTEBOOK(d->notebook), FALSE);
++ gtk_container_add(GTK_CONTAINER(dialog_main), vbox);
++ gtk_container_add(GTK_CONTAINER(vbox), d->notebook);
++ gtk_signal_connect(GTK_OBJECT(button_reset), "clicked",
++ GTK_SIGNAL_FUNC(DillocfgWin_callback_reset), d);
++ gtk_signal_connect(GTK_OBJECT(button_reload), "clicked",
++ GTK_SIGNAL_FUNC(DillocfgWin_callback_reload), d);
++ gtk_signal_connect(GTK_OBJECT(button_save), "clicked",
++ GTK_SIGNAL_FUNC(DillocfgWin_callback_save), d);
++ gtk_signal_connect(GTK_OBJECT(button_quit), "clicked",
++ GTK_SIGNAL_FUNC(DillocfgWin_free), d);
++ gtk_box_set_spacing(GTK_BOX(button_hbox), 5);
++ gtk_container_add(GTK_CONTAINER(button_hbox), button_reset);
++ gtk_container_add(GTK_CONTAINER(button_hbox), button_reload);
++ gtk_container_add(GTK_CONTAINER(button_hbox), button_save);
++ gtk_container_add(GTK_CONTAINER(button_hbox), button_quit);
++ gtk_box_pack_end(GTK_BOX(vbox), button_hbox, FALSE, FALSE, 5);
++
++ d->list = NULL;
++ d->interface = DillocfgInterface_new(d, _("Interface"));
++ d->font = DillocfgFont_new(d, _(" Font "));
++ d->color = DillocfgColor_new(d, _(" Color "));
++ d->network = DillocfgNetwork_new(d, _(" Network "));
++#ifndef DISABLE_TABS
++ d->tab = DillocfgTab_new(d, _(" Tab "));
++#endif
++ d->cookie = NULL;//DillocfgCookie_new(d, _(" Cookie "));
++ d->other = DillocfgOther_new(d, _(" Other "));
++
++ gtk_widget_show_all(dialog_main);
++ return d;
++}
++
++void DillocfgWin_init(DillocfgWin *d, gboolean use_default) {
++ g_list_foreach(d->list, (GFunc)Option_init, (gpointer)use_default);
++}
++
++void DillocfgWin_free(GtkWidget *widget, DillocfgWin *d) {
++ g_list_foreach(d->list, (GFunc)Option_free, (gpointer)&d->list);
++ g_free(d->interface);
++ g_free(d->font);
++ g_free(d->color);
++ g_free(d->network);
++#ifndef DISABLE_TABS
++ g_free(d->tab);
++#endif
++ g_free(d->cookie);
++ g_free(d->other);
++ g_list_free(d->list);
++ g_free(d);
++ gtk_main_quit();
++}
++
++#ifndef DISABLE_TABS
++DillocfgTab *DillocfgTab_new(DillocfgWin *w, const gchar *label) {
++ DillocfgTab *t = g_new(DillocfgTab, 1);
++ gint x, y;
++ GtkWidget *vbox = gtk_vbox_new(FALSE, 0);
++ GtkWidget *table = gtk_table_new(4, 2, FALSE);
++ GtkWidget *table2 = gtk_table_new(2, 1, FALSE);
++
++ gtk_table_set_homogeneous(GTK_TABLE(table), TRUE);
++ gtk_table_set_homogeneous(GTK_TABLE(table2), TRUE);
++ gtk_container_add(GTK_CONTAINER(vbox), table);
++ gtk_container_add(GTK_CONTAINER(vbox), table2);
++ x = 0; y = 0;
++ t->tab_bar_homogeneous = Option_new(TOKEN_TAB_BAR_HOMOGENEOUS, &w->list, table, x, y++);
++ t->tab_bar_scroller = Option_new(TOKEN_TAB_BAR_SCROLLER, &w->list, table, x, y++);
++ t->tab_bar_show_fullscreen = Option_new(TOKEN_TAB_BAR_SHOW_FULLSCREEN, &w->list, table, x, y++);
++ t->tab_close_middle_click = Option_new(TOKEN_TAB_CLOSE_MIDDLE_CLICK, &w->list, table, x, y++);
++ x++; y = 0;
++ t->tab_bar_show_single_tab = Option_new(TOKEN_TAB_BAR_SHOW_SINGLE_TAB, &w->list, table, x, y++);
++ t->tab_instead_of_window = Option_new(TOKEN_TAB_INSTEAD_OF_WINDOW, &w->list, table, x, y++);
++ t->tab_load_in_background = Option_new(TOKEN_TAB_LOAD_IN_BACKGROUND, &w->list, table, x, y++);
++ t->tab_title_compress
++ = Option_new(TOKEN_TAB_TITLE_COMPRESS, &w->list, table, x, y++);
++ x = 0; y = 0;
++ t->compress_vowels = Option_new(TOKEN_COMPRESS_VOWELS, &w->list, table2, x, y++);
++ t->compress_common_prefixes = Option_new(TOKEN_COMPRESS_COMMON_PREFIXES, &w->list, table2, x, y++);
++ gtk_notebook_append_page(GTK_NOTEBOOK(w->notebook), vbox, gtk_label_new(label));
++ return t;
++}
++
++#endif
++
++DillocfgOther *DillocfgOther_new(DillocfgWin *w, const gchar *label) {
++ DillocfgOther *g = g_new(DillocfgOther, 1);
++ gint x, y;
++ GtkWidget *vbox = gtk_vbox_new(FALSE, 0);
++ GtkWidget *table = gtk_table_new(9, 1, FALSE);
++
++ gtk_table_set_homogeneous(GTK_TABLE(table), TRUE);
++ gtk_container_add(GTK_CONTAINER(vbox), table);
++ x = 0; y = 0;
++ g->w3c_plus_heuristics
++ = Option_new(TOKEN_W3C_PLUS_HEURISTICS, &w->list, table, x, y++);
++ g->use_dicache = Option_new(TOKEN_USE_DICACHE, &w->list, table, x, y++);
++ g->focus_location_on_new
++ = Option_new(TOKEN_FOCUS_LOCATION_ON_NEW, &w->list, table, x, y++);
++ g->enterpress_forces_submit
++ = Option_new(TOKEN_ENTERPRESS_FORCES_SUBMIT, &w->list, table, x, y++);
++ g->generate_submit = Option_new(TOKEN_GENERATE_SUBMIT, &w->list, table, x, y++);
++ g->limit_text_width = Option_new(TOKEN_LIMIT_TEXT_WIDTH, &w->list, table, x, y++);
++ g->search_url = Option_new(TOKEN_SEARCH_URL, &w->list, table, x, y++);
++ g->search_charset = Option_new(TOKEN_SEARCH_CHARSET, &w->list, table, x, y++);
++ g->accept_language = Option_new(TOKEN_ACCEPT_LANGUAGE, &w->list, table, x, y++);
++ g->show_msg = Option_new(TOKEN_SHOW_MSG, &w->list, table, x, y++);
++ g->show_extra_warnings = Option_new(TOKEN_SHOW_EXTRA_WARNINGS, &w->list, table, x, y++);
++ gtk_notebook_append_page(GTK_NOTEBOOK(w->notebook), vbox, gtk_label_new(label));
++ return g;
++}
++
++DillocfgInterface *DillocfgInterface_new(DillocfgWin *w, const gchar *label) {
++ DillocfgInterface *di = g_new(DillocfgInterface, 1);
++ gint x, y;
++ GtkWidget *vbox = gtk_vbox_new(FALSE, 0);
++ GtkWidget *table = gtk_table_new(10, 2, FALSE);
++
++ gtk_table_set_homogeneous (GTK_TABLE(table), FALSE);
++ gtk_container_add(GTK_CONTAINER(vbox), table);
++ x = 0; y = 0;
++ di->geometry = Option_new(TOKEN_GEOMETRY, &w->list, table, x, y++);
++ di->panel_size = Option_new(TOKEN_PANEL_SIZE, &w->list, table, x, y++);
++ di->show_back = Option_new(TOKEN_SHOW_BACK, &w->list, table, x, y++);
++ di->show_forw = Option_new(TOKEN_SHOW_FORW, &w->list, table, x, y++);
++ di->show_bookmarks = Option_new(TOKEN_SHOW_BOOKMARKS, &w->list, table, x, y++);
++ di->show_clear_url = Option_new(TOKEN_SHOW_CLEAR_URL, &w->list, table, x, y++);
++ di->show_home = Option_new(TOKEN_SHOW_HOME, &w->list, table, x, y++);
++ di->show_menubar = Option_new(TOKEN_SHOW_MENUBAR, &w->list, table, x, y++);
++ di->show_progress_box = Option_new(TOKEN_SHOW_PROGRESS_BOX, &w->list, table, x, y++);
++ di->show_reload = Option_new(TOKEN_SHOW_RELOAD, &w->list, table, x, y++);
++ x++; y = 0;
++ di->show_save = Option_new(TOKEN_SHOW_SAVE, &w->list, table, x, y++);
++ di->show_stop = Option_new(TOKEN_SHOW_STOP, &w->list, table, x, y++);
++ di->show_tooltip = Option_new(TOKEN_SHOW_TOOLTIP, &w->list, table, x, y++);
++ di->show_url = Option_new(TOKEN_SHOW_URL, &w->list, table, x, y++);
++ di->show_search = Option_new(TOKEN_SHOW_SEARCH, &w->list, table, x, y++);
++ di->small_icons = Option_new(TOKEN_SMALL_ICONS, &w->list, table, x, y++);
++ di->fullwindow_start = Option_new(TOKEN_FULLWINDOW_START, &w->list, table, x, y++);
++ di->transient_dialogs = Option_new(TOKEN_TRANSIENT_DIALOGS, &w->list, table, x, y++);
++ di->popup_dialogs = Option_new(TOKEN_POPUP_DIALOGS, &w->list, table, x, y++);
++ di->show_popup_navigation = Option_new(TOKEN_SHOW_POPUP_NAVIGATION, &w->list, table, x, y++);
++ gtk_notebook_append_page(GTK_NOTEBOOK(w->notebook), vbox, gtk_label_new(label));
++ return di;
++}
++
++DillocfgFont *DillocfgFont_new(DillocfgWin *w, const gchar *label) {
++ DillocfgFont *r = g_new(DillocfgFont, 1);
++ gint x, y;
++ GtkWidget *vbox = gtk_vbox_new(FALSE, 5);
++ GtkWidget *table = gtk_table_new(4, 1, FALSE);
++ GtkWidget *table2 = gtk_table_new(1, 2, FALSE);
++
++ gtk_table_set_homogeneous (GTK_TABLE(table), TRUE);
++ gtk_table_set_row_spacings(GTK_TABLE(table), 5);
++ gtk_table_set_homogeneous (GTK_TABLE(table2), TRUE);
++ //gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, FALSE, 5);
++ //gtk_box_pack_start(GTK_BOX(vbox), table2, TRUE, FALSE, 5);
++ gtk_container_add(GTK_CONTAINER(vbox), table);
++ gtk_container_add(GTK_CONTAINER(vbox), table2);
++ x=0; y=0;
++#ifdef DISABLE_ANTI_ALIAS
++ r->vw_fontname = Option_new(TOKEN_VW_FONT, &w->list, table, x, y++);
++#else
++ r->vw_aafontname = Option_new(TOKEN_VW_AAFONT, &w->list, table, x, y++);
++#endif
++#ifdef DISABLE_ANTI_ALIAS
++ r->fw_fontname = Option_new(TOKEN_FW_FONT, &w->list, table, x, y++);
++#else
++ r->fw_aafontname = Option_new(TOKEN_FW_AAFONT, &w->list, table, x, y++);
++#endif
++ r->font_sizes = Option_new(TOKEN_FONT_SIZES, &w->list, table, x, y++);
++ r->font_factor = Option_new(TOKEN_FONT_FACTOR, &w->list, table, x, y++);
++ x=0; y=0;
++ r->use_oblique = Option_new(TOKEN_USE_OBLIQUE, &w->list, table2, x, y++);
++ x++; y=0;
++ r->limit_font_decoration = Option_new(TOKEN_LIMIT_FONT_DECORATION, &w->list, table2, x, y++);
++
++ gtk_notebook_append_page(GTK_NOTEBOOK(w->notebook), vbox, gtk_label_new(label));
++ return r;
++}
++
++DillocfgColor *DillocfgColor_new(DillocfgWin *w, const gchar *label) {
++ DillocfgColor *c = g_new(DillocfgColor, 1);
++ gint x, y;
++ GtkWidget *vbox = gtk_vbox_new(FALSE, 0);
++ GtkWidget *table = gtk_table_new(3, 1, FALSE);
++ GtkWidget *table2 = gtk_table_new(2, 2, TRUE);
++
++ gtk_table_set_homogeneous (GTK_TABLE(table), TRUE);
++ gtk_table_set_homogeneous (GTK_TABLE(table2), FALSE);
++ gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 5);
++ gtk_box_pack_start(GTK_BOX(vbox), table2, FALSE, FALSE, 5);
++ x = 0; y = 0;
++ c->force_my_colors = Option_new(TOKEN_FORCE_MY_COLORS, &w->list, table, x, y++);
++ c->contrast_visited_color
++ = Option_new(TOKEN_CONTRAST_VISITED_COLOR, &w->list, table, x, y++);
++ c->allow_white_bg = Option_new(TOKEN_ALLOW_WHITE_BG, &w->list, table, x, y++);
++ x = 0; y = 0;
++ c->link_color = Option_new(TOKEN_LINK_COLOR, &w->list, table2, x, y++);
++ c->bg_color = Option_new(TOKEN_BG_COLOR, &w->list, table2, x, y++);
++ x++; y = 0;
++ c->visited_color = Option_new(TOKEN_VISITED_COLOR, &w->list, table2, x, y++);
++ c->text_color = Option_new(TOKEN_TEXT_COLOR, &w->list, table2, x, y++);
++
++ gtk_notebook_append_page(GTK_NOTEBOOK(w->notebook), vbox, gtk_label_new(label));
++ return c;
++}
++
++DillocfgNetwork *DillocfgNetwork_new(DillocfgWin *w, const gchar *label) {
++ DillocfgNetwork *n = g_new(DillocfgNetwork, 1);
++ gint x, y;
++ GtkWidget *vbox = gtk_vbox_new(FALSE, 0);
++ GtkWidget *table = gtk_table_new(10, 2, FALSE);
++
++ gtk_container_add(GTK_CONTAINER(vbox), table);
++ x = 0; y = 0;
++ n->user_agent = Option_new(TOKEN_USER_AGENT, &w->list, table, x, y++);
++ n->home = Option_new(TOKEN_HOME, &w->list, table, x, y++);
++ n->start_page = Option_new(TOKEN_START_PAGE, &w->list, table, x, y++);;
++ n->http_proxy = Option_new(TOKEN_PROXY, &w->list, table, x, y++);;
++ n->http_proxyuser = Option_new(TOKEN_PROXYUSER, &w->list, table, x, y++);;
++ n->no_proxy = Option_new(TOKEN_NOPROXY, &w->list, table, x, y++);;
++ n->send_referer = Option_new(TOKEN_SEND_REFERER, &w->list, table, x, y++);;
++ gtk_notebook_append_page(GTK_NOTEBOOK(w->notebook), vbox, gtk_label_new(label));
++ return n;
++}
++
++DillocfgCookie *DillocfgCookie_new(DillocfgWin *w, const gchar *label) {
++ DillocfgCookie *c = g_new(DillocfgCookie, 1);
++ gint x, y;
++ GtkWidget *vbox = gtk_vbox_new(FALSE, 0);
++ GtkWidget *hbox = gtk_hbox_new(FALSE, 0);
++ GtkWidget *table = gtk_table_new(1, 1, TRUE);
++ GtkWidget *clist = gtk_clist_new(2);
++ GtkWidget *add_btn= gtk_button_new_with_label(_("Add"));
++ GtkWidget *del_btn= gtk_button_new_with_label(_("Delete"));
++ gtk_table_set_homogeneous(GTK_TABLE(table), TRUE);
++ gtk_container_add(GTK_CONTAINER(hbox), add_btn);
++ gtk_container_add(GTK_CONTAINER(hbox), del_btn);
++ x = 0; y = 0;
++ c->cookie_default = Option_new(TOKEN_COOKIE_DEFAULT, &w->list, table, x, y++);
++ gtk_clist_set_column_title(GTK_CLIST(clist), 0, _("Address"));
++ gtk_clist_set_column_title(GTK_CLIST(clist), 1, _("Rule"));
++ gtk_clist_column_titles_show(GTK_CLIST(clist));
++ gtk_clist_set_column_width(GTK_CLIST(clist), 0, 200);
++ /*
++ gtk_clist_insert(GTK_CLIST(clist), 1, NULL);
++ gtk_clist_set_text(GTK_CLIST(clist), 0, 0, "DEFAULT");
++ gtk_clist_set_text(GTK_CLIST(clist), 0, 1, "ACCEPT");
++ */
++ gtk_widget_set_usize(table, 320, 32);
++ gtk_box_pack_start(GTK_BOX(vbox), clist, TRUE, TRUE, 10);
++ gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 10);
++ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 10);
++ //gtk_table_attach_defaults(GTK_TABLE(table), clist, x, x + 1, y, y + 1);
++ gtk_notebook_append_page(GTK_NOTEBOOK(w->notebook), vbox, gtk_label_new(label));
++ return c;
++}
++
++#define BUFSIZE 4096
++void ReadUserconfig(DillocfgWin *d) {
++ FILE *usercfg, *usercookiecfg;
++ gchar *filepass = g_strconcat(g_get_home_dir(), "/", USER_CFG, NULL);
++ char buf[BUFSIZE], name[BUFSIZE], value[BUFSIZE];
++ gchar *locale = g_strdup (setlocale (LC_NUMERIC, NULL));;
++
++ setlocale (LC_NUMERIC, "C");
++ if (!(usercfg = fopen(filepass, "r"))) {
++ g_print(_("Read failed <%s>\n"), filepass);
++ return;
++ }
++ g_free(filepass);
++ filepass = g_strconcat(g_get_home_dir(), "/", USER_COOKIE_CFG, NULL);
++ if (!(usercookiecfg = fopen(filepass, "r"))) {
++ g_print(_("Read failed <%s>\n"), filepass);
++ return;
++ }
++ g_free(filepass);
++
++ /* First, set default data. */
++ DillocfgWin_init(d, TRUE);
++
++ /* Read dillorc. */
++ while (fgets(buf, BUFSIZE, usercfg)) {
++ /* Parse name and value. */
++ int i = 0, j = 0, k = 0;
++ guint token;
++ SKIPSPACE(buf, i);
++ if (buf[i] == '#') continue;
++ SKIPSPACE(buf, i);
++ while (!IS_LINE_END(buf[i]) && buf[i] != '=' && !isspace(buf[i]))
++ name[j++] = buf[i++];
++ name[j] = '\0';
++ SKIPSPACE(buf, i);
++ if (buf[i++] != '=') continue;
++ SKIPSPACE(buf, i);
++ if (buf[i] == '"') {
++ i++;
++ while (!IS_LINE_END(buf[i]) && buf[i] != '"') value[k++] = buf[i++];
++ } else
++ while (!IS_LINE_END(buf[i]) && !isspace(buf[i])) value[k++] = buf[i++];
++ value[k] = '\0';
++ if (strlen(value) == 0) continue;
++ token = name2token(name);
++ /* Set value */
++ Option_set(get_token_object(token), value);
++ }
++
++ /* Read cookiesrc */
++ while (fgets(buf, BUFSIZE, usercookiecfg)) {
++ /* Parse name and value. */
++ int i = 0, j = 0, k = 0;
++ guint token;
++ SKIPSPACE(buf, i);
++ if (buf[i] == '#') continue;
++ SKIPSPACE(buf, i);
++ while (!IS_LINE_END(buf[i]) && !isspace(buf[i])) name[j++] = buf[i++];
++ name[j] = '\0';
++ SKIPSPACE(buf, i);
++ while (!IS_LINE_END(buf[i]) && !isspace(buf[i])) value[k++] = buf[i++];
++ value[k] = '\0';
++ if (strlen(value) == 0) continue;
++ if (strcmp(name, "DEFAULT") == 0)
++ token = TOKEN_COOKIE_DEFAULT;
++ else
++ token = TOKEN_COOKIE;
++ /* Set value */
++ Option_set(get_token_object(token), value);
++ }
++ fclose(usercfg);
++ fclose(usercookiecfg);
++ setlocale(LC_NUMERIC, locale);
++ DillocfgWin_init(d, FALSE);
++ g_free (locale);
++}
++
++void DillocfgWin_callback_reset(GtkButton *button, gpointer user_data) {
++ DillocfgWin *d = (DillocfgWin *)user_data;
++ DillocfgWin_init(d, TRUE);
++ modified_ = TRUE;
++}
++
++void DillocfgWin_callback_reload(GtkButton *button, gpointer user_data) {
++ DillocfgWin *d = (DillocfgWin *)user_data;
++ ReadUserconfig(d);
++ modified_ = FALSE;
++}
++
++void WriteUserconfig(DillocfgWin *d) {
++ FILE *usercfg;
++ //FILE *usercookiecfg;
++ GList *list;
++ gchar *filepass = g_strconcat(g_get_home_dir(), "/", USER_CFG, NULL);
++
++ if (!(usercfg = fopen(filepass, "w"))) {
++ g_print(_("can't write <%s>\n"), filepass);
++ return;
++ }
++ g_free(filepass);
++ fprintf(usercfg, "#This file is written by Dillocfg\n");
++#if 0
++ filepass = g_strconcat(g_get_home_dir(), "/", USER_COOKIE_CFG, NULL);
++ if (!(usercookiecfg = fopen(filepass, "w"))) {
++ g_print(_("can't write <%s>\n"), filepass);
++ fclose(usercfg);
++ return;
++ }
++ g_free(filepass);
++ fprintf(usercookiecfg, "#This file is written by Dillocfg\n");
++#endif
++ for (list = g_list_first(d->list); list; list = g_list_next(list)) {
++ Option *o = (Option *)list->data;
++ if (get_token_type(o->base.token) == COOKIE)
++ ;//Option_get(o, usercookiecfg);
++ else
++ Option_get(o, usercfg);
++ }
++ fclose(usercfg);
++ //fclose(usercookiecfg);
++}
++
++void DillocfgWin_callback_save(GtkButton *button, gpointer user_data) {
++ DillocfgWin *d = (DillocfgWin *)user_data;
++ WriteUserconfig(d);
++ modified_ = FALSE;
++}
++
++/* vim: set ts=3 sw=3 sts=3 expandtab:*/
+diff -pruN dillo-0.8.6/config/dillocfg.h dillo-0.8.6-i18n-misc-20060709/config/dillocfg.h
+--- dillo-0.8.6/config/dillocfg.h 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/config/dillocfg.h 2006-05-16 01:21:16.000000000 +0900
+@@ -0,0 +1,126 @@
++#ifndef __DILLOCFG_GTK_H__
++#define __DILLOCFG_GTK_H__
++
++#include <gtk/gtk.h>
++
++#include "../config.h"
++#include "dillocfg_option.h"
++
++#define WIDTH 640
++#define HEIGHT 370
++#define USER_CFG ".dillo/dillorc"
++#define USER_COOKIE_CFG ".dillo/cookiesrc"
++
++#ifdef __cplusplus
++extern "C" {
++#endif /* __cplusplus */
++
++#ifndef DISABLE_TABS
++ typedef struct {
++ Option *tab_bar_homogeneous;
++ Option *tab_bar_scroller;
++ Option *tab_bar_show_fullscreen;
++ Option *tab_bar_show_single_tab;
++ Option *tab_instead_of_window;
++ Option *tab_load_in_background;
++ Option *tab_close_middle_click;
++ Option *compress_vowels;
++ Option *compress_common_prefixes;
++ Option *tab_title_compress;
++ } DillocfgTab;
++#endif
++
++ typedef struct {
++ Option *w3c_plus_heuristics;
++ Option *use_dicache;
++ Option *focus_location_on_new;
++ Option *enterpress_forces_submit;
++ Option *limit_text_width;
++ Option *generate_submit;
++ Option *search_url;
++ Option *search_charset;
++ Option *accept_language;
++ Option *show_msg;
++ Option *show_extra_warnings;
++ } DillocfgOther;
++
++ typedef struct {
++ Option *geometry;
++ Option *panel_size;
++ Option *show_back;
++ Option *show_bookmarks;
++ Option *show_clear_url;
++ Option *show_forw;
++ Option *show_home;
++ Option *show_menubar;
++ Option *show_popup_navigation;
++ Option *show_progress_box;
++ Option *show_reload;
++ Option *show_save;
++ Option *show_stop;
++ Option *show_tooltip;
++ Option *show_url;
++ Option *show_search;
++ Option *small_icons;
++ Option *fullwindow_start;
++ Option *transient_dialogs;
++ Option *popup_dialogs;
++ } DillocfgInterface;
++
++ typedef struct {
++ Option *font_sizes;
++ Option *font_factor;
++ Option *vw_fontname;
++ Option *fw_fontname;
++ Option *vw_aafontname;
++ Option *fw_aafontname;
++ Option *use_oblique;
++ Option *limit_font_decoration;
++ } DillocfgFont;
++
++ typedef struct {
++ Option *force_my_colors;
++ Option *contrast_visited_color;
++ Option *allow_white_bg;
++ Option *link_color;
++ Option *bg_color;
++ Option *visited_color;
++ Option *text_color;
++ } DillocfgColor;
++
++ typedef struct {
++ Option *user_agent;
++ Option *home;
++ Option *start_page;
++ Option *http_proxy;
++ Option *http_proxyuser;
++ Option *no_proxy;
++ Option *send_referer;
++ } DillocfgNetwork;
++
++ typedef struct {
++ Option *cookie_default;
++ } DillocfgCookie;
++
++ typedef struct {
++ GtkWidget *notebook;
++ GList *list;
++ DillocfgInterface *interface;
++ DillocfgFont *font;
++ DillocfgColor *color;
++ DillocfgNetwork *network;
++#ifndef DISABLE_TABS
++ DillocfgTab *tab;
++#endif
++ DillocfgCookie *cookie;
++ DillocfgOther *other;
++ } DillocfgWin;
++
++#ifdef __cplusplus
++}
++#endif /* __cplusplus */
++
++
++#endif /* __DILLOCFG_GTK_H__ */
++
++/* vim: set ts=3 sw=3 sts=3 expandtab:*/
+diff -pruN dillo-0.8.6/config/dillocfg_option.c dillo-0.8.6-i18n-misc-20060709/config/dillocfg_option.c
+--- dillo-0.8.6/config/dillocfg_option.c 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/config/dillocfg_option.c 2006-05-16 01:21:16.000000000 +0900
+@@ -0,0 +1,688 @@
++/*
++ * File: dillocfg-gtk_option.c
++ *
++ * Copyright (C) 2003 Kiyo <kiyo@teki.jpn.ph>
++ *
++ * 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 of the License, or
++ * (at your option) any later version.
++ */
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <ctype.h>
++#include <string.h>
++#include <gtk/gtk.h>
++
++#include "../config.h"
++#include "../src/intl.h"
++#include "dillocfg_option.h"
++#include "dillocfg_token.h"
++
++/* Private class. */
++typedef struct {
++ OptionBase base;
++ GtkWidget *button;
++ gboolean value;
++ gboolean default_value;
++} CheckOption;
++
++typedef struct {
++ OptionBase base;
++ GtkWidget *hbox;
++ GtkWidget *entry;
++ gchar *value;
++ gchar *default_value;
++ gboolean allow_space;
++} EntryOption;
++
++typedef struct {
++ OptionBase base;
++ GtkWidget *hbox;
++ GtkWidget *combo;
++ gchar *value;
++ gchar *default_value;
++} ComboOption;
++
++typedef ComboOption FontOption;
++
++typedef struct {
++ OptionBase base;
++ GtkWidget *hbox;
++ GtkWidget *option_menu;
++ gchar **items;
++ gint value;
++ gint default_value;
++} SelectOption;
++
++typedef struct {
++ OptionBase base;
++ GtkWidget *hbox;
++ GtkWidget *label;
++ GdkImage *image;
++ GtkWidget *button_image;
++ GtkWidget *dialog;
++ GdkColor *value;
++ GdkColor *default_value;
++} ColorOption;
++
++typedef struct {
++ OptionBase base;
++ GtkWidget *hbox;
++ GtkWidget *button;
++ double value;
++ double default_value;
++ gboolean is_integer;
++} SpinOption;
++
++typedef struct {
++ gint x;
++ gint y;
++} Geometry;
++
++typedef struct {
++ OptionBase base;
++ GtkWidget *hbox;
++ GtkWidget *button;
++ GtkWidget *button2;
++ Geometry value;
++ Geometry default_value;
++} GeometryOption;
++
++CheckOption *CheckOption_new(guint token,
++ GtkWidget *table, gint x, gint y);
++void CheckOption_init(CheckOption *o, gboolean use_default);
++void CheckOption_set(CheckOption *o, gchar *value);
++gchar *CheckOption_get(CheckOption *o);
++void CheckOption_free(CheckOption *o);
++
++EntryOption *EntryOption_new(guint token,
++ GtkWidget *table, gint x, gint y);
++void EntryOption_init(EntryOption *o, gboolean use_default);
++void EntryOption_set(EntryOption *o, gchar *value);
++gchar *EntryOption_get(EntryOption *o);
++void EntryOption_free(EntryOption *o);
++
++ComboOption *ComboOption_new(guint token,
++ GtkWidget *table, gint x, gint y);
++void ComboOption_init(ComboOption *o, gboolean use_default);
++void ComboOption_set(ComboOption *o, gchar *value);
++gchar *ComboOption_get(ComboOption *o);
++void ComboOption_free(ComboOption *o);
++
++FontOption *FontOption_new(guint token,
++ GtkWidget *table, gint x, gint y);
++
++SelectOption *SelectOption_new(guint token,
++ GtkWidget *table, gint x, gint y);
++void SelectOption_init(SelectOption *o, gboolean use_default);
++void SelectOption_set(SelectOption *o, gchar *value);
++gchar *SelectOption_get(SelectOption *o);
++void SelectOption_free(SelectOption *o);
++
++ColorOption *ColorOption_new(guint token,
++ GtkWidget *table, gint x, gint y);
++void ColorOption_init(ColorOption *o, gboolean use_default);
++void ColorOption_set(ColorOption *o, gchar *value);
++gchar *ColorOption_get(ColorOption *o);
++void ColorOption_free(ColorOption *o);
++
++SpinOption *SpinOption_new(guint token,
++ GtkWidget *table, gint x, gint y);
++void SpinOption_init(SpinOption *o, gboolean use_default);
++void SpinOption_set(SpinOption *o, gchar *value);
++gchar *SpinOption_get(SpinOption *o);
++void SpinOption_free(SpinOption *o);
++
++GeometryOption *GeometryOption_new(guint token,
++ GtkWidget *table, gint x, gint y);
++void GeometryOption_init(GeometryOption *o, gboolean use_default);
++void GeometryOption_set(GeometryOption *o, gchar *value);
++gchar *GeometryOption_get(GeometryOption *o);
++void GeometryOption_free(SpinOption *o);
++
++
++Option *Option_new(guint token, GList **list,
++ GtkWidget *table, gint x, gint y) {
++ guint type = get_token_type(token);
++ Option *o;
++ switch (type) {
++ case CHECK_OPTION:
++ o = (Option *)CheckOption_new(token, table, x, y);
++ break;
++ case ENTRY_OPTION:
++ o = (Option *)EntryOption_new(token, table, x, y);
++ break;
++ case COMBO_OPTION:
++ o = (Option *)ComboOption_new(token, table, x, y);
++ break;
++ case FONT_OPTION:
++ o = (Option *)FontOption_new(token, table, x, y);
++ break;
++ case SELECT_OPTION:
++ case COOKIE:
++ o = (Option *)SelectOption_new(token, table, x, y);
++ break;
++ case COLOR_OPTION:
++ o = (Option *)ColorOption_new(token, table, x, y);
++ break;
++ case SPIN_OPTION:
++ o = (Option *)SpinOption_new (token, table, x, y);
++ break;
++ case GEOMETRY_OPTION:
++ o = (Option *)GeometryOption_new(token, table, x, y);
++ break;
++ default:
++ o = (Option *)NULL;
++ }
++ set_token_object(token, o);
++ *list = g_list_append(*list, o);
++ return o;
++}
++
++void Option_init(Option *o, gboolean use_default) {
++ return ((o) ? o->base.init(o, use_default) : NULL);
++}
++
++void Option_set(Option *o, gchar *value) {
++ return ((o) ? o->base.set(o, value) : NULL);
++}
++
++gchar *Option_get(Option *o, FILE *fp) {
++ if (!o) return NULL;
++ if (fp && o->base.get(o)) fprintf(fp, "%s\n", o->base.get(o));
++ return ((o) ? o->base.get(o) : NULL);
++}
++
++void Option_free(Option *o, GList **list) {
++ return ((o) ? o->base.free(o) : NULL);
++}
++
++CheckOption *CheckOption_new(guint token, GtkWidget *table, gint x, gint y) {
++ CheckOption *o = g_new(CheckOption, 1);
++
++ o->base.token = token;
++ o->base.init = CheckOption_init;
++ o->base.set = CheckOption_set;
++ o->base.get = CheckOption_get;
++ o->base.free = CheckOption_free;
++ o->button = gtk_check_button_new_with_label(_(get_token_label(token)));
++ o->base.set(o, (gchar *)get_token_value(token));
++ o->default_value = o->value;
++ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(o->button), o->value);
++ gtk_table_attach_defaults(GTK_TABLE(table), o->button, x, x + 1, y, y + 1);
++ return o;
++}
++
++void CheckOption_init(CheckOption *o, gboolean use_default) {
++ if (use_default) o->value = o->default_value;
++ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(o->button), o->value);
++}
++
++void CheckOption_set(CheckOption *o, gchar *value) {
++ if (value)
++ o->value = (strcmp(value, "YES") == 0);
++}
++
++gchar *CheckOption_get(CheckOption *o) {
++ return g_strdup_printf("%s=%s", get_token_name(o->base.token),
++ (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(o->button)))
++ ? "YES" : "NO");
++}
++
++void CheckOption_free(CheckOption *o) {
++ g_free(o);
++}
++
++EntryOption *EntryOption_new(guint token,
++ GtkWidget *table, gint x, gint y) {
++ EntryOption *o = g_new(EntryOption, 1);
++ GtkWidget *label = gtk_label_new(_(get_token_label(token)));
++
++ o->base.token = token;
++ o->base.init = EntryOption_init;
++ o->base.set = EntryOption_set;
++ o->base.get = EntryOption_get;
++ o->base.free = EntryOption_free;
++ o->hbox = gtk_hbox_new(FALSE, 0);
++ o->entry = gtk_entry_new();
++ o->value = NULL;
++ o->base.set(o, (gchar *)get_token_value(token));
++ o->default_value = g_strdup(o->value);
++ o->allow_space = (gboolean)get_token_option(token);
++ //gtk_box_set_homogeneous(GTK_BOX(o->hbox), TRUE);
++ gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
++ if (o->value) gtk_entry_set_text(GTK_ENTRY(o->entry), o->value);
++ gtk_box_pack_start(GTK_BOX(o->hbox), label, FALSE, FALSE, 10);
++ gtk_box_pack_end(GTK_BOX(o->hbox), o->entry, TRUE, TRUE, 5);
++ gtk_table_attach_defaults(GTK_TABLE(table), o->hbox, x, x + 1, y, y + 1);
++ return o;
++}
++
++void EntryOption_init(EntryOption *o, gboolean use_default) {
++ if (use_default) {
++ g_free(o->value);
++ o->value = g_strdup(o->default_value);
++ }
++ if (o->value) gtk_entry_set_text(GTK_ENTRY(o->entry), o->value);
++}
++
++void EntryOption_set(EntryOption *o, gchar *value) {
++ g_free(o->value);
++ o->value = g_strdup(value);
++}
++
++gchar *EntryOption_get(EntryOption *o) {
++ gchar *format;
++ gchar *value = gtk_entry_get_text(GTK_ENTRY(o->entry));
++
++ if (!value) return NULL;
++ if (strcmp(value, "") == 0) return NULL;
++ if (o->allow_space) format = "%s=\"%s\"";
++ else format = "%s=%s";
++ return g_strdup_printf(format, get_token_name(o->base.token),
++ value);
++}
++
++void EntryOption_free(EntryOption *o) {
++ g_free(o);
++}
++
++ComboOption *ComboOption_new(guint token, GtkWidget *table, gint x, gint y) {
++ ComboOption *o = g_new(ComboOption, 1);
++ GList *list = NULL;
++ gchar **items = NULL;
++ gint i;
++
++ o->base.token = token;
++ o->base.init = ComboOption_init;
++ o->base.set = ComboOption_set;
++ o->base.get = ComboOption_get;
++ o->base.free = ComboOption_free;
++ o->hbox = gtk_hbox_new(FALSE, 0);
++ o->combo = gtk_combo_new();
++ items = (gchar **)get_token_option(token);
++ for (i = 0; items[i]; i++)
++ list = g_list_append(list, items[i]);
++ o->value = NULL;
++ gtk_combo_set_popdown_strings(GTK_COMBO(o->combo), list);
++ g_free(list);
++ o->base.set(o, (gchar *)get_token_value(token));
++ o->default_value = g_strdup(o->value);
++ if (o->value) gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (o->combo)->entry), o->value);
++ gtk_box_pack_start(GTK_BOX(o->hbox),
++ gtk_label_new(_(get_token_label(token))), FALSE, FALSE, 5);
++ gtk_box_pack_start(GTK_BOX(o->hbox), o->combo, TRUE, TRUE, 5);
++ gtk_table_attach_defaults(GTK_TABLE(table), o->hbox, x, x + 1, y, y + 1);
++ return o;
++}
++
++void ComboOption_init(ComboOption *o, gboolean use_default) {
++ if (use_default) {
++ g_free(o->value);
++ o->value = g_strdup(o->default_value);
++ }
++ if (o->value) gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (o->combo)->entry), o->value);
++}
++
++void ComboOption_set(ComboOption *o, gchar *value) {
++ g_free(o->value);
++ o->value = g_strdup(value);
++}
++
++gchar *ComboOption_get(ComboOption *o) {
++ gchar *value = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO (o->combo)->entry));
++
++ if (!value) return NULL;
++ if (strcmp(value, "") == 0) return NULL;
++ return g_strdup_printf("%s=\"%s\"", get_token_name(o->base.token),
++ value);
++}
++
++void ComboOption_free(ComboOption *o) {
++ g_free(o);
++}
++
++/* FontOption class extends ComboOption. */
++FontOption *FontOption_new(guint token, GtkWidget *table, gint x, gint y) {
++ FontOption *o = g_new(FontOption, 1);
++ GList *list = NULL;
++#define MAX_FONT_NAME 1024
++ gchar buf[MAX_FONT_NAME]; //max font name
++ FILE *fp;
++
++ o->base.token = token;
++ o->base.init = ComboOption_init;
++ o->base.set = ComboOption_set;
++ o->base.get = ComboOption_get;
++ o->base.free = ComboOption_free;
++ o->hbox = gtk_hbox_new(FALSE, 0);
++ o->combo = gtk_combo_new();
++#ifdef DISABLE_ANTI_ALIAS
++ fp = popen("xlsfonts -fn \"-*-*\"|cut -d \"-\" -f 2-3|sort|uniq", "r");
++ list = g_list_append(list, "*-*");
++ list = g_list_append(list, "*-gothic");
++#else
++ fp = popen("fc-list|sed \"s/[:|,]/\\n#/g\"|grep -v \"^#\"|sort|uniq", "r");
++ list = g_list_append(list, "serif");
++ list = g_list_append(list, "sans-serif");
++ list = g_list_append(list, "monospace");
++#endif
++ while(fgets(buf, MAX_FONT_NAME, fp)) {
++ g_strchomp(buf);
++ list = g_list_append(list, g_strdup(buf));
++ }
++ pclose(fp);
++ o->value = NULL;
++ if (list) gtk_combo_set_popdown_strings(GTK_COMBO(o->combo), list);
++ g_list_free(list);
++ o->base.set(o, (gchar *)get_token_value(token));
++ o->default_value = g_strdup(o->value);
++ if (o->value) gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (o->combo)->entry), o->value);
++ gtk_box_pack_start(GTK_BOX(o->hbox),
++ gtk_label_new(_(get_token_label(token))), FALSE, FALSE, 5);
++ gtk_box_pack_start(GTK_BOX(o->hbox), o->combo, TRUE, TRUE, 5);
++ gtk_table_attach_defaults(GTK_TABLE(table), o->hbox, x, x + 1, y, y + 1);
++ return o;
++}
++
++SelectOption *SelectOption_new(guint token, GtkWidget *table, gint x, gint y) {
++ SelectOption *o = g_new(SelectOption, 1);
++ GtkWidget *menu = gtk_menu_new ();
++ gint i;
++
++ o->base.token = token;
++ o->base.init = SelectOption_init;
++ o->base.set = SelectOption_set;
++ o->base.get = SelectOption_get;
++ o->base.free = SelectOption_free;
++ o->hbox = gtk_hbox_new(FALSE, 0);
++ o->option_menu = gtk_option_menu_new();
++ o->items = (gchar **)get_token_option(token);
++ for (i = 0; o->items[i]; i++)
++ gtk_menu_append(GTK_MENU(menu),
++ gtk_menu_item_new_with_label(o->items[i]));
++ gtk_option_menu_set_menu (GTK_OPTION_MENU(o->option_menu), menu);
++ o->base.set(o, (gchar *)get_token_value(token));
++ o->default_value = o->value;
++ gtk_option_menu_set_history(GTK_OPTION_MENU(o->option_menu), o->value);
++ gtk_box_pack_start(GTK_BOX(o->hbox),
++ gtk_label_new(_(get_token_label(token))), FALSE, FALSE, 5);
++ gtk_box_pack_start(GTK_BOX(o->hbox), o->option_menu, TRUE, TRUE, 5);
++ gtk_table_attach_defaults(GTK_TABLE(table), o->hbox, x, x + 1, y, y + 1);
++ return o;
++}
++
++void SelectOption_init(SelectOption *o, gboolean use_default) {
++ if (use_default) o->value = o->default_value;
++ gtk_option_menu_set_history (GTK_OPTION_MENU(o->option_menu), o->value);
++}
++
++void SelectOption_set(SelectOption *o, gchar *value) {
++ gint i;
++ for (i = 0; o->items[i]; i++)
++ if (!g_strcasecmp(value, o->items[i]))
++ o->value = i;
++}
++
++gchar *SelectOption_get(SelectOption *o) {
++ GtkWidget *menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(o->option_menu));
++ /* always null...
++ gchar *str = NULL;
++ GtkWidget *item = gtk_menu_get_active(GTK_MENU(menu));
++ GtkWidget *label = GTK_BIN(GTK_MENU_ITEM(item))->child;
++ if(!label) str = g_strdup("");
++ else gtk_label_get(GTK_LABEL(label), &str);
++ */
++ gint i = g_list_index(GTK_MENU_SHELL(menu)->children,
++ GTK_OPTION_MENU(o->option_menu)->menu_item);
++ gchar *format = (get_token_type(o->base.token) == COOKIE) ? "%s %s" : "%s=\"%s\"";
++ return g_strdup_printf(format, get_token_name(o->base.token), o->items[i]);
++}
++
++void SelectOption_free(SelectOption *o) {
++ g_free(o);
++}
++
++void change_color_GdkColor(const double *color, GdkColor* o) {
++ o->red = color[0] * 65535;
++ o->green = color[1] * 65535;
++ o->blue = color[2] * 65535;
++}
++
++void change_color_double(const GdkColor* o, double *color) {
++ color[0] = o->red / (double)65535;
++ color[1] = o->green / (double)65535;
++ color[2] = o->blue / (double)65535;
++}
++
++void ColorDialog_ok(GtkButton *button, gpointer user_data) {
++ ColorOption *o = (ColorOption *)user_data;
++ double color[4];
++ gtk_color_selection_get_color(
++ GTK_COLOR_SELECTION(GTK_COLOR_SELECTION_DIALOG(o->dialog)->colorsel),
++ color);
++ change_color_GdkColor(color, o->value);
++ ColorOption_init(o, FALSE);
++ gtk_widget_destroy(o->dialog);
++}
++
++void ColorDialog_cancel(GtkButton *button, gpointer user_data) {
++ ColorOption *o = (ColorOption *)user_data;
++ gtk_widget_destroy(o->dialog);
++}
++
++void ColorOption_clicked(GtkButton *button, gpointer user_data) {
++ ColorOption *o = (ColorOption *)user_data;
++ gchar *title;
++ double color[4];
++ gtk_label_get(GTK_LABEL(o->label), &title);
++ change_color_double(o->value, color);
++ o->dialog = gtk_color_selection_dialog_new(title);
++ gtk_color_selection_set_color(
++ GTK_COLOR_SELECTION(GTK_COLOR_SELECTION_DIALOG(o->dialog)->colorsel),
++ color);
++ gtk_signal_connect(
++ GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(o->dialog)->ok_button),
++ "clicked", GTK_SIGNAL_FUNC(ColorDialog_ok), o);
++ gtk_signal_connect(
++ GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(o->dialog)->cancel_button),
++ "clicked", GTK_SIGNAL_FUNC(ColorDialog_cancel), o);
++ gtk_widget_hide(GTK_COLOR_SELECTION_DIALOG(o->dialog)->help_button);
++ gtk_widget_show(o->dialog);
++}
++
++#define PREVIEW_SIZE 48
++ColorOption *ColorOption_new(guint token,
++ GtkWidget *table, gint x, gint y) {
++ ColorOption *o = g_new(ColorOption, 1);
++ GtkWidget *button = gtk_button_new();
++
++ o->base.token = token;
++ o->base.init = ColorOption_init;
++ o->base.set = ColorOption_set;
++ o->base.get = ColorOption_get;
++ o->base.free = ColorOption_free;
++ o->hbox = gtk_hbox_new(FALSE, 0);
++ o->label = gtk_label_new(_(get_token_label(token)));
++ o->image = gdk_image_new(GDK_IMAGE_NORMAL,
++ gdk_visual_get_system(), PREVIEW_SIZE, PREVIEW_SIZE);
++ o->button_image = gtk_image_new(o->image, NULL);
++ o->value = g_new(GdkColor, 1);
++ o->base.set(o, (gchar *)get_token_value(token));
++ o->default_value = g_new(GdkColor, 1);
++ o->default_value = gdk_color_copy(o->value);
++ gtk_signal_connect(GTK_OBJECT(button), "clicked",
++ GTK_SIGNAL_FUNC(ColorOption_clicked), o);
++ gtk_container_add(GTK_CONTAINER(button), o->button_image);
++ //gtk_box_set_homogeneous(GTK_BOX(o->hbox), TRUE);
++ gtk_label_set_justify (GTK_LABEL(o->label), GTK_JUSTIFY_LEFT);
++ gtk_box_pack_start(GTK_BOX(o->hbox), button, FALSE, FALSE, 10);
++ gtk_box_pack_start(GTK_BOX(o->hbox), o->label, FALSE, FALSE, 10);
++ gtk_table_attach_defaults(GTK_TABLE(table), o->hbox, x, x + 1, y, y + 1);
++ return o;
++}
++
++guint32 change_color(GdkColor *o) {
++ gdk_colormap_alloc_color(gdk_colormap_get_system(),
++ o, TRUE, TRUE);
++ return o->pixel;
++}
++
++void ColorOption_init(ColorOption *o, gboolean use_default) {
++ int i, j;
++ if (use_default) o->value = gdk_color_copy(o->default_value);
++ for (i = 0; i < PREVIEW_SIZE; i++)
++ for (j = 0; j < PREVIEW_SIZE; j++)
++ gdk_image_put_pixel(o->image, i, j, change_color(o->value));
++ gtk_image_set(GTK_IMAGE(o->button_image), o->image, NULL);
++}
++
++void ColorOption_set(ColorOption *o, gchar *value) {
++ guint32 i;
++ if (strlen(value) != 8) return;
++ if (value[0] != '0' || value[1] != 'x') return;
++ sscanf(value, "0x%x", &i);
++ o->value->red = (i&0x00FF0000) >> 8;
++ o->value->green = (i&0x0000FF00);
++ o->value->blue = (i&0x000000FF) << 8;
++}
++
++gchar *ColorOption_get(ColorOption *o) {
++ return g_strdup_printf("%s=0x%.2x%.2x%.2x",
++ get_token_name(o->base.token),
++ o->value->red >> 8,
++ o->value->green >> 8,
++ o->value->blue >> 8);
++}
++
++void ColorOption_free(ColorOption *o) {
++ gdk_image_destroy (o->image);
++ g_free(o);
++}
++
++SpinOption *SpinOption_new(guint token,
++ GtkWidget *table, gint x, gint y) {
++ SpinOption *o = g_new(SpinOption, 1);
++ OptionAdjustment_t *opt = (OptionAdjustment_t *)get_token_option(token);
++
++ o->base.token = token;
++ o->base.init = SpinOption_init;
++ o->base.set = SpinOption_set;
++ o->base.get = SpinOption_get;
++ o->base.free = SpinOption_free;
++ o->hbox = gtk_hbox_new(FALSE, 0);
++ o->button = gtk_spin_button_new(
++ (GtkAdjustment *)gtk_adjustment_new(0,
++ opt->lower,
++ opt->upper,
++ opt->increment,
++ opt->increment,
++ opt->increment),
++ opt->increment, opt->digits);
++ o->base.set(o, (gchar *)get_token_value(token));
++ o->default_value = o->value;
++ o->is_integer = (opt->digits == 0);
++ gtk_box_pack_start(GTK_BOX(o->hbox),
++ gtk_label_new(_(get_token_label(token))), FALSE, FALSE, 10);
++ gtk_box_pack_start(GTK_BOX(o->hbox), o->button, FALSE, FALSE, 10);
++ gtk_table_attach_defaults(GTK_TABLE(table), o->hbox, x, x + 1, y, y + 1);
++ return o;
++}
++
++void SpinOption_init(SpinOption *o, gboolean use_default) {
++ if (use_default) o->value = o->default_value;
++ gtk_spin_button_set_value(GTK_SPIN_BUTTON(o->button), o->value);
++}
++
++void SpinOption_set(SpinOption *o, gchar *value) {
++ if (o->is_integer)
++ o->value = strtol(value, NULL, 0);
++ else
++ o->value = strtod(value, NULL);
++}
++
++ gchar *SpinOption_get(SpinOption *o) {
++ if (o->is_integer)
++ return g_strdup_printf("%s=%d", get_token_name(o->base.token),
++ gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(o->button)));
++ else {
++ gchar *float_str = g_strdup_printf("%s=%f",
++ get_token_name(o->base.token),
++ gtk_spin_button_get_value_as_float(GTK_SPIN_BUTTON(o->button)));
++ if (strchr(float_str, ','))
++ strchr(float_str, ',')[0] = '.';
++ return float_str;
++ }
++ }
++
++void SpinOption_free(SpinOption *o) {
++ g_free(o);
++}
++
++GeometryOption *GeometryOption_new(guint token,
++ GtkWidget *table, gint x, gint y) {
++ GeometryOption *o = g_new(GeometryOption, 1);
++ OptionAdjustment_t *opt = (OptionAdjustment_t *)get_token_option(token);
++
++ o->base.token = token;
++ o->base.init = GeometryOption_init;
++ o->base.set = GeometryOption_set;
++ o->base.get = GeometryOption_get;
++ o->base.free = GeometryOption_free;
++ o->hbox = gtk_hbox_new(FALSE, 0);
++ o->button = gtk_spin_button_new(
++ (GtkAdjustment *)gtk_adjustment_new(0,
++ opt->lower,
++ opt->upper,
++ opt->increment,
++ opt->increment,
++ opt->increment),
++ opt->increment, 0);
++ o->button2 = gtk_spin_button_new(
++ (GtkAdjustment *)gtk_adjustment_new(0,
++ opt->lower,
++ opt->upper,
++ opt->increment,
++ opt->increment,
++ opt->increment),
++ opt->increment, 0);
++ o->base.set(o, (gchar *)get_token_value(token));
++ o->default_value = o->value;
++ gtk_box_pack_start(GTK_BOX(o->hbox),
++ gtk_label_new(_(get_token_label(token))), FALSE, FALSE, 10);
++ gtk_box_pack_start(GTK_BOX(o->hbox), o->button, FALSE, FALSE, 10);
++ gtk_box_pack_start(GTK_BOX(o->hbox), gtk_label_new("X"), FALSE, FALSE, 0);
++ gtk_box_pack_start(GTK_BOX(o->hbox), o->button2, FALSE, FALSE, 10);
++ gtk_table_attach_defaults(GTK_TABLE(table), o->hbox, x, x + 1, y, y + 1);
++ return o;
++}
++
++void GeometryOption_init(GeometryOption *o, gboolean use_default) {
++ if(use_default) o->value = o->default_value;
++ gtk_spin_button_set_value(GTK_SPIN_BUTTON(o->button), o->value.x);
++ gtk_spin_button_set_value(GTK_SPIN_BUTTON(o->button2), o->value.y);
++}
++
++void GeometryOption_set(GeometryOption *o, gchar *value) {
++ gchar *ptr;
++
++ if ((ptr = strchr(value, 'x'))) {
++ o->value.x = atoi(value);
++ o->value.y = atoi(++ptr);
++ }
++}
++
++gchar *GeometryOption_get(GeometryOption *o) {
++ return g_strdup_printf("%s=%dx%d", get_token_name(o->base.token),
++ gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(o->button)),
++ gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(o->button2)));
++}
++
++void GeometryOption_free(SpinOption *o) {
++ g_free(o);
++}
++
++
++/* vim: set ts=3 sw=3 sts=3 expandtab:*/
+diff -pruN dillo-0.8.6/config/dillocfg_option.h dillo-0.8.6-i18n-misc-20060709/config/dillocfg_option.h
+--- dillo-0.8.6/config/dillocfg_option.h 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/config/dillocfg_option.h 2006-05-16 01:21:16.000000000 +0900
+@@ -0,0 +1,57 @@
++#ifndef __DILLOCFG_GTK_OPTION_H__
++#define __DILLOCFG_GTK_OPTION_H__
++
++#include <stdio.h>
++#include <gtk/gtk.h>
++
++#include "../config.h"
++
++#ifdef __cplusplus
++extern "C" {
++#endif /* __cplusplus */
++
++ typedef enum {
++ CHECK_OPTION = 0,
++ ENTRY_OPTION,
++ COMBO_OPTION,
++ FONT_OPTION,
++ SELECT_OPTION,
++ COLOR_OPTION,
++ SPIN_OPTION,
++ GEOMETRY_OPTION,
++ COOKIE
++ } OptionType;
++
++ typedef struct {
++ guint token;
++ void (*init)();
++ void (*set)();
++ gchar *(*get)();
++ void (*free)();
++ } OptionBase;
++
++ typedef struct {
++ OptionBase base;
++ } Option;
++
++ typedef struct {
++ gfloat lower;
++ gfloat upper;
++ gfloat increment;
++ guint digits;
++ } OptionAdjustment_t;
++
++ Option *Option_new(guint token, GList **list, GtkWidget *table, gint x, gint y);
++ void Option_init(Option *o, gboolean use_default);
++ void Option_set(Option *o, gchar *value);
++ gchar *Option_get(Option *o, FILE *fp);
++ void Option_free(Option *o, GList **list);
++
++#ifdef __cplusplus
++}
++#endif /* __cplusplus */
++
++
++#endif /* __DILLOCFG_GTK_OPTION_H__ */
++
++/* vim: set ts=3 sw=3 sts=3 expandtab:*/
+diff -pruN dillo-0.8.6/config/dillocfg_token.c dillo-0.8.6-i18n-misc-20060709/config/dillocfg_token.c
+--- dillo-0.8.6/config/dillocfg_token.c 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/config/dillocfg_token.c 2006-05-16 01:21:16.000000000 +0900
+@@ -0,0 +1,635 @@
++/*
++ * File: dillocfg-gtk_token.c
++ *
++ * Copyright (C) 2003 Kiyo <kiyo@teki.jpn.ph>
++ *
++ * 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 of the License, or
++ * (at your option) any later version.
++ */
++
++#include <string.h>
++#include <gtk/gtk.h>
++
++#include "../config.h"
++#include "../src/intl.h"
++#include "dillocfg_token.h"
++#include "dillocfg_option.h"
++
++static const OptionAdjustment_t font_factor_option = {0.1, 20, 0.1, 1};
++static const OptionAdjustment_t geometry_option = {1, 65535, 1, 0};
++static const gchar *panel_sizes[] = {"tiny", "small", "medium", "large", NULL};
++static const gchar *user_agents[] = {
++ "Dillo/%v",
++ "Mozilla/3.0 (compatible;) Dillo/%v",
++ "Mozilla/4.0 (compatible; MSIE 4.0;) Dillo/%v",
++ "Mozilla/4.0 (Macintosh; U; PPC Mac OS X; ja-jp) Dillo/%v",
++ "DoCoMo/1.0/x505i (Dillo/%v)",
++ "J-PHONE/4.2/J-x53 (Dillo/%v)",
++ "KDDI-x24 UP.Browser/6.0.x.x (GUI) MMP/1.1 (Dillo/%v)",
++ NULL
++};
++static const gchar *cookie_rules[] = {
++ "ACCEPT_SESSION",
++ "DENY",
++ "ACCEPT",
++ NULL
++};
++
++/* symbol array */
++static struct {
++ const gchar *name;
++ const gchar *label;
++ const guint token;
++ const guint type;
++ const gchar *value;
++ const gpointer option;
++ Option *object;
++
++} symbols[] = {
++ { "null",
++ "null",
++ 0,
++ -1,
++ NULL,
++ (const gpointer)NULL,
++ NULL
++ },
++ { "geometry",
++ N_("Window Size"),
++ TOKEN_GEOMETRY,
++ GEOMETRY_OPTION,
++ "640x550",
++ (const gpointer)&geometry_option,
++ NULL
++ },
++ { "http_proxy",
++ N_("HTTP Proxy"),
++ TOKEN_PROXY,
++ ENTRY_OPTION,
++ "",
++ (const gpointer)TRUE,
++ NULL
++ },
++ { "http_proxyuser",
++ N_("HTTP Proxy User"),
++ TOKEN_PROXYUSER,
++ ENTRY_OPTION,
++ "",
++ (const gpointer)FALSE,
++ NULL
++ },
++ { "no_proxy",
++ N_("NO Proxy"),
++ TOKEN_NOPROXY,
++ ENTRY_OPTION,
++ "",
++ (const gpointer)TRUE,
++ NULL
++ },
++ { "user_agent",
++ N_("User-Agent"),
++ TOKEN_USER_AGENT,
++ SELECT_OPTION,
++ "Dillo/%v",
++ (const gpointer)&user_agents,
++ NULL
++ },
++ { "send_referer",
++ N_("Send referer header"),
++ TOKEN_SEND_REFERER,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "link_color",
++ N_("Link color"),
++ TOKEN_LINK_COLOR,
++ COLOR_OPTION,
++ "0x0000ff",
++ NULL,
++ NULL
++ },
++ { "visited_color",
++ N_("Visited color"),
++ TOKEN_VISITED_COLOR,
++ COLOR_OPTION,
++ "0xa020f0",
++ NULL,
++ NULL
++ },
++ { "bg_color",
++ N_("BackGround color"),
++ TOKEN_BG_COLOR,
++ COLOR_OPTION,
++ "0xffffff",
++ NULL,
++ NULL
++ },
++ { "allow_white_bg",
++ N_("Allow white bg"),
++ TOKEN_ALLOW_WHITE_BG,
++ CHECK_OPTION,
++ "NO",
++ NULL,
++ NULL
++ },
++ { "force_my_colors",
++ N_("Force my colors"),
++ TOKEN_FORCE_MY_COLORS,
++ CHECK_OPTION,
++ "NO",
++ NULL,
++ NULL
++ },
++ { "contrast_visited_color",
++ N_("Contrast visited color"),
++ TOKEN_CONTRAST_VISITED_COLOR,
++ CHECK_OPTION,
++ "NO",
++ NULL,
++ NULL
++ },
++ { "text_color",
++ N_("Text color"),
++ TOKEN_TEXT_COLOR,
++ COLOR_OPTION,
++ "0x000000",
++ NULL,
++ NULL
++ },
++ { "use_oblique",
++ N_("Use oblique"),
++ TOKEN_USE_OBLIQUE,
++ CHECK_OPTION,
++ "NO",
++ NULL,
++ NULL
++ },
++ { "start_page",
++ N_("Start Page"),
++ TOKEN_START_PAGE,
++ ENTRY_OPTION,
++ "about:splash",
++ (const gpointer)TRUE,
++ NULL
++ },
++ { "home",
++ N_("HOMEPAGE"),
++ TOKEN_HOME,
++ ENTRY_OPTION,
++ "http://www.google.com/",
++ (const gpointer)TRUE,
++ NULL
++ },
++ { "search_url",
++ N_("Search-engine's URL"),
++ TOKEN_SEARCH_URL,
++ ENTRY_OPTION,
++ "http://www.google.com/search?ie=UTF-8&oe=UTF-8&q=%s",
++ (const gpointer)TRUE,
++ NULL
++ },
++ { "search_charset",
++ N_("Search-engine's charset"),
++ TOKEN_SEARCH_CHARSET,
++ ENTRY_OPTION,
++ "UTF-8",
++ (const gpointer)FALSE,
++ NULL
++ },
++ { "show_tooltip",
++ N_("Show Tooltip"),
++ TOKEN_SHOW_TOOLTIP,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "panel_size",
++ N_("Panel Size"),
++ TOKEN_PANEL_SIZE,
++ SELECT_OPTION,
++ "tiny",
++ (const gpointer)&panel_sizes,
++ NULL
++ },
++ { "small_icons",
++ N_("Small icons"),
++ TOKEN_SMALL_ICONS,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "limit_text_width",
++ N_("Limit text width"),
++ TOKEN_LIMIT_TEXT_WIDTH,
++ CHECK_OPTION,
++ "NO",
++ NULL,
++ NULL
++ },
++ { "limit_font_decoration",
++ N_("Limit font decoration"),
++ TOKEN_LIMIT_FONT_DECORATION,
++ CHECK_OPTION,
++ "NO",
++ NULL,
++ NULL
++ },
++ { "font_factor",
++ N_("Font factor"),
++ TOKEN_FONT_FACTOR,
++ SPIN_OPTION,
++ "1.0",
++ (const gpointer)&font_factor_option,
++ NULL
++ },
++ { "font_sizes",
++ N_("Font Sizes"),
++ TOKEN_FONT_SIZES,
++ ENTRY_OPTION,
++ "10 12 14 16 18 20",
++ (const gpointer)TRUE,
++ NULL
++ },
++ { "w3c_plus_heuristics",
++ N_("W3C+heuristics"),
++ TOKEN_W3C_PLUS_HEURISTICS,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "use_dicache",
++ N_("Use dicache"),
++ TOKEN_USE_DICACHE,
++ CHECK_OPTION,
++ "NO",
++ NULL,
++ NULL
++ },
++ { "show_back",
++ N_("Show Back"),
++ TOKEN_SHOW_BACK,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "show_forw",
++ N_("Show Forw"),
++ TOKEN_SHOW_FORW,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "show_home",
++ N_("Show Home"),
++ TOKEN_SHOW_HOME,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "show_reload",
++ N_("Show Reload"),
++ TOKEN_SHOW_RELOAD,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "show_save",
++ N_("Show Save"),
++ TOKEN_SHOW_SAVE,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "show_stop",
++ N_("Show Stop"),
++ TOKEN_SHOW_STOP,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "show_bookmarks",
++ N_("Show Bookmarks"),
++ TOKEN_SHOW_BOOKMARKS,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "show_menubar",
++ N_("Show Menubar"),
++ TOKEN_SHOW_MENUBAR,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "show_clear_url",
++ N_("Show ClearURL"),
++ TOKEN_SHOW_CLEAR_URL,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "show_url",
++ N_("Show URL box"),
++ TOKEN_SHOW_URL,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "show_search",
++ N_("Show Web Search"),
++ TOKEN_SHOW_SEARCH,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "show_progress_box",
++ N_("Show Progress box"),
++ TOKEN_SHOW_PROGRESS_BOX,
++ CHECK_OPTION,
++ "NO",
++ NULL,
++ NULL
++ },
++ { "show_popup_navigation",
++ N_("Show Popup navigation"),
++ TOKEN_SHOW_POPUP_NAVIGATION,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "fullwindow_start",
++ N_("Fullwindow start"),
++ TOKEN_FULLWINDOW_START,
++ CHECK_OPTION,
++ "NO",
++ NULL,
++ NULL
++ },
++ { "transient_dialogs",
++ N_("Transient dialogs"),
++ TOKEN_TRANSIENT_DIALOGS,
++ CHECK_OPTION,
++ "NO",
++ NULL,
++ NULL
++ },
++ { "popup_dialogs",
++ N_("Popup dialogs"),
++ TOKEN_POPUP_DIALOGS,
++ CHECK_OPTION,
++ "NO",
++ NULL,
++ NULL
++ },
++ { "vw_aafontname",
++ N_("vw_aafontname"),
++ TOKEN_VW_AAFONT,
++ FONT_OPTION,
++ "*",
++ (const gpointer)TRUE,
++ NULL
++ },
++ { "fw_aafontname",
++ N_("fw_aafontname"),
++ TOKEN_FW_AAFONT,
++ FONT_OPTION,
++ "*",
++ (const gpointer)TRUE,
++ NULL
++ },
++ { "vw_fontname",
++ N_("vw_fontname"),
++ TOKEN_VW_FONT,
++ FONT_OPTION,
++ "*-gothic",
++ (const gpointer)TRUE,
++ NULL
++ },
++ { "fw_fontname",
++ N_("fw_fontname"),
++ TOKEN_FW_FONT,
++ FONT_OPTION,
++ "*-gothic",
++ (const gpointer)TRUE,
++ NULL
++ },
++ { "generate_submit",
++ N_("Generate submit"),
++ TOKEN_GENERATE_SUBMIT,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "enterpress_forces_submit",
++ N_("Enterpress forces submit"),
++ TOKEN_ENTERPRESS_FORCES_SUBMIT,
++ CHECK_OPTION,
++ "NO",
++ NULL,
++ NULL
++ },
++ { "show_msg",
++ N_("Show debugging messsages"),
++ TOKEN_SHOW_MSG,
++ CHECK_OPTION,
++ "NO",
++ NULL,
++ NULL
++ },
++ { "show_extra_warnings",
++ N_("Show Extra Warnings"),
++ TOKEN_SHOW_EXTRA_WARNINGS,
++ CHECK_OPTION,
++ "NO",
++ NULL,
++ NULL
++ },
++ { "focus_location_on_new",
++ N_("Focus location on new"),
++ TOKEN_FOCUS_LOCATION_ON_NEW,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "accept_language",
++ N_("Accept Language"),
++ TOKEN_ACCEPT_LANGUAGE,
++ ENTRY_OPTION,
++ "en-us",
++ (const gpointer)TRUE,
++ NULL
++ },
++ { "accept_language",
++ N_("Accept Language"),
++ TOKEN_ACCEPT_LANGUAGE,
++ ENTRY_OPTION,
++ "en-us, ja",
++ (const gpointer)TRUE,
++ NULL
++ },
++#ifndef DISABLE_TABS
++ { "tab_load_in_background",
++ N_("Tab load in background"),
++ TOKEN_TAB_LOAD_IN_BACKGROUND,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "tab_close_middle_click",
++ N_("Tab close middle click"),
++ TOKEN_TAB_CLOSE_MIDDLE_CLICK,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "tab_instead_of_window",
++ N_("Tab instead of window"),
++ TOKEN_TAB_INSTEAD_OF_WINDOW,
++ CHECK_OPTION,
++ "YES",
++ FALSE,
++ NULL
++ },
++ { "tab_bar_show_fullscreen",
++ N_("Tab bar show fullscreen"),
++ TOKEN_TAB_BAR_SHOW_FULLSCREEN,
++ CHECK_OPTION,
++ "NO",
++ NULL,
++ NULL
++ },
++ { "tab_bar_show_single_tab",
++ N_("Tab bar show single tab"),
++ TOKEN_TAB_BAR_SHOW_SINGLE_TAB,
++ CHECK_OPTION,
++ "NO",
++ NULL,
++ NULL
++ },
++ { "tab_bar_scroller",
++ N_("Tab bar scroller"),
++ TOKEN_TAB_BAR_SCROLLER,
++ CHECK_OPTION,
++ "NO",
++ NULL,
++ NULL
++ },
++ { "tab_bar_homogeneous",
++ N_("Tab bar homogeneous"),
++ TOKEN_TAB_BAR_HOMOGENEOUS,
++ CHECK_OPTION,
++ "YES",
++ NULL,
++ NULL
++ },
++ { "tab_title_compress",
++ N_("Tab title compress"),
++ TOKEN_TAB_TITLE_COMPRESS,
++ CHECK_OPTION,
++ "NO",
++ NULL,
++ NULL
++ },
++ { "compress_vowels",
++ N_("Compress vowels"),
++ TOKEN_COMPRESS_VOWELS,
++ ENTRY_OPTION,
++ "aeiouyAEIOUY",
++ (const gpointer)TRUE,
++ NULL
++ },
++ { "compress_common_prefixes",
++ N_("Compress_common_prefixes"),
++ TOKEN_COMPRESS_COMMON_PREFIXES,
++ ENTRY_OPTION,
++ "index of ;re: ;fwd: ;www.;welcome to ;the ",
++ (const gpointer)TRUE,
++ NULL
++ },
++#endif /* !DISABLE_TABS */
++ { "DEFAULT",
++ N_("Default"),
++ TOKEN_COOKIE_DEFAULT,
++ COOKIE,
++ "ACCEPT_SESSION",
++ (const gpointer)&cookie_rules,
++ NULL
++ },
++ { NULL,
++ NULL,
++ TOKEN_COOKIE,
++ COOKIE,
++ "ACCEPT_SESSION",
++ (const gpointer)&cookie_rules,
++ NULL
++ },
++
++};
++
++
++static guint token2num(guint tkn) {
++ gint i;
++ for (i = 0; i < N_TOKENS && symbols[i].token != tkn; i++);
++ return i;
++}
++
++guint name2token(const gchar *name) {
++ gint i;
++ for (i = 0; i < N_TOKENS; i++)
++ if (symbols[i].name && strcmp(symbols[i].name, name) == 0)
++ return (const guint)symbols[i].token;
++ return 0;
++}
++
++const gchar *get_token_name(guint tkn) {
++ return symbols[token2num(tkn)].name;
++}
++
++const gchar *get_token_label(guint tkn) {
++ return symbols[token2num(tkn)].label;
++}
++
++guint get_token_type(guint tkn) {
++ return symbols[token2num(tkn)].type;
++}
++
++gpointer get_token_value(guint tkn) {
++ return (const gpointer)symbols[token2num(tkn)].value;
++}
++
++gpointer get_token_option(guint tkn) {
++ return symbols[token2num(tkn)].option;
++}
++
++void set_token_object(guint tkn, Option *obj) {
++ symbols[token2num(tkn)].object = obj;
++}
++
++Option *get_token_object(guint tkn) {
++ return symbols[token2num(tkn)].object;
++}
++
++/* vim: set ts=3 sw=3 sts=3 expandtab:*/
+diff -pruN dillo-0.8.6/config/dillocfg_token.h dillo-0.8.6-i18n-misc-20060709/config/dillocfg_token.h
+--- dillo-0.8.6/config/dillocfg_token.h 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/config/dillocfg_token.h 2006-05-16 01:21:16.000000000 +0900
+@@ -0,0 +1,103 @@
++#ifndef __DILLOCFG_GTK_TOKEN_H__
++#define __DILLOCFG_GTK_TOKEN_H__
++
++#include <gtk/gtk.h>
++
++#include "../config.h"
++#include "dillocfg_option.h"
++
++#ifdef __cplusplus
++extern "C" {
++#endif /* __cplusplus */
++ /* define enumeration values to be returned for specific symbols */
++ typedef enum {
++ TOKEN_NULL = 0,
++ TOKEN_GEOMETRY,
++ TOKEN_PROXY,
++ TOKEN_PROXYUSER,
++ TOKEN_NOPROXY,
++ TOKEN_USER_AGENT,
++ TOKEN_SEND_REFERER,
++ TOKEN_LINK_COLOR,
++ TOKEN_VISITED_COLOR,
++ TOKEN_BG_COLOR,
++ TOKEN_ALLOW_WHITE_BG,
++ TOKEN_FORCE_MY_COLORS,
++ TOKEN_CONTRAST_VISITED_COLOR,
++ TOKEN_TEXT_COLOR,
++ TOKEN_USE_OBLIQUE,
++ TOKEN_START_PAGE,
++ TOKEN_HOME,
++ TOKEN_SEARCH_URL,
++ TOKEN_SEARCH_CHARSET,
++ TOKEN_PANEL_SIZE,
++ TOKEN_SMALL_ICONS,
++ TOKEN_FONT_FACTOR,
++ TOKEN_FONT_SIZES,
++ TOKEN_SHOW_TOOLTIP,
++ TOKEN_LIMIT_TEXT_WIDTH,
++ TOKEN_LIMIT_FONT_DECORATION,
++ TOKEN_W3C_PLUS_HEURISTICS,
++ TOKEN_USE_DICACHE,
++ TOKEN_SHOW_BACK,
++ TOKEN_SHOW_FORW,
++ TOKEN_SHOW_HOME,
++ TOKEN_SHOW_RELOAD,
++ TOKEN_SHOW_SAVE,
++ TOKEN_SHOW_STOP,
++ TOKEN_SHOW_BOOKMARKS,
++ TOKEN_SHOW_MENUBAR,
++ TOKEN_SHOW_CLEAR_URL,
++ TOKEN_SHOW_URL,
++ TOKEN_SHOW_SEARCH,
++ TOKEN_SHOW_PROGRESS_BOX,
++ TOKEN_SHOW_POPUP_NAVIGATION,
++ TOKEN_FULLWINDOW_START,
++ TOKEN_TRANSIENT_DIALOGS,
++ TOKEN_POPUP_DIALOGS,
++ TOKEN_FW_FONT,
++ TOKEN_VW_FONT,
++ TOKEN_FW_AAFONT,
++ TOKEN_VW_AAFONT,
++ TOKEN_GENERATE_SUBMIT,
++ TOKEN_ENTERPRESS_FORCES_SUBMIT,
++ TOKEN_SHOW_MSG,
++ TOKEN_SHOW_EXTRA_WARNINGS,
++ TOKEN_FOCUS_LOCATION_ON_NEW,
++ TOKEN_ACCEPT_LANGUAGE,
++#ifndef DISABLE_TABS
++ TOKEN_TAB_LOAD_IN_BACKGROUND,
++ TOKEN_TAB_INSTEAD_OF_WINDOW,
++ TOKEN_TAB_BAR_SHOW_FULLSCREEN,
++ TOKEN_TAB_BAR_SHOW_SINGLE_TAB,
++ TOKEN_TAB_BAR_SCROLLER,
++ TOKEN_TAB_BAR_HOMOGENEOUS,
++ TOKEN_TAB_TITLE_COMPRESS,
++ TOKEN_TAB_CLOSE_MIDDLE_CLICK,
++ TOKEN_COMPRESS_VOWELS,
++ TOKEN_COMPRESS_COMMON_PREFIXES,
++#endif /* !DISABLE_TABS */
++ TOKEN_COOKIE_DEFAULT,
++ TOKEN_COOKIE,
++
++ TOKEN_LAST
++ } TokenType;
++#define N_TOKENS TOKEN_LAST
++
++ guint name2token(const gchar *name);
++ const gchar *get_token_name(guint tkn);
++ const gchar *get_token_label(guint tkn);
++ guint get_token_type(guint tkn);
++ gpointer get_token_value(guint tkn);
++ gpointer get_token_option(guint tkn);
++ Option *get_token_object(guint tkn);
++ void set_token_object(guint tkn, Option *obj);
++
++#ifdef __cplusplus
++}
++#endif /* __cplusplus */
++
++
++#endif /* __DILLOCFG_GTK_TOKEN_H__ */
++
++/* vim: set ts=3 sw=3 sts=3 expandtab:*/
+diff -pruN dillo-0.8.6/config.guess dillo-0.8.6-i18n-misc-20060709/config.guess
+--- dillo-0.8.6/config.guess 2005-03-22 16:17:05.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/config.guess 2006-05-16 01:21:07.000000000 +0900
+@@ -1,9 +1,9 @@
+ #! /bin/sh
+ # Attempt to guess a canonical system name.
+ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+-# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+-timestamp='2005-02-10'
++timestamp='2004-03-12'
+
+ # This file is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU General Public License as published by
+@@ -53,7 +53,7 @@ version="\
+ GNU config.guess ($timestamp)
+
+ Originally written by Per Bothner.
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+ Free Software Foundation, Inc.
+
+ This is free software; see the source for copying conditions. There is NO
+@@ -106,7 +106,6 @@ trap "rm -f \$tmpfiles 2>/dev/null; rmdi
+ : ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+ dummy=$tmp/dummy ;
+ tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+@@ -203,15 +202,15 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
+ amiga:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
++ arc:OpenBSD:*:*)
++ echo mipsel-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
+ cats:OpenBSD:*:*)
+ echo arm-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ hp300:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+- luna88k:OpenBSD:*:*)
+- echo m88k-unknown-openbsd${UNAME_RELEASE}
+- exit 0 ;;
+ mac68k:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+@@ -227,12 +226,21 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
+ mvmeppc:OpenBSD:*:*)
+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
++ pegasos:OpenBSD:*:*)
++ echo powerpc-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ pmax:OpenBSD:*:*)
++ echo mipsel-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
+ sgi:OpenBSD:*:*)
+- echo mips64-unknown-openbsd${UNAME_RELEASE}
++ echo mipseb-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ sun3:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
++ wgrisc:OpenBSD:*:*)
++ echo mipsel-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
+ *:OpenBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+@@ -245,6 +253,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit 0 ;;
++ *:MicroBSD:*:*)
++ echo ${UNAME_MACHINE}-unknown-microbsd${UNAME_RELEASE}
++ exit 0 ;;
+ alpha:OSF1:*:*)
+ case $UNAME_RELEASE in
+ *4.0)
+@@ -319,9 +330,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit 0 ;;
+- *:z/VM:*:*)
+- echo s390-ibm-zvmoe
+- exit 0 ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit 0 ;;
+@@ -342,10 +350,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit 0 ;;
+- DRS?6000:unix:4.0:6*)
+- echo sparc-icl-nx6
+- exit 0 ;;
+- DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
++ DRS?6000:UNIX_SV:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7 && exit 0 ;;
+ esac ;;
+@@ -755,7 +760,7 @@ EOF
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ *:UNICOS/mp:*:*)
+- echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
++ echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+@@ -778,7 +783,21 @@ EOF
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit 0 ;;
+ *:FreeBSD:*:*)
+- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
++ # Determine whether the default compiler uses glibc.
++ eval $set_cc_for_build
++ sed 's/^ //' << EOF >$dummy.c
++ #include <features.h>
++ #if __GLIBC__ >= 2
++ LIBC=gnu
++ #else
++ LIBC=
++ #endif
++EOF
++ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
++ # GNU/KFreeBSD systems have a "k" prefix to indicate we are using
++ # FreeBSD's kernel, but not the complete OS.
++ case ${LIBC} in gnu) kernel_only='k' ;; esac
++ echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
+ exit 0 ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+@@ -789,8 +808,8 @@ EOF
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit 0 ;;
+- x86:Interix*:[34]*)
+- echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
++ x86:Interix*:3*)
++ echo i586-pc-interix3
+ exit 0 ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+@@ -804,9 +823,6 @@ EOF
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit 0 ;;
+- amd64:CYGWIN*:*:*)
+- echo x86_64-unknown-cygwin
+- exit 0 ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit 0 ;;
+@@ -827,15 +843,6 @@ EOF
+ arm*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+- cris:Linux:*:*)
+- echo cris-axis-linux-gnu
+- exit 0 ;;
+- crisv32:Linux:*:*)
+- echo crisv32-axis-linux-gnu
+- exit 0 ;;
+- frv:Linux:*:*)
+- echo frv-unknown-linux-gnu
+- exit 0 ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+@@ -917,9 +924,6 @@ EOF
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+ exit 0 ;;
+- sh64*:Linux:*:*)
+- echo ${UNAME_MACHINE}-unknown-linux-gnu
+- exit 0 ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+@@ -977,9 +981,6 @@ EOF
+ LIBC=gnuaout
+ #endif
+ #endif
+- #ifdef __dietlibc__
+- LIBC=dietlibc
+- #endif
+ EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+ test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
+@@ -1082,9 +1083,9 @@ EOF
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit 0 ;;
+- M68*:*:R3V[5678]*:*)
++ M68*:*:R3V[567]*:*)
+ test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+- 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
++ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+@@ -1182,10 +1183,9 @@ EOF
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit 0 ;;
+ *:Darwin:*:*)
+- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+- case $UNAME_PROCESSOR in
++ case `uname -p` in
+ *86) UNAME_PROCESSOR=i686 ;;
+- unknown) UNAME_PROCESSOR=powerpc ;;
++ powerpc) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit 0 ;;
+@@ -1200,9 +1200,6 @@ EOF
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit 0 ;;
+- NSE-?:NONSTOP_KERNEL:*:*)
+- echo nse-tandem-nsk${UNAME_RELEASE}
+- exit 0 ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit 0 ;;
+@@ -1250,16 +1247,6 @@ EOF
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit 0 ;;
+- *:*VMS:*:*)
+- UNAME_MACHINE=`(uname -p) 2>/dev/null`
+- case "${UNAME_MACHINE}" in
+- A*) echo alpha-dec-vms && exit 0 ;;
+- I*) echo ia64-dec-vms && exit 0 ;;
+- V*) echo vax-dec-vms && exit 0 ;;
+- esac ;;
+- *:XENIX:*:SysV)
+- echo i386-pc-xenix
+- exit 0 ;;
+ esac
+
+ #echo '(No uname command or uname output not recognized.)' 1>&2
+diff -pruN dillo-0.8.6/config.h.in dillo-0.8.6-i18n-misc-20060709/config.h.in
+--- dillo-0.8.6/config.h.in 2006-04-27 01:06:37.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/config.h.in 2006-05-16 01:21:07.000000000 +0900
+@@ -1,23 +1,40 @@
+ /* config.h.in. Generated from configure.in by autoheader. */
+
++/* Enable SSL Processing */
++#undef DILLO_SSL
++
+ /* Enable GIF images */
+ #undef ENABLE_GIF
+
+ /* Enable JPEG images */
+ #undef ENABLE_JPEG
+
++/* Define to 1 if translation of program messages to the user's native
++ language is requested. */
++#undef ENABLE_NLS
++
+ /* Enable PNG images */
+ #undef ENABLE_PNG
+
+ /* Enable SSL support */
+ #undef ENABLE_SSL
+
++/* Define if the GNU dcgettext() function is already present or preinstalled.
++ */
++#undef HAVE_DCGETTEXT
++
+ /* Define to 1 if you have the <fcntl.h> header file. */
+ #undef HAVE_FCNTL_H
+
+ /* Define to 1 if you have the `gethostbyname' function. */
+ #undef HAVE_GETHOSTBYNAME
+
++/* Define if the GNU gettext() function is already present or preinstalled. */
++#undef HAVE_GETTEXT
++
++/* Define if you have the iconv() function. */
++#undef HAVE_ICONV
++
+ /* Define to 1 if you have the <inttypes.h> header file. */
+ #undef HAVE_INTTYPES_H
+
+@@ -30,9 +47,18 @@
+ /* Define to 1 if you have the `socket' library (-lsocket). */
+ #undef HAVE_LIBSOCKET
+
++/* Define to 1 if you have the `ssl' library (-lssl). */
++#undef HAVE_LIBSSL
++
+ /* Define to 1 if you have the <memory.h> header file. */
+ #undef HAVE_MEMORY_H
+
++/* Define to 1 if you have the <openssl/err.h> header file. */
++#undef HAVE_OPENSSL_ERR_H
++
++/* Define to 1 if you have the <openssl/ssl.h> header file. */
++#undef HAVE_OPENSSL_SSL_H
++
+ /* Define to 1 if you have the <png.h> header file. */
+ #undef HAVE_PNG_H
+
+diff -pruN dillo-0.8.6/config.rpath dillo-0.8.6-i18n-misc-20060709/config.rpath
+--- dillo-0.8.6/config.rpath 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/config.rpath 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,513 @@
++#! /bin/sh
++# Output a system dependent set of variables, describing how to set the
++# run time search path of shared libraries in an executable.
++#
++# Copyright 1996-2002 Free Software Foundation, Inc.
++# Taken from GNU libtool, 2001
++# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 of the License, 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.
++#
++# As a special exception to the GNU General Public License, if you
++# distribute this file as part of a program that contains a
++# configuration script generated by Autoconf, you may include it under
++# the same distribution terms that you use for the rest of that program.
++#
++# The first argument passed to this file is the canonical host specification,
++# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
++# or
++# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
++# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
++# should be set by the caller.
++#
++# The set of defined variables is at the end of this script.
++
++# All known linkers require a `.a' archive for static linking (except M$VC,
++# which needs '.lib').
++libext=a
++shlibext=
++
++host="$1"
++host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
++host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
++host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++
++wl=
++if test "$GCC" = yes; then
++ wl='-Wl,'
++else
++ case "$host_os" in
++ aix3* | aix4* | aix5*)
++ wl='-Wl,'
++ ;;
++ hpux9* | hpux10* | hpux11*)
++ wl='-Wl,'
++ ;;
++ irix5* | irix6*)
++ wl='-Wl,'
++ ;;
++ linux*)
++ echo '__INTEL_COMPILER' > conftest.$ac_ext
++ if $CC -E conftest.$ac_ext >/dev/null | grep __INTEL_COMPILER >/dev/null
++ then
++ :
++ else
++ # Intel icc
++ wl='-Qoption,ld,'
++ fi
++ ;;
++ osf3* | osf4* | osf5*)
++ wl='-Wl,'
++ ;;
++ solaris*)
++ wl='-Wl,'
++ ;;
++ sunos4*)
++ wl='-Qoption ld '
++ ;;
++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
++ if test "x$host_vendor" = xsni; then
++ wl='-LD'
++ else
++ wl='-Wl,'
++ fi
++ ;;
++ esac
++fi
++
++hardcode_libdir_flag_spec=
++hardcode_libdir_separator=
++hardcode_direct=no
++hardcode_minus_L=no
++
++case "$host_os" in
++ cygwin* | mingw* | pw32*)
++ # FIXME: the MSVC++ port hasn't been tested in a loooong time
++ # When not using gcc, we currently assume that we are using
++ # Microsoft Visual C++.
++ if test "$GCC" != yes; then
++ with_gnu_ld=no
++ fi
++ ;;
++ openbsd*)
++ with_gnu_ld=no
++ ;;
++esac
++
++ld_shlibs=yes
++if test "$with_gnu_ld" = yes; then
++ case "$host_os" in
++ aix3* | aix4* | aix5*)
++ # On AIX, the GNU linker is very broken
++ ld_shlibs=no
++ ;;
++ amigaos*)
++ hardcode_libdir_flag_spec='-L$libdir'
++ hardcode_minus_L=yes
++ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
++ # that the semantics of dynamic libraries on AmigaOS, at least up
++ # to version 4, is to share data among multiple programs linked
++ # with the same dynamic library. Since this doesn't match the
++ # behavior of shared libraries on other platforms, we can use
++ # them.
++ ld_shlibs=no
++ ;;
++ beos*)
++ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
++ :
++ else
++ ld_shlibs=no
++ fi
++ ;;
++ cygwin* | mingw* | pw32*)
++ # hardcode_libdir_flag_spec is actually meaningless, as there is
++ # no search path for DLLs.
++ hardcode_libdir_flag_spec='-L$libdir'
++ ;;
++ solaris* | sysv5*)
++ if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
++ ld_shlibs=no
++ elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
++ :
++ else
++ ld_shlibs=no
++ fi
++ ;;
++ sunos4*)
++ hardcode_direct=yes
++ ;;
++ *)
++ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
++ :
++ else
++ ld_shlibs=no
++ fi
++ ;;
++ esac
++ if test "$ld_shlibs" = yes; then
++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
++ fi
++else
++ case "$host_os" in
++ aix3*)
++ # Note: this linker hardcodes the directories in LIBPATH if there
++ # are no directories specified by -L.
++ hardcode_minus_L=yes
++ if test "$GCC" = yes; then
++ # Neither direct hardcoding nor static linking is supported with a
++ # broken collect2.
++ hardcode_direct=unsupported
++ fi
++ ;;
++ aix4* | aix5*)
++ if test "$host_cpu" = ia64; then
++ # On IA64, the linker does run time linking by default, so we don't
++ # have to do anything special.
++ aix_use_runtimelinking=no
++ else
++ aix_use_runtimelinking=no
++ # Test if we are trying to use run time linking or normal
++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
++ # need to do runtime linking.
++ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
++ for ld_flag in $LDFLAGS; do
++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
++ aix_use_runtimelinking=yes
++ break
++ fi
++ done
++ esac
++ fi
++ hardcode_direct=yes
++ hardcode_libdir_separator=':'
++ if test "$GCC" = yes; then
++ case $host_os in aix4.[012]|aix4.[012].*)
++ collect2name=`${CC} -print-prog-name=collect2`
++ if test -f "$collect2name" && \
++ strings "$collect2name" | grep resolve_lib_name >/dev/null
++ then
++ # We have reworked collect2
++ hardcode_direct=yes
++ else
++ # We have old collect2
++ hardcode_direct=unsupported
++ hardcode_minus_L=yes
++ hardcode_libdir_flag_spec='-L$libdir'
++ hardcode_libdir_separator=
++ fi
++ esac
++ fi
++ if test "$aix_use_runtimelinking" = yes; then
++ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
++ else
++ if test "$host_cpu" = ia64; then
++ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
++ else
++ hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
++ fi
++ fi
++ ;;
++ amigaos*)
++ hardcode_libdir_flag_spec='-L$libdir'
++ hardcode_minus_L=yes
++ # see comment about different semantics on the GNU ld section
++ ld_shlibs=no
++ ;;
++ cygwin* | mingw* | pw32*)
++ # When not using gcc, we currently assume that we are using
++ # Microsoft Visual C++.
++ # hardcode_libdir_flag_spec is actually meaningless, as there is
++ # no search path for DLLs.
++ hardcode_libdir_flag_spec=' '
++ libext=lib
++ ;;
++ darwin* | rhapsody*)
++ hardcode_direct=yes
++ ;;
++ freebsd1*)
++ ld_shlibs=no
++ ;;
++ freebsd2.2*)
++ hardcode_libdir_flag_spec='-R$libdir'
++ hardcode_direct=yes
++ ;;
++ freebsd2*)
++ hardcode_direct=yes
++ hardcode_minus_L=yes
++ ;;
++ freebsd*)
++ hardcode_libdir_flag_spec='-R$libdir'
++ hardcode_direct=yes
++ ;;
++ hpux9* | hpux10* | hpux11*)
++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
++ hardcode_libdir_separator=:
++ hardcode_direct=yes
++ hardcode_minus_L=yes # Not in the search PATH, but as the default
++ # location of the library.
++ ;;
++ irix5* | irix6*)
++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
++ hardcode_libdir_separator=:
++ ;;
++ netbsd*)
++ hardcode_libdir_flag_spec='-R$libdir'
++ hardcode_direct=yes
++ ;;
++ newsos6)
++ hardcode_direct=yes
++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
++ hardcode_libdir_separator=:
++ ;;
++ openbsd*)
++ hardcode_direct=yes
++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
++ else
++ case "$host_os" in
++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
++ hardcode_libdir_flag_spec='-R$libdir'
++ ;;
++ *)
++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
++ ;;
++ esac
++ fi
++ ;;
++ os2*)
++ hardcode_libdir_flag_spec='-L$libdir'
++ hardcode_minus_L=yes
++ ;;
++ osf3*)
++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
++ hardcode_libdir_separator=:
++ ;;
++ osf4* | osf5*)
++ if test "$GCC" = yes; then
++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
++ else
++ # Both cc and cxx compiler support -rpath directly
++ hardcode_libdir_flag_spec='-rpath $libdir'
++ fi
++ hardcode_libdir_separator=:
++ ;;
++ sco3.2v5*)
++ ;;
++ solaris*)
++ hardcode_libdir_flag_spec='-R$libdir'
++ ;;
++ sunos4*)
++ hardcode_libdir_flag_spec='-L$libdir'
++ hardcode_direct=yes
++ hardcode_minus_L=yes
++ ;;
++ sysv4)
++ if test "x$host_vendor" = xsno; then
++ hardcode_direct=yes # is this really true???
++ else
++ hardcode_direct=no # Motorola manual says yes, but my tests say they lie
++ fi
++ ;;
++ sysv4.3*)
++ ;;
++ sysv5*)
++ hardcode_libdir_flag_spec=
++ ;;
++ uts4*)
++ hardcode_libdir_flag_spec='-L$libdir'
++ ;;
++ dgux*)
++ hardcode_libdir_flag_spec='-L$libdir'
++ ;;
++ sysv4*MP*)
++ if test -d /usr/nec; then
++ ld_shlibs=yes
++ fi
++ ;;
++ sysv4.2uw2*)
++ hardcode_direct=yes
++ hardcode_minus_L=no
++ ;;
++ sysv5uw7* | unixware7*)
++ ;;
++ *)
++ ld_shlibs=no
++ ;;
++ esac
++fi
++
++# Check dynamic linker characteristics
++libname_spec='lib$name'
++sys_lib_dlsearch_path_spec="/lib /usr/lib"
++sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
++case "$host_os" in
++ aix3*)
++ shlibext=so
++ ;;
++ aix4* | aix5*)
++ shlibext=so
++ ;;
++ amigaos*)
++ shlibext=ixlibrary
++ ;;
++ beos*)
++ shlibext=so
++ ;;
++ bsdi4*)
++ shlibext=so
++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
++ ;;
++ cygwin* | mingw* | pw32*)
++ case $GCC,$host_os in
++ yes,cygwin*)
++ shlibext=dll.a
++ ;;
++ yes,mingw*)
++ shlibext=dll
++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"`
++ ;;
++ yes,pw32*)
++ shlibext=dll
++ ;;
++ *)
++ shlibext=dll
++ ;;
++ esac
++ ;;
++ darwin* | rhapsody*)
++ shlibext=dylib
++ ;;
++ freebsd1*)
++ ;;
++ freebsd*)
++ shlibext=so
++ ;;
++ gnu*)
++ shlibext=so
++ ;;
++ hpux9* | hpux10* | hpux11*)
++ shlibext=sl
++ ;;
++ irix5* | irix6*)
++ shlibext=so
++ case "$host_os" in
++ irix5*)
++ libsuff= shlibsuff=
++ ;;
++ *)
++ case $LD in
++ *-32|*"-32 ") libsuff= shlibsuff= ;;
++ *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 ;;
++ *-64|*"-64 ") libsuff=64 shlibsuff=64 ;;
++ *) libsuff= shlibsuff= ;;
++ esac
++ ;;
++ esac
++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
++ ;;
++ linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
++ ;;
++ linux-gnu*)
++ shlibext=so
++ ;;
++ netbsd*)
++ shlibext=so
++ ;;
++ newsos6)
++ shlibext=so
++ ;;
++ openbsd*)
++ shlibext=so
++ ;;
++ os2*)
++ libname_spec='$name'
++ shlibext=dll
++ ;;
++ osf3* | osf4* | osf5*)
++ shlibext=so
++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
++ ;;
++ sco3.2v5*)
++ shlibext=so
++ ;;
++ solaris*)
++ shlibext=so
++ ;;
++ sunos4*)
++ shlibext=so
++ ;;
++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
++ shlibext=so
++ case "$host_vendor" in
++ motorola)
++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
++ ;;
++ esac
++ ;;
++ uts4*)
++ shlibext=so
++ ;;
++ dgux*)
++ shlibext=so
++ ;;
++ sysv4*MP*)
++ if test -d /usr/nec; then
++ shlibext=so
++ fi
++ ;;
++esac
++
++sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
++escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
++escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
++escaped_sys_lib_search_path_spec=`echo "X$sys_lib_search_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
++escaped_sys_lib_dlsearch_path_spec=`echo "X$sys_lib_dlsearch_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
++
++sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
++
++# How to pass a linker flag through the compiler.
++wl="$escaped_wl"
++
++# Static library suffix (normally "a").
++libext="$libext"
++
++# Shared library suffix (normally "so").
++shlibext="$shlibext"
++
++# Flag to hardcode \$libdir into a binary during linking.
++# This must work even if \$libdir does not exist.
++hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
++
++# Whether we need a single -rpath flag with a separated argument.
++hardcode_libdir_separator="$hardcode_libdir_separator"
++
++# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
++# resulting binary.
++hardcode_direct="$hardcode_direct"
++
++# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
++# resulting binary.
++hardcode_minus_L="$hardcode_minus_L"
++
++# Compile-time system search path for libraries
++sys_lib_search_path_spec="$escaped_sys_lib_search_path_spec"
++
++# Run-time system search path for libraries
++sys_lib_dlsearch_path_spec="$escaped_sys_lib_dlsearch_path_spec"
++
++EOF
+diff -pruN dillo-0.8.6/config.sub dillo-0.8.6-i18n-misc-20060709/config.sub
+--- dillo-0.8.6/config.sub 2005-03-22 16:17:05.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/config.sub 2006-05-16 01:21:07.000000000 +0900
+@@ -1,9 +1,9 @@
+ #! /bin/sh
+ # Configuration validation subroutine script.
+ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+-# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+-timestamp='2005-02-10'
++timestamp='2004-03-12'
+
+ # This file is (in principle) common to ALL GNU software.
+ # The presence of a machine in this file suggests that SOME GNU software
+@@ -70,7 +70,7 @@ Report bugs and patches to <config-patch
+ version="\
+ GNU config.sub ($timestamp)
+
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+ Free Software Foundation, Inc.
+
+ This is free software; see the source for copying conditions. There is NO
+@@ -145,7 +145,7 @@ case $os in
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+- -apple | -axis | -knuth | -cray)
++ -apple | -axis)
+ os=
+ basic_machine=$1
+ ;;
+@@ -237,7 +237,7 @@ case $basic_machine in
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
+- | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
++ | m32r | m32rle | m68000 | m68k | m88k | mcore \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+@@ -264,10 +264,10 @@ case $basic_machine in
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \
+ | strongarm \
+- | tahoe | thumb | tic4x | tic80 | tron \
++ | tahoe | thumb | tic80 | tron \
+ | v850 | v850e \
+ | we32k \
+- | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
++ | x86 | xscale | xstormy16 | xtensa \
+ | z8k)
+ basic_machine=$basic_machine-unknown
+ ;;
+@@ -300,7 +300,7 @@ case $basic_machine in
+ | avr-* \
+ | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+- | clipper-* | craynv-* | cydra-* \
++ | clipper-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+@@ -310,7 +310,7 @@ case $basic_machine in
+ | ip2k-* | iq2000-* \
+ | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+- | m88110-* | m88k-* | maxq-* | mcore-* \
++ | m88110-* | m88k-* | mcore-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+@@ -326,9 +326,8 @@ case $basic_machine in
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+- | mmix-* \
+ | msp430-* \
+- | none-* | np1-* | ns16k-* | ns32k-* \
++ | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+@@ -343,8 +342,8 @@ case $basic_machine in
+ | tron-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+- | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+- | xstormy16-* | xtensa-* \
++ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
++ | xtensa-* \
+ | ymp-* \
+ | z8k-*)
+ ;;
+@@ -446,10 +445,6 @@ case $basic_machine in
+ basic_machine=j90-cray
+ os=-unicos
+ ;;
+- craynv)
+- basic_machine=craynv-cray
+- os=-unicosmp
+- ;;
+ cr16c)
+ basic_machine=cr16c-unknown
+ os=-elf
+@@ -457,9 +452,6 @@ case $basic_machine in
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+- crisv32 | crisv32-* | etraxfs*)
+- basic_machine=crisv32-axis
+- ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+@@ -489,10 +481,6 @@ case $basic_machine in
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+- djgpp)
+- basic_machine=i586-pc
+- os=-msdosdjgpp
+- ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+@@ -671,6 +659,10 @@ case $basic_machine in
+ mips3*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ ;;
++ mmix*)
++ basic_machine=mmix-knuth
++ os=-mmixware
++ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+@@ -751,6 +743,10 @@ case $basic_machine in
+ np1)
+ basic_machine=np1-gould
+ ;;
++ nv1)
++ basic_machine=nv1-cray
++ os=-unicosmp
++ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+@@ -797,24 +793,18 @@ case $basic_machine in
+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
+ basic_machine=i686-pc
+ ;;
+- pentiumii | pentium2 | pentiumiii | pentium3)
++ pentiumii | pentium2)
+ basic_machine=i686-pc
+ ;;
+- pentium4)
+- basic_machine=i786-pc
+- ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
++ pentiumii-* | pentium2-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+- pentium4-*)
+- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+- ;;
+ pn)
+ basic_machine=pn-gould
+ ;;
+@@ -873,10 +863,6 @@ case $basic_machine in
+ sb1el)
+ basic_machine=mipsisa64sb1el-unknown
+ ;;
+- sei)
+- basic_machine=mips-sei
+- os=-seiux
+- ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+@@ -884,9 +870,6 @@ case $basic_machine in
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
+- sh64)
+- basic_machine=sh64-unknown
+- ;;
+ sparclite-wrs | simso-wrs)
+ basic_machine=sparclite-wrs
+ os=-vxworks
+@@ -961,6 +944,10 @@ case $basic_machine in
+ basic_machine=t90-cray
+ os=-unicos
+ ;;
++ tic4x | c4x*)
++ basic_machine=tic4x-unknown
++ os=-coff
++ ;;
+ tic54x | c54x*)
+ basic_machine=tic54x-unknown
+ os=-coff
+@@ -1033,10 +1020,6 @@ case $basic_machine in
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+- xbox)
+- basic_machine=i686-pc
+- os=-mingw32
+- ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+@@ -1067,9 +1050,6 @@ case $basic_machine in
+ romp)
+ basic_machine=romp-ibm
+ ;;
+- mmix)
+- basic_machine=mmix-knuth
+- ;;
+ rs6000)
+ basic_machine=rs6000-ibm
+ ;;
+@@ -1202,9 +1182,6 @@ case $os in
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
+ ;;
+- -linux-dietlibc)
+- os=-linux-dietlibc
+- ;;
+ -linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+@@ -1305,9 +1282,6 @@ case $os in
+ -kaos*)
+ os=-kaos
+ ;;
+- -zvmoe)
+- os=-zvmoe
+- ;;
+ -none)
+ ;;
+ *)
+@@ -1339,9 +1313,6 @@ case $basic_machine in
+ arm*-semi)
+ os=-aout
+ ;;
+- c4x-* | tic4x-*)
+- os=-coff
+- ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=-tops20
+@@ -1388,9 +1359,6 @@ case $basic_machine in
+ *-ibm)
+ os=-aix
+ ;;
+- *-knuth)
+- os=-mmixware
+- ;;
+ *-wec)
+ os=-proelf
+ ;;
+diff -pruN dillo-0.8.6/configure dillo-0.8.6-i18n-misc-20060709/configure
+--- dillo-0.8.6/configure 2006-04-27 01:06:45.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/configure 2006-05-16 01:21:07.000000000 +0900
+@@ -309,7 +309,7 @@ ac_includes_default="\
+ # include <unistd.h>
+ #endif"
+
+-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DLGUI_TRUE DLGUI_FALSE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE GLIB_CONFIG GLIB_CFLAGS GLIB_LIBS GTK_CONFIG GTK_CFLAGS GTK_LIBS EGREP LIBJPEG_LIBS LIBJPEG_LDFLAGS LIBJPEG_CPPFLAGS LIBPNG_LIBS LIBPNG_CFLAGS LIBZ_LIBS LIBSSL_LIBS LIBPTHREAD_LIBS LIBPTHREAD_LDFLAGS LIBFLTK_CXXFLAGS LIBFLTK_LIBS src doc bin util lib LIBOBJS LTLIBOBJS'
++ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot DLGUI_TRUE DLGUI_FALSE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE MKINSTALLDIRS MSGFMT GMSGFMT XGETTEXT MSGMERGE USE_NLS LIBICONV LTLIBICONV INTLLIBS LIBINTL LTLIBINTL POSUB localedir GLIB_CONFIG GLIB_CFLAGS GLIB_LIBS GTK_CONFIG GTK_CFLAGS GTK_LIBS EGREP XFT_CONFIG PKG_CONFIG LIBJPEG_LIBS LIBJPEG_LDFLAGS LIBJPEG_CPPFLAGS LIBPNG_LIBS LIBPNG_CFLAGS LIBZ_LIBS LIBSSL_LIBS LIBPTHREAD_LIBS LIBPTHREAD_LDFLAGS LIBFLTK_CXXFLAGS LIBFLTK_LIBS src doc bin util lib LIBOBJS LTLIBOBJS'
+ ac_subst_files=''
+
+ # Initialize some variables set by options.
+@@ -862,6 +862,8 @@ Optional Features:
+ --enable-gprof Try to compile and run with profiling enabled
+ --enable-insure Try to compile and run with Insure++
+ --enable-ansi Try to compile and run with ANSI flags
++ --disable-tabs Don't compile support for tabs
++ --disable-anti-alias Don't compile support for anti-alias
+ --enable-ipv6 Build with support for IPv6
+ --enable-rtfl Build with rtfl messages
+ --disable-cookies Don't compile support for cookies
+@@ -871,8 +873,11 @@ Optional Features:
+ --disable-ssl Disable ssl features (eg. https)
+ --disable-dlgui Disable FLTK2 GUI for downloads
+ --disable-threaded-dns Disable the advantage of a reentrant resolver library
+- --disable-dependency-tracking speeds up one-time build
+- --enable-dependency-tracking do not reject slow dependency extractors
++ --enable-meta-refresh Allow meta refresh
++ --disable-dependency-tracking Speeds up one-time builds
++ --enable-dependency-tracking Do not reject slow dependency extractors
++ --disable-rpath do not hardcode runtime library paths
++ --disable-nls do not use Native Language Support
+ --disable-glibtest Do not try to compile and run a test GLIB program
+ --disable-gtktest Do not try to compile and run a test GTK program
+
+@@ -881,6 +886,11 @@ Optional Packages:
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-jpeg-lib=DIR Specify where to find libjpeg
+ --with-jpeg-inc=DIR Specify where to find libjpeg's headers
++ --with-gnu-ld assume the C compiler uses GNU ld default=no
++ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib
++ --without-libiconv-prefix don't search for libiconv in includedir and libdir
++ --with-libintl-prefix=DIR search for libintl in DIR/include and DIR/lib
++ --without-libintl-prefix don't search for libintl in includedir and libdir
+ --with-glib-prefix=PFX Prefix where GLIB is installed (optional)
+ --with-glib-exec-prefix=PFX Exec prefix where GLIB is installed (optional)
+ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)
+@@ -1444,7 +1454,7 @@ test -n "$target_alias" &&
+ NONENONEs,x,x, &&
+ program_prefix=${target_alias}-
+
+-am__api_version="1.9"
++am__api_version="1.7"
+ # Find a good install program. We prefer a C program (faster),
+ # so one script is as good as another. But avoid the broken or
+ # incompatible versions:
+@@ -1582,6 +1592,7 @@ _ACEOF
+ program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+ rm conftest.sed
+
++
+ # expand $ac_aux_dir to an absolute path
+ am_aux_dir=`cd $ac_aux_dir && pwd`
+
+@@ -1595,39 +1606,6 @@ else
+ echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+ fi
+
+-if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+- # We used to keeping the `.' as first argument, in order to
+- # allow $(mkdir_p) to be used without argument. As in
+- # $(mkdir_p) $(somedir)
+- # where $(somedir) is conditionally defined. However this is wrong
+- # for two reasons:
+- # 1. if the package is installed by a user who cannot write `.'
+- # make install will fail,
+- # 2. the above comment should most certainly read
+- # $(mkdir_p) $(DESTDIR)$(somedir)
+- # so it does not work when $(somedir) is undefined and
+- # $(DESTDIR) is not.
+- # To support the latter case, we have to write
+- # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+- # so the `.' trick is pointless.
+- mkdir_p='mkdir -p --'
+-else
+- # On NextStep and OpenStep, the `mkdir' command does not
+- # recognize any option. It will interpret all options as
+- # directories to create, and then abort because `.' already
+- # exists.
+- for d in ./-p ./--version;
+- do
+- test -d $d && rmdir $d
+- done
+- # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+- if test -f "$ac_aux_dir/mkinstalldirs"; then
+- mkdir_p='$(mkinstalldirs)'
+- else
+- mkdir_p='$(install_sh) -d'
+- fi
+-fi
+-
+ for ac_prog in gawk mawk nawk awk
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+@@ -1706,7 +1684,7 @@ else
+ fi
+ rmdir .tst 2>/dev/null
+
+-# test to see if srcdir already configured
++ # test to see if srcdir already configured
+ if test "`cd $srcdir && pwd`" != "`pwd`" &&
+ test -f $srcdir/config.status; then
+ { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+@@ -1726,7 +1704,7 @@ fi
+
+ # Define the identity of the package.
+ PACKAGE=dillo
+- VERSION=0.8.6
++ VERSION=0.8.6-i18n-misc
+
+
+ cat >>confdefs.h <<_ACEOF
+@@ -1754,6 +1732,9 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_ru
+
+ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
++
++AMTAR=${AMTAR-"${am_missing_run}tar"}
++
+ install_sh=${install_sh-"$am_aux_dir/install-sh"}
+
+ # Installed binaries are usually stripped using `strip' when the user
+@@ -1846,13 +1827,6 @@ INSTALL_STRIP_PROGRAM="\${SHELL} \$(inst
+
+ # We need awk for the "check" target. The system "awk" is bad on
+ # some platforms.
+-# Always define AMTAR for backward compatibility.
+-
+-AMTAR=${AMTAR-"${am_missing_run}tar"}
+-
+-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+-
+-
+
+
+
+@@ -1901,6 +1875,20 @@ if test "${enable_ansi+set}" = set; then
+ else
+ enable_ansi=no
+ fi;
++# Check whether --enable-tabs or --disable-tabs was given.
++if test "${enable_tabs+set}" = set; then
++ enableval="$enable_tabs"
++
++else
++ enable_tabs=yes
++fi;
++# Check whether --enable-anti_alias or --disable-anti_alias was given.
++if test "${enable_anti_alias+set}" = set; then
++ enableval="$enable_anti_alias"
++
++else
++ enable_anti_alias=yes
++fi;
+ # Check whether --enable-ipv6 or --disable-ipv6 was given.
+ if test "${enable_ipv6+set}" = set; then
+ enableval="$enable_ipv6"
+@@ -1909,7 +1897,9 @@ fi;
+ # Check whether --enable-rtfl or --disable-rtfl was given.
+ if test "${enable_rtfl+set}" = set; then
+ enableval="$enable_rtfl"
+- enable_rtfl=yes
++
++else
++ enable_rtfl=no
+ fi;
+ # Check whether --enable-cookies or --disable-cookies was given.
+ if test "${enable_cookies+set}" = set; then
+@@ -1970,6 +1960,13 @@ else
+ DLGUI_FALSE=
+ fi
+
++# Check whether --enable-meta_refresh or --disable-meta_refresh was given.
++if test "${enable_meta_refresh+set}" = set; then
++ enableval="$enable_meta_refresh"
++
++else
++ enable_meta_refresh=no
++fi;
+
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+@@ -3007,9 +3004,7 @@ else
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+- # Solaris 8's {/usr,}/bin/sh.
+- touch sub/conftst$i.h
++ : > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+@@ -3037,14 +3032,9 @@ else
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+- # or remarks (even with -Werror). So we grep stderr for any message
+- # that says an option was ignored or not supported.
+- # When given -MP, icc 7.0 and 7.1 complain thusly:
+- # icc: Command line warning: ignoring option '-M'; no argument required
+- # The diagnosis changed in icc 8.0:
+- # icc: Command line remark: option '-MP' not supported
+- if (grep 'ignoring option' conftest.err ||
+- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
++ # (even with -Werror). So we grep stderr for any message
++ # that says an option was ignored.
++ if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+@@ -3075,101 +3065,128 @@ else
+ fi
+
+
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_CC+set}" = set; then
++
++
++
++
++echo "$as_me:$LINENO: checking for ${CC-cc} option to accept ANSI C" >&5
++echo $ECHO_N "checking for ${CC-cc} option to accept ANSI C... $ECHO_C" >&6
++if test "${am_cv_prog_cc_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if test -n "$CC"; then
+- ac_cv_prog_CC="$CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
++ am_cv_prog_cc_stdc=no
++ac_save_CC="$CC"
++# Don't try gcc -ansi; that turns off useful extensions and
++# breaks some systems' header files.
++# AIX -qlanglvl=ansi
++# Ultrix and OSF/1 -std1
++# HP-UX 10.20 and later -Ae
++# HP-UX older versions -Aa -D_HPUX_SOURCE
++# SVR4 -Xc -D__EXTENSIONS__
++for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+ do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_CC="${ac_tool_prefix}gcc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
++ CC="$ac_save_CC $ac_arg"
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++#include <stdarg.h>
++#include <stdio.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
++struct buf { int x; };
++FILE * (*rcsopen) (struct buf *, struct stat *, int);
++static char *e (p, i)
++ char **p;
++ int i;
++{
++ return p[i];
++}
++static char *f (char * (*g) (char **, int), char **p, ...)
++{
++ char *s;
++ va_list v;
++ va_start (v,p);
++ s = g (p, va_arg (v,int));
++ va_end (v);
++ return s;
++}
++int test (int i, double x);
++struct s1 {int (*f) (int a);};
++struct s2 {int (*f) (double a);};
++int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
++int argc;
++char **argv;
+
+-fi
+-fi
+-CC=$ac_cv_prog_CC
+-if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++int
++main ()
++{
++
++return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ am_cv_prog_cc_stdc="$ac_arg"; break
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
+
+ fi
+-if test -z "$ac_cv_prog_CC"; then
+- ac_ct_CC=$CC
+- # Extract the first word of "gcc", so it can be a program name with args.
+-set dummy gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$ac_ct_CC"; then
+- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CC="gcc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
++CC="$ac_save_CC"
+
+ fi
+-fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+
+- CC=$ac_ct_CC
++if test -z "$am_cv_prog_cc_stdc"; then
++ echo "$as_me:$LINENO: result: none needed" >&5
++echo "${ECHO_T}none needed" >&6
+ else
+- CC="$ac_cv_prog_CC"
++ echo "$as_me:$LINENO: result: $am_cv_prog_cc_stdc" >&5
++echo "${ECHO_T}$am_cv_prog_cc_stdc" >&6
+ fi
++case "x$am_cv_prog_cc_stdc" in
++ x|xno) ;;
++ *) CC="$CC $am_cv_prog_cc_stdc" ;;
++esac
+
+-if test -z "$CC"; then
+- if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}cc; ac_word=$2
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
++set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+ echo "$as_me:$LINENO: checking for $ac_word" >&5
+ echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_CC+set}" = set; then
++if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if test -n "$CC"; then
+- ac_cv_prog_CC="$CC" # Let the user override the test.
++ if test -n "$RANLIB"; then
++ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+@@ -3178,7 +3195,7 @@ do
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_CC="${ac_tool_prefix}cc"
++ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -3187,27 +3204,27 @@ done
+
+ fi
+ fi
+-CC=$ac_cv_prog_CC
+-if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++RANLIB=$ac_cv_prog_RANLIB
++if test -n "$RANLIB"; then
++ echo "$as_me:$LINENO: result: $RANLIB" >&5
++echo "${ECHO_T}$RANLIB" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
+ fi
+
+ fi
+-if test -z "$ac_cv_prog_CC"; then
+- ac_ct_CC=$CC
+- # Extract the first word of "cc", so it can be a program name with args.
+-set dummy cc; ac_word=$2
++if test -z "$ac_cv_prog_RANLIB"; then
++ ac_ct_RANLIB=$RANLIB
++ # Extract the first word of "ranlib", so it can be a program name with args.
++set dummy ranlib; ac_word=$2
+ echo "$as_me:$LINENO: checking for $ac_word" >&5
+ echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
++if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if test -n "$ac_ct_CC"; then
+- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
++ if test -n "$ac_ct_RANLIB"; then
++ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+@@ -3216,97 +3233,281 @@ do
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CC="cc"
++ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+
++ test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+ fi
+ fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
++if test -n "$ac_ct_RANLIB"; then
++ echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
++echo "${ECHO_T}$ac_ct_RANLIB" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
+ fi
+
+- CC=$ac_ct_CC
++ RANLIB=$ac_ct_RANLIB
+ else
+- CC="$ac_cv_prog_CC"
++ RANLIB="$ac_cv_prog_RANLIB"
+ fi
+
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
++# On Suns, sometimes $CPP names a directory.
++if test -n "$CPP" && test -d "$CPP"; then
++ CPP=
+ fi
+-if test -z "$CC"; then
+- # Extract the first word of "cc", so it can be a program name with args.
+-set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_CC+set}" = set; then
++if test -z "$CPP"; then
++ if test "${ac_cv_prog_CPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if test -n "$CC"; then
+- ac_cv_prog_CC="$CC" # Let the user override the test.
+-else
+- ac_prog_rejected=no
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+- ac_prog_rejected=yes
+- continue
+- fi
+- ac_cv_prog_CC="cc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
++ # Double quotes because CPP needs to be expanded
++ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
++ do
++ ac_preproc_ok=false
++for ac_c_preproc_warn_flag in '' yes
++do
++ # Use a header file that comes with gcc, so configuring glibc
++ # with a fresh cross-compiler works.
++ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ # <limits.h> exists even on freestanding compilers.
++ # On the NeXT, cc -E runs the code through the compiler's parser,
++ # not just through cpp. "Syntax error" is here to catch this case.
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++#ifdef __STDC__
++# include <limits.h>
++#else
++# include <assert.h>
++#endif
++ Syntax error
++_ACEOF
++if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
++ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } >/dev/null; then
++ if test -s conftest.err; then
++ ac_cpp_err=$ac_c_preproc_warn_flag
++ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
++ else
++ ac_cpp_err=
+ fi
++else
++ ac_cpp_err=yes
++fi
++if test -z "$ac_cpp_err"; then
++ :
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ # Broken: fails on valid input.
++continue
++fi
++rm -f conftest.err conftest.$ac_ext
++
++ # OK, works on sane cases. Now check whether non-existent headers
++ # can be detected and how.
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++#include <ac_nonexistent.h>
++_ACEOF
++if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
++ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } >/dev/null; then
++ if test -s conftest.err; then
++ ac_cpp_err=$ac_c_preproc_warn_flag
++ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
++ else
++ ac_cpp_err=
++ fi
++else
++ ac_cpp_err=yes
++fi
++if test -z "$ac_cpp_err"; then
++ # Broken: success on invalid input.
++continue
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ # Passes both tests.
++ac_preproc_ok=:
++break
++fi
++rm -f conftest.err conftest.$ac_ext
++
+ done
+-done
++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
++rm -f conftest.err conftest.$ac_ext
++if $ac_preproc_ok; then
++ break
++fi
+
+-if test $ac_prog_rejected = yes; then
+- # We found a bogon in the path, so make sure we never use it.
+- set dummy $ac_cv_prog_CC
+- shift
+- if test $# != 0; then
+- # We chose a different compiler from the bogus one.
+- # However, it has the same basename, so the bogon will be chosen
+- # first if we set CC to just the basename; use the full file name.
+- shift
+- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
++ done
++ ac_cv_prog_CPP=$CPP
++
++fi
++ CPP=$ac_cv_prog_CPP
++else
++ ac_cv_prog_CPP=$CPP
++fi
++echo "$as_me:$LINENO: result: $CPP" >&5
++echo "${ECHO_T}$CPP" >&6
++ac_preproc_ok=false
++for ac_c_preproc_warn_flag in '' yes
++do
++ # Use a header file that comes with gcc, so configuring glibc
++ # with a fresh cross-compiler works.
++ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ # <limits.h> exists even on freestanding compilers.
++ # On the NeXT, cc -E runs the code through the compiler's parser,
++ # not just through cpp. "Syntax error" is here to catch this case.
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++#ifdef __STDC__
++# include <limits.h>
++#else
++# include <assert.h>
++#endif
++ Syntax error
++_ACEOF
++if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
++ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } >/dev/null; then
++ if test -s conftest.err; then
++ ac_cpp_err=$ac_c_preproc_warn_flag
++ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
++ else
++ ac_cpp_err=
+ fi
++else
++ ac_cpp_err=yes
+ fi
++if test -z "$ac_cpp_err"; then
++ :
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ # Broken: fails on valid input.
++continue
+ fi
++rm -f conftest.err conftest.$ac_ext
++
++ # OK, works on sane cases. Now check whether non-existent headers
++ # can be detected and how.
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++#include <ac_nonexistent.h>
++_ACEOF
++if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
++ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } >/dev/null; then
++ if test -s conftest.err; then
++ ac_cpp_err=$ac_c_preproc_warn_flag
++ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
++ else
++ ac_cpp_err=
++ fi
++else
++ ac_cpp_err=yes
+ fi
+-CC=$ac_cv_prog_CC
+-if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++if test -z "$ac_cpp_err"; then
++ # Broken: success on invalid input.
++continue
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ # Passes both tests.
++ac_preproc_ok=:
++break
+ fi
++rm -f conftest.err conftest.$ac_ext
+
++done
++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
++rm -f conftest.err conftest.$ac_ext
++if $ac_preproc_ok; then
++ :
++else
++ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
++See \`config.log' for more details." >&5
++echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
++See \`config.log' for more details." >&2;}
++ { (exit 1); exit 1; }; }
+ fi
+-if test -z "$CC"; then
+- if test -n "$ac_tool_prefix"; then
+- for ac_prog in cl
++
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++ac_ext=cc
++ac_cpp='$CXXCPP $CPPFLAGS'
++ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
++if test -n "$ac_tool_prefix"; then
++ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+ set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+ echo "$as_me:$LINENO: checking for $ac_word" >&5
+ echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_CC+set}" = set; then
++if test "${ac_cv_prog_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if test -n "$CC"; then
+- ac_cv_prog_CC="$CC" # Let the user override the test.
++ if test -n "$CXX"; then
++ ac_cv_prog_CXX="$CXX" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+@@ -3315,7 +3516,7 @@ do
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
++ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -3324,31 +3525,31 @@ done
+
+ fi
+ fi
+-CC=$ac_cv_prog_CC
+-if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++CXX=$ac_cv_prog_CXX
++if test -n "$CXX"; then
++ echo "$as_me:$LINENO: result: $CXX" >&5
++echo "${ECHO_T}$CXX" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
+ fi
+
+- test -n "$CC" && break
++ test -n "$CXX" && break
+ done
+ fi
+-if test -z "$CC"; then
+- ac_ct_CC=$CC
+- for ac_prog in cl
++if test -z "$CXX"; then
++ ac_ct_CXX=$CXX
++ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ echo "$as_me:$LINENO: checking for $ac_word" >&5
+ echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
++if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if test -n "$ac_ct_CC"; then
+- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
++ if test -n "$ac_ct_CXX"; then
++ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+@@ -3357,7 +3558,7 @@ do
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CC="$ac_prog"
++ ac_cv_prog_ac_ct_CXX="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -3366,33 +3567,26 @@ done
+
+ fi
+ fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
++if test -n "$ac_ct_CXX"; then
++ echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
++echo "${ECHO_T}$ac_ct_CXX" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
+ fi
+
+- test -n "$ac_ct_CC" && break
++ test -n "$ac_ct_CXX" && break
+ done
++test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+- CC=$ac_ct_CC
+-fi
+-
++ CXX=$ac_ct_CXX
+ fi
+
+
+-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: no acceptable C compiler found in \$PATH
+-See \`config.log' for more details." >&2;}
+- { (exit 1); exit 1; }; }
+-
+ # Provide some information about the compiler.
+ echo "$as_me:$LINENO:" \
+- "checking for C compiler version" >&5
++ "checking for C++ compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+ { (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+@@ -3410,9 +3604,9 @@ ac_compiler=`set X $ac_compile; echo $2`
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+-if test "${ac_cv_c_compiler_gnu+set}" = set; then
++echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
++echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
++if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -3427,189 +3621,13 @@ main ()
+ {
+ #ifndef __GNUC__
+ choke me
+-#endif
+-
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_compiler_gnu=yes
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-ac_compiler_gnu=no
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-ac_cv_c_compiler_gnu=$ac_compiler_gnu
+-
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+-GCC=`test $ac_compiler_gnu = yes && echo yes`
+-ac_test_CFLAGS=${CFLAGS+set}
+-ac_save_CFLAGS=$CFLAGS
+-CFLAGS="-g"
+-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+-if test "${ac_cv_prog_cc_g+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-int
+-main ()
+-{
+-
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
+- || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_prog_cc_g=yes
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-ac_cv_prog_cc_g=no
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+-if test "$ac_test_CFLAGS" = set; then
+- CFLAGS=$ac_save_CFLAGS
+-elif test $ac_cv_prog_cc_g = yes; then
+- if test "$GCC" = yes; then
+- CFLAGS="-g -O2"
+- else
+- CFLAGS="-g"
+- fi
+-else
+- if test "$GCC" = yes; then
+- CFLAGS="-O2"
+- else
+- CFLAGS=
+- fi
+-fi
+-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+-if test "${ac_cv_prog_cc_stdc+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_cv_prog_cc_stdc=no
+-ac_save_CC=$CC
+-cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <stdarg.h>
+-#include <stdio.h>
+-#include <sys/types.h>
+-#include <sys/stat.h>
+-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+-struct buf { int x; };
+-FILE * (*rcsopen) (struct buf *, struct stat *, int);
+-static char *e (p, i)
+- char **p;
+- int i;
+-{
+- return p[i];
+-}
+-static char *f (char * (*g) (char **, int), char **p, ...)
+-{
+- char *s;
+- va_list v;
+- va_start (v,p);
+- s = g (p, va_arg (v,int));
+- va_end (v);
+- return s;
+-}
+-
+-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+- function prototypes and stuff, but not '\xHH' hex character constants.
+- These don't provoke an error unfortunately, instead are silently treated
+- as 'x'. The following induces an error, until -std1 is added to get
+- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+- array size at least. It's necessary to write '\x00'==0 to get something
+- that's true only with -std1. */
+-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+-
+-int test (int i, double x);
+-struct s1 {int (*f) (int a);};
+-struct s2 {int (*f) (double a);};
+-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+-int argc;
+-char **argv;
+-int
+-main ()
+-{
+-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
++#endif
++
+ ;
+ return 0;
+ }
+ _ACEOF
+-# Don't try gcc -ansi; that turns off useful extensions and
+-# breaks some systems' header files.
+-# AIX -qlanglvl=ansi
+-# Ultrix and OSF/1 -std1
+-# HP-UX 10.20 and later -Ae
+-# HP-UX older versions -Aa -D_HPUX_SOURCE
+-# SVR4 -Xc -D__EXTENSIONS__
+-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+-do
+- CC="$ac_save_CC $ac_arg"
+- rm -f conftest.$ac_objext
++rm -f conftest.$ac_objext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+@@ -3618,7 +3636,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
++ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+@@ -3631,38 +3649,42 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+- ac_cv_prog_cc_stdc=$ac_arg
+-break
++ ac_compiler_gnu=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++ac_compiler_gnu=no
+ fi
+-rm -f conftest.err conftest.$ac_objext
+-done
+-rm -f conftest.$ac_ext conftest.$ac_objext
+-CC=$ac_save_CC
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+ fi
++echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
++GXX=`test $ac_compiler_gnu = yes && echo yes`
++ac_test_CXXFLAGS=${CXXFLAGS+set}
++ac_save_CXXFLAGS=$CXXFLAGS
++CXXFLAGS="-g"
++echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
++echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
++if test "${ac_cv_prog_cxx_g+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+
+-case "x$ac_cv_prog_cc_stdc" in
+- x|xno)
+- echo "$as_me:$LINENO: result: none needed" >&5
+-echo "${ECHO_T}none needed" >&6 ;;
+- *)
+- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+- CC="$CC $ac_cv_prog_cc_stdc" ;;
+-esac
++int
++main ()
++{
+
+-# Some people use a C++ compiler to compile C. Since we use `exit',
+-# in C++ we need to declare it. In case someone uses the same compiler
+-# for both compiling C and C++ we need to have the C++ compiler decide
+-# the declaration of exit, since it's the most demanding environment.
+-cat >conftest.$ac_ext <<_ACEOF
+-#ifndef __cplusplus
+- choke me
+-#endif
++ ;
++ return 0;
++}
+ _ACEOF
+ rm -f conftest.$ac_objext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+@@ -3673,7 +3695,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
++ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+@@ -3686,7 +3708,33 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+- for ac_declaration in \
++ ac_cv_prog_cxx_g=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_cv_prog_cxx_g=no
++fi
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
++if test "$ac_test_CXXFLAGS" = set; then
++ CXXFLAGS=$ac_save_CXXFLAGS
++elif test $ac_cv_prog_cxx_g = yes; then
++ if test "$GXX" = yes; then
++ CXXFLAGS="-g -O2"
++ else
++ CXXFLAGS="-g"
++ fi
++else
++ if test "$GXX" = yes; then
++ CXXFLAGS="-O2"
++ else
++ CXXFLAGS=
++ fi
++fi
++for ac_declaration in \
+ '' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+@@ -3719,7 +3767,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
++ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+@@ -3764,7 +3812,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag"
++ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+@@ -3792,23 +3840,17 @@ if test -n "$ac_declaration"; then
+ echo '#endif' >>confdefs.h
+ fi
+
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+-depcc="$CC" am_compiler_list=
++depcc="$CXX" am_compiler_list=
+
+ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+ echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
++if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+@@ -3830,7 +3872,7 @@ else
+ # directory.
+ mkdir sub
+
+- am_cv_CC_dependencies_compiler_type=none
++ am_cv_CXX_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+@@ -3845,9 +3887,7 @@ else
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+- # Solaris 8's {/usr,}/bin/sh.
+- touch sub/conftst$i.h
++ : > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+@@ -3875,15 +3915,10 @@ else
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+- # or remarks (even with -Werror). So we grep stderr for any message
+- # that says an option was ignored or not supported.
+- # When given -MP, icc 7.0 and 7.1 complain thusly:
+- # icc: Command line warning: ignoring option '-M'; no argument required
+- # The diagnosis changed in icc 8.0:
+- # icc: Command line remark: option '-MP' not supported
+- if (grep 'ignoring option' conftest.err ||
+- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+- am_cv_CC_dependencies_compiler_type=$depmode
++ # (even with -Werror). So we grep stderr for any message
++ # that says an option was ignored.
++ if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
++ am_cv_CXX_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+@@ -3892,807 +3927,1684 @@ else
+ cd ..
+ rm -rf conftest.dir
+ else
+- am_cv_CC_dependencies_compiler_type=none
++ am_cv_CXX_dependencies_compiler_type=none
+ fi
+
+ fi
+-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
+-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
++echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
++echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6
++CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+- && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+- am__fastdepCC_TRUE=
+- am__fastdepCC_FALSE='#'
++ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
++ am__fastdepCXX_TRUE=
++ am__fastdepCXX_FALSE='#'
+ else
+- am__fastdepCC_TRUE='#'
+- am__fastdepCC_FALSE=
++ am__fastdepCXX_TRUE='#'
++ am__fastdepCXX_FALSE=
+ fi
+
+
+
+-am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
++ALL_LINGUAS="ja zh_CN zh_TW"
+
+-if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
++ MKINSTALLDIRS=
++ if test -n "$ac_aux_dir"; then
++ case "$ac_aux_dir" in
++ /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;;
++ *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;;
++ esac
++ fi
++ if test -z "$MKINSTALLDIRS"; then
++ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
++ fi
++
++
++
++
++
++ # Extract the first word of "msgfmt", so it can be a program name with args.
++set dummy msgfmt; ac_word=$2
+ echo "$as_me:$LINENO: checking for $ac_word" >&5
+ echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_RANLIB+set}" = set; then
++if test "${ac_cv_path_MSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if test -n "$RANLIB"; then
+- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
++ case "$MSGFMT" in
++ /*)
++ ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
++ ;;
++ *)
++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
++ for ac_dir in $PATH; do
++ test -z "$ac_dir" && ac_dir=.
++ if test -f $ac_dir/$ac_word; then
++ if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 &&
++ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
++ ac_cv_path_MSGFMT="$ac_dir/$ac_word"
++ break
++ fi
++ fi
++ done
++ IFS="$ac_save_ifs"
++ test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":"
++ ;;
++esac
++fi
++MSGFMT="$ac_cv_path_MSGFMT"
++if test "$MSGFMT" != ":"; then
++ echo "$as_me:$LINENO: result: $MSGFMT" >&5
++echo "${ECHO_T}$MSGFMT" >&6
+ else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ # Extract the first word of "gmsgfmt", so it can be a program name with args.
++set dummy gmsgfmt; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_path_GMSGFMT+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ case $GMSGFMT in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
++ ;;
++ *)
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
++ ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+
++ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
++ ;;
++esac
+ fi
+-fi
+-RANLIB=$ac_cv_prog_RANLIB
+-if test -n "$RANLIB"; then
+- echo "$as_me:$LINENO: result: $RANLIB" >&5
+-echo "${ECHO_T}$RANLIB" >&6
++GMSGFMT=$ac_cv_path_GMSGFMT
++
++if test -n "$GMSGFMT"; then
++ echo "$as_me:$LINENO: result: $GMSGFMT" >&5
++echo "${ECHO_T}$GMSGFMT" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
+ fi
+
++
++ # Extract the first word of "xgettext", so it can be a program name with args.
++set dummy xgettext; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_path_XGETTEXT+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ case "$XGETTEXT" in
++ /*)
++ ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
++ ;;
++ *)
++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
++ for ac_dir in $PATH; do
++ test -z "$ac_dir" && ac_dir=.
++ if test -f $ac_dir/$ac_word; then
++ if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 &&
++ (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
++ ac_cv_path_XGETTEXT="$ac_dir/$ac_word"
++ break
++ fi
++ fi
++ done
++ IFS="$ac_save_ifs"
++ test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
++ ;;
++esac
+ fi
+-if test -z "$ac_cv_prog_RANLIB"; then
+- ac_ct_RANLIB=$RANLIB
+- # Extract the first word of "ranlib", so it can be a program name with args.
+-set dummy ranlib; ac_word=$2
++XGETTEXT="$ac_cv_path_XGETTEXT"
++if test "$XGETTEXT" != ":"; then
++ echo "$as_me:$LINENO: result: $XGETTEXT" >&5
++echo "${ECHO_T}$XGETTEXT" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ rm -f messages.po
++
++ # Extract the first word of "msgmerge", so it can be a program name with args.
++set dummy msgmerge; ac_word=$2
+ echo "$as_me:$LINENO: checking for $ac_word" >&5
+ echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
++if test "${ac_cv_path_MSGMERGE+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if test -n "$ac_ct_RANLIB"; then
+- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
++ case "$MSGMERGE" in
++ /*)
++ ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path.
++ ;;
++ *)
++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
++ for ac_dir in $PATH; do
++ test -z "$ac_dir" && ac_dir=.
++ if test -f $ac_dir/$ac_word; then
++ if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then
++ ac_cv_path_MSGMERGE="$ac_dir/$ac_word"
++ break
++ fi
++ fi
++ done
++ IFS="$ac_save_ifs"
++ test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":"
++ ;;
++esac
++fi
++MSGMERGE="$ac_cv_path_MSGMERGE"
++if test "$MSGMERGE" != ":"; then
++ echo "$as_me:$LINENO: result: $MSGMERGE" >&5
++echo "${ECHO_T}$MSGMERGE" >&6
+ else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_RANLIB="ranlib"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++
++ if test "$GMSGFMT" != ":"; then
++ if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 &&
++ (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
++ : ;
++ else
++ GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
++ echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5
++echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6
++ GMSGFMT=":"
++ fi
+ fi
+-done
+-done
+
+- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
++ if test "$XGETTEXT" != ":"; then
++ if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 &&
++ (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
++ : ;
++ else
++ echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5
++echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6
++ XGETTEXT=":"
++ fi
++ rm -f messages.po
++ fi
++
++ ac_config_commands="$ac_config_commands default-1"
++
++
++
++ if test "X$prefix" = "XNONE"; then
++ acl_final_prefix="$ac_default_prefix"
++ else
++ acl_final_prefix="$prefix"
++ fi
++ if test "X$exec_prefix" = "XNONE"; then
++ acl_final_exec_prefix='${prefix}'
++ else
++ acl_final_exec_prefix="$exec_prefix"
++ fi
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
++ prefix="$acl_save_prefix"
++
++
++# Check whether --with-gnu-ld or --without-gnu-ld was given.
++if test "${with_gnu_ld+set}" = set; then
++ withval="$with_gnu_ld"
++ test "$withval" = no || with_gnu_ld=yes
++else
++ with_gnu_ld=no
++fi;
++ac_prog=ld
++if test "$GCC" = yes; then
++ # Check if gcc -print-prog-name=ld gives a path.
++ echo "$as_me:$LINENO: checking for ld used by GCC" >&5
++echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6
++ case $host in
++ *-*-mingw*)
++ # gcc leaves a trailing carriage return which upsets mingw
++ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
++ *)
++ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
++ esac
++ case $ac_prog in
++ # Accept absolute paths.
++ [\\/]* | [A-Za-z]:[\\/]*)
++ re_direlt='/[^/][^/]*/\.\./'
++ # Canonicalize the path of ld
++ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
++ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
++ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
++ done
++ test -z "$LD" && LD="$ac_prog"
++ ;;
++ "")
++ # If it fails, then pretend we aren't using GCC.
++ ac_prog=ld
++ ;;
++ *)
++ # If it is relative, then search for the first ld in PATH.
++ with_gnu_ld=unknown
++ ;;
++ esac
++elif test "$with_gnu_ld" = yes; then
++ echo "$as_me:$LINENO: checking for GNU ld" >&5
++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
++else
++ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
++fi
++if test "${acl_cv_path_LD+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -z "$LD"; then
++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
++ for ac_dir in $PATH; do
++ test -z "$ac_dir" && ac_dir=.
++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
++ acl_cv_path_LD="$ac_dir/$ac_prog"
++ # Check to see if the program is GNU ld. I'd rather use --version,
++ # but apparently some GNU ld's only accept -v.
++ # Break only if it was the GNU/non-GNU ld that we prefer.
++ if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
++ test "$with_gnu_ld" != no && break
++ else
++ test "$with_gnu_ld" != yes && break
++ fi
++ fi
++ done
++ IFS="$ac_save_ifs"
++else
++ acl_cv_path_LD="$LD" # Let the user override the test with a path.
+ fi
+ fi
+-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+-if test -n "$ac_ct_RANLIB"; then
+- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+-echo "${ECHO_T}$ac_ct_RANLIB" >&6
++
++LD="$acl_cv_path_LD"
++if test -n "$LD"; then
++ echo "$as_me:$LINENO: result: $LD" >&5
++echo "${ECHO_T}$LD" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
+ fi
+-
+- RANLIB=$ac_ct_RANLIB
++test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
++echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
++ { (exit 1); exit 1; }; }
++echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
++if test "${acl_cv_prog_gnu_ld+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- RANLIB="$ac_cv_prog_RANLIB"
++ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
++if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
++ acl_cv_prog_gnu_ld=yes
++else
++ acl_cv_prog_gnu_ld=no
+ fi
+-
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+-# On Suns, sometimes $CPP names a directory.
+-if test -n "$CPP" && test -d "$CPP"; then
+- CPP=
+ fi
+-if test -z "$CPP"; then
+- if test "${ac_cv_prog_CPP+set}" = set; then
++echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5
++echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6
++with_gnu_ld=$acl_cv_prog_gnu_ld
++
++
++
++ echo "$as_me:$LINENO: checking for shared library run path origin" >&5
++echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6
++if test "${acl_cv_rpath+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- # Double quotes because CPP needs to be expanded
+- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+- do
+- ac_preproc_ok=false
+-for ac_c_preproc_warn_flag in '' yes
+-do
+- # Use a header file that comes with gcc, so configuring glibc
+- # with a fresh cross-compiler works.
+- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+- # <limits.h> exists even on freestanding compilers.
+- # On the NeXT, cc -E runs the code through the compiler's parser,
+- # not just through cpp. "Syntax error" is here to catch this case.
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#ifdef __STDC__
+-# include <limits.h>
+-#else
+-# include <assert.h>
+-#endif
+- Syntax error
+-_ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
++
++ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
++ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
++ . ./conftest.sh
++ rm -f ./conftest.sh
++ acl_cv_rpath=done
++
+ fi
+-if test -z "$ac_cpp_err"; then
++echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5
++echo "${ECHO_T}$acl_cv_rpath" >&6
++ wl="$acl_cv_wl"
++ libext="$acl_cv_libext"
++ shlibext="$acl_cv_shlibext"
++ hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
++ hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
++ hardcode_direct="$acl_cv_hardcode_direct"
++ hardcode_minus_L="$acl_cv_hardcode_minus_L"
++ sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec"
++ sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec"
++ # Check whether --enable-rpath or --disable-rpath was given.
++if test "${enable_rpath+set}" = set; then
++ enableval="$enable_rpath"
+ :
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
++ enable_rpath=yes
++fi;
+
+- # Broken: fails on valid input.
+-continue
+-fi
+-rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether non-existent headers
+- # can be detected and how.
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <ac_nonexistent.h>
+-_ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
++
++
++
++
++
++ use_additional=yes
++
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ acl_save_exec_prefix="$exec_prefix"
++ exec_prefix="$acl_final_exec_prefix"
++
++ eval additional_includedir=\"$includedir\"
++ eval additional_libdir=\"$libdir\"
++
++ exec_prefix="$acl_save_exec_prefix"
++ prefix="$acl_save_prefix"
++
++
++# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given.
++if test "${with_libiconv_prefix+set}" = set; then
++ withval="$with_libiconv_prefix"
++
++ if test "X$withval" = "Xno"; then
++ use_additional=no
++ else
++ if test "X$withval" = "X"; then
++
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ acl_save_exec_prefix="$exec_prefix"
++ exec_prefix="$acl_final_exec_prefix"
++
++ eval additional_includedir=\"$includedir\"
++ eval additional_libdir=\"$libdir\"
++
++ exec_prefix="$acl_save_exec_prefix"
++ prefix="$acl_save_prefix"
++
++ else
++ additional_includedir="$withval/include"
++ additional_libdir="$withval/lib"
++ fi
++ fi
++
++fi;
++ LIBICONV=
++ LTLIBICONV=
++ INCICONV=
++ rpathdirs=
++ ltrpathdirs=
++ names_already_handled=
++ names_next_round='iconv '
++ while test -n "$names_next_round"; do
++ names_this_round="$names_next_round"
++ names_next_round=
++ for name in $names_this_round; do
++ already_handled=
++ for n in $names_already_handled; do
++ if test "$n" = "$name"; then
++ already_handled=yes
++ break
++ fi
++ done
++ if test -z "$already_handled"; then
++ names_already_handled="$names_already_handled $name"
++ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
++ eval value=\"\$HAVE_LIB$uppername\"
++ if test -n "$value"; then
++ if test "$value" = yes; then
++ eval value=\"\$LIB$uppername\"
++ test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value"
++ eval value=\"\$LTLIB$uppername\"
++ test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value"
++ else
++ :
++ fi
++ else
++ found_dir=
++ found_la=
++ found_so=
++ found_a=
++ if test $use_additional = yes; then
++ if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
++ found_dir="$additional_libdir"
++ found_so="$additional_libdir/lib$name.$shlibext"
++ if test -f "$additional_libdir/lib$name.la"; then
++ found_la="$additional_libdir/lib$name.la"
++ fi
++ else
++ if test -f "$additional_libdir/lib$name.$libext"; then
++ found_dir="$additional_libdir"
++ found_a="$additional_libdir/lib$name.$libext"
++ if test -f "$additional_libdir/lib$name.la"; then
++ found_la="$additional_libdir/lib$name.la"
++ fi
++ fi
++ fi
++ fi
++ if test "X$found_dir" = "X"; then
++ for x in $LDFLAGS $LTLIBICONV; do
++
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ acl_save_exec_prefix="$exec_prefix"
++ exec_prefix="$acl_final_exec_prefix"
++ eval x=\"$x\"
++ exec_prefix="$acl_save_exec_prefix"
++ prefix="$acl_save_prefix"
++
++ case "$x" in
++ -L*)
++ dir=`echo "X$x" | sed -e 's/^X-L//'`
++ if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
++ found_dir="$dir"
++ found_so="$dir/lib$name.$shlibext"
++ if test -f "$dir/lib$name.la"; then
++ found_la="$dir/lib$name.la"
++ fi
++ else
++ if test -f "$dir/lib$name.$libext"; then
++ found_dir="$dir"
++ found_a="$dir/lib$name.$libext"
++ if test -f "$dir/lib$name.la"; then
++ found_la="$dir/lib$name.la"
++ fi
++ fi
++ fi
++ ;;
++ esac
++ if test "X$found_dir" != "X"; then
++ break
++ fi
++ done
++ fi
++ if test "X$found_dir" != "X"; then
++ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name"
++ if test "X$found_so" != "X"; then
++ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
++ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
++ else
++ haveit=
++ for x in $ltrpathdirs; do
++ if test "X$x" = "X$found_dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ ltrpathdirs="$ltrpathdirs $found_dir"
++ fi
++ if test "$hardcode_direct" = yes; then
++ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
++ else
++ if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
++ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
++ haveit=
++ for x in $rpathdirs; do
++ if test "X$x" = "X$found_dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ rpathdirs="$rpathdirs $found_dir"
++ fi
++ else
++ haveit=
++ for x in $LDFLAGS $LIBICONV; do
++
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ acl_save_exec_prefix="$exec_prefix"
++ exec_prefix="$acl_final_exec_prefix"
++ eval x=\"$x\"
++ exec_prefix="$acl_save_exec_prefix"
++ prefix="$acl_save_prefix"
++
++ if test "X$x" = "X-L$found_dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir"
++ fi
++ if test "$hardcode_minus_L" != no; then
++ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
++ else
++ LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
++ fi
++ fi
++ fi
++ fi
++ else
++ if test "X$found_a" != "X"; then
++ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a"
++ else
++ LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name"
++ fi
++ fi
++ additional_includedir=
++ case "$found_dir" in
++ */lib | */lib/)
++ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
++ additional_includedir="$basedir/include"
++ ;;
++ esac
++ if test "X$additional_includedir" != "X"; then
++ if test "X$additional_includedir" != "X/usr/include"; then
++ haveit=
++ if test "X$additional_includedir" = "X/usr/local/include"; then
++ if test -n "$GCC"; then
++ case $host_os in
++ linux*) haveit=yes;;
++ esac
++ fi
++ fi
++ if test -z "$haveit"; then
++ for x in $CPPFLAGS $INCICONV; do
++
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ acl_save_exec_prefix="$exec_prefix"
++ exec_prefix="$acl_final_exec_prefix"
++ eval x=\"$x\"
++ exec_prefix="$acl_save_exec_prefix"
++ prefix="$acl_save_prefix"
++
++ if test "X$x" = "X-I$additional_includedir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test -d "$additional_includedir"; then
++ INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir"
++ fi
++ fi
++ fi
++ fi
++ fi
++ if test -n "$found_la"; then
++ save_libdir="$libdir"
++ case "$found_la" in
++ */* | *\\*) . "$found_la" ;;
++ *) . "./$found_la" ;;
++ esac
++ libdir="$save_libdir"
++ for dep in $dependency_libs; do
++ case "$dep" in
++ -L*)
++ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
++ if test "X$additional_libdir" != "X/usr/lib"; then
++ haveit=
++ if test "X$additional_libdir" = "X/usr/local/lib"; then
++ if test -n "$GCC"; then
++ case $host_os in
++ linux*) haveit=yes;;
++ esac
++ fi
++ fi
++ if test -z "$haveit"; then
++ haveit=
++ for x in $LDFLAGS $LIBICONV; do
++
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ acl_save_exec_prefix="$exec_prefix"
++ exec_prefix="$acl_final_exec_prefix"
++ eval x=\"$x\"
++ exec_prefix="$acl_save_exec_prefix"
++ prefix="$acl_save_prefix"
++
++ if test "X$x" = "X-L$additional_libdir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test -d "$additional_libdir"; then
++ LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir"
++ fi
++ fi
++ haveit=
++ for x in $LDFLAGS $LTLIBICONV; do
++
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ acl_save_exec_prefix="$exec_prefix"
++ exec_prefix="$acl_final_exec_prefix"
++ eval x=\"$x\"
++ exec_prefix="$acl_save_exec_prefix"
++ prefix="$acl_save_prefix"
++
++ if test "X$x" = "X-L$additional_libdir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test -d "$additional_libdir"; then
++ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir"
++ fi
++ fi
++ fi
++ fi
++ ;;
++ -R*)
++ dir=`echo "X$dep" | sed -e 's/^X-R//'`
++ if test "$enable_rpath" != no; then
++ haveit=
++ for x in $rpathdirs; do
++ if test "X$x" = "X$dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ rpathdirs="$rpathdirs $dir"
++ fi
++ haveit=
++ for x in $ltrpathdirs; do
++ if test "X$x" = "X$dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ ltrpathdirs="$ltrpathdirs $dir"
++ fi
++ fi
++ ;;
++ -l*)
++ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
++ ;;
++ *.la)
++ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
++ ;;
++ *)
++ LIBICONV="${LIBICONV}${LIBICONV:+ }$dep"
++ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep"
++ ;;
++ esac
++ done
++ fi
++ else
++ LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
++ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name"
++ fi
++ fi
++ fi
++ done
++ done
++ if test "X$rpathdirs" != "X"; then
++ if test -n "$hardcode_libdir_separator"; then
++ alldirs=
++ for found_dir in $rpathdirs; do
++ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
++ done
++ acl_save_libdir="$libdir"
++ libdir="$alldirs"
++ eval flag=\"$hardcode_libdir_flag_spec\"
++ libdir="$acl_save_libdir"
++ LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
++ else
++ for found_dir in $rpathdirs; do
++ acl_save_libdir="$libdir"
++ libdir="$found_dir"
++ eval flag=\"$hardcode_libdir_flag_spec\"
++ libdir="$acl_save_libdir"
++ LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
++ done
++ fi
+ fi
++ if test "X$ltrpathdirs" != "X"; then
++ for found_dir in $ltrpathdirs; do
++ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir"
++ done
++ fi
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++ echo "$as_me:$LINENO: checking whether NLS is requested" >&5
++echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6
++ # Check whether --enable-nls or --disable-nls was given.
++if test "${enable_nls+set}" = set; then
++ enableval="$enable_nls"
++ USE_NLS=$enableval
+ else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
+- # Broken: success on invalid input.
+-continue
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
++ USE_NLS=yes
++fi;
++ echo "$as_me:$LINENO: result: $USE_NLS" >&5
++echo "${ECHO_T}$USE_NLS" >&6
+
+- # Passes both tests.
+-ac_preproc_ok=:
+-break
+-fi
+-rm -f conftest.err conftest.$ac_ext
+
+-done
+-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+-rm -f conftest.err conftest.$ac_ext
+-if $ac_preproc_ok; then
+- break
+-fi
+
+- done
+- ac_cv_prog_CPP=$CPP
++ LIBINTL=
++ LTLIBINTL=
++ POSUB=
+
+-fi
+- CPP=$ac_cv_prog_CPP
++ if test "$USE_NLS" = "yes"; then
++ gt_use_preinstalled_gnugettext=no
++
++
++
++
++
++
++ echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5
++echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6
++if test "${gt_cv_func_gnugettext1_libc+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_prog_CPP=$CPP
+-fi
+-echo "$as_me:$LINENO: result: $CPP" >&5
+-echo "${ECHO_T}$CPP" >&6
+-ac_preproc_ok=false
+-for ac_c_preproc_warn_flag in '' yes
+-do
+- # Use a header file that comes with gcc, so configuring glibc
+- # with a fresh cross-compiler works.
+- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+- # <limits.h> exists even on freestanding compilers.
+- # On the NeXT, cc -E runs the code through the compiler's parser,
+- # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-#ifdef __STDC__
+-# include <limits.h>
+-#else
+-# include <assert.h>
+-#endif
+- Syntax error
++#include <libintl.h>
++extern int _nl_msg_cat_cntr;
++extern int *_nl_domain_bindings;
++int
++main ()
++{
++bindtextdomain ("", "");
++return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings
++ ;
++ return 0;
++}
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
+- :
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- # Broken: fails on valid input.
+-continue
+-fi
+-rm -f conftest.err conftest.$ac_ext
+-
+- # OK, works on sane cases. Now check whether non-existent headers
+- # can be detected and how.
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <ac_nonexistent.h>
+-_ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++ (exit $ac_status); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; } &&
++ { ac_try='test -s conftest$ac_exeext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
+ ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
+- # Broken: success on invalid input.
+-continue
++ (exit $ac_status); }; }; then
++ gt_cv_func_gnugettext1_libc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+- # Passes both tests.
+-ac_preproc_ok=:
+-break
++gt_cv_func_gnugettext1_libc=no
+ fi
+-rm -f conftest.err conftest.$ac_ext
+-
+-done
+-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+-rm -f conftest.err conftest.$ac_ext
+-if $ac_preproc_ok; then
+- :
+-else
+- { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+-See \`config.log' for more details." >&2;}
+- { (exit 1); exit 1; }; }
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
+ fi
++echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5
++echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6
+
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
++ if test "$gt_cv_func_gnugettext1_libc" != "yes"; then
+
+-ac_ext=cc
+-ac_cpp='$CXXCPP $CPPFLAGS'
+-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+-if test -n "$ac_tool_prefix"; then
+- for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+- do
+- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_CXX+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$CXX"; then
+- ac_cv_prog_CXX="$CXX" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+
+-fi
+-fi
+-CXX=$ac_cv_prog_CXX
+-if test -n "$CXX"; then
+- echo "$as_me:$LINENO: result: $CXX" >&5
+-echo "${ECHO_T}$CXX" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+
+- test -n "$CXX" && break
+- done
+-fi
+-if test -z "$CXX"; then
+- ac_ct_CXX=$CXX
+- for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+-do
+- # Extract the first word of "$ac_prog", so it can be a program name with args.
+-set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$ac_ct_CXX"; then
+- ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CXX="$ac_prog"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+
+-fi
+-fi
+-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+-if test -n "$ac_ct_CXX"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+-echo "${ECHO_T}$ac_ct_CXX" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+
+- test -n "$ac_ct_CXX" && break
+-done
+-test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
++ am_save_CPPFLAGS="$CPPFLAGS"
+
+- CXX=$ac_ct_CXX
+-fi
++ for element in $INCICONV; do
++ haveit=
++ for x in $CPPFLAGS; do
+
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ acl_save_exec_prefix="$exec_prefix"
++ exec_prefix="$acl_final_exec_prefix"
++ eval x=\"$x\"
++ exec_prefix="$acl_save_exec_prefix"
++ prefix="$acl_save_prefix"
+
+-# Provide some information about the compiler.
+-echo "$as_me:$LINENO:" \
+- "checking for C++ compiler version" >&5
+-ac_compiler=`set X $ac_compile; echo $2`
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+- (eval $ac_compiler --version </dev/null >&5) 2>&5
++ if test "X$x" = "X$element"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
++ fi
++ done
++
++
++ echo "$as_me:$LINENO: checking for iconv" >&5
++echo $ECHO_N "checking for iconv... $ECHO_C" >&6
++if test "${am_cv_func_iconv+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++
++ am_cv_func_iconv="no, consider installing GNU libiconv"
++ am_cv_lib_iconv=no
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++#include <stdlib.h>
++#include <iconv.h>
++int
++main ()
++{
++iconv_t cd = iconv_open("","");
++ iconv(cd,NULL,NULL,NULL,NULL);
++ iconv_close(cd);
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+- (eval $ac_compiler -v </dev/null >&5) 2>&5
++ (exit $ac_status); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+- (eval $ac_compiler -V </dev/null >&5) 2>&5
++ (exit $ac_status); }; } &&
++ { ac_try='test -s conftest$ac_exeext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }
+-
+-echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+-echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
+-if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
++ (exit $ac_status); }; }; then
++ am_cv_func_iconv=yes
+ else
+- cat >conftest.$ac_ext <<_ACEOF
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++ if test "$am_cv_func_iconv" != yes; then
++ am_save_LIBS="$LIBS"
++ LIBS="$LIBS $LIBICONV"
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-
++#include <stdlib.h>
++#include <iconv.h>
+ int
+ main ()
+ {
+-#ifndef __GNUC__
+- choke me
+-#endif
+-
++iconv_t cd = iconv_open("","");
++ iconv(cd,NULL,NULL,NULL,NULL);
++ iconv_close(cd);
+ ;
+ return 0;
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag"
++ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
++ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+- ac_compiler_gnu=yes
++ am_cv_lib_iconv=yes
++ am_cv_func_iconv=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_compiler_gnu=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++ LIBS="$am_save_LIBS"
++ fi
++
++fi
++echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5
++echo "${ECHO_T}$am_cv_func_iconv" >&6
++ if test "$am_cv_func_iconv" = yes; then
++
++cat >>confdefs.h <<\_ACEOF
++#define HAVE_ICONV 1
++_ACEOF
++
++ fi
++ if test "$am_cv_lib_iconv" = yes; then
++ echo "$as_me:$LINENO: checking how to link with libiconv" >&5
++echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6
++ echo "$as_me:$LINENO: result: $LIBICONV" >&5
++echo "${ECHO_T}$LIBICONV" >&6
++ else
++ CPPFLAGS="$am_save_CPPFLAGS"
++ LIBICONV=
++ LTLIBICONV=
++ fi
++
++
++
++
++
++
++ use_additional=yes
++
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ acl_save_exec_prefix="$exec_prefix"
++ exec_prefix="$acl_final_exec_prefix"
++
++ eval additional_includedir=\"$includedir\"
++ eval additional_libdir=\"$libdir\"
++
++ exec_prefix="$acl_save_exec_prefix"
++ prefix="$acl_save_prefix"
++
++
++# Check whether --with-libintl-prefix or --without-libintl-prefix was given.
++if test "${with_libintl_prefix+set}" = set; then
++ withval="$with_libintl_prefix"
++
++ if test "X$withval" = "Xno"; then
++ use_additional=no
++ else
++ if test "X$withval" = "X"; then
++
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ acl_save_exec_prefix="$exec_prefix"
++ exec_prefix="$acl_final_exec_prefix"
++
++ eval additional_includedir=\"$includedir\"
++ eval additional_libdir=\"$libdir\"
++
++ exec_prefix="$acl_save_exec_prefix"
++ prefix="$acl_save_prefix"
++
++ else
++ additional_includedir="$withval/include"
++ additional_libdir="$withval/lib"
++ fi
++ fi
++
++fi;
++ LIBINTL=
++ LTLIBINTL=
++ INCINTL=
++ rpathdirs=
++ ltrpathdirs=
++ names_already_handled=
++ names_next_round='intl '
++ while test -n "$names_next_round"; do
++ names_this_round="$names_next_round"
++ names_next_round=
++ for name in $names_this_round; do
++ already_handled=
++ for n in $names_already_handled; do
++ if test "$n" = "$name"; then
++ already_handled=yes
++ break
++ fi
++ done
++ if test -z "$already_handled"; then
++ names_already_handled="$names_already_handled $name"
++ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
++ eval value=\"\$HAVE_LIB$uppername\"
++ if test -n "$value"; then
++ if test "$value" = yes; then
++ eval value=\"\$LIB$uppername\"
++ test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value"
++ eval value=\"\$LTLIB$uppername\"
++ test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value"
++ else
++ :
++ fi
++ else
++ found_dir=
++ found_la=
++ found_so=
++ found_a=
++ if test $use_additional = yes; then
++ if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
++ found_dir="$additional_libdir"
++ found_so="$additional_libdir/lib$name.$shlibext"
++ if test -f "$additional_libdir/lib$name.la"; then
++ found_la="$additional_libdir/lib$name.la"
++ fi
++ else
++ if test -f "$additional_libdir/lib$name.$libext"; then
++ found_dir="$additional_libdir"
++ found_a="$additional_libdir/lib$name.$libext"
++ if test -f "$additional_libdir/lib$name.la"; then
++ found_la="$additional_libdir/lib$name.la"
++ fi
++ fi
++ fi
++ fi
++ if test "X$found_dir" = "X"; then
++ for x in $LDFLAGS $LTLIBINTL; do
++
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ acl_save_exec_prefix="$exec_prefix"
++ exec_prefix="$acl_final_exec_prefix"
++ eval x=\"$x\"
++ exec_prefix="$acl_save_exec_prefix"
++ prefix="$acl_save_prefix"
++
++ case "$x" in
++ -L*)
++ dir=`echo "X$x" | sed -e 's/^X-L//'`
++ if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
++ found_dir="$dir"
++ found_so="$dir/lib$name.$shlibext"
++ if test -f "$dir/lib$name.la"; then
++ found_la="$dir/lib$name.la"
++ fi
++ else
++ if test -f "$dir/lib$name.$libext"; then
++ found_dir="$dir"
++ found_a="$dir/lib$name.$libext"
++ if test -f "$dir/lib$name.la"; then
++ found_la="$dir/lib$name.la"
++ fi
++ fi
++ fi
++ ;;
++ esac
++ if test "X$found_dir" != "X"; then
++ break
++ fi
++ done
++ fi
++ if test "X$found_dir" != "X"; then
++ LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name"
++ if test "X$found_so" != "X"; then
++ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
++ LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
++ else
++ haveit=
++ for x in $ltrpathdirs; do
++ if test "X$x" = "X$found_dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ ltrpathdirs="$ltrpathdirs $found_dir"
++ fi
++ if test "$hardcode_direct" = yes; then
++ LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
++ else
++ if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
++ LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
++ haveit=
++ for x in $rpathdirs; do
++ if test "X$x" = "X$found_dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ rpathdirs="$rpathdirs $found_dir"
++ fi
++ else
++ haveit=
++ for x in $LDFLAGS $LIBINTL; do
++
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ acl_save_exec_prefix="$exec_prefix"
++ exec_prefix="$acl_final_exec_prefix"
++ eval x=\"$x\"
++ exec_prefix="$acl_save_exec_prefix"
++ prefix="$acl_save_prefix"
++
++ if test "X$x" = "X-L$found_dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir"
++ fi
++ if test "$hardcode_minus_L" != no; then
++ LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
++ else
++ LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
++ fi
++ fi
++ fi
++ fi
++ else
++ if test "X$found_a" != "X"; then
++ LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a"
++ else
++ LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name"
++ fi
++ fi
++ additional_includedir=
++ case "$found_dir" in
++ */lib | */lib/)
++ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
++ additional_includedir="$basedir/include"
++ ;;
++ esac
++ if test "X$additional_includedir" != "X"; then
++ if test "X$additional_includedir" != "X/usr/include"; then
++ haveit=
++ if test "X$additional_includedir" = "X/usr/local/include"; then
++ if test -n "$GCC"; then
++ case $host_os in
++ linux*) haveit=yes;;
++ esac
++ fi
++ fi
++ if test -z "$haveit"; then
++ for x in $CPPFLAGS $INCINTL; do
++
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ acl_save_exec_prefix="$exec_prefix"
++ exec_prefix="$acl_final_exec_prefix"
++ eval x=\"$x\"
++ exec_prefix="$acl_save_exec_prefix"
++ prefix="$acl_save_prefix"
++
++ if test "X$x" = "X-I$additional_includedir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test -d "$additional_includedir"; then
++ INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir"
++ fi
++ fi
++ fi
++ fi
++ fi
++ if test -n "$found_la"; then
++ save_libdir="$libdir"
++ case "$found_la" in
++ */* | *\\*) . "$found_la" ;;
++ *) . "./$found_la" ;;
++ esac
++ libdir="$save_libdir"
++ for dep in $dependency_libs; do
++ case "$dep" in
++ -L*)
++ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
++ if test "X$additional_libdir" != "X/usr/lib"; then
++ haveit=
++ if test "X$additional_libdir" = "X/usr/local/lib"; then
++ if test -n "$GCC"; then
++ case $host_os in
++ linux*) haveit=yes;;
++ esac
++ fi
++ fi
++ if test -z "$haveit"; then
++ haveit=
++ for x in $LDFLAGS $LIBINTL; do
++
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ acl_save_exec_prefix="$exec_prefix"
++ exec_prefix="$acl_final_exec_prefix"
++ eval x=\"$x\"
++ exec_prefix="$acl_save_exec_prefix"
++ prefix="$acl_save_prefix"
++
++ if test "X$x" = "X-L$additional_libdir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test -d "$additional_libdir"; then
++ LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir"
++ fi
++ fi
++ haveit=
++ for x in $LDFLAGS $LTLIBINTL; do
++
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ acl_save_exec_prefix="$exec_prefix"
++ exec_prefix="$acl_final_exec_prefix"
++ eval x=\"$x\"
++ exec_prefix="$acl_save_exec_prefix"
++ prefix="$acl_save_prefix"
++
++ if test "X$x" = "X-L$additional_libdir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test -d "$additional_libdir"; then
++ LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir"
++ fi
++ fi
++ fi
++ fi
++ ;;
++ -R*)
++ dir=`echo "X$dep" | sed -e 's/^X-R//'`
++ if test "$enable_rpath" != no; then
++ haveit=
++ for x in $rpathdirs; do
++ if test "X$x" = "X$dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ rpathdirs="$rpathdirs $dir"
++ fi
++ haveit=
++ for x in $ltrpathdirs; do
++ if test "X$x" = "X$dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ ltrpathdirs="$ltrpathdirs $dir"
++ fi
++ fi
++ ;;
++ -l*)
++ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
++ ;;
++ *.la)
++ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
++ ;;
++ *)
++ LIBINTL="${LIBINTL}${LIBINTL:+ }$dep"
++ LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep"
++ ;;
++ esac
++ done
++ fi
++ else
++ LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
++ LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name"
++ fi
++ fi
++ fi
++ done
++ done
++ if test "X$rpathdirs" != "X"; then
++ if test -n "$hardcode_libdir_separator"; then
++ alldirs=
++ for found_dir in $rpathdirs; do
++ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
++ done
++ acl_save_libdir="$libdir"
++ libdir="$alldirs"
++ eval flag=\"$hardcode_libdir_flag_spec\"
++ libdir="$acl_save_libdir"
++ LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
++ else
++ for found_dir in $rpathdirs; do
++ acl_save_libdir="$libdir"
++ libdir="$found_dir"
++ eval flag=\"$hardcode_libdir_flag_spec\"
++ libdir="$acl_save_libdir"
++ LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
++ done
++ fi
++ fi
++ if test "X$ltrpathdirs" != "X"; then
++ for found_dir in $ltrpathdirs; do
++ LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir"
++ done
++ fi
+
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
+-GXX=`test $ac_compiler_gnu = yes && echo yes`
+-ac_test_CXXFLAGS=${CXXFLAGS+set}
+-ac_save_CXXFLAGS=$CXXFLAGS
+-CXXFLAGS="-g"
+-echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+-echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
+-if test "${ac_cv_prog_cxx_g+set}" = set; then
++ echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5
++echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6
++if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- cat >conftest.$ac_ext <<_ACEOF
++ gt_save_CPPFLAGS="$CPPFLAGS"
++ CPPFLAGS="$CPPFLAGS $INCINTL"
++ gt_save_LIBS="$LIBS"
++ LIBS="$LIBS $LIBINTL"
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-
++#include <libintl.h>
++extern int _nl_msg_cat_cntr;
++extern
++#ifdef __cplusplus
++"C"
++#endif
++const char *_nl_expand_alias ();
+ int
+ main ()
+ {
+-
++bindtextdomain ("", "");
++return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0)
+ ;
+ return 0;
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag"
++ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
++ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+- ac_cv_prog_cxx_g=yes
++ gt_cv_func_gnugettext1_libintl=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_prog_cxx_g=no
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++gt_cv_func_gnugettext1_libintl=no
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
+-if test "$ac_test_CXXFLAGS" = set; then
+- CXXFLAGS=$ac_save_CXXFLAGS
+-elif test $ac_cv_prog_cxx_g = yes; then
+- if test "$GXX" = yes; then
+- CXXFLAGS="-g -O2"
+- else
+- CXXFLAGS="-g"
+- fi
+-else
+- if test "$GXX" = yes; then
+- CXXFLAGS="-O2"
+- else
+- CXXFLAGS=
+- fi
+-fi
+-for ac_declaration in \
+- '' \
+- 'extern "C" void std::exit (int) throw (); using std::exit;' \
+- 'extern "C" void std::exit (int); using std::exit;' \
+- 'extern "C" void exit (int) throw ();' \
+- 'extern "C" void exit (int);' \
+- 'void exit (int);'
+-do
+- cat >conftest.$ac_ext <<_ACEOF
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++ if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then
++ LIBS="$LIBS $LIBICONV"
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-$ac_declaration
+-#include <stdlib.h>
++#include <libintl.h>
++extern int _nl_msg_cat_cntr;
++extern
++#ifdef __cplusplus
++"C"
++#endif
++const char *_nl_expand_alias ();
+ int
+ main ()
+ {
+-exit (42);
++bindtextdomain ("", "");
++return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0)
+ ;
+ return 0;
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag"
++ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
++ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+- :
++ LIBINTL="$LIBINTL $LIBICONV"
++ LTLIBINTL="$LTLIBINTL $LTLIBICONV"
++ gt_cv_func_gnugettext1_libintl=yes
++
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-continue
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+- cat >conftest.$ac_ext <<_ACEOF
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++ fi
++ CPPFLAGS="$gt_save_CPPFLAGS"
++ LIBS="$gt_save_LIBS"
++fi
++echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libintl" >&5
++echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6
++ fi
++
++ if test "$gt_cv_func_gnugettext1_libc" = "yes" \
++ || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \
++ && test "$PACKAGE" != gettext; }; then
++ gt_use_preinstalled_gnugettext=yes
++ else
++ LIBINTL=
++ LTLIBINTL=
++ INCINTL=
++ fi
++
++
++
++ if test "$gt_use_preinstalled_gnugettext" = "yes" \
++ || test "$nls_cv_use_gnu_gettext" = "yes"; then
++
++cat >>confdefs.h <<\_ACEOF
++#define ENABLE_NLS 1
++_ACEOF
++
++ else
++ USE_NLS=no
++ fi
++ fi
++
++ if test "$USE_NLS" = "yes"; then
++
++ if test "$gt_use_preinstalled_gnugettext" = "yes"; then
++ if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then
++ echo "$as_me:$LINENO: checking how to link with libintl" >&5
++echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6
++ echo "$as_me:$LINENO: result: $LIBINTL" >&5
++echo "${ECHO_T}$LIBINTL" >&6
++
++ for element in $INCINTL; do
++ haveit=
++ for x in $CPPFLAGS; do
++
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ acl_save_exec_prefix="$exec_prefix"
++ exec_prefix="$acl_final_exec_prefix"
++ eval x=\"$x\"
++ exec_prefix="$acl_save_exec_prefix"
++ prefix="$acl_save_prefix"
++
++ if test "X$x" = "X$element"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
++ fi
++ done
++
++ fi
++
++
++cat >>confdefs.h <<\_ACEOF
++#define HAVE_GETTEXT 1
++_ACEOF
++
++
++cat >>confdefs.h <<\_ACEOF
++#define HAVE_DCGETTEXT 1
++_ACEOF
++
++ fi
++
++ POSUB=po
++ fi
++
++
++
++ INTLLIBS="$LIBINTL"
++
++
++
++
++
++
++LDFLAGS="$LDFLAGS $INTLLIBS"
++echo "$as_me:$LINENO: checking for iconv in -liconv" >&5
++echo $ECHO_N "checking for iconv in -liconv... $ECHO_C" >&6
++if test "${ac_cv_lib_iconv_iconv+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-liconv $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-$ac_declaration
++
++/* Override any gcc2 internal prototype to avoid an error. */
++#ifdef __cplusplus
++extern "C"
++#endif
++/* We use char because int might match the return type of a gcc2
++ builtin and then its argument prototype would still apply. */
++char iconv ();
+ int
+ main ()
+ {
+-exit (42);
++iconv ();
+ ;
+ return 0;
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+- { ac_try='test -z "$ac_cxx_werror_flag"
++ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
++ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+- break
++ ac_cv_lib_iconv_iconv=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++ac_cv_lib_iconv_iconv=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-done
+-rm -f conftest*
+-if test -n "$ac_declaration"; then
+- echo '#ifdef __cplusplus' >>confdefs.h
+- echo $ac_declaration >>confdefs.h
+- echo '#endif' >>confdefs.h
+-fi
+-
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-
+-depcc="$CXX" am_compiler_list=
+-
+-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+-if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+- # We make a subdir and do the tests there. Otherwise we can end up
+- # making bogus files that we don't know about and never remove. For
+- # instance it was reported that on HP-UX the gcc test will end up
+- # making a dummy file named `D' -- because `-MD' means `put the output
+- # in D'.
+- mkdir conftest.dir
+- # Copy depcomp to subdir because otherwise we won't find it if we're
+- # using a relative directory.
+- cp "$am_depcomp" conftest.dir
+- cd conftest.dir
+- # We will build objects and dependencies in a subdirectory because
+- # it helps to detect inapplicable dependency modes. For instance
+- # both Tru64's cc and ICC support -MD to output dependencies as a
+- # side effect of compilation, but ICC will put the dependencies in
+- # the current directory while Tru64 will put them in the object
+- # directory.
+- mkdir sub
+-
+- am_cv_CXX_dependencies_compiler_type=none
+- if test "$am_compiler_list" = ""; then
+- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+- fi
+- for depmode in $am_compiler_list; do
+- # Setup a source with many dependencies, because some compilers
+- # like to wrap large dependency lists on column 80 (with \), and
+- # we should not choose a depcomp mode which is confused by this.
+- #
+- # We need to recreate these files for each test, as the compiler may
+- # overwrite some of them when testing with obscure command lines.
+- # This happens at least with the AIX C compiler.
+- : > sub/conftest.c
+- for i in 1 2 3 4 5 6; do
+- echo '#include "conftst'$i'.h"' >> sub/conftest.c
+- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+- # Solaris 8's {/usr,}/bin/sh.
+- touch sub/conftst$i.h
+- done
+- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+-
+- case $depmode in
+- nosideeffect)
+- # after this tag, mechanisms are not by side-effect, so they'll
+- # only be used when explicitly requested
+- if test "x$enable_dependency_tracking" = xyes; then
+- continue
+- else
+- break
+- fi
+- ;;
+- none) break ;;
+- esac
+- # We check with `-c' and `-o' for the sake of the "dashmstdout"
+- # mode. It turns out that the SunPro C++ compiler does not properly
+- # handle `-M -o', and we need to detect this.
+- if depmode=$depmode \
+- source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+- >/dev/null 2>conftest.err &&
+- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+- # icc doesn't choke on unknown options, it will just issue warnings
+- # or remarks (even with -Werror). So we grep stderr for any message
+- # that says an option was ignored or not supported.
+- # When given -MP, icc 7.0 and 7.1 complain thusly:
+- # icc: Command line warning: ignoring option '-M'; no argument required
+- # The diagnosis changed in icc 8.0:
+- # icc: Command line remark: option '-MP' not supported
+- if (grep 'ignoring option' conftest.err ||
+- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+- am_cv_CXX_dependencies_compiler_type=$depmode
+- break
+- fi
+- fi
+- done
+-
+- cd ..
+- rm -rf conftest.dir
+-else
+- am_cv_CXX_dependencies_compiler_type=none
+-fi
+-
+-fi
+-echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+-echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6
+-CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+-
+-
+-
+-if
+- test "x$enable_dependency_tracking" != xno \
+- && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+- am__fastdepCXX_TRUE=
+- am__fastdepCXX_FALSE='#'
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_iconv" >&5
++echo "${ECHO_T}$ac_cv_lib_iconv_iconv" >&6
++if test $ac_cv_lib_iconv_iconv = yes; then
++ haslibiconv=yes
+ else
+- am__fastdepCXX_TRUE='#'
+- am__fastdepCXX_FALSE=
++ haslibiconv=no
+ fi
+
++if test "x$haslibiconv" = "xyes"; then
++ LDFLAGS="$LDFLAGS $LIBICONV"
++fi
++localedir='${prefix}/share/locale'
+
+
+ if test "`$CPP -v < /dev/null 2>&1 | grep '/usr/local/include' 2>&1`" = ""; then
+@@ -4701,7 +5613,6 @@ if test "`$CPP -v < /dev/null 2>&1 | gre
+ fi
+
+
+-
+ for ac_func in gethostbyname
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+@@ -6290,6 +7201,11 @@ fi
+
+
+
++ if test -e /usr/include/jpeglib.h || test -e /usr/local/include/jpeglib.h
++ then
++ jpeg_ok=yes
++ fi
++
+ if test "x$jpeg_ok" = "xyes"; then
+ old_libs="$LIBS"
+ echo "$as_me:$LINENO: checking for jpeg_destroy_decompress in -ljpeg" >&5
+@@ -6387,7 +7303,6 @@ _ACEOF
+
+ fi
+
+-if test "x$enable_png" = "xyes"; then
+ if test "${ac_cv_header_zlib_h+set}" = set; then
+ echo "$as_me:$LINENO: checking for zlib.h" >&5
+ echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6
+@@ -6614,7 +7529,6 @@ fi
+ { echo "$as_me:$LINENO: WARNING: *** No libz found. Disabling PNG images ***" >&5
+ echo "$as_me: WARNING: *** No libz found. Disabling PNG images ***" >&2;}
+ fi
+-fi
+
+ if test "x$enable_png" = "xyes" && test "x$libz_ok" = "xyes"; then
+ echo "$as_me:$LINENO: checking for libpng-config" >&5
+@@ -6807,21 +7721,269 @@ if test `eval echo '${'$as_ac_Header'}'`
+ _ACEOF
+ png_ok=yes && break
+ else
+- png_ok=no
++ png_ok=no
++fi
++
++done
++
++
++ if test "x$png_ok" = "xyes"; then
++ old_libs="$LIBS"
++ echo "$as_me:$LINENO: checking for png_check_sig in -lpng" >&5
++echo $ECHO_N "checking for png_check_sig in -lpng... $ECHO_C" >&6
++if test "${ac_cv_lib_png_png_check_sig+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-lpng $LIBZ_LIBS -lm $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++/* Override any gcc2 internal prototype to avoid an error. */
++#ifdef __cplusplus
++extern "C"
++#endif
++/* We use char because int might match the return type of a gcc2
++ builtin and then its argument prototype would still apply. */
++char png_check_sig ();
++int
++main ()
++{
++png_check_sig ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; } &&
++ { ac_try='test -s conftest$ac_exeext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ ac_cv_lib_png_png_check_sig=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_cv_lib_png_png_check_sig=no
++fi
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_png_png_check_sig" >&5
++echo "${ECHO_T}$ac_cv_lib_png_png_check_sig" >&6
++if test $ac_cv_lib_png_png_check_sig = yes; then
++ png_ok=yes
++else
++ png_ok=no
++fi
++
++ LIBS="$old_libs"
++
++ if test "x$png_ok" = "xyes"; then
++ LIBPNG_LIBS="-lpng -lm"
++ fi
++ fi
++
++ if test "x$png_ok" = "xno"; then
++ { echo "$as_me:$LINENO: WARNING: *** No libpng found. Disabling PNG images ***" >&5
++echo "$as_me: WARNING: *** No libpng found. Disabling PNG images ***" >&2;}
++ fi
++ fi
++fi
++
++if test "x$png_ok" = "xyes"; then
++
++cat >>confdefs.h <<\_ACEOF
++#define ENABLE_PNG
++_ACEOF
++
++fi
++
++if test "x$enable_gif" = "xyes"; then
++
++cat >>confdefs.h <<\_ACEOF
++#define ENABLE_GIF
++_ACEOF
++
++fi
++
++if test "x$enable_ssl" = "xyes"; then
++ if test "${ac_cv_header_openssl_ssl_h+set}" = set; then
++ echo "$as_me:$LINENO: checking for openssl/ssl.h" >&5
++echo $ECHO_N "checking for openssl/ssl.h... $ECHO_C" >&6
++if test "${ac_cv_header_openssl_ssl_h+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++fi
++echo "$as_me:$LINENO: result: $ac_cv_header_openssl_ssl_h" >&5
++echo "${ECHO_T}$ac_cv_header_openssl_ssl_h" >&6
++else
++ # Is the header compilable?
++echo "$as_me:$LINENO: checking openssl/ssl.h usability" >&5
++echo $ECHO_N "checking openssl/ssl.h usability... $ECHO_C" >&6
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++$ac_includes_default
++#include <openssl/ssl.h>
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -z "$ac_c_werror_flag"
++ || test ! -s conftest.err'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ ac_header_compiler=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_header_compiler=no
++fi
++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6
++
++# Is the header present?
++echo "$as_me:$LINENO: checking openssl/ssl.h presence" >&5
++echo $ECHO_N "checking openssl/ssl.h presence... $ECHO_C" >&6
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++#include <openssl/ssl.h>
++_ACEOF
++if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
++ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } >/dev/null; then
++ if test -s conftest.err; then
++ ac_cpp_err=$ac_c_preproc_warn_flag
++ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
++ else
++ ac_cpp_err=
++ fi
++else
++ ac_cpp_err=yes
++fi
++if test -z "$ac_cpp_err"; then
++ ac_header_preproc=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_header_preproc=no
++fi
++rm -f conftest.err conftest.$ac_ext
++echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6
++
++# So? What about this header?
++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
++ yes:no: )
++ { echo "$as_me:$LINENO: WARNING: openssl/ssl.h: accepted by the compiler, rejected by the preprocessor!" >&5
++echo "$as_me: WARNING: openssl/ssl.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
++ { echo "$as_me:$LINENO: WARNING: openssl/ssl.h: proceeding with the compiler's result" >&5
++echo "$as_me: WARNING: openssl/ssl.h: proceeding with the compiler's result" >&2;}
++ ac_header_preproc=yes
++ ;;
++ no:yes:* )
++ { echo "$as_me:$LINENO: WARNING: openssl/ssl.h: present but cannot be compiled" >&5
++echo "$as_me: WARNING: openssl/ssl.h: present but cannot be compiled" >&2;}
++ { echo "$as_me:$LINENO: WARNING: openssl/ssl.h: check for missing prerequisite headers?" >&5
++echo "$as_me: WARNING: openssl/ssl.h: check for missing prerequisite headers?" >&2;}
++ { echo "$as_me:$LINENO: WARNING: openssl/ssl.h: see the Autoconf documentation" >&5
++echo "$as_me: WARNING: openssl/ssl.h: see the Autoconf documentation" >&2;}
++ { echo "$as_me:$LINENO: WARNING: openssl/ssl.h: section \"Present But Cannot Be Compiled\"" >&5
++echo "$as_me: WARNING: openssl/ssl.h: section \"Present But Cannot Be Compiled\"" >&2;}
++ { echo "$as_me:$LINENO: WARNING: openssl/ssl.h: proceeding with the preprocessor's result" >&5
++echo "$as_me: WARNING: openssl/ssl.h: proceeding with the preprocessor's result" >&2;}
++ { echo "$as_me:$LINENO: WARNING: openssl/ssl.h: in the future, the compiler will take precedence" >&5
++echo "$as_me: WARNING: openssl/ssl.h: in the future, the compiler will take precedence" >&2;}
++ (
++ cat <<\_ASBOX
++## ------------------------------------------ ##
++## Report this to the AC_PACKAGE_NAME lists. ##
++## ------------------------------------------ ##
++_ASBOX
++ ) |
++ sed "s/^/$as_me: WARNING: /" >&2
++ ;;
++esac
++echo "$as_me:$LINENO: checking for openssl/ssl.h" >&5
++echo $ECHO_N "checking for openssl/ssl.h... $ECHO_C" >&6
++if test "${ac_cv_header_openssl_ssl_h+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_cv_header_openssl_ssl_h=$ac_header_preproc
++fi
++echo "$as_me:$LINENO: result: $ac_cv_header_openssl_ssl_h" >&5
++echo "${ECHO_T}$ac_cv_header_openssl_ssl_h" >&6
++
++fi
++if test $ac_cv_header_openssl_ssl_h = yes; then
++ ssl_ok=yes
++else
++ ssl_ok=no
+ fi
+
+-done
+
+
+- if test "x$png_ok" = "xyes"; then
+- old_libs="$LIBS"
+- echo "$as_me:$LINENO: checking for png_check_sig in -lpng" >&5
+-echo $ECHO_N "checking for png_check_sig in -lpng... $ECHO_C" >&6
+-if test "${ac_cv_lib_png_png_check_sig+set}" = set; then
++ if test "x$ssl_ok" = "xyes"; then
++ old_libs="$LIBS"
++ echo "$as_me:$LINENO: checking for SSL_library_init in -lssl" >&5
++echo $ECHO_N "checking for SSL_library_init in -lssl... $ECHO_C" >&6
++if test "${ac_cv_lib_ssl_SSL_library_init+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lpng $LIBZ_LIBS -lm $LIBS"
++LIBS="-lssl -lcrypto $LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -6835,11 +7997,11 @@ extern "C"
+ #endif
+ /* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+-char png_check_sig ();
++char SSL_library_init ();
+ int
+ main ()
+ {
+-png_check_sig ();
++SSL_library_init ();
+ ;
+ return 0;
+ }
+@@ -6866,68 +8028,62 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+- ac_cv_lib_png_png_check_sig=yes
++ ac_cv_lib_ssl_SSL_library_init=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_lib_png_png_check_sig=no
++ac_cv_lib_ssl_SSL_library_init=no
+ fi
+ rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_lib_png_png_check_sig" >&5
+-echo "${ECHO_T}$ac_cv_lib_png_png_check_sig" >&6
+-if test $ac_cv_lib_png_png_check_sig = yes; then
+- png_ok=yes
++echo "$as_me:$LINENO: result: $ac_cv_lib_ssl_SSL_library_init" >&5
++echo "${ECHO_T}$ac_cv_lib_ssl_SSL_library_init" >&6
++if test $ac_cv_lib_ssl_SSL_library_init = yes; then
++ ssl_ok=yes
+ else
+- png_ok=no
++ ssl_ok=no
+ fi
+
+- LIBS="$old_libs"
+-
+- if test "x$png_ok" = "xyes"; then
+- LIBPNG_LIBS="-lpng -lm"
+- fi
+- fi
++ LIBS="$old_libs"
++ fi
+
+- if test "x$png_ok" = "xno"; then
+- { echo "$as_me:$LINENO: WARNING: *** No libpng found. Disabling PNG images ***" >&5
+-echo "$as_me: WARNING: *** No libpng found. Disabling PNG images ***" >&2;}
+- fi
++ if test "x$ssl_ok" = "xyes"; then
++ LIBSSL_LIBS="-lcrypto -lssl"
++ else
++ { echo "$as_me:$LINENO: WARNING: *** No libssl found. Disabling ssl support.***" >&5
++echo "$as_me: WARNING: *** No libssl found. Disabling ssl support.***" >&2;}
+ fi
+ fi
+
+-if test "x$png_ok" = "xyes"; then
++if test "x$ssl_ok" = "xyes"; then
+
+ cat >>confdefs.h <<\_ACEOF
+-#define ENABLE_PNG
++#define ENABLE_SSL
+ _ACEOF
+
+ fi
+
+-if test "x$enable_gif" = "xyes"; then
+-
+-cat >>confdefs.h <<\_ACEOF
+-#define ENABLE_GIF
+-_ACEOF
++if test "x$enable_ssl" = "xyes" ; then
+
+-fi
+
+-if test "x$enable_ssl" = "xyes"; then
+- if test "${ac_cv_header_openssl_ssl_h+set}" = set; then
+- echo "$as_me:$LINENO: checking for openssl/ssl.h" >&5
+-echo $ECHO_N "checking for openssl/ssl.h... $ECHO_C" >&6
+-if test "${ac_cv_header_openssl_ssl_h+set}" = set; then
++for ac_header in openssl/ssl.h openssl/err.h
++do
++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_openssl_ssl_h" >&5
+-echo "${ECHO_T}$ac_cv_header_openssl_ssl_h" >&6
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking openssl/ssl.h usability" >&5
+-echo $ECHO_N "checking openssl/ssl.h usability... $ECHO_C" >&6
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -6935,7 +8091,7 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
+-#include <openssl/ssl.h>
++#include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+@@ -6971,15 +8127,15 @@ echo "$as_me:$LINENO: result: $ac_header
+ echo "${ECHO_T}$ac_header_compiler" >&6
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking openssl/ssl.h presence" >&5
+-echo $ECHO_N "checking openssl/ssl.h presence... $ECHO_C" >&6
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-#include <openssl/ssl.h>
++#include <$ac_header>
+ _ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+@@ -7013,25 +8169,25 @@ echo "${ECHO_T}$ac_header_preproc" >&6
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+- { echo "$as_me:$LINENO: WARNING: openssl/ssl.h: accepted by the compiler, rejected by the preprocessor!" >&5
+-echo "$as_me: WARNING: openssl/ssl.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+- { echo "$as_me:$LINENO: WARNING: openssl/ssl.h: proceeding with the compiler's result" >&5
+-echo "$as_me: WARNING: openssl/ssl.h: proceeding with the compiler's result" >&2;}
++ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
++echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
++echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+- { echo "$as_me:$LINENO: WARNING: openssl/ssl.h: present but cannot be compiled" >&5
+-echo "$as_me: WARNING: openssl/ssl.h: present but cannot be compiled" >&2;}
+- { echo "$as_me:$LINENO: WARNING: openssl/ssl.h: check for missing prerequisite headers?" >&5
+-echo "$as_me: WARNING: openssl/ssl.h: check for missing prerequisite headers?" >&2;}
+- { echo "$as_me:$LINENO: WARNING: openssl/ssl.h: see the Autoconf documentation" >&5
+-echo "$as_me: WARNING: openssl/ssl.h: see the Autoconf documentation" >&2;}
+- { echo "$as_me:$LINENO: WARNING: openssl/ssl.h: section \"Present But Cannot Be Compiled\"" >&5
+-echo "$as_me: WARNING: openssl/ssl.h: section \"Present But Cannot Be Compiled\"" >&2;}
+- { echo "$as_me:$LINENO: WARNING: openssl/ssl.h: proceeding with the preprocessor's result" >&5
+-echo "$as_me: WARNING: openssl/ssl.h: proceeding with the preprocessor's result" >&2;}
+- { echo "$as_me:$LINENO: WARNING: openssl/ssl.h: in the future, the compiler will take precedence" >&5
+-echo "$as_me: WARNING: openssl/ssl.h: in the future, the compiler will take precedence" >&2;}
++ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
++echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
++ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
++echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
++ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
++echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
++ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
++echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
++echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
++ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
++echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+ ## ------------------------------------------ ##
+@@ -7042,34 +8198,34 @@ _ASBOX
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for openssl/ssl.h" >&5
+-echo $ECHO_N "checking for openssl/ssl.h... $ECHO_C" >&6
+-if test "${ac_cv_header_openssl_ssl_h+set}" = set; then
++echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_header_openssl_ssl_h=$ac_header_preproc
++ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_openssl_ssl_h" >&5
+-echo "${ECHO_T}$ac_cv_header_openssl_ssl_h" >&6
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+ fi
+-if test $ac_cv_header_openssl_ssl_h = yes; then
+- ssl_ok=yes
+-else
+- ssl_ok=no
++if test `eval echo '${'$as_ac_Header'}'` = yes; then
++ cat >>confdefs.h <<_ACEOF
++#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
++_ACEOF
++
+ fi
+
++done
+
+
+- if test "x$ssl_ok" = "xyes"; then
+- old_libs="$LIBS"
+- echo "$as_me:$LINENO: checking for SSL_library_init in -lssl" >&5
+-echo $ECHO_N "checking for SSL_library_init in -lssl... $ECHO_C" >&6
+-if test "${ac_cv_lib_ssl_SSL_library_init+set}" = set; then
++echo "$as_me:$LINENO: checking for SSL_connect in -lssl" >&5
++echo $ECHO_N "checking for SSL_connect in -lssl... $ECHO_C" >&6
++if test "${ac_cv_lib_ssl_SSL_connect+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lssl -lcrypto $LIBS"
++LIBS="-lssl $LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -7083,11 +8239,11 @@ extern "C"
+ #endif
+ /* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+-char SSL_library_init ();
++char SSL_connect ();
+ int
+ main ()
+ {
+-SSL_library_init ();
++SSL_connect ();
+ ;
+ return 0;
+ }
+@@ -7114,45 +8270,42 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+- ac_cv_lib_ssl_SSL_library_init=yes
++ ac_cv_lib_ssl_SSL_connect=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_lib_ssl_SSL_library_init=no
++ac_cv_lib_ssl_SSL_connect=no
+ fi
+ rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_lib_ssl_SSL_library_init" >&5
+-echo "${ECHO_T}$ac_cv_lib_ssl_SSL_library_init" >&6
+-if test $ac_cv_lib_ssl_SSL_library_init = yes; then
+- ssl_ok=yes
+-else
+- ssl_ok=no
+-fi
++echo "$as_me:$LINENO: result: $ac_cv_lib_ssl_SSL_connect" >&5
++echo "${ECHO_T}$ac_cv_lib_ssl_SSL_connect" >&6
++if test $ac_cv_lib_ssl_SSL_connect = yes; then
++ cat >>confdefs.h <<_ACEOF
++#define HAVE_LIBSSL 1
++_ACEOF
+
+- LIBS="$old_libs"
+- fi
++ LIBS="-lssl $LIBS"
+
+- if test "x$ssl_ok" = "xyes"; then
+- LIBSSL_LIBS="-lcrypto -lssl"
+- else
+- { echo "$as_me:$LINENO: WARNING: *** No libssl found. Disabling ssl support.***" >&5
+-echo "$as_me: WARNING: *** No libssl found. Disabling ssl support.***" >&2;}
+- fi
++else
++ enable_ssl="no"
+ fi
+
+-if test "x$ssl_ok" = "xyes"; then
++ if test "x$enable_ssl" = "xno" ; then
++ { echo "$as_me:$LINENO: WARNING: *** No libssl found. Disabling ssl. ***" >&5
++echo "$as_me: WARNING: *** No libssl found. Disabling ssl. ***" >&2;}
++ else
+
+ cat >>confdefs.h <<\_ACEOF
+-#define ENABLE_SSL
++#define DILLO_SSL 1
+ _ACEOF
+
++ fi
+ fi
+
+-
+ if test -z "$LIBPTHREAD_LIBS"; then
+ case $target in
+ *-*-linux*|*-*-solaris*)
+@@ -7839,6 +8992,132 @@ echo "$as_me: WARNING: *** Try setting L
+ ;;
+ esac
+
++if test "x$enable_tabs" = "xno" ; then
++ CFLAGS="$CFLAGS -DDISABLE_TABS"
++fi
++if test "x$enable_anti_alias" = "xno" ; then
++ CFLAGS="$CFLAGS -DDISABLE_ANTI_ALIAS"
++else
++ # Extract the first word of "xft-config", so it can be a program name with args.
++set dummy xft-config; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_path_XFT_CONFIG+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ case $XFT_CONFIG in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_XFT_CONFIG="$XFT_CONFIG" # Let the user override the test with a path.
++ ;;
++ *)
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++as_dummy="$PATH:/usr/local/bin"
++for as_dir in $as_dummy
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_path_XFT_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_path_XFT_CONFIG" && ac_cv_path_XFT_CONFIG="no"
++ ;;
++esac
++fi
++XFT_CONFIG=$ac_cv_path_XFT_CONFIG
++
++if test -n "$XFT_CONFIG"; then
++ echo "$as_me:$LINENO: result: $XFT_CONFIG" >&5
++echo "${ECHO_T}$XFT_CONFIG" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ if test "$XFT_CONFIG" = "no" ; then
++ # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ case $PKG_CONFIG in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
++ ;;
++ *)
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++as_dummy="$PATH:/usr/local/bin"
++for as_dir in $as_dummy
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
++ ;;
++esac
++fi
++PKG_CONFIG=$ac_cv_path_PKG_CONFIG
++
++if test -n "$PKG_CONFIG"; then
++ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
++echo "${ECHO_T}$PKG_CONFIG" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ if test "$PKG_CONFIG" = "no" ; then
++ if test -d "/usr/include/freetype2" ; then
++ CPPFLAGS="$CPPFLAGS -I/usr/include/freetype2"
++ elif test -d "/usr/include/freetype1" ; then
++ CPPFLAGS="$CPPFLAGS -I/usr/include/freetype1"
++ fi
++ if test -e "/usr/X11R6/include/X11/Xft/Xft.h" ; then
++ echo "$as_me:$LINENO: checking checking for Xft" >&5
++echo $ECHO_N "checking checking for Xft... $ECHO_C" >&6
++ if test -e "/usr/X11R6/lib/libXft.so.2" ; then
++ echo "$as_me:$LINENO: result: Xft2" >&5
++echo "${ECHO_T}Xft2" >&6
++ LIBS="/usr/X11R6/lib/libXft.so.2 $LIBS"
++ elif test -e "/usr/lib/libXft.so.2" ; then
++ echo "$as_me:$LINENO: result: Xft2" >&5
++echo "${ECHO_T}Xft2" >&6
++ LIBS="/usr/lib/libXft.so.2 $LIBS"
++ else
++ echo "$as_me:$LINENO: result: Xft" >&5
++echo "${ECHO_T}Xft" >&6
++ LIBS="-lXft $LIBS"
++ fi
++ else
++ { echo "$as_me:$LINENO: WARNING: *** Xft not found. Disabling anti-alias.***" >&5
++echo "$as_me: WARNING: *** Xft not found. Disabling anti-alias.***" >&2;}
++ enable_anti_alias="no"
++ CFLAGS="$CFLAGS -DDISABLE_ANTI_ALIAS"
++ fi
++ else
++ CFLAGS="$CFLAGS `$PKG_CONFIG xft --cflags`"
++ LDFLAGS="$LDFLAGS `$PKG_CONFIG xft --libs`"
++ fi
++ else
++ CFLAGS="$CFLAGS `$XFT_CONFIG --cflags`"
++ LDFLAGS="$LDFLAGS `$XFT_CONFIG --libs`"
++ fi
++fi
+ if test "x$enable_cookies" = "xno" ; then
+ CFLAGS="$CFLAGS -DDISABLE_COOKIES"
+ fi
+@@ -7861,6 +9140,9 @@ fi
+ if test "x$enable_threaded_dns" = "xyes" ; then
+ CFLAGS="$CFLAGS -DD_DNS_THREADED"
+ fi
++if test "x$enable_meta_refresh" = "xyes" ; then
++ CFLAGS="$CFLAGS -DENABLE_META_REFRESH"
++fi
+
+ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+ echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+@@ -8225,7 +9507,7 @@ fi
+
+
+
+- ac_config_files="$ac_config_files Makefile dpip/Makefile dpid/Makefile dpi/Makefile doc/Makefile src/Makefile src/IO/Makefile"
++ ac_config_files="$ac_config_files Makefile dpip/Makefile dpid/Makefile dpi/Makefile doc/Makefile config/Makefile src/Makefile src/IO/Makefile po/Makefile.in m4/Makefile"
+ cat >confcache <<\_ACEOF
+ # This file is a shell script that caches the results of configure
+ # tests run on this system so they can be shared between configure
+@@ -8338,13 +9620,6 @@ echo "$as_me: error: conditional \"am__f
+ Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+- { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+-Usually this means the macro was only invoked conditionally." >&5
+-echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+-Usually this means the macro was only invoked conditionally." >&2;}
+- { (exit 1); exit 1; }; }
+-fi
+ if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
+ Usually this means the macro was only invoked conditionally." >&5
+@@ -8786,6 +10061,13 @@ cat >>$CONFIG_STATUS <<_ACEOF
+ #
+
+ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
++# Capture the value of obsolete $ALL_LINGUAS because we need it to compute
++ # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it
++ # from automake.
++ eval 'ALL_LINGUAS''="$ALL_LINGUAS"'
++ # Capture the value of LINGUAS because we need it to compute CATALOGS.
++ LINGUAS="${LINGUAS-%UNSET%}"
++
+
+ _ACEOF
+
+@@ -8801,9 +10083,13 @@ do
+ "dpid/Makefile" ) CONFIG_FILES="$CONFIG_FILES dpid/Makefile" ;;
+ "dpi/Makefile" ) CONFIG_FILES="$CONFIG_FILES dpi/Makefile" ;;
+ "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
++ "config/Makefile" ) CONFIG_FILES="$CONFIG_FILES config/Makefile" ;;
+ "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+ "src/IO/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/IO/Makefile" ;;
++ "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
++ "m4/Makefile" ) CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;;
+ "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
++ "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
+ "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+ echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+@@ -8913,17 +10199,14 @@ s,@AUTOCONF@,$AUTOCONF,;t t
+ s,@AUTOMAKE@,$AUTOMAKE,;t t
+ s,@AUTOHEADER@,$AUTOHEADER,;t t
+ s,@MAKEINFO@,$MAKEINFO,;t t
++s,@AMTAR@,$AMTAR,;t t
+ s,@install_sh@,$install_sh,;t t
+ s,@STRIP@,$STRIP,;t t
+ s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
+ s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
+-s,@mkdir_p@,$mkdir_p,;t t
+ s,@AWK@,$AWK,;t t
+ s,@SET_MAKE@,$SET_MAKE,;t t
+ s,@am__leading_dot@,$am__leading_dot,;t t
+-s,@AMTAR@,$AMTAR,;t t
+-s,@am__tar@,$am__tar,;t t
+-s,@am__untar@,$am__untar,;t t
+ s,@DLGUI_TRUE@,$DLGUI_TRUE,;t t
+ s,@DLGUI_FALSE@,$DLGUI_FALSE,;t t
+ s,@CC@,$CC,;t t
+@@ -8951,6 +10234,19 @@ s,@ac_ct_CXX@,$ac_ct_CXX,;t t
+ s,@CXXDEPMODE@,$CXXDEPMODE,;t t
+ s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t
+ s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t
++s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t
++s,@MSGFMT@,$MSGFMT,;t t
++s,@GMSGFMT@,$GMSGFMT,;t t
++s,@XGETTEXT@,$XGETTEXT,;t t
++s,@MSGMERGE@,$MSGMERGE,;t t
++s,@USE_NLS@,$USE_NLS,;t t
++s,@LIBICONV@,$LIBICONV,;t t
++s,@LTLIBICONV@,$LTLIBICONV,;t t
++s,@INTLLIBS@,$INTLLIBS,;t t
++s,@LIBINTL@,$LIBINTL,;t t
++s,@LTLIBINTL@,$LTLIBINTL,;t t
++s,@POSUB@,$POSUB,;t t
++s,@localedir@,$localedir,;t t
+ s,@GLIB_CONFIG@,$GLIB_CONFIG,;t t
+ s,@GLIB_CFLAGS@,$GLIB_CFLAGS,;t t
+ s,@GLIB_LIBS@,$GLIB_LIBS,;t t
+@@ -8958,6 +10254,8 @@ s,@GTK_CONFIG@,$GTK_CONFIG,;t t
+ s,@GTK_CFLAGS@,$GTK_CFLAGS,;t t
+ s,@GTK_LIBS@,$GTK_LIBS,;t t
+ s,@EGREP@,$EGREP,;t t
++s,@XFT_CONFIG@,$XFT_CONFIG,;t t
++s,@PKG_CONFIG@,$PKG_CONFIG,;t t
+ s,@LIBJPEG_LIBS@,$LIBJPEG_LIBS,;t t
+ s,@LIBJPEG_LDFLAGS@,$LIBJPEG_LDFLAGS,;t t
+ s,@LIBJPEG_CPPFLAGS@,$LIBJPEG_CPPFLAGS,;t t
+@@ -9598,21 +10896,27 @@ echo X"$mf" |
+ else
+ continue
+ fi
+- # Extract the definition of DEPDIR, am__include, and am__quote
+- # from the Makefile without running `make'.
+- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
++ grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
++ # Extract the definition of DEP_FILES from the Makefile without
++ # running `make'.
++ DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+ test -z "$DEPDIR" && continue
+- am__include=`sed -n 's/^am__include = //p' < "$mf"`
+- test -z "am__include" && continue
+- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+- U=`sed -n 's/^U = //p' < "$mf"`
+- # Find all dependency output files, they are included files with
+- # $(DEPDIR) in their names. We invoke sed twice because it is the
+- # simplest approach to changing $(DEPDIR) to its actual value in the
+- # expansion.
+- for file in `sed -n "
+- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
++ U=`sed -n -e '/^U = / s///p' < "$mf"`
++ test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
++ # We invoke sed twice because it is the simplest approach to
++ # changing $(DEPDIR) to its actual value in the expansion.
++ for file in `sed -n -e '
++ /^DEP_FILES = .*\\\\$/ {
++ s/^DEP_FILES = //
++ :loop
++ s/\\\\$//
++ p
++ n
++ /\\\\$/ b loop
++ p
++ }
++ /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+@@ -9658,6 +10962,102 @@ echo "$as_me: error: cannot create direc
+ done
+ done
+ ;;
++ default-1 )
++ for ac_file in $CONFIG_FILES; do
++ # Support "outfile[:infile[:infile...]]"
++ case "$ac_file" in
++ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
++ esac
++ # PO directories have a Makefile.in generated from Makefile.in.in.
++ case "$ac_file" in */Makefile.in)
++ # Adjust a relative srcdir.
++ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
++ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
++ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
++ # In autoconf-2.13 it is called $ac_given_srcdir.
++ # In autoconf-2.50 it is called $srcdir.
++ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
++ case "$ac_given_srcdir" in
++ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
++ /*) top_srcdir="$ac_given_srcdir" ;;
++ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
++ esac
++ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
++ rm -f "$ac_dir/POTFILES"
++ test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
++ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
++ # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend
++ # on $ac_dir but don't depend on user-specified configuration
++ # parameters.
++ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
++ # The LINGUAS file contains the set of available languages.
++ if test -n "$ALL_LINGUAS"; then
++ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
++ fi
++ ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
++ # Hide the ALL_LINGUAS assigment from automake.
++ eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
++ fi
++ case "$ac_given_srcdir" in
++ .) srcdirpre= ;;
++ *) srcdirpre='$(srcdir)/' ;;
++ esac
++ POFILES=
++ GMOFILES=
++ UPDATEPOFILES=
++ DUMMYPOFILES=
++ for lang in $ALL_LINGUAS; do
++ POFILES="$POFILES $srcdirpre$lang.po"
++ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
++ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
++ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
++ done
++ # CATALOGS depends on both $ac_dir and the user's LINGUAS
++ # environment variable.
++ INST_LINGUAS=
++ if test -n "$ALL_LINGUAS"; then
++ for presentlang in $ALL_LINGUAS; do
++ useit=no
++ if test "%UNSET%" != "$LINGUAS"; then
++ desiredlanguages="$LINGUAS"
++ else
++ desiredlanguages="$ALL_LINGUAS"
++ fi
++ for desiredlang in $desiredlanguages; do
++ # Use the presentlang catalog if desiredlang is
++ # a. equal to presentlang, or
++ # b. a variant of presentlang (because in this case,
++ # presentlang can be used as a fallback for messages
++ # which are not translated in the desiredlang catalog).
++ case "$desiredlang" in
++ "$presentlang"*) useit=yes;;
++ esac
++ done
++ if test $useit = yes; then
++ INST_LINGUAS="$INST_LINGUAS $presentlang"
++ fi
++ done
++ fi
++ CATALOGS=
++ if test -n "$INST_LINGUAS"; then
++ for lang in $INST_LINGUAS; do
++ CATALOGS="$CATALOGS $lang.gmo"
++ done
++ fi
++ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
++ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
++ for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
++ if test -f "$f"; then
++ case "$f" in
++ *.orig | *.bak | *~) ;;
++ *) cat "$f" >> "$ac_dir/Makefile" ;;
++ esac
++ fi
++ done
++ fi
++ ;;
++ esac
++ done ;;
+ esac
+ done
+ _ACEOF
+@@ -9692,3 +11092,19 @@ if test "$no_create" != yes; then
+ fi
+
+
++echo ""
++echo "Finished configure:"
++echo " tabs: $enable_tabs";
++echo " cookies: $enable_cookies";
++echo " anti-alias: $enable_anti_alias";
++echo " ssl: $enable_ssl";
++echo " meta refresh: $enable_meta_refresh";
++echo " efence: $enable_efence";
++echo " gprof: $enable_gprof";
++echo " insure: $enable_insure";
++echo " rftl: $enable_rtfl";
++echo " prefix: $prefix";
++
++echo ""
++echo "Run configure --help for explanation of these options,"
++echo "otherwise type 'make' to build Dillo."
+diff -pruN dillo-0.8.6/configure.in dillo-0.8.6-i18n-misc-20060709/configure.in
+--- dillo-0.8.6/configure.in 2006-04-27 01:05:29.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/configure.in 2006-05-16 01:21:07.000000000 +0900
+@@ -5,7 +5,7 @@ AC_INIT(src/dillo.c)
+ dnl Detect the canonical host and target build environment
+ AC_CANONICAL_SYSTEM
+
+-AM_INIT_AUTOMAKE(dillo, 0.8.6)
++AM_INIT_AUTOMAKE(dillo, 0.8.6-i18n-misc)
+ AM_CONFIG_HEADER(config.h)
+
+ dnl Options
+@@ -21,8 +21,13 @@ AC_ARG_ENABLE(insure, [ --enable-insure
+ , enable_insure=no)
+ AC_ARG_ENABLE(ansi, [ --enable-ansi Try to compile and run with ANSI flags],
+ , enable_ansi=no)
++AC_ARG_ENABLE(tabs, [ --disable-tabs Don't compile support for tabs],
++ , enable_tabs=yes)
++AC_ARG_ENABLE(anti_alias,[ --disable-anti-alias Don't compile support for anti-alias],
++ , enable_anti_alias=yes)
+ AC_ARG_ENABLE(ipv6, [ --enable-ipv6 Build with support for IPv6], , )
+-AC_ARG_ENABLE(rtfl, [ --enable-rtfl Build with rtfl messages], enable_rtfl=yes)
++AC_ARG_ENABLE(rtfl, [ --enable-rtfl Build with rtfl messages],
++ , enable_rtfl=no)
+ AC_ARG_ENABLE(cookies,[ --disable-cookies Don't compile support for cookies],
+ , enable_cookies=yes)
+ AC_ARG_ENABLE(png, [ --disable-png Disable support for PNG images],
+@@ -38,6 +43,8 @@ AC_ARG_ENABLE(dlgui, [ --disable-dlgui
+ AC_ARG_ENABLE(threaded-dns,[ --disable-threaded-dns Disable the advantage of a reentrant resolver library],
+ enable_threaded_dns=$enableval, enable_threaded_dns=yes)
+ AM_CONDITIONAL(DLGUI, test x$enable_dlgui = xyes)
++AC_ARG_ENABLE(meta_refresh, [ --enable-meta-refresh Allow meta refresh],
++ , enable_meta_refresh=no)
+
+ AC_PROG_CC
+ AM_PROG_CC_STDC
+@@ -46,6 +53,20 @@ AC_PROG_CPP
+ AC_PROG_CXX
+
+ dnl --------------------------------------
++dnl Check for Gettext
++dnl --------------------------------------
++dnl
++ALL_LINGUAS="ja zh_CN zh_TW"
++AM_GNU_GETTEXT([external])
++LDFLAGS="$LDFLAGS $INTLLIBS"
++AC_CHECK_LIB(iconv, iconv, haslibiconv=yes, haslibiconv=no)
++if test "x$haslibiconv" = "xyes"; then
++ LDFLAGS="$LDFLAGS $LIBICONV"
++fi
++localedir='${prefix}/share/locale'
++AC_SUBST(localedir)
++
++dnl --------------------------------------
+ dnl Check whether to add /usr/local or not
+ dnl (this is somewhat a religious problem)
+ dnl --------------------------------------
+@@ -128,6 +149,11 @@ dnl
+ if test "x$enable_jpeg" = "xyes"; then
+ AC_CHECK_HEADER(jpeglib.h, jpeg_ok=yes, jpeg_ok=no)
+
++ if test -e /usr/include/jpeglib.h || test -e /usr/local/include/jpeglib.h
++ then
++ jpeg_ok=yes
++ fi
++
+ if test "x$jpeg_ok" = "xyes"; then
+ old_libs="$LIBS"
+ AC_CHECK_LIB(jpeg, jpeg_destroy_decompress, jpeg_ok=yes, jpeg_ok=no)
+@@ -155,7 +181,7 @@ dnl ------------------------------
+ dnl Test for zlib (libpng uses it)
+ dnl ------------------------------
+ dnl
+-if test "x$enable_png" = "xyes"; then
++dnl if test "x$enable_png" = "xyes"; then
+ AC_CHECK_HEADER(zlib.h, libz_ok=yes, libz_ok=no)
+
+ if test "x$libz_ok" = "xyes"; then
+@@ -169,7 +195,7 @@ if test "x$enable_png" = "xyes"; then
+ else
+ AC_MSG_WARN([*** No libz found. Disabling PNG images ***])
+ fi
+-fi
++dnl fi
+
+ dnl ---------------
+ dnl Test for libpng
+@@ -267,6 +293,19 @@ if test "x$ssl_ok" = "xyes"; then
+ AC_DEFINE([ENABLE_SSL], [], [Enable SSL support])
+ fi
+
++dnl ----------------------
++dnl Test for libssl
++dnl ----------------------
++dnl
++if test "x$enable_ssl" = "xyes" ; then
++ AC_CHECK_HEADERS(openssl/ssl.h openssl/err.h)
++ AC_CHECK_LIB(ssl, SSL_connect, , enable_ssl="no")
++ if test "x$enable_ssl" = "xno" ; then
++ AC_MSG_WARN(*** No libssl found. Disabling ssl. ***)
++ else
++ AC_DEFINE(DILLO_SSL, 1, [Enable SSL Processing])
++ fi
++fi
+
+ dnl ----------------------
+ dnl Test for POSIX threads
+@@ -351,6 +390,47 @@ dnl --------------------
+ dnl Command line options
+ dnl --------------------
+ dnl
++if test "x$enable_tabs" = "xno" ; then
++ CFLAGS="$CFLAGS -DDISABLE_TABS"
++fi
++if test "x$enable_anti_alias" = "xno" ; then
++ CFLAGS="$CFLAGS -DDISABLE_ANTI_ALIAS"
++else
++ AC_PATH_PROG(XFT_CONFIG, xft-config, no, $PATH:/usr/local/bin)
++ if test "$XFT_CONFIG" = "no" ; then
++ AC_PATH_PROG(PKG_CONFIG, pkg-config, no, $PATH:/usr/local/bin)
++ if test "$PKG_CONFIG" = "no" ; then
++ if test -d "/usr/include/freetype2" ; then
++ CPPFLAGS="$CPPFLAGS -I/usr/include/freetype2"
++ elif test -d "/usr/include/freetype1" ; then
++ CPPFLAGS="$CPPFLAGS -I/usr/include/freetype1"
++ fi
++ if test -e "/usr/X11R6/include/X11/Xft/Xft.h" ; then
++ AC_MSG_CHECKING(checking for Xft)
++ if test -e "/usr/X11R6/lib/libXft.so.2" ; then
++ AC_MSG_RESULT(Xft2)
++ LIBS="/usr/X11R6/lib/libXft.so.2 $LIBS"
++ elif test -e "/usr/lib/libXft.so.2" ; then
++ AC_MSG_RESULT(Xft2)
++ LIBS="/usr/lib/libXft.so.2 $LIBS"
++ else
++ AC_MSG_RESULT(Xft)
++ LIBS="-lXft $LIBS"
++ fi
++ else
++ AC_MSG_WARN(*** Xft not found. Disabling anti-alias.***)
++ enable_anti_alias="no"
++ CFLAGS="$CFLAGS -DDISABLE_ANTI_ALIAS"
++ fi
++ else
++ CFLAGS="$CFLAGS `$PKG_CONFIG xft --cflags`"
++ LDFLAGS="$LDFLAGS `$PKG_CONFIG xft --libs`"
++ fi
++ else
++ CFLAGS="$CFLAGS `$XFT_CONFIG --cflags`"
++ LDFLAGS="$LDFLAGS `$XFT_CONFIG --libs`"
++ fi
++fi
+ if test "x$enable_cookies" = "xno" ; then
+ CFLAGS="$CFLAGS -DDISABLE_COOKIES"
+ fi
+@@ -373,7 +453,10 @@ fi
+ if test "x$enable_threaded_dns" = "xyes" ; then
+ CFLAGS="$CFLAGS -DD_DNS_THREADED"
+ fi
+-
++if test "x$enable_meta_refresh" = "xyes" ; then
++ CFLAGS="$CFLAGS -DENABLE_META_REFRESH"
++fi
++
+ dnl -----------------------
+ dnl Checks for header files
+ dnl -----------------------
+@@ -429,5 +512,25 @@ AC_SUBST(LIBFLTK_LIBS)
+ AC_SUBST(datadir)
+ AC_SUBST(src doc bin util lib)
+
+-AC_OUTPUT(Makefile dpip/Makefile dpid/Makefile dpi/Makefile doc/Makefile src/Makefile src/IO/Makefile)
++AC_OUTPUT(Makefile dpip/Makefile dpid/Makefile dpi/Makefile doc/Makefile config/Makefile src/Makefile src/IO/Makefile po/Makefile.in m4/Makefile)
+
++dnl ----------------------
++dnl Show configure summary
++dnl ----------------------
++echo ""
++echo "Finished configure:"
++echo " tabs: $enable_tabs";
++echo " cookies: $enable_cookies";
++echo " anti-alias: $enable_anti_alias";
++echo " ssl: $enable_ssl";
++echo " meta refresh: $enable_meta_refresh";
++dnl echo " ipv6: $enable_ipv6";
++echo " efence: $enable_efence";
++echo " gprof: $enable_gprof";
++echo " insure: $enable_insure";
++echo " rftl: $enable_rtfl";
++echo " prefix: $prefix";
++
++echo ""
++echo "Run configure --help for explanation of these options,"
++echo "otherwise type 'make' to build Dillo."
+diff -pruN dillo-0.8.6/depcomp dillo-0.8.6-i18n-misc-20060709/depcomp
+--- dillo-0.8.6/depcomp 2005-03-22 16:17:05.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/depcomp 2006-05-16 01:21:07.000000000 +0900
+@@ -1,9 +1,9 @@
+ #! /bin/sh
+ # depcomp - compile a program generating dependencies as side-effects
+
+-scriptversion=2005-02-09.22
++scriptversion=2004-04-25.13
+
+-# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
++# Copyright (C) 1999, 2000, 2003, 2004 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
+@@ -43,18 +43,17 @@ Environment variables:
+ depmode Dependency tracking mode.
+ source Source file read by `PROGRAMS ARGS'.
+ object Object file output by `PROGRAMS ARGS'.
+- DEPDIR directory where to store dependencies.
+ depfile Dependency file to output.
+ tmpdepfile Temporary file to use when outputing dependencies.
+ libtool Whether libtool is used (yes/no).
+
+ Report bugs to <bug-automake@gnu.org>.
+ EOF
+- exit $?
++ exit 0
+ ;;
+ -v | --v*)
+ echo "depcomp $scriptversion"
+- exit $?
++ exit 0
+ ;;
+ esac
+
+@@ -62,10 +61,18 @@ if test -z "$depmode" || test -z "$sourc
+ echo "depcomp: Variables source, object and depmode must be set" 1>&2
+ exit 1
+ fi
++# `libtool' can also be set to `yes' or `no'.
++
++if test -z "$depfile"; then
++ base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
++ dir=`echo "$object" | sed 's,/.*$,/,'`
++ if test "$dir" = "$object"; then
++ dir=
++ fi
++ # FIXME: should be _deps on DOS.
++ depfile="$dir.deps/$base"
++fi
+
+-# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+-depfile=${depfile-`echo "$object" |
+- sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+ rm -f "$tmpdepfile"
+@@ -197,25 +204,19 @@ sgi)
+
+ aix)
+ # The C for AIX Compiler uses -M and outputs the dependencies
+- # in a .u file. In older versions, this file always lives in the
+- # current directory. Also, the AIX compiler puts `$object:' at the
+- # start of each line; $object doesn't have directory information.
+- # Version 6 uses the directory in both cases.
+- stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
++ # in a .u file. This file always lives in the current directory.
++ # Also, the AIX compiler puts `$object:' at the start of each line;
++ # $object doesn't have directory information.
++ stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
+ tmpdepfile="$stripped.u"
++ outname="$stripped.o"
+ if test "$libtool" = yes; then
+ "$@" -Wc,-M
+ else
+ "$@" -M
+ fi
+- stat=$?
+-
+- if test -f "$tmpdepfile"; then :
+- else
+- stripped=`echo "$stripped" | sed 's,^.*/,,'`
+- tmpdepfile="$stripped.u"
+- fi
+
++ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+@@ -223,7 +224,6 @@ aix)
+ fi
+
+ if test -f "$tmpdepfile"; then
+- outname="$stripped.o"
+ # Each line is of the form `foo.o: dependent.h'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+@@ -239,9 +239,11 @@ aix)
+ ;;
+
+ icc)
+- # Intel's C compiler understands `-MD -MF file'. However on
++ # Must come before tru64.
++
++ # Intel's C compiler understands `-MD -MF file'. However
+ # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+- # ICC 7.0 will fill foo.d with something like
++ # will fill foo.d with something like
+ # foo.o: sub/foo.c
+ # foo.o: sub/foo.h
+ # which is wrong. We want:
+@@ -249,12 +251,6 @@ icc)
+ # sub/foo.o: sub/foo.h
+ # sub/foo.c:
+ # sub/foo.h:
+- # ICC 7.1 will output
+- # foo.o: sub/foo.c sub/foo.h
+- # and will wrap long lines using \ :
+- # foo.o: sub/foo.c ... \
+- # sub/foo.h ... \
+- # ...
+
+ "$@" -MD -MF "$tmpdepfile"
+ stat=$?
+@@ -264,15 +260,11 @@ icc)
+ exit $stat
+ fi
+ rm -f "$depfile"
+- # Each line is of the form `foo.o: dependent.h',
+- # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
++ # Each line is of the form `foo.o: dependent.h'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+- sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+- # Some versions of the HPUX 10.20 sed can't process this invocation
+- # correctly. Breaking it into two sed invocations is a workaround.
+- sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+- sed -e 's/$/ :/' >> "$depfile"
++ sed -e "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
++ sed -e "s,^[^:]*: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+@@ -287,47 +279,37 @@ tru64)
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+ if test "$libtool" = yes; then
+- # With Tru64 cc, shared objects can also be used to make a
+- # static library. This mecanism is used in libtool 1.4 series to
+- # handle both shared and static libraries in a single compilation.
+- # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+- #
+- # With libtool 1.5 this exception was removed, and libtool now
+- # generates 2 separate objects for the 2 libraries. These two
+- # compilations output dependencies in in $dir.libs/$base.o.d and
+- # in $dir$base.o.d. We have to check for both files, because
+- # one of the two compilations can be disabled. We should prefer
+- # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+- # automatically cleaned when .libs/ is deleted, while ignoring
+- # the former would cause a distcleancheck panic.
+- tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
+- tmpdepfile2=$dir$base.o.d # libtool 1.5
+- tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
+- tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
++ # Dependencies are output in .lo.d with libtool 1.4.
++ # They are output in .o.d with libtool 1.5.
++ tmpdepfile1="$dir.libs/$base.lo.d"
++ tmpdepfile2="$dir.libs/$base.o.d"
++ tmpdepfile3="$dir.libs/$base.d"
+ "$@" -Wc,-MD
+ else
+- tmpdepfile1=$dir$base.o.d
+- tmpdepfile2=$dir$base.d
+- tmpdepfile3=$dir$base.d
+- tmpdepfile4=$dir$base.d
++ tmpdepfile1="$dir$base.o.d"
++ tmpdepfile2="$dir$base.d"
++ tmpdepfile3="$dir$base.d"
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
++ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+- do
+- test -f "$tmpdepfile" && break
+- done
++ if test -f "$tmpdepfile1"; then
++ tmpdepfile="$tmpdepfile1"
++ elif test -f "$tmpdepfile2"; then
++ tmpdepfile="$tmpdepfile2"
++ else
++ tmpdepfile="$tmpdepfile3"
++ fi
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+- # That's a tab and a space in the [].
+- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
++ # That's a space and a tab in the [].
++ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+@@ -340,7 +322,7 @@ tru64)
+
+ dashmstdout)
+ # Important note: in order to support this mode, a compiler *must*
+- # always write the preprocessed file to stdout, regardless of -o.
++ # always write the proprocessed file to stdout, regardless of -o.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+@@ -436,7 +418,7 @@ makedepend)
+
+ cpp)
+ # Important note: in order to support this mode, a compiler *must*
+- # always write the preprocessed file to stdout.
++ # always write the proprocessed file to stdout.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+@@ -478,7 +460,7 @@ cpp)
+
+ msvisualcpp)
+ # Important note: in order to support this mode, a compiler *must*
+- # always write the preprocessed file to stdout, regardless of -o,
++ # always write the proprocessed file to stdout, regardless of -o,
+ # because we must use -o when running libtool.
+ "$@" || exit $?
+ IFS=" "
+diff -pruN dillo-0.8.6/dillorc dillo-0.8.6-i18n-misc-20060709/dillorc
+--- dillo-0.8.6/dillorc 2005-01-13 22:30:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/dillorc 2006-05-16 01:21:07.000000000 +0900
+@@ -3,7 +3,6 @@
+ # Copy this file to ~/.dillo/dillorc and edit to your taste.
+ # Lines that start with a '#' are comments.
+
+-
+ #-------------------------------------------------------------------------
+ # FIRST SECTION :)
+ #-------------------------------------------------------------------------
+@@ -22,18 +21,29 @@ use_dicache=NO
+
+ # Fontname for variable width rendering (most of the text).
+ # - some fonts may slow down rendering, some others not!
+-# - try to tune a fontname/font_factor combination.
+-# Ex. {helvetica, lucida, times, "new century schoolbook", utopia, ...}
+-vw_fontname=helvetica
++# - try to tune a fontname/font_sizes combination.
++# format is "fndry-fmly" (fndry and fmly is XLFD's item.)
++# Ex. {"*-*", "*-gothic", "misc-fixed" ...}
++vw_fontname="*-gothic"
+
+ # Fontname for fixed width rendering (mainly <pre> quoted text)
+-fw_fontname=courier
++fw_fontname="*-gothic"
++
++# If Anti-Alias is enable, These options will be applied.
++# format is the same as family of Xft.
++# Ex. {"sans-serif", "monospace" ...}
++vw_aafontname="*"
++fw_aafontname="*"
++
++# Fontsizes
++# The 3rd value is used for plain text
++# font_sizes="10 12 14 16 18 20"
+
+ # All fontsizes are scaled by this value (default is 1.0)
+ #font_factor=1.2
+
+ # If you prefer oblique over italic fonts, uncoment next line
+-#use_oblique=YES
++use_oblique=NO
+
+ # Show tooltip popup for images?
+ # Note: We use the "title" attribute and not "alt".
+@@ -68,10 +78,16 @@ home="http://www.dillo.org/"
+
+ # Set search url to use with the search dialog.
+ # %s is replaced with urlencoded keywords, and %% by '%'.
+-search_url="http://www.google.com/search?q=%s"
++search_url="http://www.google.com/search?ie=UTF-8&oe=UTF-8&q=%s"
++#search_url="http://www.google.co.jp/search?ie=UTF-8&oe=UTF-8&q=%s"
++#search_url="http://www.excite.co.jp/dictionary/english_japanese/?match=beginswith&dictionary=NEW_EJJE&search=%s"
+ #search_url="http://search.lycos.com/default.asp?query=%s"
+ #search_url="http://www.alltheweb.com/search?cat=web&query=%s"
+
++# Search engine's charset
++#search_charset=EUC-JP
++search_charset=UTF-8
++
+ # Set the proxy information for http
+ #http_proxy=http://localhost:8080/
+
+@@ -84,6 +100,12 @@ search_url="http://www.google.com/search
+ #no_proxy = ".mynet.com"
+ #no_proxy = ".mynet.com .other.net .foo.bar.org"
+
++# Set the User-Agent
++# (%v = Version)
++#user_agent = "Dillo/%v"
++
++# Disable sending referer header
++#send_referer=NO
+
+ #-------------------------------------------------------------------------
+ # COLORS SECTION
+@@ -94,7 +116,8 @@ search_url="http://www.google.com/search
+ # Set the background color
+ # bg_color=gray
+ # bg_color=0xd6d6c0
+-bg_color=0xdcd1ba
++#bg_color=0xdcd1ba
++bg_color=white
+
+ # Set the text color
+ text_color=black
+@@ -123,8 +146,8 @@ contrast_visited_color=YES
+ # small : very nice! (it's "medium" without icon titles)
+ # medium : nice!
+ # large : Traditional
+-panel_size=medium
+-small_icons=NO
++panel_size=tiny
++small_icons=YES
+
+ # Here you can choose to hide some widgets of the dillo panel...
+ #show_back=NO
+@@ -137,16 +160,69 @@ small_icons=NO
+ #show_menubar=NO
+ #show_clear_url=NO
+ #show_url=NO
+-#show_search=NO
++#show_search=YES
+ #show_progress_box=NO
+
++# Show or hide navigation controls (back, forward, etc) in popup menu...
++show_popup_navigation=YES
++
+ # Start dillo windows with a hidden panel?
+ fullwindow_start=NO
+
++# Use popup dialogs (YES/NO, default YES). Disable this to use the status
++# bar and location bar instead of popup dialogs for several functions
++popup_dialogs=NO
++
+ # Enabling this will restrain OpenUrl and FindText, but may be required
+ # for the ION window manager.
+ transient_dialogs=NO
+
++# Forcus location bar on new window.
++# focus_location_on_new=YES
++
++# Enabling this will make 'load link in new tab' be executed in the
++# background, leaving the focus on the current tab
++tab_load_in_background=YES
++
++# Enabling this will open a new tab (instead of a new window)
++# on link-middle-click (button 2) and for the "_blank" url target
++tab_instead_of_window=YES
++
++# Show the tab bar (sometimes called the 'gutter') even when there is
++# only a single tab (document) loaded in the browser window?
++# tab_bar_show_single_tab=NO
++
++# Show the tab bar even in full screen mode?
++# tab_bar_show_fullscreen=NO
++
++# Make all tabs the same width?
++# tab_bar_homogeneous=YES
++
++# When there are more tabs than fit on the tab bar, add scrolling arrows
++# to the tab bar.
++# tab_bar_scroller=NO
++
++# Enabling this will close a tab by middle click
++# tab_close_middle_click=YES
++
++# Compress titles in tabs by removing vowels? If this is set to NO,
++# tabs will be shortened instead. This is what it looks like:
++#
++# Normal Compressed Shortened
++# The Quick Brown Fox Th Qck Brwn Fx The Q...Fox
++# tab_title_compress=YES
++
++# This defines which vowels are considered 'expendable' by the tab
++# title compression algorithm. The tab title will be shortened by
++# removing characters matching this pattern, starting from the end
++# of the tab title. Adjust this to taste or language if needed.
++# compress_vowels="aeiouyAEIOUY"
++
++# A semicolon-separated string of common prefixes. The compression
++# algorithm begins by trying to discard anything from the title
++# which matches this pattern.
++# compress_common_prefixes="index of ;re: ;fwd: ;www.;welcome to ;the "
++
+ # When filling forms, our default behaviour is to submit on enterpress,
+ # but only when there's a single text entry (to avoid incomplete submits).
+ # OTOH, if you have to fill the same form lots of times, you may find
+@@ -156,7 +232,7 @@ enterpress_forces_submit=NO
+ # Some forms lack a submit button, and dillo can generate a custom one
+ # internally. Unfortunately there's no guarantee for it to work. :(
+ # (my experience is that forms that lack a submit rely on Javascript)
+-generate_submit=NO
++generate_submit=YES
+
+ #-------------------------------------------------------------------------
+ # DEBUG MESSAGES SECTION
+diff -pruN dillo-0.8.6/doc/Adblock.txt dillo-0.8.6-i18n-misc-20060709/doc/Adblock.txt
+--- dillo-0.8.6/doc/Adblock.txt 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/doc/Adblock.txt 2006-05-16 01:21:08.000000000 +0900
+@@ -0,0 +1,9 @@
++==================
++ Adblock in Dillo
++==================
++compatible with Firefox Adblock.
++
++~/.dillo/adblock.txt contains a list of URLs.
++Please add URL which you want to disregard to it.
++it ignores any lines starting with [
++(not that they would have a chance to match anyway).
+diff -pruN dillo-0.8.6/doc/Makefile.am dillo-0.8.6-i18n-misc-20060709/doc/Makefile.am
+--- dillo-0.8.6/doc/Makefile.am 2003-08-09 04:25:19.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/doc/Makefile.am 2006-05-16 01:21:08.000000000 +0900
+@@ -1,4 +1,5 @@
+ EXTRA_DIST = \
++ Adblock.txt \
+ Cache.txt \
+ Cookies.txt \
+ Dillo.txt \
+diff -pruN dillo-0.8.6/doc/Makefile.in dillo-0.8.6-i18n-misc-20060709/doc/Makefile.in
+--- dillo-0.8.6/doc/Makefile.in 2006-04-27 01:07:11.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/doc/Makefile.in 2006-05-16 01:21:08.000000000 +0900
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.5 from Makefile.am.
++# Makefile.in generated by automake 1.7.9 from Makefile.am.
+ # @configure_input@
+
+-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
++# Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -13,6 +13,7 @@
+ # PARTICULAR PURPOSE.
+
+ @SET_MAKE@
++
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -20,6 +21,7 @@ pkgdatadir = $(datadir)/@PACKAGE@
+ pkglibdir = $(libdir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
+ top_builddir = ..
++
+ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+ INSTALL = @INSTALL@
+ install_sh_DATA = $(install_sh) -c -m 644
+@@ -36,18 +38,6 @@ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+ target_triplet = @target@
+-subdir = doc
+-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+- $(ACLOCAL_M4)
+-mkinstalldirs = $(install_sh) -d
+-CONFIG_HEADER = $(top_builddir)/config.h
+-CONFIG_CLEAN_FILES =
+-SOURCES =
+-DIST_SOURCES =
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+@@ -77,6 +67,7 @@ EXEEXT = @EXEEXT@
+ GLIB_CFLAGS = @GLIB_CFLAGS@
+ GLIB_CONFIG = @GLIB_CONFIG@
+ GLIB_LIBS = @GLIB_LIBS@
++GMSGFMT = @GMSGFMT@
+ GTK_CFLAGS = @GTK_CFLAGS@
+ GTK_CONFIG = @GTK_CONFIG@
+ GTK_LIBS = @GTK_LIBS@
+@@ -84,9 +75,12 @@ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
++INTLLIBS = @INTLLIBS@
+ LDFLAGS = @LDFLAGS@
+ LIBFLTK_CXXFLAGS = @LIBFLTK_CXXFLAGS@
+ LIBFLTK_LIBS = @LIBFLTK_LIBS@
++LIBICONV = @LIBICONV@
++LIBINTL = @LIBINTL@
+ LIBJPEG_CPPFLAGS = @LIBJPEG_CPPFLAGS@
+ LIBJPEG_LDFLAGS = @LIBJPEG_LDFLAGS@
+ LIBJPEG_LIBS = @LIBJPEG_LIBS@
+@@ -98,8 +92,13 @@ LIBPTHREAD_LIBS = @LIBPTHREAD_LIBS@
+ LIBS = @LIBS@
+ LIBSSL_LIBS = @LIBSSL_LIBS@
+ LIBZ_LIBS = @LIBZ_LIBS@
++LTLIBICONV = @LTLIBICONV@
++LTLIBINTL = @LTLIBINTL@
+ LTLIBOBJS = @LTLIBOBJS@
+ MAKEINFO = @MAKEINFO@
++MKINSTALLDIRS = @MKINSTALLDIRS@
++MSGFMT = @MSGFMT@
++MSGMERGE = @MSGMERGE@
+ OBJEXT = @OBJEXT@
+ PACKAGE = @PACKAGE@
+ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+@@ -108,11 +107,16 @@ PACKAGE_STRING = @PACKAGE_STRING@
+ PACKAGE_TARNAME = @PACKAGE_TARNAME@
+ PACKAGE_VERSION = @PACKAGE_VERSION@
+ PATH_SEPARATOR = @PATH_SEPARATOR@
++PKG_CONFIG = @PKG_CONFIG@
++POSUB = @POSUB@
+ RANLIB = @RANLIB@
+ SET_MAKE = @SET_MAKE@
+ SHELL = @SHELL@
+ STRIP = @STRIP@
++USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
++XFT_CONFIG = @XFT_CONFIG@
++XGETTEXT = @XGETTEXT@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_RANLIB = @ac_ct_RANLIB@
+@@ -124,8 +128,6 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TR
+ am__include = @am__include@
+ am__leading_dot = @am__leading_dot@
+ am__quote = @am__quote@
+-am__tar = @am__tar@
+-am__untar = @am__untar@
+ bindir = @bindir@
+ build = @build@
+ build_alias = @build_alias@
+@@ -144,9 +146,9 @@ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
++localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+-mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+@@ -159,6 +161,7 @@ target_cpu = @target_cpu@
+ target_os = @target_os@
+ target_vendor = @target_vendor@
+ EXTRA_DIST = \
++ Adblock.txt \
+ Cache.txt \
+ Cookies.txt \
+ Dillo.txt \
+@@ -176,38 +179,21 @@ EXTRA_DIST = \
+ Dpid.txt \
+ README
+
++subdir = doc
++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
++CONFIG_HEADER = $(top_builddir)/config.h
++CONFIG_CLEAN_FILES =
++DIST_SOURCES =
++DIST_COMMON = README $(srcdir)/Makefile.in Makefile.am
+ all: all-am
+
+ .SUFFIXES:
+-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+- @for dep in $?; do \
+- case '$(am__configure_deps)' in \
+- *$$dep*) \
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+- && exit 0; \
+- exit 1;; \
+- esac; \
+- done; \
+- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
++$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/Makefile
+-.PRECIOUS: Makefile
+-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+- @case '$?' in \
+- *config.status*) \
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+- *) \
+- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+- esac;
+-
+-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-
+-$(top_srcdir)/configure: $(am__configure_deps)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+ uninstall-info-am:
+ tags: TAGS
+ TAGS:
+@@ -215,6 +201,10 @@ TAGS:
+ ctags: CTAGS
+ CTAGS:
+
++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
++
++top_distdir = ..
++distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+ distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+@@ -228,7 +218,7 @@ distdir: $(DISTFILES)
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+- $(mkdir_p) "$(distdir)$$dir"; \
++ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+@@ -246,6 +236,7 @@ distdir: $(DISTFILES)
+ check-am: all-am
+ check: check-am
+ all-am: Makefile
++
+ installdirs:
+ install: install-am
+ install-exec: install-exec-am
+@@ -266,7 +257,7 @@ mostlyclean-generic:
+ clean-generic:
+
+ distclean-generic:
+- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
++ -rm -f $(CONFIG_CLEAN_FILES)
+
+ maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+@@ -283,8 +274,6 @@ dvi: dvi-am
+
+ dvi-am:
+
+-html: html-am
+-
+ info: info-am
+
+ info-am:
+@@ -318,8 +307,8 @@ ps-am:
+ uninstall-am: uninstall-info-am
+
+ .PHONY: all all-am check check-am clean clean-generic distclean \
+- distclean-generic distdir dvi dvi-am html html-am info info-am \
+- install install-am install-data install-data-am install-exec \
++ distclean-generic distdir dvi dvi-am info info-am install \
++ install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+diff -pruN dillo-0.8.6/doc/README dillo-0.8.6-i18n-misc-20060709/doc/README
+--- dillo-0.8.6/doc/README 2003-08-09 04:25:19.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/doc/README 2006-05-16 01:21:07.000000000 +0900
+@@ -18,8 +18,6 @@
+ DwPage.txt Dillo Widget page (shortly) Incomplete
+ DwStyle.txt Styles of Dillo Widgets Pending
+ DwTable.txt Tables in dillo Current
+- Selection.txt Selections, and link activation Current (?)
+- Cookies.txt Explains how to enable cookies Current
+ Dpid.txt Dillo plugin daemon Current
+ --------------------------------------------------------------------------
+ [This documents cover dillo's internal working. They're NOT a user manual]
+diff -pruN dillo-0.8.6/dpi/Makefile.am dillo-0.8.6-i18n-misc-20060709/dpi/Makefile.am
+--- dillo-0.8.6/dpi/Makefile.am 2006-01-04 05:16:10.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/dpi/Makefile.am 2006-05-16 01:21:15.000000000 +0900
+@@ -1,3 +1,4 @@
++AM_CPPFLAGS=-DLOCALEDIR='"$(localedir)"'
+ AM_CFLAGS = @GLIB_CFLAGS@
+ AM_CXXFLAGS = @GLIB_CFLAGS@
+
+diff -pruN dillo-0.8.6/dpi/Makefile.in dillo-0.8.6-i18n-misc-20060709/dpi/Makefile.in
+--- dillo-0.8.6/dpi/Makefile.in 2006-04-27 01:07:15.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/dpi/Makefile.in 2006-05-16 01:21:15.000000000 +0900
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.5 from Makefile.am.
++# Makefile.in generated by automake 1.7.9 from Makefile.am.
+ # @configure_input@
+
+-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
++# Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -14,8 +14,6 @@
+
+ @SET_MAKE@
+
+-SOURCES = $(bookmarks_dpi_SOURCES) $(cookies_dpi_SOURCES) $(datauri_filter_dpi_SOURCES) $(downloads_dpi_SOURCES) $(file_dpi_SOURCES) $(ftp_filter_dpi_SOURCES) $(hello_filter_dpi_SOURCES) $(https_filter_dpi_SOURCES)
+-
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -23,6 +21,7 @@ pkgdatadir = $(datadir)/@PACKAGE@
+ pkglibdir = $(libdir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
+ top_builddir = ..
++
+ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+ INSTALL = @INSTALL@
+ install_sh_DATA = $(install_sh) -c -m 644
+@@ -39,93 +38,6 @@ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+ target_triplet = @target@
+-bookmarks_PROGRAMS = bookmarks.dpi$(EXEEXT)
+-downloads_PROGRAMS = downloads.dpi$(EXEEXT)
+-ftp_PROGRAMS = ftp.filter.dpi$(EXEEXT)
+-https_PROGRAMS = https.filter.dpi$(EXEEXT)
+-hello_PROGRAMS = hello.filter.dpi$(EXEEXT)
+-file_PROGRAMS = file.dpi$(EXEEXT)
+-cookies_PROGRAMS = cookies.dpi$(EXEEXT)
+-datauri_PROGRAMS = datauri.filter.dpi$(EXEEXT)
+-subdir = dpi
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+- $(ACLOCAL_M4)
+-mkinstalldirs = $(install_sh) -d
+-CONFIG_HEADER = $(top_builddir)/config.h
+-CONFIG_CLEAN_FILES =
+-am__installdirs = "$(DESTDIR)$(bookmarksdir)" \
+- "$(DESTDIR)$(cookiesdir)" "$(DESTDIR)$(datauridir)" \
+- "$(DESTDIR)$(downloadsdir)" "$(DESTDIR)$(filedir)" \
+- "$(DESTDIR)$(ftpdir)" "$(DESTDIR)$(hellodir)" \
+- "$(DESTDIR)$(httpsdir)"
+-bookmarksPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+-cookiesPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+-datauriPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+-downloadsPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+-filePROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+-ftpPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+-helloPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+-httpsPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+-PROGRAMS = $(bookmarks_PROGRAMS) $(cookies_PROGRAMS) \
+- $(datauri_PROGRAMS) $(downloads_PROGRAMS) $(file_PROGRAMS) \
+- $(ftp_PROGRAMS) $(hello_PROGRAMS) $(https_PROGRAMS)
+-am_bookmarks_dpi_OBJECTS = bookmarks.$(OBJEXT) dpiutil.$(OBJEXT)
+-bookmarks_dpi_OBJECTS = $(am_bookmarks_dpi_OBJECTS)
+-bookmarks_dpi_DEPENDENCIES = ../dpip/libDpip.a
+-am_cookies_dpi_OBJECTS = cookies.$(OBJEXT) dpiutil.$(OBJEXT)
+-cookies_dpi_OBJECTS = $(am_cookies_dpi_OBJECTS)
+-cookies_dpi_DEPENDENCIES = ../dpip/libDpip.a
+-am_datauri_filter_dpi_OBJECTS = datauri.$(OBJEXT) dpiutil.$(OBJEXT)
+-datauri_filter_dpi_OBJECTS = $(am_datauri_filter_dpi_OBJECTS)
+-datauri_filter_dpi_DEPENDENCIES = ../dpip/libDpip.a
+-am__downloads_dpi_SOURCES_DIST = downloads-old.c dpiutil.c dpiutil.h \
+- downloads.cc
+-@DLGUI_FALSE@am_downloads_dpi_OBJECTS = downloads-old.$(OBJEXT) \
+-@DLGUI_FALSE@ dpiutil.$(OBJEXT)
+-@DLGUI_TRUE@am_downloads_dpi_OBJECTS = downloads.$(OBJEXT) \
+-@DLGUI_TRUE@ dpiutil.$(OBJEXT)
+-downloads_dpi_OBJECTS = $(am_downloads_dpi_OBJECTS)
+-@DLGUI_FALSE@downloads_dpi_DEPENDENCIES = ../dpip/libDpip.a
+-@DLGUI_TRUE@downloads_dpi_DEPENDENCIES = ../dpip/libDpip.a
+-am_file_dpi_OBJECTS = file.$(OBJEXT) dpiutil.$(OBJEXT)
+-file_dpi_OBJECTS = $(am_file_dpi_OBJECTS)
+-file_dpi_DEPENDENCIES = ../dpip/libDpip.a
+-am_ftp_filter_dpi_OBJECTS = ftp.$(OBJEXT) dpiutil.$(OBJEXT)
+-ftp_filter_dpi_OBJECTS = $(am_ftp_filter_dpi_OBJECTS)
+-ftp_filter_dpi_DEPENDENCIES = ../dpip/libDpip.a
+-am_hello_filter_dpi_OBJECTS = hello.$(OBJEXT) dpiutil.$(OBJEXT)
+-hello_filter_dpi_OBJECTS = $(am_hello_filter_dpi_OBJECTS)
+-hello_filter_dpi_DEPENDENCIES = ../dpip/libDpip.a
+-am_https_filter_dpi_OBJECTS = https.$(OBJEXT) dpiutil.$(OBJEXT)
+-https_filter_dpi_OBJECTS = $(am_https_filter_dpi_OBJECTS)
+-https_filter_dpi_DEPENDENCIES = ../dpip/libDpip.a
+-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+-depcomp = $(SHELL) $(top_srcdir)/depcomp
+-am__depfiles_maybe = depfiles
+-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-CCLD = $(CC)
+-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+-CXXLD = $(CXX)
+-CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+- -o $@
+-SOURCES = $(bookmarks_dpi_SOURCES) $(cookies_dpi_SOURCES) \
+- $(datauri_filter_dpi_SOURCES) $(downloads_dpi_SOURCES) \
+- $(file_dpi_SOURCES) $(ftp_filter_dpi_SOURCES) \
+- $(hello_filter_dpi_SOURCES) $(https_filter_dpi_SOURCES)
+-DIST_SOURCES = $(bookmarks_dpi_SOURCES) $(cookies_dpi_SOURCES) \
+- $(datauri_filter_dpi_SOURCES) \
+- $(am__downloads_dpi_SOURCES_DIST) $(file_dpi_SOURCES) \
+- $(ftp_filter_dpi_SOURCES) $(hello_filter_dpi_SOURCES) \
+- $(https_filter_dpi_SOURCES)
+-ETAGS = etags
+-CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+@@ -155,6 +67,7 @@ EXEEXT = @EXEEXT@
+ GLIB_CFLAGS = @GLIB_CFLAGS@
+ GLIB_CONFIG = @GLIB_CONFIG@
+ GLIB_LIBS = @GLIB_LIBS@
++GMSGFMT = @GMSGFMT@
+ GTK_CFLAGS = @GTK_CFLAGS@
+ GTK_CONFIG = @GTK_CONFIG@
+ GTK_LIBS = @GTK_LIBS@
+@@ -162,9 +75,12 @@ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
++INTLLIBS = @INTLLIBS@
+ LDFLAGS = @LDFLAGS@
+ LIBFLTK_CXXFLAGS = @LIBFLTK_CXXFLAGS@
+ LIBFLTK_LIBS = @LIBFLTK_LIBS@
++LIBICONV = @LIBICONV@
++LIBINTL = @LIBINTL@
+ LIBJPEG_CPPFLAGS = @LIBJPEG_CPPFLAGS@
+ LIBJPEG_LDFLAGS = @LIBJPEG_LDFLAGS@
+ LIBJPEG_LIBS = @LIBJPEG_LIBS@
+@@ -176,8 +92,13 @@ LIBPTHREAD_LIBS = @LIBPTHREAD_LIBS@
+ LIBS = @LIBS@
+ LIBSSL_LIBS = @LIBSSL_LIBS@
+ LIBZ_LIBS = @LIBZ_LIBS@
++LTLIBICONV = @LTLIBICONV@
++LTLIBINTL = @LTLIBINTL@
+ LTLIBOBJS = @LTLIBOBJS@
+ MAKEINFO = @MAKEINFO@
++MKINSTALLDIRS = @MKINSTALLDIRS@
++MSGFMT = @MSGFMT@
++MSGMERGE = @MSGMERGE@
+ OBJEXT = @OBJEXT@
+ PACKAGE = @PACKAGE@
+ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+@@ -186,11 +107,16 @@ PACKAGE_STRING = @PACKAGE_STRING@
+ PACKAGE_TARNAME = @PACKAGE_TARNAME@
+ PACKAGE_VERSION = @PACKAGE_VERSION@
+ PATH_SEPARATOR = @PATH_SEPARATOR@
++PKG_CONFIG = @PKG_CONFIG@
++POSUB = @POSUB@
+ RANLIB = @RANLIB@
+ SET_MAKE = @SET_MAKE@
+ SHELL = @SHELL@
+ STRIP = @STRIP@
++USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
++XFT_CONFIG = @XFT_CONFIG@
++XGETTEXT = @XGETTEXT@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_RANLIB = @ac_ct_RANLIB@
+@@ -202,8 +128,6 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TR
+ am__include = @am__include@
+ am__leading_dot = @am__leading_dot@
+ am__quote = @am__quote@
+-am__tar = @am__tar@
+-am__untar = @am__untar@
+ bindir = @bindir@
+ build = @build@
+ build_alias = @build_alias@
+@@ -222,9 +146,9 @@ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
++localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+-mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+@@ -236,8 +160,10 @@ target_alias = @target_alias@
+ target_cpu = @target_cpu@
+ target_os = @target_os@
+ target_vendor = @target_vendor@
++AM_CPPFLAGS = -DLOCALEDIR='"$(localedir)"'
+ AM_CFLAGS = @GLIB_CFLAGS@
+ AM_CXXFLAGS = @GLIB_CFLAGS@
++
+ bookmarksdir = $(libdir)/dillo/dpi/bookmarks
+ downloadsdir = $(libdir)/dillo/dpi/downloads
+ ftpdir = $(libdir)/dillo/dpi/ftp
+@@ -246,68 +172,135 @@ hellodir = $(libdir)/dillo/dpi/hello
+ filedir = $(libdir)/dillo/dpi/file
+ cookiesdir = $(libdir)/dillo/dpi/cookies
+ datauridir = $(libdir)/dillo/dpi/datauri
++bookmarks_PROGRAMS = bookmarks.dpi
++downloads_PROGRAMS = downloads.dpi
++ftp_PROGRAMS = ftp.filter.dpi
++https_PROGRAMS = https.filter.dpi
++hello_PROGRAMS = hello.filter.dpi
++file_PROGRAMS = file.dpi
++cookies_PROGRAMS = cookies.dpi
++datauri_PROGRAMS = datauri.filter.dpi
++
+ bookmarks_dpi_LDADD = @GLIB_LIBS@ ../dpip/libDpip.a
+-@DLGUI_FALSE@downloads_dpi_LDADD = @GLIB_LIBS@ ../dpip/libDpip.a
+ @DLGUI_TRUE@downloads_dpi_LDADD = @GLIB_LIBS@ @LIBFLTK_LIBS@ ../dpip/libDpip.a
++@DLGUI_FALSE@downloads_dpi_LDADD = @GLIB_LIBS@ ../dpip/libDpip.a
+ ftp_filter_dpi_LDADD = @GLIB_LIBS@ ../dpip/libDpip.a
+ https_filter_dpi_LDADD = @GLIB_LIBS@ @LIBSSL_LIBS@ ../dpip/libDpip.a
+ hello_filter_dpi_LDADD = @GLIB_LIBS@ ../dpip/libDpip.a
+ file_dpi_LDADD = @GLIB_LIBS@ @LIBPTHREAD_LIBS@ ../dpip/libDpip.a
+ cookies_dpi_LDADD = @GLIB_LIBS@ ../dpip/libDpip.a
+ datauri_filter_dpi_LDADD = @GLIB_LIBS@ ../dpip/libDpip.a
++
+ file_dpi_LDFLAGS = @LIBPTHREAD_LDFLAGS@
++
+ bookmarks_dpi_SOURCES = bookmarks.c dpiutil.c dpiutil.h
+-@DLGUI_FALSE@downloads_dpi_SOURCES = downloads-old.c dpiutil.c dpiutil.h
+ @DLGUI_TRUE@downloads_dpi_SOURCES = downloads.cc dpiutil.c dpiutil.h
++@DLGUI_FALSE@downloads_dpi_SOURCES = downloads-old.c dpiutil.c dpiutil.h
+ ftp_filter_dpi_SOURCES = ftp.c dpiutil.c dpiutil.h
+ https_filter_dpi_SOURCES = https.c dpiutil.c dpiutil.h
+ hello_filter_dpi_SOURCES = hello.c dpiutil.c dpiutil.h
+ file_dpi_SOURCES = file.c dpiutil.c dpiutil.h
+ cookies_dpi_SOURCES = cookies.c dpiutil.c dpiutil.h
+ datauri_filter_dpi_SOURCES = datauri.c dpiutil.c dpiutil.h
++subdir = dpi
++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
++CONFIG_HEADER = $(top_builddir)/config.h
++CONFIG_CLEAN_FILES =
++bookmarks_PROGRAMS = bookmarks.dpi$(EXEEXT)
++cookies_PROGRAMS = cookies.dpi$(EXEEXT)
++datauri_PROGRAMS = datauri.filter.dpi$(EXEEXT)
++downloads_PROGRAMS = downloads.dpi$(EXEEXT)
++file_PROGRAMS = file.dpi$(EXEEXT)
++ftp_PROGRAMS = ftp.filter.dpi$(EXEEXT)
++hello_PROGRAMS = hello.filter.dpi$(EXEEXT)
++https_PROGRAMS = https.filter.dpi$(EXEEXT)
++PROGRAMS = $(bookmarks_PROGRAMS) $(cookies_PROGRAMS) $(datauri_PROGRAMS) \
++ $(downloads_PROGRAMS) $(file_PROGRAMS) $(ftp_PROGRAMS) \
++ $(hello_PROGRAMS) $(https_PROGRAMS)
++
++am_bookmarks_dpi_OBJECTS = bookmarks.$(OBJEXT) dpiutil.$(OBJEXT)
++bookmarks_dpi_OBJECTS = $(am_bookmarks_dpi_OBJECTS)
++bookmarks_dpi_DEPENDENCIES = ../dpip/libDpip.a
++bookmarks_dpi_LDFLAGS =
++am_cookies_dpi_OBJECTS = cookies.$(OBJEXT) dpiutil.$(OBJEXT)
++cookies_dpi_OBJECTS = $(am_cookies_dpi_OBJECTS)
++cookies_dpi_DEPENDENCIES = ../dpip/libDpip.a
++cookies_dpi_LDFLAGS =
++am_datauri_filter_dpi_OBJECTS = datauri.$(OBJEXT) dpiutil.$(OBJEXT)
++datauri_filter_dpi_OBJECTS = $(am_datauri_filter_dpi_OBJECTS)
++datauri_filter_dpi_DEPENDENCIES = ../dpip/libDpip.a
++datauri_filter_dpi_LDFLAGS =
++am__downloads_dpi_SOURCES_DIST = downloads.cc dpiutil.c dpiutil.h \
++ downloads-old.c
++@DLGUI_TRUE@am_downloads_dpi_OBJECTS = downloads.$(OBJEXT) \
++@DLGUI_TRUE@ dpiutil.$(OBJEXT)
++@DLGUI_FALSE@am_downloads_dpi_OBJECTS = downloads-old.$(OBJEXT) \
++@DLGUI_FALSE@ dpiutil.$(OBJEXT)
++downloads_dpi_OBJECTS = $(am_downloads_dpi_OBJECTS)
++@DLGUI_TRUE@downloads_dpi_DEPENDENCIES = ../dpip/libDpip.a
++@DLGUI_FALSE@downloads_dpi_DEPENDENCIES = ../dpip/libDpip.a
++downloads_dpi_LDFLAGS =
++am_file_dpi_OBJECTS = file.$(OBJEXT) dpiutil.$(OBJEXT)
++file_dpi_OBJECTS = $(am_file_dpi_OBJECTS)
++file_dpi_DEPENDENCIES = ../dpip/libDpip.a
++am_ftp_filter_dpi_OBJECTS = ftp.$(OBJEXT) dpiutil.$(OBJEXT)
++ftp_filter_dpi_OBJECTS = $(am_ftp_filter_dpi_OBJECTS)
++ftp_filter_dpi_DEPENDENCIES = ../dpip/libDpip.a
++ftp_filter_dpi_LDFLAGS =
++am_hello_filter_dpi_OBJECTS = hello.$(OBJEXT) dpiutil.$(OBJEXT)
++hello_filter_dpi_OBJECTS = $(am_hello_filter_dpi_OBJECTS)
++hello_filter_dpi_DEPENDENCIES = ../dpip/libDpip.a
++hello_filter_dpi_LDFLAGS =
++am_https_filter_dpi_OBJECTS = https.$(OBJEXT) dpiutil.$(OBJEXT)
++https_filter_dpi_OBJECTS = $(am_https_filter_dpi_OBJECTS)
++https_filter_dpi_DEPENDENCIES = ../dpip/libDpip.a
++https_filter_dpi_LDFLAGS =
++
++DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
++depcomp = $(SHELL) $(top_srcdir)/depcomp
++am__depfiles_maybe = depfiles
++@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/bookmarks.Po ./$(DEPDIR)/cookies.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/datauri.Po ./$(DEPDIR)/downloads-old.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/downloads.Po ./$(DEPDIR)/dpiutil.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/file.Po ./$(DEPDIR)/ftp.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/hello.Po ./$(DEPDIR)/https.Po
++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
++CCLD = $(CC)
++LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
++CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
++CXXLD = $(CXX)
++CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
++ -o $@
++DIST_SOURCES = $(bookmarks_dpi_SOURCES) $(cookies_dpi_SOURCES) \
++ $(datauri_filter_dpi_SOURCES) $(am__downloads_dpi_SOURCES_DIST) \
++ $(file_dpi_SOURCES) $(ftp_filter_dpi_SOURCES) \
++ $(hello_filter_dpi_SOURCES) $(https_filter_dpi_SOURCES)
++DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
++SOURCES = $(bookmarks_dpi_SOURCES) $(cookies_dpi_SOURCES) $(datauri_filter_dpi_SOURCES) $(downloads_dpi_SOURCES) $(file_dpi_SOURCES) $(ftp_filter_dpi_SOURCES) $(hello_filter_dpi_SOURCES) $(https_filter_dpi_SOURCES)
++
+ all: all-am
+
+ .SUFFIXES:
+ .SUFFIXES: .c .cc .o .obj
+-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+- @for dep in $?; do \
+- case '$(am__configure_deps)' in \
+- *$$dep*) \
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+- && exit 0; \
+- exit 1;; \
+- esac; \
+- done; \
+- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu dpi/Makefile'; \
++$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu dpi/Makefile
+-.PRECIOUS: Makefile
+-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+- @case '$?' in \
+- *config.status*) \
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+- *) \
+- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+- esac;
+-
+-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-
+-$(top_srcdir)/configure: $(am__configure_deps)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
++bookmarksPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+ install-bookmarksPROGRAMS: $(bookmarks_PROGRAMS)
+ @$(NORMAL_INSTALL)
+- test -z "$(bookmarksdir)" || $(mkdir_p) "$(DESTDIR)$(bookmarksdir)"
++ $(mkinstalldirs) $(DESTDIR)$(bookmarksdir)
+ @list='$(bookmarks_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+- echo " $(INSTALL_PROGRAM_ENV) $(bookmarksPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bookmarksdir)/$$f'"; \
+- $(INSTALL_PROGRAM_ENV) $(bookmarksPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bookmarksdir)/$$f" || exit 1; \
++ echo " $(INSTALL_PROGRAM_ENV) $(bookmarksPROGRAMS_INSTALL) $$p $(DESTDIR)$(bookmarksdir)/$$f"; \
++ $(INSTALL_PROGRAM_ENV) $(bookmarksPROGRAMS_INSTALL) $$p $(DESTDIR)$(bookmarksdir)/$$f || exit 1; \
+ else :; fi; \
+ done
+
+@@ -315,22 +308,23 @@ uninstall-bookmarksPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bookmarks_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+- echo " rm -f '$(DESTDIR)$(bookmarksdir)/$$f'"; \
+- rm -f "$(DESTDIR)$(bookmarksdir)/$$f"; \
++ echo " rm -f $(DESTDIR)$(bookmarksdir)/$$f"; \
++ rm -f $(DESTDIR)$(bookmarksdir)/$$f; \
+ done
+
+ clean-bookmarksPROGRAMS:
+ -test -z "$(bookmarks_PROGRAMS)" || rm -f $(bookmarks_PROGRAMS)
++cookiesPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+ install-cookiesPROGRAMS: $(cookies_PROGRAMS)
+ @$(NORMAL_INSTALL)
+- test -z "$(cookiesdir)" || $(mkdir_p) "$(DESTDIR)$(cookiesdir)"
++ $(mkinstalldirs) $(DESTDIR)$(cookiesdir)
+ @list='$(cookies_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+- echo " $(INSTALL_PROGRAM_ENV) $(cookiesPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(cookiesdir)/$$f'"; \
+- $(INSTALL_PROGRAM_ENV) $(cookiesPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(cookiesdir)/$$f" || exit 1; \
++ echo " $(INSTALL_PROGRAM_ENV) $(cookiesPROGRAMS_INSTALL) $$p $(DESTDIR)$(cookiesdir)/$$f"; \
++ $(INSTALL_PROGRAM_ENV) $(cookiesPROGRAMS_INSTALL) $$p $(DESTDIR)$(cookiesdir)/$$f || exit 1; \
+ else :; fi; \
+ done
+
+@@ -338,22 +332,23 @@ uninstall-cookiesPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(cookies_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+- echo " rm -f '$(DESTDIR)$(cookiesdir)/$$f'"; \
+- rm -f "$(DESTDIR)$(cookiesdir)/$$f"; \
++ echo " rm -f $(DESTDIR)$(cookiesdir)/$$f"; \
++ rm -f $(DESTDIR)$(cookiesdir)/$$f; \
+ done
+
+ clean-cookiesPROGRAMS:
+ -test -z "$(cookies_PROGRAMS)" || rm -f $(cookies_PROGRAMS)
++datauriPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+ install-datauriPROGRAMS: $(datauri_PROGRAMS)
+ @$(NORMAL_INSTALL)
+- test -z "$(datauridir)" || $(mkdir_p) "$(DESTDIR)$(datauridir)"
++ $(mkinstalldirs) $(DESTDIR)$(datauridir)
+ @list='$(datauri_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+- echo " $(INSTALL_PROGRAM_ENV) $(datauriPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(datauridir)/$$f'"; \
+- $(INSTALL_PROGRAM_ENV) $(datauriPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(datauridir)/$$f" || exit 1; \
++ echo " $(INSTALL_PROGRAM_ENV) $(datauriPROGRAMS_INSTALL) $$p $(DESTDIR)$(datauridir)/$$f"; \
++ $(INSTALL_PROGRAM_ENV) $(datauriPROGRAMS_INSTALL) $$p $(DESTDIR)$(datauridir)/$$f || exit 1; \
+ else :; fi; \
+ done
+
+@@ -361,22 +356,23 @@ uninstall-datauriPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(datauri_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+- echo " rm -f '$(DESTDIR)$(datauridir)/$$f'"; \
+- rm -f "$(DESTDIR)$(datauridir)/$$f"; \
++ echo " rm -f $(DESTDIR)$(datauridir)/$$f"; \
++ rm -f $(DESTDIR)$(datauridir)/$$f; \
+ done
+
+ clean-datauriPROGRAMS:
+ -test -z "$(datauri_PROGRAMS)" || rm -f $(datauri_PROGRAMS)
++downloadsPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+ install-downloadsPROGRAMS: $(downloads_PROGRAMS)
+ @$(NORMAL_INSTALL)
+- test -z "$(downloadsdir)" || $(mkdir_p) "$(DESTDIR)$(downloadsdir)"
++ $(mkinstalldirs) $(DESTDIR)$(downloadsdir)
+ @list='$(downloads_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+- echo " $(INSTALL_PROGRAM_ENV) $(downloadsPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(downloadsdir)/$$f'"; \
+- $(INSTALL_PROGRAM_ENV) $(downloadsPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(downloadsdir)/$$f" || exit 1; \
++ echo " $(INSTALL_PROGRAM_ENV) $(downloadsPROGRAMS_INSTALL) $$p $(DESTDIR)$(downloadsdir)/$$f"; \
++ $(INSTALL_PROGRAM_ENV) $(downloadsPROGRAMS_INSTALL) $$p $(DESTDIR)$(downloadsdir)/$$f || exit 1; \
+ else :; fi; \
+ done
+
+@@ -384,22 +380,23 @@ uninstall-downloadsPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(downloads_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+- echo " rm -f '$(DESTDIR)$(downloadsdir)/$$f'"; \
+- rm -f "$(DESTDIR)$(downloadsdir)/$$f"; \
++ echo " rm -f $(DESTDIR)$(downloadsdir)/$$f"; \
++ rm -f $(DESTDIR)$(downloadsdir)/$$f; \
+ done
+
+ clean-downloadsPROGRAMS:
+ -test -z "$(downloads_PROGRAMS)" || rm -f $(downloads_PROGRAMS)
++filePROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+ install-filePROGRAMS: $(file_PROGRAMS)
+ @$(NORMAL_INSTALL)
+- test -z "$(filedir)" || $(mkdir_p) "$(DESTDIR)$(filedir)"
++ $(mkinstalldirs) $(DESTDIR)$(filedir)
+ @list='$(file_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+- echo " $(INSTALL_PROGRAM_ENV) $(filePROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(filedir)/$$f'"; \
+- $(INSTALL_PROGRAM_ENV) $(filePROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(filedir)/$$f" || exit 1; \
++ echo " $(INSTALL_PROGRAM_ENV) $(filePROGRAMS_INSTALL) $$p $(DESTDIR)$(filedir)/$$f"; \
++ $(INSTALL_PROGRAM_ENV) $(filePROGRAMS_INSTALL) $$p $(DESTDIR)$(filedir)/$$f || exit 1; \
+ else :; fi; \
+ done
+
+@@ -407,22 +404,23 @@ uninstall-filePROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(file_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+- echo " rm -f '$(DESTDIR)$(filedir)/$$f'"; \
+- rm -f "$(DESTDIR)$(filedir)/$$f"; \
++ echo " rm -f $(DESTDIR)$(filedir)/$$f"; \
++ rm -f $(DESTDIR)$(filedir)/$$f; \
+ done
+
+ clean-filePROGRAMS:
+ -test -z "$(file_PROGRAMS)" || rm -f $(file_PROGRAMS)
++ftpPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+ install-ftpPROGRAMS: $(ftp_PROGRAMS)
+ @$(NORMAL_INSTALL)
+- test -z "$(ftpdir)" || $(mkdir_p) "$(DESTDIR)$(ftpdir)"
++ $(mkinstalldirs) $(DESTDIR)$(ftpdir)
+ @list='$(ftp_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+- echo " $(INSTALL_PROGRAM_ENV) $(ftpPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(ftpdir)/$$f'"; \
+- $(INSTALL_PROGRAM_ENV) $(ftpPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(ftpdir)/$$f" || exit 1; \
++ echo " $(INSTALL_PROGRAM_ENV) $(ftpPROGRAMS_INSTALL) $$p $(DESTDIR)$(ftpdir)/$$f"; \
++ $(INSTALL_PROGRAM_ENV) $(ftpPROGRAMS_INSTALL) $$p $(DESTDIR)$(ftpdir)/$$f || exit 1; \
+ else :; fi; \
+ done
+
+@@ -430,22 +428,23 @@ uninstall-ftpPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(ftp_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+- echo " rm -f '$(DESTDIR)$(ftpdir)/$$f'"; \
+- rm -f "$(DESTDIR)$(ftpdir)/$$f"; \
++ echo " rm -f $(DESTDIR)$(ftpdir)/$$f"; \
++ rm -f $(DESTDIR)$(ftpdir)/$$f; \
+ done
+
+ clean-ftpPROGRAMS:
+ -test -z "$(ftp_PROGRAMS)" || rm -f $(ftp_PROGRAMS)
++helloPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+ install-helloPROGRAMS: $(hello_PROGRAMS)
+ @$(NORMAL_INSTALL)
+- test -z "$(hellodir)" || $(mkdir_p) "$(DESTDIR)$(hellodir)"
++ $(mkinstalldirs) $(DESTDIR)$(hellodir)
+ @list='$(hello_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+- echo " $(INSTALL_PROGRAM_ENV) $(helloPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(hellodir)/$$f'"; \
+- $(INSTALL_PROGRAM_ENV) $(helloPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(hellodir)/$$f" || exit 1; \
++ echo " $(INSTALL_PROGRAM_ENV) $(helloPROGRAMS_INSTALL) $$p $(DESTDIR)$(hellodir)/$$f"; \
++ $(INSTALL_PROGRAM_ENV) $(helloPROGRAMS_INSTALL) $$p $(DESTDIR)$(hellodir)/$$f || exit 1; \
+ else :; fi; \
+ done
+
+@@ -453,22 +452,23 @@ uninstall-helloPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(hello_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+- echo " rm -f '$(DESTDIR)$(hellodir)/$$f'"; \
+- rm -f "$(DESTDIR)$(hellodir)/$$f"; \
++ echo " rm -f $(DESTDIR)$(hellodir)/$$f"; \
++ rm -f $(DESTDIR)$(hellodir)/$$f; \
+ done
+
+ clean-helloPROGRAMS:
+ -test -z "$(hello_PROGRAMS)" || rm -f $(hello_PROGRAMS)
++httpsPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+ install-httpsPROGRAMS: $(https_PROGRAMS)
+ @$(NORMAL_INSTALL)
+- test -z "$(httpsdir)" || $(mkdir_p) "$(DESTDIR)$(httpsdir)"
++ $(mkinstalldirs) $(DESTDIR)$(httpsdir)
+ @list='$(https_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+- echo " $(INSTALL_PROGRAM_ENV) $(httpsPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(httpsdir)/$$f'"; \
+- $(INSTALL_PROGRAM_ENV) $(httpsPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(httpsdir)/$$f" || exit 1; \
++ echo " $(INSTALL_PROGRAM_ENV) $(httpsPROGRAMS_INSTALL) $$p $(DESTDIR)$(httpsdir)/$$f"; \
++ $(INSTALL_PROGRAM_ENV) $(httpsPROGRAMS_INSTALL) $$p $(DESTDIR)$(httpsdir)/$$f || exit 1; \
+ else :; fi; \
+ done
+
+@@ -476,8 +476,8 @@ uninstall-httpsPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(https_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+- echo " rm -f '$(DESTDIR)$(httpsdir)/$$f'"; \
+- rm -f "$(DESTDIR)$(httpsdir)/$$f"; \
++ echo " rm -f $(DESTDIR)$(httpsdir)/$$f"; \
++ rm -f $(DESTDIR)$(httpsdir)/$$f; \
+ done
+
+ clean-httpsPROGRAMS:
+@@ -508,7 +508,7 @@ https.filter.dpi$(EXEEXT): $(https_filte
+ $(LINK) $(https_filter_dpi_LDFLAGS) $(https_filter_dpi_OBJECTS) $(https_filter_dpi_LDADD) $(LIBS)
+
+ mostlyclean-compile:
+- -rm -f *.$(OBJEXT)
++ -rm -f *.$(OBJEXT) core *.core
+
+ distclean-compile:
+ -rm -f *.tab.c
+@@ -525,34 +525,58 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/https.Po@am__quote@
+
+ .c.o:
+-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
++@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
++@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
++@am__fastdepCC_TRUE@ fi
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+ .c.obj:
+-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
++@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
++@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
++@am__fastdepCC_TRUE@ fi
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+ .cc.o:
+-@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
++@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
++@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
++@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
++@am__fastdepCXX_TRUE@ fi
+ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+ .cc.obj:
+-@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
++@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
++@am__fastdepCXX_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
++@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
++@am__fastdepCXX_TRUE@ fi
+ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+ uninstall-info-am:
+
++ETAGS = etags
++ETAGSFLAGS =
++
++CTAGS = ctags
++CTAGSFLAGS =
++
++tags: TAGS
++
+ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+@@ -561,7 +585,6 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+-tags: TAGS
+
+ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+@@ -573,11 +596,10 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEP
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+- test -n "$$unique" || unique=$$empty_fix; \
+- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+- $$tags $$unique; \
+- fi
++ test -z "$(ETAGS_ARGS)$$tags$$unique" \
++ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
++ $$tags $$unique
++
+ ctags: CTAGS
+ CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+@@ -600,6 +622,10 @@ GTAGS:
+
+ distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
++
++top_distdir = ..
++distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+ distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+@@ -613,7 +639,7 @@ distdir: $(DISTFILES)
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+- $(mkdir_p) "$(distdir)$$dir"; \
++ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+@@ -631,10 +657,9 @@ distdir: $(DISTFILES)
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(PROGRAMS)
++
+ installdirs:
+- for dir in "$(DESTDIR)$(bookmarksdir)" "$(DESTDIR)$(cookiesdir)" "$(DESTDIR)$(datauridir)" "$(DESTDIR)$(downloadsdir)" "$(DESTDIR)$(filedir)" "$(DESTDIR)$(ftpdir)" "$(DESTDIR)$(hellodir)" "$(DESTDIR)$(httpsdir)"; do \
+- test -z "$$dir" || $(mkdir_p) "$$dir"; \
+- done
++ $(mkinstalldirs) $(DESTDIR)$(bookmarksdir) $(DESTDIR)$(cookiesdir) $(DESTDIR)$(datauridir) $(DESTDIR)$(downloadsdir) $(DESTDIR)$(filedir) $(DESTDIR)$(ftpdir) $(DESTDIR)$(hellodir) $(DESTDIR)$(httpsdir)
+ install: install-am
+ install-exec: install-exec-am
+ install-data: install-data-am
+@@ -654,7 +679,7 @@ mostlyclean-generic:
+ clean-generic:
+
+ distclean-generic:
+- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
++ -rm -f $(CONFIG_CLEAN_FILES)
+
+ maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+@@ -676,8 +701,6 @@ dvi: dvi-am
+
+ dvi-am:
+
+-html: html-am
+-
+ info: info-am
+
+ info-am:
+@@ -724,7 +747,7 @@ uninstall-am: uninstall-bookmarksPROGRAM
+ clean-filePROGRAMS clean-ftpPROGRAMS clean-generic \
+ clean-helloPROGRAMS clean-httpsPROGRAMS ctags distclean \
+ distclean-compile distclean-generic distclean-tags distdir dvi \
+- dvi-am html html-am info info-am install install-am \
++ dvi-am info info-am install install-am \
+ install-bookmarksPROGRAMS install-cookiesPROGRAMS install-data \
+ install-data-am install-datauriPROGRAMS \
+ install-downloadsPROGRAMS install-exec install-exec-am \
+diff -pruN dillo-0.8.6/dpi/bookmarks.c dillo-0.8.6-i18n-misc-20060709/dpi/bookmarks.c
+--- dillo-0.8.6/dpi/bookmarks.c 2006-01-21 10:27:22.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/dpi/bookmarks.c 2006-07-08 21:17:17.000000000 +0900
+@@ -19,6 +19,7 @@
+ * final '>' of a tag.
+ */
+
++#include <config.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <stddef.h>
+@@ -38,6 +39,7 @@
+ #include "dpiutil.h"
+
+ #include <glib.h>
++#include "src/intl.h"
+
+ /* This one is tricky, some sources state it should include the byte
+ * for the terminating NULL, and others say it shouldn't. */
+@@ -71,7 +73,7 @@ typedef struct {
+ /*
+ * Local data
+ */
+-static char *Header = "Content-type: text/html\n\n";
++static char *Header = "Content-type: text/html charset=UTF-8\n\n";
+ static char *BmFile = NULL;
+ static time_t BmFileTimeStamp = 0;
+ static GSList *B_bms = NULL;
+@@ -91,7 +93,7 @@ static int MODIFY_PAGE_NUM = 1;
+ /* -- HTML templates ------------------------------------------------------- */
+
+ char *mainpage_header =
+-DOCTYPE
++N_("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
+ "<html>\n"
+ "<head>\n"
+ "<title>Bookmarks</title>\n"
+@@ -107,10 +109,10 @@ DOCTYPE
+ " </td></tr>\n"
+ " </table></td></tr>\n"
+ "</table>\n"
+-"<br>\n";
++"<br>\n");
+
+ char *modifypage_header =
+-DOCTYPE
++N_("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
+ "<html>\n"
+ "<head>\n"
+ "<title>Bookmarks</title>\n"
+@@ -143,25 +145,25 @@ DOCTYPE
+ " <td width='100%'></td>\n"
+ " </tr>\n"
+ " </table></td></tr>\n"
+-"</table>\n";
++"</table>\n");
+
+ char *mainpage_sections_header =
+-"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n"
++N_("<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n"
+ " <tr valign='top'>\n"
+ " <td>\n"
+ " <table bgcolor='#b4b4b4' border='2' cellpadding='4' cellspacing='1'>\n"
+ " <tr><td>\n"
+ " <table width='100%' bgcolor='#b4b4b4'>\n"
+-" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n";
++" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n");
+
+ char *modifypage_sections_header =
+-"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n"
++N_("<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n"
+ " <tr valign='top'>\n"
+ " <td>\n"
+ " <table bgcolor='#b4b4b4' border='1'>\n"
+ " <tr><td>\n"
+ " <table width='100%' bgcolor='#b4b4b4'>\n"
+-" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n";
++" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n");
+
+ char *mainpage_sections_item =
+ " <tr><td align='center'>\n"
+@@ -192,7 +194,7 @@ char *mainpage_section_card_header =
+ " <a name='s%d'></a>\n"
+ " <table bgcolor='#bfbfbf' width='100%%' cellspacing='2'>\n"
+ " <tr>\n"
+-" <td bgcolor='#bf0c0c'><font color='white'><b>\n"
++" <td bgcolor='#bf0c0c' width='100%%'><font color='white'><b>\n"
+ " &nbsp;&nbsp;&nbsp;%s&nbsp;&nbsp;&nbsp;</b></font></td>\n"
+ " <td bgcolor='white' width='100%%'>&nbsp;</td></tr>\n";
+
+@@ -200,7 +202,7 @@ char *modifypage_section_card_header =
+ " <a name='s%d'></a>\n"
+ " <table bgcolor='#bfbfbf' width='100%%' cellspacing='2'>\n"
+ " <tr>\n"
+-" <td bgcolor='#bf0c0c'><font color='white'><b>\n"
++" <td bgcolor='#bf0c0c' width='100%%'><font color='white'><b>\n"
+ " &nbsp;&nbsp;&nbsp;%s&nbsp;&nbsp;&nbsp;</b></font></td>\n"
+ " <td bgcolor='white' width='100%%'>&nbsp;</td></tr>\n";
+
+@@ -238,7 +240,7 @@ char *modifypage_footer =
+
+ /* ------------------------------------------------------------------------- */
+ char *modifypage_add_section_page =
+-DOCTYPE
++N_("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
+ "<html>\n"
+ "<head>\n"
+ "<title>Bookmarks</title>\n"
+@@ -274,11 +276,11 @@ DOCTYPE
+ "</form>\n"
+ "</body>\n"
+ "</html>\n"
+-"\n";
++"\n");
+
+ /* ------------------------------------------------------------------------- */
+ char *modifypage_update_header =
+-DOCTYPE
++N_("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
+ "<html>\n"
+ "<head>\n"
+ "<title>Bookmarks</title>\n"
+@@ -292,7 +294,7 @@ DOCTYPE
+ "</table>\n"
+ "<br>\n"
+ "<form>\n"
+-"<input type='hidden' name='operation' value='modify2'>\n";
++"<input type='hidden' name='operation' value='modify2'>\n");
+
+ char *modifypage_update_title =
+ "<table border='1' width='100%%'>\n"
+@@ -305,7 +307,7 @@ char *modifypage_update_item_header =
+ "<table width='100%' cellpadding='10'>\n";
+
+ char *modifypage_update_item =
+-"<tr><td>\n"
++N_("<tr><td>\n"
+ " <table width='100%%' bgcolor='teal'>\n"
+ " <tr>\n"
+ " <td>Title:</td>\n"
+@@ -315,33 +317,33 @@ char *modifypage_update_item =
+ " <td>URL:</td>\n"
+ " <td>%s</td></tr>\n"
+ " </table>\n"
+-" </td></tr>\n";
++" </td></tr>\n");
+
+ char *modifypage_update_item2 =
+-"<tr><td>\n"
++N_("<tr><td>\n"
+ " <table width='100%%' bgcolor='teal'>\n"
+ " <tr>\n"
+ " <td>Title:</td>\n"
+ " <td><input type='text' name='s%d' size='64'\n"
+ " value='%s'></td></tr>\n"
+ " </table>\n"
+-" </td></tr>\n";
++" </td></tr>\n");
+
+ char *modifypage_update_item_footer =
+ "</table>\n";
+
+ char *modifypage_update_footer =
+-"<table width='100%' cellpadding='4' border='0'>\n"
++N_("<table width='100%' cellpadding='4' border='0'>\n"
+ "<tr><td bgcolor='#a0a0a0'>\n"
+ " <input type='submit' name='submit' value='submit.'></td></tr>\n"
+ "</table>\n"
+ "</form>\n"
+ "</body>\n"
+-"</html>\n";
++"</html>\n");
+
+ /* ------------------------------------------------------------------------- */
+ char *modifypage_add_url =
+-DOCTYPE
++N_("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
+ "<html>\n"
+ "<head>\n"
+ "<title>Bookmarks</title>\n"
+@@ -379,7 +381,7 @@ DOCTYPE
+ "</table>\n"
+ "</form>\n"
+ "</body>\n"
+-"</html>\n";
++"</html>\n");
+
+
+ /* ------------------------------------------------------------------------- */
+@@ -686,7 +688,7 @@ static void Bms_normalize(void)
+
+ /* we need at least one section */
+ if (!B_secs)
+- Bms_sec_add("Unclassified");
++ Bms_sec_add(_("Unclassified"));
+
+ /* make correlative section numbers */
+ n = 0;
+@@ -719,7 +721,7 @@ static void Bms_check_import(void)
+ {
+ gchar *OldBmFile;
+ char *cmd1 =
+- "echo \":s0: Unclassified\" > %s";
++ _("echo \":s0: Unclassified\" > %s");
+ char *cmd2 =
+ "grep -i \"href\" %s | "
+ "sed -e 's/<li><A HREF=\"/s0 /' -e 's/\">/ /' -e 's/<.*$//' >> %s";
+@@ -781,7 +783,7 @@ static int Bms_load(void)
+ Bms_sec_add(title);
+
+ } else {
+- g_print("Syntax error in bookmarks file:\n %s", buf);
++ g_print(_("Syntax error in bookmarks file:\n %s"), buf);
+ }
+ g_free(buf);
+ }
+@@ -893,7 +895,7 @@ static int Bms_save(void)
+ static int Bmsrv_add_bm(SockHandler *sh, char *url, char *title)
+ {
+ char *u_title;
+- char *msg="Added bookmark!";
++ char *msg=_("Added bookmark!");
+ int section = 0;
+
+ /* Add in memory */
+@@ -942,7 +944,7 @@ static int Bmsrv_send_reload_request(Soc
+ {
+ gint st;
+ char *d_cmd;
+-
++
+ d_cmd = a_Dpip_build_cmd("cmd=%s url=%s", "reload_request", url);
+ st = sock_handler_write_str(sh, d_cmd, 1) ? 1 : 0;
+ g_free(d_cmd);
+@@ -965,11 +967,11 @@ static int Bmsrv_send_modify_page(SockHa
+ gstr = g_string_new("");
+
+ /* send modify page header */
+- if (sock_handler_write_str(sh, modifypage_header, 0))
++ if (sock_handler_write_str(sh, _(modifypage_header), 0))
+ return 1;
+
+ /* write sections header */
+- if (sock_handler_write_str(sh, modifypage_sections_header, 0))
++ if (sock_handler_write_str(sh, _(modifypage_sections_header), 0))
+ return 1;
+ /* write sections */
+ for (list1 = B_secs; list1; list1 = list1->next) {
+@@ -993,7 +995,7 @@ static int Bmsrv_send_modify_page(SockHa
+
+ /* send card header */
+ l_title = make_one_line_str(sec_node->title);
+- g_string_sprintf(gstr, modifypage_section_card_header,
++ g_string_sprintf(gstr, _(modifypage_section_card_header),
+ sec_node->section, l_title);
+ g_free(l_title);
+ if (sock_handler_write_str(sh, gstr->str, 0))
+@@ -1029,7 +1031,7 @@ static int Bmsrv_send_modify_page(SockHa
+ static int Bmsrv_send_modify_page_add_section(SockHandler *sh)
+ {
+ /* send modify page2 */
+- if (sock_handler_write_str(sh, modifypage_add_section_page, 1))
++ if (sock_handler_write_str(sh, _(modifypage_add_section_page), 1))
+ return 1;
+
+ return 2;
+@@ -1041,7 +1043,7 @@ static int Bmsrv_send_modify_page_add_se
+ */
+ static int Bmsrv_send_modify_page_add_url(SockHandler *sh)
+ {
+- if (sock_handler_write_str(sh, modifypage_add_url, 1))
++ if (sock_handler_write_str(sh, _(modifypage_add_url), 1))
+ return 1;
+ return 2;
+ }
+@@ -1075,14 +1077,14 @@ static int Bmsrv_send_modify_update(Sock
+ }
+
+ /* send HTML here */
+- if (sock_handler_write_str(sh, modifypage_update_header, 0))
++ if (sock_handler_write_str(sh, _(modifypage_update_header), 0))
+ return 1;
+
+ /* Count number of marked urls and sections */
+ Bmsrv_count_urls_and_sections(url1, &n_sec, &n_url);
+
+ if (n_sec) {
+- g_string_sprintf(gstr, modifypage_update_title, "Update&nbsp;sections:");
++ g_string_sprintf(gstr, modifypage_update_title, _("Update&nbsp;sections:"));
+ sock_handler_write_str(sh, gstr->str, 0);
+ sock_handler_write_str(sh, modifypage_update_item_header, 0);
+ /* send items here */
+@@ -1092,7 +1094,7 @@ static int Bmsrv_send_modify_update(Sock
+ if (q[2+i] == '=') {
+ key = strtol(q + 2, NULL, 10);
+ if ((sec_node = Bms_get_sec(key))) {
+- g_string_sprintf(gstr, modifypage_update_item2,
++ g_string_sprintf(gstr, _(modifypage_update_item2),
+ sec_node->section, sec_node->title);
+ sock_handler_write_str(sh, gstr->str, 0);
+ }
+@@ -1102,7 +1104,7 @@ static int Bmsrv_send_modify_update(Sock
+ }
+
+ if (n_url) {
+- g_string_sprintf(gstr, modifypage_update_title, "Update&nbsp;titles:");
++ g_string_sprintf(gstr, modifypage_update_title, _("Update&nbsp;titles:"));
+ sock_handler_write_str(sh, gstr->str, 0);
+ sock_handler_write_str(sh, modifypage_update_item_header, 0);
+ /* send items here */
+@@ -1112,7 +1114,7 @@ static int Bmsrv_send_modify_update(Sock
+ if (q[4+i] == '=') {
+ key = strtol(q + 4, NULL, 10);
+ bm_node = Bms_get(key);
+- g_string_sprintf(gstr, modifypage_update_item,
++ g_string_sprintf(gstr, _(modifypage_update_item),
+ bm_node->key, bm_node->title, bm_node->url);
+ sock_handler_write_str(sh, gstr->str, 0);
+ }
+@@ -1120,7 +1122,7 @@ static int Bmsrv_send_modify_update(Sock
+ sock_handler_write_str(sh, modifypage_update_item_footer, 0);
+ }
+
+- sock_handler_write_str(sh, modifypage_update_footer, 1);
++ sock_handler_write_str(sh, _(modifypage_update_footer), 1);
+
+ return 2;
+ }
+@@ -1399,22 +1401,22 @@ static int Bmsrv_check_modify_request(So
+ if (strstr(p, "operation=delete&")) {
+ if (n_url || n_sec)
+ return 0;
+- msg = "Delete: you must mark what to delete!";
++ msg = _("Delete: you must mark what to delete!");
+
+ } else if (strstr(url, "operation=move&")) {
+ if (n_url && n_sec)
+ return 0;
+ else if (n_url)
+- msg = "Move: you must mark a target section!";
++ msg = _("Move: you must mark a target section!");
+ else if (n_sec)
+- msg = "Move: can not move a section (yet).";
++ msg = _("Move: can not move a section (yet).");
+ else
+- msg = "Move: you must mark some urls, and a target section!";
++ msg = _("Move: you must mark some urls, and a target section!");
+
+ } else if (strstr(url, "operation=modify&")) {
+ if (n_url || n_sec)
+ return 0;
+- msg = "Modify: you must mark what to update!";
++ msg = _("Modify: you must mark what to update!");
+
+ } else if (strstr(url, "operation=modify2&")) {
+ /* nothing to check here */
+@@ -1431,17 +1433,17 @@ static int Bmsrv_check_modify_request(So
+ } else if (strstr(url, "operation=add_url&")) {
+ if (n_sec <= 1)
+ return 0;
+- msg = "Add url: only one target section is allowed!";
++ msg = _("Add url: only one target section is allowed!");
+
+ } else if (strstr(url, "operation=add_url2&")) {
+ /* nothing to check here */
+ return 0;
+
+ } else if (strstr(url, "operation=none&")) {
+- msg = "No operation, just do nothing!";
++ msg = _("No operation, just do nothing!");
+
+ } else {
+- msg = "Sorry, not implemented yet.";
++ msg = _("Sorry, not implemented yet.");
+ }
+
+ Bmsrv_dpi_send_status_msg(sh, msg);
+@@ -1529,11 +1531,11 @@ static int send_bm_page(SockHandler *sh)
+ if (!gstr)
+ gstr = g_string_new("");
+
+- if (sock_handler_write_str(sh, mainpage_header, 0))
++ if (sock_handler_write_str(sh, _(mainpage_header), 0))
+ return 1;
+
+ /* write sections header */
+- if (sock_handler_write_str(sh, mainpage_sections_header, 0))
++ if (sock_handler_write_str(sh, _(mainpage_sections_header), 0))
+ return 1;
+ /* write sections */
+ for (list1 = B_secs; list1; list1 = list1->next) {
+@@ -1557,7 +1559,7 @@ static int send_bm_page(SockHandler *sh)
+
+ /* send card header */
+ l_title = make_one_line_str(sec_node->title);
+- g_string_sprintf(gstr, mainpage_section_card_header,
++ g_string_sprintf(gstr, _(mainpage_section_card_header),
+ sec_node->section, l_title);
+ g_free(l_title);
+ if (sock_handler_write_str(sh, gstr->str, 0))
+@@ -1609,7 +1611,7 @@ static int Bmsrv_parse_buf(SockHandler *
+
+ if (!(p = strchr(Buf, '>'))) {
+ /* Haven't got a full tag */
+- g_print("Haven't got a full tag!\n");
++ g_print(_("Haven't got a full tag!\n"));
+ return 1;
+ }
+
+@@ -1648,7 +1650,7 @@ static int Bmsrv_parse_buf(SockHandler *
+ title = a_Dpip_get_attr(Buf, BufSize, "title");
+ if (strlen(title) == 0) {
+ g_free(title);
+- title = g_strdup("(Untitled)");
++ title = g_strdup(_("(Untitled)"));
+ }
+ if (url && title)
+ Bmsrv_add_bm(sh, url, title);
+@@ -1685,8 +1687,8 @@ static int Bmsrv_parse_buf(SockHandler *
+ st = send_bm_page(sh);
+ if (st != 0) {
+ char *err =
+- DOCTYPE
+- "<HTML><body> Error on the bookmarks server...</body></html>";
++ _("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++ "<HTML><body> Error on the bookmarks server...</body></html>");
+ if (sock_handler_write(sh, err, strlen(err), 1) != 0) {
+ return 1;
+ }
+@@ -1727,6 +1729,14 @@ int main (void) {
+ int code;
+ SockHandler *sh;
+
++ /* Initialize Gettext */
++#ifdef ENABLE_NLS
++ setlocale(LC_ALL, "");
++ bindtextdomain (PACKAGE, LOCALEDIR);
++ bind_textdomain_codeset (PACKAGE, "UTF-8");
++ textdomain (PACKAGE);
++#endif
++
+ /* Arrange the cleanup function for terminations via exit() */
+ atexit(cleanup);
+
+@@ -1740,7 +1750,7 @@ int main (void) {
+
+ BmFile = g_strconcat(g_get_home_dir(), "/", ".dillo/bm.txt", NULL);
+
+- g_print("bookmarks.dpi (v.13): accepting connections...\n");
++ //g_print(_("bookmarks.dpi (v.13): accepting connections...\n"));
+
+ /* some OSes may need this... */
+ address_size = sizeof(struct sockaddr_un);
+@@ -1768,6 +1778,7 @@ int main (void) {
+ break;
+ }
+
++ //g_print("Closing SockHandler\n");
+ sock_handler_close(sh);
+ sock_handler_free(sh);
+
+diff -pruN dillo-0.8.6/dpi/cookies.c dillo-0.8.6-i18n-misc-20060709/dpi/cookies.c
+--- dillo-0.8.6/dpi/cookies.c 2006-02-15 22:27:27.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/dpi/cookies.c 2006-05-16 01:21:15.000000000 +0900
+@@ -187,7 +187,7 @@ static FILE *Cookies_fopen(const char *f
+ write(fd, init_str, strlen(init_str));
+ close(fd);
+
+- MSG("Created file: %s\n", filename);
++ _MSG("Created file: %s\n", filename);
+ F_in = Cookies_fopen(filename, NULL);
+ } else {
+ MSG("Could not create file: %s!\n", filename);
+@@ -263,7 +263,7 @@ void Cookies_init()
+ return;
+ }
+
+- MSG("Enabling cookies as from cookiesrc...\n");
++ _MSG("Enabling cookies as from cookiesrc...\n");
+
+ cookies = g_hash_table_new(g_str_hash, g_str_equal);
+
+@@ -574,7 +574,7 @@ static time_t Cookies_create_timestamp(c
+ (minutes * 60) +
+ seconds);
+
+- MSG("Expires in %ld seconds, at %s",
++ _MSG("Expires in %ld seconds, at %s",
+ (long)ret - time(NULL), ctime(&ret));
+
+ return ret;
+@@ -717,7 +717,7 @@ static char *Cookies_parse_attr(char **c
+ {
+ char *str = *cookie_str;
+ guint i, end = 0;
+- gboolean got_attr = FALSE;
++ gboolean got_attr = FALSE, have_value = TRUE;;
+
+ for (i = 0; ; i++) {
+ switch (str[i]) {
+@@ -726,6 +726,10 @@ static char *Cookies_parse_attr(char **c
+ case '=':
+ case ';':
+ got_attr = TRUE;
++ if(str[i] == '=' && str[i+1] == ';'){
++ _MSG("no value\n");
++ have_value = FALSE;
++ }
+ if (end == 0)
+ end = i;
+ break;
+@@ -741,6 +745,7 @@ static char *Cookies_parse_attr(char **c
+ /* fall through! */
+ default:
+ if (got_attr) {
++ if(!have_value) i--;
+ *cookie_str = str + i;
+ return g_strndup(str, end);
+ }
+@@ -762,6 +767,11 @@ static char *Cookies_parse_value(char **
+ guint i, end;
+ char *str = *cookie_str;
+
++ if (str[0] == ';') {
++ cookie_str += 1;
++ return strdup("");
++ }
++
+ for (i = end = 0; !end; ++i) {
+ switch (str[i]) {
+ case ' ':
+@@ -880,7 +890,7 @@ static CookieData_t *Cookies_parse_one(g
+ }
+ } else if (g_strcasecmp(attr, "Expires") == 0) {
+ if (!max_age && !discard) {
+- MSG("Old netscape-style cookie...\n");
++ _MSG("Old netscape-style cookie...\n");
+ value = Cookies_parse_value(&str, TRUE, FALSE);
+ if (value) {
+ cookie->expires_at = Cookies_create_timestamp(value);
+@@ -1225,7 +1235,7 @@ static int Cookie_control_init(void)
+
+ /* Get a file pointer */
+ filename = g_strconcat(g_get_home_dir(), "/", ".dillo/cookiesrc", NULL);
+- stream = Cookies_fopen(filename, "DEFAULT DENY\n");
++ stream = Cookies_fopen(filename, "DEFAULT ACCEPT\n");
+ g_free(filename);
+
+ if (!stream)
+@@ -1341,7 +1351,7 @@ static int srv_parse_buf(SockHandler *sh
+
+ if (cmd && strcmp(cmd, "DpiBye") == 0) {
+ g_free(cmd);
+- MSG("Cookies dpi (pid %d): Got DpiBye.\n", (gint)getpid());
++ _MSG("Cookies dpi (pid %d): Got DpiBye.\n", (gint)getpid());
+ exit(0);
+
+ } else if (cmd && strcmp(cmd, "set_cookie") == 0) {
+@@ -1398,7 +1408,7 @@ static int srv_parse_buf(SockHandler *sh
+ static void cleanup(void)
+ {
+ Cookies_freeall();
+- MSG("cleanup\n");
++ _MSG("cleanup\n");
+ /* no more cleanup required */
+ }
+
+@@ -1434,7 +1444,7 @@ int main (void) {
+ signal (SIGTERM, SIG_IGN);
+
+ Cookies_init();
+- MSG("(v.1) accepting connections...\n");
++ _MSG("(v.1) accepting connections...\n");
+
+ if (disabled)
+ exit(1);
+diff -pruN dillo-0.8.6/dpi/dpiutil.c dillo-0.8.6-i18n-misc-20060709/dpi/dpiutil.c
+--- dillo-0.8.6/dpi/dpiutil.c 2006-01-21 05:06:55.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/dpi/dpiutil.c 2006-05-16 01:21:15.000000000 +0900
+@@ -95,8 +95,8 @@ gchar *Unescape_html_str(const gchar *st
+ if (!g_strncasecmp(str + i, unsafe_rep[k], unsafe_rep_len[k])) {
+ i += unsafe_rep_len[k] - 1;
+ break;
+- }
+- }
++ }
++ }
+ u_str[j++] = (k < 5) ? unsafe_chars[k] : str[i];
+ } else {
+ u_str[j++] = str[i];
+@@ -139,7 +139,7 @@ char *Filter_smtp_hack(char *url)
+
+ /*
+ * Create and initialize the SockHandler structure
+- */
++ */
+ SockHandler *sock_handler_new(int fd_in, int fd_out, int flush_sz)
+ {
+ SockHandler *sh = g_new(SockHandler, 1);
+@@ -232,7 +232,7 @@ gchar *sock_handler_read(SockHandler *sh
+ do
+ st = read(sh->fd_in, buf, 16384);
+ while (st < 0 && errno == EINTR);
+-
++
+ if (st == -1)
+ perror("[sock_handler_read]");
+
+diff -pruN dillo-0.8.6/dpi/file.c dillo-0.8.6-i18n-misc-20060709/dpi/file.c
+--- dillo-0.8.6/dpi/file.c 2006-04-12 02:50:23.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/dpi/file.c 2006-05-16 01:21:15.000000000 +0900
+@@ -525,7 +525,7 @@ static const char *File_content_type(con
+ /*
+ * Try to stat the file and determine if it's readable.
+ */
+-static void File_get(ClientInfo *Client, const char *filename,
++static void File_get(ClientInfo *Client, const char *filename,
+ const char *orig_url)
+ {
+ int res;
+@@ -545,7 +545,7 @@ static void File_get(ClientInfo *Client,
+
+ if (res == FILE_NOT_FOUND) {
+ msg = g_strdup_printf("%s Not Found: %s",
+- S_ISDIR(sb.st_mode) ? "Directory" : "File", filename);
++ S_ISDIR(sb.st_mode) ? "Directory" : "File", filename);
+ } else if (res == FILE_NO_ACCESS) {
+ msg = g_strdup_printf("Access denied to %s: %s",
+ S_ISDIR(sb.st_mode) ? "Directory" : "File", filename);
+@@ -715,7 +715,7 @@ static char *File_normalize_path(const c
+ if (str[1] == '\0' || str[1] == '/') {
+ /* User wants the CWD */
+ basename = g_get_current_dir();
+- str++;
++ str++;
+ } else if (str[1] == '.') {
+ /* One level down from the CWD */
+ char *tmp1 = g_get_current_dir();
+@@ -941,11 +941,11 @@ int main(void)
+
+ /* Arrange the cleanup function for abnormal terminations */
+ if (signal (SIGINT, termination_handler) == SIG_IGN)
+- signal (SIGINT, SIG_IGN);
++ signal (SIGINT, SIG_IGN);
+ if (signal (SIGHUP, termination_handler) == SIG_IGN)
+- signal (SIGHUP, SIG_IGN);
++ signal (SIGHUP, SIG_IGN);
+ if (signal (SIGTERM, termination_handler) == SIG_IGN)
+- signal (SIGTERM, SIG_IGN);
++ signal (SIGTERM, SIG_IGN);
+
+ MSG("(v.1) accepting connections...\n");
+
+@@ -972,7 +972,7 @@ int main(void)
+ accept(STDIN_FILENO, (struct sockaddr *)&spun, &address_size);
+
+ if (temp_sock_descriptor == -1) {
+- perror("[accept]");
++ perror("[accept]");
+ break;
+ }
+
+diff -pruN dillo-0.8.6/dpi/ftp.c dillo-0.8.6-i18n-misc-20060709/dpi/ftp.c
+--- dillo-0.8.6/dpi/ftp.c 2006-04-04 21:48:45.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/dpi/ftp.c 2006-05-16 01:21:15.000000000 +0900
+@@ -248,7 +248,7 @@ static gint try_ftp_transfer(gchar *url)
+ }
+
+ if (!aborted)
+- sock_handler_write(sh, buf, n, 0);
++ sock_handler_write(sh, buf, n, 0);
+ }
+
+ return nb;
+diff -pruN dillo-0.8.6/dpi/hello.c dillo-0.8.6-i18n-misc-20060709/dpi/hello.c
+--- dillo-0.8.6/dpi/hello.c 2006-01-18 00:21:53.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/dpi/hello.c 2006-05-16 01:21:15.000000000 +0900
+@@ -131,7 +131,7 @@ int main(void)
+ /* Read/Write */
+ while ((n = fread (buf, 1, 4096, in_stream)) > 0) {
+ sock_handler_write(sh, buf, n, 0);
+- }
++ }
+
+ sock_handler_printf(sh, 0, "</pre>\n");
+
+diff -pruN dillo-0.8.6/dpi/https.c dillo-0.8.6-i18n-misc-20060709/dpi/https.c
+--- dillo-0.8.6/dpi/https.c 2006-03-25 00:52:23.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/dpi/https.c 2006-05-16 01:21:15.000000000 +0900
+@@ -134,7 +134,7 @@ static void yes_ssl_support(void)
+ /*Insufficient entropy. Deal with it?*/
+ g_printerr("Insufficient random entropy\n");
+ }
+-
++
+ /*Create context and SSL object*/
+ if (exit_error == 0){
+ ssl_context = SSL_CTX_new(SSLv23_client_method());
+@@ -171,7 +171,7 @@ static void yes_ssl_support(void)
+ }
+
+ if (exit_error == 0){
+- /* Need to do the following if we want to deal with all
++ /* Need to do the following if we want to deal with all
+ * possible ciphers
+ */
+ SSL_set_cipher_list(ssl_connection, "ALL");
+@@ -268,7 +268,7 @@ static void yes_ssl_support(void)
+ }
+
+ /*
+- * The following function attempts to open up a connection to the
++ * The following function attempts to open up a connection to the
+ * remote server and return the file descriptor number of the
+ * socket. Returns -1 in the event of an error
+ */
+@@ -302,7 +302,7 @@ static int get_network_connection(gchar
+ } else {
+ url_look_up = url + url_offset;
+ }
+-
++
+ root_url = g_strdup(url_look_up);
+ hp=gethostbyname(url_look_up);
+
+@@ -331,7 +331,7 @@ static int get_network_connection(gchar
+ }
+
+
+-/* This function is run only when the certificate cannot
++/* This function is run only when the certificate cannot
+ * be completely trusted. This will notify the user and
+ * allow the user to decide what to do. It may save the
+ * certificate to the user's .dillo directory if it is
+@@ -363,7 +363,7 @@ static int handle_certificate_problem(SS
+
+ /*Read the user's response*/
+ response_number = dialog_get_answer_number();
+-
++
+ /*Abort on anything but "Continue"*/
+ if (response_number == 1){
+ retval = 0;
+@@ -423,8 +423,8 @@ static int handle_certificate_problem(SS
+ d_cmd = a_Dpip_build_cmd(
+ "cmd=%s msg=%s alt1=%s alt2=%s",
+ "dialog",
+- "The issuer for the remote certificate cannot be found\n"
+- "The authenticity of the remote certificate cannot be trusted",
++ "The issuer for the remote certificate cannot be found\n"
++ "The authenticity of the remote certificate cannot be trusted",
+ "Continue", "Cancel");
+ sock_handler_write_str(sh, d_cmd, 1);
+ g_free(d_cmd);
+@@ -684,7 +684,7 @@ static void no_ssl_support(void)
+ /*---------------------------------------------------------------------------*/
+ int main(void)
+ {
+- /* Initialize the SockHandler for this filter dpi */
++ /* Initialize the SockHandler for this filter dpi */
+ sh = sock_handler_new(STDIN_FILENO, STDOUT_FILENO, 8*1024);
+
+ #ifdef ENABLE_SSL
+diff -pruN dillo-0.8.6/dpid/Makefile.am dillo-0.8.6-i18n-misc-20060709/dpid/Makefile.am
+--- dillo-0.8.6/dpid/Makefile.am 2005-05-08 04:28:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/dpid/Makefile.am 2006-05-16 01:21:14.000000000 +0900
+@@ -1,4 +1,4 @@
+-AM_CPPFLAGS=-DDPIDRC_SYS='"$(sysconfdir)/dpidrc"'
++AM_CPPFLAGS=-DDPIDRC_SYS='"$(sysconfdir)/dpidrc"' -DLOCALEDIR='"$(localedir)"'
+ AM_CFLAGS = @GLIB_CFLAGS@
+
+ bin_PROGRAMS = dpid
+diff -pruN dillo-0.8.6/dpid/Makefile.in dillo-0.8.6-i18n-misc-20060709/dpid/Makefile.in
+--- dillo-0.8.6/dpid/Makefile.in 2006-04-27 01:07:18.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/dpid/Makefile.in 2006-05-16 01:21:14.000000000 +0900
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.5 from Makefile.am.
++# Makefile.in generated by automake 1.7.9 from Makefile.am.
+ # @configure_input@
+
+-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
++# Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -14,9 +14,6 @@
+
+ @SET_MAKE@
+
+-
+-SOURCES = $(dpid_SOURCES)
+-
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -24,6 +21,7 @@ pkgdatadir = $(datadir)/@PACKAGE@
+ pkglibdir = $(libdir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
+ top_builddir = ..
++
+ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+ INSTALL = @INSTALL@
+ install_sh_DATA = $(install_sh) -c -m 644
+@@ -40,38 +38,6 @@ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+ target_triplet = @target@
+-bin_PROGRAMS = dpid$(EXEEXT)
+-subdir = dpid
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in TODO
+-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+- $(ACLOCAL_M4)
+-mkinstalldirs = $(install_sh) -d
+-CONFIG_HEADER = $(top_builddir)/config.h
+-CONFIG_CLEAN_FILES =
+-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"
+-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+-PROGRAMS = $(bin_PROGRAMS)
+-am_dpid_OBJECTS = dpi.$(OBJEXT) dpi_service.$(OBJEXT) \
+- dpi_socket_dir.$(OBJEXT) dpid.$(OBJEXT) dpid_common.$(OBJEXT) \
+- main.$(OBJEXT) misc_new.$(OBJEXT)
+-dpid_OBJECTS = $(am_dpid_OBJECTS)
+-dpid_DEPENDENCIES = ../dpip/libDpip.a
+-binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
+-SCRIPTS = $(bin_SCRIPTS)
+-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+-depcomp = $(SHELL) $(top_srcdir)/depcomp
+-am__depfiles_maybe = depfiles
+-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-CCLD = $(CC)
+-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-SOURCES = $(dpid_SOURCES)
+-DIST_SOURCES = $(dpid_SOURCES)
+-ETAGS = etags
+-CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+@@ -101,6 +67,7 @@ EXEEXT = @EXEEXT@
+ GLIB_CFLAGS = @GLIB_CFLAGS@
+ GLIB_CONFIG = @GLIB_CONFIG@
+ GLIB_LIBS = @GLIB_LIBS@
++GMSGFMT = @GMSGFMT@
+ GTK_CFLAGS = @GTK_CFLAGS@
+ GTK_CONFIG = @GTK_CONFIG@
+ GTK_LIBS = @GTK_LIBS@
+@@ -108,9 +75,12 @@ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
++INTLLIBS = @INTLLIBS@
+ LDFLAGS = @LDFLAGS@
+ LIBFLTK_CXXFLAGS = @LIBFLTK_CXXFLAGS@
+ LIBFLTK_LIBS = @LIBFLTK_LIBS@
++LIBICONV = @LIBICONV@
++LIBINTL = @LIBINTL@
+ LIBJPEG_CPPFLAGS = @LIBJPEG_CPPFLAGS@
+ LIBJPEG_LDFLAGS = @LIBJPEG_LDFLAGS@
+ LIBJPEG_LIBS = @LIBJPEG_LIBS@
+@@ -122,8 +92,13 @@ LIBPTHREAD_LIBS = @LIBPTHREAD_LIBS@
+ LIBS = @LIBS@
+ LIBSSL_LIBS = @LIBSSL_LIBS@
+ LIBZ_LIBS = @LIBZ_LIBS@
++LTLIBICONV = @LTLIBICONV@
++LTLIBINTL = @LTLIBINTL@
+ LTLIBOBJS = @LTLIBOBJS@
+ MAKEINFO = @MAKEINFO@
++MKINSTALLDIRS = @MKINSTALLDIRS@
++MSGFMT = @MSGFMT@
++MSGMERGE = @MSGMERGE@
+ OBJEXT = @OBJEXT@
+ PACKAGE = @PACKAGE@
+ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+@@ -132,11 +107,16 @@ PACKAGE_STRING = @PACKAGE_STRING@
+ PACKAGE_TARNAME = @PACKAGE_TARNAME@
+ PACKAGE_VERSION = @PACKAGE_VERSION@
+ PATH_SEPARATOR = @PATH_SEPARATOR@
++PKG_CONFIG = @PKG_CONFIG@
++POSUB = @POSUB@
+ RANLIB = @RANLIB@
+ SET_MAKE = @SET_MAKE@
+ SHELL = @SHELL@
+ STRIP = @STRIP@
++USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
++XFT_CONFIG = @XFT_CONFIG@
++XGETTEXT = @XGETTEXT@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_RANLIB = @ac_ct_RANLIB@
+@@ -148,8 +128,6 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TR
+ am__include = @am__include@
+ am__leading_dot = @am__leading_dot@
+ am__quote = @am__quote@
+-am__tar = @am__tar@
+-am__untar = @am__untar@
+ bindir = @bindir@
+ build = @build@
+ build_alias = @build_alias@
+@@ -168,9 +146,9 @@ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
++localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+-mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+@@ -182,11 +160,15 @@ target_alias = @target_alias@
+ target_cpu = @target_cpu@
+ target_os = @target_os@
+ target_vendor = @target_vendor@
+-AM_CPPFLAGS = -DDPIDRC_SYS='"$(sysconfdir)/dpidrc"'
++AM_CPPFLAGS = -DDPIDRC_SYS='"$(sysconfdir)/dpidrc"' -DLOCALEDIR='"$(localedir)"'
+ AM_CFLAGS = @GLIB_CFLAGS@
++
++bin_PROGRAMS = dpid
+ dpid_LDADD = @GLIB_LIBS@ ../dpip/libDpip.a
++
+ EXTRA_DIST = dpidc
+ bin_SCRIPTS = dpidc
++
+ dpid_SOURCES = \
+ dpi.h \
+ dpi_service.h \
+@@ -202,49 +184,58 @@ dpid_SOURCES = \
+ main.c \
+ misc_new.c
+
++subdir = dpid
++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
++CONFIG_HEADER = $(top_builddir)/config.h
++CONFIG_CLEAN_FILES =
++bin_PROGRAMS = dpid$(EXEEXT)
++PROGRAMS = $(bin_PROGRAMS)
++
++am_dpid_OBJECTS = dpi.$(OBJEXT) dpi_service.$(OBJEXT) \
++ dpi_socket_dir.$(OBJEXT) dpid.$(OBJEXT) dpid_common.$(OBJEXT) \
++ main.$(OBJEXT) misc_new.$(OBJEXT)
++dpid_OBJECTS = $(am_dpid_OBJECTS)
++dpid_DEPENDENCIES = ../dpip/libDpip.a
++dpid_LDFLAGS =
++SCRIPTS = $(bin_SCRIPTS)
++
++
++DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
++depcomp = $(SHELL) $(top_srcdir)/depcomp
++am__depfiles_maybe = depfiles
++@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/dpi.Po ./$(DEPDIR)/dpi_service.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dpi_socket_dir.Po ./$(DEPDIR)/dpid.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dpid_common.Po ./$(DEPDIR)/main.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/misc_new.Po
++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
++CCLD = $(CC)
++LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
++DIST_SOURCES = $(dpid_SOURCES)
++DIST_COMMON = $(srcdir)/Makefile.in Makefile.am TODO
++SOURCES = $(dpid_SOURCES)
++
+ all: all-am
+
+ .SUFFIXES:
+ .SUFFIXES: .c .o .obj
+-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+- @for dep in $?; do \
+- case '$(am__configure_deps)' in \
+- *$$dep*) \
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+- && exit 0; \
+- exit 1;; \
+- esac; \
+- done; \
+- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu dpid/Makefile'; \
++$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu dpid/Makefile
+-.PRECIOUS: Makefile
+-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+- @case '$?' in \
+- *config.status*) \
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+- *) \
+- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+- esac;
+-
+-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-
+-$(top_srcdir)/configure: $(am__configure_deps)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
++binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+ install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+- test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
++ $(mkinstalldirs) $(DESTDIR)$(bindir)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+- echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+- $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
++ echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
++ $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
+ else :; fi; \
+ done
+
+@@ -252,8 +243,8 @@ uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+- echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+- rm -f "$(DESTDIR)$(bindir)/$$f"; \
++ echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
++ rm -f $(DESTDIR)$(bindir)/$$f; \
+ done
+
+ clean-binPROGRAMS:
+@@ -261,15 +252,16 @@ clean-binPROGRAMS:
+ dpid$(EXEEXT): $(dpid_OBJECTS) $(dpid_DEPENDENCIES)
+ @rm -f dpid$(EXEEXT)
+ $(LINK) $(dpid_LDFLAGS) $(dpid_OBJECTS) $(dpid_LDADD) $(LIBS)
++binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
+ install-binSCRIPTS: $(bin_SCRIPTS)
+ @$(NORMAL_INSTALL)
+- test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
++ $(mkinstalldirs) $(DESTDIR)$(bindir)
+ @list='$(bin_SCRIPTS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f $$d$$p; then \
+ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+- echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+- $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
++ echo " $(binSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(bindir)/$$f"; \
++ $(binSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(bindir)/$$f; \
+ else :; fi; \
+ done
+
+@@ -277,12 +269,12 @@ uninstall-binSCRIPTS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_SCRIPTS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+- echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+- rm -f "$(DESTDIR)$(bindir)/$$f"; \
++ echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
++ rm -f $(DESTDIR)$(bindir)/$$f; \
+ done
+
+ mostlyclean-compile:
+- -rm -f *.$(OBJEXT)
++ -rm -f *.$(OBJEXT) core *.core
+
+ distclean-compile:
+ -rm -f *.tab.c
+@@ -296,20 +288,36 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc_new.Po@am__quote@
+
+ .c.o:
+-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
++@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
++@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
++@am__fastdepCC_TRUE@ fi
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+ .c.obj:
+-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
++@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
++@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
++@am__fastdepCC_TRUE@ fi
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+ uninstall-info-am:
+
++ETAGS = etags
++ETAGSFLAGS =
++
++CTAGS = ctags
++CTAGSFLAGS =
++
++tags: TAGS
++
+ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+@@ -318,7 +326,6 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+-tags: TAGS
+
+ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+@@ -330,11 +337,10 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEP
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+- test -n "$$unique" || unique=$$empty_fix; \
+- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+- $$tags $$unique; \
+- fi
++ test -z "$(ETAGS_ARGS)$$tags$$unique" \
++ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
++ $$tags $$unique
++
+ ctags: CTAGS
+ CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+@@ -357,6 +363,10 @@ GTAGS:
+
+ distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
++
++top_distdir = ..
++distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+ distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+@@ -370,7 +380,7 @@ distdir: $(DISTFILES)
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+- $(mkdir_p) "$(distdir)$$dir"; \
++ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+@@ -388,10 +398,9 @@ distdir: $(DISTFILES)
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(PROGRAMS) $(SCRIPTS)
++
+ installdirs:
+- for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \
+- test -z "$$dir" || $(mkdir_p) "$$dir"; \
+- done
++ $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(bindir)
+ install: install-am
+ install-exec: install-exec-am
+ install-data: install-data-am
+@@ -411,7 +420,7 @@ mostlyclean-generic:
+ clean-generic:
+
+ distclean-generic:
+- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
++ -rm -f $(CONFIG_CLEAN_FILES)
+
+ maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+@@ -430,8 +439,6 @@ dvi: dvi-am
+
+ dvi-am:
+
+-html: html-am
+-
+ info: info-am
+
+ info-am:
+@@ -468,8 +475,8 @@ uninstall-am: uninstall-binPROGRAMS unin
+
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+ clean-generic ctags distclean distclean-compile \
+- distclean-generic distclean-tags distdir dvi dvi-am html \
+- html-am info info-am install install-am install-binPROGRAMS \
++ distclean-generic distclean-tags distdir dvi dvi-am info \
++ info-am install install-am install-binPROGRAMS \
+ install-binSCRIPTS install-data install-data-am \
+ install-data-local install-exec install-exec-am install-info \
+ install-info-am install-man install-strip installcheck \
+diff -pruN dillo-0.8.6/dpid/dpi_socket_dir.c dillo-0.8.6-i18n-misc-20060709/dpid/dpi_socket_dir.c
+--- dillo-0.8.6/dpid/dpi_socket_dir.c 2005-10-28 01:19:53.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/dpid/dpi_socket_dir.c 2006-05-16 01:21:14.000000000 +0900
+@@ -23,6 +23,7 @@
+ #include <errno.h>
+ #include "dpid_common.h"
+ #include "dpi.h"
++#include "../src/intl.h"
+ #include "misc_new.h"
+ #include "dpi_socket_dir.h" /* for function prototypes */
+
+@@ -102,16 +103,16 @@ char *init_sockdir(char *dpi_socket_dir)
+
+ if ((sockdir = a_Dpi_rd_dpi_socket_dir(dpi_socket_dir)) == NULL) {
+ fprintf(stderr, "debug_msg - init_sockdir: ");
+- fprintf(stderr, "The dpi_socket_dir file does not exist\n");
++ fprintf(stderr, _("The dpi_socket_dir file does not exist\n"));
+ } else {
+ if ((dir_ok = tst_dir(sockdir)) == 1) {
+ fprintf(stderr,
+- "debug_msg - init_sockdir: The socket directory ");
+- fprintf(stderr, "%s exists and is OK\n", sockdir);
++ _("debug_msg - init_sockdir: The socket directory "));
++ fprintf(stderr, _("%s exists and is OK\n"), sockdir);
+ } else {
+ fprintf(stderr,
+- "debug_msg - init_sockdir: The socket directory ");
+- fprintf(stderr, "%s does not exist or is not a directory\n",
++ _("debug_msg - init_sockdir: The socket directory "));
++ fprintf(stderr, _("%s does not exist or is not a directory\n"),
+ sockdir);
+ g_free(sockdir);
+ }
+@@ -120,10 +121,10 @@ char *init_sockdir(char *dpi_socket_dir)
+ sockdir = mk_sockdir();
+ if (sockdir == NULL) {
+ ERRMSG("init_sockdir", "mk_sockdir", 0);
+- fprintf(stderr, " - Failed to create dpi socket directory\n");
++ fprintf(stderr, _(" - Failed to create dpi socket directory\n"));
+ } else if ((w_dpi_socket_dir(dpi_socket_dir, sockdir)) == -1) {
+ ERRMSG("init_sockdir", "w_dpi_socket_dir", 0);
+- fprintf(stderr, " - failed to save %s\n", sockdir);
++ fprintf(stderr, _(" - failed to save %s\n"), sockdir);
+ g_free(sockdir);
+ sockdir = NULL;
+ }
+diff -pruN dillo-0.8.6/dpid/main.c dillo-0.8.6-i18n-misc-20060709/dpid/main.c
+--- dillo-0.8.6/dpid/main.c 2006-01-03 03:34:18.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/dpid/main.c 2006-05-16 01:21:14.000000000 +0900
+@@ -22,6 +22,9 @@
+ #include <sys/stat.h>
+ #include <sys/time.h>
+ #include <glib.h>
++#include <locale.h>
++#include "config.h"
++#include "../src/intl.h"
+ #include "dpid_common.h"
+ #include "dpid.h"
+ #include "dpi.h"
+@@ -53,14 +56,14 @@ static int start_filter_plugin(struct dp
+ dup2(STDIN_FILENO, old_stdin);
+ if (dup2(newsock, STDIN_FILENO) == -1) {
+ ERRMSG("start_plugin", "dup2", errno);
+- fprintf(stderr, "ERROR in child proc for %s\n", dpi_attr.path);
++ fprintf(stderr, _("ERROR in child proc for %s\n"), dpi_attr.path);
+ exit(1);
+ }
+
+ dup2(STDOUT_FILENO, old_stdout);
+ if (dup2(newsock, STDOUT_FILENO) == -1) {
+ ERRMSG("start_plugin", "dup2", errno);
+- fprintf(stderr, "ERROR in child proc for %s\n", dpi_attr.path);
++ fprintf(stderr, _("ERROR in child proc for %s\n"), dpi_attr.path);
+ exit(1);
+ }
+ if ((pid = fork()) == -1) {
+@@ -71,7 +74,7 @@ static int start_filter_plugin(struct dp
+ /* Child, start plugin */
+ if (execl(dpi_attr.path, dpi_attr.path, NULL) == -1) {
+ ERRMSG("start_plugin", "execl", errno);
+- fprintf(stderr, "ERROR in child proc for %s\n", dpi_attr.path);
++ fprintf(stderr, _("ERROR in child proc for %s\n"), dpi_attr.path);
+ exit(1);
+ }
+ }
+@@ -79,7 +82,7 @@ static int start_filter_plugin(struct dp
+ /* Parent, Close sockets fix stdio and return pid */
+ if (a_Misc_close_fd(newsock) == -1) {
+ ERRMSG("start_plugin", "close", errno);
+- fprintf(stderr, "ERROR in child proc for %s\n", dpi_attr.path);
++ fprintf(stderr, _("ERROR in child proc for %s\n"), dpi_attr.path);
+ exit(1);
+ }
+ a_Misc_close_fd(STDIN_FILENO);
+@@ -93,17 +96,17 @@ static void start_server_plugin(struct d
+ {
+ if (dup2(dpi_attr.socket, STDIN_FILENO) == -1) {
+ ERRMSG("start_plugin", "dup2", errno);
+- fprintf(stderr, "ERROR in child proc for %s\n", dpi_attr.path);
++ fprintf(stderr, _("ERROR in child proc for %s\n"), dpi_attr.path);
+ exit(1);
+ }
+ if (a_Misc_close_fd(dpi_attr.socket) == -1) {
+ ERRMSG("start_plugin", "close", errno);
+- fprintf(stderr, "ERROR in child proc for %s\n", dpi_attr.path);
++ fprintf(stderr, _("ERROR in child proc for %s\n"), dpi_attr.path);
+ exit(1);
+ }
+ if (execl(dpi_attr.path, dpi_attr.path, NULL) == -1) {
+ ERRMSG("start_plugin", "execl", errno);
+- fprintf(stderr, "ERROR in child proc for %s\n", dpi_attr.path);
++ fprintf(stderr, _("ERROR in child proc for %s\n"), dpi_attr.path);
+ exit(1);
+ }
+ }
+@@ -152,7 +155,7 @@ static int get_command(int sock, char *d
+ int COMMAND;
+
+ if (dpi_tag == NULL) {
+- ERRMSG("get_command", "dpid tag is NULL\n", 0);
++ //ERRMSG("get_command", _("dpid tag is NULL\n"), 0);
+ return (-1);
+ }
+
+@@ -160,7 +163,7 @@ static int get_command(int sock, char *d
+
+ if (cmd == NULL) {
+ ERRMSG("get_command", "a_Dpip_get_attr", 0);
+- fprintf(stderr, ": dpid failed to parse cmd in %s\n", dpi_tag);
++ fprintf(stderr, _(": dpid failed to parse cmd in %s\n"), dpi_tag);
+ d_cmd = a_Dpip_build_cmd("cmd=%s msg=%s",
+ "DpiError", "Failed to parse request");
+ (void) CKD_WRITE(sock, d_cmd);
+@@ -227,6 +230,11 @@ int main(void)
+ sigset_t mask_none;
+ fd_set selected_set;
+
++ /* Initialize Gettext */
++ setlocale(LC_ALL, "");
++ bindtextdomain (PACKAGE, LOCALEDIR);
++ textdomain (PACKAGE);
++
+ dpi_attr_list = NULL;
+ /* daemon(0,0); */ /* Use 0,1 for feedback */
+ /* todo: call setsid() ?? */
+@@ -254,7 +262,7 @@ int main(void)
+ dirname = a_Dpi_sockdir_file();
+ if ((sockdir = init_sockdir(dirname)) == NULL) {
+ ERRMSG("main", "init_sockdir", 0);
+- fprintf(stderr, "Failed to create socket directory\n");
++ fprintf(stderr, _("Failed to create socket directory\n"));
+ exit(1);
+ }
+
+@@ -264,12 +272,12 @@ int main(void)
+ if ((numsocks = init_srs_socket(sockdir)) == -1) {
+ switch (dpi_errno) {
+ case dpid_srs_addrinuse:
+- fprintf(stderr, "dpid refuses to start, possibly because:\n");
+- fprintf(stderr, "\t1) An instance of dpid is already running.\n");
+- fprintf(stderr, "\t2) A previous dpid didn't clean up on exit.\n");
++ fprintf(stderr, _("dpid refuses to start, possibly because:\n"));
++ fprintf(stderr, _("\t1) An instance of dpid is already running.\n"));
++ fprintf(stderr, _("\t2) A previous dpid didn't clean up on exit.\n"));
+ exit(1);
+ default:
+- ERRMSG("main", "init_srs_sockets failed\n", 0);
++ ERRMSG("main", _("init_srs_sockets failed\n"), 0);
+ exit(1);
+ }
+ }
+@@ -283,7 +291,7 @@ int main(void)
+ (void) sigemptyset(&mask_none);
+ (void) sigprocmask(SIG_SETMASK, &mask_none, NULL);
+
+- printf("dpid started\n");
++ printf(_("dpid started\n"));
+ /* Start main loop */
+ while (1) {
+ do {
+@@ -329,8 +337,8 @@ int main(void)
+ sock = accept(srs, (struct sockaddr *) &clnt_addr, &csz);
+ if (sock == -1) {
+ ERRMSG("main", "accept", errno);
+- fprintf(stderr, "accept on srs socket failed\n");
+- fprintf(stderr, "service pending connections, and continue\n");
++ fprintf(stderr, _("accept on srs socket failed\n"));
++ fprintf(stderr, _("service pending connections, and continue\n"));
+ } else {
+ int command;
+
+@@ -359,7 +367,7 @@ int main(void)
+ break;
+ }
+ case -1:
+- ERRMSG("main", "get_command failed\n", 0);
++ //ERRMSG("main", _("get_command failed\n"), 0);
+ break;
+ }
+ if (req)
+diff -pruN dillo-0.8.6/dpip/Makefile.in dillo-0.8.6-i18n-misc-20060709/dpip/Makefile.in
+--- dillo-0.8.6/dpip/Makefile.in 2006-04-27 01:07:20.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/dpip/Makefile.in 2006-05-16 01:21:08.000000000 +0900
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.5 from Makefile.am.
++# Makefile.in generated by automake 1.7.9 from Makefile.am.
+ # @configure_input@
+
+-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
++# Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -14,8 +14,6 @@
+
+ @SET_MAKE@
+
+-SOURCES = $(libDpip_a_SOURCES)
+-
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -23,6 +21,7 @@ pkgdatadir = $(datadir)/@PACKAGE@
+ pkglibdir = $(libdir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
+ top_builddir = ..
++
+ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+ INSTALL = @INSTALL@
+ install_sh_DATA = $(install_sh) -c -m 644
+@@ -39,34 +38,6 @@ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+ target_triplet = @target@
+-subdir = dpip
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+- $(ACLOCAL_M4)
+-mkinstalldirs = $(install_sh) -d
+-CONFIG_HEADER = $(top_builddir)/config.h
+-CONFIG_CLEAN_FILES =
+-LIBRARIES = $(noinst_LIBRARIES)
+-AR = ar
+-ARFLAGS = cru
+-libDpip_a_AR = $(AR) $(ARFLAGS)
+-libDpip_a_LIBADD =
+-am_libDpip_a_OBJECTS = dpip.$(OBJEXT)
+-libDpip_a_OBJECTS = $(am_libDpip_a_OBJECTS)
+-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+-depcomp = $(SHELL) $(top_srcdir)/depcomp
+-am__depfiles_maybe = depfiles
+-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-CCLD = $(CC)
+-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-SOURCES = $(libDpip_a_SOURCES)
+-DIST_SOURCES = $(libDpip_a_SOURCES)
+-ETAGS = etags
+-CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+@@ -96,6 +67,7 @@ EXEEXT = @EXEEXT@
+ GLIB_CFLAGS = @GLIB_CFLAGS@
+ GLIB_CONFIG = @GLIB_CONFIG@
+ GLIB_LIBS = @GLIB_LIBS@
++GMSGFMT = @GMSGFMT@
+ GTK_CFLAGS = @GTK_CFLAGS@
+ GTK_CONFIG = @GTK_CONFIG@
+ GTK_LIBS = @GTK_LIBS@
+@@ -103,9 +75,12 @@ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
++INTLLIBS = @INTLLIBS@
+ LDFLAGS = @LDFLAGS@
+ LIBFLTK_CXXFLAGS = @LIBFLTK_CXXFLAGS@
+ LIBFLTK_LIBS = @LIBFLTK_LIBS@
++LIBICONV = @LIBICONV@
++LIBINTL = @LIBINTL@
+ LIBJPEG_CPPFLAGS = @LIBJPEG_CPPFLAGS@
+ LIBJPEG_LDFLAGS = @LIBJPEG_LDFLAGS@
+ LIBJPEG_LIBS = @LIBJPEG_LIBS@
+@@ -117,8 +92,13 @@ LIBPTHREAD_LIBS = @LIBPTHREAD_LIBS@
+ LIBS = @LIBS@
+ LIBSSL_LIBS = @LIBSSL_LIBS@
+ LIBZ_LIBS = @LIBZ_LIBS@
++LTLIBICONV = @LTLIBICONV@
++LTLIBINTL = @LTLIBINTL@
+ LTLIBOBJS = @LTLIBOBJS@
+ MAKEINFO = @MAKEINFO@
++MKINSTALLDIRS = @MKINSTALLDIRS@
++MSGFMT = @MSGFMT@
++MSGMERGE = @MSGMERGE@
+ OBJEXT = @OBJEXT@
+ PACKAGE = @PACKAGE@
+ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+@@ -127,11 +107,16 @@ PACKAGE_STRING = @PACKAGE_STRING@
+ PACKAGE_TARNAME = @PACKAGE_TARNAME@
+ PACKAGE_VERSION = @PACKAGE_VERSION@
+ PATH_SEPARATOR = @PATH_SEPARATOR@
++PKG_CONFIG = @PKG_CONFIG@
++POSUB = @POSUB@
+ RANLIB = @RANLIB@
+ SET_MAKE = @SET_MAKE@
+ SHELL = @SHELL@
+ STRIP = @STRIP@
++USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
++XFT_CONFIG = @XFT_CONFIG@
++XGETTEXT = @XGETTEXT@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_RANLIB = @ac_ct_RANLIB@
+@@ -143,8 +128,6 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TR
+ am__include = @am__include@
+ am__leading_dot = @am__leading_dot@
+ am__quote = @am__quote@
+-am__tar = @am__tar@
+-am__untar = @am__untar@
+ bindir = @bindir@
+ build = @build@
+ build_alias = @build_alias@
+@@ -163,9 +146,9 @@ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
++localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+-mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+@@ -179,44 +162,48 @@ target_os = @target_os@
+ target_vendor = @target_vendor@
+ AM_CFLAGS = @GLIB_CFLAGS@
+ AM_LIBS = @GLIB_LIBS@
++
+ noinst_LIBRARIES = libDpip.a
++
+ libDpip_a_SOURCES = \
+ dpip.h \
+ dpip.c
+
++subdir = dpip
++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
++CONFIG_HEADER = $(top_builddir)/config.h
++CONFIG_CLEAN_FILES =
++LIBRARIES = $(noinst_LIBRARIES)
++
++libDpip_a_AR = $(AR) cru
++libDpip_a_LIBADD =
++am_libDpip_a_OBJECTS = dpip.$(OBJEXT)
++libDpip_a_OBJECTS = $(am_libDpip_a_OBJECTS)
++
++DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
++depcomp = $(SHELL) $(top_srcdir)/depcomp
++am__depfiles_maybe = depfiles
++@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/dpip.Po
++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
++CCLD = $(CC)
++LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
++DIST_SOURCES = $(libDpip_a_SOURCES)
++DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
++SOURCES = $(libDpip_a_SOURCES)
++
+ all: all-am
+
+ .SUFFIXES:
+ .SUFFIXES: .c .o .obj
+-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+- @for dep in $?; do \
+- case '$(am__configure_deps)' in \
+- *$$dep*) \
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+- && exit 0; \
+- exit 1;; \
+- esac; \
+- done; \
+- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu dpip/Makefile'; \
++$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu dpip/Makefile
+-.PRECIOUS: Makefile
+-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+- @case '$?' in \
+- *config.status*) \
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+- *) \
+- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+- esac;
+-
+-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-
+-$(top_srcdir)/configure: $(am__configure_deps)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
++
++AR = ar
+
+ clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+@@ -226,7 +213,7 @@ libDpip.a: $(libDpip_a_OBJECTS) $(libDpi
+ $(RANLIB) libDpip.a
+
+ mostlyclean-compile:
+- -rm -f *.$(OBJEXT)
++ -rm -f *.$(OBJEXT) core *.core
+
+ distclean-compile:
+ -rm -f *.tab.c
+@@ -234,20 +221,36 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dpip.Po@am__quote@
+
+ .c.o:
+-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
++@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
++@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
++@am__fastdepCC_TRUE@ fi
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+ .c.obj:
+-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
++@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
++@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
++@am__fastdepCC_TRUE@ fi
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+ uninstall-info-am:
+
++ETAGS = etags
++ETAGSFLAGS =
++
++CTAGS = ctags
++CTAGSFLAGS =
++
++tags: TAGS
++
+ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+@@ -256,7 +259,6 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+-tags: TAGS
+
+ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+@@ -268,11 +270,10 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEP
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+- test -n "$$unique" || unique=$$empty_fix; \
+- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+- $$tags $$unique; \
+- fi
++ test -z "$(ETAGS_ARGS)$$tags$$unique" \
++ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
++ $$tags $$unique
++
+ ctags: CTAGS
+ CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+@@ -295,6 +296,10 @@ GTAGS:
+
+ distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
++
++top_distdir = ..
++distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+ distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+@@ -308,7 +313,7 @@ distdir: $(DISTFILES)
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+- $(mkdir_p) "$(distdir)$$dir"; \
++ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+@@ -326,6 +331,7 @@ distdir: $(DISTFILES)
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LIBRARIES)
++
+ installdirs:
+ install: install-am
+ install-exec: install-exec-am
+@@ -346,7 +352,7 @@ mostlyclean-generic:
+ clean-generic:
+
+ distclean-generic:
+- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
++ -rm -f $(CONFIG_CLEAN_FILES)
+
+ maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+@@ -365,8 +371,6 @@ dvi: dvi-am
+
+ dvi-am:
+
+-html: html-am
+-
+ info: info-am
+
+ info-am:
+@@ -402,14 +406,13 @@ uninstall-am: uninstall-info-am
+
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-noinstLIBRARIES ctags distclean distclean-compile \
+- distclean-generic distclean-tags distdir dvi dvi-am html \
+- html-am info info-am install install-am install-data \
+- install-data-am install-exec install-exec-am install-info \
+- install-info-am install-man install-strip installcheck \
+- installcheck-am installdirs maintainer-clean \
+- maintainer-clean-generic mostlyclean mostlyclean-compile \
+- mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+- uninstall-am uninstall-info-am
++ distclean-generic distclean-tags distdir dvi dvi-am info \
++ info-am install install-am install-data install-data-am \
++ install-exec install-exec-am install-info install-info-am \
++ install-man install-strip installcheck installcheck-am \
++ installdirs maintainer-clean maintainer-clean-generic \
++ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
++ ps ps-am tags uninstall uninstall-am uninstall-info-am
+
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
+diff -pruN dillo-0.8.6/install-sh dillo-0.8.6-i18n-misc-20060709/install-sh
+--- dillo-0.8.6/install-sh 2005-03-22 16:17:05.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/install-sh 2006-05-16 01:21:07.000000000 +0900
+@@ -1,7 +1,7 @@
+ #!/bin/sh
+ # install - install a program, script, or datafile
+
+-scriptversion=2005-02-02.21
++scriptversion=2004-04-01.17
+
+ # This originates from X11R5 (mit/util/scripts/install.sh), which was
+ # later released in X11R6 (xc/config/util/install.sh) with the
+@@ -58,6 +58,9 @@ stripprog="${STRIPPROG-strip}"
+ rmprog="${RMPROG-rm}"
+ mkdirprog="${MKDIRPROG-mkdir}"
+
++transformbasename=
++transform_arg=
++instcmd="$mvprog"
+ chmodcmd="$chmodprog 0755"
+ chowncmd=
+ chgrpcmd=
+@@ -67,27 +70,23 @@ mvcmd="$mvprog"
+ src=
+ dst=
+ dir_arg=
+-dstarg=
+-no_target_directory=
+
+-usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
++usage="Usage: $0 [OPTION]... SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+- or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+- or: $0 [OPTION]... -d DIRECTORIES...
++ or: $0 -d DIRECTORIES...
+
+-In the 1st form, copy SRCFILE to DSTFILE.
+-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+-In the 4th, create DIRECTORIES.
++In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default.
++In the second, create the directory path DIR.
+
+ Options:
+--c (ignored)
++-b=TRANSFORMBASENAME
++-c copy source (using $cpprog) instead of moving (using $mvprog).
+ -d create directories instead of installing files.
+--g GROUP $chgrpprog installed files to GROUP.
+--m MODE $chmodprog installed files to MODE.
+--o USER $chownprog installed files to USER.
+--s $stripprog installed files.
+--t DIRECTORY install into DIRECTORY.
+--T report an error if DSTFILE is a directory.
++-g GROUP $chgrp installed files to GROUP.
++-m MODE $chmod installed files to MODE.
++-o USER $chown installed files to USER.
++-s strip installed files (using $stripprog).
++-t=TRANSFORM
+ --help display this help and exit.
+ --version display version info and exit.
+
+@@ -97,7 +96,12 @@ Environment variables override the defau
+
+ while test -n "$1"; do
+ case $1 in
+- -c) shift
++ -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
++ shift
++ continue;;
++
++ -c) instcmd=$cpprog
++ shift
+ continue;;
+
+ -d) dir_arg=true
+@@ -109,7 +113,7 @@ while test -n "$1"; do
+ shift
+ continue;;
+
+- --help) echo "$usage"; exit $?;;
++ --help) echo "$usage"; exit 0;;
+
+ -m) chmodcmd="$chmodprog $2"
+ shift
+@@ -125,20 +129,14 @@ while test -n "$1"; do
+ shift
+ continue;;
+
+- -t) dstarg=$2
+- shift
+- shift
+- continue;;
+-
+- -T) no_target_directory=true
+- shift
+- continue;;
++ -t=*) transformarg=`echo $1 | sed 's/-t=//'`
++ shift
++ continue;;
+
+- --version) echo "$0 $scriptversion"; exit $?;;
++ --version) echo "$0 $scriptversion"; exit 0;;
+
+ *) # When -d is used, all remaining arguments are directories to create.
+- # When -t is used, the destination is already specified.
+- test -n "$dir_arg$dstarg" && break
++ test -n "$dir_arg" && break
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+@@ -176,13 +174,13 @@ do
+ src=
+
+ if test -d "$dst"; then
+- mkdircmd=:
++ instcmd=:
+ chmodcmd=
+ else
+- mkdircmd=$mkdirprog
++ instcmd=$mkdirprog
+ fi
+ else
+- # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
++ # Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+@@ -204,16 +202,12 @@ do
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+- if test -n "$no_target_directory"; then
+- echo "$0: $dstarg: Is a directory" >&2
+- exit 1
+- fi
+ dst=$dst/`basename "$src"`
+ fi
+ fi
+
+ # This sed command emulates the dirname command.
+- dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
++ dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+ # Make sure that the destination directory exists.
+
+@@ -226,8 +220,7 @@ do
+ oIFS=$IFS
+ # Some sh's can't handle IFS=/ for some reason.
+ IFS='%'
+- set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+- shift
++ set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+ IFS=$oIFS
+
+ pathcomp=
+@@ -236,42 +229,51 @@ do
+ pathcomp=$pathcomp$1
+ shift
+ if test ! -d "$pathcomp"; then
+- $mkdirprog "$pathcomp"
++ $mkdirprog "$pathcomp" || lasterr=$?
+ # mkdir can fail with a `File exist' error in case several
+ # install-sh are creating the directory concurrently. This
+ # is OK.
+- test -d "$pathcomp" || exit
++ test ! -d "$pathcomp" && { (exit ${lasterr-1}); exit; }
+ fi
+ pathcomp=$pathcomp/
+ done
+ fi
+
+ if test -n "$dir_arg"; then
+- $doit $mkdircmd "$dst" \
++ $doit $instcmd "$dst" \
+ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
+ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
+ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
+
+ else
+- dstfile=`basename "$dst"`
++ # If we're going to rename the final executable, determine the name now.
++ if test -z "$transformarg"; then
++ dstfile=`basename "$dst"`
++ else
++ dstfile=`basename "$dst" $transformbasename \
++ | sed $transformarg`$transformbasename
++ fi
++
++ # don't allow the sed command to completely eliminate the filename.
++ test -z "$dstfile" && dstfile=`basename "$dst"`
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+- trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
++ trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
+ trap '(exit $?); exit' 1 2 13 15
+
+- # Copy the file name to the temp name.
+- $doit $cpprog "$src" "$dsttmp" &&
++ # Move or copy the file name to the temp name
++ $doit $instcmd "$src" "$dsttmp" &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+- # errors from the above "$doit $cpprog $src $dsttmp" command.
++ # errors from the above "$doit $instcmd $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
+@@ -296,7 +298,7 @@ do
+ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
+ || {
+ echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+- (exit 1); exit 1
++ (exit 1); exit
+ }
+ else
+ :
+@@ -307,12 +309,12 @@ do
+ $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+ }
+ }
+- fi || { (exit 1); exit 1; }
++ fi || { (exit 1); exit; }
+ done
+
+ # The final little trick to "correctly" pass the exit status to the exit trap.
+ {
+- (exit 0); exit 0
++ (exit 0); exit
+ }
+
+ # Local variables:
+diff -pruN dillo-0.8.6/m4/ChangeLog dillo-0.8.6-i18n-misc-20060709/m4/ChangeLog
+--- dillo-0.8.6/m4/ChangeLog 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/ChangeLog 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,31 @@
++2004-11-23 gettextize <bug-gnu-gettext@gnu.org>
++
++ * gettext.m4: Upgrade to gettext-0.11.4.
++ * inttypes_h.m4: Upgrade to gettext-0.11.4.
++ * lib-ld.m4: Upgrade to gettext-0.11.4.
++ * lib-link.m4: Upgrade to gettext-0.11.4.
++ * lib-prefix.m4: Upgrade to gettext-0.11.4.
++ * progtest.m4: Upgrade to gettext-0.11.4.
++ * stdint_h.m4: Upgrade to gettext-0.11.4.
++ * uintmax_t.m4: Upgrade to gettext-0.11.4.
++
++2003-10-01 gettextize <bug-gnu-gettext@gnu.org>
++
++ * codeset.m4: New file, from gettext-0.11.4.
++ * gettext.m4: New file, from gettext-0.11.4.
++ * glibc21.m4: New file, from gettext-0.11.4.
++ * iconv.m4: New file, from gettext-0.11.4.
++ * intdiv0.m4: New file, from gettext-0.11.4.
++ * inttypes.m4: New file, from gettext-0.11.4.
++ * inttypes_h.m4: New file, from gettext-0.11.4.
++ * inttypes-pri.m4: New file, from gettext-0.11.4.
++ * isc-posix.m4: New file, from gettext-0.11.4.
++ * lcmessage.m4: New file, from gettext-0.11.4.
++ * lib-ld.m4: New file, from gettext-0.11.4.
++ * lib-link.m4: New file, from gettext-0.11.4.
++ * lib-prefix.m4: New file, from gettext-0.11.4.
++ * progtest.m4: New file, from gettext-0.11.4.
++ * stdint_h.m4: New file, from gettext-0.11.4.
++ * uintmax_t.m4: New file, from gettext-0.11.4.
++ * Makefile.am: New file.
++
+diff -pruN dillo-0.8.6/m4/Makefile.am dillo-0.8.6-i18n-misc-20060709/m4/Makefile.am
+--- dillo-0.8.6/m4/Makefile.am 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/Makefile.am 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1 @@
++EXTRA_DIST = intmax.m4 longdouble.m4 longlong.m4 nls.m4 po.m4 printf-posix.m4 signed.m4 size_max.m4 ulonglong.m4 wchar_t.m4 wint_t.m4 xsize.m4 codeset.m4 gettext.m4 glibc21.m4 iconv.m4 intdiv0.m4 inttypes.m4 inttypes_h.m4 inttypes-pri.m4 isc-posix.m4 lcmessage.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 progtest.m4 stdint_h.m4 uintmax_t.m4
+diff -pruN dillo-0.8.6/m4/Makefile.in dillo-0.8.6-i18n-misc-20060709/m4/Makefile.in
+--- dillo-0.8.6/m4/Makefile.in 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/Makefile.in 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,302 @@
++# Makefile.in generated by automake 1.7.9 from Makefile.am.
++# @configure_input@
++
++# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
++# Free Software Foundation, Inc.
++# This Makefile.in is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
++# PARTICULAR PURPOSE.
++
++@SET_MAKE@
++
++srcdir = @srcdir@
++top_srcdir = @top_srcdir@
++VPATH = @srcdir@
++pkgdatadir = $(datadir)/@PACKAGE@
++pkglibdir = $(libdir)/@PACKAGE@
++pkgincludedir = $(includedir)/@PACKAGE@
++top_builddir = ..
++
++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
++INSTALL = @INSTALL@
++install_sh_DATA = $(install_sh) -c -m 644
++install_sh_PROGRAM = $(install_sh) -c
++install_sh_SCRIPT = $(install_sh) -c
++INSTALL_HEADER = $(INSTALL_DATA)
++transform = $(program_transform_name)
++NORMAL_INSTALL = :
++PRE_INSTALL = :
++POST_INSTALL = :
++NORMAL_UNINSTALL = :
++PRE_UNINSTALL = :
++POST_UNINSTALL = :
++build_triplet = @build@
++host_triplet = @host@
++target_triplet = @target@
++ACLOCAL = @ACLOCAL@
++AMDEP_FALSE = @AMDEP_FALSE@
++AMDEP_TRUE = @AMDEP_TRUE@
++AMTAR = @AMTAR@
++AUTOCONF = @AUTOCONF@
++AUTOHEADER = @AUTOHEADER@
++AUTOMAKE = @AUTOMAKE@
++AWK = @AWK@
++CC = @CC@
++CCDEPMODE = @CCDEPMODE@
++CFLAGS = @CFLAGS@
++CPP = @CPP@
++CPPFLAGS = @CPPFLAGS@
++CXX = @CXX@
++CXXDEPMODE = @CXXDEPMODE@
++CXXFLAGS = @CXXFLAGS@
++CYGPATH_W = @CYGPATH_W@
++DEFS = @DEFS@
++DEPDIR = @DEPDIR@
++DLGUI_FALSE = @DLGUI_FALSE@
++DLGUI_TRUE = @DLGUI_TRUE@
++ECHO_C = @ECHO_C@
++ECHO_N = @ECHO_N@
++ECHO_T = @ECHO_T@
++EGREP = @EGREP@
++EXEEXT = @EXEEXT@
++GLIB_CFLAGS = @GLIB_CFLAGS@
++GLIB_CONFIG = @GLIB_CONFIG@
++GLIB_LIBS = @GLIB_LIBS@
++GMSGFMT = @GMSGFMT@
++GTK_CFLAGS = @GTK_CFLAGS@
++GTK_CONFIG = @GTK_CONFIG@
++GTK_LIBS = @GTK_LIBS@
++INSTALL_DATA = @INSTALL_DATA@
++INSTALL_PROGRAM = @INSTALL_PROGRAM@
++INSTALL_SCRIPT = @INSTALL_SCRIPT@
++INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
++INTLLIBS = @INTLLIBS@
++LDFLAGS = @LDFLAGS@
++LIBFLTK_CXXFLAGS = @LIBFLTK_CXXFLAGS@
++LIBFLTK_LIBS = @LIBFLTK_LIBS@
++LIBICONV = @LIBICONV@
++LIBINTL = @LIBINTL@
++LIBJPEG_CPPFLAGS = @LIBJPEG_CPPFLAGS@
++LIBJPEG_LDFLAGS = @LIBJPEG_LDFLAGS@
++LIBJPEG_LIBS = @LIBJPEG_LIBS@
++LIBOBJS = @LIBOBJS@
++LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
++LIBPNG_LIBS = @LIBPNG_LIBS@
++LIBPTHREAD_LDFLAGS = @LIBPTHREAD_LDFLAGS@
++LIBPTHREAD_LIBS = @LIBPTHREAD_LIBS@
++LIBS = @LIBS@
++LIBSSL_LIBS = @LIBSSL_LIBS@
++LIBZ_LIBS = @LIBZ_LIBS@
++LTLIBICONV = @LTLIBICONV@
++LTLIBINTL = @LTLIBINTL@
++LTLIBOBJS = @LTLIBOBJS@
++MAKEINFO = @MAKEINFO@
++MKINSTALLDIRS = @MKINSTALLDIRS@
++MSGFMT = @MSGFMT@
++MSGMERGE = @MSGMERGE@
++OBJEXT = @OBJEXT@
++PACKAGE = @PACKAGE@
++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
++PACKAGE_NAME = @PACKAGE_NAME@
++PACKAGE_STRING = @PACKAGE_STRING@
++PACKAGE_TARNAME = @PACKAGE_TARNAME@
++PACKAGE_VERSION = @PACKAGE_VERSION@
++PATH_SEPARATOR = @PATH_SEPARATOR@
++PKG_CONFIG = @PKG_CONFIG@
++POSUB = @POSUB@
++RANLIB = @RANLIB@
++SET_MAKE = @SET_MAKE@
++SHELL = @SHELL@
++STRIP = @STRIP@
++USE_NLS = @USE_NLS@
++VERSION = @VERSION@
++XFT_CONFIG = @XFT_CONFIG@
++XGETTEXT = @XGETTEXT@
++ac_ct_CC = @ac_ct_CC@
++ac_ct_CXX = @ac_ct_CXX@
++ac_ct_RANLIB = @ac_ct_RANLIB@
++ac_ct_STRIP = @ac_ct_STRIP@
++am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
++am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
++am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
++am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
++am__include = @am__include@
++am__leading_dot = @am__leading_dot@
++am__quote = @am__quote@
++bindir = @bindir@
++build = @build@
++build_alias = @build_alias@
++build_cpu = @build_cpu@
++build_os = @build_os@
++build_vendor = @build_vendor@
++datadir = @datadir@
++exec_prefix = @exec_prefix@
++host = @host@
++host_alias = @host_alias@
++host_cpu = @host_cpu@
++host_os = @host_os@
++host_vendor = @host_vendor@
++includedir = @includedir@
++infodir = @infodir@
++install_sh = @install_sh@
++libdir = @libdir@
++libexecdir = @libexecdir@
++localedir = @localedir@
++localstatedir = @localstatedir@
++mandir = @mandir@
++oldincludedir = @oldincludedir@
++prefix = @prefix@
++program_transform_name = @program_transform_name@
++sbindir = @sbindir@
++sharedstatedir = @sharedstatedir@
++sysconfdir = @sysconfdir@
++target = @target@
++target_alias = @target_alias@
++target_cpu = @target_cpu@
++target_os = @target_os@
++target_vendor = @target_vendor@
++EXTRA_DIST = intmax.m4 longdouble.m4 longlong.m4 nls.m4 po.m4 printf-posix.m4 signed.m4 size_max.m4 ulonglong.m4 wchar_t.m4 wint_t.m4 xsize.m4 codeset.m4 gettext.m4 glibc21.m4 iconv.m4 intdiv0.m4 inttypes.m4 inttypes_h.m4 inttypes-pri.m4 isc-posix.m4 lcmessage.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 progtest.m4 stdint_h.m4 uintmax_t.m4
++subdir = m4
++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
++CONFIG_HEADER = $(top_builddir)/config.h
++CONFIG_CLEAN_FILES =
++DIST_SOURCES =
++DIST_COMMON = $(srcdir)/Makefile.in ChangeLog Makefile.am
++all: all-am
++
++.SUFFIXES:
++$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
++ cd $(top_srcdir) && \
++ $(AUTOMAKE) --gnu m4/Makefile
++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
++uninstall-info-am:
++tags: TAGS
++TAGS:
++
++ctags: CTAGS
++CTAGS:
++
++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
++
++top_distdir = ..
++distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
++
++distdir: $(DISTFILES)
++ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
++ list='$(DISTFILES)'; for file in $$list; do \
++ case $$file in \
++ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
++ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
++ esac; \
++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
++ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
++ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
++ dir="/$$dir"; \
++ $(mkinstalldirs) "$(distdir)$$dir"; \
++ else \
++ dir=''; \
++ fi; \
++ if test -d $$d/$$file; then \
++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
++ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
++ fi; \
++ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
++ else \
++ test -f $(distdir)/$$file \
++ || cp -p $$d/$$file $(distdir)/$$file \
++ || exit 1; \
++ fi; \
++ done
++check-am: all-am
++check: check-am
++all-am: Makefile
++
++installdirs:
++install: install-am
++install-exec: install-exec-am
++install-data: install-data-am
++uninstall: uninstall-am
++
++install-am: all-am
++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
++
++installcheck: installcheck-am
++install-strip:
++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
++ `test -z '$(STRIP)' || \
++ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
++mostlyclean-generic:
++
++clean-generic:
++
++distclean-generic:
++ -rm -f $(CONFIG_CLEAN_FILES)
++
++maintainer-clean-generic:
++ @echo "This command is intended for maintainers to use"
++ @echo "it deletes files that may require special tools to rebuild."
++clean: clean-am
++
++clean-am: clean-generic mostlyclean-am
++
++distclean: distclean-am
++ -rm -f Makefile
++distclean-am: clean-am distclean-generic
++
++dvi: dvi-am
++
++dvi-am:
++
++info: info-am
++
++info-am:
++
++install-data-am:
++
++install-exec-am:
++
++install-info: install-info-am
++
++install-man:
++
++installcheck-am:
++
++maintainer-clean: maintainer-clean-am
++ -rm -f Makefile
++maintainer-clean-am: distclean-am maintainer-clean-generic
++
++mostlyclean: mostlyclean-am
++
++mostlyclean-am: mostlyclean-generic
++
++pdf: pdf-am
++
++pdf-am:
++
++ps: ps-am
++
++ps-am:
++
++uninstall-am: uninstall-info-am
++
++.PHONY: all all-am check check-am clean clean-generic distclean \
++ distclean-generic distdir dvi dvi-am info info-am install \
++ install-am install-data install-data-am install-exec \
++ install-exec-am install-info install-info-am install-man \
++ install-strip installcheck installcheck-am installdirs \
++ maintainer-clean maintainer-clean-generic mostlyclean \
++ mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \
++ uninstall-info-am
++
++# Tell versions [3.59,3.63) of GNU make to not export all variables.
++# Otherwise a system limit (for SysV at least) may be exceeded.
++.NOEXPORT:
+diff -pruN dillo-0.8.6/m4/codeset.m4 dillo-0.8.6-i18n-misc-20060709/m4/codeset.m4
+--- dillo-0.8.6/m4/codeset.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/codeset.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,23 @@
++# codeset.m4 serial AM1 (gettext-0.10.40)
++dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([AM_LANGINFO_CODESET],
++[
++ AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
++ [AC_TRY_LINK([#include <langinfo.h>],
++ [char* cs = nl_langinfo(CODESET);],
++ am_cv_langinfo_codeset=yes,
++ am_cv_langinfo_codeset=no)
++ ])
++ if test $am_cv_langinfo_codeset = yes; then
++ AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
++ [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
++ fi
++])
+diff -pruN dillo-0.8.6/m4/gettext.m4 dillo-0.8.6-i18n-misc-20060709/m4/gettext.m4
+--- dillo-0.8.6/m4/gettext.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/gettext.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,587 @@
++# gettext.m4 serial 16 (gettext-0.11.4)
++dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
++dnl Bruno Haible <haible@clisp.cons.org>, 2000-2002.
++
++dnl Macro to add for using GNU gettext.
++
++dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
++dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
++dnl default (if it is not specified or empty) is 'no-libtool'.
++dnl INTLSYMBOL should be 'external' for packages with no intl directory,
++dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory.
++dnl If INTLSYMBOL is 'use-libtool', then a libtool library
++dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
++dnl depending on --{enable,disable}-{shared,static} and on the presence of
++dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
++dnl $(top_builddir)/intl/libintl.a will be created.
++dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
++dnl implementations (in libc or libintl) without the ngettext() function
++dnl will be ignored. If NEEDSYMBOL is specified and is
++dnl 'need-formatstring-macros', then GNU gettext implementations that don't
++dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
++dnl INTLDIR is used to find the intl libraries. If empty,
++dnl the value `$(top_builddir)/intl/' is used.
++dnl
++dnl The result of the configuration is one of three cases:
++dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
++dnl and used.
++dnl Catalog format: GNU --> install in $(datadir)
++dnl Catalog extension: .mo after installation, .gmo in source tree
++dnl 2) GNU gettext has been found in the system's C library.
++dnl Catalog format: GNU --> install in $(datadir)
++dnl Catalog extension: .mo after installation, .gmo in source tree
++dnl 3) No internationalization, always use English msgid.
++dnl Catalog format: none
++dnl Catalog extension: none
++dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
++dnl The use of .gmo is historical (it was needed to avoid overwriting the
++dnl GNU format catalogs when building on a platform with an X/Open gettext),
++dnl but we keep it in order not to force irrelevant filename changes on the
++dnl maintainers.
++dnl
++AC_DEFUN([AM_GNU_GETTEXT],
++[
++ dnl Argument checking.
++ ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
++ [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
++])])])])])
++ ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
++ [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
++])])])])
++ define(gt_included_intl, ifelse([$1], [external], [no], [yes]))
++ define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], []))
++
++ AC_REQUIRE([AM_PO_SUBDIRS])dnl
++ ifelse(gt_included_intl, yes, [
++ AC_REQUIRE([AM_INTL_SUBDIR])dnl
++ ])
++
++ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++ AC_REQUIRE([AC_LIB_RPATH])
++
++ dnl Sometimes libintl requires libiconv, so first search for libiconv.
++ dnl Ideally we would do this search only after the
++ dnl if test "$USE_NLS" = "yes"; then
++ dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then
++ dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
++ dnl the configure script would need to contain the same shell code
++ dnl again, outside any 'if'. There are two solutions:
++ dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
++ dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
++ dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
++ dnl documented, we avoid it.
++ ifelse(gt_included_intl, yes, , [
++ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
++ ])
++
++ AC_MSG_CHECKING([whether NLS is requested])
++ dnl Default is enabled NLS
++ AC_ARG_ENABLE(nls,
++ [ --disable-nls do not use Native Language Support],
++ USE_NLS=$enableval, USE_NLS=yes)
++ AC_MSG_RESULT($USE_NLS)
++ AC_SUBST(USE_NLS)
++
++ ifelse(gt_included_intl, yes, [
++ BUILD_INCLUDED_LIBINTL=no
++ USE_INCLUDED_LIBINTL=no
++ ])
++ LIBINTL=
++ LTLIBINTL=
++ POSUB=
++
++ dnl If we use NLS figure out what method
++ if test "$USE_NLS" = "yes"; then
++ gt_use_preinstalled_gnugettext=no
++ ifelse(gt_included_intl, yes, [
++ AC_MSG_CHECKING([whether included gettext is requested])
++ AC_ARG_WITH(included-gettext,
++ [ --with-included-gettext use the GNU gettext library included here],
++ nls_cv_force_use_gnu_gettext=$withval,
++ nls_cv_force_use_gnu_gettext=no)
++ AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
++
++ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
++ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
++ ])
++ dnl User does not insist on using GNU NLS library. Figure out what
++ dnl to use. If GNU gettext is available we use this. Else we have
++ dnl to fall back to GNU NLS library.
++
++ dnl Add a version number to the cache macros.
++ define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1)))
++ define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc])
++ define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl])
++
++ AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc,
++ [AC_TRY_LINK([#include <libintl.h>
++]ifelse([$2], [need-formatstring-macros],
++[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
++#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
++#endif
++changequote(,)dnl
++typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
++changequote([,])dnl
++], [])[extern int _nl_msg_cat_cntr;
++extern int *_nl_domain_bindings;],
++ [bindtextdomain ("", "");
++return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings],
++ gt_cv_func_gnugettext_libc=yes,
++ gt_cv_func_gnugettext_libc=no)])
++
++ if test "$gt_cv_func_gnugettext_libc" != "yes"; then
++ dnl Sometimes libintl requires libiconv, so first search for libiconv.
++ ifelse(gt_included_intl, yes, , [
++ AM_ICONV_LINK
++ ])
++ dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
++ dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
++ dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
++ dnl even if libiconv doesn't exist.
++ AC_LIB_LINKFLAGS_BODY([intl])
++ AC_CACHE_CHECK([for GNU gettext in libintl],
++ gt_cv_func_gnugettext_libintl,
++ [gt_save_CPPFLAGS="$CPPFLAGS"
++ CPPFLAGS="$CPPFLAGS $INCINTL"
++ gt_save_LIBS="$LIBS"
++ LIBS="$LIBS $LIBINTL"
++ dnl Now see whether libintl exists and does not depend on libiconv.
++ AC_TRY_LINK([#include <libintl.h>
++]ifelse([$2], [need-formatstring-macros],
++[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
++#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
++#endif
++changequote(,)dnl
++typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
++changequote([,])dnl
++], [])[extern int _nl_msg_cat_cntr;
++extern
++#ifdef __cplusplus
++"C"
++#endif
++const char *_nl_expand_alias ();],
++ [bindtextdomain ("", "");
++return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
++ gt_cv_func_gnugettext_libintl=yes,
++ gt_cv_func_gnugettext_libintl=no)
++ dnl Now see whether libintl exists and depends on libiconv.
++ if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then
++ LIBS="$LIBS $LIBICONV"
++ AC_TRY_LINK([#include <libintl.h>
++]ifelse([$2], [need-formatstring-macros],
++[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
++#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
++#endif
++changequote(,)dnl
++typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
++changequote([,])dnl
++], [])[extern int _nl_msg_cat_cntr;
++extern
++#ifdef __cplusplus
++"C"
++#endif
++const char *_nl_expand_alias ();],
++ [bindtextdomain ("", "");
++return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
++ [LIBINTL="$LIBINTL $LIBICONV"
++ LTLIBINTL="$LTLIBINTL $LTLIBICONV"
++ gt_cv_func_gnugettext_libintl=yes
++ ])
++ fi
++ CPPFLAGS="$gt_save_CPPFLAGS"
++ LIBS="$gt_save_LIBS"])
++ fi
++
++ dnl If an already present or preinstalled GNU gettext() is found,
++ dnl use it. But if this macro is used in GNU gettext, and GNU
++ dnl gettext is already preinstalled in libintl, we update this
++ dnl libintl. (Cf. the install rule in intl/Makefile.in.)
++ if test "$gt_cv_func_gnugettext_libc" = "yes" \
++ || { test "$gt_cv_func_gnugettext_libintl" = "yes" \
++ && test "$PACKAGE" != gettext; }; then
++ gt_use_preinstalled_gnugettext=yes
++ else
++ dnl Reset the values set by searching for libintl.
++ LIBINTL=
++ LTLIBINTL=
++ INCINTL=
++ fi
++
++ ifelse(gt_included_intl, yes, [
++ if test "$gt_use_preinstalled_gnugettext" != "yes"; then
++ dnl GNU gettext is not found in the C library.
++ dnl Fall back on included GNU gettext library.
++ nls_cv_use_gnu_gettext=yes
++ fi
++ fi
++
++ if test "$nls_cv_use_gnu_gettext" = "yes"; then
++ dnl Mark actions used to generate GNU NLS library.
++ INTLOBJS="\$(GETTOBJS)"
++ BUILD_INCLUDED_LIBINTL=yes
++ USE_INCLUDED_LIBINTL=yes
++ LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV"
++ LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV"
++ LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
++ fi
++
++ if test "$gt_use_preinstalled_gnugettext" = "yes" \
++ || test "$nls_cv_use_gnu_gettext" = "yes"; then
++ dnl Mark actions to use GNU gettext tools.
++ CATOBJEXT=.gmo
++ fi
++ ])
++
++ if test "$gt_use_preinstalled_gnugettext" = "yes" \
++ || test "$nls_cv_use_gnu_gettext" = "yes"; then
++ AC_DEFINE(ENABLE_NLS, 1,
++ [Define to 1 if translation of program messages to the user's native language
++ is requested.])
++ else
++ USE_NLS=no
++ fi
++ fi
++
++ if test "$USE_NLS" = "yes"; then
++
++ if test "$gt_use_preinstalled_gnugettext" = "yes"; then
++ if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
++ AC_MSG_CHECKING([how to link with libintl])
++ AC_MSG_RESULT([$LIBINTL])
++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
++ fi
++
++ dnl For backward compatibility. Some packages may be using this.
++ AC_DEFINE(HAVE_GETTEXT, 1,
++ [Define if the GNU gettext() function is already present or preinstalled.])
++ AC_DEFINE(HAVE_DCGETTEXT, 1,
++ [Define if the GNU dcgettext() function is already present or preinstalled.])
++ fi
++
++ dnl We need to process the po/ directory.
++ POSUB=po
++ fi
++
++ ifelse(gt_included_intl, yes, [
++ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
++ dnl to 'yes' because some of the testsuite requires it.
++ if test "$PACKAGE" = gettext; then
++ BUILD_INCLUDED_LIBINTL=yes
++ fi
++
++ dnl Make all variables we use known to autoconf.
++ AC_SUBST(BUILD_INCLUDED_LIBINTL)
++ AC_SUBST(USE_INCLUDED_LIBINTL)
++ AC_SUBST(CATOBJEXT)
++ AC_SUBST(INTLOBJS)
++
++ dnl For backward compatibility. Some configure.ins may be using this.
++ nls_cv_header_intl=
++ nls_cv_header_libgt=
++
++ dnl For backward compatibility. Some Makefiles may be using this.
++ DATADIRNAME=share
++ AC_SUBST(DATADIRNAME)
++
++ dnl For backward compatibility. Some Makefiles may be using this.
++ INSTOBJEXT=.mo
++ AC_SUBST(INSTOBJEXT)
++
++ dnl For backward compatibility. Some Makefiles may be using this.
++ GENCAT=gencat
++ AC_SUBST(GENCAT)
++
++ dnl Enable libtool support if the surrounding package wishes it.
++ INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
++ AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
++ ])
++
++ dnl For backward compatibility. Some Makefiles may be using this.
++ INTLLIBS="$LIBINTL"
++ AC_SUBST(INTLLIBS)
++
++ dnl Make all documented variables known to autoconf.
++ AC_SUBST(LIBINTL)
++ AC_SUBST(LTLIBINTL)
++ AC_SUBST(POSUB)
++])
++
++
++dnl Checks for all prerequisites of the po subdirectory,
++dnl except for USE_NLS.
++AC_DEFUN([AM_PO_SUBDIRS],
++[
++ AC_REQUIRE([AC_PROG_MAKE_SET])dnl
++ AC_REQUIRE([AC_PROG_INSTALL])dnl
++ AC_REQUIRE([AM_MKINSTALLDIRS])dnl
++
++ dnl Perform the following tests also if --disable-nls has been given,
++ dnl because they are needed for "make dist" to work.
++
++ dnl Search for GNU msgfmt in the PATH.
++ dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
++ dnl The second test excludes FreeBSD msgfmt.
++ AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
++ [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 &&
++ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
++ :)
++ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
++
++ dnl Search for GNU xgettext 0.11 or newer in the PATH.
++ dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
++ dnl The second test excludes FreeBSD xgettext.
++ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
++ [$ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 &&
++ (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
++ :)
++ dnl Remove leftover from FreeBSD xgettext call.
++ rm -f messages.po
++
++ dnl Search for GNU msgmerge 0.11 or newer in the PATH.
++ AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
++ [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :)
++
++ dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
++ dnl Test whether we really found GNU msgfmt.
++ if test "$GMSGFMT" != ":"; then
++ dnl If it is no GNU msgfmt we define it as : so that the
++ dnl Makefiles still can work.
++ if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 &&
++ (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
++ : ;
++ else
++ GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
++ AC_MSG_RESULT(
++ [found $GMSGFMT program is not GNU msgfmt; ignore it])
++ GMSGFMT=":"
++ fi
++ fi
++
++ dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
++ dnl Test whether we really found GNU xgettext.
++ if test "$XGETTEXT" != ":"; then
++ dnl If it is no GNU xgettext we define it as : so that the
++ dnl Makefiles still can work.
++ if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 &&
++ (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
++ : ;
++ else
++ AC_MSG_RESULT(
++ [found xgettext program is not GNU xgettext; ignore it])
++ XGETTEXT=":"
++ fi
++ dnl Remove leftover from FreeBSD xgettext call.
++ rm -f messages.po
++ fi
++
++ AC_OUTPUT_COMMANDS([
++ for ac_file in $CONFIG_FILES; do
++ # Support "outfile[:infile[:infile...]]"
++ case "$ac_file" in
++ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
++ esac
++ # PO directories have a Makefile.in generated from Makefile.in.in.
++ case "$ac_file" in */Makefile.in)
++ # Adjust a relative srcdir.
++ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
++ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
++ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
++ # In autoconf-2.13 it is called $ac_given_srcdir.
++ # In autoconf-2.50 it is called $srcdir.
++ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
++ case "$ac_given_srcdir" in
++ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
++ /*) top_srcdir="$ac_given_srcdir" ;;
++ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
++ esac
++ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
++ rm -f "$ac_dir/POTFILES"
++ test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
++ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
++ # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend
++ # on $ac_dir but don't depend on user-specified configuration
++ # parameters.
++ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
++ # The LINGUAS file contains the set of available languages.
++ if test -n "$ALL_LINGUAS"; then
++ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
++ fi
++ ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
++ # Hide the ALL_LINGUAS assigment from automake.
++ eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
++ fi
++ case "$ac_given_srcdir" in
++ .) srcdirpre= ;;
++ *) srcdirpre='$(srcdir)/' ;;
++ esac
++ POFILES=
++ GMOFILES=
++ UPDATEPOFILES=
++ DUMMYPOFILES=
++ for lang in $ALL_LINGUAS; do
++ POFILES="$POFILES $srcdirpre$lang.po"
++ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
++ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
++ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
++ done
++ # CATALOGS depends on both $ac_dir and the user's LINGUAS
++ # environment variable.
++ INST_LINGUAS=
++ if test -n "$ALL_LINGUAS"; then
++ for presentlang in $ALL_LINGUAS; do
++ useit=no
++ if test "%UNSET%" != "$LINGUAS"; then
++ desiredlanguages="$LINGUAS"
++ else
++ desiredlanguages="$ALL_LINGUAS"
++ fi
++ for desiredlang in $desiredlanguages; do
++ # Use the presentlang catalog if desiredlang is
++ # a. equal to presentlang, or
++ # b. a variant of presentlang (because in this case,
++ # presentlang can be used as a fallback for messages
++ # which are not translated in the desiredlang catalog).
++ case "$desiredlang" in
++ "$presentlang"*) useit=yes;;
++ esac
++ done
++ if test $useit = yes; then
++ INST_LINGUAS="$INST_LINGUAS $presentlang"
++ fi
++ done
++ fi
++ CATALOGS=
++ if test -n "$INST_LINGUAS"; then
++ for lang in $INST_LINGUAS; do
++ CATALOGS="$CATALOGS $lang.gmo"
++ done
++ fi
++ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
++ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
++ for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
++ if test -f "$f"; then
++ case "$f" in
++ *.orig | *.bak | *~) ;;
++ *) cat "$f" >> "$ac_dir/Makefile" ;;
++ esac
++ fi
++ done
++ fi
++ ;;
++ esac
++ done],
++ [# Capture the value of obsolete $ALL_LINGUAS because we need it to compute
++ # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it
++ # from automake.
++ eval 'ALL_LINGUAS''="$ALL_LINGUAS"'
++ # Capture the value of LINGUAS because we need it to compute CATALOGS.
++ LINGUAS="${LINGUAS-%UNSET%}"
++ ])
++])
++
++
++dnl Checks for all prerequisites of the intl subdirectory,
++dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
++dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
++AC_DEFUN([AM_INTL_SUBDIR],
++[
++ AC_REQUIRE([AC_PROG_INSTALL])dnl
++ AC_REQUIRE([AM_MKINSTALLDIRS])dnl
++ AC_REQUIRE([AC_PROG_CC])dnl
++ AC_REQUIRE([AC_CANONICAL_HOST])dnl
++ AC_REQUIRE([AC_PROG_RANLIB])dnl
++ AC_REQUIRE([AC_ISC_POSIX])dnl
++ AC_REQUIRE([AC_HEADER_STDC])dnl
++ AC_REQUIRE([AC_C_CONST])dnl
++ AC_REQUIRE([AC_C_INLINE])dnl
++ AC_REQUIRE([AC_TYPE_OFF_T])dnl
++ AC_REQUIRE([AC_TYPE_SIZE_T])dnl
++ AC_REQUIRE([AC_FUNC_ALLOCA])dnl
++ AC_REQUIRE([AC_FUNC_MMAP])dnl
++ AC_REQUIRE([jm_GLIBC21])dnl
++ AC_REQUIRE([gt_INTDIV0])dnl
++ AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl
++ AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl
++ AC_REQUIRE([gt_INTTYPES_PRI])dnl
++
++ AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \
++stdlib.h string.h unistd.h sys/param.h])
++ AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \
++geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \
++strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next])
++
++ AM_ICONV
++ AM_LANGINFO_CODESET
++ if test $ac_cv_header_locale_h = yes; then
++ AM_LC_MESSAGES
++ fi
++
++ dnl intl/plural.c is generated from intl/plural.y. It requires bison,
++ dnl because plural.y uses bison specific features. It requires at least
++ dnl bison-1.26 because earlier versions generate a plural.c that doesn't
++ dnl compile.
++ dnl bison is only needed for the maintainer (who touches plural.y). But in
++ dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
++ dnl the rule in general Makefile. Now, some people carelessly touch the
++ dnl files or have a broken "make" program, hence the plural.c rule will
++ dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
++ dnl present or too old.
++ AC_CHECK_PROGS([INTLBISON], [bison])
++ if test -z "$INTLBISON"; then
++ ac_verc_fail=yes
++ else
++ dnl Found it, now check the version.
++ AC_MSG_CHECKING([version of bison])
++changequote(<<,>>)dnl
++ ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
++ case $ac_prog_version in
++ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
++ 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
++changequote([,])dnl
++ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
++ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
++ esac
++ AC_MSG_RESULT([$ac_prog_version])
++ fi
++ if test $ac_verc_fail = yes; then
++ INTLBISON=:
++ fi
++])
++
++
++AC_DEFUN([AM_MKINSTALLDIRS],
++[
++ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
++ dnl find the mkinstalldirs script in another subdir but $(top_srcdir).
++ dnl Try to locate is.
++ MKINSTALLDIRS=
++ if test -n "$ac_aux_dir"; then
++ MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
++ fi
++ if test -z "$MKINSTALLDIRS"; then
++ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
++ fi
++ AC_SUBST(MKINSTALLDIRS)
++])
++
++
++dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
++AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
+diff -pruN dillo-0.8.6/m4/glibc21.m4 dillo-0.8.6-i18n-misc-20060709/m4/glibc21.m4
+--- dillo-0.8.6/m4/glibc21.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/glibc21.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,32 @@
++# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40)
++dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++# Test for the GNU C Library, version 2.1 or newer.
++# From Bruno Haible.
++
++AC_DEFUN([jm_GLIBC21],
++ [
++ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer,
++ ac_cv_gnu_library_2_1,
++ [AC_EGREP_CPP([Lucky GNU user],
++ [
++#include <features.h>
++#ifdef __GNU_LIBRARY__
++ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
++ Lucky GNU user
++ #endif
++#endif
++ ],
++ ac_cv_gnu_library_2_1=yes,
++ ac_cv_gnu_library_2_1=no)
++ ]
++ )
++ AC_SUBST(GLIBC21)
++ GLIBC21="$ac_cv_gnu_library_2_1"
++ ]
++)
+diff -pruN dillo-0.8.6/m4/iconv.m4 dillo-0.8.6-i18n-misc-20060709/m4/iconv.m4
+--- dillo-0.8.6/m4/iconv.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/iconv.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,103 @@
++# iconv.m4 serial AM4 (gettext-0.11.3)
++dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
++[
++ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++ AC_REQUIRE([AC_LIB_RPATH])
++
++ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
++ dnl accordingly.
++ AC_LIB_LINKFLAGS_BODY([iconv])
++])
++
++AC_DEFUN([AM_ICONV_LINK],
++[
++ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
++ dnl those with the standalone portable GNU libiconv installed).
++
++ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
++ dnl accordingly.
++ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
++
++ dnl Add $INCICONV to CPPFLAGS before performing the following checks,
++ dnl because if the user has installed libiconv and not disabled its use
++ dnl via --without-libiconv-prefix, he wants to use it. The first
++ dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
++ am_save_CPPFLAGS="$CPPFLAGS"
++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
++
++ AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
++ am_cv_func_iconv="no, consider installing GNU libiconv"
++ am_cv_lib_iconv=no
++ AC_TRY_LINK([#include <stdlib.h>
++#include <iconv.h>],
++ [iconv_t cd = iconv_open("","");
++ iconv(cd,NULL,NULL,NULL,NULL);
++ iconv_close(cd);],
++ am_cv_func_iconv=yes)
++ if test "$am_cv_func_iconv" != yes; then
++ am_save_LIBS="$LIBS"
++ LIBS="$LIBS $LIBICONV"
++ AC_TRY_LINK([#include <stdlib.h>
++#include <iconv.h>],
++ [iconv_t cd = iconv_open("","");
++ iconv(cd,NULL,NULL,NULL,NULL);
++ iconv_close(cd);],
++ am_cv_lib_iconv=yes
++ am_cv_func_iconv=yes)
++ LIBS="$am_save_LIBS"
++ fi
++ ])
++ if test "$am_cv_func_iconv" = yes; then
++ AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
++ fi
++ if test "$am_cv_lib_iconv" = yes; then
++ AC_MSG_CHECKING([how to link with libiconv])
++ AC_MSG_RESULT([$LIBICONV])
++ else
++ dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
++ dnl either.
++ CPPFLAGS="$am_save_CPPFLAGS"
++ LIBICONV=
++ LTLIBICONV=
++ fi
++ AC_SUBST(LIBICONV)
++ AC_SUBST(LTLIBICONV)
++])
++
++AC_DEFUN([AM_ICONV],
++[
++ AM_ICONV_LINK
++ if test "$am_cv_func_iconv" = yes; then
++ AC_MSG_CHECKING([for iconv declaration])
++ AC_CACHE_VAL(am_cv_proto_iconv, [
++ AC_TRY_COMPILE([
++#include <stdlib.h>
++#include <iconv.h>
++extern
++#ifdef __cplusplus
++"C"
++#endif
++#if defined(__STDC__) || defined(__cplusplus)
++size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
++#else
++size_t iconv();
++#endif
++], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
++ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
++ am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
++ AC_MSG_RESULT([$]{ac_t:-
++ }[$]am_cv_proto_iconv)
++ AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
++ [Define as const if the declaration of iconv() needs const.])
++ fi
++])
+diff -pruN dillo-0.8.6/m4/intdiv0.m4 dillo-0.8.6-i18n-misc-20060709/m4/intdiv0.m4
+--- dillo-0.8.6/m4/intdiv0.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/intdiv0.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,72 @@
++# intdiv0.m4 serial 1 (gettext-0.11.3)
++dnl Copyright (C) 2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([gt_INTDIV0],
++[
++ AC_REQUIRE([AC_PROG_CC])dnl
++ AC_REQUIRE([AC_CANONICAL_HOST])dnl
++
++ AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
++ gt_cv_int_divbyzero_sigfpe,
++ [
++ AC_TRY_RUN([
++#include <stdlib.h>
++#include <signal.h>
++
++static void
++#ifdef __cplusplus
++sigfpe_handler (int sig)
++#else
++sigfpe_handler (sig) int sig;
++#endif
++{
++ /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */
++ exit (sig != SIGFPE);
++}
++
++int x = 1;
++int y = 0;
++int z;
++int nan;
++
++int main ()
++{
++ signal (SIGFPE, sigfpe_handler);
++/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */
++#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
++ signal (SIGTRAP, sigfpe_handler);
++#endif
++/* Linux/SPARC yields signal SIGILL. */
++#if defined (__sparc__) && defined (__linux__)
++ signal (SIGILL, sigfpe_handler);
++#endif
++
++ z = x / y;
++ nan = y / y;
++ exit (1);
++}
++], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no,
++ [
++ # Guess based on the CPU.
++ case "$host_cpu" in
++ alpha* | i[34567]86 | m68k | s390*)
++ gt_cv_int_divbyzero_sigfpe="guessing yes";;
++ *)
++ gt_cv_int_divbyzero_sigfpe="guessing no";;
++ esac
++ ])
++ ])
++ case "$gt_cv_int_divbyzero_sigfpe" in
++ *yes) value=1;;
++ *) value=0;;
++ esac
++ AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value,
++ [Define if integer division by zero raises signal SIGFPE.])
++])
+diff -pruN dillo-0.8.6/m4/intmax.m4 dillo-0.8.6-i18n-misc-20060709/m4/intmax.m4
+--- dillo-0.8.6/m4/intmax.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/intmax.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,32 @@
++# intmax.m4 serial 1 (gettext-0.12)
++dnl Copyright (C) 2002-2003 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++dnl Test whether the system has the 'intmax_t' type, but don't attempt to
++dnl find a replacement if it is lacking.
++
++AC_DEFUN([gt_TYPE_INTMAX_T],
++[
++ AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
++ AC_REQUIRE([jm_AC_HEADER_STDINT_H])
++ AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t,
++ [AC_TRY_COMPILE([
++#include <stddef.h>
++#include <stdlib.h>
++#if HAVE_STDINT_H_WITH_UINTMAX
++#include <stdint.h>
++#endif
++#if HAVE_INTTYPES_H_WITH_UINTMAX
++#include <inttypes.h>
++#endif
++], [intmax_t x = -1;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)])
++ if test $gt_cv_c_intmax_t = yes; then
++ AC_DEFINE(HAVE_INTMAX_T, 1,
++ [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
++ fi
++])
+diff -pruN dillo-0.8.6/m4/inttypes-pri.m4 dillo-0.8.6-i18n-misc-20060709/m4/inttypes-pri.m4
+--- dillo-0.8.6/m4/inttypes-pri.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/inttypes-pri.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,32 @@
++# inttypes-pri.m4 serial 1 (gettext-0.11.4)
++dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++
++# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
++# macros to non-string values. This is the case on AIX 4.3.3.
++
++AC_DEFUN([gt_INTTYPES_PRI],
++[
++ AC_REQUIRE([gt_HEADER_INTTYPES_H])
++ if test $gt_cv_header_inttypes_h = yes; then
++ AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
++ gt_cv_inttypes_pri_broken,
++ [
++ AC_TRY_COMPILE([#include <inttypes.h>
++#ifdef PRId32
++char *p = PRId32;
++#endif
++], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes)
++ ])
++ fi
++ if test "$gt_cv_inttypes_pri_broken" = yes; then
++ AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1,
++ [Define if <inttypes.h> exists and defines unusable PRI* macros.])
++ fi
++])
+diff -pruN dillo-0.8.6/m4/inttypes.m4 dillo-0.8.6-i18n-misc-20060709/m4/inttypes.m4
+--- dillo-0.8.6/m4/inttypes.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/inttypes.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,27 @@
++# inttypes.m4 serial 1 (gettext-0.11.4)
++dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Paul Eggert.
++
++# Define HAVE_INTTYPES_H if <inttypes.h> exists and doesn't clash with
++# <sys/types.h>.
++
++AC_DEFUN([gt_HEADER_INTTYPES_H],
++[
++ AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h,
++ [
++ AC_TRY_COMPILE(
++ [#include <sys/types.h>
++#include <inttypes.h>],
++ [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no)
++ ])
++ if test $gt_cv_header_inttypes_h = yes; then
++ AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1,
++ [Define if <inttypes.h> exists and doesn't clash with <sys/types.h>.])
++ fi
++])
+diff -pruN dillo-0.8.6/m4/inttypes_h.m4 dillo-0.8.6-i18n-misc-20060709/m4/inttypes_h.m4
+--- dillo-0.8.6/m4/inttypes_h.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/inttypes_h.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,28 @@
++# inttypes_h.m4 serial 4 (gettext-0.11.4)
++dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Paul Eggert.
++
++# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
++# doesn't clash with <sys/types.h>, and declares uintmax_t.
++
++AC_DEFUN([jm_AC_HEADER_INTTYPES_H],
++[
++ AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h,
++ [AC_TRY_COMPILE(
++ [#include <sys/types.h>
++#include <inttypes.h>],
++ [uintmax_t i = (uintmax_t) -1;],
++ jm_ac_cv_header_inttypes_h=yes,
++ jm_ac_cv_header_inttypes_h=no)])
++ if test $jm_ac_cv_header_inttypes_h = yes; then
++ AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1,
++[Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
++ and declares uintmax_t. ])
++ fi
++])
+diff -pruN dillo-0.8.6/m4/isc-posix.m4 dillo-0.8.6-i18n-misc-20060709/m4/isc-posix.m4
+--- dillo-0.8.6/m4/isc-posix.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/isc-posix.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,26 @@
++# isc-posix.m4 serial 2 (gettext-0.11.2)
++dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++# This file is not needed with autoconf-2.53 and newer. Remove it in 2005.
++
++# This test replaces the one in autoconf.
++# Currently this macro should have the same name as the autoconf macro
++# because gettext's gettext.m4 (distributed in the automake package)
++# still uses it. Otherwise, the use in gettext.m4 makes autoheader
++# give these diagnostics:
++# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
++# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
++
++undefine([AC_ISC_POSIX])
++
++AC_DEFUN([AC_ISC_POSIX],
++ [
++ dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
++ AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
++ ]
++)
+diff -pruN dillo-0.8.6/m4/lcmessage.m4 dillo-0.8.6-i18n-misc-20060709/m4/lcmessage.m4
+--- dillo-0.8.6/m4/lcmessage.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/lcmessage.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,32 @@
++# lcmessage.m4 serial 3 (gettext-0.11.3)
++dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl Ulrich Drepper <drepper@cygnus.com>, 1995.
++
++# Check whether LC_MESSAGES is available in <locale.h>.
++
++AC_DEFUN([AM_LC_MESSAGES],
++[
++ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
++ [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
++ am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
++ if test $am_cv_val_LC_MESSAGES = yes; then
++ AC_DEFINE(HAVE_LC_MESSAGES, 1,
++ [Define if your <locale.h> file defines LC_MESSAGES.])
++ fi
++])
+diff -pruN dillo-0.8.6/m4/lib-ld.m4 dillo-0.8.6-i18n-misc-20060709/m4/lib-ld.m4
+--- dillo-0.8.6/m4/lib-ld.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/lib-ld.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,97 @@
++# lib-ld.m4 serial 1 (gettext-0.11)
++dnl Copyright (C) 1996-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl Subroutines of libtool.m4,
++dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
++dnl with libtool.m4.
++
++dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
++AC_DEFUN([AC_LIB_PROG_LD_GNU],
++[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
++[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
++if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
++ acl_cv_prog_gnu_ld=yes
++else
++ acl_cv_prog_gnu_ld=no
++fi])
++with_gnu_ld=$acl_cv_prog_gnu_ld
++])
++
++dnl From libtool-1.4. Sets the variable LD.
++AC_DEFUN([AC_LIB_PROG_LD],
++[AC_ARG_WITH(gnu-ld,
++[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
++test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
++AC_REQUIRE([AC_PROG_CC])dnl
++AC_REQUIRE([AC_CANONICAL_HOST])dnl
++ac_prog=ld
++if test "$GCC" = yes; then
++ # Check if gcc -print-prog-name=ld gives a path.
++ AC_MSG_CHECKING([for ld used by GCC])
++ case $host in
++ *-*-mingw*)
++ # gcc leaves a trailing carriage return which upsets mingw
++ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
++ *)
++ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
++ esac
++ case $ac_prog in
++ # Accept absolute paths.
++ [[\\/]* | [A-Za-z]:[\\/]*)]
++ [re_direlt='/[^/][^/]*/\.\./']
++ # Canonicalize the path of ld
++ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
++ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
++ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
++ done
++ test -z "$LD" && LD="$ac_prog"
++ ;;
++ "")
++ # If it fails, then pretend we aren't using GCC.
++ ac_prog=ld
++ ;;
++ *)
++ # If it is relative, then search for the first ld in PATH.
++ with_gnu_ld=unknown
++ ;;
++ esac
++elif test "$with_gnu_ld" = yes; then
++ AC_MSG_CHECKING([for GNU ld])
++else
++ AC_MSG_CHECKING([for non-GNU ld])
++fi
++AC_CACHE_VAL(acl_cv_path_LD,
++[if test -z "$LD"; then
++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
++ for ac_dir in $PATH; do
++ test -z "$ac_dir" && ac_dir=.
++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
++ acl_cv_path_LD="$ac_dir/$ac_prog"
++ # Check to see if the program is GNU ld. I'd rather use --version,
++ # but apparently some GNU ld's only accept -v.
++ # Break only if it was the GNU/non-GNU ld that we prefer.
++ if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
++ test "$with_gnu_ld" != no && break
++ else
++ test "$with_gnu_ld" != yes && break
++ fi
++ fi
++ done
++ IFS="$ac_save_ifs"
++else
++ acl_cv_path_LD="$LD" # Let the user override the test with a path.
++fi])
++LD="$acl_cv_path_LD"
++if test -n "$LD"; then
++ AC_MSG_RESULT($LD)
++else
++ AC_MSG_RESULT(no)
++fi
++test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
++AC_LIB_PROG_LD_GNU
++])
+diff -pruN dillo-0.8.6/m4/lib-link.m4 dillo-0.8.6-i18n-misc-20060709/m4/lib-link.m4
+--- dillo-0.8.6/m4/lib-link.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/lib-link.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,554 @@
++# lib-link.m4 serial 3 (gettext-0.11.3)
++dnl Copyright (C) 2001-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++
++dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
++dnl the libraries corresponding to explicit and implicit dependencies.
++dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
++dnl augments the CPPFLAGS variable.
++AC_DEFUN([AC_LIB_LINKFLAGS],
++[
++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++ AC_REQUIRE([AC_LIB_RPATH])
++ define([Name],[translit([$1],[./-], [___])])
++ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
++ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
++ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
++ AC_LIB_LINKFLAGS_BODY([$1], [$2])
++ ac_cv_lib[]Name[]_libs="$LIB[]NAME"
++ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
++ ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
++ ])
++ LIB[]NAME="$ac_cv_lib[]Name[]_libs"
++ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
++ INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
++ AC_SUBST([LIB]NAME)
++ AC_SUBST([LTLIB]NAME)
++ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
++ dnl results of this search when this library appears as a dependency.
++ HAVE_LIB[]NAME=yes
++ undefine([Name])
++ undefine([NAME])
++])
++
++dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
++dnl searches for libname and the libraries corresponding to explicit and
++dnl implicit dependencies, together with the specified include files and
++dnl the ability to compile and link the specified testcode. If found, it
++dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
++dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
++dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
++dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
++AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
++[
++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++ AC_REQUIRE([AC_LIB_RPATH])
++ define([Name],[translit([$1],[./-], [___])])
++ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
++ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
++
++ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
++ dnl accordingly.
++ AC_LIB_LINKFLAGS_BODY([$1], [$2])
++
++ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
++ dnl because if the user has installed lib[]Name and not disabled its use
++ dnl via --without-lib[]Name-prefix, he wants to use it.
++ ac_save_CPPFLAGS="$CPPFLAGS"
++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
++
++ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
++ ac_save_LIBS="$LIBS"
++ LIBS="$LIBS $LIB[]NAME"
++ AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
++ LIBS="$ac_save_LIBS"
++ ])
++ if test "$ac_cv_lib[]Name" = yes; then
++ HAVE_LIB[]NAME=yes
++ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
++ AC_MSG_CHECKING([how to link with lib[]$1])
++ AC_MSG_RESULT([$LIB[]NAME])
++ else
++ HAVE_LIB[]NAME=no
++ dnl If $LIB[]NAME didn't lead to a usable library, we don't need
++ dnl $INC[]NAME either.
++ CPPFLAGS="$ac_save_CPPFLAGS"
++ LIB[]NAME=
++ LTLIB[]NAME=
++ fi
++ AC_SUBST([HAVE_LIB]NAME)
++ AC_SUBST([LIB]NAME)
++ AC_SUBST([LTLIB]NAME)
++ undefine([Name])
++ undefine([NAME])
++])
++
++dnl Determine the platform dependent parameters needed to use rpath:
++dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator,
++dnl hardcode_direct, hardcode_minus_L,
++dnl sys_lib_search_path_spec, sys_lib_dlsearch_path_spec.
++AC_DEFUN([AC_LIB_RPATH],
++[
++ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
++ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
++ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
++ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
++ AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
++ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
++ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
++ . ./conftest.sh
++ rm -f ./conftest.sh
++ acl_cv_rpath=done
++ ])
++ wl="$acl_cv_wl"
++ libext="$acl_cv_libext"
++ shlibext="$acl_cv_shlibext"
++ hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
++ hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
++ hardcode_direct="$acl_cv_hardcode_direct"
++ hardcode_minus_L="$acl_cv_hardcode_minus_L"
++ sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec"
++ sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec"
++ dnl Determine whether the user wants rpath handling at all.
++ AC_ARG_ENABLE(rpath,
++ [ --disable-rpath do not hardcode runtime library paths],
++ :, enable_rpath=yes)
++])
++
++dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
++dnl the libraries corresponding to explicit and implicit dependencies.
++dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
++AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
++[
++ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
++ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
++ dnl By default, look in $includedir and $libdir.
++ use_additional=yes
++ AC_LIB_WITH_FINAL_PREFIX([
++ eval additional_includedir=\"$includedir\"
++ eval additional_libdir=\"$libdir\"
++ ])
++ AC_ARG_WITH([lib$1-prefix],
++[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
++ --without-lib$1-prefix don't search for lib$1 in includedir and libdir],
++[
++ if test "X$withval" = "Xno"; then
++ use_additional=no
++ else
++ if test "X$withval" = "X"; then
++ AC_LIB_WITH_FINAL_PREFIX([
++ eval additional_includedir=\"$includedir\"
++ eval additional_libdir=\"$libdir\"
++ ])
++ else
++ additional_includedir="$withval/include"
++ additional_libdir="$withval/lib"
++ fi
++ fi
++])
++ dnl Search the library and its dependencies in $additional_libdir and
++ dnl $LDFLAGS. Using breadth-first-seach.
++ LIB[]NAME=
++ LTLIB[]NAME=
++ INC[]NAME=
++ rpathdirs=
++ ltrpathdirs=
++ names_already_handled=
++ names_next_round='$1 $2'
++ while test -n "$names_next_round"; do
++ names_this_round="$names_next_round"
++ names_next_round=
++ for name in $names_this_round; do
++ already_handled=
++ for n in $names_already_handled; do
++ if test "$n" = "$name"; then
++ already_handled=yes
++ break
++ fi
++ done
++ if test -z "$already_handled"; then
++ names_already_handled="$names_already_handled $name"
++ dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
++ dnl or AC_LIB_HAVE_LINKFLAGS call.
++ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
++ eval value=\"\$HAVE_LIB$uppername\"
++ if test -n "$value"; then
++ if test "$value" = yes; then
++ eval value=\"\$LIB$uppername\"
++ test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
++ eval value=\"\$LTLIB$uppername\"
++ test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
++ else
++ dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
++ dnl that this library doesn't exist. So just drop it.
++ :
++ fi
++ else
++ dnl Search the library lib$name in $additional_libdir and $LDFLAGS
++ dnl and the already constructed $LIBNAME/$LTLIBNAME.
++ found_dir=
++ found_la=
++ found_so=
++ found_a=
++ if test $use_additional = yes; then
++ if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
++ found_dir="$additional_libdir"
++ found_so="$additional_libdir/lib$name.$shlibext"
++ if test -f "$additional_libdir/lib$name.la"; then
++ found_la="$additional_libdir/lib$name.la"
++ fi
++ else
++ if test -f "$additional_libdir/lib$name.$libext"; then
++ found_dir="$additional_libdir"
++ found_a="$additional_libdir/lib$name.$libext"
++ if test -f "$additional_libdir/lib$name.la"; then
++ found_la="$additional_libdir/lib$name.la"
++ fi
++ fi
++ fi
++ fi
++ if test "X$found_dir" = "X"; then
++ for x in $LDFLAGS $LTLIB[]NAME; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ case "$x" in
++ -L*)
++ dir=`echo "X$x" | sed -e 's/^X-L//'`
++ if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
++ found_dir="$dir"
++ found_so="$dir/lib$name.$shlibext"
++ if test -f "$dir/lib$name.la"; then
++ found_la="$dir/lib$name.la"
++ fi
++ else
++ if test -f "$dir/lib$name.$libext"; then
++ found_dir="$dir"
++ found_a="$dir/lib$name.$libext"
++ if test -f "$dir/lib$name.la"; then
++ found_la="$dir/lib$name.la"
++ fi
++ fi
++ fi
++ ;;
++ esac
++ if test "X$found_dir" != "X"; then
++ break
++ fi
++ done
++ fi
++ if test "X$found_dir" != "X"; then
++ dnl Found the library.
++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
++ if test "X$found_so" != "X"; then
++ dnl Linking with a shared library. We attempt to hardcode its
++ dnl directory into the executable's runpath, unless it's the
++ dnl standard /usr/lib.
++ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
++ dnl No hardcoding is needed.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
++ else
++ dnl Use an explicit option to hardcode DIR into the resulting
++ dnl binary.
++ dnl Potentially add DIR to ltrpathdirs.
++ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
++ haveit=
++ for x in $ltrpathdirs; do
++ if test "X$x" = "X$found_dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ ltrpathdirs="$ltrpathdirs $found_dir"
++ fi
++ dnl The hardcoding into $LIBNAME is system dependent.
++ if test "$hardcode_direct" = yes; then
++ dnl Using DIR/libNAME.so during linking hardcodes DIR into the
++ dnl resulting binary.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
++ else
++ if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
++ dnl Use an explicit option to hardcode DIR into the resulting
++ dnl binary.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
++ dnl Potentially add DIR to rpathdirs.
++ dnl The rpathdirs will be appended to $LIBNAME at the end.
++ haveit=
++ for x in $rpathdirs; do
++ if test "X$x" = "X$found_dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ rpathdirs="$rpathdirs $found_dir"
++ fi
++ else
++ dnl Rely on "-L$found_dir".
++ dnl But don't add it if it's already contained in the LDFLAGS
++ dnl or the already constructed $LIBNAME
++ haveit=
++ for x in $LDFLAGS $LIB[]NAME; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X-L$found_dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
++ fi
++ if test "$hardcode_minus_L" != no; then
++ dnl FIXME: Not sure whether we should use
++ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
++ dnl here.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
++ else
++ dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH
++ dnl here, because this doesn't fit in flags passed to the
++ dnl compiler. So give up. No hardcoding. This affects only
++ dnl very old systems.
++ dnl FIXME: Not sure whether we should use
++ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
++ dnl here.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
++ fi
++ fi
++ fi
++ fi
++ else
++ if test "X$found_a" != "X"; then
++ dnl Linking with a static library.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
++ else
++ dnl We shouldn't come here, but anyway it's good to have a
++ dnl fallback.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
++ fi
++ fi
++ dnl Assume the include files are nearby.
++ additional_includedir=
++ case "$found_dir" in
++ */lib | */lib/)
++ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
++ additional_includedir="$basedir/include"
++ ;;
++ esac
++ if test "X$additional_includedir" != "X"; then
++ dnl Potentially add $additional_includedir to $INCNAME.
++ dnl But don't add it
++ dnl 1. if it's the standard /usr/include,
++ dnl 2. if it's /usr/local/include and we are using GCC on Linux,
++ dnl 3. if it's already present in $CPPFLAGS or the already
++ dnl constructed $INCNAME,
++ dnl 4. if it doesn't exist as a directory.
++ if test "X$additional_includedir" != "X/usr/include"; then
++ haveit=
++ if test "X$additional_includedir" = "X/usr/local/include"; then
++ if test -n "$GCC"; then
++ case $host_os in
++ linux*) haveit=yes;;
++ esac
++ fi
++ fi
++ if test -z "$haveit"; then
++ for x in $CPPFLAGS $INC[]NAME; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X-I$additional_includedir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test -d "$additional_includedir"; then
++ dnl Really add $additional_includedir to $INCNAME.
++ INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
++ fi
++ fi
++ fi
++ fi
++ fi
++ dnl Look for dependencies.
++ if test -n "$found_la"; then
++ dnl Read the .la file. It defines the variables
++ dnl dlname, library_names, old_library, dependency_libs, current,
++ dnl age, revision, installed, dlopen, dlpreopen, libdir.
++ save_libdir="$libdir"
++ case "$found_la" in
++ */* | *\\*) . "$found_la" ;;
++ *) . "./$found_la" ;;
++ esac
++ libdir="$save_libdir"
++ dnl We use only dependency_libs.
++ for dep in $dependency_libs; do
++ case "$dep" in
++ -L*)
++ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
++ dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
++ dnl But don't add it
++ dnl 1. if it's the standard /usr/lib,
++ dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
++ dnl 3. if it's already present in $LDFLAGS or the already
++ dnl constructed $LIBNAME,
++ dnl 4. if it doesn't exist as a directory.
++ if test "X$additional_libdir" != "X/usr/lib"; then
++ haveit=
++ if test "X$additional_libdir" = "X/usr/local/lib"; then
++ if test -n "$GCC"; then
++ case $host_os in
++ linux*) haveit=yes;;
++ esac
++ fi
++ fi
++ if test -z "$haveit"; then
++ haveit=
++ for x in $LDFLAGS $LIB[]NAME; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X-L$additional_libdir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test -d "$additional_libdir"; then
++ dnl Really add $additional_libdir to $LIBNAME.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
++ fi
++ fi
++ haveit=
++ for x in $LDFLAGS $LTLIB[]NAME; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X-L$additional_libdir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test -d "$additional_libdir"; then
++ dnl Really add $additional_libdir to $LTLIBNAME.
++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
++ fi
++ fi
++ fi
++ fi
++ ;;
++ -R*)
++ dir=`echo "X$dep" | sed -e 's/^X-R//'`
++ if test "$enable_rpath" != no; then
++ dnl Potentially add DIR to rpathdirs.
++ dnl The rpathdirs will be appended to $LIBNAME at the end.
++ haveit=
++ for x in $rpathdirs; do
++ if test "X$x" = "X$dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ rpathdirs="$rpathdirs $dir"
++ fi
++ dnl Potentially add DIR to ltrpathdirs.
++ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
++ haveit=
++ for x in $ltrpathdirs; do
++ if test "X$x" = "X$dir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ ltrpathdirs="$ltrpathdirs $dir"
++ fi
++ fi
++ ;;
++ -l*)
++ dnl Handle this in the next round.
++ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
++ ;;
++ *.la)
++ dnl Handle this in the next round. Throw away the .la's
++ dnl directory; it is already contained in a preceding -L
++ dnl option.
++ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
++ ;;
++ *)
++ dnl Most likely an immediate library name.
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
++ ;;
++ esac
++ done
++ fi
++ else
++ dnl Didn't find the library; assume it is in the system directories
++ dnl known to the linker and runtime loader. (All the system
++ dnl directories known to the linker should also be known to the
++ dnl runtime loader, otherwise the system is severely misconfigured.)
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
++ fi
++ fi
++ fi
++ done
++ done
++ if test "X$rpathdirs" != "X"; then
++ if test -n "$hardcode_libdir_separator"; then
++ dnl Weird platform: only the last -rpath option counts, the user must
++ dnl pass all path elements in one option. We can arrange that for a
++ dnl single library, but not when more than one $LIBNAMEs are used.
++ alldirs=
++ for found_dir in $rpathdirs; do
++ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
++ done
++ dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl.
++ acl_save_libdir="$libdir"
++ libdir="$alldirs"
++ eval flag=\"$hardcode_libdir_flag_spec\"
++ libdir="$acl_save_libdir"
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
++ else
++ dnl The -rpath options are cumulative.
++ for found_dir in $rpathdirs; do
++ acl_save_libdir="$libdir"
++ libdir="$found_dir"
++ eval flag=\"$hardcode_libdir_flag_spec\"
++ libdir="$acl_save_libdir"
++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
++ done
++ fi
++ fi
++ if test "X$ltrpathdirs" != "X"; then
++ dnl When using libtool, the option that works for both libraries and
++ dnl executables is -R. The -R options are cumulative.
++ for found_dir in $ltrpathdirs; do
++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
++ done
++ fi
++])
++
++dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
++dnl unless already present in VAR.
++dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
++dnl contains two or three consecutive elements that belong together.
++AC_DEFUN([AC_LIB_APPENDTOVAR],
++[
++ for element in [$2]; do
++ haveit=
++ for x in $[$1]; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X$element"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ [$1]="${[$1]}${[$1]:+ }$element"
++ fi
++ done
++])
+diff -pruN dillo-0.8.6/m4/lib-prefix.m4 dillo-0.8.6-i18n-misc-20060709/m4/lib-prefix.m4
+--- dillo-0.8.6/m4/lib-prefix.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/lib-prefix.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,148 @@
++# lib-prefix.m4 serial 1 (gettext-0.11)
++dnl Copyright (C) 2001-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++
++dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
++dnl to access previously installed libraries. The basic assumption is that
++dnl a user will want packages to use other packages he previously installed
++dnl with the same --prefix option.
++dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
++dnl libraries, but is otherwise very convenient.
++AC_DEFUN([AC_LIB_PREFIX],
++[
++ AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
++ AC_REQUIRE([AC_PROG_CC])
++ AC_REQUIRE([AC_CANONICAL_HOST])
++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++ dnl By default, look in $includedir and $libdir.
++ use_additional=yes
++ AC_LIB_WITH_FINAL_PREFIX([
++ eval additional_includedir=\"$includedir\"
++ eval additional_libdir=\"$libdir\"
++ ])
++ AC_ARG_WITH([lib-prefix],
++[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
++ --without-lib-prefix don't search for libraries in includedir and libdir],
++[
++ if test "X$withval" = "Xno"; then
++ use_additional=no
++ else
++ if test "X$withval" = "X"; then
++ AC_LIB_WITH_FINAL_PREFIX([
++ eval additional_includedir=\"$includedir\"
++ eval additional_libdir=\"$libdir\"
++ ])
++ else
++ additional_includedir="$withval/include"
++ additional_libdir="$withval/lib"
++ fi
++ fi
++])
++ if test $use_additional = yes; then
++ dnl Potentially add $additional_includedir to $CPPFLAGS.
++ dnl But don't add it
++ dnl 1. if it's the standard /usr/include,
++ dnl 2. if it's already present in $CPPFLAGS,
++ dnl 3. if it's /usr/local/include and we are using GCC on Linux,
++ dnl 4. if it doesn't exist as a directory.
++ if test "X$additional_includedir" != "X/usr/include"; then
++ haveit=
++ for x in $CPPFLAGS; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X-I$additional_includedir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test "X$additional_includedir" = "X/usr/local/include"; then
++ if test -n "$GCC"; then
++ case $host_os in
++ linux*) haveit=yes;;
++ esac
++ fi
++ fi
++ if test -z "$haveit"; then
++ if test -d "$additional_includedir"; then
++ dnl Really add $additional_includedir to $CPPFLAGS.
++ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
++ fi
++ fi
++ fi
++ fi
++ dnl Potentially add $additional_libdir to $LDFLAGS.
++ dnl But don't add it
++ dnl 1. if it's the standard /usr/lib,
++ dnl 2. if it's already present in $LDFLAGS,
++ dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
++ dnl 4. if it doesn't exist as a directory.
++ if test "X$additional_libdir" != "X/usr/lib"; then
++ haveit=
++ for x in $LDFLAGS; do
++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++ if test "X$x" = "X-L$additional_libdir"; then
++ haveit=yes
++ break
++ fi
++ done
++ if test -z "$haveit"; then
++ if test "X$additional_libdir" = "X/usr/local/lib"; then
++ if test -n "$GCC"; then
++ case $host_os in
++ linux*) haveit=yes;;
++ esac
++ fi
++ fi
++ if test -z "$haveit"; then
++ if test -d "$additional_libdir"; then
++ dnl Really add $additional_libdir to $LDFLAGS.
++ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
++ fi
++ fi
++ fi
++ fi
++ fi
++])
++
++dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
++dnl acl_final_exec_prefix, containing the values to which $prefix and
++dnl $exec_prefix will expand at the end of the configure script.
++AC_DEFUN([AC_LIB_PREPARE_PREFIX],
++[
++ dnl Unfortunately, prefix and exec_prefix get only finally determined
++ dnl at the end of configure.
++ if test "X$prefix" = "XNONE"; then
++ acl_final_prefix="$ac_default_prefix"
++ else
++ acl_final_prefix="$prefix"
++ fi
++ if test "X$exec_prefix" = "XNONE"; then
++ acl_final_exec_prefix='${prefix}'
++ else
++ acl_final_exec_prefix="$exec_prefix"
++ fi
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
++ prefix="$acl_save_prefix"
++])
++
++dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
++dnl variables prefix and exec_prefix bound to the values they will have
++dnl at the end of the configure script.
++AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
++[
++ acl_save_prefix="$prefix"
++ prefix="$acl_final_prefix"
++ acl_save_exec_prefix="$exec_prefix"
++ exec_prefix="$acl_final_exec_prefix"
++ $1
++ exec_prefix="$acl_save_exec_prefix"
++ prefix="$acl_save_prefix"
++])
+diff -pruN dillo-0.8.6/m4/longdouble.m4 dillo-0.8.6-i18n-misc-20060709/m4/longdouble.m4
+--- dillo-0.8.6/m4/longdouble.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/longdouble.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,30 @@
++# longdouble.m4 serial 1 (gettext-0.12)
++dnl Copyright (C) 2002-2003 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++dnl Test whether the compiler supports the 'long double' type.
++dnl Prerequisite: AC_PROG_CC
++
++AC_DEFUN([gt_TYPE_LONGDOUBLE],
++[
++ AC_CACHE_CHECK([for long double], gt_cv_c_long_double,
++ [if test "$GCC" = yes; then
++ gt_cv_c_long_double=yes
++ else
++ AC_TRY_COMPILE([
++ /* The Stardent Vistra knows sizeof(long double), but does not support it. */
++ long double foo = 0.0;
++ /* On Ultrix 4.3 cc, long double is 4 and double is 8. */
++ int array [2*(sizeof(long double) >= sizeof(double)) - 1];
++ ], ,
++ gt_cv_c_long_double=yes, gt_cv_c_long_double=no)
++ fi])
++ if test $gt_cv_c_long_double = yes; then
++ AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the 'long double' type.])
++ fi
++])
+diff -pruN dillo-0.8.6/m4/longlong.m4 dillo-0.8.6-i18n-misc-20060709/m4/longlong.m4
+--- dillo-0.8.6/m4/longlong.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/longlong.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,25 @@
++# longlong.m4 serial 4
++dnl Copyright (C) 1999-2003 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Paul Eggert.
++
++# Define HAVE_LONG_LONG if 'long long' works.
++
++AC_DEFUN([jm_AC_TYPE_LONG_LONG],
++[
++ AC_CACHE_CHECK([for long long], ac_cv_type_long_long,
++ [AC_TRY_LINK([long long ll = 1LL; int i = 63;],
++ [long long llmax = (long long) -1;
++ return ll << i | ll >> i | llmax / ll | llmax % ll;],
++ ac_cv_type_long_long=yes,
++ ac_cv_type_long_long=no)])
++ if test $ac_cv_type_long_long = yes; then
++ AC_DEFINE(HAVE_LONG_LONG, 1,
++ [Define if you have the 'long long' type.])
++ fi
++])
+diff -pruN dillo-0.8.6/m4/nls.m4 dillo-0.8.6-i18n-misc-20060709/m4/nls.m4
+--- dillo-0.8.6/m4/nls.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/nls.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,49 @@
++# nls.m4 serial 1 (gettext-0.12)
++dnl Copyright (C) 1995-2003 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
++dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
++
++AC_DEFUN([AM_NLS],
++[
++ AC_MSG_CHECKING([whether NLS is requested])
++ dnl Default is enabled NLS
++ AC_ARG_ENABLE(nls,
++ [ --disable-nls do not use Native Language Support],
++ USE_NLS=$enableval, USE_NLS=yes)
++ AC_MSG_RESULT($USE_NLS)
++ AC_SUBST(USE_NLS)
++])
++
++AC_DEFUN([AM_MKINSTALLDIRS],
++[
++ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
++ dnl find the mkinstalldirs script in another subdir but $(top_srcdir).
++ dnl Try to locate it.
++ MKINSTALLDIRS=
++ if test -n "$ac_aux_dir"; then
++ case "$ac_aux_dir" in
++ /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;;
++ *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;;
++ esac
++ fi
++ if test -z "$MKINSTALLDIRS"; then
++ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
++ fi
++ AC_SUBST(MKINSTALLDIRS)
++])
+diff -pruN dillo-0.8.6/m4/po.m4 dillo-0.8.6-i18n-misc-20060709/m4/po.m4
+--- dillo-0.8.6/m4/po.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/po.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,426 @@
++# po.m4 serial 3 (gettext-0.14)
++dnl Copyright (C) 1995-2003 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
++dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
++
++dnl Checks for all prerequisites of the po subdirectory.
++AC_DEFUN([AM_PO_SUBDIRS],
++[
++ AC_REQUIRE([AC_PROG_MAKE_SET])dnl
++ AC_REQUIRE([AC_PROG_INSTALL])dnl
++ AC_REQUIRE([AM_MKINSTALLDIRS])dnl
++ AC_REQUIRE([AM_NLS])dnl
++
++ dnl Perform the following tests also if --disable-nls has been given,
++ dnl because they are needed for "make dist" to work.
++
++ dnl Search for GNU msgfmt in the PATH.
++ dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
++ dnl The second test excludes FreeBSD msgfmt.
++ AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
++ [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 &&
++ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
++ :)
++ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
++
++ dnl Search for GNU xgettext 0.12 or newer in the PATH.
++ dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
++ dnl The second test excludes FreeBSD xgettext.
++ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
++ [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
++ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
++ :)
++ dnl Remove leftover from FreeBSD xgettext call.
++ rm -f messages.po
++
++ dnl Search for GNU msgmerge 0.11 or newer in the PATH.
++ AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
++ [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :)
++
++ dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
++ dnl Test whether we really found GNU msgfmt.
++ if test "$GMSGFMT" != ":"; then
++ dnl If it is no GNU msgfmt we define it as : so that the
++ dnl Makefiles still can work.
++ if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 &&
++ (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
++ : ;
++ else
++ GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
++ AC_MSG_RESULT(
++ [found $GMSGFMT program is not GNU msgfmt; ignore it])
++ GMSGFMT=":"
++ fi
++ fi
++
++ dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
++ dnl Test whether we really found GNU xgettext.
++ if test "$XGETTEXT" != ":"; then
++ dnl If it is no GNU xgettext we define it as : so that the
++ dnl Makefiles still can work.
++ if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
++ (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
++ : ;
++ else
++ AC_MSG_RESULT(
++ [found xgettext program is not GNU xgettext; ignore it])
++ XGETTEXT=":"
++ fi
++ dnl Remove leftover from FreeBSD xgettext call.
++ rm -f messages.po
++ fi
++
++ AC_OUTPUT_COMMANDS([
++ for ac_file in $CONFIG_FILES; do
++ # Support "outfile[:infile[:infile...]]"
++ case "$ac_file" in
++ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
++ esac
++ # PO directories have a Makefile.in generated from Makefile.in.in.
++ case "$ac_file" in */Makefile.in)
++ # Adjust a relative srcdir.
++ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
++ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
++ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
++ # In autoconf-2.13 it is called $ac_given_srcdir.
++ # In autoconf-2.50 it is called $srcdir.
++ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
++ case "$ac_given_srcdir" in
++ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
++ /*) top_srcdir="$ac_given_srcdir" ;;
++ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
++ esac
++ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
++ rm -f "$ac_dir/POTFILES"
++ test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
++ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
++ POMAKEFILEDEPS="POTFILES.in"
++ # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
++ # on $ac_dir but don't depend on user-specified configuration
++ # parameters.
++ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
++ # The LINGUAS file contains the set of available languages.
++ if test -n "$OBSOLETE_ALL_LINGUAS"; then
++ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
++ fi
++ ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
++ # Hide the ALL_LINGUAS assigment from automake.
++ eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
++ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
++ else
++ # The set of available languages was given in configure.in.
++ eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
++ fi
++ # Compute POFILES
++ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
++ # Compute UPDATEPOFILES
++ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
++ # Compute DUMMYPOFILES
++ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
++ # Compute GMOFILES
++ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
++ case "$ac_given_srcdir" in
++ .) srcdirpre= ;;
++ *) srcdirpre='$(srcdir)/' ;;
++ esac
++ POFILES=
++ UPDATEPOFILES=
++ DUMMYPOFILES=
++ GMOFILES=
++ for lang in $ALL_LINGUAS; do
++ POFILES="$POFILES $srcdirpre$lang.po"
++ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
++ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
++ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
++ done
++ # CATALOGS depends on both $ac_dir and the user's LINGUAS
++ # environment variable.
++ INST_LINGUAS=
++ if test -n "$ALL_LINGUAS"; then
++ for presentlang in $ALL_LINGUAS; do
++ useit=no
++ if test "%UNSET%" != "$LINGUAS"; then
++ desiredlanguages="$LINGUAS"
++ else
++ desiredlanguages="$ALL_LINGUAS"
++ fi
++ for desiredlang in $desiredlanguages; do
++ # Use the presentlang catalog if desiredlang is
++ # a. equal to presentlang, or
++ # b. a variant of presentlang (because in this case,
++ # presentlang can be used as a fallback for messages
++ # which are not translated in the desiredlang catalog).
++ case "$desiredlang" in
++ "$presentlang"*) useit=yes;;
++ esac
++ done
++ if test $useit = yes; then
++ INST_LINGUAS="$INST_LINGUAS $presentlang"
++ fi
++ done
++ fi
++ CATALOGS=
++ if test -n "$INST_LINGUAS"; then
++ for lang in $INST_LINGUAS; do
++ CATALOGS="$CATALOGS $lang.gmo"
++ done
++ fi
++ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
++ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
++ for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
++ if test -f "$f"; then
++ case "$f" in
++ *.orig | *.bak | *~) ;;
++ *) cat "$f" >> "$ac_dir/Makefile" ;;
++ esac
++ fi
++ done
++ fi
++ ;;
++ esac
++ done],
++ [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
++ # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
++ # from automake.
++ eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
++ # Capture the value of LINGUAS because we need it to compute CATALOGS.
++ LINGUAS="${LINGUAS-%UNSET%}"
++ ])
++])
++
++dnl Postprocesses a Makefile in a directory containing PO files.
++AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
++[
++ # When this code is run, in config.status, two variables have already been
++ # set:
++ # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
++ # - LINGUAS is the value of the environment variable LINGUAS at configure
++ # time.
++
++changequote(,)dnl
++ # Adjust a relative srcdir.
++ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
++ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
++ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
++ # In autoconf-2.13 it is called $ac_given_srcdir.
++ # In autoconf-2.50 it is called $srcdir.
++ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
++ case "$ac_given_srcdir" in
++ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
++ /*) top_srcdir="$ac_given_srcdir" ;;
++ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
++ esac
++
++ # Find a way to echo strings without interpreting backslash.
++ if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
++ gt_echo='echo'
++ else
++ if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
++ gt_echo='printf %s\n'
++ else
++ echo_func () {
++ cat <<EOT
++$*
++EOT
++ }
++ gt_echo='echo_func'
++ fi
++ fi
++
++ # A sed script that extracts the value of VARIABLE from a Makefile.
++ sed_x_variable='
++# Test if the hold space is empty.
++x
++s/P/P/
++x
++ta
++# Yes it was empty. Look if we have the expected variable definition.
++/^[ ]*VARIABLE[ ]*=/{
++ # Seen the first line of the variable definition.
++ s/^[ ]*VARIABLE[ ]*=//
++ ba
++}
++bd
++:a
++# Here we are processing a line from the variable definition.
++# Remove comment, more precisely replace it with a space.
++s/#.*$/ /
++# See if the line ends in a backslash.
++tb
++:b
++s/\\$//
++# Print the line, without the trailing backslash.
++p
++tc
++# There was no trailing backslash. The end of the variable definition is
++# reached. Clear the hold space.
++s/^.*$//
++x
++bd
++:c
++# A trailing backslash means that the variable definition continues in the
++# next line. Put a nonempty string into the hold space to indicate this.
++s/^.*$/P/
++x
++:d
++'
++changequote([,])dnl
++
++ # Set POTFILES to the value of the Makefile variable POTFILES.
++ sed_x_POTFILES="`$gt_echo \"$sed_x_variable\" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`"
++ POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
++ # Compute POTFILES_DEPS as
++ # $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
++ POTFILES_DEPS=
++ for file in $POTFILES; do
++ POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
++ done
++ POMAKEFILEDEPS=""
++
++ if test -n "$OBSOLETE_ALL_LINGUAS"; then
++ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
++ fi
++ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
++ # The LINGUAS file contains the set of available languages.
++ ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
++ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
++ else
++ # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
++ sed_x_LINGUAS="`$gt_echo \"$sed_x_variable\" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`"
++ ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
++ fi
++ # Hide the ALL_LINGUAS assigment from automake.
++ eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
++ # Compute POFILES
++ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
++ # Compute UPDATEPOFILES
++ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
++ # Compute DUMMYPOFILES
++ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
++ # Compute GMOFILES
++ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
++ # Compute PROPERTIESFILES
++ # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
++ # Compute CLASSFILES
++ # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
++ # Compute QMFILES
++ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
++ # Compute MSGFILES
++ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
++ # Compute RESOURCESDLLFILES
++ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
++ case "$ac_given_srcdir" in
++ .) srcdirpre= ;;
++ *) srcdirpre='$(srcdir)/' ;;
++ esac
++ POFILES=
++ UPDATEPOFILES=
++ DUMMYPOFILES=
++ GMOFILES=
++ PROPERTIESFILES=
++ CLASSFILES=
++ QMFILES=
++ MSGFILES=
++ RESOURCESDLLFILES=
++ for lang in $ALL_LINGUAS; do
++ POFILES="$POFILES $srcdirpre$lang.po"
++ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
++ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
++ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
++ PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
++ CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
++ QMFILES="$QMFILES $srcdirpre$lang.qm"
++ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
++ MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
++ frobbedlang=`echo $lang | sed -e 's/_/-/g'`
++ RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
++ done
++ # CATALOGS depends on both $ac_dir and the user's LINGUAS
++ # environment variable.
++ INST_LINGUAS=
++ if test -n "$ALL_LINGUAS"; then
++ for presentlang in $ALL_LINGUAS; do
++ useit=no
++ if test "%UNSET%" != "$LINGUAS"; then
++ desiredlanguages="$LINGUAS"
++ else
++ desiredlanguages="$ALL_LINGUAS"
++ fi
++ for desiredlang in $desiredlanguages; do
++ # Use the presentlang catalog if desiredlang is
++ # a. equal to presentlang, or
++ # b. a variant of presentlang (because in this case,
++ # presentlang can be used as a fallback for messages
++ # which are not translated in the desiredlang catalog).
++ case "$desiredlang" in
++ "$presentlang"*) useit=yes;;
++ esac
++ done
++ if test $useit = yes; then
++ INST_LINGUAS="$INST_LINGUAS $presentlang"
++ fi
++ done
++ fi
++ CATALOGS=
++ JAVACATALOGS=
++ QTCATALOGS=
++ TCLCATALOGS=
++ CSHARPCATALOGS=
++ if test -n "$INST_LINGUAS"; then
++ for lang in $INST_LINGUAS; do
++ CATALOGS="$CATALOGS $lang.gmo"
++ JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
++ QTCATALOGS="$QTCATALOGS $lang.qm"
++ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
++ TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
++ frobbedlang=`echo $lang | sed -e 's/_/-/g'`
++ CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
++ done
++ fi
++
++ sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
++ if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
++ # Add dependencies that cannot be formulated as a simple suffix rule.
++ for lang in $ALL_LINGUAS; do
++ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
++ cat >> "$ac_file.tmp" <<EOF
++$frobbedlang.msg: $lang.po
++ @echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
++ \$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
++EOF
++ done
++ fi
++ if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
++ # Add dependencies that cannot be formulated as a simple suffix rule.
++ for lang in $ALL_LINGUAS; do
++ frobbedlang=`echo $lang | sed -e 's/_/-/g'`
++ cat >> "$ac_file.tmp" <<EOF
++$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
++ @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
++ \$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
++EOF
++ done
++ fi
++ if test -n "$POMAKEFILEDEPS"; then
++ cat >> "$ac_file.tmp" <<EOF
++Makefile: $POMAKEFILEDEPS
++EOF
++ fi
++ mv "$ac_file.tmp" "$ac_file"
++])
+diff -pruN dillo-0.8.6/m4/printf-posix.m4 dillo-0.8.6-i18n-misc-20060709/m4/printf-posix.m4
+--- dillo-0.8.6/m4/printf-posix.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/printf-posix.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,46 @@
++# printf-posix.m4 serial 2 (gettext-0.13.1)
++dnl Copyright (C) 2003 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++dnl Test whether the printf() function supports POSIX/XSI format strings with
++dnl positions.
++
++AC_DEFUN([gt_PRINTF_POSIX],
++[
++ AC_REQUIRE([AC_PROG_CC])
++ AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings],
++ gt_cv_func_printf_posix,
++ [
++ AC_TRY_RUN([
++#include <stdio.h>
++#include <string.h>
++/* The string "%2$d %1$d", with dollar characters protected from the shell's
++ dollar expansion (possibly an autoconf bug). */
++static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
++static char buf[100];
++int main ()
++{
++ sprintf (buf, format, 33, 55);
++ return (strcmp (buf, "55 33") != 0);
++}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no,
++ [
++ AC_EGREP_CPP(notposix, [
++#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
++ notposix
++#endif
++ ], gt_cv_func_printf_posix="guessing no",
++ gt_cv_func_printf_posix="guessing yes")
++ ])
++ ])
++ case $gt_cv_func_printf_posix in
++ *yes)
++ AC_DEFINE(HAVE_POSIX_PRINTF, 1,
++ [Define if your printf() function supports format strings with positions.])
++ ;;
++ esac
++])
+diff -pruN dillo-0.8.6/m4/progtest.m4 dillo-0.8.6-i18n-misc-20060709/m4/progtest.m4
+--- dillo-0.8.6/m4/progtest.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/progtest.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,59 @@
++# progtest.m4 serial 2 (gettext-0.10.40)
++dnl Copyright (C) 1996-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl Ulrich Drepper <drepper@cygnus.com>, 1996.
++
++# Search path for a program which passes the given test.
++
++dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
++dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
++AC_DEFUN([AM_PATH_PROG_WITH_TEST],
++[# Extract the first word of "$2", so it can be a program name with args.
++set dummy $2; ac_word=[$]2
++AC_MSG_CHECKING([for $ac_word])
++AC_CACHE_VAL(ac_cv_path_$1,
++[case "[$]$1" in
++ /*)
++ ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
++ ;;
++ *)
++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
++ for ac_dir in ifelse([$5], , $PATH, [$5]); do
++ test -z "$ac_dir" && ac_dir=.
++ if test -f $ac_dir/$ac_word; then
++ if [$3]; then
++ ac_cv_path_$1="$ac_dir/$ac_word"
++ break
++ fi
++ fi
++ done
++ IFS="$ac_save_ifs"
++dnl If no 4th arg is given, leave the cache variable unset,
++dnl so AC_PATH_PROGS will keep looking.
++ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
++])dnl
++ ;;
++esac])dnl
++$1="$ac_cv_path_$1"
++if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
++ AC_MSG_RESULT([$]$1)
++else
++ AC_MSG_RESULT(no)
++fi
++AC_SUBST($1)dnl
++])
+diff -pruN dillo-0.8.6/m4/signed.m4 dillo-0.8.6-i18n-misc-20060709/m4/signed.m4
+--- dillo-0.8.6/m4/signed.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/signed.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,19 @@
++# signed.m4 serial 1 (gettext-0.10.40)
++dnl Copyright (C) 2001-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([bh_C_SIGNED],
++[
++ AC_CACHE_CHECK([for signed], bh_cv_c_signed,
++ [AC_TRY_COMPILE(, [signed char x;], bh_cv_c_signed=yes, bh_cv_c_signed=no)])
++ if test $bh_cv_c_signed = no; then
++ AC_DEFINE(signed, ,
++ [Define to empty if the C compiler doesn't support this keyword.])
++ fi
++])
+diff -pruN dillo-0.8.6/m4/size_max.m4 dillo-0.8.6-i18n-misc-20060709/m4/size_max.m4
+--- dillo-0.8.6/m4/size_max.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/size_max.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,61 @@
++# size_max.m4 serial 2
++dnl Copyright (C) 2003 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([gl_SIZE_MAX],
++[
++ AC_CHECK_HEADERS(stdint.h)
++ dnl First test whether the system already has SIZE_MAX.
++ AC_MSG_CHECKING([for SIZE_MAX])
++ result=
++ AC_EGREP_CPP([Found it], [
++#include <limits.h>
++#if HAVE_STDINT_H
++#include <stdint.h>
++#endif
++#ifdef SIZE_MAX
++Found it
++#endif
++], result=yes)
++ if test -z "$result"; then
++ dnl Define it ourselves. Here we assume that the type 'size_t' is not wider
++ dnl than the type 'unsigned long'.
++ dnl The _AC_COMPUTE_INT macro works up to LONG_MAX, since it uses 'expr',
++ dnl which is guaranteed to work from LONG_MIN to LONG_MAX.
++ _AC_COMPUTE_INT([~(size_t)0 / 10], res_hi,
++ [#include <stddef.h>], result=?)
++ _AC_COMPUTE_INT([~(size_t)0 % 10], res_lo,
++ [#include <stddef.h>], result=?)
++ _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint,
++ [#include <stddef.h>], result=?)
++ if test "$fits_in_uint" = 1; then
++ dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
++ dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'.
++ AC_TRY_COMPILE([#include <stddef.h>
++ extern size_t foo;
++ extern unsigned long foo;
++ ], [], fits_in_uint=0)
++ fi
++ if test -z "$result"; then
++ if test "$fits_in_uint" = 1; then
++ result="$res_hi$res_lo"U
++ else
++ result="$res_hi$res_lo"UL
++ fi
++ else
++ dnl Shouldn't happen, but who knows...
++ result='~(size_t)0'
++ fi
++ fi
++ AC_MSG_RESULT([$result])
++ if test "$result" != yes; then
++ AC_DEFINE_UNQUOTED([SIZE_MAX], [$result],
++ [Define as the maximum value of type 'size_t', if the system doesn't define it.])
++ fi
++])
+diff -pruN dillo-0.8.6/m4/stdint_h.m4 dillo-0.8.6-i18n-misc-20060709/m4/stdint_h.m4
+--- dillo-0.8.6/m4/stdint_h.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/stdint_h.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,28 @@
++# stdint_h.m4 serial 2 (gettext-0.11.4)
++dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Paul Eggert.
++
++# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
++# doesn't clash with <sys/types.h>, and declares uintmax_t.
++
++AC_DEFUN([jm_AC_HEADER_STDINT_H],
++[
++ AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h,
++ [AC_TRY_COMPILE(
++ [#include <sys/types.h>
++#include <stdint.h>],
++ [uintmax_t i = (uintmax_t) -1;],
++ jm_ac_cv_header_stdint_h=yes,
++ jm_ac_cv_header_stdint_h=no)])
++ if test $jm_ac_cv_header_stdint_h = yes; then
++ AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1,
++[Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
++ and declares uintmax_t. ])
++ fi
++])
+diff -pruN dillo-0.8.6/m4/uintmax_t.m4 dillo-0.8.6-i18n-misc-20060709/m4/uintmax_t.m4
+--- dillo-0.8.6/m4/uintmax_t.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/uintmax_t.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,29 @@
++# uintmax_t.m4 serial 6 (gettext-0.11)
++dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Paul Eggert.
++
++AC_PREREQ(2.13)
++
++# Define uintmax_t to `unsigned long' or `unsigned long long'
++# if <inttypes.h> does not exist.
++
++AC_DEFUN([jm_AC_TYPE_UINTMAX_T],
++[
++ AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
++ AC_REQUIRE([jm_AC_HEADER_STDINT_H])
++ if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then
++ AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG])
++ test $ac_cv_type_unsigned_long_long = yes \
++ && ac_type='unsigned long long' \
++ || ac_type='unsigned long'
++ AC_DEFINE_UNQUOTED(uintmax_t, $ac_type,
++ [Define to unsigned long or unsigned long long
++ if <inttypes.h> and <stdint.h> don't define.])
++ fi
++])
+diff -pruN dillo-0.8.6/m4/ulonglong.m4 dillo-0.8.6-i18n-misc-20060709/m4/ulonglong.m4
+--- dillo-0.8.6/m4/ulonglong.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/ulonglong.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,25 @@
++# ulonglong.m4 serial 3
++dnl Copyright (C) 1999-2003 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Paul Eggert.
++
++# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works.
++
++AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG],
++[
++ AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long,
++ [AC_TRY_LINK([unsigned long long ull = 1ULL; int i = 63;],
++ [unsigned long long ullmax = (unsigned long long) -1;
++ return ull << i | ull >> i | ullmax / ull | ullmax % ull;],
++ ac_cv_type_unsigned_long_long=yes,
++ ac_cv_type_unsigned_long_long=no)])
++ if test $ac_cv_type_unsigned_long_long = yes; then
++ AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1,
++ [Define if you have the 'unsigned long long' type.])
++ fi
++])
+diff -pruN dillo-0.8.6/m4/wchar_t.m4 dillo-0.8.6-i18n-misc-20060709/m4/wchar_t.m4
+--- dillo-0.8.6/m4/wchar_t.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/wchar_t.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,22 @@
++# wchar_t.m4 serial 1 (gettext-0.12)
++dnl Copyright (C) 2002-2003 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++dnl Test whether <stddef.h> has the 'wchar_t' type.
++dnl Prerequisite: AC_PROG_CC
++
++AC_DEFUN([gt_TYPE_WCHAR_T],
++[
++ AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t,
++ [AC_TRY_COMPILE([#include <stddef.h>
++ wchar_t foo = (wchar_t)'\0';], ,
++ gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)])
++ if test $gt_cv_c_wchar_t = yes; then
++ AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.])
++ fi
++])
+diff -pruN dillo-0.8.6/m4/wint_t.m4 dillo-0.8.6-i18n-misc-20060709/m4/wint_t.m4
+--- dillo-0.8.6/m4/wint_t.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/wint_t.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,22 @@
++# wint_t.m4 serial 1 (gettext-0.12)
++dnl Copyright (C) 2003 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++dnl From Bruno Haible.
++dnl Test whether <wchar.h> has the 'wint_t' type.
++dnl Prerequisite: AC_PROG_CC
++
++AC_DEFUN([gt_TYPE_WINT_T],
++[
++ AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t,
++ [AC_TRY_COMPILE([#include <wchar.h>
++ wint_t foo = (wchar_t)'\0';], ,
++ gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)])
++ if test $gt_cv_c_wint_t = yes; then
++ AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.])
++ fi
++])
+diff -pruN dillo-0.8.6/m4/xsize.m4 dillo-0.8.6-i18n-misc-20060709/m4/xsize.m4
+--- dillo-0.8.6/m4/xsize.m4 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/m4/xsize.m4 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,14 @@
++# xsize.m4 serial 2
++dnl Copyright (C) 2003 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++AC_DEFUN([gl_XSIZE],
++[
++ dnl Prerequisites of lib/xsize.h.
++ AC_REQUIRE([gl_SIZE_MAX])
++ AC_CHECK_HEADERS(stdint.h)
++])
+diff -pruN dillo-0.8.6/missing dillo-0.8.6-i18n-misc-20060709/missing
+--- dillo-0.8.6/missing 2005-03-22 16:17:05.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/missing 2006-05-16 01:21:07.000000000 +0900
+@@ -1,9 +1,9 @@
+ #! /bin/sh
+ # Common stub for a few missing GNU programs while installing.
+
+-scriptversion=2005-02-08.22
++scriptversion=2003-09-02.23
+
+-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
++# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003
+ # Free Software Foundation, Inc.
+ # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+@@ -60,6 +60,11 @@ case "$1" in
+ msg="probably too old"
+ fi
+ ;;
++esac
++
++# If it does not exist, or fails to run (possibly an outdated version),
++# try to emulate it.
++case "$1" in
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+@@ -87,12 +92,10 @@ Supported PROGRAM values:
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+
+ Send bug reports to <bug-automake@gnu.org>."
+- exit $?
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing $scriptversion (GNU Automake)"
+- exit $?
+ ;;
+
+ -*)
+@@ -101,42 +104,12 @@ Send bug reports to <bug-automake@gnu.or
+ exit 1
+ ;;
+
+-esac
+-
+-# Now exit if we have it, but it failed. Also exit now if we
+-# don't have it and --version was passed (most likely to detect
+-# the program).
+-case "$1" in
+- lex|yacc)
+- # Not GNU programs, they don't have --version.
+- ;;
+-
+- tar)
+- if test -n "$run"; then
+- echo 1>&2 "ERROR: \`tar' requires --run"
+- exit 1
+- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+- exit 1
+- fi
+- ;;
+-
+- *)
++ aclocal*)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+- # Could not run --version or --help. This is probably someone
+- # running `$TOOL --version' or `$TOOL --help' to check whether
+- # $TOOL exists and not knowing $TOOL uses missing.
+- exit 1
+ fi
+- ;;
+-esac
+
+-# If it does not exist, or fails to run (possibly an outdated version),
+-# try to emulate it.
+-case "$1" in
+- aclocal*)
+ echo 1>&2 "\
+ WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want
+@@ -146,6 +119,11 @@ WARNING: \`$1' is $msg. You should only
+ ;;
+
+ autoconf)
++ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
++ # We have it, but it failed.
++ exit 1
++ fi
++
+ echo 1>&2 "\
+ WARNING: \`$1' is $msg. You should only need it if
+ you modified \`${configure_ac}'. You might want to install the
+@@ -155,6 +133,11 @@ WARNING: \`$1' is $msg. You should only
+ ;;
+
+ autoheader)
++ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
++ # We have it, but it failed.
++ exit 1
++ fi
++
+ echo 1>&2 "\
+ WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acconfig.h' or \`${configure_ac}'. You might want
+@@ -174,6 +157,11 @@ WARNING: \`$1' is $msg. You should only
+ ;;
+
+ automake*)
++ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
++ # We have it, but it failed.
++ exit 1
++ fi
++
+ echo 1>&2 "\
+ WARNING: \`$1' is $msg. You should only need it if
+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+@@ -185,11 +173,16 @@ WARNING: \`$1' is $msg. You should only
+ ;;
+
+ autom4te)
++ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
++ # We have it, but it failed.
++ exit 1
++ fi
++
+ echo 1>&2 "\
+ WARNING: \`$1' is needed, but is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them.
+- You can get \`$1' as part of \`Autoconf' from any GNU
++ You can get \`$1Help2man' as part of \`Autoconf' from any GNU
+ archive site."
+
+ file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
+@@ -261,6 +254,11 @@ WARNING: \`$1' is $msg. You should only
+ ;;
+
+ help2man)
++ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
++ # We have it, but it failed.
++ exit 1
++ fi
++
+ echo 1>&2 "\
+ WARNING: \`$1' is $msg. You should only need it if
+ you modified a dependency of a manual page. You may need the
+@@ -281,6 +279,11 @@ WARNING: \`$1' is $msg. You should only
+ ;;
+
+ makeinfo)
++ if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
++ # We have makeinfo, but it failed.
++ exit 1
++ fi
++
+ echo 1>&2 "\
+ WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.texi' or \`.texinfo' file, or any other file
+@@ -288,20 +291,20 @@ WARNING: \`$1' is $msg. You should only
+ call might also be the consequence of using a buggy \`make' (AIX,
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+- # The file to touch is that specified with -o ...
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+ if test -z "$file"; then
+- # ... or it is the one specified with @setfilename ...
+- infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+- file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
+- # ... or it is derived from the source name (dir/f.texi becomes f.info)
+- test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
++ file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
++ file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+ fi
+ touch $file
+ ;;
+
+ tar)
+ shift
++ if test -n "$run"; then
++ echo 1>&2 "ERROR: \`tar' requires --run"
++ exit 1
++ fi
+
+ # We have already tried tar in the generic part.
+ # Look for gnutar/gtar before invocation to avoid ugly error
+@@ -340,7 +343,7 @@ WARNING: I can't seem to be able to run
+ WARNING: \`$1' is needed, and is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them. Check the \`README' file,
+- it often tells you about the needed prerequisites for installing
++ it often tells you about the needed prerequirements for installing
+ this package. You may also peek at any GNU archive site, in case
+ some other package would contain this missing \`$1' program."
+ exit 1
+diff -pruN dillo-0.8.6/mkinstalldirs dillo-0.8.6-i18n-misc-20060709/mkinstalldirs
+--- dillo-0.8.6/mkinstalldirs 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/mkinstalldirs 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,40 @@
++#! /bin/sh
++# mkinstalldirs --- make directory hierarchy
++# Author: Noah Friedman <friedman@prep.ai.mit.edu>
++# Created: 1993-05-16
++# Public domain
++
++# $Id: mkinstalldirs,v 1.13 1999/01/05 03:18:55 bje Exp $
++
++errstatus=0
++
++for file
++do
++ set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
++ shift
++
++ pathcomp=
++ for d
++ do
++ pathcomp="$pathcomp$d"
++ case "$pathcomp" in
++ -* ) pathcomp=./$pathcomp ;;
++ esac
++
++ if test ! -d "$pathcomp"; then
++ echo "mkdir $pathcomp"
++
++ mkdir "$pathcomp" || lasterr=$?
++
++ if test ! -d "$pathcomp"; then
++ errstatus=$lasterr
++ fi
++ fi
++
++ pathcomp="$pathcomp/"
++ done
++done
++
++exit $errstatus
++
++# mkinstalldirs ends here
+diff -pruN dillo-0.8.6/po/ChangeLog dillo-0.8.6-i18n-misc-20060709/po/ChangeLog
+--- dillo-0.8.6/po/ChangeLog 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/po/ChangeLog 2006-05-16 01:21:07.000000000 +0900
+@@ -0,0 +1,16 @@
++2004-11-23 gettextize <bug-gnu-gettext@gnu.org>
++
++ * Makefile.in.in: Upgrade to gettext-0.11.4.
++ * Rules-quot: Upgrade to gettext-0.11.4.
++
++2003-10-01 gettextize <bug-gnu-gettext@gnu.org>
++
++ * Makefile.in.in: New file, from gettext-0.11.4.
++ * Rules-quot: New file, from gettext-0.11.4.
++ * boldquot.sed: New file, from gettext-0.11.4.
++ * en@boldquot.header: New file, from gettext-0.11.4.
++ * en@quot.header: New file, from gettext-0.11.4.
++ * insert-header.sin: New file, from gettext-0.11.4.
++ * quot.sed: New file, from gettext-0.11.4.
++ * remove-potcdate.sin: New file, from gettext-0.11.4.
++
+diff -pruN dillo-0.8.6/po/Makefile.in.in dillo-0.8.6-i18n-misc-20060709/po/Makefile.in.in
+--- dillo-0.8.6/po/Makefile.in.in 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/po/Makefile.in.in 2006-05-16 01:21:06.000000000 +0900
+@@ -0,0 +1,318 @@
++# Makefile for PO directory in any package using GNU gettext.
++# Copyright (C) 1995-1997, 2000-2002 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
++#
++# This file can be copied and used freely without restrictions. It can
++# be used in projects which are not available under the GNU General Public
++# License but which still want to provide support for the GNU gettext
++# functionality.
++# Please note that the actual code of GNU gettext is covered by the GNU
++# General Public License and is *not* in the public domain.
++
++PACKAGE = @PACKAGE@
++VERSION = @VERSION@
++
++SHELL = /bin/sh
++@SET_MAKE@
++
++srcdir = @srcdir@
++top_srcdir = @top_srcdir@
++VPATH = @srcdir@
++
++prefix = @prefix@
++exec_prefix = @exec_prefix@
++datadir = @datadir@
++localedir = $(datadir)/locale
++gettextsrcdir = $(datadir)/gettext/po
++
++INSTALL = @INSTALL@
++INSTALL_DATA = @INSTALL_DATA@
++MKINSTALLDIRS = @MKINSTALLDIRS@
++mkinstalldirs = $(SHELL) $(MKINSTALLDIRS)
++#mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac`
++
++GMSGFMT = @GMSGFMT@
++MSGFMT = @MSGFMT@
++XGETTEXT = @XGETTEXT@
++MSGMERGE = msgmerge
++MSGMERGE_UPDATE = @MSGMERGE@ --update
++MSGINIT = msginit
++MSGCONV = msgconv
++MSGFILTER = msgfilter
++
++POFILES = @POFILES@
++GMOFILES = @GMOFILES@
++UPDATEPOFILES = @UPDATEPOFILES@
++DUMMYPOFILES = @DUMMYPOFILES@
++DISTFILES.common = Makefile.in.in Makevars remove-potcdate.sin \
++$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
++DISTFILES = $(DISTFILES.common) POTFILES.in $(DOMAIN).pot \
++$(POFILES) $(GMOFILES) \
++$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
++
++POTFILES = \
++
++CATALOGS = @CATALOGS@
++
++# Makevars gets inserted here. (Don't remove this line!)
++
++.SUFFIXES:
++.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-update
++
++.po.mo:
++ @echo "$(MSGFMT) -c -o $@ $<"; \
++ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
++
++.po.gmo:
++ @lang=`echo $* | sed -e 's,.*/,,'`; \
++ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
++ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \
++ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
++
++.sin.sed:
++ sed -e '/^#/d' $< > t-$@
++ mv t-$@ $@
++
++
++all: all-@USE_NLS@
++
++all-yes: $(CATALOGS)
++all-no:
++
++# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
++# otherwise packages like GCC can not be built if only parts of the source
++# have been downloaded.
++
++$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
++ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
++ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
++ --files-from=$(srcdir)/POTFILES.in \
++ --copyright-holder='$(COPYRIGHT_HOLDER)'
++ test ! -f $(DOMAIN).po || { \
++ if test -f $(srcdir)/$(DOMAIN).pot; then \
++ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
++ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
++ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
++ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
++ else \
++ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
++ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
++ fi; \
++ else \
++ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
++ fi; \
++ }
++
++$(srcdir)/$(DOMAIN).pot:
++ $(MAKE) $(DOMAIN).pot-update
++
++$(POFILES): $(srcdir)/$(DOMAIN).pot
++ @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
++ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
++ echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
++ cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot
++
++
++install: install-exec install-data
++install-exec:
++install-data: install-data-@USE_NLS@
++ if test "$(PACKAGE)" = "gettext"; then \
++ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
++ for file in $(DISTFILES.common); do \
++ $(INSTALL_DATA) $(srcdir)/$$file \
++ $(DESTDIR)$(gettextsrcdir)/$$file; \
++ done; \
++ else \
++ : ; \
++ fi
++install-data-no: all
++install-data-yes: all
++ $(mkinstalldirs) $(DESTDIR)$(datadir)
++ @catalogs='$(CATALOGS)'; \
++ for cat in $$catalogs; do \
++ cat=`basename $$cat`; \
++ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
++ dir=$(localedir)/$$lang/LC_MESSAGES; \
++ $(mkinstalldirs) $(DESTDIR)$$dir; \
++ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
++ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
++ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
++ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
++ if test -n "$$lc"; then \
++ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
++ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
++ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
++ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
++ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
++ for file in *; do \
++ if test -f $$file; then \
++ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
++ fi; \
++ done); \
++ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
++ else \
++ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
++ :; \
++ else \
++ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
++ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
++ fi; \
++ fi; \
++ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
++ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
++ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
++ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
++ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
++ fi; \
++ done; \
++ done
++
++install-strip: install
++
++installdirs: installdirs-exec installdirs-data
++installdirs-exec:
++installdirs-data: installdirs-data-@USE_NLS@
++ if test "$(PACKAGE)" = "gettext"; then \
++ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
++ else \
++ : ; \
++ fi
++installdirs-data-no:
++installdirs-data-yes:
++ $(mkinstalldirs) $(DESTDIR)$(datadir)
++ @catalogs='$(CATALOGS)'; \
++ for cat in $$catalogs; do \
++ cat=`basename $$cat`; \
++ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
++ dir=$(localedir)/$$lang/LC_MESSAGES; \
++ $(mkinstalldirs) $(DESTDIR)$$dir; \
++ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
++ if test -n "$$lc"; then \
++ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
++ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
++ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
++ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
++ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
++ for file in *; do \
++ if test -f $$file; then \
++ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
++ fi; \
++ done); \
++ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
++ else \
++ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
++ :; \
++ else \
++ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
++ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
++ fi; \
++ fi; \
++ fi; \
++ done; \
++ done
++
++# Define this as empty until I found a useful application.
++installcheck:
++
++uninstall: uninstall-exec uninstall-data
++uninstall-exec:
++uninstall-data: uninstall-data-@USE_NLS@
++ if test "$(PACKAGE)" = "gettext"; then \
++ for file in $(DISTFILES.common); do \
++ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
++ done; \
++ else \
++ : ; \
++ fi
++uninstall-data-no:
++uninstall-data-yes:
++ catalogs='$(CATALOGS)'; \
++ for cat in $$catalogs; do \
++ cat=`basename $$cat`; \
++ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
++ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
++ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
++ done; \
++ done
++
++check: all
++
++dvi info tags TAGS ID:
++
++mostlyclean:
++ rm -f remove-potcdate.sed
++ rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
++ rm -fr *.o
++
++clean: mostlyclean
++
++distclean: clean
++ rm -f Makefile Makefile.in POTFILES *.mo
++
++maintainer-clean: distclean
++ @echo "This command is intended for maintainers to use;"
++ @echo "it deletes files that may require special tools to rebuild."
++ rm -f $(GMOFILES)
++
++distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
++dist distdir:
++ $(MAKE) update-po
++ @$(MAKE) dist2
++# This is a separate target because 'update-po' must be executed before.
++dist2: $(DISTFILES)
++ dists="$(DISTFILES)"; \
++ if test -f $(srcdir)/ChangeLog; then dists="$$dists ChangeLog"; fi; \
++ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
++ for file in $$dists; do \
++ if test -f $$file; then \
++ cp -p $$file $(distdir); \
++ else \
++ cp -p $(srcdir)/$$file $(distdir); \
++ fi; \
++ done
++
++update-po: Makefile
++ $(MAKE) $(DOMAIN).pot-update
++ $(MAKE) $(UPDATEPOFILES)
++ $(MAKE) update-gmo
++
++# General rule for updating PO files.
++
++.nop.po-update:
++ @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
++ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \
++ tmpdir=`pwd`; \
++ echo "$$lang:"; \
++ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
++ echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
++ cd $(srcdir); \
++ if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \
++ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
++ rm -f $$tmpdir/$$lang.new.po; \
++ else \
++ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
++ :; \
++ else \
++ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
++ exit 1; \
++ fi; \
++ fi; \
++ else \
++ echo "msgmerge for $$lang.po failed!" 1>&2; \
++ rm -f $$tmpdir/$$lang.new.po; \
++ fi
++
++$(DUMMYPOFILES):
++
++update-gmo: Makefile $(GMOFILES)
++ @:
++
++Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in
++ cd $(top_builddir) \
++ && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
++ $(SHELL) ./config.status
++
++force:
++
++# 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 -pruN dillo-0.8.6/po/Makevars dillo-0.8.6-i18n-misc-20060709/po/Makevars
+--- dillo-0.8.6/po/Makevars 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/po/Makevars 2006-05-16 01:21:06.000000000 +0900
+@@ -0,0 +1,41 @@
++# Makefile variables for PO directory in any package using GNU gettext.
++
++# Usually the message domain is the same as the package name.
++DOMAIN = $(PACKAGE)
++
++# These two variables depend on the location of this directory.
++subdir = po
++top_builddir = ..
++
++# These options get passed to xgettext.
++XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
++
++# This is the copyright holder that gets inserted into the header of the
++# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
++# package. (Note that the msgstr strings, extracted from the package's
++# sources, belong to the copyright holder of the package.) Translators are
++# expected to transfer the copyright for their translations to this person
++# or entity, or to disclaim their copyright. The empty string stands for
++# the public domain; in this case the translators are expected to disclaim
++# their copyright.
++COPYRIGHT_HOLDER = Free Software Foundation, Inc.
++
++# This is the email address or URL to which the translators shall report
++# bugs in the untranslated strings:
++# - Strings which are not entire sentences, see the maintainer guidelines
++# in the GNU gettext documentation, section 'Preparing Strings'.
++# - Strings which use unclear terms or require additional context to be
++# understood.
++# - Strings which make invalid assumptions about notation of date, time or
++# money.
++# - Pluralisation problems.
++# - Incorrect English spelling.
++# - Incorrect formatting.
++# It can be your email address, or a mailing list address where translators
++# can write to without being subscribed, or the URL of a web page through
++# which the translators can contact you.
++MSGID_BUGS_ADDRESS = http://teki.jpn.ph/
++
++# This is the list of locale categories, beyond LC_MESSAGES, for which the
++# message catalogs shall be used. It is usually empty.
++EXTRA_LOCALE_CATEGORIES =
+diff -pruN dillo-0.8.6/po/POTFILES.in dillo-0.8.6-i18n-misc-20060709/po/POTFILES.in
+--- dillo-0.8.6/po/POTFILES.in 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/po/POTFILES.in 2006-05-16 01:25:31.000000000 +0900
+@@ -0,0 +1,176 @@
++src/msg.h
++src/acconfig.h
++src/auth.c
++src/auth.h
++src/bitvec.c
++src/bitvec.h
++src/bookmark.c
++src/bookmark.h
++src/browser.h
++src/cache.c
++src/cache.h
++src/capi.c
++src/capi.h
++src/chain.c
++src/chain.h
++src/colors.c
++src/colors.h
++src/commands.c
++src/commands.h
++src/cookies.c
++src/cookies.h
++src/debug.h
++src/dicache.c
++src/dicache.h
++src/dillo.c
++src/dillo.h
++src/dns.c
++src/dns.h
++src/doc.c
++src/doc.h
++src/dw.c
++src/dw.h
++src/dw_aligned_page.c
++src/dw_aligned_page.h
++src/dw_bullet.c
++src/dw_bullet.h
++src/dw_button.c
++src/dw_button.h
++src/dw_container.c
++src/dw_container.h
++src/dw_embed_gtk.c
++src/dw_embed_gtk.h
++src/dw_ext_iterator.c
++src/dw_ext_iterator.h
++src/dw_gtk_scrolled_frame.c
++src/dw_gtk_scrolled_frame.h
++src/dw_gtk_scrolled_window.c
++src/dw_gtk_scrolled_window.h
++src/dw_gtk_statuslabel.c
++src/dw_gtk_statuslabel.h
++src/dw_gtk_viewport.c
++src/dw_gtk_viewport.h
++src/dw_hruler.c
++src/dw_hruler.h
++src/dw_image.c
++src/dw_image.h
++src/dw_list_item.c
++src/dw_list_item.h
++src/dw_marshal.c
++src/dw_marshal.h
++src/dw_page.c
++src/dw_page.h
++src/dw_style.c
++src/dw_style.h
++src/dw_table.c
++src/dw_table.h
++src/dw_table_cell.c
++src/dw_table_cell.h
++src/dw_tooltip.c
++src/dw_tooltip.h
++src/dw_widget.c
++src/dw_widget.h
++src/findtext.c
++src/findtext.h
++src/selection.c
++src/selection.h
++src/web.c
++src/web.h
++src/progressbar.c
++src/progressbar.h
++src/gtk_ext_button.c
++src/gtk_ext_button.h
++src/gtk_ext_menu.c
++src/gtk_ext_menu.h
++src/gtk_ext_menu_item.c
++src/gtk_ext_menu_item.h
++src/gtk_menu_title.c
++src/gtk_menu_title.h
++src/gif.c
++src/jpeg.c
++src/png.c
++src/html.c
++src/html.h
++src/image.c
++src/image.h
++src/misc.c
++src/misc.h
++src/interface.h
++src/interface.c
++src/history.c
++src/history.h
++src/nav.c
++src/nav.h
++src/plain.c
++src/menu.c
++src/menu.h
++src/prefs.c
++src/prefs.h
++src/klist.c
++src/klist.h
++src/strbuf.c
++src/strbuf.h
++src/url.c
++src/url.h
++src/list.h
++src/binaryconst.h
++src/pixmaps.h
++src/dpiapi.c
++src/dpiapi.h
++src/i18n.c
++src/i18n.h
++src/i18n_gtk.c
++src/i18n_gtk.h
++src/gtkframeset.c
++src/gtkframeset.h
++src/intl.h
++src/tab.c
++src/tab.h
++src/IO/https.c
++src/IO/DBIO.h
++src/IO/DBIO.c
++src/IO/mime.c
++src/IO/mime.h
++src/IO/about.c
++src/IO/Url.c
++src/IO/Url.h
++src/IO/proto.c
++src/IO/http.c
++src/IO/dpi.c
++src/IO/IO.c
++src/IO/IO.h
++src/adblock.c
++src/adblock.h
++dpid/dpi.h
++dpid/dpi_service.h
++dpid/dpi_socket_dir.h
++dpid/dpid.h
++dpid/dpid_common.h
++dpid/misc_new.h
++dpid/dpi.c
++dpid/dpi_service.c
++dpid/dpi_socket_dir.c
++dpid/dpid.c
++dpid/dpid_common.c
++dpid/main.c
++dpid/misc_new.c
++dpi/bookmarks.c
++dpi/dpiutil.c
++dpi/dpiutil.h
++dpi/downloads.cc
++dpi/file.c
++dpi/ftp.c
++dpi/hello.c
++dpi/https.c
++dpi/cookies.c
++dpi/datauri.c
++dpi/downloads-old.c
++config/dillocfg.c
++config/dillocfg.h
++config/dillocfg_option.c
++config/dillocfg_option.h
++config/dillocfg_token.h
++config/dillocfg_token.c
++config.h
++dpip/dpip.h
++dpip/dpip.c
+diff -pruN dillo-0.8.6/po/Rules-quot dillo-0.8.6-i18n-misc-20060709/po/Rules-quot
+--- dillo-0.8.6/po/Rules-quot 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/po/Rules-quot 2006-05-16 01:21:06.000000000 +0900
+@@ -0,0 +1,42 @@
++# Special Makefile rules for English message catalogs with quotation marks.
++
++DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
++
++.SUFFIXES: .insert-header .po-update-en
++
++en@quot.po-update: en@quot.po-update-en
++en@boldquot.po-update: en@boldquot.po-update-en
++
++.insert-header.po-update-en:
++ @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
++ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
++ tmpdir=`pwd`; \
++ echo "$$lang:"; \
++ ll=`echo $$lang | sed -e 's/@.*//'`; \
++ LC_ALL=C; export LC_ALL; \
++ cd $(srcdir); \
++ if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
++ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
++ rm -f $$tmpdir/$$lang.new.po; \
++ else \
++ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
++ :; \
++ else \
++ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
++ exit 1; \
++ fi; \
++ fi; \
++ else \
++ echo "creation of $$lang.po failed!" 1>&2; \
++ rm -f $$tmpdir/$$lang.new.po; \
++ fi
++
++en@quot.insert-header: insert-header.sin
++ sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
++
++en@boldquot.insert-header: insert-header.sin
++ sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
++
++mostlyclean: mostlyclean-quot
++mostlyclean-quot:
++ rm -f *.insert-header
+diff -pruN dillo-0.8.6/po/boldquot.sed dillo-0.8.6-i18n-misc-20060709/po/boldquot.sed
+--- dillo-0.8.6/po/boldquot.sed 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/po/boldquot.sed 2006-05-16 01:21:06.000000000 +0900
+@@ -0,0 +1,10 @@
++s/"\([^"]*\)"/“\1â€/g
++s/`\([^`']*\)'/‘\1’/g
++s/ '\([^`']*\)' / ‘\1’ /g
++s/ '\([^`']*\)'$/ ‘\1’/g
++s/^'\([^`']*\)' /‘\1’ /g
++s/“â€/""/g
++s/“/“/g
++s/â€/â€/g
++s/‘/‘/g
++s/’/’/g
+diff -pruN dillo-0.8.6/po/dillo.pot dillo-0.8.6-i18n-misc-20060709/po/dillo.pot
+--- dillo-0.8.6/po/dillo.pot 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/po/dillo.pot 2006-07-09 00:49:42.000000000 +0900
+@@ -0,0 +1,1908 @@
++# SOME DESCRIPTIVE TITLE.
++# Copyright (C) YEAR Free Software Foundation, Inc.
++# This file is distributed under the same license as the PACKAGE package.
++# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
++#
++#, fuzzy
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2006-07-09 00:49+0900\n"
++"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
++"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
++"Language-Team: LANGUAGE <LL@li.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=CHARSET\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#: src/msg.h:27
++msgid "HTTP warning: "
++msgstr ""
++
++#: src/auth.c:87
++msgid "Browser Url has changed\n"
++msgstr ""
++
++#: src/cache.c:253
++msgid "WARNING: Cache_entry_add, leaking an entry.\n"
++msgstr ""
++
++#: src/cache.c:316
++msgid "## Aborting CCCQuery\n"
++msgstr ""
++
++#: src/cache.c:319
++msgid "## Aborting CCCAnswer\n"
++msgstr ""
++
++#: src/cache.c:322
++msgid "## Aborting raw2\n"
++msgstr ""
++
++#: src/cache.c:365
++msgid "## No more clients for this entry\n"
++msgstr ""
++
++#: src/cache.c:369
++msgid "Cache_prepare_reload: ERROR, entry still has clients\n"
++msgstr ""
++
++#: src/cache.c:398
++#, c-format
++msgid "Reloading >%s< because it shouldn't be cached\n"
++msgstr ""
++
++#: src/cache.c:418
++msgid "ERROR: unsupported protocol"
++msgstr ""
++
++#: src/cache.c:488
++#, c-format
++msgid "Redirect loop for URL: >%s<\n"
++msgstr ""
++
++#: src/cache.c:590
++#, c-format
++msgid "Bad clocks, ignore expire on >%s<\n"
++msgstr ""
++
++#: src/cache.c:594
++#, c-format
++msgid "Forcing min expire %d on >%s< instead %ld\n"
++msgstr ""
++
++#: src/cache.c:678
++msgid "'Cache-Control: max-age=' without 'Date: ' header"
++msgstr ""
++
++#: src/cache.c:722
++msgid "Server didn't send Content-Type in header.\n"
++msgstr ""
++
++#: src/cache.c:743
++#, c-format
++msgid "Forcing default expire to query url >%s<\n"
++msgstr ""
++
++#: src/cache.c:831
++#, c-format
++msgid "Cache_decode_data: got all data -- decodinging %s\n"
++msgstr ""
++
++#: src/cache.c:840
++msgid "Cache_decode_data: not gzip data!\n"
++msgstr ""
++
++#: src/cache.c:846
++msgid "Cache_decode_data: invalid gzip data!\n"
++msgstr ""
++
++#: src/cache.c:898
++msgid "not x-gzip\n"
++msgstr ""
++
++#: src/cache.c:931
++#, c-format
++msgid ""
++"Content-Length does NOT match message body,\n"
++" at: %s\n"
++msgstr ""
++
++#: src/cache.c:950
++msgid "Cache_process_io Op = IOAbort; not implemented yet\n"
++msgstr ""
++
++#: src/cache.c:1004
++#, c-format
++msgid "ERROR: redirect loop for: %s"
++msgstr ""
++
++#: src/cache.c:1015
++#, c-format
++msgid ""
++">>>Redirect from: %s\n"
++" to %s\n"
++msgstr ""
++
++#: src/cache.c:1035
++msgid ">>>Image redirection without entity-content<<<\n"
++msgstr ""
++
++#: src/cache.c:1037
++msgid ">>>Image redirection with entity-content<<<\n"
++msgstr ""
++
++#: src/cache.c:1103
++msgid "FATAL!:*** >>>> Cache_process_queue Caught busy!!!\n"
++msgstr ""
++
++#: src/cache.c:1111
++#, c-format
++msgid "Content-Type '%s' doesn't match the real data.\n"
++msgstr ""
++
++#: src/cache.c:1140
++#, c-format
++msgid "HTTP warning: Content-Type '%s' doesn't match the real data."
++msgstr ""
++
++#: src/cache.c:1177
++#, c-format
++msgid "Unhandled MIME type: <%s>\n"
++msgstr ""
++
++#: src/cache.c:1202
++msgid "Client Callback is NULL"
++msgstr ""
++
++#: src/cache.c:1303
++msgid "WARNING: Cache_stop_client, inexistent client\n"
++msgstr ""
++
++#: src/cache.c:1445 src/capi.c:428 src/capi.c:481 src/capi.c:536
++#: src/capi.c:570 src/IO/dpi.c:720 src/IO/dpi.c:760
++msgid " Not implemented\n"
++msgstr ""
++
++#: src/capi.c:229
++msgid "Capi_verify_dpi_url_request: Permission Denied!\n"
++msgstr ""
++
++#: src/capi.c:324
++#, c-format
++msgid " reload=%d URL_E2EReload=%d\n"
++msgstr ""
++
++#: src/capi.c:389
++msgid " ERROR: [a_Capi_dpi_send_cmd] No open connection found\n"
++msgstr ""
++
++#: src/capi.c:457
++msgid "ERROR: can't start dpid daemon!"
++msgstr ""
++
++#: src/capi.c:492
++msgid " ** Capi 2F catched an invalid 'web' structure\n"
++msgstr ""
++
++#: src/capi.c:552
++msgid " Error with pipe\n"
++msgstr ""
++
++#: src/commands.c:166
++msgid "View Source"
++msgstr ""
++
++#: src/commands.c:183
++msgid "Detected HTML errors"
++msgstr ""
++
++#: src/commands.c:265
++msgid "Stopped"
++msgstr ""
++
++#: src/dillo.c:109
++msgid ""
++" -x, --xid XID Open first Dillo window in an existing\n"
++" GtkSocket which window ID is XID (decimal)."
++msgstr ""
++
++#: src/dillo.c:112
++msgid " -v, --version Display version info and exit."
++msgstr ""
++
++#: src/dillo.c:114
++msgid " -h, --help Display this help text and exit."
++msgstr ""
++
++#: src/dillo.c:116
++msgid ""
++" -f, --fullwindow Start in full window mode: hide address bar,\n"
++" navigation buttons, menu, and status bar."
++msgstr ""
++
++#: src/dillo.c:119
++msgid " -l, --local Don't follow links for this URL(s)."
++msgstr ""
++
++#: src/dillo.c:121
++msgid ""
++" -g, -geometry GEO Set initial window position where GEO is\n"
++" <width>x<height>{+-}<x>{+-}<y>"
++msgstr ""
++
++#: src/dillo.c:125
++msgid ""
++" -D, --debug-rendering Draw additionaly several lines in a web page,\n"
++" representing its structure. For debugging. "
++msgstr ""
++
++#: src/dillo.c:129
++msgid " -R, --rcfile FILE Use alternative rcfile."
++msgstr ""
++
++#: src/dillo.c:266
++#, c-format
++msgid ""
++"Error: the XID must be an unsigned decimal numerical value.\n"
++"The offending value was: %s\n"
++msgstr ""
++
++#: src/dillo.c:284
++msgid "Error in command line options.\n"
++msgstr ""
++
++#: src/dillo.c:291
++#, c-format
++msgid "Setting gtk charset to %s...\n"
++msgstr ""
++
++#: src/dillo.c:395
++msgid "Dillo: normal exit!\n"
++msgstr ""
++
++#: src/dillo.c:409
++#, c-format
++msgid "Dillo: error creating directory %s: %s\n"
++msgstr ""
++
++#: src/dillo.c:412
++#, c-format
++msgid "Dillo: error reading %s: %s\n"
++msgstr ""
++
++#: src/dillo.c:461
++#, c-format
++msgid "Option %s requires %d argument(s)\n"
++msgstr ""
++
++#: src/dillo.c:496
++msgid ""
++"\n"
++"Usage: dillo [OPTIONS] [URL|FILE]...\n"
++"Options:\n"
++msgstr ""
++
++#: src/dillo.c:503
++#, c-format
++msgid " %s, %s *Undocumented*\n"
++msgstr ""
++
++#: src/dillo.c:506
++msgid ""
++" URL URL to browse.\n"
++" FILE Local FILE to view.\n"
++msgstr ""
++
++#: src/html.c:182
++#, c-format
++msgid "HTML warning: line %d, "
++msgstr ""
++
++#: src/html.c:213
++#, c-format
++msgid "URL has %d illegal character%s [%d space%s]\n"
++msgstr ""
++
++#: src/html.c:216
++#, c-format
++msgid "URL has %d illegal character%s [%d in (00-1F or 7F)]\n"
++msgstr ""
++
++#: src/html.c:219
++#, c-format
++msgid "URL has %d illegal character%s [%d space%s and %d in (00-1F or 7F)]\n"
++msgstr ""
++
++#: src/html.c:1226
++msgid "numeric character reference out of range\n"
++msgstr ""
++
++#: src/html.c:1234
++msgid "numeric character reference without trailing ';'\n"
++msgstr ""
++
++#: src/html.c:1246
++#, c-format
++msgid "undefined character entity '%s'\n"
++msgstr ""
++
++#: src/html.c:1254
++msgid "character entity reference without trailing ';'\n"
++msgstr ""
++
++#: src/html.c:1262
++msgid "code positions 128-159 are not defined for ISO Latin-1\n"
++msgstr ""
++
++#: src/html.c:1270
++msgid "literal '&'\n"
++msgstr ""
++
++#: src/html.c:1379
++msgid "TAB character inside <PRE>\n"
++msgstr ""
++
++#: src/html.c:1615
++#, c-format
++msgid " - forcing close of open tag: <%s>\n"
++msgstr ""
++
++#: src/html.c:1624
++#, c-format
++msgid "unexpected closing tag: </%1$s>. -- expected </%2$s>\n"
++msgstr ""
++
++#: src/html.c:1696
++#, c-format
++msgid "Garbage after length: %s\n"
++msgstr ""
++
++#: src/html.c:1715
++msgid "color is not in \"#RRGGBB\" format\n"
++msgstr ""
++
++#: src/html.c:1735
++#, c-format
++msgid "'%s' value is not of the form [A-Za-z][A-Za-z0-9:_.-]*\n"
++msgstr ""
++
++#: src/html.c:1839
++msgid "HTML element was already open\n"
++msgstr ""
++
++#: src/html.c:1866
++msgid "HEAD element must go before the BODY section\n"
++msgstr ""
++
++#: src/html.c:1876
++msgid "HEAD element was already open\n"
++msgstr ""
++
++#: src/html.c:1889
++msgid "HEAD section lacks the TITLE element\n"
++msgstr ""
++
++#: src/html.c:1917
++msgid "the TITLE element must be inside the HEAD section\n"
++msgstr ""
++
++#: src/html.c:1986
++msgid "BODY element was already open\n"
++msgstr ""
++
++#: src/html.c:1991
++msgid "unclosed HEAD element\n"
++msgstr ""
++
++#: src/html.c:2187
++msgid "<td> or <th> outside <table>\n"
++msgstr ""
++
++#: src/html.c:2191
++msgid "<td> or <th> outside <tr>\n"
++msgstr ""
++
++#: src/html.c:2309
++msgid "Invalid HTML syntax: <tr> outside <table>\n"
++msgstr ""
++
++#: src/html.c:2367
++msgid "<noframes> outside of <frameset>!!!\n"
++msgstr ""
++
++#: src/html.c:2375
++msgid "<noframe> is illegal tag !!! use <noframes>.\n"
++msgstr ""
++
++#: src/html.c:2562
++msgid "<frame> outside of <frameset>\n"
++msgstr ""
++
++#: src/html.c:2565
++msgid "<frame> inside of <noframes>\n"
++msgstr ""
++
++#: src/html.c:2568
++msgid "<frame> inside of <iframe>\n"
++msgstr ""
++
++#: src/html.c:2620
++msgid "incorrectly placed <frameset>\n"
++msgstr ""
++
++#: src/html.c:2636
++msgid "<frameset> inside of <noframes>\n"
++msgstr ""
++
++#: src/html.c:2641
++msgid "<frameset> inside of <iframe>\n"
++msgstr ""
++
++#: src/html.c:3123
++msgid " Html_tag_open_img: server-side map (ISMAP)\n"
++msgstr ""
++
++#: src/html.c:3149
++msgid "nested <map>\n"
++msgstr ""
++
++#: src/html.c:3201
++msgid "usemap coords MUST be separated with ','\n"
++msgstr ""
++
++#: src/html.c:3245
++msgid "nohref"
++msgstr ""
++
++#: src/html.c:3284
++msgid "link depends on javascript()\n"
++msgstr ""
++
++#: src/html.c:3300
++#, c-format
++msgid "Registering ANCHOR: %s\n"
++msgstr ""
++
++#: src/html.c:3305
++msgid "Anchor names must be unique within the document\n"
++msgstr ""
++
++#: src/html.c:3512
++msgid "it is strongly recommended using <UL> instead of <MENU>\n"
++msgstr ""
++
++#: src/html.c:3574
++msgid "<li> outside <ul> or <ol>\n"
++msgstr ""
++
++#: src/html.c:3770
++msgid "nested forms\n"
++msgstr ""
++
++#: src/html.c:3817
++msgid "FORM lacks a Submit button\n"
++msgstr ""
++
++#: src/html.c:3819
++msgid " (added a submit button internally)\n"
++msgstr ""
++
++#: src/html.c:3923
++msgid "META elements must be inside the HEAD section\n"
++msgstr ""
++
++#: src/html.c:3975
++#, c-format
++msgid ""
++"The NON-STANDARD meta refresh tag. The HTML 4.01 SPEC (sec 7.4.4) recommends "
++"explicitly to avoid it. The author wanted you to go <%s>\n"
++msgstr ""
++
++#: src/html.c:4345
++msgid "Html_submit_form: Method unknown\n"
++msgstr ""
++
++#: src/html.c:4427
++msgid "Html_input_image: unable to create image submit.\n"
++msgstr ""
++
++#: src/html.c:4449
++msgid "input camp outside <form>\n"
++msgstr ""
++
++#: src/html.c:4529
++msgid "submit"
++msgstr ""
++
++#: src/html.c:4536 config/dillocfg.c:79
++msgid "Reset"
++msgstr ""
++
++#: src/html.c:4546
++msgid "Submit"
++msgstr ""
++
++#: src/html.c:4563
++msgid "An input of the type \"file\" wasn't rendered!\n"
++msgstr ""
++
++#: src/html.c:4737
++msgid "<textarea> outside <form>\n"
++msgstr ""
++
++#: src/html.c:4742
++msgid "nested <textarea>\n"
++msgstr ""
++
++#: src/html.c:4814
++msgid "<select> outside <form>\n"
++msgstr ""
++
++#: src/html.c:4818
++msgid "nested <select>\n"
++msgstr ""
++
++#: src/html.c:5042
++msgid "base URI is relative (it MUST be absolute)\n"
++msgstr ""
++
++#: src/html.c:5049
++msgid "the BASE element must appear in the HEAD section\n"
++msgstr ""
++
++#: src/html.c:5400
++#, c-format
++msgid "<%1$s> is not allowed to contain <%2$s>. -- closing <%3$s>\n"
++msgstr ""
++
++#: src/html.c:5515
++#, c-format
++msgid "<pre> is not allowed to contain <%s>\n"
++msgstr ""
++
++#: src/html.c:5537
++msgid "'id' and 'name' attribute of <a> tag differ\n"
++msgstr ""
++
++#: src/html.c:5764
++msgid "Html_write_raw : bufsize is negative!\n"
++msgstr ""
++
++#: src/html.c:5842
++msgid "attribute lacks closing quote\n"
++msgstr ""
++
++#: src/html.c:5850
++#, c-format
++msgid "<%s> element lacks its closing '>'\n"
++msgstr ""
++
++#: src/html.c:6144
++msgid "could not allocate character encoding converter"
++msgstr ""
++
++#: src/misc.c:455
++msgid "Untitled"
++msgstr ""
++
++#: src/interface.c:249
++msgid "Selection retrieval failed\n"
++msgstr ""
++
++#: src/interface.c:363
++msgid "Clear the URL box (middle-click to paste an URL)."
++msgstr ""
++
++#: src/interface.c:385
++msgid "Search the Web"
++msgstr ""
++
++#: src/interface.c:417 src/menu.c:231 src/menu.c:280
++msgid "Back"
++msgstr ""
++
++#: src/interface.c:421
++msgid "Go to previous page (right-click for menu)."
++msgstr ""
++
++#: src/interface.c:450 src/menu.c:233 src/menu.c:282
++msgid "Forward"
++msgstr ""
++
++#: src/interface.c:454
++msgid "Go to next page (right-click for menu)."
++msgstr ""
++
++#: src/interface.c:481
++msgid "Home"
++msgstr ""
++
++#: src/interface.c:485
++msgid "Go to the Home page"
++msgstr ""
++
++#: src/interface.c:499 config/dillocfg.c:80
++msgid "Reload"
++msgstr ""
++
++#: src/interface.c:500
++msgid "Reload this page"
++msgstr ""
++
++#: src/interface.c:512 config/dillocfg.c:81
++msgid "Save"
++msgstr ""
++
++#: src/interface.c:513
++msgid "Save this page"
++msgstr ""
++
++#: src/interface.c:520 src/menu.c:235 src/menu.c:284
++msgid "Stop"
++msgstr ""
++
++#: src/interface.c:521
++msgid "Stop the current transfer"
++msgstr ""
++
++#: src/interface.c:534
++msgid "Book"
++msgstr ""
++
++#: src/interface.c:538
++msgid "View bookmarks"
++msgstr ""
++
++#: src/interface.c:655 src/interface.c:826
++msgid "Hide Controls"
++msgstr ""
++
++#: src/interface.c:655 src/interface.c:826
++msgid "Show Controls"
++msgstr ""
++
++#: src/interface.c:929
++msgid "Show HTML bugs (right-click for menu)."
++msgstr ""
++
++#: src/interface.c:1231
++#, c-format
++msgid "Warning: search_url ends with '%%'\n"
++msgstr ""
++
++#: src/interface.c:1233
++#, c-format
++msgid "Warning: illegal specifier '%%%c' in search_url\n"
++msgstr ""
++
++#: src/interface.c:1298
++msgid "Dillo: Open File"
++msgstr ""
++
++#: src/interface.c:1374
++msgid "Clear"
++msgstr ""
++
++#: src/interface.c:1382 src/interface.c:1536 src/nav.c:453
++msgid "Cancel"
++msgstr ""
++
++#: src/interface.c:1513
++msgid "User Name:"
++msgstr ""
++
++#: src/interface.c:1520
++msgid "Password:"
++msgstr ""
++
++#: src/interface.c:1529 src/interface.c:1604 src/interface.c:2073
++#: src/nav.c:453
++msgid "OK"
++msgstr ""
++
++#: src/interface.c:1566
++msgid "Dillo: Enter Authentication"
++msgstr ""
++
++#: src/interface.c:1586
++msgid "Dillo: Question"
++msgstr ""
++
++#: src/interface.c:1602
++msgid "Dillo: Open URL"
++msgstr ""
++
++#: src/interface.c:1626
++#, c-format
++msgid "File saved (%d Bytes)"
++msgstr ""
++
++#: src/interface.c:1708
++#, c-format
++msgid "Error trying to save: %s\n"
++msgstr ""
++
++#: src/interface.c:1761
++msgid "Dillo: Save URL as File..."
++msgstr ""
++
++#: src/interface.c:1788
++msgid "Dillo: Save link as File..."
++msgstr ""
++
++#: src/interface.c:1843 src/interface.c:1857
++msgid "Dillo: Find text"
++msgstr ""
++
++#: src/interface.c:1844 src/interface.c:1850
++#, c-format
++msgid "Cannot find \"%s\"."
++msgstr ""
++
++#: src/interface.c:1858
++#, c-format
++msgid "No further occurence of \"%s\". Restarting from the beginning."
++msgstr ""
++
++#: src/interface.c:1866
++#, c-format
++msgid "(Find) \"%s\": restart from beginning"
++msgstr ""
++
++#: src/interface.c:1879
++#, c-format
++msgid "(Find) \"%s\""
++msgstr ""
++
++#: src/interface.c:1885
++msgid "Unexpected return from a_Dw_gtk_scrolled_window_search()\n"
++msgstr ""
++
++#: src/interface.c:1937
++msgid "press <Enter> to (repeat) search, <Esc> to close search"
++msgstr ""
++
++#: src/interface.c:1938 src/interface.c:2031
++msgid "Search"
++msgstr ""
++
++#: src/interface.c:1940 src/interface.c:1941 src/interface.c:1977
++msgid "Case sensitive"
++msgstr ""
++
++#: src/interface.c:1975
++msgid "Dillo: Find text in page"
++msgstr ""
++
++#: src/interface.c:1978
++msgid "Find"
++msgstr ""
++
++#: src/interface.c:2029
++msgid "Dillo"
++msgstr ""
++
++#: src/interface.c:2029
++msgid "Dillo: Search the Web"
++msgstr ""
++
++#: src/interface.c:2066
++#, c-format
++msgid "Dillo: Enter proxy password for '%s'"
++msgstr ""
++
++#: src/interface.c:2151
++msgid "Close"
++msgstr ""
++
++#: src/interface.c:2226
++msgid "close"
++msgstr ""
++
++#: src/nav.c:383
++#, c-format
++msgid "Unhandled switch type %d in a_Nav_jump_callback in src/nav.c\n"
++msgstr ""
++
++#: src/nav.c:452
++msgid "Repost form data?"
++msgstr ""
++
++#: src/menu.c:173
++msgid "_File"
++msgstr ""
++
++#: src/menu.c:174
++msgid "_New Window"
++msgstr ""
++
++#: src/menu.c:177
++msgid "New _Tab"
++msgstr ""
++
++#: src/menu.c:181
++msgid "_Open File..."
++msgstr ""
++
++#: src/menu.c:183
++msgid "Open _URL..."
++msgstr ""
++
++#: src/menu.c:189
++msgid "Close Window"
++msgstr ""
++
++#: src/menu.c:192 src/menu.c:359
++msgid "Close Tab"
++msgstr ""
++
++#: src/menu.c:196
++msgid "Exit Dillo"
++msgstr ""
++
++#: src/menu.c:200
++msgid "_View"
++msgstr ""
++
++#: src/menu.c:202
++msgid "Previous tab"
++msgstr ""
++
++#: src/menu.c:204
++msgid "Next tab"
++msgstr ""
++
++#: src/menu.c:208
++msgid "_Options..."
++msgstr ""
++
++#: src/menu.c:228
++msgid "PAGE OPTIONS"
++msgstr ""
++
++#: src/menu.c:237 src/menu.c:286
++msgid "_Reload"
++msgstr ""
++
++#: src/menu.c:241
++msgid "View page So_urce"
++msgstr ""
++
++#: src/menu.c:243
++msgid "View page Bugs"
++msgstr ""
++
++#: src/menu.c:244
++msgid "_Bookmark this Page"
++msgstr ""
++
++#: src/menu.c:247
++msgid "Duplicate this Page"
++msgstr ""
++
++#: src/menu.c:250
++msgid "Duplicate this tab"
++msgstr ""
++
++#: src/menu.c:254
++msgid "_Find Text"
++msgstr ""
++
++#: src/menu.c:257
++msgid "Jump to..."
++msgstr ""
++
++#: src/menu.c:258
++msgid "This Frame..."
++msgstr ""
++
++#: src/menu.c:259
++msgid "This Frameset..."
++msgstr ""
++
++#: src/menu.c:262
++msgid "Save Page As..."
++msgstr ""
++
++#: src/menu.c:277
++msgid "FRAME OPTIONS"
++msgstr ""
++
++#: src/menu.c:290
++msgid "View frame Source"
++msgstr ""
++
++#: src/menu.c:292
++msgid "Bookmark this Frame"
++msgstr ""
++
++#: src/menu.c:294
++msgid "Reload this Frame"
++msgstr ""
++
++#: src/menu.c:297
++msgid "Show only this Frame"
++msgstr ""
++
++#: src/menu.c:299
++msgid "Open Frame in new Window"
++msgstr ""
++
++#: src/menu.c:302
++msgid "Open Frame in new Tab"
++msgstr ""
++
++#: src/menu.c:306
++msgid "_Find Text in this Frame..."
++msgstr ""
++
++#: src/menu.c:309 src/menu.c:340
++msgid "Save Frame As..."
++msgstr ""
++
++#: src/menu.c:325
++msgid "FRAMESET OPTIONS"
++msgstr ""
++
++#: src/menu.c:327
++msgid "View Frameset Source"
++msgstr ""
++
++#: src/menu.c:329
++msgid "Bookmark this Frameset"
++msgstr ""
++
++#: src/menu.c:331
++msgid "Reload this Frameset"
++msgstr ""
++
++#: src/menu.c:334
++msgid "Show only this Frameset"
++msgstr ""
++
++#: src/menu.c:337
++msgid "_Find Text in this Frameset..."
++msgstr ""
++
++#: src/menu.c:357
++msgid "TAB OPTIONS"
++msgstr ""
++
++#: src/menu.c:361
++msgid "New Tab"
++msgstr ""
++
++#: src/menu.c:363
++msgid "Reload Tab"
++msgstr ""
++
++#: src/menu.c:460
++msgid "FOLLOWING PAGES"
++msgstr ""
++
++#: src/menu.c:463
++msgid "PREVIOUS PAGES"
++msgstr ""
++
++#: src/menu.c:531
++msgid "LINK OPTIONS"
++msgstr ""
++
++#: src/menu.c:533
++msgid "Open Link in New Window"
++msgstr ""
++
++#: src/menu.c:536
++msgid "Open Link in New Tab"
++msgstr ""
++
++#: src/menu.c:539
++msgid "Open Link"
++msgstr ""
++
++#: src/menu.c:542
++msgid "Bookmark this Link"
++msgstr ""
++
++#: src/menu.c:544
++msgid "Copy Link location"
++msgstr ""
++
++#: src/menu.c:549
++msgid "Save Link As..."
++msgstr ""
++
++#: src/menu.c:553
++msgid "Image Menu..."
++msgstr ""
++
++#: src/menu.c:571
++msgid "IMAGE OPTIONS"
++msgstr ""
++
++#: src/menu.c:573
++msgid "Isolate Image"
++msgstr ""
++
++#: src/menu.c:575
++msgid "Open Image in New Window"
++msgstr ""
++
++#: src/menu.c:578
++msgid "Open Image in New Tab"
++msgstr ""
++
++#: src/menu.c:581
++msgid "Open Image"
++msgstr ""
++
++#: src/menu.c:584
++msgid "Bookmark this Image"
++msgstr ""
++
++#: src/menu.c:586
++msgid "Copy Image location"
++msgstr ""
++
++#: src/menu.c:591
++msgid "Save Image As..."
++msgstr ""
++
++#: src/menu.c:605
++msgid "BUG METER OPTIONS"
++msgstr ""
++
++#: src/menu.c:607
++msgid "Validate URL with W3C"
++msgstr ""
++
++#: src/menu.c:609
++msgid "Validate URL with WDG"
++msgstr ""
++
++#: src/menu.c:612
++msgid "About Bug Meter..."
++msgstr ""
++
++#: src/prefs.c:431
++msgid "Error: Can't open specified config file. default file is used.\n"
++msgstr ""
++
++#: src/i18n.c:359
++msgid "charset detect may mistake...\n"
++msgstr ""
++
++#: src/i18n.c:447
++msgid "<meta> outside of <head>!\n"
++msgstr ""
++
++#: src/i18n.c:493
++msgid "all ascii code\n"
++msgstr ""
++
++#: src/i18n.c:526
++msgid "unable to fully convert between character encodings\n"
++msgstr ""
++
++#: src/i18n.c:565
++msgid "no support enc\n"
++msgstr ""
++
++#: src/tab.c:293 src/tab.c:425 dpi/bookmarks.c:1653
++msgid "(Untitled)"
++msgstr ""
++
++#: src/IO/https.c:168
++msgid "--Error detected\n"
++msgstr ""
++
++#: src/IO/https.c:173 src/IO/https.c:204 src/IO/http.c:294
++msgid "ERROR: unable to connect to remote host"
++msgstr ""
++
++#: src/IO/https.c:179 src/IO/http.c:309
++msgid "--Connection established\n"
++msgstr ""
++
++#: src/IO/https.c:280 src/IO/http.c:417
++#, c-format
++msgid "Sending query to %s..."
++msgstr ""
++
++#: src/IO/https.c:333 src/IO/http.c:486
++#, c-format
++msgid "DNS solving %s"
++msgstr ""
++
++#: src/IO/https.c:363
++msgid " HTTPS: new abort handler! #2\n"
++msgstr ""
++
++#: src/IO/https.c:365 src/IO/https.c:387 src/IO/http.c:301 src/IO/http.c:520
++#: src/IO/http.c:551
++#, c-format
++msgid "ERROR: %s"
++msgstr ""
++
++#: src/IO/https.c:386
++msgid " HTTP: new abort handler! #1\n"
++msgstr ""
++
++#: src/IO/https.c:400 src/IO/http.c:564
++#, c-format
++msgid "ERROR: Dns can't solve %s"
++msgstr ""
++
++#: src/IO/https.c:421 src/IO/http.c:591
++msgid "Query sent, waiting for reply..."
++msgstr ""
++
++#: src/IO/http.c:190
++#, c-format
++msgid "Getting %1$s, referer %2$s\n"
++msgstr ""
++
++#: src/IO/http.c:259
++#, c-format
++msgid ""
++"Query:\n"
++"%s"
++msgstr ""
++
++#: src/IO/http.c:286
++msgid "--Connection broken\n"
++msgstr ""
++
++#: src/IO/http.c:342
++#, c-format
++msgid "Http_connect_socket ERROR: %s\n"
++msgstr ""
++
++#: src/IO/http.c:363 src/IO/http.c:377
++#, c-format
++msgid "Connecting to %s\n"
++msgstr ""
++
++#: src/IO/http.c:396
++msgid "Contacting host..."
++msgstr ""
++
++#: src/IO/http.c:529
++msgid "Http: OpAbort [1B]\n"
++msgstr ""
++
++#: src/IO/dpi.c:188
++msgid "ERROR: [Dpi_get_token] Can't find token start\n"
++msgstr ""
++
++#: src/IO/dpi.c:221
++msgid "ERROR: [Dpi_get_token] *** NULL code here ***\n"
++msgstr ""
++
++#: src/IO/dpi.c:312
++msgid "Dpi: [Dpi_process_io] IOClose\n"
++msgstr ""
++
++#: src/IO/dpi.c:338
++#, c-format
++msgid "Dpi_start_dpid (child): %s\n"
++msgstr ""
++
++#: src/IO/dpi.c:348 src/IO/dpi.c:363
++#, c-format
++msgid "Dpi_start_dpid: %s\n"
++msgstr ""
++
++#: src/IO/dpi.c:359
++#, c-format
++msgid "Dpi_start_dpid: n = %d\n"
++msgstr ""
++
++#: src/IO/dpi.c:386
++#, c-format
++msgid "Dpi_check_uds: %1$s %2$s\n"
++msgstr ""
++
++#: src/IO/dpi.c:673
++msgid "dpi.c: ERROR, can't start dpi daemon\n"
++msgstr ""
++
++#: src/IO/dpi.c:686
++msgid "a_Dpi_ccc: OpAbort[2B], Not implemented\n"
++msgstr ""
++
++#: src/IO/dpi.c:790 src/IO/dpi.c:794
++#, c-format
++msgid "a_Dpi_bye_dpid: %s\n"
++msgstr ""
++
++#: dpid/dpi_socket_dir.c:106
++#, c-format
++msgid "The dpi_socket_dir file does not exist\n"
++msgstr ""
++
++#: dpid/dpi_socket_dir.c:110 dpid/dpi_socket_dir.c:114
++#, c-format
++msgid "debug_msg - init_sockdir: The socket directory "
++msgstr ""
++
++#: dpid/dpi_socket_dir.c:111
++#, c-format
++msgid "%s exists and is OK\n"
++msgstr ""
++
++#: dpid/dpi_socket_dir.c:115
++#, c-format
++msgid "%s does not exist or is not a directory\n"
++msgstr ""
++
++#: dpid/dpi_socket_dir.c:124
++#, c-format
++msgid " - Failed to create dpi socket directory\n"
++msgstr ""
++
++#: dpid/dpi_socket_dir.c:127
++#, c-format
++msgid " - failed to save %s\n"
++msgstr ""
++
++#: dpid/main.c:59 dpid/main.c:66 dpid/main.c:77 dpid/main.c:85 dpid/main.c:99
++#: dpid/main.c:104 dpid/main.c:109
++#, c-format
++msgid "ERROR in child proc for %s\n"
++msgstr ""
++
++#: dpid/main.c:166
++#, c-format
++msgid ": dpid failed to parse cmd in %s\n"
++msgstr ""
++
++#: dpid/main.c:265
++#, c-format
++msgid "Failed to create socket directory\n"
++msgstr ""
++
++#: dpid/main.c:275
++#, c-format
++msgid "dpid refuses to start, possibly because:\n"
++msgstr ""
++
++#: dpid/main.c:276
++#, c-format
++msgid "\t1) An instance of dpid is already running.\n"
++msgstr ""
++
++#: dpid/main.c:277
++#, c-format
++msgid "\t2) A previous dpid didn't clean up on exit.\n"
++msgstr ""
++
++#: dpid/main.c:280
++msgid "init_srs_sockets failed\n"
++msgstr ""
++
++#: dpid/main.c:294
++#, c-format
++msgid "dpid started\n"
++msgstr ""
++
++#: dpid/main.c:340
++#, c-format
++msgid "accept on srs socket failed\n"
++msgstr ""
++
++#: dpid/main.c:341
++#, c-format
++msgid "service pending connections, and continue\n"
++msgstr ""
++
++#: dpi/bookmarks.c:96
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>Bookmarks</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr>\n"
++" <td>&nbsp;Bookmarks::</td>\n"
++" <td width='100%' align='right'>\n"
++" [<a href='dpi:/bm/modify'>modify</a>]\n"
++" </td></tr>\n"
++" </table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++msgstr ""
++
++#: dpi/bookmarks.c:115
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>Bookmarks</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr>\n"
++" <td>&nbsp;Bookmarks :: modify</td></tr>\n"
++" </table></td></tr> \n"
++"</table> \n"
++"\n"
++"<form>\n"
++"<table width='100%' border='1' cellpadding='0'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td><b>Select&nbsp;an&nbsp;operation&nbsp;</b></td>\n"
++" <td><select name='operation'>\n"
++" <option value='none' selected>--\n"
++" <option value='delete'>Delete\n"
++" <option value='move'>Move\n"
++" <option value='modify'>Modify\n"
++" <option value='add_sec'>Add Section\n"
++" <option value='add_url'>Add URL\n"
++" </select></td>\n"
++" <td><b>,&nbsp;mark&nbsp;its&nbsp;operands,&nbsp;and&nbsp;</b></td>\n"
++" <td><input type='submit' name='submit' value='submit.'></td>\n"
++" <td width='100%'></td>\n"
++" </tr>\n"
++" </table></td></tr>\n"
++"</table>\n"
++msgstr ""
++
++#: dpi/bookmarks.c:151
++msgid ""
++"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n"
++" <tr valign='top'>\n"
++" <td>\n"
++" <table bgcolor='#b4b4b4' border='2' cellpadding='4' cellspacing='1'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n"
++msgstr ""
++
++#: dpi/bookmarks.c:160
++msgid ""
++"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n"
++" <tr valign='top'>\n"
++" <td>\n"
++" <table bgcolor='#b4b4b4' border='1'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n"
++msgstr ""
++
++#: dpi/bookmarks.c:243
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>Bookmarks</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: add section\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++" <input type='hidden' name='operation' value='add_section'>\n"
++"<table border='1' width='100%'>\n"
++" <tr>\n"
++" <td bgcolor='olive'><b>New&nbsp;section:</b></td>\n"
++" <td bgcolor='white' width='100%'></td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='10'>\n"
++"<tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td>Title:</td>\n"
++" <td><input type='text' name='title' size='64'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='submit.'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++"\n"
++msgstr ""
++
++#: dpi/bookmarks.c:283
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>Bookmarks</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: update\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++"<input type='hidden' name='operation' value='modify2'>\n"
++msgstr ""
++
++#: dpi/bookmarks.c:310
++#, c-format
++msgid ""
++"<tr><td>\n"
++" <table width='100%%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td>Title:</td>\n"
++" <td><input type='text' name='title%d' size='64'\n"
++" value='%s'></td></tr>\n"
++" <tr>\n"
++" <td>URL:</td>\n"
++" <td>%s</td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++msgstr ""
++
++#: dpi/bookmarks.c:323
++#, c-format
++msgid ""
++"<tr><td>\n"
++" <table width='100%%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td>Title:</td>\n"
++" <td><input type='text' name='s%d' size='64'\n"
++" value='%s'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++msgstr ""
++
++#: dpi/bookmarks.c:336
++#, c-format
++msgid ""
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='submit.'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++msgstr ""
++
++#: dpi/bookmarks.c:346
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>Bookmarks</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: add url\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++"<input type='hidden' name='operation' value='add_url2'>\n"
++"<table border='1' width='100%'>\n"
++" <tr>\n"
++" <td bgcolor='olive'><b>Add&nbsp;url:</b></td>\n"
++" <td bgcolor='white' width='100%'></td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='10'>\n"
++"<tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td>Title:</td>\n"
++" <td><input type='text' name='title' size='64'></td></tr>\n"
++" <tr>\n"
++" <td>URL:</td>\n"
++" <td><input type='text' name='url' size='64'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='submit.'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++msgstr ""
++
++#: dpi/bookmarks.c:691
++msgid "Unclassified"
++msgstr ""
++
++#: dpi/bookmarks.c:724
++#, c-format
++msgid "echo \":s0: Unclassified\" > %s"
++msgstr ""
++
++#: dpi/bookmarks.c:786
++#, c-format
++msgid ""
++"Syntax error in bookmarks file:\n"
++" %s"
++msgstr ""
++
++#: dpi/bookmarks.c:898
++msgid "Added bookmark!"
++msgstr ""
++
++#: dpi/bookmarks.c:1087
++msgid "Update&nbsp;sections:"
++msgstr ""
++
++#: dpi/bookmarks.c:1107
++msgid "Update&nbsp;titles:"
++msgstr ""
++
++#: dpi/bookmarks.c:1404
++msgid "Delete: you must mark what to delete!"
++msgstr ""
++
++#: dpi/bookmarks.c:1410
++msgid "Move: you must mark a target section!"
++msgstr ""
++
++#: dpi/bookmarks.c:1412
++msgid "Move: can not move a section (yet)."
++msgstr ""
++
++#: dpi/bookmarks.c:1414
++msgid "Move: you must mark some urls, and a target section!"
++msgstr ""
++
++#: dpi/bookmarks.c:1419
++msgid "Modify: you must mark what to update!"
++msgstr ""
++
++#: dpi/bookmarks.c:1436
++msgid "Add url: only one target section is allowed!"
++msgstr ""
++
++#: dpi/bookmarks.c:1443
++msgid "No operation, just do nothing!"
++msgstr ""
++
++#: dpi/bookmarks.c:1446
++msgid "Sorry, not implemented yet."
++msgstr ""
++
++#: dpi/bookmarks.c:1614
++msgid "Haven't got a full tag!\n"
++msgstr ""
++
++#: dpi/bookmarks.c:1690
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<HTML><body> Error on the bookmarks server...</body></html>"
++msgstr ""
++
++#: config/dillocfg.c:82
++msgid "Quit"
++msgstr ""
++
++#: config/dillocfg.c:84 config/dillocfg.c:90
++msgid "Dillo Preferences"
++msgstr ""
++
++#: config/dillocfg.c:113
++msgid "Interface"
++msgstr ""
++
++#: config/dillocfg.c:114
++msgid " Font "
++msgstr ""
++
++#: config/dillocfg.c:115
++msgid " Color "
++msgstr ""
++
++#: config/dillocfg.c:116
++msgid " Network "
++msgstr ""
++
++#: config/dillocfg.c:118
++msgid " Tab "
++msgstr ""
++
++#: config/dillocfg.c:121
++msgid " Other "
++msgstr ""
++
++#: config/dillocfg.c:329
++msgid "Add"
++msgstr ""
++
++#: config/dillocfg.c:330
++msgid "Delete"
++msgstr ""
++
++#: config/dillocfg.c:336
++msgid "Address"
++msgstr ""
++
++#: config/dillocfg.c:337
++msgid "Rule"
++msgstr ""
++
++#: config/dillocfg.c:363 config/dillocfg.c:369
++#, c-format
++msgid "Read failed <%s>\n"
++msgstr ""
++
++#: config/dillocfg.c:450 config/dillocfg.c:458
++#, c-format
++msgid "can't write <%s>\n"
++msgstr ""
++
++#: config/dillocfg_token.c:60
++msgid "Window Size"
++msgstr ""
++
++#: config/dillocfg_token.c:68
++msgid "HTTP Proxy"
++msgstr ""
++
++#: config/dillocfg_token.c:76
++msgid "HTTP Proxy User"
++msgstr ""
++
++#: config/dillocfg_token.c:84
++msgid "NO Proxy"
++msgstr ""
++
++#: config/dillocfg_token.c:92
++msgid "User-Agent"
++msgstr ""
++
++#: config/dillocfg_token.c:100
++msgid "Send referer header"
++msgstr ""
++
++#: config/dillocfg_token.c:108
++msgid "Link color"
++msgstr ""
++
++#: config/dillocfg_token.c:116
++msgid "Visited color"
++msgstr ""
++
++#: config/dillocfg_token.c:124
++msgid "BackGround color"
++msgstr ""
++
++#: config/dillocfg_token.c:132
++msgid "Allow white bg"
++msgstr ""
++
++#: config/dillocfg_token.c:140
++msgid "Force my colors"
++msgstr ""
++
++#: config/dillocfg_token.c:148
++msgid "Contrast visited color"
++msgstr ""
++
++#: config/dillocfg_token.c:156
++msgid "Text color"
++msgstr ""
++
++#: config/dillocfg_token.c:164
++msgid "Use oblique"
++msgstr ""
++
++#: config/dillocfg_token.c:172
++msgid "Start Page"
++msgstr ""
++
++#: config/dillocfg_token.c:180
++msgid "HOMEPAGE"
++msgstr ""
++
++#: config/dillocfg_token.c:188
++msgid "Search-engine's URL"
++msgstr ""
++
++#: config/dillocfg_token.c:196
++msgid "Search-engine's charset"
++msgstr ""
++
++#: config/dillocfg_token.c:204
++msgid "Show Tooltip"
++msgstr ""
++
++#: config/dillocfg_token.c:212
++msgid "Panel Size"
++msgstr ""
++
++#: config/dillocfg_token.c:220
++msgid "Small icons"
++msgstr ""
++
++#: config/dillocfg_token.c:228
++msgid "Limit text width"
++msgstr ""
++
++#: config/dillocfg_token.c:236
++msgid "Limit font decoration"
++msgstr ""
++
++#: config/dillocfg_token.c:244
++msgid "Font factor"
++msgstr ""
++
++#: config/dillocfg_token.c:252
++msgid "Font Sizes"
++msgstr ""
++
++#: config/dillocfg_token.c:260
++msgid "W3C+heuristics"
++msgstr ""
++
++#: config/dillocfg_token.c:268
++msgid "Use dicache"
++msgstr ""
++
++#: config/dillocfg_token.c:276
++msgid "Show Back"
++msgstr ""
++
++#: config/dillocfg_token.c:284
++msgid "Show Forw"
++msgstr ""
++
++#: config/dillocfg_token.c:292
++msgid "Show Home"
++msgstr ""
++
++#: config/dillocfg_token.c:300
++msgid "Show Reload"
++msgstr ""
++
++#: config/dillocfg_token.c:308
++msgid "Show Save"
++msgstr ""
++
++#: config/dillocfg_token.c:316
++msgid "Show Stop"
++msgstr ""
++
++#: config/dillocfg_token.c:324
++msgid "Show Bookmarks"
++msgstr ""
++
++#: config/dillocfg_token.c:332
++msgid "Show Menubar"
++msgstr ""
++
++#: config/dillocfg_token.c:340
++msgid "Show ClearURL"
++msgstr ""
++
++#: config/dillocfg_token.c:348
++msgid "Show URL box"
++msgstr ""
++
++#: config/dillocfg_token.c:356
++msgid "Show Web Search"
++msgstr ""
++
++#: config/dillocfg_token.c:364
++msgid "Show Progress box"
++msgstr ""
++
++#: config/dillocfg_token.c:372
++msgid "Show Popup navigation"
++msgstr ""
++
++#: config/dillocfg_token.c:380
++msgid "Fullwindow start"
++msgstr ""
++
++#: config/dillocfg_token.c:388
++msgid "Transient dialogs"
++msgstr ""
++
++#: config/dillocfg_token.c:396
++msgid "Popup dialogs"
++msgstr ""
++
++#: config/dillocfg_token.c:404
++msgid "vw_aafontname"
++msgstr ""
++
++#: config/dillocfg_token.c:412
++msgid "fw_aafontname"
++msgstr ""
++
++#: config/dillocfg_token.c:420
++msgid "vw_fontname"
++msgstr ""
++
++#: config/dillocfg_token.c:428
++msgid "fw_fontname"
++msgstr ""
++
++#: config/dillocfg_token.c:436
++msgid "Generate submit"
++msgstr ""
++
++#: config/dillocfg_token.c:444
++msgid "Enterpress forces submit"
++msgstr ""
++
++#: config/dillocfg_token.c:452
++msgid "Show debugging messsages"
++msgstr ""
++
++#: config/dillocfg_token.c:460
++msgid "Show Extra Warnings"
++msgstr ""
++
++#: config/dillocfg_token.c:468
++msgid "Focus location on new"
++msgstr ""
++
++#: config/dillocfg_token.c:476 config/dillocfg_token.c:484
++msgid "Accept Language"
++msgstr ""
++
++#: config/dillocfg_token.c:493
++msgid "Tab load in background"
++msgstr ""
++
++#: config/dillocfg_token.c:501
++msgid "Tab close middle click"
++msgstr ""
++
++#: config/dillocfg_token.c:509
++msgid "Tab instead of window"
++msgstr ""
++
++#: config/dillocfg_token.c:517
++msgid "Tab bar show fullscreen"
++msgstr ""
++
++#: config/dillocfg_token.c:525
++msgid "Tab bar show single tab"
++msgstr ""
++
++#: config/dillocfg_token.c:533
++msgid "Tab bar scroller"
++msgstr ""
++
++#: config/dillocfg_token.c:541
++msgid "Tab bar homogeneous"
++msgstr ""
++
++#: config/dillocfg_token.c:549
++msgid "Tab title compress"
++msgstr ""
++
++#: config/dillocfg_token.c:557
++msgid "Compress vowels"
++msgstr ""
++
++#: config/dillocfg_token.c:565
++msgid "Compress_common_prefixes"
++msgstr ""
++
++#: config/dillocfg_token.c:574
++msgid "Default"
++msgstr ""
+diff -pruN dillo-0.8.6/po/en@boldquot.header dillo-0.8.6-i18n-misc-20060709/po/en@boldquot.header
+--- dillo-0.8.6/po/en@boldquot.header 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/po/en@boldquot.header 2006-05-16 01:21:06.000000000 +0900
+@@ -0,0 +1,25 @@
++# All this catalog "translates" are quotation characters.
++# The msgids must be ASCII and therefore cannot contain real quotation
++# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
++# and double quote (0x22). These substitutes look strange; see
++# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
++#
++# This catalog translates grave accent (0x60) and apostrophe (0x27) to
++# left single quotation mark (U+2018) and right single quotation mark (U+2019).
++# It also translates pairs of apostrophe (0x27) to
++# left single quotation mark (U+2018) and right single quotation mark (U+2019)
++# and pairs of quotation mark (0x22) to
++# left double quotation mark (U+201C) and right double quotation mark (U+201D).
++#
++# When output to an UTF-8 terminal, the quotation characters appear perfectly.
++# When output to an ISO-8859-1 terminal, the single quotation marks are
++# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
++# grave/acute accent (by libiconv), and the double quotation marks are
++# transliterated to 0x22.
++# When output to an ASCII terminal, the single quotation marks are
++# transliterated to apostrophes, and the double quotation marks are
++# transliterated to 0x22.
++#
++# This catalog furthermore displays the text between the quotation marks in
++# bold face, assuming the VT100/XTerm escape sequences.
++#
+diff -pruN dillo-0.8.6/po/en@quot.header dillo-0.8.6-i18n-misc-20060709/po/en@quot.header
+--- dillo-0.8.6/po/en@quot.header 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/po/en@quot.header 2006-05-16 01:21:06.000000000 +0900
+@@ -0,0 +1,22 @@
++# All this catalog "translates" are quotation characters.
++# The msgids must be ASCII and therefore cannot contain real quotation
++# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
++# and double quote (0x22). These substitutes look strange; see
++# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
++#
++# This catalog translates grave accent (0x60) and apostrophe (0x27) to
++# left single quotation mark (U+2018) and right single quotation mark (U+2019).
++# It also translates pairs of apostrophe (0x27) to
++# left single quotation mark (U+2018) and right single quotation mark (U+2019)
++# and pairs of quotation mark (0x22) to
++# left double quotation mark (U+201C) and right double quotation mark (U+201D).
++#
++# When output to an UTF-8 terminal, the quotation characters appear perfectly.
++# When output to an ISO-8859-1 terminal, the single quotation marks are
++# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
++# grave/acute accent (by libiconv), and the double quotation marks are
++# transliterated to 0x22.
++# When output to an ASCII terminal, the single quotation marks are
++# transliterated to apostrophes, and the double quotation marks are
++# transliterated to 0x22.
++#
+diff -pruN dillo-0.8.6/po/insert-header.sin dillo-0.8.6-i18n-misc-20060709/po/insert-header.sin
+--- dillo-0.8.6/po/insert-header.sin 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/po/insert-header.sin 2006-05-16 01:21:06.000000000 +0900
+@@ -0,0 +1,23 @@
++# Sed script that inserts the file called HEADER before the header entry.
++#
++# At each occurrence of a line starting with "msgid ", we execute the following
++# commands. At the first occurrence, insert the file. At the following
++# occurrences, do nothing. The distinction between the first and the following
++# occurrences is achieved by looking at the hold space.
++/^msgid /{
++x
++# Test if the hold space is empty.
++s/m/m/
++ta
++# Yes it was empty. First occurrence. Read the file.
++r HEADER
++# Output the file's contents by reading the next line. But don't lose the
++# current line while doing this.
++g
++N
++bb
++:a
++# The hold space was nonempty. Following occurrences. Do nothing.
++x
++:b
++}
+¥Ð¥¤¥Ê¥ê¡¼¡¦¥Õ¥¡¥¤¥ëdillo-0.8.6/po/ja.gmo¤Èdillo-0.8.6-i18n-misc-20060709/po/ja.gmo¤Ï°ã¤¤¤Þ¤¹
+diff -pruN dillo-0.8.6/po/ja.po dillo-0.8.6-i18n-misc-20060709/po/ja.po
+--- dillo-0.8.6/po/ja.po 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/po/ja.po 2006-07-09 00:49:43.000000000 +0900
+@@ -0,0 +1,2207 @@
++# DILLO 日本語メッセージ
++# Copyright (C) 2003-2006
++# This file is distributed under the same license as the dillo package.
++# Kiyo <kiyo@teki.jpn.ph>, 2003-2006.
++msgid ""
++msgstr ""
++"Project-Id-Version: dillo 0.8.6-i18n-misc\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2006-07-09 00:49+0900\n"
++"PO-Revision-Date: 2006-03-26 22:06+0900\n"
++"Last-Translator: Kiyo <kiyo@teki.jpn.ph>\n"
++"Language-Team: Japanese <kiyo@teki.jpn.ph>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=UTF-8\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#: src/msg.h:27
++msgid "HTTP warning: "
++msgstr "HTTP 警告: "
++
++#: src/auth.c:87
++msgid "Browser Url has changed\n"
++msgstr "ブラウザã®UrlãŒå¤‰æ›´ã•ã‚Œã¦ã„ã¾ã—ãŸ\n"
++
++#: src/cache.c:253
++msgid "WARNING: Cache_entry_add, leaking an entry.\n"
++msgstr "警告: Cache_entry_addã§ã‚¨ãƒ³ãƒˆãƒªãƒ¼ãŒæ¼ã‚Œã¦ã„ã¾ã™ã€‚\n"
++
++#: src/cache.c:316
++msgid "## Aborting CCCQuery\n"
++msgstr "## CCCQueryをアボートã—ã¦ã„ã¾ã™\n"
++
++#: src/cache.c:319
++msgid "## Aborting CCCAnswer\n"
++msgstr "## CCCAnswerをアボートã—ã¦ã„ã¾ã™\n"
++
++#: src/cache.c:322
++msgid "## Aborting raw2\n"
++msgstr "## raw2をアボートã—ã¦ã„ã¾ã™\n"
++
++#: src/cache.c:365
++msgid "## No more clients for this entry\n"
++msgstr "## ã“ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã«ã¯ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆãŒã‚ã‚Šã¾ã›ã‚“\n"
++
++#: src/cache.c:369
++msgid "Cache_prepare_reload: ERROR, entry still has clients\n"
++msgstr ""
++"Cache_prepare_reload: エラー エントリーãŒã¾ã ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚’æŒã£ã¦ã„ã¾ã™\n"
++
++#: src/cache.c:398
++#, c-format
++msgid "Reloading >%s< because it shouldn't be cached\n"
++msgstr "キャッシュã•ã‚Œã‚‹ã¹ãã§ã¯ãªã„ã®ã§>%s<ã‚’å†èª­ã¿è¾¼ã¿ã—ã¦ã„ã¾ã™\n"
++
++#: src/cache.c:418
++msgid "ERROR: unsupported protocol"
++msgstr "エラー: サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„プロトコルã§ã™"
++
++#: src/cache.c:488
++#, c-format
++msgid "Redirect loop for URL: >%s<\n"
++msgstr "URL: >%s<ã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆãƒ«ãƒ¼ãƒ—\n"
++
++#: src/cache.c:590
++#, c-format
++msgid "Bad clocks, ignore expire on >%s<\n"
++msgstr "ä¸æ­£ãªæ™‚é–“ã§ã™ã€‚>%s<ã®æœ‰åŠ¹æœŸé™ã‚’無視ã—ã¾ã™\n"
++
++#: src/cache.c:594
++#, c-format
++msgid "Forcing min expire %d on >%s< instead %ld\n"
++msgstr "最å°æœ‰åŠ¹æœŸé™%dã‚’>%s<ã§%ldã®ä»£ã‚ã‚Šã«å¼·åˆ¶ã—ã¾ã™\n"
++
++#: src/cache.c:678
++msgid "'Cache-Control: max-age=' without 'Date: ' header"
++msgstr "'Date: 'ヘッダã®ç„¡ã„'Cache-Control: max-age='"
++
++#: src/cache.c:722
++msgid "Server didn't send Content-Type in header.\n"
++msgstr "サーãƒãƒ¼ãŒãƒ˜ãƒƒãƒ€ã§Content-Typeã‚’é€ä¿¡ã—ã¾ã›ã‚“ã§ã—ãŸã€‚\n"
++
++#: src/cache.c:743
++#, c-format
++msgid "Forcing default expire to query url >%s<\n"
++msgstr "è¦æ±‚ã•ã‚ŒãŸurl>%s<ã«ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®æœ‰åŠ¹æœŸé™ã‚’強制ã—ã¾ã™\n"
++
++#: src/cache.c:831
++#, c-format
++msgid "Cache_decode_data: got all data -- decodinging %s\n"
++msgstr ""
++"Cache_decode_data: å…¨ã¦ã®ãƒ‡ãƒ¼ã‚¿ã‚’å–å¾—ã—ã¾ã—㟠-- %sをデコードã—ã¦ã„ã¾ã™\n"
++
++#: src/cache.c:840
++msgid "Cache_decode_data: not gzip data!\n"
++msgstr "Cache_decode_data: gzipデータã§ã¯ã‚ã‚Šã¾ã›ã‚“!\n"
++
++#: src/cache.c:846
++msgid "Cache_decode_data: invalid gzip data!\n"
++msgstr "Cache_decode_data: ä¸æ­£ãªgzipデータã§ã™!\n"
++
++#: src/cache.c:898
++msgid "not x-gzip\n"
++msgstr "x-gzipã§ã¯ã‚ã‚Šã¾ã›ã‚“\n"
++
++#: src/cache.c:931
++#, c-format
++msgid ""
++"Content-Length does NOT match message body,\n"
++" at: %s\n"
++msgstr ""
++"Content-LengthãŒmessage bodyã¨é©åˆã—ã¾ã›ã‚“ã§ã—ãŸã€‚\n"
++": %s\n"
++
++#: src/cache.c:950
++msgid "Cache_process_io Op = IOAbort; not implemented yet\n"
++msgstr "Cache_process_io Op = IOAbort; ã¾ã å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“\n"
++
++#: src/cache.c:1004
++#, c-format
++msgid "ERROR: redirect loop for: %s"
++msgstr "エラー: %sã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆãƒ«ãƒ¼ãƒ—"
++
++#: src/cache.c:1015
++#, c-format
++msgid ""
++">>>Redirect from: %s\n"
++" to %s\n"
++msgstr ""
++">>>%sã‹ã‚‰\n"
++"%sã¸ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã—ã¾ã™\n"
++
++#: src/cache.c:1035
++msgid ">>>Image redirection without entity-content<<<\n"
++msgstr ">>>entity-contentã®ãªã„ç”»åƒã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆ<<<\n"
++
++#: src/cache.c:1037
++msgid ">>>Image redirection with entity-content<<<\n"
++msgstr ">>>entity-contentã®ã‚ã‚‹ç”»åƒã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆ<<<\n"
++
++#: src/cache.c:1103
++msgid "FATAL!:*** >>>> Cache_process_queue Caught busy!!!\n"
++msgstr "致命的!:*** >>>> Cache_process_queueã¯ãƒ“ジーを検出ã—ã¾ã—ãŸ!!!\n"
++
++#: src/cache.c:1111
++#, c-format
++msgid "Content-Type '%s' doesn't match the real data.\n"
++msgstr "Content-Type '%s'ã¯å®Ÿéš›ã®ãƒ‡ãƒ¼ã‚¿ã¨ãƒžãƒƒãƒã—ã¦ã„ã¾ã›ã‚“。\n"
++
++#: src/cache.c:1140
++#, c-format
++msgid "HTTP warning: Content-Type '%s' doesn't match the real data."
++msgstr "HTTP警告: Content-Type '%s'ã¯å®Ÿéš›ã®ãƒ‡ãƒ¼ã‚¿ã¨ãƒžãƒƒãƒã—ã¦ã„ã¾ã›ã‚“。"
++
++#: src/cache.c:1177
++#, c-format
++msgid "Unhandled MIME type: <%s>\n"
++msgstr "扱ãˆãªã„MIMEタイプ: <%s>\n"
++
++#: src/cache.c:1202
++msgid "Client Callback is NULL"
++msgstr "クライアントã®ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯ãŒNULLã§ã™"
++
++#: src/cache.c:1303
++msgid "WARNING: Cache_stop_client, inexistent client\n"
++msgstr "警告: Cache_stop_client クライアントãŒå­˜åœ¨ã—ã¾ã›ã‚“\n"
++
++#: src/cache.c:1445 src/capi.c:428 src/capi.c:481 src/capi.c:536
++#: src/capi.c:570 src/IO/dpi.c:720 src/IO/dpi.c:760
++msgid " Not implemented\n"
++msgstr "ã™ã¿ã¾ã›ã‚“ã€ã¾ã å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“。\n"
++
++#: src/capi.c:229
++msgid "Capi_verify_dpi_url_request: Permission Denied!\n"
++msgstr "Capi_verify_dpi_url_request: 許å¯ãŒã‚ã‚Šã¾ã›ã‚“!\n"
++
++#: src/capi.c:324
++#, c-format
++msgid " reload=%d URL_E2EReload=%d\n"
++msgstr " reload=%d URL_E2EReload=%d\n"
++
++#: src/capi.c:389
++msgid " ERROR: [a_Capi_dpi_send_cmd] No open connection found\n"
++msgstr " エラー: [a_Capi_dpi_send_cmd] é–‹ã„ã¦ã„る接続ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ\n"
++
++#: src/capi.c:457
++msgid "ERROR: can't start dpid daemon!"
++msgstr "エラー: dpidデーモンを開始ã§ãã¾ã›ã‚“"
++
++#: src/capi.c:492
++msgid " ** Capi 2F catched an invalid 'web' structure\n"
++msgstr " ** Capi 2F 無効ãª'web'構造体をキャッãƒã—ã¾ã—ãŸ\n"
++
++#: src/capi.c:552
++msgid " Error with pipe\n"
++msgstr "pipeã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ\n"
++
++#: src/commands.c:166
++msgid "View Source"
++msgstr "ソースã®è¡¨ç¤º"
++
++#: src/commands.c:183
++msgid "Detected HTML errors"
++msgstr "検出ã•ã‚ŒãŸHTMLã®ã‚¨ãƒ©ãƒ¼"
++
++#: src/commands.c:265
++msgid "Stopped"
++msgstr "åœæ­¢ã—ã¾ã—ãŸã€‚"
++
++#: src/dillo.c:109
++msgid ""
++" -x, --xid XID Open first Dillo window in an existing\n"
++" GtkSocket which window ID is XID (decimal)."
++msgstr ""
++" -x, --xid XID window IDãŒXID(å進数)ã§ã‚る既存ã®GtkSocketã§\n"
++" 最åˆã®Dilloã®windowã‚’é–‹ãã¾ã™ã€‚"
++
++#: src/dillo.c:112
++msgid " -v, --version Display version info and exit."
++msgstr " -v, --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã¦çµ‚了ã—ã¾ã™ã€‚"
++
++#: src/dillo.c:114
++msgid " -h, --help Display this help text and exit."
++msgstr " -h, --help ã“ã®ãƒ˜ãƒ«ãƒ—テキストを表示ã—ã¦çµ‚了ã—ã¾ã™ã€‚"
++
++#: src/dillo.c:116
++msgid ""
++" -f, --fullwindow Start in full window mode: hide address bar,\n"
++" navigation buttons, menu, and status bar."
++msgstr ""
++" -f, --fullwindow 全画é¢ãƒ¢ãƒ¼ãƒ‰ã§é–‹å§‹: アドレスãƒãƒ¼ã€\n"
++" ナビゲーションボタンã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã€ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãƒãƒ¼ãŒéžè¡¨"
++"示ã«ãªã‚Šã¾ã™ã€‚"
++
++#: src/dillo.c:119
++msgid " -l, --local Don't follow links for this URL(s)."
++msgstr " -l, --local ã“ã®URLã§ãƒªãƒ³ã‚¯ã‚’ãŸã©ã‚Šã¾ã›ã‚“"
++
++#: src/dillo.c:121
++msgid ""
++" -g, -geometry GEO Set initial window position where GEO is\n"
++" <width>x<height>{+-}<x>{+-}<y>"
++msgstr ""
++" -g, -geometry GEO åˆæœŸã‚¦ã‚¤ãƒ³ãƒ‰ã‚¦ã®ä½ç½®ã‚’GEOã«è¨­å®šã—ã¾ã™ã€‚\n"
++" <width>x<height>{+-}<x>{+-}<y>"
++
++#: src/dillo.c:125
++msgid ""
++" -D, --debug-rendering Draw additionaly several lines in a web page,\n"
++" representing its structure. For debugging. "
++msgstr ""
++" -D, --debug-rendering WEBページã®ä¸­ã«ãã®æ§‹é€ ã‚’表ã™ã‚ˆã†ã«ã€\n"
++" ã„ãã¤ã‹ã®ç·šã‚’追加ã§æç”»ã—ã¾ã™ã€‚ デãƒãƒƒã‚°ç”¨ã§ã™ã€‚ "
++
++#: src/dillo.c:129
++msgid " -R, --rcfile FILE Use alternative rcfile."
++msgstr " -R, --rcfile FILE 代ã‚ã‚Šã®è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’使用ã—ã¾ã™ã€‚"
++
++#: src/dillo.c:266
++#, c-format
++msgid ""
++"Error: the XID must be an unsigned decimal numerical value.\n"
++"The offending value was: %s\n"
++msgstr ""
++"エラー: XIDã¯ç¬¦å·ç„¡ã—ã®å進数ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚\n"
++"å•é¡Œã¨ãªã£ãŸå€¤: %s\n"
++
++#: src/dillo.c:284
++msgid "Error in command line options.\n"
++msgstr "コマンドラインオプションã§ã‚¨ãƒ©ãƒ¼ãŒèµ·ãã¾ã—ãŸã€‚\n"
++
++#: src/dillo.c:291
++#, c-format
++msgid "Setting gtk charset to %s...\n"
++msgstr "gtk charsetã‚’%sã«è¨­å®šã—ã¦ã„ã¾ã™...\n"
++
++#: src/dillo.c:395
++msgid "Dillo: normal exit!\n"
++msgstr "Dillo: 正常終了\n"
++
++#: src/dillo.c:409
++#, c-format
++msgid "Dillo: error creating directory %s: %s\n"
++msgstr "Dillo: ディレクトリ%sã®ä½œæˆã§ã‚¨ãƒ©ãƒ¼ã—ã¾ã—ãŸ: %s\n"
++
++#: src/dillo.c:412
++#, c-format
++msgid "Dillo: error reading %s: %s\n"
++msgstr "Dillo: %sã®èª­ã¿è¾¼ã¿ã§ã‚¨ãƒ©ãƒ¼ã—ã¾ã—ãŸ: %s\n"
++
++#: src/dillo.c:461
++#, c-format
++msgid "Option %s requires %d argument(s)\n"
++msgstr "オプション %sã¯%d個ã®å¼•æ•°ã‚’å¿…è¦ã¨ã—ã¾ã™\n"
++
++#: src/dillo.c:496
++msgid ""
++"\n"
++"Usage: dillo [OPTIONS] [URL|FILE]...\n"
++"Options:\n"
++msgstr ""
++"\n"
++"使ã„æ–¹: dillo [オプション] [URL|ファイル]...\n"
++"オプション:\n"
++
++#: src/dillo.c:503
++#, c-format
++msgid " %s, %s *Undocumented*\n"
++msgstr " %s, %s (説明ãªã—)\n"
++
++#: src/dillo.c:506
++msgid ""
++" URL URL to browse.\n"
++" FILE Local FILE to view.\n"
++msgstr ""
++" URL ブラウズã™ã‚‹URL\n"
++" FILE 表示ã™ã‚‹ãƒ­ãƒ¼ã‚«ãƒ«ãƒ•ã‚¡ã‚¤ãƒ«\n"
++
++#: src/html.c:182
++#, c-format
++msgid "HTML warning: line %d, "
++msgstr "HTML 警告: %d行目, "
++
++#: src/html.c:213
++#, c-format
++msgid "URL has %d illegal character%s [%d space%s]\n"
++msgstr "URLã«%d個ã®ä¸æ­£ãªæ–‡å­—%s [%d個ã®ã‚¹ãƒšãƒ¼ã‚¹%s]ãŒå«ã¾ã‚Œã¦ã„ã¾ã™\n"
++
++#: src/html.c:216
++#, c-format
++msgid "URL has %d illegal character%s [%d in (00-1F or 7F)]\n"
++msgstr "URLã«%d個ã®ä¸æ­£ãªæ–‡å­—%s[%d個ã®(00-1Fã¾ãŸã¯7F)]ãŒå«ã¾ã‚Œã¦ã„ã¾ã™\n"
++
++#: src/html.c:219
++#, c-format
++msgid "URL has %d illegal character%s [%d space%s and %d in (00-1F or 7F)]\n"
++msgstr ""
++"URLã«%d個ã®ä¸æ­£ãªæ–‡å­—%s [%d個ã®ã‚¹ãƒšãƒ¼ã‚¹%sã¨%d個ã®(00-1F, 7F)]ãŒå«ã¾ã‚Œã¦ã„ã¾"
++"ã™\n"
++
++#: src/html.c:1226
++msgid "numeric character reference out of range\n"
++msgstr "数値文字å‚ç…§ãŒç¯„囲外ã§ã™\n"
++
++#: src/html.c:1234
++msgid "numeric character reference without trailing ';'\n"
++msgstr "後ã«';'ãŒç„¡ã„数値文字å‚ç…§ã§ã™\n"
++
++#: src/html.c:1246
++#, c-format
++msgid "undefined character entity '%s'\n"
++msgstr "未定義ã®æ–‡å­—å‚ç…§ '%s'\n"
++
++#: src/html.c:1254
++msgid "character entity reference without trailing ';'\n"
++msgstr "後ã«';'ãŒç„¡ã„文字実体å‚ç…§ã§ã™\n"
++
++#: src/html.c:1262
++msgid "code positions 128-159 are not defined for ISO Latin-1\n"
++msgstr "コードãƒã‚¤ãƒ³ãƒˆ 128-159ã¯ISO Latin-1ã§å®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“\n"
++
++#: src/html.c:1270
++msgid "literal '&'\n"
++msgstr "リテラル '&'\n"
++
++#: src/html.c:1379
++msgid "TAB character inside <PRE>\n"
++msgstr "TAB文字ãŒ<PRE>ã®ä¸­ã«ã‚ã‚Šã¾ã™\n"
++
++#: src/html.c:1615
++#, c-format
++msgid " - forcing close of open tag: <%s>\n"
++msgstr " - 開始タグã«çµ‚了タグを強制ã—ã¾ã™: <%s>\n"
++
++#: src/html.c:1624
++#, c-format
++msgid "unexpected closing tag: </%1$s>. -- expected </%2$s>\n"
++msgstr "予期ã—ãªã„終了タグ: </%1$s> -- 予期ã•ã‚Œã¦ã„ãŸã®ã¯</%2$s>ã§ã™\n"
++
++#: src/html.c:1696
++#, c-format
++msgid "Garbage after length: %s\n"
++msgstr "é•·ã•%s以é™ã«ä¸ç”¨ãªãƒ‡ãƒ¼ã‚¿\n"
++
++#: src/html.c:1715
++msgid "color is not in \"#RRGGBB\" format\n"
++msgstr "colorãŒ\"#RRGGBB\"ã®åž‹å¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n"
++
++#: src/html.c:1735
++#, c-format
++msgid "'%s' value is not of the form [A-Za-z][A-Za-z0-9:_.-]*\n"
++msgstr "値'%s'ã¯[A-Za-z][A-Za-z0-9:_.-]*ã®å½¢å¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n"
++
++#: src/html.c:1839
++msgid "HTML element was already open\n"
++msgstr "HTMLè¦ç´ ã¯æ—¢ã«é–‹ã„ã¦ã„ã¾ã™\n"
++
++#: src/html.c:1866
++msgid "HEAD element must go before the BODY section\n"
++msgstr "BASEè¦ç´ ã¯HEADセクションã«ç¾ã‚れるã¹ãã§ã™ã€‚\n"
++
++#: src/html.c:1876
++msgid "HEAD element was already open\n"
++msgstr "HEADè¦ç´ ã¯æ—¢ã«é–‹ã„ã¦ã„ã¾ã™\n"
++
++#: src/html.c:1889
++msgid "HEAD section lacks the TITLE element\n"
++msgstr "HEADセクションã«TITLEè¦ç´ ãŒæ¬ ã‘ã¦ã„ã¾ã™\n"
++
++#: src/html.c:1917
++msgid "the TITLE element must be inside the HEAD section\n"
++msgstr "TITLEè¦ç´ ã¯HEADセクションã«ç¾ã‚れるã¹ãã§ã™ã€‚\n"
++
++#: src/html.c:1986
++msgid "BODY element was already open\n"
++msgstr "BODYè¦ç´ ã¯æ—¢ã«é–‹ã„ã¦ã„ã¾ã™\n"
++
++#: src/html.c:1991
++msgid "unclosed HEAD element\n"
++msgstr "é–‰ã˜ã‚‰ã‚Œãªã‹ã£ãŸHEADè¦ç´ \n"
++
++#: src/html.c:2187
++msgid "<td> or <th> outside <table>\n"
++msgstr "<td>ã¾ãŸã¯<th>ãŒ<table>ã®å¤–å´ã«ã‚ã‚Šã¾ã™\n"
++
++#: src/html.c:2191
++msgid "<td> or <th> outside <tr>\n"
++msgstr "<td>ã¾ãŸã¯<th>ãŒ<tr>ã®å¤–å´ã«ã‚ã‚Šã¾ã™\n"
++
++#: src/html.c:2309
++msgid "Invalid HTML syntax: <tr> outside <table>\n"
++msgstr "ä¸æ­£ãªHTML構文: <tr>ãŒ<table>ã®å¤–å´ã«ã‚ã‚Šã¾ã™\n"
++
++#: src/html.c:2367
++msgid "<noframes> outside of <frameset>!!!\n"
++msgstr "<noframes>ãŒ<frameset>ã®å¤–å´ã«ã‚ã‚Šã¾ã™!!!\n"
++
++#: src/html.c:2375
++msgid "<noframe> is illegal tag !!! use <noframes>.\n"
++msgstr "<noframe>ã¯ä¸æ­£ãªã‚¿ã‚°ã§ã™!!! <noframes>を使用ã—ã¦ãã ã•ã„\n"
++
++#: src/html.c:2562
++msgid "<frame> outside of <frameset>\n"
++msgstr "<frame>ãŒ<frameset>ã®å¤–å´ã«ã‚ã‚Šã¾ã™\n"
++
++#: src/html.c:2565
++msgid "<frame> inside of <noframes>\n"
++msgstr "<frame>ãŒ<noframes>ã®å†…å´ã«ã‚ã‚Šã¾ã™\n"
++
++#: src/html.c:2568
++msgid "<frame> inside of <iframe>\n"
++msgstr "<frame>ãŒ<iframe>ã®å†…å´ã«ã‚ã‚Šã¾ã™\n"
++
++#: src/html.c:2620
++msgid "incorrectly placed <frameset>\n"
++msgstr "<frameset>ãŒèª¤ã£ãŸå ´æ‰€ã«ã‚ã‚Šã¾ã™\n"
++
++#: src/html.c:2636
++msgid "<frameset> inside of <noframes>\n"
++msgstr "<frameset>ãŒ<noframes>ã®å†…å´ã«ã‚ã‚Šã¾ã™\n"
++
++#: src/html.c:2641
++msgid "<frameset> inside of <iframe>\n"
++msgstr "<frameset>ãŒ<iframe>ã®å†…å´ã«ã‚ã‚Šã¾ã™\n"
++
++#: src/html.c:3123
++msgid " Html_tag_open_img: server-side map (ISMAP)\n"
++msgstr " Html_tag_open_img: server-side map (ISMAP)\n"
++
++#: src/html.c:3149
++msgid "nested <map>\n"
++msgstr "<map>ãŒãƒã‚¹ãƒˆã•ã‚Œã¦ã„ã¾ã™\n"
++
++#: src/html.c:3201
++msgid "usemap coords MUST be separated with ','\n"
++msgstr "usemapコードã¯','ã§åŒºåˆ‡ã‚‰ã‚Œã¦ã„ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“\n"
++
++#: src/html.c:3245
++msgid "nohref"
++msgstr "nohref"
++
++#: src/html.c:3284
++msgid "link depends on javascript()\n"
++msgstr "リンクãŒjavascript()ã«ä¾å­˜ã—ã¦ã„ã¾ã™ã€‚\n"
++
++#: src/html.c:3300
++#, c-format
++msgid "Registering ANCHOR: %s\n"
++msgstr "ANCHORを登録ã—ã¦ã„ã¾ã™: %s\n"
++
++#: src/html.c:3305
++msgid "Anchor names must be unique within the document\n"
++msgstr "アンカーåã¯æ–‡æ›¸å†…ã§å›ºæœ‰ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“\n"
++
++#: src/html.c:3512
++msgid "it is strongly recommended using <UL> instead of <MENU>\n"
++msgstr "<MENU>ã®ä»£ã‚Šã«<UL>を使ã†ã“ã¨ãŒå¼·ã推奨ã•ã‚Œã¦ã„ã¾ã™\n"
++
++#: src/html.c:3574
++msgid "<li> outside <ul> or <ol>\n"
++msgstr "<li>ãŒ<ul>ã¾ãŸã¯<ol>ã®å¤–å´ã«ã‚ã‚Šã¾ã™\n"
++
++#: src/html.c:3770
++msgid "nested forms\n"
++msgstr "formsãŒãƒã‚¹ãƒˆã•ã‚Œã¦ã„ã¾ã™\n"
++
++#: src/html.c:3817
++msgid "FORM lacks a Submit button\n"
++msgstr "FORMã«SubmitボタンãŒæ¬ ã‘ã¦ã„ã¾ã™\n"
++
++#: src/html.c:3819
++msgid " (added a submit button internally)\n"
++msgstr " (submitボタンを内部ã§è¿½åŠ ã—ã¾ã—ãŸ)\n"
++
++#: src/html.c:3923
++msgid "META elements must be inside the HEAD section\n"
++msgstr "METAè¦ç´ ã¯HEADセクションã«ç¾ã‚れるã¹ãã§ã™ã€‚\n"
++
++#: src/html.c:3975
++#, c-format
++msgid ""
++"The NON-STANDARD meta refresh tag. The HTML 4.01 SPEC (sec 7.4.4) recommends "
++"explicitly to avoid it. The author wanted you to go <%s>\n"
++msgstr ""
++"éžæ¨™æº–ã®meta refreshã‚¿ã‚°ã§ã™ã€‚HTML4.01SPEC(sec 7.4.4)ã§ã¯ã“れを回é¿ã™ã‚‹ã“ã¨ã‚’"
++"ã¯ã£ãã‚Šã¨æŽ¨å¥¨ã—ã¦ã„ã¾ã™ã€‚(ã“ã®ãƒšãƒ¼ã‚¸ã®)著者ã¯<%s>ã«è¡Œãã“ã¨ã‚’望んã§ã„ã¾ã—"
++"ãŸã€‚\n"
++
++#: src/html.c:4345
++msgid "Html_submit_form: Method unknown\n"
++msgstr "Html_submit_form: ä¸æ˜Žãªãƒ¡ã‚½ãƒƒãƒ‰ã§ã™\n"
++
++#: src/html.c:4427
++msgid "Html_input_image: unable to create image submit.\n"
++msgstr "Html_input_image: ç”»åƒé€ä¿¡ãƒœã‚¿ãƒ³ã‚’生æˆã§ãã¾ã›ã‚“。\n"
++
++#: src/html.c:4449
++msgid "input camp outside <form>\n"
++msgstr "inputã®å ´æ‰€ãŒ<form>ã®å¤–å´ã«ã‚ã‚Šã¾ã™\n"
++
++#: src/html.c:4529
++msgid "submit"
++msgstr "é€ä¿¡"
++
++#: src/html.c:4536 config/dillocfg.c:79
++msgid "Reset"
++msgstr "リセット"
++
++#: src/html.c:4546
++msgid "Submit"
++msgstr "é€ä¿¡"
++
++#: src/html.c:4563
++msgid "An input of the type \"file\" wasn't rendered!\n"
++msgstr "inputタイプ\"file\"ã¯ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚\n"
++
++#: src/html.c:4737
++msgid "<textarea> outside <form>\n"
++msgstr "<textarea>ãŒ<form>ã®å¤–å´ã«ã‚ã‚Šã¾ã™\n"
++
++#: src/html.c:4742
++msgid "nested <textarea>\n"
++msgstr "<textarea>ãŒãƒã‚¹ãƒˆã•ã‚Œã¦ã„ã¾ã™\n"
++
++#: src/html.c:4814
++msgid "<select> outside <form>\n"
++msgstr "<select>ãŒ<form>ã®å¤–å´ã«ã‚ã‚Šã¾ã™\n"
++
++#: src/html.c:4818
++msgid "nested <select>\n"
++msgstr "<select>ãŒãƒã‚¹ãƒˆã•ã‚Œã¦ã„ã¾ã™\n"
++
++#: src/html.c:5042
++msgid "base URI is relative (it MUST be absolute)\n"
++msgstr "base URIãŒé–¢é€£ã—ã¦ã„ã¾ã™(ç„¡æ¡ä»¶ã§ã‚ã‚‹ã¹ãã§ã™)\n"
++
++#: src/html.c:5049
++msgid "the BASE element must appear in the HEAD section\n"
++msgstr "BASEè¦ç´ ã¯HEADセクションã«ç¾ã‚れるã¹ãã§ã™\n"
++
++#: src/html.c:5400
++#, c-format
++msgid "<%1$s> is not allowed to contain <%2$s>. -- closing <%3$s>\n"
++msgstr "<%1$s>ã¯<%2$s>ã‚’å«ã‚€ã“ã¨ãŒè¨±ã•ã‚Œã¦ã„ã¾ã›ã‚“。 -- <%3$s>ã‚’é–‰ã˜ã¦ã„ã¾ã™\n"
++
++#: src/html.c:5515
++#, c-format
++msgid "<pre> is not allowed to contain <%s>\n"
++msgstr "<pre>ã¯<%s>ã‚’å«ã‚€ã“ã¨ãŒè¨±ã•ã‚Œã¦ã„ã¾ã›ã‚“\n"
++
++#: src/html.c:5537
++msgid "'id' and 'name' attribute of <a> tag differ\n"
++msgstr "<a>ã‚¿ã‚°ã®'id'ã¨'name'属性ã¯ç•°ãªã‚Šã¾ã™\n"
++
++#: src/html.c:5764
++msgid "Html_write_raw : bufsize is negative!\n"
++msgstr "Html_write_raw : ãƒãƒƒãƒ•ã‚¡ã‚µã‚¤ã‚ºãŒè² ã®å€¤ã§ã™!\n"
++
++#: src/html.c:5842
++msgid "attribute lacks closing quote\n"
++msgstr "属性ã§é–‰ã˜ã‚‹ã‚¯ã‚©ãƒ¼ãƒˆãŒæ¬ ã‘ã¦ã„ã¾ã™\n"
++
++#: src/html.c:5850
++#, c-format
++msgid "<%s> element lacks its closing '>'\n"
++msgstr "<%s>属性ã¯'>'ã§é–‰ã˜ã‚‰ã‚Œã¦ã„ã¾ã›ã‚“\n"
++
++#: src/html.c:6144
++msgid "could not allocate character encoding converter"
++msgstr "文字コードコンãƒãƒ¼ã‚¿ã‚’割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“"
++
++#: src/misc.c:455
++msgid "Untitled"
++msgstr "無題"
++
++#: src/interface.c:249
++msgid "Selection retrieval failed\n"
++msgstr "セレクションã®ã«å¤±æ•—\n"
++
++#: src/interface.c:363
++msgid "Clear the URL box (middle-click to paste an URL)."
++msgstr "URLボックスをクリア(中クリックã§URLを貼り付ã‘)"
++
++#: src/interface.c:385
++msgid "Search the Web"
++msgstr "Webを検索"
++
++#: src/interface.c:417 src/menu.c:231 src/menu.c:280
++msgid "Back"
++msgstr "戻る"
++
++#: src/interface.c:421
++msgid "Go to previous page (right-click for menu)."
++msgstr "å‰ã®ãƒšãƒ¼ã‚¸ã«æˆ»ã‚‹(å³ã‚¯ãƒªãƒƒã‚¯ã§ãƒ¡ãƒ‹ãƒ¥ãƒ¼)"
++
++#: src/interface.c:450 src/menu.c:233 src/menu.c:282
++msgid "Forward"
++msgstr "進む"
++
++#: src/interface.c:454
++msgid "Go to next page (right-click for menu)."
++msgstr "次ã®ãƒšãƒ¼ã‚¸ã«é€²ã‚€(å³ã‚¯ãƒªãƒƒã‚¯ã§ãƒ¡ãƒ‹ãƒ¥ãƒ¼)"
++
++#: src/interface.c:481
++msgid "Home"
++msgstr "ホーム"
++
++#: src/interface.c:485
++msgid "Go to the Home page"
++msgstr "ホームページを開ã"
++
++#: src/interface.c:499 config/dillocfg.c:80
++msgid "Reload"
++msgstr "å†èª­è¾¼"
++
++#: src/interface.c:500
++msgid "Reload this page"
++msgstr "ã“ã®ãƒšãƒ¼ã‚¸ã‚’å†èª­è¾¼ã™ã‚‹"
++
++#: src/interface.c:512 config/dillocfg.c:81
++msgid "Save"
++msgstr "ä¿å­˜"
++
++#: src/interface.c:513
++msgid "Save this page"
++msgstr "ã“ã®ãƒšãƒ¼ã‚¸ã‚’ä¿å­˜ã™ã‚‹"
++
++#: src/interface.c:520 src/menu.c:235 src/menu.c:284
++msgid "Stop"
++msgstr "中止"
++
++#: src/interface.c:521
++msgid "Stop the current transfer"
++msgstr "読ã¿è¾¼ã¿ã‚’中止ã™ã‚‹"
++
++#: src/interface.c:534
++msgid "Book"
++msgstr "ブックマーク"
++
++#: src/interface.c:538
++msgid "View bookmarks"
++msgstr "ブックマークã®è¡¨ç¤º"
++
++#: src/interface.c:655 src/interface.c:826
++msgid "Hide Controls"
++msgstr "コントロールã®éžè¡¨ç¤º"
++
++#: src/interface.c:655 src/interface.c:826
++msgid "Show Controls"
++msgstr "コントロールã®è¡¨ç¤º"
++
++#: src/interface.c:929
++msgid "Show HTML bugs (right-click for menu)."
++msgstr "HTMLã®ãƒã‚°ã‚’表示(å³ã‚¯ãƒªãƒƒã‚¯ã§ãƒ¡ãƒ‹ãƒ¥ãƒ¼)"
++
++#: src/interface.c:1231
++#, c-format
++msgid "Warning: search_url ends with '%%'\n"
++msgstr "警告: search_urlã®çµ‚端ã«'%%'ãŒã‚ã‚Šã¾ã™ã€‚\n"
++
++#: src/interface.c:1233
++#, c-format
++msgid "Warning: illegal specifier '%%%c' in search_url\n"
++msgstr "警告: 無効ãªæŒ‡å®šå­'%%%c'ãŒsearch_urlã®ä¸­ã«ã‚ã‚Šã¾ã™ã€‚\n"
++
++#: src/interface.c:1298
++msgid "Dillo: Open File"
++msgstr "Dillo: ファイルを開ã"
++
++#: src/interface.c:1374
++msgid "Clear"
++msgstr "クリア"
++
++#: src/interface.c:1382 src/interface.c:1536 src/nav.c:453
++msgid "Cancel"
++msgstr "å–消"
++
++#: src/interface.c:1513
++msgid "User Name:"
++msgstr "ユーザーå:"
++
++#: src/interface.c:1520
++msgid "Password:"
++msgstr "パスワード:"
++
++#: src/interface.c:1529 src/interface.c:1604 src/interface.c:2073
++#: src/nav.c:453
++msgid "OK"
++msgstr "了解"
++
++#: src/interface.c:1566
++msgid "Dillo: Enter Authentication"
++msgstr "Dillo: èªè¨¼"
++
++#: src/interface.c:1586
++msgid "Dillo: Question"
++msgstr "Dillo: 質å•"
++
++#: src/interface.c:1602
++msgid "Dillo: Open URL"
++msgstr "Dillo: URLã‚’é–‹ã"
++
++#: src/interface.c:1626
++#, c-format
++msgid "File saved (%d Bytes)"
++msgstr "ファイルã«ä¿å­˜ã—ã¾ã—ãŸã€‚(%d ãƒã‚¤ãƒˆ)"
++
++#: src/interface.c:1708
++#, c-format
++msgid "Error trying to save: %s\n"
++msgstr "%sã®æ›¸ã込んã§ã„る時ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚\n"
++
++#: src/interface.c:1761
++msgid "Dillo: Save URL as File..."
++msgstr "Dillo: URLをファイルã«ä¿å­˜..."
++
++#: src/interface.c:1788
++msgid "Dillo: Save link as File..."
++msgstr "Dillo: リンクをファイルã«ä¿å­˜..."
++
++#: src/interface.c:1843 src/interface.c:1857
++msgid "Dillo: Find text"
++msgstr "Dillo: テキストã®æ¤œç´¢"
++
++#: src/interface.c:1844 src/interface.c:1850
++#, c-format
++msgid "Cannot find \"%s\"."
++msgstr "\"%s\"ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚"
++
++#: src/interface.c:1858
++#, c-format
++msgid "No further occurence of \"%s\". Restarting from the beginning."
++msgstr "\"%s\"を最後ã¾ã§æ¤œç´¢ã—ã¾ã—ãŸã€‚ 先頭ã‹ã‚‰å†æ¤œç´¢ã—ã¾ã™ã€‚"
++
++#: src/interface.c:1866
++#, c-format
++msgid "(Find) \"%s\": restart from beginning"
++msgstr "(検索) \"%s\": 最åˆã‹ã‚‰å†é–‹ã—ã¾ã™"
++
++#: src/interface.c:1879
++#, c-format
++msgid "(Find) \"%s\""
++msgstr "(検索) \"%s\""
++
++#: src/interface.c:1885
++msgid "Unexpected return from a_Dw_gtk_scrolled_window_search()\n"
++msgstr "予期ã—ãªã„a_Dw_gtk_scrolled_window_search()ã‹ã‚‰ã®æˆ»ã‚Šå€¤\n"
++
++#: src/interface.c:1937
++msgid "press <Enter> to (repeat) search, <Esc> to close search"
++msgstr "<Enter>を押ã™ã¨(続ã‘ã¦)検索ã€<Esc>ã§æ¤œç´¢ã‚’終了"
++
++#: src/interface.c:1938 src/interface.c:2031
++msgid "Search"
++msgstr "検索"
++
++#: src/interface.c:1940 src/interface.c:1941 src/interface.c:1977
++msgid "Case sensitive"
++msgstr "大文字/å°æ–‡å­—を区別ã™ã‚‹"
++
++#: src/interface.c:1975
++msgid "Dillo: Find text in page"
++msgstr "Dillo: テキストã®æ¤œç´¢"
++
++#: src/interface.c:1978
++msgid "Find"
++msgstr "検索"
++
++#: src/interface.c:2029
++msgid "Dillo"
++msgstr "Dillo"
++
++#: src/interface.c:2029
++msgid "Dillo: Search the Web"
++msgstr "Dillo: Webを検索"
++
++#: src/interface.c:2066
++#, c-format
++msgid "Dillo: Enter proxy password for '%s'"
++msgstr "Dillo: '%s'ã¸ã®ãƒ—ロキシパスワードを入力ã—ã¦ãã ã•ã„"
++
++#: src/interface.c:2151
++msgid "Close"
++msgstr "é–‰ã˜ã‚‹"
++
++#: src/interface.c:2226
++msgid "close"
++msgstr "é–‰ã˜ã‚‹"
++
++#: src/nav.c:383
++#, c-format
++msgid "Unhandled switch type %d in a_Nav_jump_callback in src/nav.c\n"
++msgstr "src/nav.cã®a_Nav_jump_callbackã§å‡¦ç†ã§ããªã„switchã®ç¨®é¡ž %d\n"
++
++#: src/nav.c:452
++msgid "Repost form data?"
++msgstr "データをå†é€ä¿¡ã—ã¾ã™ã‹?"
++
++#: src/menu.c:173
++msgid "_File"
++msgstr "ファイル(_F)"
++
++#: src/menu.c:174
++msgid "_New Window"
++msgstr "æ–°è¦Window(_N)"
++
++#: src/menu.c:177
++msgid "New _Tab"
++msgstr "æ–°è¦ã‚¿ãƒ–(_T)"
++
++#: src/menu.c:181
++msgid "_Open File..."
++msgstr "ファイルを開ã(_O)..."
++
++#: src/menu.c:183
++msgid "Open _URL..."
++msgstr "URLã‚’é–‹ã(_U)..."
++
++#: src/menu.c:189
++msgid "Close Window"
++msgstr "Windowã‚’é–‰ã˜ã‚‹"
++
++#: src/menu.c:192 src/menu.c:359
++msgid "Close Tab"
++msgstr "タブを閉ã˜ã‚‹"
++
++#: src/menu.c:196
++msgid "Exit Dillo"
++msgstr "Dilloを終了ã™ã‚‹"
++
++#: src/menu.c:200
++msgid "_View"
++msgstr "表示(_V)"
++
++#: src/menu.c:202
++msgid "Previous tab"
++msgstr "å‰ã®ã‚¿ãƒ–"
++
++#: src/menu.c:204
++msgid "Next tab"
++msgstr "次ã®ã‚¿ãƒ–"
++
++#: src/menu.c:208
++msgid "_Options..."
++msgstr "設定(_O)..."
++
++#: src/menu.c:228
++msgid "PAGE OPTIONS"
++msgstr "ページオプション"
++
++#: src/menu.c:237 src/menu.c:286
++msgid "_Reload"
++msgstr "å†èª­è¾¼(_R)"
++
++#: src/menu.c:241
++msgid "View page So_urce"
++msgstr "ページã®ã‚½ãƒ¼ã‚¹ã‚’表示(_u)"
++
++#: src/menu.c:243
++msgid "View page Bugs"
++msgstr "ページã®ãƒã‚°ã‚’表示(_u)"
++
++#: src/menu.c:244
++msgid "_Bookmark this Page"
++msgstr "ã“ã®ãƒšãƒ¼ã‚¸ã‚’ブックマークã™ã‚‹(_B)"
++
++#: src/menu.c:247
++msgid "Duplicate this Page"
++msgstr "ã“ã®ãƒšãƒ¼ã‚¸ã‚’複製ã™ã‚‹"
++
++#: src/menu.c:250
++msgid "Duplicate this tab"
++msgstr "ã“ã®ã‚¿ãƒ–を複製ã™ã‚‹"
++
++#: src/menu.c:254
++msgid "_Find Text"
++msgstr "テキストã®æ¤œç´¢(_F)"
++
++#: src/menu.c:257
++msgid "Jump to..."
++msgstr "ジャンプ..."
++
++#: src/menu.c:258
++msgid "This Frame..."
++msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ ..."
++
++#: src/menu.c:259
++msgid "This Frameset..."
++msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã‚»ãƒƒãƒˆ..."
++
++#: src/menu.c:262
++msgid "Save Page As..."
++msgstr "ページã«åå‰ã‚’付ã‘ã¦ä¿å­˜..."
++
++#: src/menu.c:277
++msgid "FRAME OPTIONS"
++msgstr "フレームオプション"
++
++#: src/menu.c:290
++msgid "View frame Source"
++msgstr "フレームã®ã‚½ãƒ¼ã‚¹ã‚’表示"
++
++#: src/menu.c:292
++msgid "Bookmark this Frame"
++msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã‚’ブックマークã™ã‚‹"
++
++#: src/menu.c:294
++msgid "Reload this Frame"
++msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã‚’å†èª­è¾¼ã™ã‚‹"
++
++#: src/menu.c:297
++msgid "Show only this Frame"
++msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã®ã¿è¡¨ç¤º"
++
++#: src/menu.c:299
++msgid "Open Frame in new Window"
++msgstr "フレームを新ã—ã„Windowã§é–‹ã"
++
++#: src/menu.c:302
++msgid "Open Frame in new Tab"
++msgstr "フレームを新ã—ã„タブã§é–‹ã"
++
++#: src/menu.c:306
++msgid "_Find Text in this Frame..."
++msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ å†…をテキスト検索(_F)..."
++
++#: src/menu.c:309 src/menu.c:340
++msgid "Save Frame As..."
++msgstr "フレームã«åå‰ã‚’付ã‘ã¦ä¿å­˜..."
++
++#: src/menu.c:325
++msgid "FRAMESET OPTIONS"
++msgstr "フレームセットオプション"
++
++#: src/menu.c:327
++msgid "View Frameset Source"
++msgstr "フレームセットã®ã‚½ãƒ¼ã‚¹ã‚’表示"
++
++#: src/menu.c:329
++msgid "Bookmark this Frameset"
++msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã‚»ãƒƒãƒˆã‚’ブックマークã™ã‚‹"
++
++#: src/menu.c:331
++msgid "Reload this Frameset"
++msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã‚»ãƒƒãƒˆã‚’å†èª­è¾¼ã™ã‚‹"
++
++#: src/menu.c:334
++msgid "Show only this Frameset"
++msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã‚»ãƒƒãƒˆã®ã¿è¡¨ç¤º"
++
++#: src/menu.c:337
++msgid "_Find Text in this Frameset..."
++msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã‚»ãƒƒãƒˆå†…をテキスト検索(_F)..."
++
++#: src/menu.c:357
++msgid "TAB OPTIONS"
++msgstr "タブオプション"
++
++#: src/menu.c:361
++msgid "New Tab"
++msgstr "æ–°è¦ã‚¿ãƒ–"
++
++#: src/menu.c:363
++msgid "Reload Tab"
++msgstr "タブをå†èª­è¾¼"
++
++#: src/menu.c:460
++msgid "FOLLOWING PAGES"
++msgstr "次ã®ãƒšãƒ¼ã‚¸"
++
++#: src/menu.c:463
++msgid "PREVIOUS PAGES"
++msgstr "å‰ã®ãƒšãƒ¼ã‚¸"
++
++#: src/menu.c:531
++msgid "LINK OPTIONS"
++msgstr "リンクオプション"
++
++#: src/menu.c:533
++msgid "Open Link in New Window"
++msgstr "リンクを新ã—ã„Windowã§é–‹ã"
++
++#: src/menu.c:536
++msgid "Open Link in New Tab"
++msgstr "リンクを新ã—ã„タブã§é–‹ã"
++
++#: src/menu.c:539
++msgid "Open Link"
++msgstr "リンクを開ã"
++
++#: src/menu.c:542
++msgid "Bookmark this Link"
++msgstr "ã“ã®ãƒªãƒ³ã‚¯ã‚’ブックマーク(_B)"
++
++#: src/menu.c:544
++msgid "Copy Link location"
++msgstr "リンクã®å ´æ‰€ã‚’コピー"
++
++#: src/menu.c:549
++msgid "Save Link As..."
++msgstr "リンクã«åå‰ã‚’付ã‘ã¦ä¿å­˜..."
++
++#: src/menu.c:553
++msgid "Image Menu..."
++msgstr "ç”»åƒãƒ¡ãƒ‹ãƒ¥ãƒ¼..."
++
++#: src/menu.c:571
++msgid "IMAGE OPTIONS"
++msgstr "ç”»åƒã‚ªãƒ—ション"
++
++#: src/menu.c:573
++msgid "Isolate Image"
++msgstr "ç”»åƒã ã‘を表示"
++
++#: src/menu.c:575
++msgid "Open Image in New Window"
++msgstr "ç”»åƒã‚’æ–°ã—ã„Windowã§é–‹ã"
++
++#: src/menu.c:578
++msgid "Open Image in New Tab"
++msgstr "ç”»åƒã‚’æ–°ã—ã„タブã§é–‹ã"
++
++#: src/menu.c:581
++msgid "Open Image"
++msgstr "ç”»åƒã‚’é–‹ã"
++
++#: src/menu.c:584
++msgid "Bookmark this Image"
++msgstr "ã“ã®ç”»åƒã‚’ブックマークã™ã‚‹"
++
++#: src/menu.c:586
++msgid "Copy Image location"
++msgstr "ç”»åƒã®å ´æ‰€ã‚’コピーã™ã‚‹"
++
++#: src/menu.c:591
++msgid "Save Image As..."
++msgstr "ç”»åƒã«åå‰ã‚’付ã‘ã¦ä¿å­˜..."
++
++#: src/menu.c:605
++msgid "BUG METER OPTIONS"
++msgstr "ãƒã‚°ãƒ¡ãƒ¼ã‚¿ãƒ¼ã‚ªãƒ—ション"
++
++#: src/menu.c:607
++msgid "Validate URL with W3C"
++msgstr "URLã‚’W3Cã§æ¤œæŸ»ã™ã‚‹"
++
++#: src/menu.c:609
++msgid "Validate URL with WDG"
++msgstr "URLã‚’WDGã§æ¤œæŸ»ã™ã‚‹"
++
++#: src/menu.c:612
++msgid "About Bug Meter..."
++msgstr "ãƒã‚°ãƒ¡ãƒ¼ã‚¿ãƒ¼ã«ã¤ã„ã¦..."
++
++#: src/prefs.c:431
++msgid "Error: Can't open specified config file. default file is used.\n"
++msgstr "エラー: 設定ファイルを開ã‘ã¾ã›ã‚“。デフォルトã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒä½¿ç”¨ä¸­ã§ã™ã€‚\n"
++
++#: src/i18n.c:359
++msgid "charset detect may mistake...\n"
++msgstr "文字コードèªè­˜ã«å¤±æ•—ã—ãŸã‹ã‚‚ã—ã‚Œã¾ã›ã‚“...\n"
++
++#: src/i18n.c:447
++msgid "<meta> outside of <head>!\n"
++msgstr "<meta>ãŒ<head>ã®å¤–å´ã«ã‚ã‚Šã¾ã™\n"
++
++#: src/i18n.c:493
++msgid "all ascii code\n"
++msgstr "å…¨ã¦ASCIIコードã§ã™ã€‚\n"
++
++#: src/i18n.c:526
++msgid "unable to fully convert between character encodings\n"
++msgstr "文字コードを完全ã«å¤‰æ›ã§ãã¾ã›ã‚“ã§ã—ãŸ\n"
++
++#: src/i18n.c:565
++msgid "no support enc\n"
++msgstr "サãƒãƒ¼ãƒˆã—ã¦ãªã„エンコードã§ã™ã€‚\n"
++
++#: src/tab.c:293 src/tab.c:425 dpi/bookmarks.c:1653
++msgid "(Untitled)"
++msgstr "(無題)"
++
++#: src/IO/https.c:168
++msgid "--Error detected\n"
++msgstr "--エラーを検出ã—ã¾ã—ãŸ\n"
++
++#: src/IO/https.c:173 src/IO/https.c:204 src/IO/http.c:294
++msgid "ERROR: unable to connect to remote host"
++msgstr "エラー: リモートホストã«æŽ¥ç¶šã§ãã¾ã›ã‚“"
++
++#: src/IO/https.c:179 src/IO/http.c:309
++msgid "--Connection established\n"
++msgstr "--接続を確立ã—ã¾ã—ãŸ\n"
++
++#: src/IO/https.c:280 src/IO/http.c:417
++#, c-format
++msgid "Sending query to %s..."
++msgstr "クエリを%sã«é€ä¿¡ã—ã¦ã„ã¾ã™..."
++
++#: src/IO/https.c:333 src/IO/http.c:486
++#, c-format
++msgid "DNS solving %s"
++msgstr "DNSã¯%sを解決ã—ã¦ã„ã¾ã™"
++
++#: src/IO/https.c:363
++msgid " HTTPS: new abort handler! #2\n"
++msgstr " HTTPS: æ–°è¦ã®abortãƒãƒ³ãƒ‰ãƒ©ã§ã™! #2\n"
++
++#: src/IO/https.c:365 src/IO/https.c:387 src/IO/http.c:301 src/IO/http.c:520
++#: src/IO/http.c:551
++#, c-format
++msgid "ERROR: %s"
++msgstr "エラー: %s"
++
++#: src/IO/https.c:386
++msgid " HTTP: new abort handler! #1\n"
++msgstr " HTTP: æ–°è¦ã®abortãƒãƒ³ãƒ‰ãƒ©ã§ã™! #1\n"
++
++#: src/IO/https.c:400 src/IO/http.c:564
++#, c-format
++msgid "ERROR: Dns can't solve %s"
++msgstr "エラー: DNSã¯%sを解決ã§ãã¾ã›ã‚“"
++
++#: src/IO/https.c:421 src/IO/http.c:591
++msgid "Query sent, waiting for reply..."
++msgstr "クエリをé€ä¿¡ã—ã¾ã—㟠応答を待ã£ã¦ã„ã¾ã™..."
++
++#: src/IO/http.c:190
++#, c-format
++msgid "Getting %1$s, referer %2$s\n"
++msgstr "%1$sã‚’å–得中 リファラ %2$s\n"
++
++#: src/IO/http.c:259
++#, c-format
++msgid ""
++"Query:\n"
++"%s"
++msgstr ""
++"クエリ:\n"
++"%s"
++
++#: src/IO/http.c:286
++msgid "--Connection broken\n"
++msgstr "--切断ã•ã‚Œã¾ã—ãŸ\n"
++
++#: src/IO/http.c:342
++#, c-format
++msgid "Http_connect_socket ERROR: %s\n"
++msgstr "Http_connect_socketã§ã‚¨ãƒ©ãƒ¼: %s\n"
++
++#: src/IO/http.c:363 src/IO/http.c:377
++#, c-format
++msgid "Connecting to %s\n"
++msgstr "%sã«æŽ¥ç¶šã—ã¦ã„ã¾ã™\n"
++
++#: src/IO/http.c:396
++msgid "Contacting host..."
++msgstr "ホストã«æŽ¥ç¶šã—ã¦ã„ã¾ã™..."
++
++#: src/IO/http.c:529
++msgid "Http: OpAbort [1B]\n"
++msgstr "Http: OpAbort [1B]\n"
++
++#: src/IO/dpi.c:188
++msgid "ERROR: [Dpi_get_token] Can't find token start\n"
++msgstr "エラー: [Dpi_get_token] トークンã®é–‹å§‹ã‚’見ã¤ã‘られã¾ã›ã‚“。\n"
++
++#: src/IO/dpi.c:221
++msgid "ERROR: [Dpi_get_token] *** NULL code here ***\n"
++msgstr "エラー: [Dpi_get_token] *** ã“ã“ã«NULLコードãŒã‚ã‚Šã¾ã™ ***\n"
++
++#: src/IO/dpi.c:312
++msgid "Dpi: [Dpi_process_io] IOClose\n"
++msgstr "Dpi: [Dpi_process_io] IOClose\n"
++
++#: src/IO/dpi.c:338
++#, c-format
++msgid "Dpi_start_dpid (child): %s\n"
++msgstr "Dpi_start_dpid (child): %s\n"
++
++#: src/IO/dpi.c:348 src/IO/dpi.c:363
++#, c-format
++msgid "Dpi_start_dpid: %s\n"
++msgstr "Dpi_start_dpid: %s\n"
++
++#: src/IO/dpi.c:359
++#, c-format
++msgid "Dpi_start_dpid: n = %d\n"
++msgstr "Dpi_start_dpid: n = %d\n"
++
++#: src/IO/dpi.c:386
++#, c-format
++msgid "Dpi_check_uds: %1$s %2$s\n"
++msgstr "Dpi_check_uds: %1$s %2$s\n"
++
++#: src/IO/dpi.c:673
++msgid "dpi.c: ERROR, can't start dpi daemon\n"
++msgstr "dpi.c: エラー, dpiデーモンを開始ã§ãã¾ã›ã‚“\n"
++
++#: src/IO/dpi.c:686
++msgid "a_Dpi_ccc: OpAbort[2B], Not implemented\n"
++msgstr "a_Dpi_ccc: OpAbort[2B], 実装ã•ã‚Œã¦ã„ã¾ã›ã‚“\n"
++
++#: src/IO/dpi.c:790 src/IO/dpi.c:794
++#, c-format
++msgid "a_Dpi_bye_dpid: %s\n"
++msgstr "a_Dpi_bye_dpid: %s\n"
++
++#: dpid/dpi_socket_dir.c:106
++#, c-format
++msgid "The dpi_socket_dir file does not exist\n"
++msgstr "dpi_socket_dirファイルãŒå­˜åœ¨ã—ã¾ã›ã‚“\n"
++
++#: dpid/dpi_socket_dir.c:110 dpid/dpi_socket_dir.c:114
++#, c-format
++msgid "debug_msg - init_sockdir: The socket directory "
++msgstr "debug_msg - init_sockdir: socketディレクトリã¯"
++
++#: dpid/dpi_socket_dir.c:111
++#, c-format
++msgid "%s exists and is OK\n"
++msgstr "%sã¯å­˜åœ¨ã—ã¦ã„ã¦OKã§ã™\n"
++
++#: dpid/dpi_socket_dir.c:115
++#, c-format
++msgid "%s does not exist or is not a directory\n"
++msgstr "%sã¯å­˜åœ¨ã—ãªã„ã‹ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã¯ã‚ã‚Šã¾ã›ã‚“\n"
++
++#: dpid/dpi_socket_dir.c:124
++#, c-format
++msgid " - Failed to create dpi socket directory\n"
++msgstr " - dpi socketディレクトリã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸ\n"
++
++#: dpid/dpi_socket_dir.c:127
++#, c-format
++msgid " - failed to save %s\n"
++msgstr " - %sã®ä¿å­˜ã«å¤±æ•—ã—ã¾ã—ãŸ\n"
++
++#: dpid/main.c:59 dpid/main.c:66 dpid/main.c:77 dpid/main.c:85 dpid/main.c:99
++#: dpid/main.c:104 dpid/main.c:109
++#, c-format
++msgid "ERROR in child proc for %s\n"
++msgstr "%sã§å­ãƒ—ロセスãŒã‚¨ãƒ©ãƒ¼\n"
++
++#: dpid/main.c:166
++#, c-format
++msgid ": dpid failed to parse cmd in %s\n"
++msgstr ": dpidãŒ%sã®ã‚³ãƒžãƒ³ãƒ‰è§£æžã«å¤±æ•—ã—ã¾ã—ãŸ\n"
++
++#: dpid/main.c:265
++#, c-format
++msgid "Failed to create socket directory\n"
++msgstr "socketディレクトリã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸ\n"
++
++#: dpid/main.c:275
++#, c-format
++msgid "dpid refuses to start, possibly because:\n"
++msgstr "dpidã¯é–‹å§‹ã‚’æ‹’å¦ã—ã¾ã—ãŸã€‚予想ã•ã‚Œã‚‹åŽŸå› :\n"
++
++#: dpid/main.c:276
++#, c-format
++msgid "\t1) An instance of dpid is already running.\n"
++msgstr "\t1) dpidã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒæ—¢ã«èµ·å‹•ã—ã¦ã„る。\n"
++
++#: dpid/main.c:277
++#, c-format
++msgid "\t2) A previous dpid didn't clean up on exit.\n"
++msgstr "\t2) å‰ã®dpidãŒä¸æ­£çµ‚了ã—ãŸã€‚\n"
++
++#: dpid/main.c:280
++msgid "init_srs_sockets failed\n"
++msgstr "init_srs_socketsãŒå¤±æ•—ã—ã¾ã—ãŸ\n"
++
++#: dpid/main.c:294
++#, c-format
++msgid "dpid started\n"
++msgstr "dpidãŒé–‹å§‹ã—ã¾ã—ãŸ\n"
++
++#: dpid/main.c:340
++#, c-format
++msgid "accept on srs socket failed\n"
++msgstr "srs socketã®å—ç†ã«å¤±æ•—ã—ã¾ã—ãŸ\n"
++
++#: dpid/main.c:341
++#, c-format
++msgid "service pending connections, and continue\n"
++msgstr "未解決ã®æŽ¥ç¶šã‚’を供給ã—ã€ç¶™ç¶šã—ã¾ã™\n"
++
++#: dpi/bookmarks.c:96
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>Bookmarks</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr>\n"
++" <td>&nbsp;Bookmarks::</td>\n"
++" <td width='100%' align='right'>\n"
++" [<a href='dpi:/bm/modify'>modify</a>]\n"
++" </td></tr>\n"
++" </table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++msgstr ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>ブックマーク</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr>\n"
++" <td><pre>&nbsp;ブックマーク::</pre></td>\n"
++" <td width='100%' align='right'>\n"
++" <pre>[<a href='dpi:/bm/modify'>変更</a>]</pre>\n"
++" </td></tr>\n"
++" </table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++
++#: dpi/bookmarks.c:115
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>Bookmarks</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr>\n"
++" <td>&nbsp;Bookmarks :: modify</td></tr>\n"
++" </table></td></tr> \n"
++"</table> \n"
++"\n"
++"<form>\n"
++"<table width='100%' border='1' cellpadding='0'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td><b>Select&nbsp;an&nbsp;operation&nbsp;</b></td>\n"
++" <td><select name='operation'>\n"
++" <option value='none' selected>--\n"
++" <option value='delete'>Delete\n"
++" <option value='move'>Move\n"
++" <option value='modify'>Modify\n"
++" <option value='add_sec'>Add Section\n"
++" <option value='add_url'>Add URL\n"
++" </select></td>\n"
++" <td><b>,&nbsp;mark&nbsp;its&nbsp;operands,&nbsp;and&nbsp;</b></td>\n"
++" <td><input type='submit' name='submit' value='submit.'></td>\n"
++" <td width='100%'></td>\n"
++" </tr>\n"
++" </table></td></tr>\n"
++"</table>\n"
++msgstr ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>ブックマーク</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr>\n"
++" <td><pre>&nbsp;ブックマーク :: 変更</pre></td></tr>\n"
++" </table></td></tr> \n"
++"</table> \n"
++"\n"
++"<form>\n"
++"<table width='100%' border='1' cellpadding='0'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td><pre><b>命令をé¸æŠž&nbsp;</b></pre></td>\n"
++" <td><select name='operation'>\n"
++" <option value='none' selected>--\n"
++" <option value='delete'>削除\n"
++" <option value='move'>移動\n"
++" <option value='modify'>変更\n"
++" <option value='add_sec'>セクションを追加\n"
++" <option value='add_url'>URLを追加\n"
++" </select></td>\n"
++" <td><pre><b>ã€å¯¾è±¡ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ã€</b></pre></td>\n"
++" <td><input type='submit' name='submit' value='é©ç”¨'></td>\n"
++" <td width='100%'></td>\n"
++" </tr>\n"
++" </table></td></tr>\n"
++"</table>\n"
++
++#: dpi/bookmarks.c:151
++msgid ""
++"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n"
++" <tr valign='top'>\n"
++" <td>\n"
++" <table bgcolor='#b4b4b4' border='2' cellpadding='4' cellspacing='1'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n"
++msgstr ""
++"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n"
++" <tr valign='top'>\n"
++" <td>\n"
++" <table bgcolor='#b4b4b4' border='2' cellpadding='4' cellspacing='1'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr><td><pre>セクション:</pre></td></tr></table></td></tr>\n"
++
++#: dpi/bookmarks.c:160
++msgid ""
++"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n"
++" <tr valign='top'>\n"
++" <td>\n"
++" <table bgcolor='#b4b4b4' border='1'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n"
++msgstr ""
++"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n"
++" <tr valign='top'>\n"
++" <td>\n"
++" <table bgcolor='#b4b4b4' border='1' cellpadding='4' cellspacing='1'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr><td><pre>セクション:</pre></td></tr></table></td></tr>\n"
++
++#: dpi/bookmarks.c:243
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>Bookmarks</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: add section\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++" <input type='hidden' name='operation' value='add_section'>\n"
++"<table border='1' width='100%'>\n"
++" <tr>\n"
++" <td bgcolor='olive'><b>New&nbsp;section:</b></td>\n"
++" <td bgcolor='white' width='100%'></td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='10'>\n"
++"<tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td>Title:</td>\n"
++" <td><input type='text' name='title' size='64'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='submit.'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++"\n"
++msgstr ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>ブックマーク</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'><pre>&nbsp;ブックマークã®å¤‰æ›´:: セクションを追加"
++"</pre>\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++" <input type='hidden' name='operation' value='add_section'>\n"
++"<table border='1' width='100%'>\n"
++" <tr>\n"
++" <td bgcolor='olive'><pre><b>æ–°è¦ ã‚»ã‚¯ã‚·ãƒ§ãƒ³:</b></pre></td>\n"
++" <td bgcolor='white' width='100%'></td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='10'>\n"
++"<tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td><pre>タイトル:</pre></td>\n"
++" <td><input type='text' name='title' size='64'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='é©ç”¨'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++"\n"
++
++#: dpi/bookmarks.c:283
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>Bookmarks</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: update\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++"<input type='hidden' name='operation' value='modify2'>\n"
++msgstr ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>ブックマーク</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'><pre>&nbsp;ブックマークã®å¤‰æ›´:: アップデート</"
++"pre>\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++"<input type='hidden' name='operation' value='modify2'>\n"
++
++#: dpi/bookmarks.c:310
++#, c-format
++msgid ""
++"<tr><td>\n"
++" <table width='100%%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td>Title:</td>\n"
++" <td><input type='text' name='title%d' size='64'\n"
++" value='%s'></td></tr>\n"
++" <tr>\n"
++" <td>URL:</td>\n"
++" <td>%s</td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++msgstr ""
++"<tr><td>\n"
++" <table width='100%%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td><pre>タイトル:</pre></td>\n"
++" <td><input type='text' name='title%d' size='64'\n"
++" value='%s'></td></tr>\n"
++" <tr>\n"
++" <td>URL:</td>\n"
++" <td>%s</td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++
++#: dpi/bookmarks.c:323
++#, c-format
++msgid ""
++"<tr><td>\n"
++" <table width='100%%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td>Title:</td>\n"
++" <td><input type='text' name='s%d' size='64'\n"
++" value='%s'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++msgstr ""
++"<tr><td>\n"
++" <table width='100%%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td><pre>タイトル:</pre></td>\n"
++" <td><input type='text' name='s%d' size='64'\n"
++" value='%s'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++
++#: dpi/bookmarks.c:336
++#, c-format
++msgid ""
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='submit.'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++msgstr ""
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='é©ç”¨'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++
++#: dpi/bookmarks.c:346
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>Bookmarks</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: add url\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++"<input type='hidden' name='operation' value='add_url2'>\n"
++"<table border='1' width='100%'>\n"
++" <tr>\n"
++" <td bgcolor='olive'><b>Add&nbsp;url:</b></td>\n"
++" <td bgcolor='white' width='100%'></td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='10'>\n"
++"<tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td>Title:</td>\n"
++" <td><input type='text' name='title' size='64'></td></tr>\n"
++" <tr>\n"
++" <td>URL:</td>\n"
++" <td><input type='text' name='url' size='64'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='submit.'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++msgstr ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>ブックマーク</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'><pre>&nbsp;ブックマークã®å¤‰æ›´:: URLã®è¿½åŠ </"
++"pre>\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++"<input type='hidden' name='operation' value='add_url2'>\n"
++"<table border='1' width='100%'>\n"
++" <tr>\n"
++" <td bgcolor='olive'><pre><b>URLã®è¿½åŠ :</b></pre></td>\n"
++" <td bgcolor='white' width='100%'></td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='10'>\n"
++"<tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td><pre>タイトル:</pre></td>\n"
++" <td><input type='text' name='title' size='64'></td></tr>\n"
++" <tr>\n"
++" <td>URL:</td>\n"
++" <td><input type='text' name='url' size='64'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='é©ç”¨'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++
++#: dpi/bookmarks.c:691
++msgid "Unclassified"
++msgstr "未分類"
++
++#: dpi/bookmarks.c:724
++#, c-format
++msgid "echo \":s0: Unclassified\" > %s"
++msgstr "echo \":s0: 未分類\" > %s"
++
++#: dpi/bookmarks.c:786
++#, c-format
++msgid ""
++"Syntax error in bookmarks file:\n"
++" %s"
++msgstr "ブックマークファイルã§æ§‹æ–‡ã‚¨ãƒ©ãƒ¼: %s"
++
++#: dpi/bookmarks.c:898
++msgid "Added bookmark!"
++msgstr "ブックマークã«è¿½åŠ ã—ã¾ã—ãŸ!"
++
++#: dpi/bookmarks.c:1087
++msgid "Update&nbsp;sections:"
++msgstr "<pre>セクションã®æ›´æ–°:</pre>"
++
++#: dpi/bookmarks.c:1107
++msgid "Update&nbsp;titles:"
++msgstr "<pre>タイトルã®æ›´æ–°:</pre>"
++
++#: dpi/bookmarks.c:1404
++msgid "Delete: you must mark what to delete!"
++msgstr "削除: 削除ã—ãŸã„項目をマークã—ã¦ä¸‹ã•ã„!"
++
++#: dpi/bookmarks.c:1410
++msgid "Move: you must mark a target section!"
++msgstr "移動: 移動先ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’マークã—ã¦ä¸‹ã•ã„!"
++
++#: dpi/bookmarks.c:1412
++msgid "Move: can not move a section (yet)."
++msgstr "移動: (ã¾ã )セクションを移動ã§ãã¾ã›ã‚“。"
++
++#: dpi/bookmarks.c:1414
++msgid "Move: you must mark some urls, and a target section!"
++msgstr "移動: URL(複数å¯)ã¨ç§»å‹•å…ˆã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’é¸æŠžã—ã¦ä¸‹ã•ã„!"
++
++#: dpi/bookmarks.c:1419
++msgid "Modify: you must mark what to update!"
++msgstr "変更: æ›´æ–°ã—ãŸã„項目をマークã—ã¦ä¸‹ã•ã„!"
++
++#: dpi/bookmarks.c:1436
++msgid "Add url: only one target section is allowed!"
++msgstr "URLã®è¿½åŠ : セクションを一ã¤ã ã‘é¸æŠžã—ã¦ä¸‹ã•ã„!"
++
++#: dpi/bookmarks.c:1443
++msgid "No operation, just do nothing!"
++msgstr "命令ãŒä½•ã‚‚é¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“!"
++
++#: dpi/bookmarks.c:1446
++msgid "Sorry, not implemented yet."
++msgstr "ã™ã¿ã¾ã›ã‚“ã€ã¾ã å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“。"
++
++#: dpi/bookmarks.c:1614
++msgid "Haven't got a full tag!\n"
++msgstr "å分ãªã‚¿ã‚°ã‚’å¾—ã¦ã„ã¾ã›ã‚“!\n"
++
++#: dpi/bookmarks.c:1690
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<HTML><body> Error on the bookmarks server...</body></html>"
++msgstr ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<HTML><body> ブックマークサーãƒãƒ¼ã®ã‚¨ãƒ©ãƒ¼ã§ã™...</body></html>"
++
++#: config/dillocfg.c:82
++msgid "Quit"
++msgstr "終了"
++
++#: config/dillocfg.c:84 config/dillocfg.c:90
++msgid "Dillo Preferences"
++msgstr "Dillo 設定"
++
++#: config/dillocfg.c:113
++msgid "Interface"
++msgstr "インターフェース"
++
++#: config/dillocfg.c:114
++msgid " Font "
++msgstr " フォント "
++
++#: config/dillocfg.c:115
++msgid " Color "
++msgstr " 色 "
++
++#: config/dillocfg.c:116
++msgid " Network "
++msgstr " ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ "
++
++#: config/dillocfg.c:118
++msgid " Tab "
++msgstr " タブ "
++
++#: config/dillocfg.c:121
++msgid " Other "
++msgstr " ãã®ä»– "
++
++#: config/dillocfg.c:329
++msgid "Add"
++msgstr "追加"
++
++#: config/dillocfg.c:330
++msgid "Delete"
++msgstr "削除"
++
++#: config/dillocfg.c:336
++msgid "Address"
++msgstr "アドレス"
++
++#: config/dillocfg.c:337
++msgid "Rule"
++msgstr "ルール"
++
++#: config/dillocfg.c:363 config/dillocfg.c:369
++#, c-format
++msgid "Read failed <%s>\n"
++msgstr "<%s>ã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ\n"
++
++#: config/dillocfg.c:450 config/dillocfg.c:458
++#, c-format
++msgid "can't write <%s>\n"
++msgstr "<%s>ã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“\n"
++
++#: config/dillocfg_token.c:60
++msgid "Window Size"
++msgstr "Windowã®å¤§ãã•"
++
++#: config/dillocfg_token.c:68
++msgid "HTTP Proxy"
++msgstr "HTTPプロキシ"
++
++#: config/dillocfg_token.c:76
++msgid "HTTP Proxy User"
++msgstr "HTTPプロキシユーザー"
++
++#: config/dillocfg_token.c:84
++msgid "NO Proxy"
++msgstr "プロキシを使ã‚ãªã„ã®ã¯"
++
++#: config/dillocfg_token.c:92
++msgid "User-Agent"
++msgstr "ユーザーエージェント"
++
++#: config/dillocfg_token.c:100
++msgid "Send referer header"
++msgstr "リファラヘッダをé€ä¿¡ã™ã‚‹"
++
++#: config/dillocfg_token.c:108
++msgid "Link color"
++msgstr "未訪å•ãƒªãƒ³ã‚¯ã®è‰²"
++
++#: config/dillocfg_token.c:116
++msgid "Visited color"
++msgstr "訪å•æ¸ˆã¿ãƒªãƒ³ã‚¯ã®è‰²"
++
++#: config/dillocfg_token.c:124
++msgid "BackGround color"
++msgstr "背景ã®è‰²"
++
++#: config/dillocfg_token.c:132
++msgid "Allow white bg"
++msgstr "白ã„背景を許å¯ã™ã‚‹"
++
++#: config/dillocfg_token.c:140
++msgid "Force my colors"
++msgstr "常ã«è¨­å®šã—ãŸè‰²ã§è¡¨ç¤ºã™ã‚‹"
++
++#: config/dillocfg_token.c:148
++msgid "Contrast visited color"
++msgstr "訪å•æ¸ˆã¿ãƒªãƒ³ã‚¯ã‚’æ­£å対ã®è‰²ã§è¡¨ç¤ºã™ã‚‹"
++
++#: config/dillocfg_token.c:156
++msgid "Text color"
++msgstr "テキストã®è‰²"
++
++#: config/dillocfg_token.c:164
++msgid "Use oblique"
++msgstr "イタリックã§ã¯ãªã斜体を使ã†"
++
++#: config/dillocfg_token.c:172
++msgid "Start Page"
++msgstr "開始ページ"
++
++#: config/dillocfg_token.c:180
++msgid "HOMEPAGE"
++msgstr "ホームページ"
++
++#: config/dillocfg_token.c:188
++msgid "Search-engine's URL"
++msgstr "検索エンジンã®URL"
++
++#: config/dillocfg_token.c:196
++msgid "Search-engine's charset"
++msgstr "検索エンジンã®æ–‡å­—コード"
++
++#: config/dillocfg_token.c:204
++msgid "Show Tooltip"
++msgstr "ツールãƒãƒƒãƒ—を表示"
++
++#: config/dillocfg_token.c:212
++msgid "Panel Size"
++msgstr "パãƒãƒ«ã®å¤§ãã•"
++
++#: config/dillocfg_token.c:220
++msgid "Small icons"
++msgstr "å°ã•ã„アイコン"
++
++#: config/dillocfg_token.c:228
++msgid "Limit text width"
++msgstr "テキストã®å¹…を制é™ã™ã‚‹"
++
++#: config/dillocfg_token.c:236
++msgid "Limit font decoration"
++msgstr "フォントã®é£¾ã‚Šã‚’制é™ã™ã‚‹"
++
++#: config/dillocfg_token.c:244
++msgid "Font factor"
++msgstr "フォントã®å€çŽ‡"
++
++#: config/dillocfg_token.c:252
++msgid "Font Sizes"
++msgstr "フォントã®å¤§ãã•"
++
++#: config/dillocfg_token.c:260
++msgid "W3C+heuristics"
++msgstr "W3C+ヒューリスティック"
++
++#: config/dillocfg_token.c:268
++msgid "Use dicache"
++msgstr "ç”»åƒã‚’éžåœ§ç¸®ã§ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã™ã‚‹"
++
++#: config/dillocfg_token.c:276
++msgid "Show Back"
++msgstr "戻るを表示"
++
++#: config/dillocfg_token.c:284
++msgid "Show Forw"
++msgstr "進むを表示"
++
++#: config/dillocfg_token.c:292
++msgid "Show Home"
++msgstr "ホームを表示"
++
++#: config/dillocfg_token.c:300
++msgid "Show Reload"
++msgstr "å†èª­è¾¼ã‚’表示"
++
++#: config/dillocfg_token.c:308
++msgid "Show Save"
++msgstr "ä¿å­˜ã‚’表示"
++
++#: config/dillocfg_token.c:316
++msgid "Show Stop"
++msgstr "åœæ­¢ã‚’表示"
++
++#: config/dillocfg_token.c:324
++msgid "Show Bookmarks"
++msgstr "ブックマークを表示"
++
++#: config/dillocfg_token.c:332
++msgid "Show Menubar"
++msgstr "メニューãƒãƒ¼ã‚’表示"
++
++#: config/dillocfg_token.c:340
++msgid "Show ClearURL"
++msgstr "URLクリアを表示"
++
++#: config/dillocfg_token.c:348
++msgid "Show URL box"
++msgstr "URLボックスを表示"
++
++#: config/dillocfg_token.c:356
++msgid "Show Web Search"
++msgstr "Web検索を表示"
++
++#: config/dillocfg_token.c:364
++msgid "Show Progress box"
++msgstr "プログレスボックスを表示"
++
++#: config/dillocfg_token.c:372
++msgid "Show Popup navigation"
++msgstr "ãƒãƒƒãƒ—アップナビゲーションを表示"
++
++#: config/dillocfg_token.c:380
++msgid "Fullwindow start"
++msgstr "フルウインドウã§é–‹å§‹ã™ã‚‹"
++
++#: config/dillocfg_token.c:388
++msgid "Transient dialogs"
++msgstr "一時的ãªãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã‚’許å¯ã™ã‚‹"
++
++#: config/dillocfg_token.c:396
++msgid "Popup dialogs"
++msgstr "ダイアログをãƒãƒƒãƒ—アップã™ã‚‹"
++
++#: config/dillocfg_token.c:404
++msgid "vw_aafontname"
++msgstr "AA時ã®ãƒ—ロãƒãƒ¼ã‚·ãƒ§ãƒŠãƒ«ãƒ•ã‚©ãƒ³ãƒˆ"
++
++#: config/dillocfg_token.c:412
++msgid "fw_aafontname"
++msgstr "AA時ã®å›ºå®šå¹…フォント"
++
++#: config/dillocfg_token.c:420
++msgid "vw_fontname"
++msgstr "プロãƒãƒ¼ã‚·ãƒ§ãƒŠãƒ«ãƒ•ã‚©ãƒ³ãƒˆ"
++
++#: config/dillocfg_token.c:428
++msgid "fw_fontname"
++msgstr "固定幅フォント"
++
++#: config/dillocfg_token.c:436
++msgid "Generate submit"
++msgstr "é€ä¿¡ãƒœã‚¿ãƒ³ã®è‡ªå‹•ç”Ÿæˆ"
++
++#: config/dillocfg_token.c:444
++msgid "Enterpress forces submit"
++msgstr "Enterキーã§ãƒ•ã‚©ãƒ¼ãƒ ã®é€ä¿¡"
++
++#: config/dillocfg_token.c:452
++msgid "Show debugging messsages"
++msgstr "デãƒãƒƒã‚°ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®è¡¨ç¤º"
++
++#: config/dillocfg_token.c:460
++msgid "Show Extra Warnings"
++msgstr "余分ãªè­¦å‘Šã‚’表示"
++
++#: config/dillocfg_token.c:468
++msgid "Focus location on new"
++msgstr "æ–°è¦Windowã§URLãƒãƒ¼ã«ãƒ•ã‚©ãƒ¼ã‚«ã‚¹ã™ã‚‹"
++
++#: config/dillocfg_token.c:476 config/dillocfg_token.c:484
++msgid "Accept Language"
++msgstr "Accept Language"
++
++#: config/dillocfg_token.c:493
++msgid "Tab load in background"
++msgstr "タブをè£ã§é–‹ã"
++
++#: config/dillocfg_token.c:501
++msgid "Tab close middle click"
++msgstr "タブを中クリックã§é–‰ã˜ã‚‹"
++
++#: config/dillocfg_token.c:509
++msgid "Tab instead of window"
++msgstr "Windowã®ä»£ã‚ã‚Šã«ã‚¿ãƒ–ã§é–‹ã"
++
++#: config/dillocfg_token.c:517
++msgid "Tab bar show fullscreen"
++msgstr "フルスクリーンã§ã‚¿ãƒ–ãƒãƒ¼ã‚’表示"
++
++#: config/dillocfg_token.c:525
++msgid "Tab bar show single tab"
++msgstr "タブãŒä¸€ã¤ã§ã‚‚表示ã™ã‚‹"
++
++#: config/dillocfg_token.c:533
++msgid "Tab bar scroller"
++msgstr "タブãƒãƒ¼ã«ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ãƒœã‚¿ãƒ³ã‚’表示"
++
++#: config/dillocfg_token.c:541
++msgid "Tab bar homogeneous"
++msgstr "タブを全ã¦åŒã˜å¹…ã«ã™ã‚‹"
++
++#: config/dillocfg_token.c:549
++msgid "Tab title compress"
++msgstr "タブã®ã‚¿ã‚¤ãƒˆãƒ«ã‚’圧縮ã™ã‚‹"
++
++#: config/dillocfg_token.c:557
++msgid "Compress vowels"
++msgstr "çœç•¥ã™ã‚‹æ–‡å­—"
++
++#: config/dillocfg_token.c:565
++msgid "Compress_common_prefixes"
++msgstr "çœç•¥ã™ã‚‹æŽ¥é ­èªž"
++
++#: config/dillocfg_token.c:574
++msgid "Default"
++msgstr "デフォルト"
++
++#~ msgid ""
++#~ " URL URL to browse.\n"
++#~ " FILE Local FILE to view.\n"
++#~ msgstr ""
++#~ " URL ブラウズã™ã‚‹URL\n"
++#~ " FILE 表示ã™ã‚‹ãƒ­ãƒ¼ã‚«ãƒ«ãƒ•ã‚¡ã‚¤ãƒ«\n"
++
++#~ msgid "realm"
++#~ msgstr "領域"
++
++#~ msgid " -f, --fullwindow Start in full window mode."
++#~ msgstr " -f, --fullwindow フルウインドウã§é–‹å§‹ã—ã¾ã™"
++
++#~ msgid "Character entities for ASCII [129-159] are 'undefined' for HTML\n"
++#~ msgstr "HTMLã§ã¯ASCII [129-159]ã®æ–‡å­—実体å‚ç…§ãŒæœªå®šç¾©ã§ã™ã€‚\n"
++
++#~ msgid "first character of '%s' value is outside the [A-Za-z] set\n"
++#~ msgstr "'%s'ã®æœ€åˆã®æ–‡å­—ãŒ[A-Za-z]以外ã§ã™\n"
++
++#~ msgid "not found ' or \" in <meta> tag!\n"
++#~ msgstr "<meta>タグ内㫠' ã¾ãŸã¯ \" ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n"
++
++#~ msgid "<meta> outside of <head>! or not found charset.\n"
++#~ msgstr "<head>ã®å¤–å´ã«<meta>ãŒã‚ã‚‹ã‹ã€charsetãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n"
++
++#~ msgid "Close Find Text"
++#~ msgstr "テキストã®æ¤œç´¢ã‚’é–‰ã˜ã‚‹"
++
++#~ msgid "get_command failed\n"
++#~ msgstr "get_commandãŒå¤±æ•—ã—ã¾ã—ãŸ\n"
++
++#~ msgid "Clear the url-box!"
++#~ msgstr "URLボックスをクリア"
++
++#~ msgid "Go to next page"
++#~ msgstr "次ã®ãƒšãƒ¼ã‚¸ã«é€²ã‚€"
++
++#~ msgid "Show HTML bugs"
++#~ msgstr "HTMLã®ãƒã‚°ã‚’表示"
++
++#~ msgid "Directory listing of"
++#~ msgstr "ディレクトリã®ä¸€è¦§ "
++
++#~ msgid "Parent directory"
++#~ msgstr "上ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª"
++
++#~ msgid "ERROR: Can't find %s %s"
++#~ msgstr "エラー: %s %sを見ã¤ã‘られã¾ã›ã‚“"
++
++#~ msgid "Warning: Can't find <%s>\n"
++#~ msgstr "警告: <%s>を見ã¤ã‘られã¾ã›ã‚“\n"
++
++#~ msgid "Add Bookmark for Link"
++#~ msgstr "リンクをブックマークã«è¿½åŠ "
++
++#~ msgid "ERROR: suspicious username: %s\n"
++#~ msgstr "エラー: ç–‘ã‚ã—ã„ユーザーå: %s\n"
++
++#~ msgid "Server NOT running\n"
++#~ msgstr "サーãƒãƒ¼ãŒèµ·å‹•ã—ã¦ã„ã¾ã›ã‚“。\n"
++
++#~ msgid "<waited %d cycles for server to be on line>\n"
++#~ msgstr "<サーãƒãƒ¼ã‚’ã“ã®è¡Œã§%dサイクル待ã¡ã¾ã—ãŸ>\n"
++
++#~ msgid "Tab"
++#~ msgstr "タブ"
++
++#~ msgid "Window Width"
++#~ msgstr "Windowã®æ¨ªå¹…"
++
++#~ msgid "Window Height"
++#~ msgstr "Windowã®é«˜ã•"
++
++#~ msgid "broken JIS code!\n"
++#~ msgstr "ç ´æã—ãŸJISコードã§ã™\n"
++
++#~ msgid "guess maybe mistaken. recheck charset.\n"
++#~ msgstr "推測ã«å¤±æ•—ã—ãŸå¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚文字コードをå†ãƒã‚§ãƒƒã‚¯ã—ã¾ã™ã€‚\n"
++
++#~ msgid "not found meta tag charset.\n"
++#~ msgstr "metaã‚¿ã‚°ã«charsetãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n"
++
++#~ msgid "Setting locale to %s...\n"
++#~ msgstr "LOCALEã‚’%sã«è¨­å®šã—ã¦ã„ã¾ã™...\n"
+diff -pruN dillo-0.8.6/po/quot.sed dillo-0.8.6-i18n-misc-20060709/po/quot.sed
+--- dillo-0.8.6/po/quot.sed 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/po/quot.sed 2006-05-16 01:21:06.000000000 +0900
+@@ -0,0 +1,6 @@
++s/"\([^"]*\)"/“\1â€/g
++s/`\([^`']*\)'/‘\1’/g
++s/ '\([^`']*\)' / ‘\1’ /g
++s/ '\([^`']*\)'$/ ‘\1’/g
++s/^'\([^`']*\)' /‘\1’ /g
++s/“â€/""/g
+diff -pruN dillo-0.8.6/po/remove-potcdate.sin dillo-0.8.6-i18n-misc-20060709/po/remove-potcdate.sin
+--- dillo-0.8.6/po/remove-potcdate.sin 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/po/remove-potcdate.sin 2006-05-16 01:21:06.000000000 +0900
+@@ -0,0 +1,19 @@
++# Sed script that remove the POT-Creation-Date line in the header entry
++# from a POT file.
++#
++# The distinction between the first and the following occurrences of the
++# pattern is achieved by looking at the hold space.
++/^"POT-Creation-Date: .*"$/{
++x
++# Test if the hold space is empty.
++s/P/P/
++ta
++# Yes it was empty. First occurrence. Remove the line.
++g
++d
++bb
++:a
++# The hold space was nonempty. Following occurrences. Do nothing.
++x
++:b
++}
+¥Ð¥¤¥Ê¥ê¡¼¡¦¥Õ¥¡¥¤¥ëdillo-0.8.6/po/zh_CN.gmo¤Èdillo-0.8.6-i18n-misc-20060709/po/zh_CN.gmo¤Ï°ã¤¤¤Þ¤¹
+diff -pruN dillo-0.8.6/po/zh_CN.po dillo-0.8.6-i18n-misc-20060709/po/zh_CN.po
+--- dillo-0.8.6/po/zh_CN.po 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/po/zh_CN.po 2006-07-09 00:49:43.000000000 +0900
+@@ -0,0 +1,2100 @@
++# Dillo Chinese Translation.
++# Copyright (C) YEAR Free Software Foundation, Inc.
++# This file is distributed under the same license as the PACKAGE package.
++# Babyfai Cheung <babyfai1@yahoo.com.hk>, 2005.
++msgid ""
++msgstr ""
++"Project-Id-Version: Dillo 0.8.4-i18n-misc\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2006-07-09 00:49+0900\n"
++"PO-Revision-Date: 2005-02-06 22:00+0800\n"
++"Last-Translator: Babyfai Cheung <babyfai1@yahoo.com.hk>\n"
++"Language-Team: NONE\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=UTF-8\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#: src/msg.h:27
++msgid "HTTP warning: "
++msgstr ""
++
++#: src/auth.c:87
++msgid "Browser Url has changed\n"
++msgstr "æµè§ˆå™¨ä½å€å·²å˜æ›´\n"
++
++#: src/cache.c:253
++msgid "WARNING: Cache_entry_add, leaking an entry.\n"
++msgstr ""
++
++#: src/cache.c:316
++msgid "## Aborting CCCQuery\n"
++msgstr "## 退出 CCCQuery\n"
++
++#: src/cache.c:319
++msgid "## Aborting CCCAnswer\n"
++msgstr "## 退出 CCCAnswer\n"
++
++#: src/cache.c:322
++msgid "## Aborting raw2\n"
++msgstr "## 退出 raw2\n"
++
++#: src/cache.c:365
++msgid "## No more clients for this entry\n"
++msgstr ""
++
++#: src/cache.c:369
++msgid "Cache_prepare_reload: ERROR, entry still has clients\n"
++msgstr ""
++
++#: src/cache.c:398
++#, c-format
++msgid "Reloading >%s< because it shouldn't be cached\n"
++msgstr ""
++
++#: src/cache.c:418
++msgid "ERROR: unsupported protocol"
++msgstr "错误: 尚未支æ´çš„通讯å定"
++
++#: src/cache.c:488
++#, c-format
++msgid "Redirect loop for URL: >%s<\n"
++msgstr "é‡å¯¼å‘回圈予 URL: >%s<\n"
++
++#: src/cache.c:590
++#, c-format
++msgid "Bad clocks, ignore expire on >%s<\n"
++msgstr ""
++
++#: src/cache.c:594
++#, c-format
++msgid "Forcing min expire %d on >%s< instead %ld\n"
++msgstr ""
++
++#: src/cache.c:678
++msgid "'Cache-Control: max-age=' without 'Date: ' header"
++msgstr ""
++
++#: src/cache.c:722
++msgid "Server didn't send Content-Type in header.\n"
++msgstr "æœåŠ¡å™¨å¹¶æœªåœ¨æ ‡å¤´ä¸­é€å‡ºå†…容.\n"
++
++#: src/cache.c:743
++#, c-format
++msgid "Forcing default expire to query url >%s<\n"
++msgstr ""
++
++#: src/cache.c:831
++#, c-format
++msgid "Cache_decode_data: got all data -- decodinging %s\n"
++msgstr "Cache_decode_data: 收到全部资料 -- æ­£åœ¨è§£ç  %s\n"
++
++#: src/cache.c:840
++msgid "Cache_decode_data: not gzip data!\n"
++msgstr "Cache_decode_data: 没有压缩资料!\n"
++
++#: src/cache.c:846
++msgid "Cache_decode_data: invalid gzip data!\n"
++msgstr "Cache_decode_data: 无效的压缩资料!\n"
++
++#: src/cache.c:898
++msgid "not x-gzip\n"
++msgstr "没有 X-压缩资料\n"
++
++#: src/cache.c:931
++#, c-format
++msgid ""
++"Content-Length does NOT match message body,\n"
++" at: %s\n"
++msgstr ""
++"å‘现ä¸ç¬¦é•¿åº¦çš„内容,\n"
++" 在: %s\n"
++
++#: src/cache.c:950
++msgid "Cache_process_io Op = IOAbort; not implemented yet\n"
++msgstr ""
++
++#: src/cache.c:1004
++#, c-format
++msgid "ERROR: redirect loop for: %s"
++msgstr "错误: é‡å¯¼å‘回圈予: %s"
++
++#: src/cache.c:1015
++#, c-format
++msgid ""
++">>>Redirect from: %s\n"
++" to %s\n"
++msgstr ""
++">>>é‡å¯¼å‘从: %s\n"
++" 至 %s\n"
++
++#: src/cache.c:1035
++msgid ">>>Image redirection without entity-content<<<\n"
++msgstr ">>>é‡å¯¼å‘å½±åƒ,在无实质主题下<<<\n"
++
++#: src/cache.c:1037
++msgid ">>>Image redirection with entity-content<<<\n"
++msgstr ">>>é‡å¯¼å‘å½±åƒ,在实质主题下<<<\n"
++
++#: src/cache.c:1103
++msgid "FATAL!:*** >>>> Cache_process_queue Caught busy!!!\n"
++msgstr "é‡å¤§é”™è¯¯:*** >>>> Cache_process_queue 系统ç¹å¿™ !!!\n"
++
++#: src/cache.c:1111
++#, c-format
++msgid "Content-Type '%s' doesn't match the real data.\n"
++msgstr ""
++
++#: src/cache.c:1140
++#, c-format
++msgid "HTTP warning: Content-Type '%s' doesn't match the real data."
++msgstr ""
++
++#: src/cache.c:1177
++#, fuzzy, c-format
++msgid "Unhandled MIME type: <%s>\n"
++msgstr ""
++"\n"
++" ä¸æ˜Žçš„ MIME 类型: <%s>\n"
++
++#: src/cache.c:1202
++msgid "Client Callback is NULL"
++msgstr ""
++
++#: src/cache.c:1303
++msgid "WARNING: Cache_stop_client, inexistent client\n"
++msgstr ""
++
++#: src/cache.c:1445 src/capi.c:428 src/capi.c:481 src/capi.c:536
++#: src/capi.c:570 src/IO/dpi.c:720 src/IO/dpi.c:760
++msgid " Not implemented\n"
++msgstr "没有实行\n"
++
++#: src/capi.c:229
++msgid "Capi_verify_dpi_url_request: Permission Denied!\n"
++msgstr ""
++
++#: src/capi.c:324
++#, c-format
++msgid " reload=%d URL_E2EReload=%d\n"
++msgstr ""
++
++#: src/capi.c:389
++msgid " ERROR: [a_Capi_dpi_send_cmd] No open connection found\n"
++msgstr ""
++
++#: src/capi.c:457
++msgid "ERROR: can't start dpid daemon!"
++msgstr ""
++
++#: src/capi.c:492
++msgid " ** Capi 2F catched an invalid 'web' structure\n"
++msgstr ""
++
++#: src/capi.c:552
++msgid " Error with pipe\n"
++msgstr ""
++
++#: src/commands.c:166
++msgid "View Source"
++msgstr "检视æºå§‹æ¡£"
++
++#: src/commands.c:183
++msgid "Detected HTML errors"
++msgstr "å‘现 HTML 错误"
++
++#: src/commands.c:265
++msgid "Stopped"
++msgstr "å·²åœæ­¢"
++
++#: src/dillo.c:109
++msgid ""
++" -x, --xid XID Open first Dillo window in an existing\n"
++" GtkSocket which window ID is XID (decimal)."
++msgstr ""
++
++#: src/dillo.c:112
++msgid " -v, --version Display version info and exit."
++msgstr ""
++
++#: src/dillo.c:114
++msgid " -h, --help Display this help text and exit."
++msgstr ""
++
++#: src/dillo.c:116
++msgid ""
++" -f, --fullwindow Start in full window mode: hide address bar,\n"
++" navigation buttons, menu, and status bar."
++msgstr ""
++
++#: src/dillo.c:119
++msgid " -l, --local Don't follow links for this URL(s)."
++msgstr ""
++
++#: src/dillo.c:121
++msgid ""
++" -g, -geometry GEO Set initial window position where GEO is\n"
++" <width>x<height>{+-}<x>{+-}<y>"
++msgstr ""
++
++#: src/dillo.c:125
++msgid ""
++" -D, --debug-rendering Draw additionaly several lines in a web page,\n"
++" representing its structure. For debugging. "
++msgstr ""
++
++#: src/dillo.c:129
++msgid " -R, --rcfile FILE Use alternative rcfile."
++msgstr ""
++
++#: src/dillo.c:266
++#, c-format
++msgid ""
++"Error: the XID must be an unsigned decimal numerical value.\n"
++"The offending value was: %s\n"
++msgstr ""
++
++#: src/dillo.c:284
++msgid "Error in command line options.\n"
++msgstr ""
++
++#: src/dillo.c:291
++#, c-format
++msgid "Setting gtk charset to %s...\n"
++msgstr ""
++
++#: src/dillo.c:395
++#, fuzzy
++msgid "Dillo: normal exit!\n"
++msgstr "Dillo: 找寻字串"
++
++#: src/dillo.c:409
++#, c-format
++msgid "Dillo: error creating directory %s: %s\n"
++msgstr ""
++
++#: src/dillo.c:412
++#, c-format
++msgid "Dillo: error reading %s: %s\n"
++msgstr ""
++
++#: src/dillo.c:461
++#, c-format
++msgid "Option %s requires %d argument(s)\n"
++msgstr ""
++
++#: src/dillo.c:496
++msgid ""
++"\n"
++"Usage: dillo [OPTIONS] [URL|FILE]...\n"
++"Options:\n"
++msgstr ""
++
++#: src/dillo.c:503
++#, c-format
++msgid " %s, %s *Undocumented*\n"
++msgstr ""
++
++#: src/dillo.c:506
++msgid ""
++" URL URL to browse.\n"
++" FILE Local FILE to view.\n"
++msgstr ""
++
++#: src/html.c:182
++#, c-format
++msgid "HTML warning: line %d, "
++msgstr ""
++
++#: src/html.c:213
++#, c-format
++msgid "URL has %d illegal character%s [%d space%s]\n"
++msgstr ""
++
++#: src/html.c:216
++#, c-format
++msgid "URL has %d illegal character%s [%d in (00-1F or 7F)]\n"
++msgstr ""
++
++#: src/html.c:219
++#, c-format
++msgid "URL has %d illegal character%s [%d space%s and %d in (00-1F or 7F)]\n"
++msgstr ""
++
++#: src/html.c:1226
++msgid "numeric character reference out of range\n"
++msgstr ""
++
++#: src/html.c:1234
++msgid "numeric character reference without trailing ';'\n"
++msgstr ""
++
++#: src/html.c:1246
++#, c-format
++msgid "undefined character entity '%s'\n"
++msgstr ""
++
++#: src/html.c:1254
++msgid "character entity reference without trailing ';'\n"
++msgstr ""
++
++#: src/html.c:1262
++msgid "code positions 128-159 are not defined for ISO Latin-1\n"
++msgstr ""
++
++#: src/html.c:1270
++msgid "literal '&'\n"
++msgstr ""
++
++#: src/html.c:1379
++msgid "TAB character inside <PRE>\n"
++msgstr ""
++
++#: src/html.c:1615
++#, c-format
++msgid " - forcing close of open tag: <%s>\n"
++msgstr ""
++
++#: src/html.c:1624
++#, c-format
++msgid "unexpected closing tag: </%1$s>. -- expected </%2$s>\n"
++msgstr ""
++
++#: src/html.c:1696
++#, c-format
++msgid "Garbage after length: %s\n"
++msgstr ""
++
++#: src/html.c:1715
++msgid "color is not in \"#RRGGBB\" format\n"
++msgstr ""
++
++#: src/html.c:1735
++#, c-format
++msgid "'%s' value is not of the form [A-Za-z][A-Za-z0-9:_.-]*\n"
++msgstr ""
++
++#: src/html.c:1839
++msgid "HTML element was already open\n"
++msgstr ""
++
++#: src/html.c:1866
++msgid "HEAD element must go before the BODY section\n"
++msgstr ""
++
++#: src/html.c:1876
++msgid "HEAD element was already open\n"
++msgstr ""
++
++#: src/html.c:1889
++msgid "HEAD section lacks the TITLE element\n"
++msgstr ""
++
++#: src/html.c:1917
++msgid "the TITLE element must be inside the HEAD section\n"
++msgstr ""
++
++#: src/html.c:1986
++msgid "BODY element was already open\n"
++msgstr ""
++
++#: src/html.c:1991
++msgid "unclosed HEAD element\n"
++msgstr ""
++
++#: src/html.c:2187
++msgid "<td> or <th> outside <table>\n"
++msgstr ""
++
++#: src/html.c:2191
++msgid "<td> or <th> outside <tr>\n"
++msgstr ""
++
++#: src/html.c:2309
++msgid "Invalid HTML syntax: <tr> outside <table>\n"
++msgstr ""
++
++#: src/html.c:2367
++msgid "<noframes> outside of <frameset>!!!\n"
++msgstr ""
++
++#: src/html.c:2375
++msgid "<noframe> is illegal tag !!! use <noframes>.\n"
++msgstr ""
++
++#: src/html.c:2562
++msgid "<frame> outside of <frameset>\n"
++msgstr ""
++
++#: src/html.c:2565
++msgid "<frame> inside of <noframes>\n"
++msgstr ""
++
++#: src/html.c:2568
++msgid "<frame> inside of <iframe>\n"
++msgstr ""
++
++#: src/html.c:2620
++msgid "incorrectly placed <frameset>\n"
++msgstr ""
++
++#: src/html.c:2636
++msgid "<frameset> inside of <noframes>\n"
++msgstr ""
++
++#: src/html.c:2641
++msgid "<frameset> inside of <iframe>\n"
++msgstr ""
++
++#: src/html.c:3123
++msgid " Html_tag_open_img: server-side map (ISMAP)\n"
++msgstr ""
++
++#: src/html.c:3149
++msgid "nested <map>\n"
++msgstr ""
++
++#: src/html.c:3201
++msgid "usemap coords MUST be separated with ','\n"
++msgstr ""
++
++#: src/html.c:3245
++msgid "nohref"
++msgstr ""
++
++#: src/html.c:3284
++msgid "link depends on javascript()\n"
++msgstr ""
++
++#: src/html.c:3300
++#, c-format
++msgid "Registering ANCHOR: %s\n"
++msgstr ""
++
++#: src/html.c:3305
++msgid "Anchor names must be unique within the document\n"
++msgstr ""
++
++#: src/html.c:3512
++msgid "it is strongly recommended using <UL> instead of <MENU>\n"
++msgstr ""
++
++#: src/html.c:3574
++msgid "<li> outside <ul> or <ol>\n"
++msgstr ""
++
++#: src/html.c:3770
++msgid "nested forms\n"
++msgstr ""
++
++#: src/html.c:3817
++msgid "FORM lacks a Submit button\n"
++msgstr ""
++
++#: src/html.c:3819
++msgid " (added a submit button internally)\n"
++msgstr ""
++
++#: src/html.c:3923
++msgid "META elements must be inside the HEAD section\n"
++msgstr ""
++
++#: src/html.c:3975
++#, c-format
++msgid ""
++"The NON-STANDARD meta refresh tag. The HTML 4.01 SPEC (sec 7.4.4) recommends "
++"explicitly to avoid it. The author wanted you to go <%s>\n"
++msgstr ""
++
++#: src/html.c:4345
++msgid "Html_submit_form: Method unknown\n"
++msgstr ""
++
++#: src/html.c:4427
++msgid "Html_input_image: unable to create image submit.\n"
++msgstr ""
++
++#: src/html.c:4449
++msgid "input camp outside <form>\n"
++msgstr ""
++
++#: src/html.c:4529
++msgid "submit"
++msgstr "æ交"
++
++#: src/html.c:4536 config/dillocfg.c:79
++msgid "Reset"
++msgstr "é‡è®¾"
++
++#: src/html.c:4546
++msgid "Submit"
++msgstr "æ交"
++
++#: src/html.c:4563
++msgid "An input of the type \"file\" wasn't rendered!\n"
++msgstr ""
++
++#: src/html.c:4737
++msgid "<textarea> outside <form>\n"
++msgstr ""
++
++#: src/html.c:4742
++msgid "nested <textarea>\n"
++msgstr ""
++
++#: src/html.c:4814
++msgid "<select> outside <form>\n"
++msgstr ""
++
++#: src/html.c:4818
++msgid "nested <select>\n"
++msgstr ""
++
++#: src/html.c:5042
++msgid "base URI is relative (it MUST be absolute)\n"
++msgstr ""
++
++#: src/html.c:5049
++msgid "the BASE element must appear in the HEAD section\n"
++msgstr ""
++
++#: src/html.c:5400
++#, c-format
++msgid "<%1$s> is not allowed to contain <%2$s>. -- closing <%3$s>\n"
++msgstr ""
++
++#: src/html.c:5515
++#, c-format
++msgid "<pre> is not allowed to contain <%s>\n"
++msgstr ""
++
++#: src/html.c:5537
++msgid "'id' and 'name' attribute of <a> tag differ\n"
++msgstr ""
++
++#: src/html.c:5764
++msgid "Html_write_raw : bufsize is negative!\n"
++msgstr ""
++
++#: src/html.c:5842
++msgid "attribute lacks closing quote\n"
++msgstr ""
++
++#: src/html.c:5850
++#, c-format
++msgid "<%s> element lacks its closing '>'\n"
++msgstr ""
++
++#: src/html.c:6144
++msgid "could not allocate character encoding converter"
++msgstr ""
++
++#: src/misc.c:455
++msgid "Untitled"
++msgstr "未命å"
++
++#: src/interface.c:249
++msgid "Selection retrieval failed\n"
++msgstr "选择回收失败\n"
++
++#: src/interface.c:363
++msgid "Clear the URL box (middle-click to paste an URL)."
++msgstr "清空ä½å€æ (点击中键)."
++
++#: src/interface.c:385
++msgid "Search the Web"
++msgstr "æœå¯»ç½‘页"
++
++#: src/interface.c:417 src/menu.c:231 src/menu.c:280
++msgid "Back"
++msgstr "返回"
++
++#: src/interface.c:421
++msgid "Go to previous page (right-click for menu)."
++msgstr "回到上一页(å³å‡»èœå•)."
++
++#: src/interface.c:450 src/menu.c:233 src/menu.c:282
++msgid "Forward"
++msgstr "å¾€å‰"
++
++#: src/interface.c:454
++msgid "Go to next page (right-click for menu)."
++msgstr "移至下一页(å³å‡»èœå•)."
++
++#: src/interface.c:481
++msgid "Home"
++msgstr "首页"
++
++#: src/interface.c:485
++msgid "Go to the Home page"
++msgstr "移至首页"
++
++#: src/interface.c:499 config/dillocfg.c:80
++msgid "Reload"
++msgstr "é‡è½½"
++
++#: src/interface.c:500
++msgid "Reload this page"
++msgstr "é‡æ–°è½½å…¥"
++
++#: src/interface.c:512 config/dillocfg.c:81
++msgid "Save"
++msgstr "储存"
++
++#: src/interface.c:513
++msgid "Save this page"
++msgstr "储存网页"
++
++#: src/interface.c:520 src/menu.c:235 src/menu.c:284
++msgid "Stop"
++msgstr "åœæ­¢"
++
++#: src/interface.c:521
++msgid "Stop the current transfer"
++msgstr "åœæ­¢å½“å‰çš„ä¼ é€"
++
++#: src/interface.c:534
++msgid "Book"
++msgstr "书签"
++
++#: src/interface.c:538
++msgid "View bookmarks"
++msgstr "检视书签"
++
++#: src/interface.c:655 src/interface.c:826
++msgid "Hide Controls"
++msgstr "éšè—控制æ "
++
++#: src/interface.c:655 src/interface.c:826
++msgid "Show Controls"
++msgstr "显示控制æ "
++
++#: src/interface.c:929
++msgid "Show HTML bugs (right-click for menu)."
++msgstr "显示 HTML 错误(å³å‡»èœå•)."
++
++#: src/interface.c:1231
++#, c-format
++msgid "Warning: search_url ends with '%%'\n"
++msgstr "警告: search_url 结尾为 '%%'\n"
++
++#: src/interface.c:1233
++#, c-format
++msgid "Warning: illegal specifier '%%%c' in search_url\n"
++msgstr "警告: 在 search_url 中,有éžæ³•çš„指定符 '%%%c'\n"
++
++#: src/interface.c:1298
++msgid "Dillo: Open File"
++msgstr "Dillo: å¼€å¯æ–‡ä»¶"
++
++#: src/interface.c:1374
++msgid "Clear"
++msgstr "清除"
++
++#: src/interface.c:1382 src/interface.c:1536 src/nav.c:453
++msgid "Cancel"
++msgstr "å–消"
++
++#: src/interface.c:1513
++msgid "User Name:"
++msgstr "用户å称:"
++
++#: src/interface.c:1520
++msgid "Password:"
++msgstr "å£ä»¤:"
++
++#: src/interface.c:1529 src/interface.c:1604 src/interface.c:2073
++#: src/nav.c:453
++msgid "OK"
++msgstr "确定"
++
++#: src/interface.c:1566
++msgid "Dillo: Enter Authentication"
++msgstr "Dillo: 进入验è¯"
++
++#: src/interface.c:1586
++msgid "Dillo: Question"
++msgstr "Dillo: 问题"
++
++#: src/interface.c:1602
++msgid "Dillo: Open URL"
++msgstr "Dillo: å¼€å¯ç½‘页"
++
++#: src/interface.c:1626
++#, c-format
++msgid "File saved (%d Bytes)"
++msgstr "文件已存入(%d Bytes)"
++
++#: src/interface.c:1708
++#, c-format
++msgid "Error trying to save: %s\n"
++msgstr "错误於储存: %s\n"
++
++#: src/interface.c:1761
++msgid "Dillo: Save URL as File..."
++msgstr "Dillo: 储存网页为..."
++
++#: src/interface.c:1788
++msgid "Dillo: Save link as File..."
++msgstr "Dillo: 储存连接为..."
++
++#: src/interface.c:1843 src/interface.c:1857
++msgid "Dillo: Find text"
++msgstr "Dillo: 找寻字串"
++
++#: src/interface.c:1844 src/interface.c:1850
++#, c-format
++msgid "Cannot find \"%s\"."
++msgstr "找ä¸åˆ° \"%s\"."
++
++#: src/interface.c:1858
++#, c-format
++msgid "No further occurence of \"%s\". Restarting from the beginning."
++msgstr "找ä¸åˆ°æ›´å¤šç¬¦åˆ \"%s\". é‡å¼€ç«¯å†æ‰¾å¯»"
++
++#: src/interface.c:1866
++#, c-format
++msgid "(Find) \"%s\": restart from beginning"
++msgstr "(找寻) \"%s\": é‡å¼€ç«¯å†æ‰¾å¯» "
++
++#: src/interface.c:1879
++#, c-format
++msgid "(Find) \"%s\""
++msgstr "(找寻) \"%s\""
++
++#: src/interface.c:1885
++msgid "Unexpected return from a_Dw_gtk_scrolled_window_search()\n"
++msgstr "æ„外回传从 a_Dw_gtk_scrolled_window_search()\n"
++
++#: src/interface.c:1937
++msgid "press <Enter> to (repeat) search, <Esc> to close search"
++msgstr "按 <Enter> é‡æ–°æœå¯», <Esc> 退出"
++
++#: src/interface.c:1938 src/interface.c:2031
++msgid "Search"
++msgstr "æœå¯»"
++
++#: src/interface.c:1940 src/interface.c:1941 src/interface.c:1977
++msgid "Case sensitive"
++msgstr "区分大å°å†™"
++
++#: src/interface.c:1975
++msgid "Dillo: Find text in page"
++msgstr "Dillo: 在页é¢ä¸­æ‰¾å¯»æ–‡å­—"
++
++#: src/interface.c:1978
++msgid "Find"
++msgstr "找寻"
++
++#: src/interface.c:2029
++msgid "Dillo"
++msgstr "Dillo"
++
++#: src/interface.c:2029
++msgid "Dillo: Search the Web"
++msgstr "Dillo: æœå¯»ç½‘页"
++
++#: src/interface.c:2066
++#, c-format
++msgid "Dillo: Enter proxy password for '%s'"
++msgstr "Dillo: 输入 '%s' çš„æœåŠ¡å™¨å£ä»¤"
++
++#: src/interface.c:2151
++msgid "Close"
++msgstr "关闭"
++
++#: src/interface.c:2226
++msgid "close"
++msgstr "关闭"
++
++#: src/nav.c:383
++#, c-format
++msgid "Unhandled switch type %d in a_Nav_jump_callback in src/nav.c\n"
++msgstr ""
++
++#: src/nav.c:452
++msgid "Repost form data?"
++msgstr "å†åˆ—出表å•èµ„æ–™?"
++
++#: src/menu.c:173
++msgid "_File"
++msgstr "文件(_F)"
++
++#: src/menu.c:174
++msgid "_New Window"
++msgstr "新窗å£(_N)"
++
++#: src/menu.c:177
++msgid "New _Tab"
++msgstr "新分页(_T)"
++
++#: src/menu.c:181
++msgid "_Open File..."
++msgstr "å¼€å¯æ–‡ä»¶(_O)..."
++
++#: src/menu.c:183
++msgid "Open _URL..."
++msgstr "å¼€å¯ä½å€(_U)..."
++
++#: src/menu.c:189
++msgid "Close Window"
++msgstr "关闭窗å£"
++
++#: src/menu.c:192 src/menu.c:359
++msgid "Close Tab"
++msgstr "关闭分页"
++
++#: src/menu.c:196
++msgid "Exit Dillo"
++msgstr "关闭 Dillo"
++
++#: src/menu.c:200
++msgid "_View"
++msgstr "检视(_V)"
++
++#: src/menu.c:202
++msgid "Previous tab"
++msgstr "上一分页"
++
++#: src/menu.c:204
++msgid "Next tab"
++msgstr "下一分页"
++
++#: src/menu.c:208
++msgid "_Options..."
++msgstr "选项(_O)..."
++
++#: src/menu.c:228
++msgid "PAGE OPTIONS"
++msgstr "页é¢é€‰é¡¹"
++
++#: src/menu.c:237 src/menu.c:286
++msgid "_Reload"
++msgstr "é‡è½½(_R)"
++
++#: src/menu.c:241
++msgid "View page So_urce"
++msgstr "检视æºå§‹æ¡£(_S)"
++
++#: src/menu.c:243
++msgid "View page Bugs"
++msgstr "检视页é¢é”™è¯¯"
++
++#: src/menu.c:244
++msgid "_Bookmark this Page"
++msgstr "加进书签(_B)"
++
++#: src/menu.c:247
++msgid "Duplicate this Page"
++msgstr "å¤åˆ¶è‡³æ–°çª—å£"
++
++#: src/menu.c:250
++msgid "Duplicate this tab"
++msgstr "å¤åˆ¶è‡³æ–°åˆ†é¡µ"
++
++#: src/menu.c:254
++msgid "_Find Text"
++msgstr "找寻文字(_F)"
++
++#: src/menu.c:257
++msgid "Jump to..."
++msgstr "跳至..."
++
++#: src/menu.c:258
++msgid "This Frame..."
++msgstr "此框架..."
++
++#: src/menu.c:259
++msgid "This Frameset..."
++msgstr "此框架布局..."
++
++#: src/menu.c:262
++msgid "Save Page As..."
++msgstr "储存为..."
++
++#: src/menu.c:277
++msgid "FRAME OPTIONS"
++msgstr "框架选项"
++
++#: src/menu.c:290
++msgid "View frame Source"
++msgstr "检视框架æºå§‹æ¡£"
++
++#: src/menu.c:292
++msgid "Bookmark this Frame"
++msgstr "框架加进书签"
++
++#: src/menu.c:294
++msgid "Reload this Frame"
++msgstr "é‡æ–°è½½å…¥"
++
++#: src/menu.c:297
++msgid "Show only this Frame"
++msgstr "åªæ˜¾ç¤ºæ­¤æ¡†æž¶"
++
++#: src/menu.c:299
++msgid "Open Frame in new Window"
++msgstr "在新窗å£å¼€å¯æ¡†æž¶"
++
++#: src/menu.c:302
++msgid "Open Frame in new Tab"
++msgstr "在新分页开å¯æ¡†æž¶"
++
++#: src/menu.c:306
++msgid "_Find Text in this Frame..."
++msgstr "於框架找寻字串(_F)..."
++
++#: src/menu.c:309 src/menu.c:340
++msgid "Save Frame As..."
++msgstr "储存框架为..."
++
++#: src/menu.c:325
++msgid "FRAMESET OPTIONS"
++msgstr "框架布局选项"
++
++#: src/menu.c:327
++msgid "View Frameset Source"
++msgstr "检视æºå§‹æ¡£"
++
++#: src/menu.c:329
++msgid "Bookmark this Frameset"
++msgstr "加进书签"
++
++#: src/menu.c:331
++msgid "Reload this Frameset"
++msgstr "é‡æ–°è½½å…¥"
++
++#: src/menu.c:334
++msgid "Show only this Frameset"
++msgstr "åªæ˜¾ç¤ºæ­¤æ¡†æž¶"
++
++#: src/menu.c:337
++msgid "_Find Text in this Frameset..."
++msgstr "找寻字串(_F)..."
++
++#: src/menu.c:357
++msgid "TAB OPTIONS"
++msgstr "分页选项"
++
++#: src/menu.c:361
++msgid "New Tab"
++msgstr "新分页"
++
++#: src/menu.c:363
++msgid "Reload Tab"
++msgstr "é‡è½½åˆ†é¡µ"
++
++#: src/menu.c:460
++msgid "FOLLOWING PAGES"
++msgstr "下一页"
++
++#: src/menu.c:463
++msgid "PREVIOUS PAGES"
++msgstr "上一页"
++
++#: src/menu.c:531
++msgid "LINK OPTIONS"
++msgstr "连接选项"
++
++#: src/menu.c:533
++msgid "Open Link in New Window"
++msgstr "在新窗å£å¼€å¯è¿žæŽ¥"
++
++#: src/menu.c:536
++msgid "Open Link in New Tab"
++msgstr "在新分页开å¯è¿žæŽ¥"
++
++#: src/menu.c:539
++msgid "Open Link"
++msgstr "å¼€å¯è¿žæŽ¥"
++
++#: src/menu.c:542
++msgid "Bookmark this Link"
++msgstr "连接加进书签"
++
++#: src/menu.c:544
++msgid "Copy Link location"
++msgstr "å¤åˆ¶è¿žæŽ¥ä½å€"
++
++#: src/menu.c:549
++msgid "Save Link As..."
++msgstr "储存连接为..."
++
++#: src/menu.c:553
++msgid "Image Menu..."
++msgstr "å½±åƒèœå•.."
++
++#: src/menu.c:571
++msgid "IMAGE OPTIONS"
++msgstr "å½±åƒé€‰é¡¹"
++
++#: src/menu.c:573
++msgid "Isolate Image"
++msgstr "检视影åƒ"
++
++#: src/menu.c:575
++msgid "Open Image in New Window"
++msgstr "在新窗å£å¼€å¯å½±åƒ"
++
++#: src/menu.c:578
++msgid "Open Image in New Tab"
++msgstr "在新分页开å¯å½±åƒ"
++
++#: src/menu.c:581
++msgid "Open Image"
++msgstr "å¼€å¯å½±åƒ"
++
++#: src/menu.c:584
++msgid "Bookmark this Image"
++msgstr "将影åƒåŠ å…¥ä¹¦ç­¾"
++
++#: src/menu.c:586
++msgid "Copy Image location"
++msgstr "å¤åˆ¶å½±åƒä½å€"
++
++#: src/menu.c:591
++msgid "Save Image As..."
++msgstr "储存影åƒä¸º..."
++
++#: src/menu.c:605
++msgid "BUG METER OPTIONS"
++msgstr "错误侦测选项"
++
++#: src/menu.c:607
++msgid "Validate URL with W3C"
++msgstr "以 W3C 错误侦测"
++
++#: src/menu.c:609
++msgid "Validate URL with WDG"
++msgstr "以 WDG 错误侦测"
++
++#: src/menu.c:612
++msgid "About Bug Meter..."
++msgstr "关於错误侦测..."
++
++#: src/prefs.c:431
++msgid "Error: Can't open specified config file. default file is used.\n"
++msgstr ""
++
++#: src/i18n.c:359
++msgid "charset detect may mistake...\n"
++msgstr "文字检测å¯èƒ½é”™è¯¯...\n"
++
++#: src/i18n.c:447
++msgid "<meta> outside of <head>!\n"
++msgstr ""
++
++#: src/i18n.c:493
++msgid "all ascii code\n"
++msgstr "全为 ASCII ç¼–ç \n"
++
++#: src/i18n.c:526
++msgid "unable to fully convert between character encodings\n"
++msgstr "未能完全转æ¢æ–‡å­—é—´çš„ç¼–ç \n"
++
++#: src/i18n.c:565
++msgid "no support enc\n"
++msgstr "ä¸æ”¯æ´çš„ç¼–ç \n"
++
++#: src/tab.c:293 src/tab.c:425 dpi/bookmarks.c:1653
++msgid "(Untitled)"
++msgstr "(无题)"
++
++#: src/IO/https.c:168
++msgid "--Error detected\n"
++msgstr "--错误检测\n"
++
++#: src/IO/https.c:173 src/IO/https.c:204 src/IO/http.c:294
++msgid "ERROR: unable to connect to remote host"
++msgstr "错误: 未能连接远端主机"
++
++#: src/IO/https.c:179 src/IO/http.c:309
++msgid "--Connection established\n"
++msgstr "--连线已建立\n"
++
++#: src/IO/https.c:280 src/IO/http.c:417
++#, c-format
++msgid "Sending query to %s..."
++msgstr "æ­£é€å‡ºè¯·æ±‚至 %s..."
++
++#: src/IO/https.c:333 src/IO/http.c:486
++#, c-format
++msgid "DNS solving %s"
++msgstr "DNS 正查释域å %s"
++
++#: src/IO/https.c:363
++msgid " HTTPS: new abort handler! #2\n"
++msgstr ""
++
++#: src/IO/https.c:365 src/IO/https.c:387 src/IO/http.c:301 src/IO/http.c:520
++#: src/IO/http.c:551
++#, c-format
++msgid "ERROR: %s"
++msgstr "错误: %s"
++
++#: src/IO/https.c:386
++msgid " HTTP: new abort handler! #1\n"
++msgstr ""
++
++#: src/IO/https.c:400 src/IO/http.c:564
++#, c-format
++msgid "ERROR: Dns can't solve %s"
++msgstr "错误: Dns 未能查释域å %s"
++
++#: src/IO/https.c:421 src/IO/http.c:591
++msgid "Query sent, waiting for reply..."
++msgstr "请求已é€å‡º, 正等侯回覆中..."
++
++#: src/IO/http.c:190
++#, c-format
++msgid "Getting %1$s, referer %2$s\n"
++msgstr "æå– %1$s 中, 因应 %2$s\n"
++
++#: src/IO/http.c:259
++#, c-format
++msgid ""
++"Query:\n"
++"%s"
++msgstr ""
++"查询: \n"
++"%s"
++
++#: src/IO/http.c:286
++msgid "--Connection broken\n"
++msgstr "--连线被中断 \n"
++
++#: src/IO/http.c:342
++#, c-format
++msgid "Http_connect_socket ERROR: %s\n"
++msgstr "è¿žæŽ¥ç«¯å£ é”™è¯¯: %s\n"
++
++#: src/IO/http.c:363 src/IO/http.c:377
++#, c-format
++msgid "Connecting to %s\n"
++msgstr "正在连接 %s\n"
++
++#: src/IO/http.c:396
++msgid "Contacting host..."
++msgstr "正在è”系主机..."
++
++#: src/IO/http.c:529
++msgid "Http: OpAbort [1B]\n"
++msgstr "Http: OpAbort [1B]\n"
++
++#: src/IO/dpi.c:188
++msgid "ERROR: [Dpi_get_token] Can't find token start\n"
++msgstr ""
++
++#: src/IO/dpi.c:221
++msgid "ERROR: [Dpi_get_token] *** NULL code here ***\n"
++msgstr ""
++
++#: src/IO/dpi.c:312
++msgid "Dpi: [Dpi_process_io] IOClose\n"
++msgstr ""
++
++#: src/IO/dpi.c:338
++#, c-format
++msgid "Dpi_start_dpid (child): %s\n"
++msgstr ""
++
++#: src/IO/dpi.c:348 src/IO/dpi.c:363
++#, c-format
++msgid "Dpi_start_dpid: %s\n"
++msgstr ""
++
++#: src/IO/dpi.c:359
++#, c-format
++msgid "Dpi_start_dpid: n = %d\n"
++msgstr ""
++
++#: src/IO/dpi.c:386
++#, c-format
++msgid "Dpi_check_uds: %1$s %2$s\n"
++msgstr ""
++
++#: src/IO/dpi.c:673
++msgid "dpi.c: ERROR, can't start dpi daemon\n"
++msgstr ""
++
++#: src/IO/dpi.c:686
++msgid "a_Dpi_ccc: OpAbort[2B], Not implemented\n"
++msgstr ""
++
++#: src/IO/dpi.c:790 src/IO/dpi.c:794
++#, c-format
++msgid "a_Dpi_bye_dpid: %s\n"
++msgstr ""
++
++#: dpid/dpi_socket_dir.c:106
++#, c-format
++msgid "The dpi_socket_dir file does not exist\n"
++msgstr "dpi_socket_dir 文件并ä¸å­˜åœ¨\n"
++
++#: dpid/dpi_socket_dir.c:110 dpid/dpi_socket_dir.c:114
++#, c-format
++msgid "debug_msg - init_sockdir: The socket directory "
++msgstr ""
++
++#: dpid/dpi_socket_dir.c:111
++#, c-format
++msgid "%s exists and is OK\n"
++msgstr "%s 存在并å¯æ­£å¸¸ä½¿ç”¨\n"
++
++#: dpid/dpi_socket_dir.c:115
++#, c-format
++msgid "%s does not exist or is not a directory\n"
++msgstr "%s ä¸å­˜åœ¨ä¸”ä¸æ˜¯ä¸€ä¸ªç›®å½•\n"
++
++#: dpid/dpi_socket_dir.c:124
++#, c-format
++msgid " - Failed to create dpi socket directory\n"
++msgstr ""
++
++#: dpid/dpi_socket_dir.c:127
++#, c-format
++msgid " - failed to save %s\n"
++msgstr ""
++
++#: dpid/main.c:59 dpid/main.c:66 dpid/main.c:77 dpid/main.c:85 dpid/main.c:99
++#: dpid/main.c:104 dpid/main.c:109
++#, c-format
++msgid "ERROR in child proc for %s\n"
++msgstr ""
++
++#: dpid/main.c:166
++#, c-format
++msgid ": dpid failed to parse cmd in %s\n"
++msgstr ""
++
++#: dpid/main.c:265
++#, c-format
++msgid "Failed to create socket directory\n"
++msgstr ""
++
++#: dpid/main.c:275
++#, c-format
++msgid "dpid refuses to start, possibly because:\n"
++msgstr ""
++
++#: dpid/main.c:276
++#, c-format
++msgid "\t1) An instance of dpid is already running.\n"
++msgstr ""
++
++#: dpid/main.c:277
++#, c-format
++msgid "\t2) A previous dpid didn't clean up on exit.\n"
++msgstr ""
++
++#: dpid/main.c:280
++msgid "init_srs_sockets failed\n"
++msgstr ""
++
++#: dpid/main.c:294
++#, c-format
++msgid "dpid started\n"
++msgstr ""
++
++#: dpid/main.c:340
++#, c-format
++msgid "accept on srs socket failed\n"
++msgstr ""
++
++#: dpid/main.c:341
++#, c-format
++msgid "service pending connections, and continue\n"
++msgstr ""
++
++#: dpi/bookmarks.c:96
++#, fuzzy
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>Bookmarks</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr>\n"
++" <td>&nbsp;Bookmarks::</td>\n"
++" <td width='100%' align='right'>\n"
++" [<a href='dpi:/bm/modify'>modify</a>]\n"
++" </td></tr>\n"
++" </table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++msgstr ""
++"<html>\n"
++"<head>\n"
++"<title>书签</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr>\n"
++" <td><pre>&nbsp;书签::</pre></td>\n"
++" <td width='100%' align='right'>\n"
++" <pre>[<a href='dpi:/bm/modify'>编辑</a>]</pre>\n"
++" </td></tr>\n"
++" </table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++
++#: dpi/bookmarks.c:115
++#, fuzzy
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>Bookmarks</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr>\n"
++" <td>&nbsp;Bookmarks :: modify</td></tr>\n"
++" </table></td></tr> \n"
++"</table> \n"
++"\n"
++"<form>\n"
++"<table width='100%' border='1' cellpadding='0'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td><b>Select&nbsp;an&nbsp;operation&nbsp;</b></td>\n"
++" <td><select name='operation'>\n"
++" <option value='none' selected>--\n"
++" <option value='delete'>Delete\n"
++" <option value='move'>Move\n"
++" <option value='modify'>Modify\n"
++" <option value='add_sec'>Add Section\n"
++" <option value='add_url'>Add URL\n"
++" </select></td>\n"
++" <td><b>,&nbsp;mark&nbsp;its&nbsp;operands,&nbsp;and&nbsp;</b></td>\n"
++" <td><input type='submit' name='submit' value='submit.'></td>\n"
++" <td width='100%'></td>\n"
++" </tr>\n"
++" </table></td></tr>\n"
++"</table>\n"
++msgstr ""
++"<html>\n"
++"<head>\n"
++"<title>书签</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr>\n"
++" <td><pre>&nbsp;书签 :: 编辑</pre></td></tr>\n"
++" </table></td></tr> \n"
++"</table> \n"
++"\n"
++"<form>\n"
++"<table width='100%' border='1' cellpadding='0'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td><pre><b>选择动作&nbsp;</b></pre></td>\n"
++" <td><select name='operation'>\n"
++" <option value='none' selected>--\n"
++" <option value='delete'>删除\n"
++" <option value='move'>移动\n"
++" <option value='modify'>修改\n"
++" <option value='add_sec'>加入项目\n"
++" <option value='add_url'>加入 URL\n"
++" </select></td>\n"
++" <td><pre><b>套用已选动作</b></pre></td>\n"
++" <td><input type='submit' name='submit' value='套用.'></td>\n"
++" <td width='100%'></td>\n"
++" </tr>\n"
++" </table></td></tr>\n"
++"</table>\n"
++
++#: dpi/bookmarks.c:151
++msgid ""
++"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n"
++" <tr valign='top'>\n"
++" <td>\n"
++" <table bgcolor='#b4b4b4' border='2' cellpadding='4' cellspacing='1'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n"
++msgstr ""
++"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n"
++" <tr valign='top'>\n"
++" <td>\n"
++" <table bgcolor='#b4b4b4' border='2' cellpadding='4' cellspacing='1'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr><td><pre>项目:</pre></td></tr></table></td></tr>\n"
++
++#: dpi/bookmarks.c:160
++msgid ""
++"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n"
++" <tr valign='top'>\n"
++" <td>\n"
++" <table bgcolor='#b4b4b4' border='1'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n"
++msgstr ""
++"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n"
++" <tr valign='top'>\n"
++" <td>\n"
++" <table bgcolor='#b4b4b4' border='1'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr><td><pre>项目:</pre></td></tr></table></td></tr>\n"
++
++#: dpi/bookmarks.c:243
++#, fuzzy
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>Bookmarks</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: add section\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++" <input type='hidden' name='operation' value='add_section'>\n"
++"<table border='1' width='100%'>\n"
++" <tr>\n"
++" <td bgcolor='olive'><b>New&nbsp;section:</b></td>\n"
++" <td bgcolor='white' width='100%'></td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='10'>\n"
++"<tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td>Title:</td>\n"
++" <td><input type='text' name='title' size='64'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='submit.'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++"\n"
++msgstr ""
++"<html>\n"
++"<head>\n"
++"<title>书签</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'><pre>&nbsp;编辑书签:: 加入项目</pre>\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++" <input type='hidden' name='operation' value='add_section'>\n"
++"<table border='1' width='100%'>\n"
++" <tr>\n"
++" <td bgcolor='olive'><pre><b>新加入项目:</b></pre></td>\n"
++" <td bgcolor='white' width='100%'></td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='10'>\n"
++"<tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td><pre>标题:</pre></td>\n"
++" <td><input type='text' name='title' size='64'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='套用.'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++"\n"
++
++#: dpi/bookmarks.c:283
++#, fuzzy
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>Bookmarks</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: update\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++"<input type='hidden' name='operation' value='modify2'>\n"
++msgstr ""
++"<html>\n"
++"<head>\n"
++"<title>书签</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'><pre>&nbsp;编辑书签:: 更新</pre>\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++"<input type='hidden' name='operation' value='modify2'>\n"
++
++#: dpi/bookmarks.c:310
++#, c-format
++msgid ""
++"<tr><td>\n"
++" <table width='100%%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td>Title:</td>\n"
++" <td><input type='text' name='title%d' size='64'\n"
++" value='%s'></td></tr>\n"
++" <tr>\n"
++" <td>URL:</td>\n"
++" <td>%s</td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++msgstr ""
++"<tr><td>\n"
++" <table width='100%%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td><pre>标题:</pre></td>\n"
++" <td><input type='text' name='title%d' size='64'\n"
++" value='%s'></td></tr>\n"
++" <tr>\n"
++" <td>URL:</td>\n"
++" <td>%s</td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++
++#: dpi/bookmarks.c:323
++#, c-format
++msgid ""
++"<tr><td>\n"
++" <table width='100%%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td>Title:</td>\n"
++" <td><input type='text' name='s%d' size='64'\n"
++" value='%s'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++msgstr ""
++"<tr><td>\n"
++" <table width='100%%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td><pre>标题:</pre></td>\n"
++" <td><input type='text' name='s%d' size='64'\n"
++" value='%s'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++
++#: dpi/bookmarks.c:336
++#, c-format
++msgid ""
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='submit.'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++msgstr ""
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='套用.'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++
++#: dpi/bookmarks.c:346
++#, fuzzy
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>Bookmarks</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: add url\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++"<input type='hidden' name='operation' value='add_url2'>\n"
++"<table border='1' width='100%'>\n"
++" <tr>\n"
++" <td bgcolor='olive'><b>Add&nbsp;url:</b></td>\n"
++" <td bgcolor='white' width='100%'></td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='10'>\n"
++"<tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td>Title:</td>\n"
++" <td><input type='text' name='title' size='64'></td></tr>\n"
++" <tr>\n"
++" <td>URL:</td>\n"
++" <td><input type='text' name='url' size='64'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='submit.'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++msgstr ""
++"<html>\n"
++"<head>\n"
++"<title>书签</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'><pre>&nbsp;编辑书签:: 加入网页</pre>\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++"<input type='hidden' name='operation' value='add_url2'>\n"
++"<table border='1' width='100%'>\n"
++" <tr>\n"
++" <td bgcolor='olive'><pre><b>加入网页l:</b></pre></td>\n"
++" <td bgcolor='white' width='100%'></td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='10'>\n"
++"<tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td><pre>标题:</pre></td>\n"
++" <td><input type='text' name='title' size='64'></td></tr>\n"
++" <tr>\n"
++" <td>URL:</td>\n"
++" <td><input type='text' name='url' size='64'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='套用.'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++
++#: dpi/bookmarks.c:691
++msgid "Unclassified"
++msgstr "未ç»åˆ†ç±»"
++
++#: dpi/bookmarks.c:724
++#, c-format
++msgid "echo \":s0: Unclassified\" > %s"
++msgstr "echo \":s0: 未ç»åˆ†ç±»\" > %s"
++
++#: dpi/bookmarks.c:786
++#, c-format
++msgid ""
++"Syntax error in bookmarks file:\n"
++" %s"
++msgstr ""
++"语法错误於书签档:\n"
++" %s"
++
++#: dpi/bookmarks.c:898
++msgid "Added bookmark!"
++msgstr "加进书签!"
++
++#: dpi/bookmarks.c:1087
++msgid "Update&nbsp;sections:"
++msgstr "<pre>更新项目:</pre>"
++
++#: dpi/bookmarks.c:1107
++msgid "Update&nbsp;titles:"
++msgstr "<pre>更新标题:</pre>"
++
++#: dpi/bookmarks.c:1404
++msgid "Delete: you must mark what to delete!"
++msgstr "删除: 请先选择项目!"
++
++#: dpi/bookmarks.c:1410
++msgid "Move: you must mark a target section!"
++msgstr "移动: 请先选择项目!"
++
++#: dpi/bookmarks.c:1412
++msgid "Move: can not move a section (yet)."
++msgstr "移动: 移动项目失败!"
++
++#: dpi/bookmarks.c:1414
++msgid "Move: you must mark some urls, and a target section!"
++msgstr "移动: 请先选择网页åŠé¡¹ç›®!"
++
++#: dpi/bookmarks.c:1419
++msgid "Modify: you must mark what to update!"
++msgstr "修改: 请先选择è¦æ›´æ–°çš„项目!"
++
++#: dpi/bookmarks.c:1436
++msgid "Add url: only one target section is allowed!"
++msgstr "加入网页: åªå¯é€‰æ‹©ä¸€ä¸ªé¡¹ç›®!"
++
++#: dpi/bookmarks.c:1443
++msgid "No operation, just do nothing!"
++msgstr "没有指示,æ“作无效!"
++
++#: dpi/bookmarks.c:1446
++msgid "Sorry, not implemented yet."
++msgstr "æ“作尚未完æˆ."
++
++#: dpi/bookmarks.c:1614
++msgid "Haven't got a full tag!\n"
++msgstr "找ä¸åˆ°å®Œæ•´æ ‡ç­¾!\n"
++
++#: dpi/bookmarks.c:1690
++#, fuzzy
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<HTML><body> Error on the bookmarks server...</body></html>"
++msgstr "<HTML><body> 书签系统错误...</body></html>"
++
++#: config/dillocfg.c:82
++msgid "Quit"
++msgstr "退出"
++
++#: config/dillocfg.c:84 config/dillocfg.c:90
++msgid "Dillo Preferences"
++msgstr "å好设定"
++
++#: config/dillocfg.c:113
++msgid "Interface"
++msgstr "介é¢"
++
++#: config/dillocfg.c:114
++msgid " Font "
++msgstr "å­—åž‹"
++
++#: config/dillocfg.c:115
++msgid " Color "
++msgstr "颜色"
++
++#: config/dillocfg.c:116
++msgid " Network "
++msgstr "网络"
++
++#: config/dillocfg.c:118
++msgid " Tab "
++msgstr "分页"
++
++#: config/dillocfg.c:121
++msgid " Other "
++msgstr "其他"
++
++#: config/dillocfg.c:329
++msgid "Add"
++msgstr "加入"
++
++#: config/dillocfg.c:330
++msgid "Delete"
++msgstr "删除"
++
++#: config/dillocfg.c:336
++msgid "Address"
++msgstr "ä½å€"
++
++#: config/dillocfg.c:337
++msgid "Rule"
++msgstr "规则"
++
++#: config/dillocfg.c:363 config/dillocfg.c:369
++#, c-format
++msgid "Read failed <%s>\n"
++msgstr "é”™è¯¯è¯»å– <%s>\n"
++
++#: config/dillocfg.c:450 config/dillocfg.c:458
++#, c-format
++msgid "can't write <%s>\n"
++msgstr "ä¸èƒ½å†™å…¥ <%s>\n"
++
++#: config/dillocfg_token.c:60
++msgid "Window Size"
++msgstr "窗å£å¤§å°"
++
++#: config/dillocfg_token.c:68
++msgid "HTTP Proxy"
++msgstr "代ç†æœåŠ¡å™¨"
++
++#: config/dillocfg_token.c:76
++msgid "HTTP Proxy User"
++msgstr "æœåŠ¡å™¨ç”¨æˆ·"
++
++#: config/dillocfg_token.c:84
++msgid "NO Proxy"
++msgstr "没有æœåŠ¡å™¨"
++
++#: config/dillocfg_token.c:92
++msgid "User-Agent"
++msgstr "æµè§ˆå™¨-相容识别"
++
++#: config/dillocfg_token.c:100
++msgid "Send referer header"
++msgstr ""
++
++#: config/dillocfg_token.c:108
++msgid "Link color"
++msgstr "连接"
++
++#: config/dillocfg_token.c:116
++msgid "Visited color"
++msgstr "已到网页"
++
++#: config/dillocfg_token.c:124
++msgid "BackGround color"
++msgstr "背景"
++
++#: config/dillocfg_token.c:132
++msgid "Allow white bg"
++msgstr "空白背景"
++
++#: config/dillocfg_token.c:140
++msgid "Force my colors"
++msgstr "使用自选颜色"
++
++#: config/dillocfg_token.c:148
++msgid "Contrast visited color"
++msgstr "加亮已到网页颜色"
++
++#: config/dillocfg_token.c:156
++msgid "Text color"
++msgstr "文字颜色"
++
++#: config/dillocfg_token.c:164
++msgid "Use oblique"
++msgstr "兼容斜体"
++
++#: config/dillocfg_token.c:172
++msgid "Start Page"
++msgstr "起始页"
++
++#: config/dillocfg_token.c:180
++msgid "HOMEPAGE"
++msgstr "首页"
++
++#: config/dillocfg_token.c:188
++msgid "Search-engine's URL"
++msgstr "æœå¯»å¼•æ“Žç½‘å€"
++
++#: config/dillocfg_token.c:196
++msgid "Search-engine's charset"
++msgstr "æœå¯»å¼•æ“Žå­—体"
++
++#: config/dillocfg_token.c:204
++msgid "Show Tooltip"
++msgstr "显示æ示"
++
++#: config/dillocfg_token.c:212
++msgid "Panel Size"
++msgstr "æ¿é¢å¤§å°"
++
++#: config/dillocfg_token.c:220
++msgid "Small icons"
++msgstr "å°åž‹å›¾ç¤º"
++
++#: config/dillocfg_token.c:228
++msgid "Limit text width"
++msgstr "é™åˆ¶æ–‡å­—宽度"
++
++#: config/dillocfg_token.c:236
++msgid "Limit font decoration"
++msgstr "é™åˆ¶æ–‡å­—装饰"
++
++#: config/dillocfg_token.c:244
++msgid "Font factor"
++msgstr "文字系数"
++
++#: config/dillocfg_token.c:252
++msgid "Font Sizes"
++msgstr "文字大å°"
++
++#: config/dillocfg_token.c:260
++msgid "W3C+heuristics"
++msgstr "W3C+试探程åº"
++
++#: config/dillocfg_token.c:268
++msgid "Use dicache"
++msgstr "使用ç£ç¢Ÿç¼“å­˜"
++
++#: config/dillocfg_token.c:276
++msgid "Show Back"
++msgstr "显示返回"
++
++#: config/dillocfg_token.c:284
++msgid "Show Forw"
++msgstr "显示往å‰"
++
++#: config/dillocfg_token.c:292
++msgid "Show Home"
++msgstr "显示首页"
++
++#: config/dillocfg_token.c:300
++msgid "Show Reload"
++msgstr "显示é‡è½½"
++
++#: config/dillocfg_token.c:308
++msgid "Show Save"
++msgstr "显示储存"
++
++#: config/dillocfg_token.c:316
++msgid "Show Stop"
++msgstr "显示åœæ­¢"
++
++#: config/dillocfg_token.c:324
++msgid "Show Bookmarks"
++msgstr "显示书签"
++
++#: config/dillocfg_token.c:332
++msgid "Show Menubar"
++msgstr "显示èœå•æ‹¦"
++
++#: config/dillocfg_token.c:340
++msgid "Show ClearURL"
++msgstr "显示清空ä½å€"
++
++#: config/dillocfg_token.c:348
++msgid "Show URL box"
++msgstr "显示ä½å€æ "
++
++#: config/dillocfg_token.c:356
++msgid "Show Web Search"
++msgstr "显示æœå¯»æ¡†"
++
++#: config/dillocfg_token.c:364
++msgid "Show Progress box"
++msgstr "显示进度框"
++
++#: config/dillocfg_token.c:372
++msgid "Show Popup navigation"
++msgstr "显示弹出æµè§ˆ"
++
++#: config/dillocfg_token.c:380
++msgid "Fullwindow start"
++msgstr "å…¨å±å¹•å¼€å§‹"
++
++#: config/dillocfg_token.c:388
++msgid "Transient dialogs"
++msgstr "短暂对è¯æ¡†"
++
++#: config/dillocfg_token.c:396
++msgid "Popup dialogs"
++msgstr "弹出对è¯æ¡†"
++
++#: config/dillocfg_token.c:404
++msgid "vw_aafontname"
++msgstr "一般字体(平滑化)"
++
++#: config/dillocfg_token.c:412
++msgid "fw_aafontname"
++msgstr "固定字体(平滑化)"
++
++#: config/dillocfg_token.c:420
++msgid "vw_fontname"
++msgstr "一般字体"
++
++#: config/dillocfg_token.c:428
++msgid "fw_fontname"
++msgstr "固定字体"
++
++#: config/dillocfg_token.c:436
++msgid "Generate submit"
++msgstr "å‘放æ交"
++
++#: config/dillocfg_token.c:444
++msgid "Enterpress forces submit"
++msgstr "按 Enter é”®æ交"
++
++#: config/dillocfg_token.c:452
++msgid "Show debugging messsages"
++msgstr "显示除错讯æ¯"
++
++#: config/dillocfg_token.c:460
++msgid "Show Extra Warnings"
++msgstr "显示é‡å¤§è­¦å‘Šè®¯æ¯"
++
++#: config/dillocfg_token.c:468
++msgid "Focus location on new"
++msgstr "èšç„¦ä½å€æ–¼æ–°çª—å£"
++
++#: config/dillocfg_token.c:476 config/dillocfg_token.c:484
++msgid "Accept Language"
++msgstr "接å—语言"
++
++#: config/dillocfg_token.c:493
++msgid "Tab load in background"
++msgstr "在背景开å¯åˆ†é¡µ"
++
++#: config/dillocfg_token.c:501
++msgid "Tab close middle click"
++msgstr "以中键关闭分页"
++
++#: config/dillocfg_token.c:509
++msgid "Tab instead of window"
++msgstr "以分页替代窗å£"
++
++#: config/dillocfg_token.c:517
++msgid "Tab bar show fullscreen"
++msgstr "分页标题æ æ˜¾ç¤ºå…¨å±å¹•"
++
++#: config/dillocfg_token.c:525
++msgid "Tab bar show single tab"
++msgstr "分页标题æ åªæ˜¾ç¤ºå•ä¸€åˆ†é¡µ"
++
++#: config/dillocfg_token.c:533
++msgid "Tab bar scroller"
++msgstr "显示分页标题æ å·è½´"
++
++#: config/dillocfg_token.c:541
++msgid "Tab bar homogeneous"
++msgstr "分页标题æ å¹³å‡åŒ–"
++
++#: config/dillocfg_token.c:549
++msgid "Tab title compress"
++msgstr "简化分页标题"
++
++#: config/dillocfg_token.c:557
++msgid "Compress vowels"
++msgstr "压缩æ¯éŸ³å­—å…ƒ"
++
++#: config/dillocfg_token.c:565
++msgid "Compress_common_prefixes"
++msgstr "压缩标头文字"
++
++#: config/dillocfg_token.c:574
++msgid "Default"
++msgstr "缺çœå€¼"
+¥Ð¥¤¥Ê¥ê¡¼¡¦¥Õ¥¡¥¤¥ëdillo-0.8.6/po/zh_TW.gmo¤Èdillo-0.8.6-i18n-misc-20060709/po/zh_TW.gmo¤Ï°ã¤¤¤Þ¤¹
+diff -pruN dillo-0.8.6/po/zh_TW.po dillo-0.8.6-i18n-misc-20060709/po/zh_TW.po
+--- dillo-0.8.6/po/zh_TW.po 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/po/zh_TW.po 2006-07-09 00:49:43.000000000 +0900
+@@ -0,0 +1,2100 @@
++# Dillo Chinese Translation.
++# Copyright (C) YEAR Free Software Foundation, Inc.
++# This file is distributed under the same license as the PACKAGE package.
++# Babyfai Cheung <babyfai1@yahoo.com.hk>, 2005.
++msgid ""
++msgstr ""
++"Project-Id-Version: Dillo 0.8.4-i18n-misc\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2006-07-09 00:49+0900\n"
++"PO-Revision-Date: 2005-02-06 22:00+0800\n"
++"Last-Translator: Babyfai Cheung <babyfai1@yahoo.com.hk>\n"
++"Language-Team: NONE\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=UTF-8\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#: src/msg.h:27
++msgid "HTTP warning: "
++msgstr ""
++
++#: src/auth.c:87
++msgid "Browser Url has changed\n"
++msgstr "ç€è¦½å™¨ä½å€å·²è®Šæ›´\n"
++
++#: src/cache.c:253
++msgid "WARNING: Cache_entry_add, leaking an entry.\n"
++msgstr ""
++
++#: src/cache.c:316
++msgid "## Aborting CCCQuery\n"
++msgstr "## 退出 CCCQuery\n"
++
++#: src/cache.c:319
++msgid "## Aborting CCCAnswer\n"
++msgstr "## 退出 CCCAnswer\n"
++
++#: src/cache.c:322
++msgid "## Aborting raw2\n"
++msgstr "## 退出 raw2\n"
++
++#: src/cache.c:365
++msgid "## No more clients for this entry\n"
++msgstr ""
++
++#: src/cache.c:369
++msgid "Cache_prepare_reload: ERROR, entry still has clients\n"
++msgstr ""
++
++#: src/cache.c:398
++#, c-format
++msgid "Reloading >%s< because it shouldn't be cached\n"
++msgstr ""
++
++#: src/cache.c:418
++msgid "ERROR: unsupported protocol"
++msgstr "錯誤: 尚未支æ´çš„通訊å”定"
++
++#: src/cache.c:488
++#, c-format
++msgid "Redirect loop for URL: >%s<\n"
++msgstr "é‡å°Žå‘回圈予 URL: >%s<\n"
++
++#: src/cache.c:590
++#, c-format
++msgid "Bad clocks, ignore expire on >%s<\n"
++msgstr ""
++
++#: src/cache.c:594
++#, c-format
++msgid "Forcing min expire %d on >%s< instead %ld\n"
++msgstr ""
++
++#: src/cache.c:678
++msgid "'Cache-Control: max-age=' without 'Date: ' header"
++msgstr ""
++
++#: src/cache.c:722
++msgid "Server didn't send Content-Type in header.\n"
++msgstr "伺æœå™¨ä¸¦æœªåœ¨æ¨™é ­ä¸­é€å‡ºå…§å®¹.\n"
++
++#: src/cache.c:743
++#, c-format
++msgid "Forcing default expire to query url >%s<\n"
++msgstr ""
++
++#: src/cache.c:831
++#, c-format
++msgid "Cache_decode_data: got all data -- decodinging %s\n"
++msgstr "Cache_decode_data: 收到全部資料 -- 正在解碼 %s\n"
++
++#: src/cache.c:840
++msgid "Cache_decode_data: not gzip data!\n"
++msgstr "Cache_decode_data: 沒有壓縮資料!\n"
++
++#: src/cache.c:846
++msgid "Cache_decode_data: invalid gzip data!\n"
++msgstr "Cache_decode_data: 無效的壓縮資料!\n"
++
++#: src/cache.c:898
++msgid "not x-gzip\n"
++msgstr "沒有 X-壓縮資料\n"
++
++#: src/cache.c:931
++#, c-format
++msgid ""
++"Content-Length does NOT match message body,\n"
++" at: %s\n"
++msgstr ""
++"發ç¾ä¸ç¬¦é•·åº¦çš„內容,\n"
++" 在: %s\n"
++
++#: src/cache.c:950
++msgid "Cache_process_io Op = IOAbort; not implemented yet\n"
++msgstr ""
++
++#: src/cache.c:1004
++#, c-format
++msgid "ERROR: redirect loop for: %s"
++msgstr "錯誤: é‡å°Žå‘回圈予: %s"
++
++#: src/cache.c:1015
++#, c-format
++msgid ""
++">>>Redirect from: %s\n"
++" to %s\n"
++msgstr ""
++">>>é‡å°Žå‘從: %s\n"
++" 至 %s\n"
++
++#: src/cache.c:1035
++msgid ">>>Image redirection without entity-content<<<\n"
++msgstr ">>>é‡å°Žå‘å½±åƒ,在無實質主題下<<<\n"
++
++#: src/cache.c:1037
++msgid ">>>Image redirection with entity-content<<<\n"
++msgstr ">>>é‡å°Žå‘å½±åƒ,在實質主題下<<<\n"
++
++#: src/cache.c:1103
++msgid "FATAL!:*** >>>> Cache_process_queue Caught busy!!!\n"
++msgstr "é‡å¤§éŒ¯èª¤:*** >>>> Cache_process_queue 系統ç¹å¿™ !!!\n"
++
++#: src/cache.c:1111
++#, c-format
++msgid "Content-Type '%s' doesn't match the real data.\n"
++msgstr ""
++
++#: src/cache.c:1140
++#, c-format
++msgid "HTTP warning: Content-Type '%s' doesn't match the real data."
++msgstr ""
++
++#: src/cache.c:1177
++#, fuzzy, c-format
++msgid "Unhandled MIME type: <%s>\n"
++msgstr ""
++"\n"
++" ä¸æ˜Žçš„ MIME é¡žåž‹: <%s>\n"
++
++#: src/cache.c:1202
++msgid "Client Callback is NULL"
++msgstr ""
++
++#: src/cache.c:1303
++msgid "WARNING: Cache_stop_client, inexistent client\n"
++msgstr ""
++
++#: src/cache.c:1445 src/capi.c:428 src/capi.c:481 src/capi.c:536
++#: src/capi.c:570 src/IO/dpi.c:720 src/IO/dpi.c:760
++msgid " Not implemented\n"
++msgstr "沒有實行\n"
++
++#: src/capi.c:229
++msgid "Capi_verify_dpi_url_request: Permission Denied!\n"
++msgstr ""
++
++#: src/capi.c:324
++#, c-format
++msgid " reload=%d URL_E2EReload=%d\n"
++msgstr ""
++
++#: src/capi.c:389
++msgid " ERROR: [a_Capi_dpi_send_cmd] No open connection found\n"
++msgstr ""
++
++#: src/capi.c:457
++msgid "ERROR: can't start dpid daemon!"
++msgstr ""
++
++#: src/capi.c:492
++msgid " ** Capi 2F catched an invalid 'web' structure\n"
++msgstr ""
++
++#: src/capi.c:552
++msgid " Error with pipe\n"
++msgstr ""
++
++#: src/commands.c:166
++msgid "View Source"
++msgstr "檢視æºå§‹æª”"
++
++#: src/commands.c:183
++msgid "Detected HTML errors"
++msgstr "ç™¼ç¾ HTML 錯誤"
++
++#: src/commands.c:265
++msgid "Stopped"
++msgstr "å·²åœæ­¢"
++
++#: src/dillo.c:109
++msgid ""
++" -x, --xid XID Open first Dillo window in an existing\n"
++" GtkSocket which window ID is XID (decimal)."
++msgstr ""
++
++#: src/dillo.c:112
++msgid " -v, --version Display version info and exit."
++msgstr ""
++
++#: src/dillo.c:114
++msgid " -h, --help Display this help text and exit."
++msgstr ""
++
++#: src/dillo.c:116
++msgid ""
++" -f, --fullwindow Start in full window mode: hide address bar,\n"
++" navigation buttons, menu, and status bar."
++msgstr ""
++
++#: src/dillo.c:119
++msgid " -l, --local Don't follow links for this URL(s)."
++msgstr ""
++
++#: src/dillo.c:121
++msgid ""
++" -g, -geometry GEO Set initial window position where GEO is\n"
++" <width>x<height>{+-}<x>{+-}<y>"
++msgstr ""
++
++#: src/dillo.c:125
++msgid ""
++" -D, --debug-rendering Draw additionaly several lines in a web page,\n"
++" representing its structure. For debugging. "
++msgstr ""
++
++#: src/dillo.c:129
++msgid " -R, --rcfile FILE Use alternative rcfile."
++msgstr ""
++
++#: src/dillo.c:266
++#, c-format
++msgid ""
++"Error: the XID must be an unsigned decimal numerical value.\n"
++"The offending value was: %s\n"
++msgstr ""
++
++#: src/dillo.c:284
++msgid "Error in command line options.\n"
++msgstr ""
++
++#: src/dillo.c:291
++#, c-format
++msgid "Setting gtk charset to %s...\n"
++msgstr ""
++
++#: src/dillo.c:395
++#, fuzzy
++msgid "Dillo: normal exit!\n"
++msgstr "Dillo: 找尋字串"
++
++#: src/dillo.c:409
++#, c-format
++msgid "Dillo: error creating directory %s: %s\n"
++msgstr ""
++
++#: src/dillo.c:412
++#, c-format
++msgid "Dillo: error reading %s: %s\n"
++msgstr ""
++
++#: src/dillo.c:461
++#, c-format
++msgid "Option %s requires %d argument(s)\n"
++msgstr ""
++
++#: src/dillo.c:496
++msgid ""
++"\n"
++"Usage: dillo [OPTIONS] [URL|FILE]...\n"
++"Options:\n"
++msgstr ""
++
++#: src/dillo.c:503
++#, c-format
++msgid " %s, %s *Undocumented*\n"
++msgstr ""
++
++#: src/dillo.c:506
++msgid ""
++" URL URL to browse.\n"
++" FILE Local FILE to view.\n"
++msgstr ""
++
++#: src/html.c:182
++#, c-format
++msgid "HTML warning: line %d, "
++msgstr ""
++
++#: src/html.c:213
++#, c-format
++msgid "URL has %d illegal character%s [%d space%s]\n"
++msgstr ""
++
++#: src/html.c:216
++#, c-format
++msgid "URL has %d illegal character%s [%d in (00-1F or 7F)]\n"
++msgstr ""
++
++#: src/html.c:219
++#, c-format
++msgid "URL has %d illegal character%s [%d space%s and %d in (00-1F or 7F)]\n"
++msgstr ""
++
++#: src/html.c:1226
++msgid "numeric character reference out of range\n"
++msgstr ""
++
++#: src/html.c:1234
++msgid "numeric character reference without trailing ';'\n"
++msgstr ""
++
++#: src/html.c:1246
++#, c-format
++msgid "undefined character entity '%s'\n"
++msgstr ""
++
++#: src/html.c:1254
++msgid "character entity reference without trailing ';'\n"
++msgstr ""
++
++#: src/html.c:1262
++msgid "code positions 128-159 are not defined for ISO Latin-1\n"
++msgstr ""
++
++#: src/html.c:1270
++msgid "literal '&'\n"
++msgstr ""
++
++#: src/html.c:1379
++msgid "TAB character inside <PRE>\n"
++msgstr ""
++
++#: src/html.c:1615
++#, c-format
++msgid " - forcing close of open tag: <%s>\n"
++msgstr ""
++
++#: src/html.c:1624
++#, c-format
++msgid "unexpected closing tag: </%1$s>. -- expected </%2$s>\n"
++msgstr ""
++
++#: src/html.c:1696
++#, c-format
++msgid "Garbage after length: %s\n"
++msgstr ""
++
++#: src/html.c:1715
++msgid "color is not in \"#RRGGBB\" format\n"
++msgstr ""
++
++#: src/html.c:1735
++#, c-format
++msgid "'%s' value is not of the form [A-Za-z][A-Za-z0-9:_.-]*\n"
++msgstr ""
++
++#: src/html.c:1839
++msgid "HTML element was already open\n"
++msgstr ""
++
++#: src/html.c:1866
++msgid "HEAD element must go before the BODY section\n"
++msgstr ""
++
++#: src/html.c:1876
++msgid "HEAD element was already open\n"
++msgstr ""
++
++#: src/html.c:1889
++msgid "HEAD section lacks the TITLE element\n"
++msgstr ""
++
++#: src/html.c:1917
++msgid "the TITLE element must be inside the HEAD section\n"
++msgstr ""
++
++#: src/html.c:1986
++msgid "BODY element was already open\n"
++msgstr ""
++
++#: src/html.c:1991
++msgid "unclosed HEAD element\n"
++msgstr ""
++
++#: src/html.c:2187
++msgid "<td> or <th> outside <table>\n"
++msgstr ""
++
++#: src/html.c:2191
++msgid "<td> or <th> outside <tr>\n"
++msgstr ""
++
++#: src/html.c:2309
++msgid "Invalid HTML syntax: <tr> outside <table>\n"
++msgstr ""
++
++#: src/html.c:2367
++msgid "<noframes> outside of <frameset>!!!\n"
++msgstr ""
++
++#: src/html.c:2375
++msgid "<noframe> is illegal tag !!! use <noframes>.\n"
++msgstr ""
++
++#: src/html.c:2562
++msgid "<frame> outside of <frameset>\n"
++msgstr ""
++
++#: src/html.c:2565
++msgid "<frame> inside of <noframes>\n"
++msgstr ""
++
++#: src/html.c:2568
++msgid "<frame> inside of <iframe>\n"
++msgstr ""
++
++#: src/html.c:2620
++msgid "incorrectly placed <frameset>\n"
++msgstr ""
++
++#: src/html.c:2636
++msgid "<frameset> inside of <noframes>\n"
++msgstr ""
++
++#: src/html.c:2641
++msgid "<frameset> inside of <iframe>\n"
++msgstr ""
++
++#: src/html.c:3123
++msgid " Html_tag_open_img: server-side map (ISMAP)\n"
++msgstr ""
++
++#: src/html.c:3149
++msgid "nested <map>\n"
++msgstr ""
++
++#: src/html.c:3201
++msgid "usemap coords MUST be separated with ','\n"
++msgstr ""
++
++#: src/html.c:3245
++msgid "nohref"
++msgstr ""
++
++#: src/html.c:3284
++msgid "link depends on javascript()\n"
++msgstr ""
++
++#: src/html.c:3300
++#, c-format
++msgid "Registering ANCHOR: %s\n"
++msgstr ""
++
++#: src/html.c:3305
++msgid "Anchor names must be unique within the document\n"
++msgstr ""
++
++#: src/html.c:3512
++msgid "it is strongly recommended using <UL> instead of <MENU>\n"
++msgstr ""
++
++#: src/html.c:3574
++msgid "<li> outside <ul> or <ol>\n"
++msgstr ""
++
++#: src/html.c:3770
++msgid "nested forms\n"
++msgstr ""
++
++#: src/html.c:3817
++msgid "FORM lacks a Submit button\n"
++msgstr ""
++
++#: src/html.c:3819
++msgid " (added a submit button internally)\n"
++msgstr ""
++
++#: src/html.c:3923
++msgid "META elements must be inside the HEAD section\n"
++msgstr ""
++
++#: src/html.c:3975
++#, c-format
++msgid ""
++"The NON-STANDARD meta refresh tag. The HTML 4.01 SPEC (sec 7.4.4) recommends "
++"explicitly to avoid it. The author wanted you to go <%s>\n"
++msgstr ""
++
++#: src/html.c:4345
++msgid "Html_submit_form: Method unknown\n"
++msgstr ""
++
++#: src/html.c:4427
++msgid "Html_input_image: unable to create image submit.\n"
++msgstr ""
++
++#: src/html.c:4449
++msgid "input camp outside <form>\n"
++msgstr ""
++
++#: src/html.c:4529
++msgid "submit"
++msgstr "æ交"
++
++#: src/html.c:4536 config/dillocfg.c:79
++msgid "Reset"
++msgstr "é‡è¨­"
++
++#: src/html.c:4546
++msgid "Submit"
++msgstr "æ交"
++
++#: src/html.c:4563
++msgid "An input of the type \"file\" wasn't rendered!\n"
++msgstr ""
++
++#: src/html.c:4737
++msgid "<textarea> outside <form>\n"
++msgstr ""
++
++#: src/html.c:4742
++msgid "nested <textarea>\n"
++msgstr ""
++
++#: src/html.c:4814
++msgid "<select> outside <form>\n"
++msgstr ""
++
++#: src/html.c:4818
++msgid "nested <select>\n"
++msgstr ""
++
++#: src/html.c:5042
++msgid "base URI is relative (it MUST be absolute)\n"
++msgstr ""
++
++#: src/html.c:5049
++msgid "the BASE element must appear in the HEAD section\n"
++msgstr ""
++
++#: src/html.c:5400
++#, c-format
++msgid "<%1$s> is not allowed to contain <%2$s>. -- closing <%3$s>\n"
++msgstr ""
++
++#: src/html.c:5515
++#, c-format
++msgid "<pre> is not allowed to contain <%s>\n"
++msgstr ""
++
++#: src/html.c:5537
++msgid "'id' and 'name' attribute of <a> tag differ\n"
++msgstr ""
++
++#: src/html.c:5764
++msgid "Html_write_raw : bufsize is negative!\n"
++msgstr ""
++
++#: src/html.c:5842
++msgid "attribute lacks closing quote\n"
++msgstr ""
++
++#: src/html.c:5850
++#, c-format
++msgid "<%s> element lacks its closing '>'\n"
++msgstr ""
++
++#: src/html.c:6144
++msgid "could not allocate character encoding converter"
++msgstr ""
++
++#: src/misc.c:455
++msgid "Untitled"
++msgstr "未命å"
++
++#: src/interface.c:249
++msgid "Selection retrieval failed\n"
++msgstr "é¸æ“‡å›žæ”¶å¤±æ•—\n"
++
++#: src/interface.c:363
++msgid "Clear the URL box (middle-click to paste an URL)."
++msgstr "清空ä½å€æ¬„(點擊中éµ)."
++
++#: src/interface.c:385
++msgid "Search the Web"
++msgstr "æœå°‹ç¶²é "
++
++#: src/interface.c:417 src/menu.c:231 src/menu.c:280
++msgid "Back"
++msgstr "返回"
++
++#: src/interface.c:421
++msgid "Go to previous page (right-click for menu)."
++msgstr "回到上一é (å³æ“Šé¸å–®)."
++
++#: src/interface.c:450 src/menu.c:233 src/menu.c:282
++msgid "Forward"
++msgstr "å¾€å‰"
++
++#: src/interface.c:454
++msgid "Go to next page (right-click for menu)."
++msgstr "移至下一é (å³æ“Šé¸å–®)."
++
++#: src/interface.c:481
++msgid "Home"
++msgstr "首é "
++
++#: src/interface.c:485
++msgid "Go to the Home page"
++msgstr "移至首é "
++
++#: src/interface.c:499 config/dillocfg.c:80
++msgid "Reload"
++msgstr "é‡è¼‰"
++
++#: src/interface.c:500
++msgid "Reload this page"
++msgstr "é‡æ–°è¼‰å…¥"
++
++#: src/interface.c:512 config/dillocfg.c:81
++msgid "Save"
++msgstr "儲存"
++
++#: src/interface.c:513
++msgid "Save this page"
++msgstr "儲存網é "
++
++#: src/interface.c:520 src/menu.c:235 src/menu.c:284
++msgid "Stop"
++msgstr "åœæ­¢"
++
++#: src/interface.c:521
++msgid "Stop the current transfer"
++msgstr "åœæ­¢ç•¶å‰çš„傳é€"
++
++#: src/interface.c:534
++msgid "Book"
++msgstr "書籤"
++
++#: src/interface.c:538
++msgid "View bookmarks"
++msgstr "檢視書籤"
++
++#: src/interface.c:655 src/interface.c:826
++msgid "Hide Controls"
++msgstr "éš±è—控制欄"
++
++#: src/interface.c:655 src/interface.c:826
++msgid "Show Controls"
++msgstr "顯示控制欄"
++
++#: src/interface.c:929
++msgid "Show HTML bugs (right-click for menu)."
++msgstr "顯示 HTML 錯誤(å³æ“Šé¸å–®)."
++
++#: src/interface.c:1231
++#, c-format
++msgid "Warning: search_url ends with '%%'\n"
++msgstr "警告: search_url çµå°¾ç‚º '%%'\n"
++
++#: src/interface.c:1233
++#, c-format
++msgid "Warning: illegal specifier '%%%c' in search_url\n"
++msgstr "警告: 在 search_url 中,有éžæ³•çš„指定符 '%%%c'\n"
++
++#: src/interface.c:1298
++msgid "Dillo: Open File"
++msgstr "Dillo: 開啟檔案"
++
++#: src/interface.c:1374
++msgid "Clear"
++msgstr "清除"
++
++#: src/interface.c:1382 src/interface.c:1536 src/nav.c:453
++msgid "Cancel"
++msgstr "å–消"
++
++#: src/interface.c:1513
++msgid "User Name:"
++msgstr "用戶å稱:"
++
++#: src/interface.c:1520
++msgid "Password:"
++msgstr "密碼:"
++
++#: src/interface.c:1529 src/interface.c:1604 src/interface.c:2073
++#: src/nav.c:453
++msgid "OK"
++msgstr "確定"
++
++#: src/interface.c:1566
++msgid "Dillo: Enter Authentication"
++msgstr "Dillo: 進入驗証"
++
++#: src/interface.c:1586
++msgid "Dillo: Question"
++msgstr "Dillo: å•é¡Œ"
++
++#: src/interface.c:1602
++msgid "Dillo: Open URL"
++msgstr "Dillo: 開啟網é "
++
++#: src/interface.c:1626
++#, c-format
++msgid "File saved (%d Bytes)"
++msgstr "檔案已存入(%d Bytes)"
++
++#: src/interface.c:1708
++#, c-format
++msgid "Error trying to save: %s\n"
++msgstr "錯誤於儲存: %s\n"
++
++#: src/interface.c:1761
++msgid "Dillo: Save URL as File..."
++msgstr "Dillo: 儲存網é ç‚º..."
++
++#: src/interface.c:1788
++msgid "Dillo: Save link as File..."
++msgstr "Dillo: 儲存連çµç‚º..."
++
++#: src/interface.c:1843 src/interface.c:1857
++msgid "Dillo: Find text"
++msgstr "Dillo: 找尋字串"
++
++#: src/interface.c:1844 src/interface.c:1850
++#, c-format
++msgid "Cannot find \"%s\"."
++msgstr "找ä¸åˆ° \"%s\"."
++
++#: src/interface.c:1858
++#, c-format
++msgid "No further occurence of \"%s\". Restarting from the beginning."
++msgstr "找ä¸åˆ°æ›´å¤šç¬¦åˆ \"%s\". é‡é–‹ç«¯å†æ‰¾å°‹"
++
++#: src/interface.c:1866
++#, c-format
++msgid "(Find) \"%s\": restart from beginning"
++msgstr "(找尋) \"%s\": é‡é–‹ç«¯å†æ‰¾å°‹ "
++
++#: src/interface.c:1879
++#, c-format
++msgid "(Find) \"%s\""
++msgstr "(找尋) \"%s\""
++
++#: src/interface.c:1885
++msgid "Unexpected return from a_Dw_gtk_scrolled_window_search()\n"
++msgstr "æ„外回傳從 a_Dw_gtk_scrolled_window_search()\n"
++
++#: src/interface.c:1937
++msgid "press <Enter> to (repeat) search, <Esc> to close search"
++msgstr "按 <Enter> é‡æ–°æœå°‹, <Esc> 退出"
++
++#: src/interface.c:1938 src/interface.c:2031
++msgid "Search"
++msgstr "æœå°‹"
++
++#: src/interface.c:1940 src/interface.c:1941 src/interface.c:1977
++msgid "Case sensitive"
++msgstr "å€åˆ†å¤§å°å¯«"
++
++#: src/interface.c:1975
++msgid "Dillo: Find text in page"
++msgstr "Dillo: 在é é¢ä¸­æ‰¾å°‹æ–‡å­—"
++
++#: src/interface.c:1978
++msgid "Find"
++msgstr "找尋"
++
++#: src/interface.c:2029
++msgid "Dillo"
++msgstr "Dillo"
++
++#: src/interface.c:2029
++msgid "Dillo: Search the Web"
++msgstr "Dillo: æœå°‹ç¶²é "
++
++#: src/interface.c:2066
++#, c-format
++msgid "Dillo: Enter proxy password for '%s'"
++msgstr "Dillo: 輸入 '%s' 的伺æœå™¨å¯†ç¢¼"
++
++#: src/interface.c:2151
++msgid "Close"
++msgstr "關閉"
++
++#: src/interface.c:2226
++msgid "close"
++msgstr "關閉"
++
++#: src/nav.c:383
++#, c-format
++msgid "Unhandled switch type %d in a_Nav_jump_callback in src/nav.c\n"
++msgstr ""
++
++#: src/nav.c:452
++msgid "Repost form data?"
++msgstr "å†åˆ—出表單資料?"
++
++#: src/menu.c:173
++msgid "_File"
++msgstr "檔案(_F)"
++
++#: src/menu.c:174
++msgid "_New Window"
++msgstr "新窗å£(_N)"
++
++#: src/menu.c:177
++msgid "New _Tab"
++msgstr "新分é (_T)"
++
++#: src/menu.c:181
++msgid "_Open File..."
++msgstr "開啟檔案(_O)..."
++
++#: src/menu.c:183
++msgid "Open _URL..."
++msgstr "é–‹å•Ÿä½å€(_U)..."
++
++#: src/menu.c:189
++msgid "Close Window"
++msgstr "關閉窗å£"
++
++#: src/menu.c:192 src/menu.c:359
++msgid "Close Tab"
++msgstr "關閉分é "
++
++#: src/menu.c:196
++msgid "Exit Dillo"
++msgstr "關閉 Dillo"
++
++#: src/menu.c:200
++msgid "_View"
++msgstr "檢視(_V)"
++
++#: src/menu.c:202
++msgid "Previous tab"
++msgstr "上一分é "
++
++#: src/menu.c:204
++msgid "Next tab"
++msgstr "下一分é "
++
++#: src/menu.c:208
++msgid "_Options..."
++msgstr "é¸é …(_O)..."
++
++#: src/menu.c:228
++msgid "PAGE OPTIONS"
++msgstr "é é¢é¸é …"
++
++#: src/menu.c:237 src/menu.c:286
++msgid "_Reload"
++msgstr "é‡è¼‰(_R)"
++
++#: src/menu.c:241
++msgid "View page So_urce"
++msgstr "檢視æºå§‹æª”(_S)"
++
++#: src/menu.c:243
++msgid "View page Bugs"
++msgstr "檢視é é¢éŒ¯èª¤"
++
++#: src/menu.c:244
++msgid "_Bookmark this Page"
++msgstr "加進書籤(_B)"
++
++#: src/menu.c:247
++msgid "Duplicate this Page"
++msgstr "複製至新窗å£"
++
++#: src/menu.c:250
++msgid "Duplicate this tab"
++msgstr "複製至新分é "
++
++#: src/menu.c:254
++msgid "_Find Text"
++msgstr "找尋文字(_F)"
++
++#: src/menu.c:257
++msgid "Jump to..."
++msgstr "跳至..."
++
++#: src/menu.c:258
++msgid "This Frame..."
++msgstr "此框架..."
++
++#: src/menu.c:259
++msgid "This Frameset..."
++msgstr "此框架佈局..."
++
++#: src/menu.c:262
++msgid "Save Page As..."
++msgstr "儲存為..."
++
++#: src/menu.c:277
++msgid "FRAME OPTIONS"
++msgstr "框架é¸é …"
++
++#: src/menu.c:290
++msgid "View frame Source"
++msgstr "檢視框架æºå§‹æª”"
++
++#: src/menu.c:292
++msgid "Bookmark this Frame"
++msgstr "框架加進書籤"
++
++#: src/menu.c:294
++msgid "Reload this Frame"
++msgstr "é‡æ–°è¼‰å…¥"
++
++#: src/menu.c:297
++msgid "Show only this Frame"
++msgstr "åªé¡¯ç¤ºæ­¤æ¡†æž¶"
++
++#: src/menu.c:299
++msgid "Open Frame in new Window"
++msgstr "在新窗å£é–‹å•Ÿæ¡†æž¶"
++
++#: src/menu.c:302
++msgid "Open Frame in new Tab"
++msgstr "在新分é é–‹å•Ÿæ¡†æž¶"
++
++#: src/menu.c:306
++msgid "_Find Text in this Frame..."
++msgstr "於框架找尋字串(_F)..."
++
++#: src/menu.c:309 src/menu.c:340
++msgid "Save Frame As..."
++msgstr "儲存框架為..."
++
++#: src/menu.c:325
++msgid "FRAMESET OPTIONS"
++msgstr "框架佈局é¸é …"
++
++#: src/menu.c:327
++msgid "View Frameset Source"
++msgstr "檢視æºå§‹æª”"
++
++#: src/menu.c:329
++msgid "Bookmark this Frameset"
++msgstr "加進書籤"
++
++#: src/menu.c:331
++msgid "Reload this Frameset"
++msgstr "é‡æ–°è¼‰å…¥"
++
++#: src/menu.c:334
++msgid "Show only this Frameset"
++msgstr "åªé¡¯ç¤ºæ­¤æ¡†æž¶"
++
++#: src/menu.c:337
++msgid "_Find Text in this Frameset..."
++msgstr "找尋字串(_F)..."
++
++#: src/menu.c:357
++msgid "TAB OPTIONS"
++msgstr "分é é¸é …"
++
++#: src/menu.c:361
++msgid "New Tab"
++msgstr "新分é "
++
++#: src/menu.c:363
++msgid "Reload Tab"
++msgstr "é‡è¼‰åˆ†é "
++
++#: src/menu.c:460
++msgid "FOLLOWING PAGES"
++msgstr "下一é "
++
++#: src/menu.c:463
++msgid "PREVIOUS PAGES"
++msgstr "上一é "
++
++#: src/menu.c:531
++msgid "LINK OPTIONS"
++msgstr "連çµé¸é …"
++
++#: src/menu.c:533
++msgid "Open Link in New Window"
++msgstr "在新窗å£é–‹å•Ÿé€£çµ"
++
++#: src/menu.c:536
++msgid "Open Link in New Tab"
++msgstr "在新分é é–‹å•Ÿé€£çµ"
++
++#: src/menu.c:539
++msgid "Open Link"
++msgstr "開啟連çµ"
++
++#: src/menu.c:542
++msgid "Bookmark this Link"
++msgstr "連çµåŠ é€²æ›¸ç±¤"
++
++#: src/menu.c:544
++msgid "Copy Link location"
++msgstr "複製連çµä½å€"
++
++#: src/menu.c:549
++msgid "Save Link As..."
++msgstr "儲存連çµç‚º..."
++
++#: src/menu.c:553
++msgid "Image Menu..."
++msgstr "å½±åƒé¸å–®.."
++
++#: src/menu.c:571
++msgid "IMAGE OPTIONS"
++msgstr "å½±åƒé¸é …"
++
++#: src/menu.c:573
++msgid "Isolate Image"
++msgstr "檢視影åƒ"
++
++#: src/menu.c:575
++msgid "Open Image in New Window"
++msgstr "在新窗å£é–‹å•Ÿå½±åƒ"
++
++#: src/menu.c:578
++msgid "Open Image in New Tab"
++msgstr "在新分é é–‹å•Ÿå½±åƒ"
++
++#: src/menu.c:581
++msgid "Open Image"
++msgstr "é–‹å•Ÿå½±åƒ"
++
++#: src/menu.c:584
++msgid "Bookmark this Image"
++msgstr "將影åƒåŠ å…¥æ›¸ç±¤"
++
++#: src/menu.c:586
++msgid "Copy Image location"
++msgstr "複製影åƒä½å€"
++
++#: src/menu.c:591
++msgid "Save Image As..."
++msgstr "儲存影åƒç‚º..."
++
++#: src/menu.c:605
++msgid "BUG METER OPTIONS"
++msgstr "錯誤åµæ¸¬é¸é …"
++
++#: src/menu.c:607
++msgid "Validate URL with W3C"
++msgstr "以 W3C 錯誤åµæ¸¬"
++
++#: src/menu.c:609
++msgid "Validate URL with WDG"
++msgstr "以 WDG 錯誤åµæ¸¬"
++
++#: src/menu.c:612
++msgid "About Bug Meter..."
++msgstr "關於錯誤åµæ¸¬..."
++
++#: src/prefs.c:431
++msgid "Error: Can't open specified config file. default file is used.\n"
++msgstr ""
++
++#: src/i18n.c:359
++msgid "charset detect may mistake...\n"
++msgstr "文字檢測å¯èƒ½éŒ¯èª¤...\n"
++
++#: src/i18n.c:447
++msgid "<meta> outside of <head>!\n"
++msgstr ""
++
++#: src/i18n.c:493
++msgid "all ascii code\n"
++msgstr "全為 ASCII 編碼\n"
++
++#: src/i18n.c:526
++msgid "unable to fully convert between character encodings\n"
++msgstr "未能完全轉æ›æ–‡å­—間的編碼\n"
++
++#: src/i18n.c:565
++msgid "no support enc\n"
++msgstr "ä¸æ”¯æ´çš„編碼\n"
++
++#: src/tab.c:293 src/tab.c:425 dpi/bookmarks.c:1653
++msgid "(Untitled)"
++msgstr "(無題)"
++
++#: src/IO/https.c:168
++msgid "--Error detected\n"
++msgstr "--錯誤檢測\n"
++
++#: src/IO/https.c:173 src/IO/https.c:204 src/IO/http.c:294
++msgid "ERROR: unable to connect to remote host"
++msgstr "錯誤: 未能連接é ç«¯ä¸»æ©Ÿ"
++
++#: src/IO/https.c:179 src/IO/http.c:309
++msgid "--Connection established\n"
++msgstr "--連線已建立\n"
++
++#: src/IO/https.c:280 src/IO/http.c:417
++#, c-format
++msgid "Sending query to %s..."
++msgstr "æ­£é€å‡ºè«‹æ±‚至 %s..."
++
++#: src/IO/https.c:333 src/IO/http.c:486
++#, c-format
++msgid "DNS solving %s"
++msgstr "DNS 正查釋域å %s"
++
++#: src/IO/https.c:363
++msgid " HTTPS: new abort handler! #2\n"
++msgstr ""
++
++#: src/IO/https.c:365 src/IO/https.c:387 src/IO/http.c:301 src/IO/http.c:520
++#: src/IO/http.c:551
++#, c-format
++msgid "ERROR: %s"
++msgstr "錯誤: %s"
++
++#: src/IO/https.c:386
++msgid " HTTP: new abort handler! #1\n"
++msgstr ""
++
++#: src/IO/https.c:400 src/IO/http.c:564
++#, c-format
++msgid "ERROR: Dns can't solve %s"
++msgstr "錯誤: Dns 未能查釋域å %s"
++
++#: src/IO/https.c:421 src/IO/http.c:591
++msgid "Query sent, waiting for reply..."
++msgstr "請求已é€å‡º, 正等侯回覆中..."
++
++#: src/IO/http.c:190
++#, c-format
++msgid "Getting %1$s, referer %2$s\n"
++msgstr "æå– %1$s 中, 因應 %2$s\n"
++
++#: src/IO/http.c:259
++#, c-format
++msgid ""
++"Query:\n"
++"%s"
++msgstr ""
++"查詢: \n"
++"%s"
++
++#: src/IO/http.c:286
++msgid "--Connection broken\n"
++msgstr "--連線被中斷 \n"
++
++#: src/IO/http.c:342
++#, c-format
++msgid "Http_connect_socket ERROR: %s\n"
++msgstr "é€£æŽ¥ç«¯å£ éŒ¯èª¤: %s\n"
++
++#: src/IO/http.c:363 src/IO/http.c:377
++#, c-format
++msgid "Connecting to %s\n"
++msgstr "正在連接 %s\n"
++
++#: src/IO/http.c:396
++msgid "Contacting host..."
++msgstr "正在è¯ç³»ä¸»æ©Ÿ..."
++
++#: src/IO/http.c:529
++msgid "Http: OpAbort [1B]\n"
++msgstr "Http: OpAbort [1B]\n"
++
++#: src/IO/dpi.c:188
++msgid "ERROR: [Dpi_get_token] Can't find token start\n"
++msgstr ""
++
++#: src/IO/dpi.c:221
++msgid "ERROR: [Dpi_get_token] *** NULL code here ***\n"
++msgstr ""
++
++#: src/IO/dpi.c:312
++msgid "Dpi: [Dpi_process_io] IOClose\n"
++msgstr ""
++
++#: src/IO/dpi.c:338
++#, c-format
++msgid "Dpi_start_dpid (child): %s\n"
++msgstr ""
++
++#: src/IO/dpi.c:348 src/IO/dpi.c:363
++#, c-format
++msgid "Dpi_start_dpid: %s\n"
++msgstr ""
++
++#: src/IO/dpi.c:359
++#, c-format
++msgid "Dpi_start_dpid: n = %d\n"
++msgstr ""
++
++#: src/IO/dpi.c:386
++#, c-format
++msgid "Dpi_check_uds: %1$s %2$s\n"
++msgstr ""
++
++#: src/IO/dpi.c:673
++msgid "dpi.c: ERROR, can't start dpi daemon\n"
++msgstr ""
++
++#: src/IO/dpi.c:686
++msgid "a_Dpi_ccc: OpAbort[2B], Not implemented\n"
++msgstr ""
++
++#: src/IO/dpi.c:790 src/IO/dpi.c:794
++#, c-format
++msgid "a_Dpi_bye_dpid: %s\n"
++msgstr ""
++
++#: dpid/dpi_socket_dir.c:106
++#, c-format
++msgid "The dpi_socket_dir file does not exist\n"
++msgstr "dpi_socket_dir 檔案並ä¸å­˜åœ¨\n"
++
++#: dpid/dpi_socket_dir.c:110 dpid/dpi_socket_dir.c:114
++#, c-format
++msgid "debug_msg - init_sockdir: The socket directory "
++msgstr ""
++
++#: dpid/dpi_socket_dir.c:111
++#, c-format
++msgid "%s exists and is OK\n"
++msgstr "%s 存在並å¯æ­£å¸¸ä½¿ç”¨\n"
++
++#: dpid/dpi_socket_dir.c:115
++#, c-format
++msgid "%s does not exist or is not a directory\n"
++msgstr "%s ä¸å­˜åœ¨ä¸”ä¸æ˜¯ä¸€å€‹ç›®éŒ„\n"
++
++#: dpid/dpi_socket_dir.c:124
++#, c-format
++msgid " - Failed to create dpi socket directory\n"
++msgstr ""
++
++#: dpid/dpi_socket_dir.c:127
++#, c-format
++msgid " - failed to save %s\n"
++msgstr ""
++
++#: dpid/main.c:59 dpid/main.c:66 dpid/main.c:77 dpid/main.c:85 dpid/main.c:99
++#: dpid/main.c:104 dpid/main.c:109
++#, c-format
++msgid "ERROR in child proc for %s\n"
++msgstr ""
++
++#: dpid/main.c:166
++#, c-format
++msgid ": dpid failed to parse cmd in %s\n"
++msgstr ""
++
++#: dpid/main.c:265
++#, c-format
++msgid "Failed to create socket directory\n"
++msgstr ""
++
++#: dpid/main.c:275
++#, c-format
++msgid "dpid refuses to start, possibly because:\n"
++msgstr ""
++
++#: dpid/main.c:276
++#, c-format
++msgid "\t1) An instance of dpid is already running.\n"
++msgstr ""
++
++#: dpid/main.c:277
++#, c-format
++msgid "\t2) A previous dpid didn't clean up on exit.\n"
++msgstr ""
++
++#: dpid/main.c:280
++msgid "init_srs_sockets failed\n"
++msgstr ""
++
++#: dpid/main.c:294
++#, c-format
++msgid "dpid started\n"
++msgstr ""
++
++#: dpid/main.c:340
++#, c-format
++msgid "accept on srs socket failed\n"
++msgstr ""
++
++#: dpid/main.c:341
++#, c-format
++msgid "service pending connections, and continue\n"
++msgstr ""
++
++#: dpi/bookmarks.c:96
++#, fuzzy
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>Bookmarks</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr>\n"
++" <td>&nbsp;Bookmarks::</td>\n"
++" <td width='100%' align='right'>\n"
++" [<a href='dpi:/bm/modify'>modify</a>]\n"
++" </td></tr>\n"
++" </table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++msgstr ""
++"<html>\n"
++"<head>\n"
++"<title>書籤</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr>\n"
++" <td><pre>&nbsp;書籤::</pre></td>\n"
++" <td width='100%' align='right'>\n"
++" <pre>[<a href='dpi:/bm/modify'>編輯</a>]</pre>\n"
++" </td></tr>\n"
++" </table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++
++#: dpi/bookmarks.c:115
++#, fuzzy
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>Bookmarks</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr>\n"
++" <td>&nbsp;Bookmarks :: modify</td></tr>\n"
++" </table></td></tr> \n"
++"</table> \n"
++"\n"
++"<form>\n"
++"<table width='100%' border='1' cellpadding='0'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td><b>Select&nbsp;an&nbsp;operation&nbsp;</b></td>\n"
++" <td><select name='operation'>\n"
++" <option value='none' selected>--\n"
++" <option value='delete'>Delete\n"
++" <option value='move'>Move\n"
++" <option value='modify'>Modify\n"
++" <option value='add_sec'>Add Section\n"
++" <option value='add_url'>Add URL\n"
++" </select></td>\n"
++" <td><b>,&nbsp;mark&nbsp;its&nbsp;operands,&nbsp;and&nbsp;</b></td>\n"
++" <td><input type='submit' name='submit' value='submit.'></td>\n"
++" <td width='100%'></td>\n"
++" </tr>\n"
++" </table></td></tr>\n"
++"</table>\n"
++msgstr ""
++"<html>\n"
++"<head>\n"
++"<title>書籤</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr>\n"
++" <td><pre>&nbsp;書籤 :: 編輯</pre></td></tr>\n"
++" </table></td></tr> \n"
++"</table> \n"
++"\n"
++"<form>\n"
++"<table width='100%' border='1' cellpadding='0'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td><pre><b>é¸æ“‡å‹•ä½œ&nbsp;</b></pre></td>\n"
++" <td><select name='operation'>\n"
++" <option value='none' selected>--\n"
++" <option value='delete'>刪除\n"
++" <option value='move'>移動\n"
++" <option value='modify'>修改\n"
++" <option value='add_sec'>加入目錄\n"
++" <option value='add_url'>加入 URL\n"
++" </select></td>\n"
++" <td><pre><b>套用已é¸å‹•ä½œ</b></pre></td>\n"
++" <td><input type='submit' name='submit' value='套用.'></td>\n"
++" <td width='100%'></td>\n"
++" </tr>\n"
++" </table></td></tr>\n"
++"</table>\n"
++
++#: dpi/bookmarks.c:151
++msgid ""
++"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n"
++" <tr valign='top'>\n"
++" <td>\n"
++" <table bgcolor='#b4b4b4' border='2' cellpadding='4' cellspacing='1'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n"
++msgstr ""
++"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n"
++" <tr valign='top'>\n"
++" <td>\n"
++" <table bgcolor='#b4b4b4' border='2' cellpadding='4' cellspacing='1'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr><td><pre>é …ç›®:</pre></td></tr></table></td></tr>\n"
++
++#: dpi/bookmarks.c:160
++msgid ""
++"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n"
++" <tr valign='top'>\n"
++" <td>\n"
++" <table bgcolor='#b4b4b4' border='1'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n"
++msgstr ""
++"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n"
++" <tr valign='top'>\n"
++" <td>\n"
++" <table bgcolor='#b4b4b4' border='1'>\n"
++" <tr><td>\n"
++" <table width='100%' bgcolor='#b4b4b4'>\n"
++" <tr><td><pre>é …ç›®:</pre></td></tr></table></td></tr>\n"
++
++#: dpi/bookmarks.c:243
++#, fuzzy
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>Bookmarks</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: add section\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++" <input type='hidden' name='operation' value='add_section'>\n"
++"<table border='1' width='100%'>\n"
++" <tr>\n"
++" <td bgcolor='olive'><b>New&nbsp;section:</b></td>\n"
++" <td bgcolor='white' width='100%'></td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='10'>\n"
++"<tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td>Title:</td>\n"
++" <td><input type='text' name='title' size='64'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='submit.'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++"\n"
++msgstr ""
++"<html>\n"
++"<head>\n"
++"<title>書籤</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'><pre>&nbsp;編輯書籤:: 加入項目</pre>\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++" <input type='hidden' name='operation' value='add_section'>\n"
++"<table border='1' width='100%'>\n"
++" <tr>\n"
++" <td bgcolor='olive'><pre><b>新加入項目:</b></pre></td>\n"
++" <td bgcolor='white' width='100%'></td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='10'>\n"
++"<tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td><pre>標題:</pre></td>\n"
++" <td><input type='text' name='title' size='64'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='套用.'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++"\n"
++
++#: dpi/bookmarks.c:283
++#, fuzzy
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>Bookmarks</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: update\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++"<input type='hidden' name='operation' value='modify2'>\n"
++msgstr ""
++"<html>\n"
++"<head>\n"
++"<title>書籤</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'><pre>&nbsp;編輯書籤:: 更新</pre>\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++"<input type='hidden' name='operation' value='modify2'>\n"
++
++#: dpi/bookmarks.c:310
++#, c-format
++msgid ""
++"<tr><td>\n"
++" <table width='100%%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td>Title:</td>\n"
++" <td><input type='text' name='title%d' size='64'\n"
++" value='%s'></td></tr>\n"
++" <tr>\n"
++" <td>URL:</td>\n"
++" <td>%s</td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++msgstr ""
++"<tr><td>\n"
++" <table width='100%%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td><pre>標題:</pre></td>\n"
++" <td><input type='text' name='title%d' size='64'\n"
++" value='%s'></td></tr>\n"
++" <tr>\n"
++" <td>URL:</td>\n"
++" <td>%s</td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++
++#: dpi/bookmarks.c:323
++#, c-format
++msgid ""
++"<tr><td>\n"
++" <table width='100%%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td>Title:</td>\n"
++" <td><input type='text' name='s%d' size='64'\n"
++" value='%s'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++msgstr ""
++"<tr><td>\n"
++" <table width='100%%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td><pre>標題:</pre></td>\n"
++" <td><input type='text' name='s%d' size='64'\n"
++" value='%s'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++
++#: dpi/bookmarks.c:336
++#, c-format
++msgid ""
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='submit.'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++msgstr ""
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='套用.'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++
++#: dpi/bookmarks.c:346
++#, fuzzy
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<html>\n"
++"<head>\n"
++"<title>Bookmarks</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: add url\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++"<input type='hidden' name='operation' value='add_url2'>\n"
++"<table border='1' width='100%'>\n"
++" <tr>\n"
++" <td bgcolor='olive'><b>Add&nbsp;url:</b></td>\n"
++" <td bgcolor='white' width='100%'></td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='10'>\n"
++"<tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td>Title:</td>\n"
++" <td><input type='text' name='title' size='64'></td></tr>\n"
++" <tr>\n"
++" <td>URL:</td>\n"
++" <td><input type='text' name='url' size='64'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='submit.'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++msgstr ""
++"<html>\n"
++"<head>\n"
++"<title>書籤</title>\n"
++"</head>\n"
++"<body bgcolor='#778899' link='black' vlink='brown'>\n"
++"<table border='1' cellpadding='0' width='100%'>\n"
++" <tr><td colspan='2'>\n"
++" <table bgcolor='#b4b4b4' width='100%'>\n"
++" <tr><td bgcolor='#b4b4b4'><pre>&nbsp;編輯書籤:: 加入網é </pre>\n"
++" </td></tr></table></td></tr>\n"
++"</table>\n"
++"<br>\n"
++"<form>\n"
++"<input type='hidden' name='operation' value='add_url2'>\n"
++"<table border='1' width='100%'>\n"
++" <tr>\n"
++" <td bgcolor='olive'><pre><b>加入網é l:</b></pre></td>\n"
++" <td bgcolor='white' width='100%'></td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='10'>\n"
++"<tr><td>\n"
++" <table width='100%' bgcolor='teal'>\n"
++" <tr>\n"
++" <td><pre>標題:</pre></td>\n"
++" <td><input type='text' name='title' size='64'></td></tr>\n"
++" <tr>\n"
++" <td>URL:</td>\n"
++" <td><input type='text' name='url' size='64'></td></tr>\n"
++" </table>\n"
++" </td></tr>\n"
++"</table>\n"
++"<table width='100%' cellpadding='4' border='0'>\n"
++"<tr><td bgcolor='#a0a0a0'>\n"
++" <input type='submit' name='submit' value='套用.'></td></tr>\n"
++"</table>\n"
++"</form>\n"
++"</body>\n"
++"</html>\n"
++
++#: dpi/bookmarks.c:691
++msgid "Unclassified"
++msgstr "未經分類"
++
++#: dpi/bookmarks.c:724
++#, c-format
++msgid "echo \":s0: Unclassified\" > %s"
++msgstr "echo \":s0: 未經分類\" > %s"
++
++#: dpi/bookmarks.c:786
++#, c-format
++msgid ""
++"Syntax error in bookmarks file:\n"
++" %s"
++msgstr ""
++"語法錯誤於書籤檔:\n"
++" %s"
++
++#: dpi/bookmarks.c:898
++msgid "Added bookmark!"
++msgstr "加進書籤!"
++
++#: dpi/bookmarks.c:1087
++msgid "Update&nbsp;sections:"
++msgstr "<pre>æ›´æ–°é …ç›®:</pre>"
++
++#: dpi/bookmarks.c:1107
++msgid "Update&nbsp;titles:"
++msgstr "<pre>更新標題:</pre>"
++
++#: dpi/bookmarks.c:1404
++msgid "Delete: you must mark what to delete!"
++msgstr "刪除: è«‹å…ˆé¸æ“‡é …ç›®!"
++
++#: dpi/bookmarks.c:1410
++msgid "Move: you must mark a target section!"
++msgstr "移動: è«‹å…ˆé¸æ“‡é …ç›®!"
++
++#: dpi/bookmarks.c:1412
++msgid "Move: can not move a section (yet)."
++msgstr "移動: 移動項目失敗!"
++
++#: dpi/bookmarks.c:1414
++msgid "Move: you must mark some urls, and a target section!"
++msgstr "移動: è«‹å…ˆé¸æ“‡ç¶²é åŠé …ç›®!"
++
++#: dpi/bookmarks.c:1419
++msgid "Modify: you must mark what to update!"
++msgstr "修改: è«‹å…ˆé¸æ“‡è¦æ›´æ–°çš„é …ç›®!"
++
++#: dpi/bookmarks.c:1436
++msgid "Add url: only one target section is allowed!"
++msgstr "加入網é : åªå¯é¸æ“‡ä¸€å€‹é …ç›®!"
++
++#: dpi/bookmarks.c:1443
++msgid "No operation, just do nothing!"
++msgstr "沒有指示,æ“作無效!"
++
++#: dpi/bookmarks.c:1446
++msgid "Sorry, not implemented yet."
++msgstr "æ“作尚未完æˆ."
++
++#: dpi/bookmarks.c:1614
++msgid "Haven't got a full tag!\n"
++msgstr "找ä¸åˆ°å®Œæ•´æ¨™ç±¤!\n"
++
++#: dpi/bookmarks.c:1690
++#, fuzzy
++msgid ""
++"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n"
++"<HTML><body> Error on the bookmarks server...</body></html>"
++msgstr "<HTML><body> 書籤系統錯誤...</body></html>"
++
++#: config/dillocfg.c:82
++msgid "Quit"
++msgstr "退出"
++
++#: config/dillocfg.c:84 config/dillocfg.c:90
++msgid "Dillo Preferences"
++msgstr "å好設定"
++
++#: config/dillocfg.c:113
++msgid "Interface"
++msgstr "介é¢"
++
++#: config/dillocfg.c:114
++msgid " Font "
++msgstr " å­—åž‹ "
++
++#: config/dillocfg.c:115
++msgid " Color "
++msgstr " é¡è‰² "
++
++#: config/dillocfg.c:116
++msgid " Network "
++msgstr " 網絡 "
++
++#: config/dillocfg.c:118
++msgid " Tab "
++msgstr " åˆ†é  "
++
++#: config/dillocfg.c:121
++msgid " Other "
++msgstr " 其他 "
++
++#: config/dillocfg.c:329
++msgid "Add"
++msgstr "加入"
++
++#: config/dillocfg.c:330
++msgid "Delete"
++msgstr "刪除"
++
++#: config/dillocfg.c:336
++msgid "Address"
++msgstr "ä½å€"
++
++#: config/dillocfg.c:337
++msgid "Rule"
++msgstr "è¦å‰‡"
++
++#: config/dillocfg.c:363 config/dillocfg.c:369
++#, c-format
++msgid "Read failed <%s>\n"
++msgstr "éŒ¯èª¤è®€å– <%s>\n"
++
++#: config/dillocfg.c:450 config/dillocfg.c:458
++#, c-format
++msgid "can't write <%s>\n"
++msgstr "ä¸èƒ½å¯«å…¥ <%s>\n"
++
++#: config/dillocfg_token.c:60
++msgid "Window Size"
++msgstr "窗å£å¤§å°"
++
++#: config/dillocfg_token.c:68
++msgid "HTTP Proxy"
++msgstr "代ç†ä¼ºæœå™¨"
++
++#: config/dillocfg_token.c:76
++msgid "HTTP Proxy User"
++msgstr "伺æœå™¨ç”¨æˆ¶"
++
++#: config/dillocfg_token.c:84
++msgid "NO Proxy"
++msgstr "沒有伺æœå™¨"
++
++#: config/dillocfg_token.c:92
++msgid "User-Agent"
++msgstr "ç€è¦½å™¨-相容識別"
++
++#: config/dillocfg_token.c:100
++msgid "Send referer header"
++msgstr ""
++
++#: config/dillocfg_token.c:108
++msgid "Link color"
++msgstr "連çµ"
++
++#: config/dillocfg_token.c:116
++msgid "Visited color"
++msgstr "已到網é "
++
++#: config/dillocfg_token.c:124
++msgid "BackGround color"
++msgstr "背景"
++
++#: config/dillocfg_token.c:132
++msgid "Allow white bg"
++msgstr "空白背景"
++
++#: config/dillocfg_token.c:140
++msgid "Force my colors"
++msgstr "使用自é¸é¡è‰²"
++
++#: config/dillocfg_token.c:148
++msgid "Contrast visited color"
++msgstr "加亮已到網é é¡è‰²"
++
++#: config/dillocfg_token.c:156
++msgid "Text color"
++msgstr "文字é¡è‰²"
++
++#: config/dillocfg_token.c:164
++msgid "Use oblique"
++msgstr "兼容斜體"
++
++#: config/dillocfg_token.c:172
++msgid "Start Page"
++msgstr "起始é "
++
++#: config/dillocfg_token.c:180
++msgid "HOMEPAGE"
++msgstr "首é "
++
++#: config/dillocfg_token.c:188
++msgid "Search-engine's URL"
++msgstr "æœå°‹å¼•æ“Žç¶²å€"
++
++#: config/dillocfg_token.c:196
++msgid "Search-engine's charset"
++msgstr "æœå°‹å¼•æ“Žå­—é«”"
++
++#: config/dillocfg_token.c:204
++msgid "Show Tooltip"
++msgstr "顯示æ示"
++
++#: config/dillocfg_token.c:212
++msgid "Panel Size"
++msgstr "æ¿é¢å¤§å°"
++
++#: config/dillocfg_token.c:220
++msgid "Small icons"
++msgstr "å°åž‹åœ–示"
++
++#: config/dillocfg_token.c:228
++msgid "Limit text width"
++msgstr "é™åˆ¶æ–‡å­—寬度"
++
++#: config/dillocfg_token.c:236
++msgid "Limit font decoration"
++msgstr "é™åˆ¶æ–‡å­—è£é£¾"
++
++#: config/dillocfg_token.c:244
++msgid "Font factor"
++msgstr "文字系數"
++
++#: config/dillocfg_token.c:252
++msgid "Font Sizes"
++msgstr "文字大å°"
++
++#: config/dillocfg_token.c:260
++msgid "W3C+heuristics"
++msgstr "W3C+試探程åº"
++
++#: config/dillocfg_token.c:268
++msgid "Use dicache"
++msgstr "使用ç£ç¢Ÿç·©å­˜"
++
++#: config/dillocfg_token.c:276
++msgid "Show Back"
++msgstr "顯示返回"
++
++#: config/dillocfg_token.c:284
++msgid "Show Forw"
++msgstr "顯示往å‰"
++
++#: config/dillocfg_token.c:292
++msgid "Show Home"
++msgstr "顯示首é "
++
++#: config/dillocfg_token.c:300
++msgid "Show Reload"
++msgstr "顯示é‡è¼‰"
++
++#: config/dillocfg_token.c:308
++msgid "Show Save"
++msgstr "顯示儲存"
++
++#: config/dillocfg_token.c:316
++msgid "Show Stop"
++msgstr "顯示åœæ­¢"
++
++#: config/dillocfg_token.c:324
++msgid "Show Bookmarks"
++msgstr "顯示書籤"
++
++#: config/dillocfg_token.c:332
++msgid "Show Menubar"
++msgstr "顯示é¸å–®æ””"
++
++#: config/dillocfg_token.c:340
++msgid "Show ClearURL"
++msgstr "顯示清空ä½å€"
++
++#: config/dillocfg_token.c:348
++msgid "Show URL box"
++msgstr "顯示ä½å€æ¬„"
++
++#: config/dillocfg_token.c:356
++msgid "Show Web Search"
++msgstr "顯示æœå°‹æ¡†"
++
++#: config/dillocfg_token.c:364
++msgid "Show Progress box"
++msgstr "顯示進度框"
++
++#: config/dillocfg_token.c:372
++msgid "Show Popup navigation"
++msgstr "顯示彈出ç€è¦½"
++
++#: config/dillocfg_token.c:380
++msgid "Fullwindow start"
++msgstr "全螢幕開始"
++
++#: config/dillocfg_token.c:388
++msgid "Transient dialogs"
++msgstr "短暫å°è©±æ¡†"
++
++#: config/dillocfg_token.c:396
++msgid "Popup dialogs"
++msgstr "彈出å°è©±æ¡†"
++
++#: config/dillocfg_token.c:404
++msgid "vw_aafontname"
++msgstr "一般字體(平滑化)"
++
++#: config/dillocfg_token.c:412
++msgid "fw_aafontname"
++msgstr "固定字體(平滑化)"
++
++#: config/dillocfg_token.c:420
++msgid "vw_fontname"
++msgstr "一般字體"
++
++#: config/dillocfg_token.c:428
++msgid "fw_fontname"
++msgstr "固定字體"
++
++#: config/dillocfg_token.c:436
++msgid "Generate submit"
++msgstr "發放æ交"
++
++#: config/dillocfg_token.c:444
++msgid "Enterpress forces submit"
++msgstr "按 Enter éµæ交"
++
++#: config/dillocfg_token.c:452
++msgid "Show debugging messsages"
++msgstr "顯示除錯訊æ¯"
++
++#: config/dillocfg_token.c:460
++msgid "Show Extra Warnings"
++msgstr "顯示é‡å¤§è­¦å‘Šè¨Šæ¯"
++
++#: config/dillocfg_token.c:468
++msgid "Focus location on new"
++msgstr "èšç„¦ä½å€æ–¼æ–°çª—å£"
++
++#: config/dillocfg_token.c:476 config/dillocfg_token.c:484
++msgid "Accept Language"
++msgstr "接å—語言"
++
++#: config/dillocfg_token.c:493
++msgid "Tab load in background"
++msgstr "在背景開啟分é "
++
++#: config/dillocfg_token.c:501
++msgid "Tab close middle click"
++msgstr "以中éµé—œé–‰åˆ†é "
++
++#: config/dillocfg_token.c:509
++msgid "Tab instead of window"
++msgstr "以分é æ›¿ä»£çª—å£"
++
++#: config/dillocfg_token.c:517
++msgid "Tab bar show fullscreen"
++msgstr "分é æ¨™é¡Œæ¬„顯示全螢幕"
++
++#: config/dillocfg_token.c:525
++msgid "Tab bar show single tab"
++msgstr "分é æ¨™é¡Œæ¬„åªé¡¯ç¤ºå–®ä¸€åˆ†é "
++
++#: config/dillocfg_token.c:533
++msgid "Tab bar scroller"
++msgstr "顯示分é æ¨™é¡Œæ¬„å·è»¸"
++
++#: config/dillocfg_token.c:541
++msgid "Tab bar homogeneous"
++msgstr "分é æ¨™é¡Œæ¬„å¹³å‡åŒ–"
++
++#: config/dillocfg_token.c:549
++msgid "Tab title compress"
++msgstr "簡化分é æ¨™é¡Œ"
++
++#: config/dillocfg_token.c:557
++msgid "Compress vowels"
++msgstr "壓縮æ¯éŸ³å­—å…ƒ"
++
++#: config/dillocfg_token.c:565
++msgid "Compress_common_prefixes"
++msgstr "壓縮標頭文字"
++
++#: config/dillocfg_token.c:574
++msgid "Default"
++msgstr "é è¨­"
+diff -pruN dillo-0.8.6/src/IO/DBIO.c dillo-0.8.6-i18n-misc-20060709/src/IO/DBIO.c
+--- dillo-0.8.6/src/IO/DBIO.c 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/IO/DBIO.c 2006-05-16 01:21:09.000000000 +0900
+@@ -0,0 +1,290 @@
++/*
++ * File: DBIO.c
++ *
++ * Copyright (C) 2000, 2001 Jorge Arellano Cid <jcid@inf.utfsm.cl>
++ * Copyright (C) 2002 Jonathan P Springer <jonathan.springer@verizon.net>
++ *
++ * 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 of the License, 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
++ *
++ * In addition, as a special exception, Jorge Arellano Cid and Jonathan
++ * Springer give permission to link the code of this program with the OpenSSL
++ * library (or modified versions of OpenSSL that use the same license as
++ * OpenSSL), and distribute linked combinations including the two. You must
++ * obey the GNU General Public License in all respects for all of the code
++ * used other than OpenSSL. If you modify this file, you may extend this
++ * exception to your version of the file, but you are not obligated to do so.
++ * If you do not wish to do so, delete this exception from your version.
++ *
++ */
++
++/*
++ * Dillo's signal driven BIO engine
++ */
++
++#include <config.h>
++
++#ifdef DILLO_SSL
++
++#include <stdio.h>
++#include <errno.h>
++#include <fcntl.h>
++#include <unistd.h>
++#include <sys/stat.h>
++#include <sys/uio.h>
++#include <sys/socket.h>
++#include <glib.h>
++#include <gdk/gdk.h>
++#include "../chain.h"
++#include "DBIO.h"
++
++#include <openssl/bio.h>
++#include <openssl/err.h>
++
++//#define DEBUG_LEVEL 3
++#include "../debug.h"
++
++
++/*
++ * Symbolic defines for shutdown() function
++ * (Not defined in the same header file, for all distros --Jcid)
++ */
++#define IO_StopRd 0
++#define IO_StopWr 1
++#define IO_StopRdWr 2
++
++extern void IO_submit(IOData_t *r_io);
++extern void IO_del(IOData_t *io);
++extern void IO_ins(IOData_t *io);
++extern IOData_t *IO_get(gint Key);
++
++/*
++ * IO-module data
++ */
++
++
++/*
++ * Return a newly created, and initialized, 'io' struct
++ */
++IOData_t *a_DBIO_new(BIO *bioin)
++{
++ IOData_t *io = g_new0(IOData_t, 1);
++ io->GioCh = NULL;
++ io->FD = -1;
++ io->Flags = 0;
++ io->bio = bioin;
++ return io;
++}
++
++/*
++ * Free an 'io' struct
++ */
++void DBIO_free(IOData_t *io)
++{
++ if (io->Flags & IOFlag_FreeIOBuf) g_free(io->Buf);
++ g_free(io);
++}
++
++/*
++ * Close an open BIO, and remove io controls.
++ * (This function can be used for Close and Abort operations)
++ */
++void DBIO_close_fd(IOData_t *io, gint CloseCode)
++{
++ if (io->bio) BIO_free_all(io->bio);
++
++ IO_del(io);
++}
++
++/*
++ * Abort an open FD.
++ * This function is called to abort a BIO connection due to an IO error
++ * or just because the connection is not required anymore.
++ */
++gboolean DBIO_abort(IOData_t *io)
++{
++ /* Close and finish this FD's activity */
++ DBIO_close_fd(io, IO_StopRdWr);
++
++ return FALSE;
++}
++
++/*
++ * Read data from a BIO into a specific buffer
++ */
++gboolean DBIO_Callback_Read(gpointer data)
++{
++ ssize_t St;
++ gboolean ret;
++ IOData_t *io = (IOData_t *) data;
++
++ DEBUG_MSG(3, " IO_read2\n");
++
++ /* Sometimes glib delivers events on already aborted FDs --Jcid */
++ if ( IO_get(io->Key) == NULL ) return FALSE;
++
++ St = BIO_read(io->bio, io->Buf, io->BufSize);
++
++ if ( St < 0 ) {
++ if (BIO_should_retry(io->bio)) {
++ ret = TRUE;
++ } else {
++ io->Status = ERR_get_error();
++ ret = FALSE;
++ }
++ } else if ( St == 0 ) {
++ if (BIO_should_retry(io->bio)) {
++ ret = TRUE;
++ } else {
++ a_DBIO_ccc(OpEnd, 2,0, io->Info, io, NULL);
++ ret = FALSE;
++ }
++ } else {
++ io->Status = St; /* Status is used for length */
++ a_DBIO_ccc(OpSend, 2,0, io->Info, io, NULL);
++ ret = TRUE;
++ }
++
++ return ret;
++}
++
++/*
++ * Write data, from a specific buffer, into a file descriptor
++ * (** Write operations MUST NOT free the buffer because the buffer
++ * start is modified.)
++ * todo: Implement IOWrites, remove the constraint stated above.
++ */
++gboolean DBIO_Callback_Write(gpointer data)
++{
++ ssize_t St;
++ gboolean ret = FALSE;
++ IOData_t *io = (IOData_t *) data;
++
++ DEBUG_MSG(3, " IO_write\n");
++
++ /* Sometimes glib delivers events on already aborted FDs --Jcid */
++ if ( IO_get(io->Key) == NULL ) return FALSE;
++
++ St = BIO_write(io->bio, io->Buf, io->BufSize);
++ io->Status = St;
++
++ DEBUG_MSG(3, " IO_write: %s [errno %d] [St %d]\n",
++ g_strerror(errno), errno, St);
++
++ if ( St <= 0 ) {
++ if (BIO_should_retry(io->bio)) {
++ ret = TRUE;
++ } else {
++ io->Status = ERR_get_error();
++ ret = FALSE;
++ }
++ } else if ( St < (ssize_t)io->BufSize ){
++ // Not all data written
++ io->BufSize -= St;
++ io->Buf = ((gchar *)io->Buf) + St;
++ ret = TRUE;
++ } else {
++ // All data in buffer written
++ if ( io->Op == IOWrite ) {
++ /* Single write */
++ a_DBIO_ccc(OpEnd, 1,0, io->Info, io, NULL);
++ ret = FALSE;
++ } else if ( io->Op == IOWrites ) {
++ /* todo: Writing in small chunks (not implemented) */
++ }
++ }
++
++ return ret;
++}
++
++/*
++ * Receive an IO request (IORead | IOWrite | IOWrites),
++ */
++void DBIO_submit(IOData_t *r_io)
++{
++ if ( r_io->Op == IORead ) {
++ g_idle_add(DBIO_Callback_Read, (gpointer) r_io);
++ } else if (r_io->Op == IOWrite || r_io->Op == IOWrites ) {
++ g_idle_add(DBIO_Callback_Write, (gpointer) r_io);
++ }
++
++ /* Add a reference pointer to this request */
++ IO_ins(r_io);
++}
++
++/*
++ * CCC function for the IO module
++ * ( Data = IOData_t* ; ExtraData = NULL )
++ */
++void a_DBIO_ccc(int Op, int Branch,int Dir, ChainLink *Info, void *Data, void *ExtraData)
++{
++ IOData_t *io = Data;
++
++ if ( Branch == 1 ) {
++ /* Send query */
++ switch (Op) {
++ case OpStart:
++ io->Info = Info;
++ Info->LocalKey = io;
++ DBIO_submit(io);
++ break;
++ case OpEnd:
++ a_Chain_fcb(OpEnd, Info, io, NULL);
++ DBIO_free(io);
++ break;
++ case OpAbort:
++ a_Chain_fcb(OpAbort, Info, NULL, NULL);
++ DBIO_free(io);
++ break;
++ }
++
++ } else if ( Branch == 2 ) {
++ /* Receive answer */
++ switch (Op) {
++ case OpStart:
++ io->Info = Info;
++ Info->LocalKey = io;
++ a_Chain_link_new(Info, a_DBIO_ccc, FWD, a_Cache_ccc,2,2);
++ a_Chain_fcb(OpStart, Info, io, io->ExtData);
++ DBIO_submit(io);
++ break;
++ case OpSend:
++ a_Chain_fcb(OpSend, Info, io, NULL);
++ break;
++ case OpEnd:
++ a_Chain_fcb(OpEnd, Info, io, NULL);
++ DBIO_free(io);
++ break;
++ case OpAbort:
++ a_Chain_fcb(OpAbort, Info, io, NULL);
++ DBIO_free(io);
++ break;
++ }
++
++ } else if ( Branch == -1 ) {
++ /* Backwards call */
++ switch (Op) {
++ case OpAbort:
++ DEBUG_MSG(3, "IO : OpAbort [-1]\n");
++ io = Info->LocalKey;
++ DBIO_abort(io);
++ DBIO_free(io);
++ g_free(Info);
++ break;
++ }
++ }
++}
++
++#endif
++
+diff -pruN dillo-0.8.6/src/IO/DBIO.h dillo-0.8.6-i18n-misc-20060709/src/IO/DBIO.h
+--- dillo-0.8.6/src/IO/DBIO.h 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/IO/DBIO.h 2006-05-16 01:21:09.000000000 +0900
+@@ -0,0 +1,22 @@
++#ifndef __DBIO_h
++#define __DBIO_h
++
++#include <config.h>
++
++#ifdef DILLO_SSL
++
++#include <openssl/bio.h>
++
++#include "IO.h"
++
++/*
++ * Exported functions
++ */
++IOData_t* a_DBIO_new(BIO *bio);
++void a_DBIO_ccc(int Op, int Br,int Dir, ChainLink *Info, void *Data, void *ExtraData);
++
++#endif /* DILLO_SSL */
++
++#endif /* __DBIO_h */
++
++
+diff -pruN dillo-0.8.6/src/IO/IO.c dillo-0.8.6-i18n-misc-20060709/src/IO/IO.c
+--- dillo-0.8.6/src/IO/IO.c 2006-01-03 03:21:56.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/IO/IO.c 2006-05-16 01:21:09.000000000 +0900
+@@ -15,6 +15,7 @@
+
+ #include <pthread.h>
+
++#include <config.h>
+ #include <stdio.h>
+ #include <string.h>
+ #include <errno.h>
+@@ -86,6 +87,9 @@ IOData_t *a_IO_new(gint op, gint fd)
+ io->GioCh = g_io_channel_unix_new(fd);
+ io->Flags = 0;
+ io->Key = 0;
++#ifdef DILLO_SSL
++ io->bio = NULL;
++#endif
+ return io;
+ }
+
+@@ -376,7 +380,7 @@ void a_IO_write_chunk(gint FD, void *Key
+ /*
+ * Register an IO in ValidIOs
+ */
+-static void IO_ins(IOData_t *io)
++void IO_ins(IOData_t *io)
+ {
+ io->Key = a_Klist_insert(&ValidIOs, (gpointer)io);
+ }
+@@ -384,7 +388,7 @@ static void IO_ins(IOData_t *io)
+ /*
+ * Remove an IO from ValidIOs
+ */
+-static void IO_del(IOData_t *io)
++void IO_del(IOData_t *io)
+ {
+ a_Klist_remove(ValidIOs, io->Key);
+ }
+@@ -392,7 +396,7 @@ static void IO_del(IOData_t *io)
+ /*
+ * Return a io by its Key (NULL if not found)
+ */
+-static IOData_t *IO_get(gint Key)
++IOData_t *IO_get(gint Key)
+ {
+ return a_Klist_get_data(ValidIOs, Key);
+ }
+@@ -403,7 +407,7 @@ static IOData_t *IO_get(gint Key)
+ static void IO_free(IOData_t *io)
+ {
+ g_return_if_fail(IO_get(io->Key) == NULL);
+-
++
+ if (io->Flags & IOFlag_FreeIOBuf)
+ a_IO_set_buf(io, NULL, 0);
+ g_free(io);
+@@ -597,7 +601,7 @@ static gboolean IO_callback(GIOChannel *
+ * Receive an IO request (IORead | IOWrite | IOWrites),
+ * Set the GIOChannel and let it flow!
+ */
+-static void IO_submit(IOData_t *r_io)
++void IO_submit(IOData_t *r_io)
+ {
+ /* Insert this IO in ValidIOs */
+ IO_ins(r_io);
+diff -pruN dillo-0.8.6/src/IO/IO.h dillo-0.8.6-i18n-misc-20060709/src/IO/IO.h
+--- dillo-0.8.6/src/IO/IO.h 2005-10-28 01:20:22.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/IO/IO.h 2006-05-16 01:21:09.000000000 +0900
+@@ -1,10 +1,16 @@
+ #ifndef __IO_H__
+ #define __IO_H__
+
++#include<config.h>
++
+ #include<unistd.h>
+ #include<sys/uio.h>
+ #include <glib.h>
+
++#ifdef DILLO_SSL
++#include <openssl/bio.h>
++#endif
++
+ #include "../chain.h"
+
+ /*
+@@ -31,6 +37,7 @@
+ #define IOBufLen_File 4096
+ #define IOBufLen_Proto 4096
+ #define IOBufLen_About 4096
++#define IOBufLen_Matrix 4096
+
+
+ typedef struct {
+@@ -46,6 +53,9 @@ typedef struct {
+
+ void *ExtData; /* External data reference (not used by IO.c) */
+ void *Info; /* CCC Info structure for this IO */
++#ifdef DILLO_SSL
++ BIO *bio;
++#endif
+ GIOChannel *GioCh; /* IO channel */
+ guint watch_id; /* glib's event source id */
+ } IOData_t;
+diff -pruN dillo-0.8.6/src/IO/Makefile.am dillo-0.8.6-i18n-misc-20060709/src/IO/Makefile.am
+--- dillo-0.8.6/src/IO/Makefile.am 2004-08-04 22:58:25.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/IO/Makefile.am 2006-05-16 01:21:09.000000000 +0900
+@@ -4,6 +4,9 @@ AM_LIBS = @GTK_LIBS@
+ noinst_LIBRARIES = libDio.a
+
+ libDio_a_SOURCES = \
++ https.c \
++ DBIO.h \
++ DBIO.c \
+ mime.c \
+ mime.h \
+ about.c \
+diff -pruN dillo-0.8.6/src/IO/Makefile.in dillo-0.8.6-i18n-misc-20060709/src/IO/Makefile.in
+--- dillo-0.8.6/src/IO/Makefile.in 2006-04-27 01:07:22.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/IO/Makefile.in 2006-05-16 01:21:09.000000000 +0900
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.5 from Makefile.am.
++# Makefile.in generated by automake 1.7.9 from Makefile.am.
+ # @configure_input@
+
+-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
++# Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -14,8 +14,6 @@
+
+ @SET_MAKE@
+
+-SOURCES = $(libDio_a_SOURCES)
+-
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -23,6 +21,7 @@ pkgdatadir = $(datadir)/@PACKAGE@
+ pkglibdir = $(libdir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
+ top_builddir = ../..
++
+ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+ INSTALL = @INSTALL@
+ install_sh_DATA = $(install_sh) -c -m 644
+@@ -39,35 +38,6 @@ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+ target_triplet = @target@
+-subdir = src/IO
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+- $(ACLOCAL_M4)
+-mkinstalldirs = $(install_sh) -d
+-CONFIG_HEADER = $(top_builddir)/config.h
+-CONFIG_CLEAN_FILES =
+-LIBRARIES = $(noinst_LIBRARIES)
+-AR = ar
+-ARFLAGS = cru
+-libDio_a_AR = $(AR) $(ARFLAGS)
+-libDio_a_LIBADD =
+-am_libDio_a_OBJECTS = mime.$(OBJEXT) about.$(OBJEXT) Url.$(OBJEXT) \
+- proto.$(OBJEXT) http.$(OBJEXT) dpi.$(OBJEXT) IO.$(OBJEXT)
+-libDio_a_OBJECTS = $(am_libDio_a_OBJECTS)
+-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+-depcomp = $(SHELL) $(top_srcdir)/depcomp
+-am__depfiles_maybe = depfiles
+-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-CCLD = $(CC)
+-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-SOURCES = $(libDio_a_SOURCES)
+-DIST_SOURCES = $(libDio_a_SOURCES)
+-ETAGS = etags
+-CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+@@ -97,6 +67,7 @@ EXEEXT = @EXEEXT@
+ GLIB_CFLAGS = @GLIB_CFLAGS@
+ GLIB_CONFIG = @GLIB_CONFIG@
+ GLIB_LIBS = @GLIB_LIBS@
++GMSGFMT = @GMSGFMT@
+ GTK_CFLAGS = @GTK_CFLAGS@
+ GTK_CONFIG = @GTK_CONFIG@
+ GTK_LIBS = @GTK_LIBS@
+@@ -104,9 +75,12 @@ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
++INTLLIBS = @INTLLIBS@
+ LDFLAGS = @LDFLAGS@
+ LIBFLTK_CXXFLAGS = @LIBFLTK_CXXFLAGS@
+ LIBFLTK_LIBS = @LIBFLTK_LIBS@
++LIBICONV = @LIBICONV@
++LIBINTL = @LIBINTL@
+ LIBJPEG_CPPFLAGS = @LIBJPEG_CPPFLAGS@
+ LIBJPEG_LDFLAGS = @LIBJPEG_LDFLAGS@
+ LIBJPEG_LIBS = @LIBJPEG_LIBS@
+@@ -118,8 +92,13 @@ LIBPTHREAD_LIBS = @LIBPTHREAD_LIBS@
+ LIBS = @LIBS@
+ LIBSSL_LIBS = @LIBSSL_LIBS@
+ LIBZ_LIBS = @LIBZ_LIBS@
++LTLIBICONV = @LTLIBICONV@
++LTLIBINTL = @LTLIBINTL@
+ LTLIBOBJS = @LTLIBOBJS@
+ MAKEINFO = @MAKEINFO@
++MKINSTALLDIRS = @MKINSTALLDIRS@
++MSGFMT = @MSGFMT@
++MSGMERGE = @MSGMERGE@
+ OBJEXT = @OBJEXT@
+ PACKAGE = @PACKAGE@
+ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+@@ -128,11 +107,16 @@ PACKAGE_STRING = @PACKAGE_STRING@
+ PACKAGE_TARNAME = @PACKAGE_TARNAME@
+ PACKAGE_VERSION = @PACKAGE_VERSION@
+ PATH_SEPARATOR = @PATH_SEPARATOR@
++PKG_CONFIG = @PKG_CONFIG@
++POSUB = @POSUB@
+ RANLIB = @RANLIB@
+ SET_MAKE = @SET_MAKE@
+ SHELL = @SHELL@
+ STRIP = @STRIP@
++USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
++XFT_CONFIG = @XFT_CONFIG@
++XGETTEXT = @XGETTEXT@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_RANLIB = @ac_ct_RANLIB@
+@@ -144,8 +128,6 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TR
+ am__include = @am__include@
+ am__leading_dot = @am__leading_dot@
+ am__quote = @am__quote@
+-am__tar = @am__tar@
+-am__untar = @am__untar@
+ bindir = @bindir@
+ build = @build@
+ build_alias = @build_alias@
+@@ -164,9 +146,9 @@ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
++localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+-mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+@@ -180,8 +162,13 @@ target_os = @target_os@
+ target_vendor = @target_vendor@
+ AM_CFLAGS = @GTK_CFLAGS@
+ AM_LIBS = @GTK_LIBS@
++
+ noinst_LIBRARIES = libDio.a
++
+ libDio_a_SOURCES = \
++ https.c \
++ DBIO.h \
++ DBIO.c \
+ mime.c \
+ mime.h \
+ about.c \
+@@ -193,39 +180,47 @@ libDio_a_SOURCES = \
+ IO.c \
+ IO.h
+
++subdir = src/IO
++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
++CONFIG_HEADER = $(top_builddir)/config.h
++CONFIG_CLEAN_FILES =
++LIBRARIES = $(noinst_LIBRARIES)
++
++libDio_a_AR = $(AR) cru
++libDio_a_LIBADD =
++am_libDio_a_OBJECTS = https.$(OBJEXT) DBIO.$(OBJEXT) mime.$(OBJEXT) \
++ about.$(OBJEXT) Url.$(OBJEXT) proto.$(OBJEXT) http.$(OBJEXT) \
++ dpi.$(OBJEXT) IO.$(OBJEXT)
++libDio_a_OBJECTS = $(am_libDio_a_OBJECTS)
++
++DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
++depcomp = $(SHELL) $(top_srcdir)/depcomp
++am__depfiles_maybe = depfiles
++@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/DBIO.Po ./$(DEPDIR)/IO.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/Url.Po ./$(DEPDIR)/about.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dpi.Po ./$(DEPDIR)/http.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/https.Po ./$(DEPDIR)/mime.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/proto.Po
++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
++CCLD = $(CC)
++LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
++DIST_SOURCES = $(libDio_a_SOURCES)
++DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
++SOURCES = $(libDio_a_SOURCES)
++
+ all: all-am
+
+ .SUFFIXES:
+ .SUFFIXES: .c .o .obj
+-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+- @for dep in $?; do \
+- case '$(am__configure_deps)' in \
+- *$$dep*) \
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+- && exit 0; \
+- exit 1;; \
+- esac; \
+- done; \
+- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/IO/Makefile'; \
++$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/IO/Makefile
+-.PRECIOUS: Makefile
+-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+- @case '$?' in \
+- *config.status*) \
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+- *) \
+- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+- esac;
+-
+-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-
+-$(top_srcdir)/configure: $(am__configure_deps)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
++
++AR = ar
+
+ clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+@@ -235,34 +230,52 @@ libDio.a: $(libDio_a_OBJECTS) $(libDio_a
+ $(RANLIB) libDio.a
+
+ mostlyclean-compile:
+- -rm -f *.$(OBJEXT)
++ -rm -f *.$(OBJEXT) core *.core
+
+ distclean-compile:
+ -rm -f *.tab.c
+
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DBIO.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IO.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Url.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/about.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dpi.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http.Po@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/https.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mime.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proto.Po@am__quote@
+
+ .c.o:
+-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
++@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
++@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
++@am__fastdepCC_TRUE@ fi
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+ .c.obj:
+-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
++@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
++@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
++@am__fastdepCC_TRUE@ fi
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+ uninstall-info-am:
+
++ETAGS = etags
++ETAGSFLAGS =
++
++CTAGS = ctags
++CTAGSFLAGS =
++
++tags: TAGS
++
+ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+@@ -271,7 +284,6 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+-tags: TAGS
+
+ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+@@ -283,11 +295,10 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEP
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+- test -n "$$unique" || unique=$$empty_fix; \
+- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+- $$tags $$unique; \
+- fi
++ test -z "$(ETAGS_ARGS)$$tags$$unique" \
++ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
++ $$tags $$unique
++
+ ctags: CTAGS
+ CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+@@ -310,6 +321,10 @@ GTAGS:
+
+ distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
++
++top_distdir = ../..
++distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+ distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+@@ -323,7 +338,7 @@ distdir: $(DISTFILES)
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+- $(mkdir_p) "$(distdir)$$dir"; \
++ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+@@ -341,6 +356,7 @@ distdir: $(DISTFILES)
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LIBRARIES)
++
+ installdirs:
+ install: install-am
+ install-exec: install-exec-am
+@@ -361,7 +377,7 @@ mostlyclean-generic:
+ clean-generic:
+
+ distclean-generic:
+- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
++ -rm -f $(CONFIG_CLEAN_FILES)
+
+ maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+@@ -380,8 +396,6 @@ dvi: dvi-am
+
+ dvi-am:
+
+-html: html-am
+-
+ info: info-am
+
+ info-am:
+@@ -417,14 +431,13 @@ uninstall-am: uninstall-info-am
+
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-noinstLIBRARIES ctags distclean distclean-compile \
+- distclean-generic distclean-tags distdir dvi dvi-am html \
+- html-am info info-am install install-am install-data \
+- install-data-am install-exec install-exec-am install-info \
+- install-info-am install-man install-strip installcheck \
+- installcheck-am installdirs maintainer-clean \
+- maintainer-clean-generic mostlyclean mostlyclean-compile \
+- mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+- uninstall-am uninstall-info-am
++ distclean-generic distclean-tags distdir dvi dvi-am info \
++ info-am install install-am install-data install-data-am \
++ install-exec install-exec-am install-info install-info-am \
++ install-man install-strip installcheck installcheck-am \
++ installdirs maintainer-clean maintainer-clean-generic \
++ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
++ ps ps-am tags uninstall uninstall-am uninstall-info-am
+
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
+diff -pruN dillo-0.8.6/src/IO/Url.c dillo-0.8.6-i18n-misc-20060709/src/IO/Url.c
+--- dillo-0.8.6/src/IO/Url.c 2006-01-04 04:44:32.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/IO/Url.c 2006-05-16 01:21:09.000000000 +0900
+@@ -16,6 +16,7 @@
+ * This module selects the apropriate CCC-function for a given URL.
+ */
+
++#include <config.h>
+
+ #include <glib.h>
+ #include <stdlib.h>
+@@ -87,7 +88,11 @@ ChainFunction_t a_Url_get_ccc_funct(cons
+ {"about", a_About_ccc},
+ {"dpi" , a_Dpi_ccc},
+ {"ftp" , a_Dpi_ccc},
++#ifdef DILLO_SSL
++ {"https", a_Https_ccc},
++#else
+ {"https" , a_Dpi_ccc},
++#endif
+ {"data" , a_Dpi_ccc} };
+ #define LSIZE (sizeof(cccList) / sizeof(cccList[0]))
+
+diff -pruN dillo-0.8.6/src/IO/Url.h dillo-0.8.6-i18n-misc-20060709/src/IO/Url.h
+--- dillo-0.8.6/src/IO/Url.h 2005-10-28 01:20:22.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/IO/Url.h 2006-05-16 01:21:09.000000000 +0900
+@@ -38,6 +38,11 @@ void a_Dpi_ccc (int Op, int Branch, int
+
+ char *a_Dpi_send_blocking_cmd(const gchar *server_name, const gchar *cmd);
+ void a_Dpi_bye_dpid(void);
++#ifdef DILLO_SSL
++void a_Https_ccc(int Op, int Branch, int Dir, ChainLink *Info,
++ void *Data1, void *Data2);
++void a_Https_freeall(void);
++#endif
+
+
+ #ifdef __cplusplus
+diff -pruN dillo-0.8.6/src/IO/about.c dillo-0.8.6-i18n-misc-20060709/src/IO/about.c
+--- dillo-0.8.6/src/IO/about.c 2006-04-27 01:17:48.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/IO/about.c 2006-05-16 01:21:09.000000000 +0900
+@@ -11,6 +11,7 @@
+ */
+
+ #include <config.h>
++#include "../intl.h"
+ #include "IO.h"
+ #include "Url.h"
+ #include "../nav.h"
+@@ -27,6 +28,9 @@ struct _SplashInfo {
+ /*
+ * HTML text for startup screen
+ */
++static char *Blank=
++"Content-type: text/html\n"
++"\n";
+ static char *Splash=
+ "Content-type: text/html\n"
+ "\n"
+@@ -222,6 +226,24 @@ static char *Splash=
+ "\n"
+ "\n"
+ "<!-- Main Part of the page -->\n"
++"<table border='0' cellpadding='0' cellspacing='0' align='center' bgcolor='#000000' width='100%'><tr><td>\n"
++"<table border='0' cellpadding='5' cellspacing='1' width='100%'>\n"
++"<tr>\n"
++" <td bgcolor='#CCCCCC'>\n"
++" <h4>This is Unofficial Version</h4>\n"
++"<tr>\n"
++" <td bgcolor='#FFFFFF'>\n"
++" <table border='0' cellspacing='0' cellpadding='5'><tr><td>\n"
++" This is Unofficial Version.<br>\n"
++" <font color='RED'>Please do not ask the dillo team for help.</font><br>\n"
++" Report problems to Kiyo&lt;webmaster@teki.jpn.ph&gt;.<br>\n"
++" Latest version can be downloaded from \n"
++" <a href=\"http://teki.jpn.ph/pc/software/index-e.shtml\">http://teki.jpn.ph/pc/software/index-e.shtml</a>\n"
++" </table>\n"
++"</table>\n"
++"</table>\n"
++"\n"
++"<br>\n"
+ "\n"
+ "<table border='0' cellpadding='0' cellspacing='0' align='center' bgcolor='#000000' width='100%'><tr><td>\n"
+ "<table border='0' cellpadding='5' cellspacing='1' width='100%'>\n"
+@@ -393,7 +415,7 @@ static char *Splash=
+ /*
+ * Send the splash screen through the IO using a pipe.
+ */
+-static gint About_send_splash(ChainLink *Info, DilloUrl *Url)
++static gint About_send_page(ChainLink *Info, DilloUrl *Url, char *Data)
+ {
+ gint SplashPipe[2];
+ IOData_t *io1;
+@@ -409,7 +431,7 @@ static gint About_send_splash(ChainLink
+
+ /* send splash */
+ io1 = a_IO_new(IOWrite, SpInfo->FD_Write);
+- a_IO_set_buf(io1, Splash, strlen(Splash));
++ a_IO_set_buf(io1, Data, strlen(Data));
+ io1->Flags |= (IOFlag_ForceClose + IOFlag_SingleWrite);
+ a_Chain_link_new(Info, a_About_ccc, BCK, a_IO_ccc, 1, 1);
+ a_Chain_bcb(OpStart, Info, io1, NULL);
+@@ -439,7 +461,11 @@ static gint About_get(ChainLink *Info, v
+ tail = URL_PATH(Url);
+
+ if (!strcmp(tail, "splash")) {
+- return About_send_splash(Info, Url);
++ return About_send_page(Info, Url, _(Splash));
++ }
++
++ if (!strcmp(tail, "blank")) {
++ return About_send_page(Info, Url, Blank);
+ }
+
+ if (!strcmp(tail, "jwz"))
+@@ -458,7 +484,7 @@ static gint About_get(ChainLink *Info, v
+ loc = "http://www.google.com/";
+
+ LocUrl = a_Url_new(loc, NULL, 0, 0, 0);
+- a_Nav_push(web->bw, LocUrl);
++ a_Nav_push(web->dd, LocUrl);
+ a_Url_free(LocUrl);
+ return -1;
+ }
+diff -pruN dillo-0.8.6/src/IO/dpi.c dillo-0.8.6-i18n-misc-20060709/src/IO/dpi.c
+--- dillo-0.8.6/src/IO/dpi.c 2006-03-16 00:50:04.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/IO/dpi.c 2006-05-16 01:21:09.000000000 +0900
+@@ -19,6 +19,7 @@
+ */
+
+
++#include <config.h>
+ #include <unistd.h>
+ #include <stdlib.h>
+ #include <sys/types.h>
+@@ -35,6 +36,7 @@
+ #include <arpa/inet.h>
+ #include <netdb.h>
+
++#include "../intl.h"
+ #include "../msg.h"
+ #include "IO.h"
+ #include "Url.h"
+@@ -171,9 +173,9 @@ static gint Dpi_get_token(conn_data_t *c
+ /* search for start of tag */
+ /*
+ gchar *pbuf=NULL;
+-MSG("conn->BufIdx = %d; conn->BufSize = %d\n", conn->BufIdx,conn->BufSize);
++MSG(_("conn->BufIdx = %d; conn->BufSize = %d\n"), conn->BufIdx,conn->BufSize);
+ pbuf = g_strndup(buf, conn->BufSize - conn->BufIdx);
+-MSG("buf: [%s]\n", pbuf);
++MSG(_("buf: [%s]\n"), pbuf);
+ g_free(pbuf);
+ */
+ while (conn->BufIdx < conn->BufSize && buf[conn->BufIdx] != '<')
+@@ -183,7 +185,7 @@ g_free(pbuf);
+ conn->InTag = 1;
+ conn->TokIdx = conn->BufIdx;
+ } else {
+- MSG("ERROR: [Dpi_get_token] Can't find token start\n");
++ MSG(_("ERROR: [Dpi_get_token] Can't find token start\n"));
+ conn->FreeBuf = 1;
+ return Dpi_get_token(conn);
+ }
+@@ -216,7 +218,7 @@ g_free(pbuf);
+ resp = 0;
+ } else {
+ /* srch end of data */
+- MSG("ERROR: [Dpi_get_token] *** NULL code here ***\n");
++ MSG(_("ERROR: [Dpi_get_token] *** NULL code here ***\n"));
+ while (conn->BufIdx < conn->BufSize)
+ ++conn->BufIdx;
+ resp = -1;
+@@ -243,7 +245,7 @@ static void Dpi_parse_token(conn_data_t
+ }
+
+ tag = g_strndup(conn->Buf + conn->TokIdx, (guint)conn->TokSize);
+- MSG("Dpi_parse_token: {%s}\n", tag);
++ _MSG("Dpi_parse_token: {%s}\n", tag);
+
+ cmd = a_Dpip_get_attr(conn->Buf + conn->TokIdx, conn->TokSize, "cmd");
+ if (strcmp(cmd, "send_status_message") == 0) {
+@@ -307,7 +309,7 @@ static void Dpi_process_io(int Op, void
+ }
+
+ } else if (Op == IOClose) {
+- MSG("Dpi: [Dpi_process_io] IOClose\n");
++ DEBUG_MSG(3, _("Dpi: [Dpi_process_io] IOClose\n"));
+ }
+ }
+
+@@ -333,7 +335,7 @@ static gint Dpi_start_dpid(void)
+ if (execl(path1, "dpid", NULL) == -1) {
+ g_free(path1);
+ if (execlp("dpid", "dpid", NULL) == -1) {
+- DEBUG_MSG(4, "Dpi_start_dpid (child): %s\n", g_strerror(errno));
++ DEBUG_MSG(4, _("Dpi_start_dpid (child): %s\n"), g_strerror(errno));
+ do
+ n = write(st_pipe[1], "ERROR", 5);
+ while (n == -1 && errno == EINTR);
+@@ -343,7 +345,7 @@ static gint Dpi_start_dpid(void)
+ }
+ } else if (pid < 0) {
+ /* The fork failed. Report failure. */
+- DEBUG_MSG(4, "Dpi_start_dpid: %s\n", g_strerror(errno));
++ DEBUG_MSG(4, _("Dpi_start_dpid: %s\n"), g_strerror(errno));
+ /* close the unused pipe */
+ Dpi_close_fd(st_pipe[0]);
+ Dpi_close_fd(st_pipe[1]);
+@@ -354,11 +356,11 @@ static gint Dpi_start_dpid(void)
+ do
+ n = read(st_pipe[0], buf, 16);
+ while (n == -1 && errno == EINTR);
+- DEBUG_MSG(2, "Dpi_start_dpid: n = %d\n", n);
++ DEBUG_MSG(2, _("Dpi_start_dpid: n = %d\n"), n);
+ if (n != 5)
+ ret = 0;
+ else
+- DEBUG_MSG(4, "Dpi_start_dpid: %s\n", g_strerror(errno));
++ DEBUG_MSG(4, _("Dpi_start_dpid: %s\n"), g_strerror(errno));
+ }
+
+ return ret;
+@@ -381,7 +383,7 @@ static gint Dpi_check_uds(gchar *uds_nam
+
+ if ((SockFD = socket(AF_LOCAL, SOCK_STREAM, 0)) == -1 ||
+ connect(SockFD, (void*)&pun, D_SUN_LEN(&pun)) == -1) {
+- DEBUG_MSG(4, "Dpi_check_uds: %s %s\n", g_strerror(errno), uds_name);
++ DEBUG_MSG(4, _("Dpi_check_uds: %1$s %2$s\n"), g_strerror(errno), uds_name);
+ } else {
+ Dpi_close_fd(SockFD);
+ ret = 0;
+@@ -668,7 +670,7 @@ void a_Dpi_ccc(int Op, int Branch, int D
+ else if (st == 1)
+ a_Chain_fcb(OpSend, Info, NULL, (void*)"DpidEAGAIN");
+ else {
+- DEBUG_MSG(4, "dpi.c: ERROR, can't start dpi daemon\n");
++ DEBUG_MSG(4, _("dpi.c: ERROR, can't start dpi daemon\n"));
+ a_Dpi_ccc(OpAbort, 2, FWD, Info, "ERR_dpid", NULL);
+ }
+ break;
+@@ -681,7 +683,7 @@ void a_Dpi_ccc(int Op, int Branch, int D
+ g_free(Info);
+ break;
+ case OpAbort:
+- MSG("a_Dpi_ccc: OpAbort[2B], Not implemented\n");
++ MSG(_("a_Dpi_ccc: OpAbort[2B], Not implemented\n"));
+ g_free(Info->LocalKey);
+ g_free(Info);
+ break;
+@@ -715,7 +717,7 @@ void a_Dpi_ccc(int Op, int Branch, int D
+ a_Chain_fcb(OpEnd, Info, NULL, NULL);
+ break;
+ case OpAbort:
+- MSG(" Not implemented\n");
++ MSG(_(" Not implemented\n"));
+ break;
+ }
+ } else { /* BCK */
+@@ -755,7 +757,7 @@ void a_Dpi_ccc(int Op, int Branch, int D
+ }
+ break;
+ case OpAbort:
+- MSG(" Not implemented\n");
++ MSG(_(" Not implemented\n"));
+ break;
+ }
+ }
+@@ -785,11 +787,11 @@ void a_Dpi_bye_dpid()
+ sa.sun_family = AF_LOCAL;
+
+ if ((new_socket = socket(AF_LOCAL, SOCK_STREAM, 0)) == -1) {
+- DEBUG_MSG(4, "a_Dpi_bye_dpid: %s\n", g_strerror(errno));
++ DEBUG_MSG(4, _("a_Dpi_bye_dpid: %s\n"), g_strerror(errno));
+ }
+ strncpy(sa.sun_path, srs_name, sizeof (sa.sun_path));
+ if (connect(new_socket, (struct sockaddr *) &sa, addr_len) == -1) {
+- DEBUG_MSG(4, "a_Dpi_bye_dpid: %s\n", g_strerror(errno));
++ DEBUG_MSG(4, _("a_Dpi_bye_dpid: %s\n"), g_strerror(errno));
+ fprintf(stderr, "%s\n", sa.sun_path);
+ }
+ DpiBye_cmd = a_Dpip_build_cmd("cmd=%s", "DpiBye");
+diff -pruN dillo-0.8.6/src/IO/http.c dillo-0.8.6-i18n-misc-20060709/src/IO/http.c
+--- dillo-0.8.6/src/IO/http.c 2005-10-28 01:20:22.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/IO/http.c 2006-06-19 03:03:03.000000000 +0900
+@@ -27,8 +27,10 @@
+ #include <netinet/in.h> /* for ntohl and stuff */
+ #include <arpa/inet.h> /* for inet_ntop */
+
++#include "../intl.h"
+ #include "IO.h"
+ #include "Url.h"
++#include "../i18n.h"
+ #include "../klist.h"
+ #include "../dns.h"
+ #include "../cache.h"
+@@ -36,13 +38,15 @@
+ #include "../interface.h"
+ #include "../cookies.h"
+ #include "../prefs.h"
++#include "../auth.h"
++
+ #include "../misc.h"
+
+ /* Used to send a message to the bw's status bar */
+ #define BW_MSG(web, root, fmt...) \
+ G_STMT_START { \
+ if (a_Web_valid((web)) && (!(root) || (web)->flags & WEB_RootUrl)) \
+- a_Interface_msg((web)->bw, fmt); \
++ a_Interface_msg((web)->dd->bw, fmt); \
+ } G_STMT_END
+
+ #define DEBUG_LEVEL 5
+@@ -72,6 +76,7 @@ static Klist_t *ValidSocks = NULL; /* Ac
+ * SocketData_t structures. */
+
+ static DilloUrl *HTTP_Proxy = NULL;
++
+ static gchar *HTTP_Proxy_Auth_base64 = NULL;
+
+ /*
+@@ -153,8 +158,10 @@ gchar *a_Http_make_query_str(const Dillo
+ gchar *str, *ptr, *cookies;
+ GString *s_port = g_string_new(""),
+ *query = g_string_new(""),
++ *referer = g_string_new(""),
+ *full_path = g_string_new(""),
+- *proxy_auth = g_string_new("");
++ *proxy_auth = g_string_new(""),
++ *auth = g_string_new("");
+
+ /* Sending the default port in the query may cause a 302-answer. --Jcid */
+ if (URL_PORT(url) && URL_PORT(url) != DILLO_URL_HTTP_PORT)
+@@ -177,6 +184,16 @@ gchar *a_Http_make_query_str(const Dillo
+ (URL_PATH_(url) || URL_QUERY_(url)) ? "" : "/");
+ }
+
++ if (prefs.send_referer && url->referer) {
++ g_string_sprintfa(referer, "Referer: %s\r\n", url->referer);
++ }
++ DEBUG_MSG(4,_("Getting %1$s, referer %2$s\n"), URL_STR(url), referer->str);
++
++ if (a_Auth_byurl((DilloUrl *) url)) {
++ g_string_sprintfa(auth, "Authorization: %s\r\n",
++ a_Auth_byurl((DilloUrl *) url)->str);
++ }
++
+ cookies = a_Cookies_get(url);
+ if ( URL_FLAGS(url) & URL_Post ){
+ g_string_sprintfa(
+@@ -184,16 +201,22 @@ gchar *a_Http_make_query_str(const Dillo
+ "POST %s HTTP/1.0\r\n"
+ "Host: %s%s\r\n"
+ "%s"
+- "User-Agent: Dillo/%s\r\n"
++ "User-Agent: %s\r\n"
+ "Cookie2: $Version=\"1\"\r\n"
+ "%s"
++ "%s"
+ "Content-type: application/x-www-form-urlencoded\r\n"
+ "Content-length: %ld\r\n"
++ "%s"
+ "\r\n"
+ "%s",
+- full_path->str, URL_HOST(url), s_port->str,
+- proxy_auth->str, VERSION, cookies,
++ full_path->str,
++ URL_HOST(url), s_port->str, proxy_auth->str,
++ (prefs.user_agent)? prefs.user_agent : "Dillo/" VERSION,
++ cookies,
++ auth->str,
+ (glong)strlen(URL_DATA(url)),
++ referer->str,
+ URL_DATA(url));
+
+ } else {
+@@ -203,26 +226,37 @@ gchar *a_Http_make_query_str(const Dillo
+ "%s"
+ "Host: %s%s\r\n"
+ "%s"
+- "User-Agent: Dillo/%s\r\n"
++ "User-Agent: %s\r\n"
++ "Accept-Language: %s\r\n"
++ "Accept-Encoding:gzip\r\n"
++ "Accept-Charset:utf-8,%s\r\n"
++ "%s"
+ "Cookie2: $Version=\"1\"\r\n"
+ "%s"
++ "%s"
+ "\r\n",
+ full_path->str,
+ (URL_FLAGS(url) & URL_E2EReload) ?
+ "Cache-Control: no-cache\r\nPragma: no-cache\r\n" : "",
+ URL_HOST(url), s_port->str,
+ proxy_auth->str,
+- VERSION,
+- cookies);
++ (prefs.user_agent)? prefs.user_agent : "Dillo/" VERSION,
++ prefs.accept_language,
++ DW_CHARSET,
++ referer->str,
++ cookies,
++ auth->str
++ );
+ }
+ g_free(cookies);
+
+ str = query->str;
+ g_string_free(query, FALSE);
+ g_string_free(s_port, TRUE);
++ g_string_free(referer, TRUE);
+ g_string_free(full_path, TRUE);
+ g_string_free(proxy_auth, TRUE);
+- DEBUG_MSG(4, "Query:\n%s", str);
++ DEBUG_MSG(4, _("Query:\n%s"), str);
+ return str;
+ }
+
+@@ -237,6 +271,7 @@ static gboolean
+ ChainLink *Info;
+ SocketData_t *S;
+ gint SKey = GPOINTER_TO_INT(data);
++ gchar *msg_enc;
+
+ DEBUG_MSG(3, "Http_use_socket: %s [errno %d] [GIOcond %d]\n",
+ g_strerror(errno), errno, cond);
+@@ -248,25 +283,30 @@ static gboolean
+
+ Info = S->Info;
+ if ( cond & G_IO_HUP ) {
+- DEBUG_MSG(3, "--Connection broken\n");
++ DEBUG_MSG(3, _("--Connection broken\n"));
+ /* get rid of S->GioCh */
+ g_io_channel_close(S->GioCh);
+ g_io_channel_unref(S->GioCh);
+ S->GioCh = NULL;
+ S->addr_list_iter = S->addr_list_iter->next;
+ if (!S->addr_list_iter || Http_connect_socket(Info) < 0) {
+- BW_MSG(S->web, 0, "ERROR: unable to connect to remote host");
++ msg_enc = a_I18n_locale_to_DILLO_CHARSET(
++ _("ERROR: unable to connect to remote host"));
++ BW_MSG(S->web, 0, msg_enc);
++ g_free(msg_enc);
+ Http_socket_free(SKey);
+ a_Chain_fcb(OpAbort, Info, NULL, NULL);
+ }
+ } else if ( S->Err ) {
+- BW_MSG(S->web, 0, "ERROR: %s", g_strerror(S->Err));
++ msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("ERROR: %s"));
++ BW_MSG(S->web, 0, msg_enc, g_strerror(S->Err));
++ g_free(msg_enc);
+ DEBUG_MSG(3, "Http_use_socket ERROR: %s\n", g_strerror(S->Err));
+ a_Chain_fcb(OpAbort, Info, NULL, NULL);
+ g_io_channel_close(S->GioCh);
+ Http_socket_free(SKey);
+ } else if ( cond & G_IO_OUT ) {
+- DEBUG_MSG(3, "--Connection established\n");
++ DEBUG_MSG(3, _("--Connection established\n"));
+ g_io_channel_unref(S->GioCh);
+ S->GioCh = NULL;
+ Http_send_query(Info, S);
+@@ -291,6 +331,7 @@ static int Http_connect_socket(ChainLink
+ SocketData_t *S;
+ DilloHost *dh;
+ socklen_t socket_len = 0;
++ gchar *msg_enc;
+
+ S = a_Klist_get_data(ValidSocks, GPOINTER_TO_INT(Info->LocalKey));
+
+@@ -298,7 +339,7 @@ static int Http_connect_socket(ChainLink
+
+ if ( (S->SockFD = socket(dh->af, SOCK_STREAM, IPPROTO_TCP)) < 0 ) {
+ S->Err = errno;
+- DEBUG_MSG(5, "Http_connect_socket ERROR: %s\n", g_strerror(errno));
++ DEBUG_MSG(5, _("Http_connect_socket ERROR: %s\n"), g_strerror(errno));
+ return -1;
+ }
+ /* set NONBLOCKING and close on exec. */
+@@ -319,7 +360,7 @@ static int Http_connect_socket(ChainLink
+ sin->sin_port = S->port ? htons(S->port) : htons(DILLO_URL_HTTP_PORT);
+ memcpy(&sin->sin_addr, dh->data, (size_t)dh->alen);
+ if (a_Web_valid(S->web) && (S->web->flags & WEB_RootUrl))
+- DEBUG_MSG(5, "Connecting to %s\n", inet_ntoa(sin->sin_addr));
++ DEBUG_MSG(4, _("Connecting to %s\n"), inet_ntoa(sin->sin_addr));
+ break;
+ }
+ #ifdef ENABLE_IPV6
+@@ -333,7 +374,7 @@ static int Http_connect_socket(ChainLink
+ memcpy(&sin6->sin6_addr, dh->data, dh->alen);
+ inet_ntop(dh->af, dh->data, buf, sizeof(buf));
+ if (a_Web_valid(S->web) && (S->web->flags & WEB_RootUrl))
+- DEBUG_MSG(5, "Connecting to %s\n", buf);
++ DEBUG_MSG(5, _("Connecting to %s\n"), buf);
+ break;
+ }
+ #endif
+@@ -351,8 +392,10 @@ static int Http_connect_socket(ChainLink
+ S->Err = errno;
+ return -1;
+ }
+-
+- BW_MSG(S->web, 1, "Contacting host...");
++
++ msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("Contacting host..."));
++ BW_MSG(S->web, 1, msg_enc);
++ g_free(msg_enc);
+
+ return 0; /* Success */
+ }
+@@ -364,14 +407,16 @@ static int Http_connect_socket(ChainLink
+ static void Http_send_query(ChainLink *Info, SocketData_t *S)
+ {
+ IOData_t *io;
+- gchar *query;
++ gchar *query, *msg_enc;
+ void *link;
+
+ /* Create the query */
+ query = a_Http_make_query_str(S->Url, S->use_proxy);
+
+ /* send query */
+- BW_MSG(S->web, 1, "Sending query to %s...", URL_HOST_(S->Url));
++ msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("Sending query to %s..."));
++ BW_MSG(S->web, 1, msg_enc, URL_HOST_(S->Url));
++ g_free(msg_enc);
+ io = a_IO_new(IOWrite, S->SockFD);
+ a_IO_set_buf(io, query, strlen(query));
+ io->Flags |= IOFlag_FreeIOBuf;
+@@ -414,7 +459,7 @@ static gint Http_get(ChainLink *Info, vo
+ void *link;
+ const DilloUrl *Url = Data1;
+ SocketData_t *S;
+- gchar *hostname;
++ gchar *hostname, *msg_enc;
+
+ S = a_Klist_get_data(ValidSocks, GPOINTER_TO_INT(Info->LocalKey));
+
+@@ -438,7 +483,9 @@ static gint Http_get(ChainLink *Info, vo
+ S->Url = Url;
+
+ /* Let the user know what we'll do */
+- BW_MSG(S->web, 1, "DNS solving %s", URL_HOST_(S->Url));
++ msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("DNS solving %s"));
++ BW_MSG(S->web, 1, msg_enc, URL_HOST_(S->Url));
++ g_free(msg_enc);
+
+ /* Let the DNS engine solve the hostname, and when done,
+ * we'll try to connect the socket */
+@@ -457,6 +504,7 @@ void a_Http_ccc(int Op, int Branch, int
+ {
+ gint SKey = GPOINTER_TO_INT(Info->LocalKey);
+ SocketData_t *S = a_Klist_get_data(ValidSocks, SKey);
++ gchar *msg_enc;
+
+ a_Chain_debug_msg("a_Http_ccc", Op, Branch, Dir);
+
+@@ -469,14 +517,16 @@ void a_Http_ccc(int Op, int Branch, int
+ Info->LocalKey = GINT_TO_POINTER(SKey);
+ if (Http_get(Info, Data1, Data2) < 0) {
+ S = a_Klist_get_data(ValidSocks, SKey);
+- BW_MSG(S->web, 1, "ERROR: %s", g_strerror(S->Err));
++ msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("ERROR: %s"));
++ BW_MSG(S->web, 1, msg_enc, g_strerror(S->Err));
++ g_free(msg_enc);
+ Http_socket_free(SKey);
+ a_Chain_fcb(OpAbort, Info, NULL, NULL);
+ }
+ break;
+ case OpAbort:
+ /* something bad happened... */
+- DEBUG_MSG(2, "Http: OpAbort [1B]\n");
++ DEBUG_MSG(2, _("Http: OpAbort [1B]\n"));
+ Http_socket_free(SKey);
+ a_Chain_bcb(OpAbort, Info, NULL, NULL);
+ g_free(Info);
+@@ -498,7 +548,9 @@ void a_Http_ccc(int Op, int Branch, int
+ a_Chain_del_link(Info, BCK);
+ /* start connecting the socket */
+ if (Http_connect_socket(Info) < 0) {
+- BW_MSG(S->web, 1, "ERROR: %s", g_strerror(S->Err));
++ msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("ERROR: %s"));
++ BW_MSG(S->web, 1, msg_enc, g_strerror(S->Err));
++ g_free(msg_enc);
+ Http_socket_free(SKey);
+ a_Chain_fcb(OpAbort, Info, NULL, NULL);
+ }
+@@ -509,8 +561,10 @@ void a_Http_ccc(int Op, int Branch, int
+ if (S) {
+ /* Unlink DNS_Info */
+ a_Chain_del_link(Info, BCK);
+- BW_MSG(S->web, 0, "ERROR: Dns can't solve %s",
++ msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("ERROR: Dns can't solve %s"));
++ BW_MSG(S->web, 0, msg_enc,
+ (S->use_proxy) ? URL_HOST_(HTTP_Proxy) : URL_HOST_(S->Url));
++ g_free(msg_enc);
+ Http_socket_free(SKey);
+ /* send abort message to higher-level functions */
+ a_Chain_fcb(OpAbort, Info, NULL, NULL);
+@@ -534,7 +588,9 @@ void a_Http_ccc(int Op, int Branch, int
+ if (S) {
+ a_Chain_del_link(Info, BCK);
+ a_Chain_fcb(OpEnd, Info, &S->SockFD, (void *)S->Url);
+- BW_MSG(S->web, 1, "Query sent, waiting for reply...");
++ msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("Query sent, waiting for reply..."));
++ BW_MSG(S->web, 1, msg_enc);
++ g_free(msg_enc);
+ Http_socket_free(SKey);
+ }
+ break;
+@@ -560,6 +616,7 @@ void a_Http_ccc(int Op, int Branch, int
+ */
+ void a_Http_freeall(void)
+ {
++ a_Auth_freeall();
+ a_Klist_free(&ValidSocks);
+ a_Url_free(HTTP_Proxy);
+ g_free(HTTP_Proxy_Auth_base64);
+diff -pruN dillo-0.8.6/src/IO/https.c dillo-0.8.6-i18n-misc-20060709/src/IO/https.c
+--- dillo-0.8.6/src/IO/https.c 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/IO/https.c 2006-05-16 01:21:09.000000000 +0900
+@@ -0,0 +1,466 @@
++/*
++ * File: https.c
++ *
++ * Copyright (C) 2000, 2001 Jorge Arellano Cid <jcid@inf.utfsm.cl>
++ * Copyright (C) 2002 Jonathan P Springer <jonathan.springer@verizon.net>
++ *
++ * 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 of the License, 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
++ *
++ * In addition, as a special exception, Jorge Arellano Cid and Jonathan
++ * Springer give permission to link the code of this program with the OpenSSL
++ * library (or modified versions of OpenSSL that use the same license as
++ * OpenSSL), and distribute linked combinations including the two. You must
++ * obey the GNU General Public License in all respects for all of the code
++ * used other than OpenSSL. If you modify this file, you may extend this
++ * exception to your version of the file, but you are not obligated to do so.
++ * If you do not wish to do so, delete this exception from your version.
++ *
++ */
++
++/*
++ * This program exploits code originally published under the OpenSSL demos/bio
++ * directory. I am uncertain as to the copyright status of this code, as no
++ * notice was included. If you own the copyright on this code and object to
++ * its use in this GPL program, please contact me. -- JPS
++ */
++
++/*
++ * HTTPS connect functions
++ */
++
++#include <config.h>
++
++#ifdef DILLO_SSL
++
++#include <unistd.h>
++#include <errno.h> /* for errno */
++#include <string.h> /* for strstr */
++#include <stdlib.h>
++#include <signal.h>
++#include <fcntl.h>
++#include <sys/wait.h>
++#include <sys/socket.h> /* for lots of socket stuff */
++#include <netinet/in.h> /* for ntohl and stuff */
++#include <openssl/ssl.h>
++#include <openssl/err.h>
++
++#include <glib.h>
++
++#include "../intl.h"
++#include "../i18n.h"
++#include "Url.h"
++#include "DBIO.h"
++#include "../klist.h"
++#include "../dns.h"
++#include "../cache.h"
++#include "../web.h"
++#include "../interface.h"
++extern char *Http_query(const DilloUrl *url, gboolean use_proxy);
++
++
++/* Used to send a message to the bw's status bar */
++#define BW_MSG(web, root, fmt...) \
++ (a_Web_valid(web) && (!(root) || (web)->flags & WEB_RootUrl)) ? \
++ a_Interface_msg((web)->dd->bw, fmt) : (root)
++
++#define DEBUG_LEVEL 5
++#include "../debug.h"
++
++
++/* 'Url' and 'web' are just references (no need to deallocate them here). */
++typedef struct {
++ BIO* bio;
++ SSL* ssl;
++ const DilloUrl *Url; /* reference to original URL */
++ DilloWeb *web; /* reference to client's web structure */
++ guint32 ip_addr; /* Holds the DNS answer */
++ gint Err; /* Holds the errno of the connect() call */
++ ChainLink *Info; /* Used for CCC asynchronous operations */
++} SSLData_t;
++
++
++/*
++ * Local data
++ */
++static Klist_t *ValidSSLs = NULL; /* Active sockets list. It holds pointers to
++ * SSLData_t structures. */
++
++static gboolean Https_init = FALSE;
++
++static SSL_CTX* ssl_ctx;
++
++/*
++ * Forward declarations
++ */
++static void Https_send_query(ChainLink *Info, SSLData_t *S);
++static void Https_expect_answer(SSLData_t *S);
++
++/*
++ * If it hasn't been initialized already, initialize
++ * the SSL-specific stuff.
++ */
++void Https_SSL_init(void)
++{
++ if (!Https_init) {
++ SSL_load_error_strings();
++ OpenSSL_add_ssl_algorithms();
++ ssl_ctx = SSL_CTX_new(SSLv23_client_method());
++ Https_init = TRUE;
++ }
++}
++
++/*
++ * Create and init a new SSLData_t struct, insert into ValidSSLs,
++ * and return a primary key for it.
++ */
++gint Https_SSL_new(void)
++{
++ SSLData_t *S = g_new0(SSLData_t, 1);
++ return a_Klist_insert(&ValidSSLs, (gpointer)S);
++}
++
++/*
++ * Free SSLData_t struct
++ */
++void Https_SSL_free(gint SKey)
++{
++ SSLData_t *S;
++
++ if ((S = a_Klist_get_data(ValidSSLs, SKey))) {
++ a_Klist_remove(ValidSSLs, SKey);
++ if (S->bio) BIO_free_all(S->bio);
++ g_free(S);
++ }
++}
++
++/*
++ * This function is called after the socket has been successfuly connected,
++ * or upon an error condition on the connecting process.
++ * Task: use the socket to send the HTTP-query and expect its answer
++ */
++static gboolean Https_Callback_Use(gpointer data)
++{
++ ChainLink *Info;
++ SSLData_t *S;
++ gint SKey = (gint) data;
++ gchar *msg_enc;
++
++ DEBUG_MSG(3, "Https_Callback_Use\n");
++
++ /* This check is required because glib may asynchronously
++ * call this function with data that's no longer used --Jcid */
++ if ( !(S = a_Klist_get_data(ValidSSLs, SKey)) ) return FALSE;
++
++ Info = S->Info;
++ if ( S->Err ) {
++ DEBUG_MSG(3, _("--Error detected\n"));
++ DEBUG_MSG(3, "%d:%s:%s:%s\n", S->Err,
++ ERR_lib_error_string(S->Err),
++ ERR_func_error_string(S->Err),
++ ERR_reason_error_string(S->Err));
++ msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("ERROR: unable to connect to remote host"));
++ BW_MSG(S->web, 0, msg_enc);
++ g_free(msg_enc);
++ a_Chain_fcb(OpAbort, Info, NULL, NULL);
++ Https_SSL_free(SKey);
++ } else {
++ DEBUG_MSG(3, _("--Connection established\n"));
++ Https_send_query(Info, S);
++ Https_expect_answer(S);
++ }
++ return FALSE;
++}
++
++gboolean Https_Callback_Connect(gpointer data) {
++
++ gint SKey = (gint) data;
++ SSLData_t *S;
++ gchar *msg_enc;
++
++ /* This check is required because glib may asynchronously
++ * call this function with data that's no longer used --Jcid */
++ if ( !(S = a_Klist_get_data(ValidSSLs, SKey)) ) return FALSE;
++
++ S->Err = 0;
++ if (BIO_do_connect(S->bio) != 1) {
++ if (BIO_should_retry(S->bio)) return TRUE;
++ S->Err = ERR_get_error();
++ DEBUG_MSG(3, "%d:%s:%s:%s\n", S->Err,
++ ERR_lib_error_string(S->Err),
++ ERR_func_error_string(S->Err),
++ ERR_reason_error_string(S->Err));
++ msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("ERROR: unable to connect to remote host"));
++ BW_MSG(S->web, 0, msg_enc);
++ g_free(msg_enc);
++ return FALSE;
++ }
++ g_idle_add(Https_Callback_Use, data);
++ return FALSE;
++}
++
++/*
++ * This function gets called after the DNS succeeds solving a hostname.
++ * Task: Finish socket setup and start connecting the socket.
++ * Return value: 0 on success; -1 on error.
++*/
++static int Https_connect_SSL(ChainLink *Info)
++{
++ SSLData_t *S = a_Klist_get_data(ValidSSLs, (gint)Info->LocalKey);
++
++ BIO *ssl_bio;
++ union {
++ guint32 i;
++ guchar c[4];
++ } U;
++ gchar *tmp_str;
++ int port = DILLO_URL_HTTPS_PORT;
++
++ /* TODO - Better error checking */
++
++ /* Initialize some SSL stuff if this is our first connection */
++ Https_SSL_init();
++
++ /* Create an SSL structure */
++ S->ssl = SSL_new(ssl_ctx);
++ SSL_set_connect_state(S->ssl);
++
++ /* Create a BIO structure */
++ ssl_bio = BIO_new(BIO_f_ssl());
++ BIO_set_ssl(ssl_bio, S->ssl, BIO_CLOSE);
++
++ /* Create and configure the connection BIO */
++ S->bio = BIO_new(BIO_s_connect());
++
++#if 0
++ U.i = htonl(S->ip_addr);
++#else
++ U.i = S->ip_addr; /* should already be in the right order */
++#endif
++ tmp_str = g_strdup_printf("%u.%u.%u.%u", U.c[0], U.c[1], U.c[2], U.c[3]);
++ BIO_set_conn_hostname(S->bio, tmp_str);
++ g_free(tmp_str);
++ BIO_set_conn_int_port(S->bio, &port);
++
++ BIO_set_nbio(S->bio, 1); /* non-blocking ON */
++
++ /* Chain the socket & SSL BIOs together */
++ S->bio = BIO_push(ssl_bio, S->bio); /* chain this with the SSL BIO */
++
++ /* And set up a looping idle event to connect it... */
++ g_idle_add(Https_Callback_Connect, (gpointer) Info->LocalKey);
++
++ return 0; /* Success */
++}
++
++/*
++ * Create and submit the HTTP query to the IO engine
++ */
++static void Https_send_query(ChainLink *Info, SSLData_t *S)
++{
++ IOData_t *io;
++ gchar *query, *msg_enc;
++ void *link;
++
++ /* Create the query */
++ query = a_Http_make_query_str(S->Url, FALSE);
++
++ /* send query */
++ msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("Sending query to %s..."));
++ BW_MSG(S->web, 1, msg_enc, URL_HOST(S->Url));
++ g_free(msg_enc);
++ io = a_DBIO_new(S->bio);
++ io->Op = IOWrite;
++ a_IO_set_buf(io, query, strlen(query));
++ io->Flags |= IOFlag_FreeIOBuf;
++ io->ExtData = NULL;
++ link = a_Chain_link_new(Info, a_Https_ccc, BCK, a_DBIO_ccc,2,2);
++ a_DBIO_ccc(OpStart, 1,0, link, io, NULL);
++}
++
++/*
++ * Expect the HTTP query's answer
++ */
++static void Https_expect_answer(SSLData_t *S)
++{
++ IOData_t *io2;
++
++ /* receive answer */
++ io2 = a_DBIO_new(S->bio);
++ io2->Op = IORead;
++ a_IO_set_buf(io2,g_malloc(IOBufLen_Http),IOBufLen_Http);
++ io2->Flags |= IOFlag_FreeIOBuf;
++ io2->ExtData = (void *) S->Url;
++ a_DBIO_ccc(OpStart, 2, 0,a_Chain_new(), io2, NULL);
++}
++
++/*
++ * Asynchronously create a new http connection for 'Url'
++ * We'll set some socket parameters; the rest will be set later
++ * when the IP is known.
++ * ( Data = Requested Url; ExtraData = Web structure )
++ * Return value: 0 on success, -1 otherwise
++ */
++gint Https_get(ChainLink *Info, void *Data1, void *Data2)
++{
++ void *link;
++ const DilloUrl *Url = Data1;
++ SSLData_t *S = a_Klist_get_data(ValidSSLs, (gint)Info->LocalKey);
++ gchar hostname[256], *Host = hostname, *msg_enc;
++
++ /* Reference Info data */
++ S->Info = Info;
++ /* Reference Web data */
++ S->web = Data2;
++
++ Host = (gchar *)URL_HOST(Url);
++
++ /* Set more socket parameters */
++ S->Url = Url;
++
++ /* Let the user know what we'll do */
++ msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("DNS solving %s"));
++ BW_MSG(S->web, 1, msg_enc, URL_HOST(S->Url));
++ g_free(msg_enc);
++
++ /* Let the DNS engine solve the hostname, and when done,
++ * we'll try to connect the socket */
++ link = a_Chain_link_new(Info, a_Https_ccc, BCK, a_Dns_ccc, 1, 1);
++ a_Chain_bcb(OpStart,Info, Host,NULL);
++
++ return 0;
++}
++
++/*
++ * CCC function for the HTTP module
++ */
++void
++a_Https_ccc(int Op, int Branch, int Dir, ChainLink *Info,
++ void *Data1, void *Data2)
++{
++ gint SKey = (gint)Info->LocalKey;
++ SSLData_t *S = a_Klist_get_data(ValidSSLs, SKey);
++ gchar *msg_enc;
++
++ if ( Branch == 1 ) {
++ /* DNS query branch */
++ switch (Op) {
++ case OpStart:
++ SKey = Https_SSL_new();
++ Info->LocalKey = (void *) SKey;
++ if (Https_get(Info, Data1, Data2) < 0) {
++ DEBUG_MSG(2, _(" HTTPS: new abort handler! #2\n"));
++ S = a_Klist_get_data(ValidSSLs, SKey);
++ msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("ERROR: %s"));
++ BW_MSG(S->web, 1, msg_enc, g_strerror(S->Err));
++ g_free(msg_enc);
++ Https_SSL_free(SKey);
++ a_Chain_fcb(OpAbort, Info, NULL, NULL);
++ }
++ break;
++ case OpSend:
++ /* Successful DNS answer; save the IP */
++ if (S)
++ {
++ DilloHost *dh=(DilloHost *)(((GSList *)Data1)->data);
++ S->ip_addr = *(int *)dh->data;
++ }
++ break;
++ case OpEnd:
++ if (S) {
++ /* Unlink DNS_Info */
++ a_Chain_del_link(Info, BCK);
++ /* start connecting the socket */
++ if (Https_connect_SSL(Info) < 0) {
++ DEBUG_MSG(2, _(" HTTP: new abort handler! #1\n"));
++ msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("ERROR: %s"));
++ BW_MSG(S->web, 1, msg_enc, g_strerror(S->Err));
++ g_free(msg_enc);
++ Https_SSL_free(SKey);
++ a_Chain_fcb(OpAbort, Info, NULL, NULL);
++ }
++ }
++ break;
++ case OpAbort:
++ /* DNS wasn't able to resolve the hostname */
++ if (S) {
++ /* Unlink DNS_Info */
++ a_Chain_del_link(Info, BCK);
++ msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("ERROR: Dns can't solve %s"));
++ BW_MSG(S->web, 0, msg_enc, URL_HOST(S->Url));
++ g_free(msg_enc);
++ BIO_free_all(S->bio);
++ Https_SSL_free(SKey);
++ /* send abort message to higher-level functions */
++ a_Chain_fcb(OpAbort, Info, NULL, NULL);
++ }
++ break;
++
++ }
++
++ } else if ( Branch == 2 ) {
++ /* IO send-query branch */
++ switch (Op) {
++ case OpStart:
++ /* LocalKey was set by branch 1 */
++ break;
++ case OpEnd:
++ /* finished sending the HTTP query */
++ if (S) {
++ msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("Query sent, waiting for reply..."));
++ BW_MSG(S->web, 1, msg_enc);
++ g_free(msg_enc);
++ a_Chain_del_link(Info, BCK);
++ a_Chain_fcb(OpEnd, Info, NULL, NULL);
++ }
++ break;
++ case OpAbort:
++ /* something bad happened... */
++ /* unlink IO_Info */
++ if (S) {
++ a_Chain_del_link(Info, BCK);
++ a_Chain_fcb(OpAbort, Info, NULL, NULL);
++ Https_SSL_free(SKey);
++ }
++ break;
++ }
++
++ } else if ( Branch == -1 ) {
++ /* Backwards abort */
++ switch (Op) {
++ case OpAbort:
++ /* something bad happened... */
++ DEBUG_MSG(2, "Http: OpAbort [-1]\n");
++ Https_SSL_free(SKey);
++ a_Chain_bcb(OpAbort, Info, NULL, NULL);
++ g_free(Info);
++ break;
++ }
++ }
++}
++
++
++
++/*
++ * Deallocate memory used by http module
++ * (Call this one at exit time)
++ */
++void a_Https_freeall(void)
++{
++ if (ssl_ctx) SSL_CTX_free(ssl_ctx);
++ a_Klist_free(&ValidSSLs);
++}
++
++#endif
++
+diff -pruN dillo-0.8.6/src/IO/mime.c dillo-0.8.6-i18n-misc-20060709/src/IO/mime.c
+--- dillo-0.8.6/src/IO/mime.c 2006-03-30 03:30:01.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/IO/mime.c 2006-05-16 01:21:09.000000000 +0900
+@@ -9,6 +9,8 @@
+ * (at your option) any later version.
+ */
+
++#include <config.h>
++#include "../intl.h"
+ #include "mime.h"
+ #include "../msg.h"
+ #include "../list.h"
+diff -pruN dillo-0.8.6/src/Makefile.am dillo-0.8.6-i18n-misc-20060709/src/Makefile.am
+--- dillo-0.8.6/src/Makefile.am 2005-05-08 05:19:59.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/Makefile.am 2006-05-16 01:21:08.000000000 +0900
+@@ -1,4 +1,4 @@
+-AM_CPPFLAGS=-DDILLORC_SYS='"$(sysconfdir)/dillorc"' @LIBJPEG_CPPFLAGS@
++AM_CPPFLAGS=-DDILLORC_SYS='"$(sysconfdir)/dillorc"' @LIBJPEG_CPPFLAGS@ -DLOCALEDIR='"$(localedir)"' -D__NO_STRING_INLINES
+ AM_CFLAGS = @GTK_CFLAGS@ @LIBPNG_CFLAGS@
+
+ SUBDIRS = IO
+@@ -11,17 +11,38 @@ dillo_LDFLAGS = @LIBJPEG_LDFLAGS@ @LIBPT
+ dillo_SOURCES = \
+ msg.h \
+ acconfig.h \
+- chain.h \
+- chain.c \
+- commands.c \
+- commands.h \
++ adblock.c \
++ adblock.h \
++ auth.c \
++ auth.h \
++ bitvec.c \
++ bitvec.h \
++ bookmark.c \
++ bookmark.h \
++ browser.h \
+ cache.c \
+ cache.h \
+ capi.c \
+ capi.h \
++ chain.c \
++ chain.h \
++ colors.c \
++ colors.h \
++ commands.c \
++ commands.h \
++ cookies.c \
++ cookies.h \
+ debug.h \
+- dw.h \
++ dicache.c \
++ dicache.h \
++ dillo.c \
++ dillo.h \
++ dns.c \
++ dns.h \
++ doc.c \
++ doc.h \
+ dw.c \
++ dw.h \
+ dw_aligned_page.c \
+ dw_aligned_page.h \
+ dw_bullet.c \
+@@ -32,8 +53,8 @@ dillo_SOURCES = \
+ dw_container.h \
+ dw_embed_gtk.c \
+ dw_embed_gtk.h \
+- dw_ext_iterator.h \
+ dw_ext_iterator.c \
++ dw_ext_iterator.h \
+ dw_gtk_scrolled_frame.c \
+ dw_gtk_scrolled_frame.h \
+ dw_gtk_scrolled_window.c \
+@@ -70,15 +91,6 @@ dillo_SOURCES = \
+ web.h \
+ progressbar.c \
+ progressbar.h \
+- dillo.c \
+- dillo.h \
+- bookmark.c \
+- bookmark.h \
+- browser.h \
+- dicache.c \
+- dicache.h \
+- dns.c \
+- dns.h \
+ gtk_ext_button.c \
+ gtk_ext_button.h \
+ gtk_ext_menu.c \
+@@ -107,22 +119,25 @@ dillo_SOURCES = \
+ menu.h \
+ prefs.c \
+ prefs.h \
+- colors.c \
+- colors.h \
+- bitvec.c \
+- bitvec.h \
+ klist.c \
+ klist.h \
+ strbuf.c \
+ strbuf.h \
+ url.c \
+ url.h \
+- cookies.c \
+- cookies.h \
+ list.h \
+ binaryconst.h \
+ pixmaps.h \
+ dpiapi.c \
+- dpiapi.h
++ dpiapi.h \
++ i18n.c \
++ i18n.h \
++ i18n_gtk.c \
++ i18n_gtk.h \
++ gtkframeset.c \
++ gtkframeset.h \
++ intl.h \
++ tab.c \
++ tab.h
+
+ EXTRA_DIST = chg srch
+diff -pruN dillo-0.8.6/src/Makefile.in dillo-0.8.6-i18n-misc-20060709/src/Makefile.in
+--- dillo-0.8.6/src/Makefile.in 2006-04-27 01:07:25.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/Makefile.in 2006-05-16 01:21:08.000000000 +0900
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.5 from Makefile.am.
++# Makefile.in generated by automake 1.7.9 from Makefile.am.
+ # @configure_input@
+
+-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
++# Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -14,8 +14,6 @@
+
+ @SET_MAKE@
+
+-SOURCES = $(dillo_SOURCES)
+-
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+@@ -23,6 +21,7 @@ pkgdatadir = $(datadir)/@PACKAGE@
+ pkglibdir = $(libdir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
+ top_builddir = ..
++
+ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+ INSTALL = @INSTALL@
+ install_sh_DATA = $(install_sh) -c -m 644
+@@ -39,61 +38,6 @@ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+ target_triplet = @target@
+-bin_PROGRAMS = dillo$(EXEEXT)
+-subdir = src
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+- $(ACLOCAL_M4)
+-mkinstalldirs = $(install_sh) -d
+-CONFIG_HEADER = $(top_builddir)/config.h
+-CONFIG_CLEAN_FILES =
+-am__installdirs = "$(DESTDIR)$(bindir)"
+-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+-PROGRAMS = $(bin_PROGRAMS)
+-am_dillo_OBJECTS = chain.$(OBJEXT) commands.$(OBJEXT) cache.$(OBJEXT) \
+- capi.$(OBJEXT) dw.$(OBJEXT) dw_aligned_page.$(OBJEXT) \
+- dw_bullet.$(OBJEXT) dw_button.$(OBJEXT) dw_container.$(OBJEXT) \
+- dw_embed_gtk.$(OBJEXT) dw_ext_iterator.$(OBJEXT) \
+- dw_gtk_scrolled_frame.$(OBJEXT) \
+- dw_gtk_scrolled_window.$(OBJEXT) dw_gtk_statuslabel.$(OBJEXT) \
+- dw_gtk_viewport.$(OBJEXT) dw_hruler.$(OBJEXT) \
+- dw_image.$(OBJEXT) dw_list_item.$(OBJEXT) dw_marshal.$(OBJEXT) \
+- dw_page.$(OBJEXT) dw_style.$(OBJEXT) dw_table.$(OBJEXT) \
+- dw_table_cell.$(OBJEXT) dw_tooltip.$(OBJEXT) \
+- dw_widget.$(OBJEXT) findtext.$(OBJEXT) selection.$(OBJEXT) \
+- web.$(OBJEXT) progressbar.$(OBJEXT) dillo.$(OBJEXT) \
+- bookmark.$(OBJEXT) dicache.$(OBJEXT) dns.$(OBJEXT) \
+- gtk_ext_button.$(OBJEXT) gtk_ext_menu.$(OBJEXT) \
+- gtk_ext_menu_item.$(OBJEXT) gtk_menu_title.$(OBJEXT) \
+- gif.$(OBJEXT) jpeg.$(OBJEXT) png.$(OBJEXT) html.$(OBJEXT) \
+- image.$(OBJEXT) misc.$(OBJEXT) interface.$(OBJEXT) \
+- history.$(OBJEXT) nav.$(OBJEXT) plain.$(OBJEXT) menu.$(OBJEXT) \
+- prefs.$(OBJEXT) colors.$(OBJEXT) bitvec.$(OBJEXT) \
+- klist.$(OBJEXT) strbuf.$(OBJEXT) url.$(OBJEXT) \
+- cookies.$(OBJEXT) dpiapi.$(OBJEXT)
+-dillo_OBJECTS = $(am_dillo_OBJECTS)
+-dillo_DEPENDENCIES = ../dpip/libDpip.a IO/libDio.a
+-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+-depcomp = $(SHELL) $(top_srcdir)/depcomp
+-am__depfiles_maybe = depfiles
+-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-CCLD = $(CC)
+-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-SOURCES = $(dillo_SOURCES)
+-DIST_SOURCES = $(dillo_SOURCES)
+-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+- html-recursive info-recursive install-data-recursive \
+- install-exec-recursive install-info-recursive \
+- install-recursive installcheck-recursive installdirs-recursive \
+- pdf-recursive ps-recursive uninstall-info-recursive \
+- uninstall-recursive
+-ETAGS = etags
+-CTAGS = ctags
+-DIST_SUBDIRS = $(SUBDIRS)
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMDEP_FALSE = @AMDEP_FALSE@
+ AMDEP_TRUE = @AMDEP_TRUE@
+@@ -123,6 +67,7 @@ EXEEXT = @EXEEXT@
+ GLIB_CFLAGS = @GLIB_CFLAGS@
+ GLIB_CONFIG = @GLIB_CONFIG@
+ GLIB_LIBS = @GLIB_LIBS@
++GMSGFMT = @GMSGFMT@
+ GTK_CFLAGS = @GTK_CFLAGS@
+ GTK_CONFIG = @GTK_CONFIG@
+ GTK_LIBS = @GTK_LIBS@
+@@ -130,9 +75,12 @@ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
++INTLLIBS = @INTLLIBS@
+ LDFLAGS = @LDFLAGS@
+ LIBFLTK_CXXFLAGS = @LIBFLTK_CXXFLAGS@
+ LIBFLTK_LIBS = @LIBFLTK_LIBS@
++LIBICONV = @LIBICONV@
++LIBINTL = @LIBINTL@
+ LIBJPEG_CPPFLAGS = @LIBJPEG_CPPFLAGS@
+ LIBJPEG_LDFLAGS = @LIBJPEG_LDFLAGS@
+ LIBJPEG_LIBS = @LIBJPEG_LIBS@
+@@ -144,8 +92,13 @@ LIBPTHREAD_LIBS = @LIBPTHREAD_LIBS@
+ LIBS = @LIBS@
+ LIBSSL_LIBS = @LIBSSL_LIBS@
+ LIBZ_LIBS = @LIBZ_LIBS@
++LTLIBICONV = @LTLIBICONV@
++LTLIBINTL = @LTLIBINTL@
+ LTLIBOBJS = @LTLIBOBJS@
+ MAKEINFO = @MAKEINFO@
++MKINSTALLDIRS = @MKINSTALLDIRS@
++MSGFMT = @MSGFMT@
++MSGMERGE = @MSGMERGE@
+ OBJEXT = @OBJEXT@
+ PACKAGE = @PACKAGE@
+ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+@@ -154,11 +107,16 @@ PACKAGE_STRING = @PACKAGE_STRING@
+ PACKAGE_TARNAME = @PACKAGE_TARNAME@
+ PACKAGE_VERSION = @PACKAGE_VERSION@
+ PATH_SEPARATOR = @PATH_SEPARATOR@
++PKG_CONFIG = @PKG_CONFIG@
++POSUB = @POSUB@
+ RANLIB = @RANLIB@
+ SET_MAKE = @SET_MAKE@
+ SHELL = @SHELL@
+ STRIP = @STRIP@
++USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
++XFT_CONFIG = @XFT_CONFIG@
++XGETTEXT = @XGETTEXT@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_RANLIB = @ac_ct_RANLIB@
+@@ -170,8 +128,6 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TR
+ am__include = @am__include@
+ am__leading_dot = @am__leading_dot@
+ am__quote = @am__quote@
+-am__tar = @am__tar@
+-am__untar = @am__untar@
+ bindir = @bindir@
+ build = @build@
+ build_alias = @build_alias@
+@@ -190,9 +146,9 @@ infodir = @infodir@
+ install_sh = @install_sh@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
++localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+-mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+@@ -204,25 +160,51 @@ target_alias = @target_alias@
+ target_cpu = @target_cpu@
+ target_os = @target_os@
+ target_vendor = @target_vendor@
+-AM_CPPFLAGS = -DDILLORC_SYS='"$(sysconfdir)/dillorc"' @LIBJPEG_CPPFLAGS@
++AM_CPPFLAGS = -DDILLORC_SYS='"$(sysconfdir)/dillorc"' @LIBJPEG_CPPFLAGS@ -DLOCALEDIR='"$(localedir)"' -D__NO_STRING_INLINES
+ AM_CFLAGS = @GTK_CFLAGS@ @LIBPNG_CFLAGS@
++
+ SUBDIRS = IO
++
++bin_PROGRAMS = dillo
++
+ dillo_LDADD = ../dpip/libDpip.a IO/libDio.a @LIBJPEG_LIBS@ @LIBPNG_LIBS@ @GTK_LIBS@ @LIBZ_LIBS@ @LIBPTHREAD_LIBS@
+ dillo_LDFLAGS = @LIBJPEG_LDFLAGS@ @LIBPTHREAD_LDFLAGS@
++
+ dillo_SOURCES = \
+ msg.h \
+ acconfig.h \
+- chain.h \
+- chain.c \
+- commands.c \
+- commands.h \
++ adblock.c \
++ adblock.h \
++ auth.c \
++ auth.h \
++ bitvec.c \
++ bitvec.h \
++ bookmark.c \
++ bookmark.h \
++ browser.h \
+ cache.c \
+ cache.h \
+ capi.c \
+ capi.h \
++ chain.c \
++ chain.h \
++ colors.c \
++ colors.h \
++ commands.c \
++ commands.h \
++ cookies.c \
++ cookies.h \
+ debug.h \
+- dw.h \
++ dicache.c \
++ dicache.h \
++ dillo.c \
++ dillo.h \
++ dns.c \
++ dns.h \
++ doc.c \
++ doc.h \
+ dw.c \
++ dw.h \
+ dw_aligned_page.c \
+ dw_aligned_page.h \
+ dw_bullet.c \
+@@ -233,8 +215,8 @@ dillo_SOURCES = \
+ dw_container.h \
+ dw_embed_gtk.c \
+ dw_embed_gtk.h \
+- dw_ext_iterator.h \
+ dw_ext_iterator.c \
++ dw_ext_iterator.h \
+ dw_gtk_scrolled_frame.c \
+ dw_gtk_scrolled_frame.h \
+ dw_gtk_scrolled_window.c \
+@@ -271,15 +253,6 @@ dillo_SOURCES = \
+ web.h \
+ progressbar.c \
+ progressbar.h \
+- dillo.c \
+- dillo.h \
+- bookmark.c \
+- bookmark.h \
+- browser.h \
+- dicache.c \
+- dicache.h \
+- dns.c \
+- dns.h \
+ gtk_ext_button.c \
+ gtk_ext_button.h \
+ gtk_ext_menu.c \
+@@ -308,68 +281,140 @@ dillo_SOURCES = \
+ menu.h \
+ prefs.c \
+ prefs.h \
+- colors.c \
+- colors.h \
+- bitvec.c \
+- bitvec.h \
+ klist.c \
+ klist.h \
+ strbuf.c \
+ strbuf.h \
+ url.c \
+ url.h \
+- cookies.c \
+- cookies.h \
+ list.h \
+ binaryconst.h \
+ pixmaps.h \
+ dpiapi.c \
+- dpiapi.h
++ dpiapi.h \
++ i18n.c \
++ i18n.h \
++ i18n_gtk.c \
++ i18n_gtk.h \
++ gtkframeset.c \
++ gtkframeset.h \
++ intl.h \
++ tab.c \
++ tab.h
++
+
+ EXTRA_DIST = chg srch
++subdir = src
++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
++CONFIG_HEADER = $(top_builddir)/config.h
++CONFIG_CLEAN_FILES =
++bin_PROGRAMS = dillo$(EXEEXT)
++PROGRAMS = $(bin_PROGRAMS)
++
++am_dillo_OBJECTS = adblock.$(OBJEXT) auth.$(OBJEXT) bitvec.$(OBJEXT) \
++ bookmark.$(OBJEXT) cache.$(OBJEXT) capi.$(OBJEXT) \
++ chain.$(OBJEXT) colors.$(OBJEXT) commands.$(OBJEXT) \
++ cookies.$(OBJEXT) dicache.$(OBJEXT) dillo.$(OBJEXT) \
++ dns.$(OBJEXT) doc.$(OBJEXT) dw.$(OBJEXT) \
++ dw_aligned_page.$(OBJEXT) dw_bullet.$(OBJEXT) \
++ dw_button.$(OBJEXT) dw_container.$(OBJEXT) \
++ dw_embed_gtk.$(OBJEXT) dw_ext_iterator.$(OBJEXT) \
++ dw_gtk_scrolled_frame.$(OBJEXT) \
++ dw_gtk_scrolled_window.$(OBJEXT) dw_gtk_statuslabel.$(OBJEXT) \
++ dw_gtk_viewport.$(OBJEXT) dw_hruler.$(OBJEXT) \
++ dw_image.$(OBJEXT) dw_list_item.$(OBJEXT) dw_marshal.$(OBJEXT) \
++ dw_page.$(OBJEXT) dw_style.$(OBJEXT) dw_table.$(OBJEXT) \
++ dw_table_cell.$(OBJEXT) dw_tooltip.$(OBJEXT) \
++ dw_widget.$(OBJEXT) findtext.$(OBJEXT) selection.$(OBJEXT) \
++ web.$(OBJEXT) progressbar.$(OBJEXT) gtk_ext_button.$(OBJEXT) \
++ gtk_ext_menu.$(OBJEXT) gtk_ext_menu_item.$(OBJEXT) \
++ gtk_menu_title.$(OBJEXT) gif.$(OBJEXT) jpeg.$(OBJEXT) \
++ png.$(OBJEXT) html.$(OBJEXT) image.$(OBJEXT) misc.$(OBJEXT) \
++ interface.$(OBJEXT) history.$(OBJEXT) nav.$(OBJEXT) \
++ plain.$(OBJEXT) menu.$(OBJEXT) prefs.$(OBJEXT) klist.$(OBJEXT) \
++ strbuf.$(OBJEXT) url.$(OBJEXT) dpiapi.$(OBJEXT) i18n.$(OBJEXT) \
++ i18n_gtk.$(OBJEXT) gtkframeset.$(OBJEXT) tab.$(OBJEXT)
++dillo_OBJECTS = $(am_dillo_OBJECTS)
++dillo_DEPENDENCIES = ../dpip/libDpip.a IO/libDio.a
++
++DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
++depcomp = $(SHELL) $(top_srcdir)/depcomp
++am__depfiles_maybe = depfiles
++@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/adblock.Po ./$(DEPDIR)/auth.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/bitvec.Po ./$(DEPDIR)/bookmark.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/cache.Po ./$(DEPDIR)/capi.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/chain.Po ./$(DEPDIR)/colors.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/commands.Po ./$(DEPDIR)/cookies.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dicache.Po ./$(DEPDIR)/dillo.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dns.Po ./$(DEPDIR)/doc.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dpiapi.Po ./$(DEPDIR)/dw.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dw_aligned_page.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dw_bullet.Po ./$(DEPDIR)/dw_button.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dw_container.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dw_embed_gtk.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dw_ext_iterator.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dw_gtk_scrolled_frame.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dw_gtk_scrolled_window.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dw_gtk_statuslabel.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dw_gtk_viewport.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dw_hruler.Po ./$(DEPDIR)/dw_image.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dw_list_item.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dw_marshal.Po ./$(DEPDIR)/dw_page.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dw_style.Po ./$(DEPDIR)/dw_table.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dw_table_cell.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/dw_tooltip.Po ./$(DEPDIR)/dw_widget.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/findtext.Po ./$(DEPDIR)/gif.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/gtk_ext_button.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/gtk_ext_menu.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/gtk_ext_menu_item.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/gtk_menu_title.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/gtkframeset.Po ./$(DEPDIR)/history.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/html.Po ./$(DEPDIR)/i18n.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/i18n_gtk.Po ./$(DEPDIR)/image.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/interface.Po ./$(DEPDIR)/jpeg.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/klist.Po ./$(DEPDIR)/menu.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/misc.Po ./$(DEPDIR)/nav.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/plain.Po ./$(DEPDIR)/png.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/prefs.Po ./$(DEPDIR)/progressbar.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/selection.Po ./$(DEPDIR)/strbuf.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/tab.Po ./$(DEPDIR)/url.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/web.Po
++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
++CCLD = $(CC)
++LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
++DIST_SOURCES = $(dillo_SOURCES)
++
++RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
++ ps-recursive install-info-recursive uninstall-info-recursive \
++ all-recursive install-data-recursive install-exec-recursive \
++ installdirs-recursive install-recursive uninstall-recursive \
++ check-recursive installcheck-recursive
++DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
++DIST_SUBDIRS = $(SUBDIRS)
++SOURCES = $(dillo_SOURCES)
++
+ all: all-recursive
+
+ .SUFFIXES:
+ .SUFFIXES: .c .o .obj
+-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+- @for dep in $?; do \
+- case '$(am__configure_deps)' in \
+- *$$dep*) \
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+- && exit 0; \
+- exit 1;; \
+- esac; \
+- done; \
+- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
++$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/Makefile
+-.PRECIOUS: Makefile
+-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+- @case '$?' in \
+- *config.status*) \
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+- *) \
+- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+- esac;
+-
+-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-
+-$(top_srcdir)/configure: $(am__configure_deps)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
++binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+ install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+- test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
++ $(mkinstalldirs) $(DESTDIR)$(bindir)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+- echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+- $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
++ echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
++ $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
+ else :; fi; \
+ done
+
+@@ -377,8 +422,8 @@ uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+- echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+- rm -f "$(DESTDIR)$(bindir)/$$f"; \
++ echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
++ rm -f $(DESTDIR)$(bindir)/$$f; \
+ done
+
+ clean-binPROGRAMS:
+@@ -388,11 +433,13 @@ dillo$(EXEEXT): $(dillo_OBJECTS) $(dillo
+ $(LINK) $(dillo_LDFLAGS) $(dillo_OBJECTS) $(dillo_LDADD) $(LIBS)
+
+ mostlyclean-compile:
+- -rm -f *.$(OBJEXT)
++ -rm -f *.$(OBJEXT) core *.core
+
+ distclean-compile:
+ -rm -f *.tab.c
+
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/adblock.Po@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/auth.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitvec.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bookmark.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cache.Po@am__quote@
+@@ -404,6 +451,7 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dicache.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dillo.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dns.Po@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/doc.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dpiapi.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dw.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dw_aligned_page.Po@am__quote@
+@@ -432,8 +480,11 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtk_ext_menu.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtk_ext_menu_item.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtk_menu_title.Po@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkframeset.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/history.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/html.Po@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i18n.Po@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i18n_gtk.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/image.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interface.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jpeg.Po@am__quote@
+@@ -447,22 +498,31 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progressbar.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/selection.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strbuf.Po@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tab.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/url.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web.Po@am__quote@
+
+ .c.o:
+-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
++@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
++@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
++@am__fastdepCC_TRUE@ fi
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+ .c.obj:
+-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
++@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
++@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
++@am__fastdepCC_TRUE@ fi
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+ uninstall-info-am:
+
+ # This directory's subdirectories are mostly independent; you can cd
+@@ -472,13 +532,7 @@ uninstall-info-am:
+ # (which will cause the Makefiles to be regenerated when you run `make');
+ # (2) otherwise, pass the desired values on the `make' command line.
+ $(RECURSIVE_TARGETS):
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+@@ -490,7 +544,7 @@ $(RECURSIVE_TARGETS):
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+@@ -498,13 +552,7 @@ $(RECURSIVE_TARGETS):
+
+ mostlyclean-recursive clean-recursive distclean-recursive \
+ maintainer-clean-recursive:
+- @failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+@@ -525,7 +573,7 @@ maintainer-clean-recursive:
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || eval $$failcom; \
++ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+ tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+@@ -536,6 +584,14 @@ ctags-recursive:
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
++ETAGS = etags
++ETAGSFLAGS =
++
++CTAGS = ctags
++CTAGSFLAGS =
++
++tags: TAGS
++
+ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+@@ -544,22 +600,19 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+-tags: TAGS
+
+ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
++ if (etags --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+- empty_fix=.; \
+ else \
+ include_option=--include; \
+- empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+- test ! -f $$subdir/TAGS || \
++ test -f $$subdir/TAGS && \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+@@ -569,11 +622,10 @@ TAGS: tags-recursive $(HEADERS) $(SOURCE
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+- test -n "$$unique" || unique=$$empty_fix; \
+- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+- $$tags $$unique; \
+- fi
++ test -z "$(ETAGS_ARGS)$$tags$$unique" \
++ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
++ $$tags $$unique
++
+ ctags: CTAGS
+ CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+@@ -596,6 +648,10 @@ GTAGS:
+
+ distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
++
++top_distdir = ..
++distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+ distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+@@ -609,7 +665,7 @@ distdir: $(DISTFILES)
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+- $(mkdir_p) "$(distdir)$$dir"; \
++ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+@@ -624,17 +680,15 @@ distdir: $(DISTFILES)
+ || exit 1; \
+ fi; \
+ done
+- list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
++ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+- test -d "$(distdir)/$$subdir" \
+- || $(mkdir_p) "$(distdir)/$$subdir" \
++ test -d $(distdir)/$$subdir \
++ || mkdir $(distdir)/$$subdir \
+ || exit 1; \
+- distdir=`$(am__cd) $(distdir) && pwd`; \
+- top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+- top_distdir="$$top_distdir" \
+- distdir="$$distdir/$$subdir" \
++ top_distdir="$(top_distdir)" \
++ distdir=../$(distdir)/$$subdir \
+ distdir) \
+ || exit 1; \
+ fi; \
+@@ -644,9 +698,8 @@ check: check-recursive
+ all-am: Makefile $(PROGRAMS)
+ installdirs: installdirs-recursive
+ installdirs-am:
+- for dir in "$(DESTDIR)$(bindir)"; do \
+- test -z "$$dir" || $(mkdir_p) "$$dir"; \
+- done
++ $(mkinstalldirs) $(DESTDIR)$(bindir)
++
+ install: install-recursive
+ install-exec: install-exec-recursive
+ install-data: install-data-recursive
+@@ -666,7 +719,7 @@ mostlyclean-generic:
+ clean-generic:
+
+ distclean-generic:
+- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
++ -rm -f $(CONFIG_CLEAN_FILES)
+
+ maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+@@ -685,8 +738,6 @@ dvi: dvi-recursive
+
+ dvi-am:
+
+-html: html-recursive
+-
+ info: info-recursive
+
+ info-am:
+@@ -722,19 +773,22 @@ uninstall-am: uninstall-binPROGRAMS unin
+
+ uninstall-info: uninstall-info-recursive
+
+-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+- clean clean-binPROGRAMS clean-generic clean-recursive ctags \
++.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
++ clean-binPROGRAMS clean-generic clean-recursive ctags \
+ ctags-recursive distclean distclean-compile distclean-generic \
+- distclean-recursive distclean-tags distdir dvi dvi-am html \
+- html-am info info-am install install-am install-binPROGRAMS \
+- install-data install-data-am install-exec install-exec-am \
+- install-info install-info-am install-man install-strip \
+- installcheck installcheck-am installdirs installdirs-am \
+- maintainer-clean maintainer-clean-generic \
+- maintainer-clean-recursive mostlyclean mostlyclean-compile \
+- mostlyclean-generic mostlyclean-recursive pdf pdf-am ps ps-am \
+- tags tags-recursive uninstall uninstall-am \
+- uninstall-binPROGRAMS uninstall-info-am
++ distclean-recursive distclean-tags distdir dvi dvi-am \
++ dvi-recursive info info-am info-recursive install install-am \
++ install-binPROGRAMS install-data install-data-am \
++ install-data-recursive install-exec install-exec-am \
++ install-exec-recursive install-info install-info-am \
++ install-info-recursive install-man install-recursive \
++ install-strip installcheck installcheck-am installdirs \
++ installdirs-am installdirs-recursive maintainer-clean \
++ maintainer-clean-generic maintainer-clean-recursive mostlyclean \
++ mostlyclean-compile mostlyclean-generic mostlyclean-recursive \
++ pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \
++ tags-recursive uninstall uninstall-am uninstall-binPROGRAMS \
++ uninstall-info-am uninstall-info-recursive uninstall-recursive
+
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
+diff -pruN dillo-0.8.6/src/adblock.c dillo-0.8.6-i18n-misc-20060709/src/adblock.c
+--- dillo-0.8.6/src/adblock.c 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/adblock.c 2006-05-16 01:21:08.000000000 +0900
+@@ -0,0 +1,143 @@
++/*
++ * File: adblock.c
++ *
++ * Copyright 2005 Rudolf Polzer <atfield-dt@durchnull.de>
++ *
++ * 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 of the License, or
++ * (at your option) any later version.
++ */
++
++/* Adblock implementation.
++ * This implementation uses a simple file ~/.dillo/adblock.txt which contains a
++ * list of wildcard expressions to be matched. To be compatible with Firefox,
++ * lines starting with [ will be ignored.
++ */
++
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <sys/file.h>
++#include <fcntl.h>
++#include <stdlib.h>
++#include <stdio.h>
++#include <unistd.h>
++#include <fnmatch.h>
++
++#include <glib.h>
++
++#include "debug.h"
++#include "misc.h"
++#include "url.h"
++
++#include "adblock.h"
++
++#define DEBUG_LEVEL 1
++
++#define LINE_MAXLEN 4096
++static gboolean disabled;
++static GPtrArray *blocked;
++
++static FILE *Adblock_fopen(const char *file, gchar *init_str);
++
++/*
++ * Return a file pointer. If the file doesn't exist, try to create it,
++ * with the optional 'init_str' as its content.
++ */
++static FILE *Adblock_fopen(const char *filename, gchar *init_str)
++{
++ FILE *F_in;
++ int fd;
++
++ if ((F_in = fopen(filename, "r+")) == NULL) {
++ /* Create the file */
++ fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);
++ if (fd != -1) {
++ if (init_str)
++ write(fd, init_str, strlen(init_str));
++ close(fd);
++
++ DEBUG_MSG(10, "Adblock: Created file: %s\n", filename);
++ F_in = Adblock_fopen(filename, NULL);
++ } else {
++ DEBUG_MSG(10, "Adblock: Could not create file: %s!\n", filename);
++ }
++ }
++
++ /* set close on exec */
++ fcntl(fileno(F_in), F_SETFD, FD_CLOEXEC | fcntl(fileno(F_in), F_GETFD));
++
++ return F_in;
++}
++
++void a_Adblock_init()
++{
++ char *filename;
++ char line[LINE_MAXLEN];
++ FILE *file_stream;
++ guint urls;
++
++ disabled = TRUE;
++
++ filename = a_Misc_prepend_user_home(".dillo/adblock.txt");
++ file_stream = Adblock_fopen(filename, "[Adblock]\n");
++ g_free(filename);
++
++ if (!file_stream) {
++ DEBUG_MSG(10, "ERROR: Can't open ~/.dillo/adblock.txt, disabling adblock\n");
++ return;
++ }
++
++ blocked = g_ptr_array_new();
++
++ urls = 0;
++ DEBUG_MSG(10, "Loading Adblock list...\n");
++ while (!feof(file_stream)) {
++ line[0] = '\0';
++ fgets(line, LINE_MAXLEN, file_stream);
++ g_strstrip(line);
++ if(line[0] == '\0')
++ continue;
++ if(line[0] == '[')
++ continue;
++ g_ptr_array_add(blocked, g_strdup(line));
++ ++urls;
++ }
++ DEBUG_MSG(10, "loaded %u adblock entries.\n", urls);
++
++ disabled = FALSE;
++}
++
++void a_Adblock_freeall( void )
++{
++ guint i;
++ if(disabled)
++ return;
++ for(i = 0; i != blocked->len; ++i)
++ g_free(g_ptr_array_index(blocked, i));
++ g_ptr_array_free(blocked, TRUE);
++}
++
++gboolean a_Adblock_isblocked(const DilloUrl *request_url)
++{
++ guint i;
++ DEBUG_MSG(10, "running adblock on %s\n", URL_STR(request_url));
++// g_print("running adblock on %s\n", URL_STR(request_url));
++ if(disabled)
++ return FALSE;
++ if(request_url == NULL)
++ return FALSE;
++ else
++ {
++ const char *url = URL_STR(request_url);
++ for(i = 0; i != blocked->len; ++i)
++ {
++ const char *pattern = (const char *) g_ptr_array_index(blocked, i);
++ if(!fnmatch(pattern, url, 0))
++ return TRUE;
++ }
++ return FALSE;
++ }
++}
++
++// vim: sw=3 et ts=3
+diff -pruN dillo-0.8.6/src/adblock.h dillo-0.8.6-i18n-misc-20060709/src/adblock.h
+--- dillo-0.8.6/src/adblock.h 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/adblock.h 2006-05-16 01:21:08.000000000 +0900
+@@ -0,0 +1,10 @@
++#ifndef __ADBLOCK_H__
++#define __ADBLOCK_H__
++
++#include "url.h"
++
++void a_Adblock_init( void );
++gboolean a_Adblock_isblocked(const DilloUrl *request_url);
++void a_Adblock_freeall( void );
++
++#endif
+diff -pruN dillo-0.8.6/src/auth.c dillo-0.8.6-i18n-misc-20060709/src/auth.c
+--- dillo-0.8.6/src/auth.c 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/auth.c 2006-05-16 01:21:08.000000000 +0900
+@@ -0,0 +1,134 @@
++#include <config.h>
++#include "auth.h"
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include "msg.h"
++#include "intl.h"
++#include "klist.h"
++#include "list.h"
++#include "cache.h"
++#include "web.h"
++#include "interface.h"
++#include "nav.h"
++#include "history.h"
++#include "misc.h"
++
++void Auth_confirmed(DilloDoc *dd);
++void Auth_refused(DilloDoc *dd);
++void Auth_load_authenticated(DilloDoc *dd, DilloUrl *url);
++
++typedef struct _Realm Realm;
++
++struct _Realm {
++ DilloUrl *base_url;
++ GString *auth;
++};
++
++static Realm *realms = NULL;
++static gint num_realms;
++static gint realms_max = 16;
++
++void a_Auth_byrealm(GString *auth_realm, DilloUrl *NewUrl, DilloDoc *dd)
++{
++ /* we already have a password dialogue open */
++ if (dd->auth_await_url)
++ return;
++
++ dd->auth_await_url = a_Url_dup(NewUrl);
++ auth_realm = g_string_append(auth_realm, "\n");
++ a_Interface_passwd_dialog(dd->bw, auth_realm->str,
++ Auth_confirmed, dd,
++ Auth_refused, dd);
++}
++
++GString *a_Auth_byurl(DilloUrl *n)
++{
++ gchar *offset;
++ int i, longest = -1, len = 0, longlen = 0;
++ gchar *ptr;
++
++ if (!n)
++ return NULL;
++
++ for (i = 0; i < num_realms; i++) {
++ ptr = URL_STR(realms[i].base_url);
++ offset = strrchr(ptr, '/');
++ if (!offset)
++ offset = ptr + strlen(ptr);
++ if (strncmp(URL_STR(n), ptr, (char*) offset - (char*) ptr) == 0) {
++ len = (gchar *) offset - (gchar *) ptr;
++ if (longlen <= len) {
++ longlen=len;
++ longest=i;
++ }
++ }
++ }
++ return longest == -1 ? NULL : realms[longest].auth;
++}
++
++void Auth_confirmed(DilloDoc *dd)
++{
++ DilloUrl *NewUrl;
++ GString *new_auth;
++ GtkEntry *uentry,*pentry;
++ GString *up = g_string_new("");
++ gchar *encoded;
++
++ if (!dd->auth_await_url)
++ return;
++
++ NewUrl = dd->auth_await_url;
++
++ /* are we still trying to browse the url that wants authentication? */
++
++ if (a_Nav_stack_size(dd) != 0
++ && a_Url_cmp(a_History_get_url(NAV_TOP(dd)), NewUrl) != 0) {
++ MSG(_("Browser Url has changed\n"));
++ /* free the url here, maybe ? */
++ a_Url_free(NewUrl);
++ dd->auth_await_url = NULL;
++ return;
++ }
++
++ /* fetch and encode authorization */
++ uentry = GTK_ENTRY(dd->bw->passwd_dialog_uentry);
++ pentry = GTK_ENTRY(dd->bw->passwd_dialog_pentry);
++ /* ... */
++ g_string_sprintfa(up, "%s:%s", gtk_entry_get_text(uentry),
++ gtk_entry_get_text(pentry));
++ new_auth = g_string_new("");
++ encoded = a_Misc_encode_base64(up->str);
++ g_string_sprintfa(new_auth, "Basic %s", encoded);
++ g_free(encoded);
++ a_List_add(realms, num_realms, realms_max);
++ realms[num_realms].base_url = a_Url_dup(NewUrl);
++ realms[num_realms].auth = new_auth;
++ num_realms++;
++ Auth_load_authenticated(dd, NewUrl);
++ dd->auth_await_url = NULL;
++}
++
++void Auth_refused(DilloDoc *dd)
++{
++ DilloUrl *NewUrl;
++
++ if (!dd->auth_await_url)
++ return;
++ NewUrl = dd->auth_await_url;
++ g_return_if_fail(NewUrl);
++ a_Url_free(NewUrl);
++ dd->auth_await_url = NULL;
++}
++
++void Auth_load_authenticated(DilloDoc *dd, DilloUrl *NewUrl)
++{
++ a_Url_set_flags(NewUrl, URL_FLAGS(NewUrl) | URL_E2EReload | URL_RealmAccess);
++ a_Nav_push(dd, NewUrl);
++ a_Url_free(NewUrl);
++}
++
++void a_Auth_freeall(void)
++{
++}
++
+diff -pruN dillo-0.8.6/src/auth.h dillo-0.8.6-i18n-misc-20060709/src/auth.h
+--- dillo-0.8.6/src/auth.h 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/auth.h 2006-05-16 01:21:08.000000000 +0900
+@@ -0,0 +1,14 @@
++#ifndef __AUTH_H__
++#define __AUTH_H__
++
++#include <glib.h>
++#include <gtk/gtk.h>
++#include "url.h"
++#include "doc.h"
++
++void a_Auth_byrealm(GString *auth_realm,DilloUrl *NewUrl, DilloDoc *dd);
++GString *a_Auth_byurl(DilloUrl *url);
++void a_Auth_freeall(void);
++
++#endif /* AUTH_H */
++
+diff -pruN dillo-0.8.6/src/bookmark.c dillo-0.8.6-i18n-misc-20060709/src/bookmark.c
+--- dillo-0.8.6/src/bookmark.c 2005-10-28 01:20:06.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/bookmark.c 2006-07-08 21:00:09.000000000 +0900
+@@ -14,6 +14,7 @@
+ #include <stdlib.h>
+ #include <string.h>
+
++#include "i18n.h"
+ #include "msg.h"
+ #include "browser.h"
+ #include "history.h"
+@@ -39,10 +40,10 @@ void a_Bookmarks_init(void)
+ * and finally ask it to add a new bookmark.
+ * (this is an example of dpi chat)
+ */
+-void a_Bookmarks_chat_add(BrowserWindow *Bw, char *Cmd, char *answer)
++void a_Bookmarks_chat_add(DilloDoc *Dd, char *Cmd, char *answer)
+ {
+ static char *cmd1 = NULL, *cmd2 = NULL, *cmd3 = NULL, *cmd4 = NULL;
+- static BrowserWindow *bw = NULL;
++ static DilloDoc *dd = NULL;
+
+ if (!cmd1) {
+ cmd1 = a_Dpip_build_cmd("cmd=%s msg=%s", "chat", "Hi server");
+@@ -53,26 +54,26 @@ void a_Bookmarks_chat_add(BrowserWindow
+
+ _MSG("a_Bookmarks_chat_add\n answer=%s\n", answer ? answer : "(null)");
+
+- if (Bw)
+- bw = Bw;
++ if (Dd)
++ dd = Dd;
+ if (!cmd4 && Cmd)
+ cmd4 = g_strdup(Cmd);
+
+ if (!answer) {
+- a_Capi_dpi_send_cmd(NULL, bw, cmd1, "bookmarks", 1);
++ a_Capi_dpi_send_cmd(NULL, dd, cmd1, "bookmarks", 1);
+
+ } else {
+ /* we have an answer */
+ if (answer) {
+ if (*answer == 'H') {
+ /* "Hi browser" */
+- a_Capi_dpi_send_cmd(NULL, bw, cmd2, "bookmarks", 0);
++ a_Capi_dpi_send_cmd(NULL, dd, cmd2, "bookmarks", 0);
+ } else if (*answer == 'I') {
+ /* "Is it worth?" */
+- a_Capi_dpi_send_cmd(NULL, bw, cmd3, "bookmarks", 0);
++ a_Capi_dpi_send_cmd(NULL, dd, cmd3, "bookmarks", 0);
+ } else if (*answer == 'O') {
+ /* "OK, send it!" */
+- a_Capi_dpi_send_cmd(NULL, bw, cmd4, "bookmarks", 0);
++ a_Capi_dpi_send_cmd(NULL, dd, cmd4, "bookmarks", 0);
+ g_free(cmd4);
+ cmd4 = NULL;
+ }
+@@ -83,34 +84,31 @@ void a_Bookmarks_chat_add(BrowserWindow
+ /*
+ * Add the new bookmark through the bookmarks server
+ */
+-void a_Bookmarks_add(GtkWidget *widget, gpointer client_data)
++void a_Bookmarks_add(DilloDoc *dd, DilloUrl *url)
+ {
+- BrowserWindow *bw = (BrowserWindow *)client_data;
+- DilloUrl *url;
+ const gchar *title;
+ gchar *cmd;
+
+- url = a_Menu_popup_get_url(bw);
+- g_return_if_fail(url != NULL);
++ g_return_if_fail(url != NULL && dd != NULL);
+
+ /* if the page has no title, we'll use the url string */
+ title = a_History_get_title_by_url(url, 1);
+
+ cmd = a_Dpip_build_cmd("cmd=%s url=%s title=%s",
+ "add_bookmark", URL_STR(url), title);
+- a_Bookmarks_chat_add(bw, cmd, NULL);
++ a_Bookmarks_chat_add(dd, cmd, NULL);
+ g_free(cmd);
+ }
+
+ /*
+ * Request the server to show the bookmarks
+ */
+-void a_Bookmarks_show(BrowserWindow *bw)
++void a_Bookmarks_show(DilloDoc *dd)
+ {
+ DilloUrl *url;
+
+ url = a_Url_new("dpi:/bm/", NULL, 0, 0, 0);
+- a_Nav_push(bw, url);
++ a_Nav_push(dd, url);
+ a_Url_free(url);
+ }
+
+diff -pruN dillo-0.8.6/src/bookmark.h dillo-0.8.6-i18n-misc-20060709/src/bookmark.h
+--- dillo-0.8.6/src/bookmark.h 2005-10-28 01:20:06.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/bookmark.h 2006-05-16 01:21:08.000000000 +0900
+@@ -5,10 +5,11 @@
+
+
+ void a_Bookmarks_init(void);
+-void a_Bookmarks_add(GtkWidget *widget, gpointer client_data);
+-void a_Bookmarks_show(BrowserWindow *bw);
++//void a_Bookmarks_add(GtkWidget *widget, gpointer client_data);
++void a_Bookmarks_add(DilloDoc *dd, DilloUrl *url);
++void a_Bookmarks_show(DilloDoc *dd);
+
+ /* todo: this is for testing purposes */
+-void a_Bookmarks_chat_add(BrowserWindow *Bw, char *Cmd, char *answer);
++void a_Bookmarks_chat_add(DilloDoc *Dd, char *Cmd, char *answer);
+
+ #endif /* __BOOKMARK_H__ */
+diff -pruN dillo-0.8.6/src/browser.h dillo-0.8.6-i18n-misc-20060709/src/browser.h
+--- dillo-0.8.6/src/browser.h 2005-10-28 01:20:06.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/browser.h 2006-05-16 01:21:08.000000000 +0900
+@@ -4,17 +4,17 @@
+ #include <sys/types.h>
+ #include <gdk/gdk.h>
+ #include <gtk/gtk.h>
+-
+-#include "url.h" /* for DilloUrl */
+-
++#include "url.h" /* for DilloUrl */
++#include "dw_style.h" /* for DwStyle */
+
+ typedef struct _BrowserWindow BrowserWindow;
+ typedef struct _DilloMenuPopup DilloMenuPopup;
++typedef struct _DilloDoc DilloDoc;
+
+ typedef struct {
+ DilloUrl *Url; /* URL-key for this cache connection */
+ gint Flags; /* {WEB_RootUrl, WEB_Image, WEB_Download} */
+-} BwUrls;
++} DdUrls;
+
+ /* The popup menus so that we can call them. */
+ struct _DilloMenuPopup
+@@ -25,12 +25,16 @@ struct _DilloMenuPopup
+ GtkWidget *over_back;
+ GtkWidget *over_forw;
+ GtkWidget *over_bug;
++ GtkWidget *over_frame;
++#ifndef DISABLE_TABS
++ GtkWidget *over_tab;
++#endif /* !DISABLE_TABS */
+ DilloUrl *url;
+ DilloUrl *url2;
+ GtkWidget *ol_oi_submenu;
+ };
+
+-/* browser_window contains all widgets to create a single window */
++/* browser_window contains everything related to a window */
+ struct _BrowserWindow
+ {
+ /* Control-Panel handleboxes --used for hiding */
+@@ -38,6 +42,9 @@ struct _BrowserWindow
+ /* Flag: TRUE when control-panel is hidden */
+ gboolean fullwindow;
+
++ /* The tag for the idle function that sets button sensitivity. */
++ guint sens_idle_tag;
++
+ /* widgets for the main window */
+ GtkWidget *main_window;
+ GtkWidget *back_button;
+@@ -59,23 +66,111 @@ struct _BrowserWindow
+ GtkWidget *imgprogress;
+ GtkWidget *progress;
+
++ /* popup menu navigation widgets */
++ GtkWidget *back_op_menu_button;
++ GtkWidget *forw_op_menu_button;
++ GtkWidget *stop_op_menu_button;
++
+ /* the keyboard accelerator table */
+ GtkAccelGroup *accel_group;
+
++ /* the tooltips group */
++ GtkTooltips *tooltips;
++
+ /* Popup menu for this BrowserWindow */
+ DilloMenuPopup menu_popup;
+
+- /* The "Headings" and "Anchors" menus */
++ /* The Pagemark menu_item (points to individual document's pagemark menus */
+ GtkWidget *pagemarks_menuitem;
+- GtkWidget *pagemarks_menu;
+- GtkWidget *pagemarks_last;
+
+ /* "View page Bugs" menuitem so we can set its sensitivity */
+ GtkWidget *viewbugs_menuitem;
+
++ /* The Frame menu_item (points to individual frame menus */
++ GtkWidget *frame_menuitem;
++
++ /* The Frameset menu_item (points to nested frameset menus */
++ GtkWidget *frameset_menuitem;
++
++ /* widgets for dialog boxes off main window */
++ GtkWidget *open_dialog_window;
++ GtkWidget *open_dialog_entry;
++ GtkWidget *openfile_dialog_window;
++ GtkWidget *quit_dialog_window;
++ GtkWidget *save_dialog_window;
++ GtkWidget *save_link_dialog_window;
++ GtkWidget *findtext_dialog;
++ GtkWidget *findtext_dialog_check;
++ GtkWidget *findtext_dialog_entry;
++ GtkWidget *search_dialog_window;
++ GtkWidget *search_dialog_entry;
++ GtkWidget *proxy_passwd_dialog_window;
++ GtkWidget *proxy_passwd_dialog_entry;
++ GtkWidget *question_dialog_window;
++ gpointer question_dialog_data;
++ gpointer question_dialog_answer;
++ GtkWidget *passwd_dialog_window;
++ GtkWidget *passwd_dialog_uentry;
++ GtkWidget *passwd_dialog_pentry;
++ GtkWidget *viewsource_window;
++ GtkWidget *pagebugs_window;
++ GtkWidget *full_screen_off_button;
++
++ /* the container widget, this contains either the tabbrowser
++ * or the docwin
++ */
++ GtkContainer *container;
++
++ /* tab width adjustment magic. Yes, it is magic. In essence,
++ * this contains the average width of a character in a string
++ * in the current display context and with the current language.
++ * This is used to calculate the expected width of tab labels
++ *
++ * the value is calculated when the tabbrowser is loaded
++ */
++ gfloat tab_label_average_character_width;
++
++ /* the currently displayed document */
++ DilloDoc *dd;
++
++ /* the findtext state (TRUE if search string has been found
++ * in the document or any of its children
++ */
++ gboolean found;
++
++ /* the list of documents to search through in findtext */
++ GList *dd_list;
++ /* the current index for dd_list */
++ guint dd_list_index;
++ /* The id for the idle function that sets button sensitivity. */
++ guint sens_idle_id;
++};
++
++/* dillo_doc contains all data pertaining to a single document */
++struct _DilloDoc
++{
++ /* the BrowserWindow this document is currently part of */
++ BrowserWindow *bw;
++
+ /* This is the main document widget. (HTML rendering or whatever) */
+ GtkWidget *docwin;
+
++ /* The initial style for the widget */
++ DwStyle *style;
++
++ /* for nested documents, points to parent document */
++ DilloDoc *parent;
++
++ /* This is the frameset widget. */
++ GtkWidget *frameset;
++
++ /* document name (as used in 'target=window_or_frame_name' attribute */
++ gchar *name;
++
++ /* The "Headings" and "Anchors" menus */
++ GtkWidget *pagemarks_menu;
++ GtkWidget *pagemarks_last;
++
+ /* Current cursor type */
+ GdkCursorType CursorType;
+
+@@ -92,33 +187,16 @@ struct _BrowserWindow
+ gint NumImages;
+ /* Number of different images already loaded */
+ gint NumImagesGot;
++ /* the current document progress */
++ gfloat progress;
++ /* 'ready' is true when the root document has finished loading */
++ gboolean ready;
+
+ /* List of all Urls requested by this page (and its types) */
+- BwUrls *PageUrls;
++ DdUrls *PageUrls;
+ gint NumPageUrls;
+ gint MaxPageUrls;
+
+- /* widgets for dialog boxes off main window */
+- GtkWidget *open_dialog_window;
+- GtkWidget *open_dialog_entry;
+- GtkWidget *openfile_dialog_window;
+- GtkWidget *quit_dialog_window;
+- GtkWidget *save_dialog_window;
+- GtkWidget *save_link_dialog_window;
+- GtkWidget *findtext_dialog_window;
+- GtkWidget *findtext_dialog_check;
+- GtkWidget *findtext_dialog_entry;
+- GtkWidget *search_dialog_window;
+- GtkWidget *search_dialog_entry;
+- GtkWidget *proxy_passwd_dialog_window;
+- GtkWidget *proxy_passwd_dialog_entry;
+- GtkWidget *question_dialog_window;
+- gpointer question_dialog_data;
+- gpointer question_dialog_answer;
+- GtkWidget *viewsource_window;
+- GtkWidget *pagebugs_window;
+- GtkWidget *full_screen_off_button;
+-
+ /* Dillo navigation stack (holds indexes to history list) */
+ gint *nav_stack;
+ gint nav_stack_size; /* [1 based] */
+@@ -137,11 +215,8 @@ struct _BrowserWindow
+ * redirection loops (accounts for WEB_RootUrl only) */
+ gint redirect_level;
+
+- /* The id for the idle function that sets button sensitivity. */
+- guint sens_idle_id;
++ DilloUrl *auth_await_url;
+ };
+
+-
+-
+ #endif /* __BROWSER_H__ */
+
+diff -pruN dillo-0.8.6/src/cache.c dillo-0.8.6-i18n-misc-20060709/src/cache.c
+--- dillo-0.8.6/src/cache.c 2006-04-08 21:15:11.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/cache.c 2006-05-16 01:21:08.000000000 +0900
+@@ -13,25 +13,34 @@
+ * Dillo's cache module
+ */
+
++#include <config.h>
+ #include <ctype.h> /* for tolower */
+ #include <sys/types.h>
+
+ #include <sys/stat.h>
++#include <time.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+
++#include "intl.h"
+ #include "msg.h"
+ #include "list.h"
+ #include "IO/Url.h"
+ #include "IO/IO.h"
++#include <zlib.h>
++
++#include "i18n.h"
+ #include "web.h"
++#include "doc.h"
+ #include "dicache.h"
+ #include "interface.h"
+ #include "nav.h"
++#include "auth.h"
+ #include "cookies.h"
+ #include "misc.h"
++#include "prefs.h"
+
+ #define NULLKey 0
+
+@@ -46,7 +55,9 @@ typedef struct {
+ const DilloUrl *Url; /* Cached Url. Url is used as a primary Key */
+ char *TypeDet; /* MIME type string (detected from data) */
+ char *TypeHdr; /* MIME type string as from the HTTP Header */
++ const char *Encoding; /* Data encoding */
+ GString *Header; /* HTTP header */
++ GString *AuthRealm; /* Authentication realm */
+ const DilloUrl *Location; /* New URI for redirects */
+ void *Data; /* Pointer to raw data */
+ size_t ValidSize, /* Actually size of valid range */
+@@ -56,6 +67,7 @@ typedef struct {
+ IOData_t *io; /* Pointer to IO data */
+ ChainLink *CCCQuery; /* CCC link for querying branch */
+ ChainLink *CCCAnswer; /* CCC link for answering branch */
++ time_t Expires; /* when this data should be reloaded */
+ } CacheData_t;
+
+
+@@ -206,16 +218,19 @@ static void Cache_entry_init(CacheData_t
+ NewEntry->Url = a_Url_dup(Url);
+ NewEntry->TypeDet = NULL;
+ NewEntry->TypeHdr = NULL;
++ NewEntry->Encoding = NULL;
+ NewEntry->Header = g_string_new("");
+ NewEntry->Location = NULL;
+ NewEntry->Data = NULL;
+ NewEntry->ValidSize = 0;
+ NewEntry->TotalSize = 0;
+ NewEntry->BuffSize = 4096;
+- NewEntry->Flags = 0;
++ NewEntry->Flags = URL_FLAGS_(Url) & URL_Post ? CA_Expires : 0;
+ NewEntry->io = NULL;
+ NewEntry->CCCQuery = a_Chain_new();
+ NewEntry->CCCAnswer = NULL;
++ NewEntry->AuthRealm = NULL;
++ NewEntry->Expires = 0;
+ }
+
+ /*
+@@ -235,7 +250,7 @@ static CacheData_t *Cache_entry_add(cons
+ CacheData_t *new_entry = g_new(CacheData_t, 1);
+
+ if (Cache_entry_search(Url))
+- DEBUG_MSG(5, "WARNING: Cache_entry_add, leaking an entry.\n");
++ DEBUG_MSG(5, _("WARNING: Cache_entry_add, leaking an entry.\n"));
+
+ Cache_entry_init(new_entry, Url); /* Set safe values */
+ g_hash_table_insert(CacheHash, (gpointer)new_entry->Url, new_entry);
+@@ -251,6 +266,7 @@ static void Cache_entry_free(CacheData_t
+ g_free(entry->TypeDet);
+ g_free(entry->TypeHdr);
+ g_string_free(entry->Header, TRUE);
++ g_free((gchar *)entry->Encoding);
+ a_Url_free((DilloUrl *)entry->Location);
+ g_free(entry->Data);
+ g_free(entry);
+@@ -297,13 +313,13 @@ static void Cache_entry_remove(CacheData
+ InfoAnswer = entry->CCCAnswer;
+
+ if (InfoQuery) {
+- DEBUG_MSG(2, "## Aborting CCCQuery\n");
++ DEBUG_MSG(2, _("## Aborting CCCQuery\n"));
+ a_Cache_ccc(OpAbort, 1, BCK, InfoQuery, NULL, NULL);
+ } else if (InfoAnswer) {
+- DEBUG_MSG(2, "## Aborting CCCAnswer\n");
++ DEBUG_MSG(2, _("## Aborting CCCAnswer\n"));
+ a_Cache_ccc(OpAbort, 2, BCK, InfoAnswer, NULL, NULL);
+ } else {
+- DEBUG_MSG(2, "## Aborting raw2\n");
++ DEBUG_MSG(2, _("## Aborting raw2\n"));
+ Cache_entry_remove_raw(entry, NULL);
+ }
+ }
+@@ -346,11 +362,11 @@ static gint Cache_prepare_reload(DilloUr
+
+ if (!g_slist_find_custom(ClientQueue, url, Cache_client_url_cmp)) {
+ /* There're no clients for this entry */
+- DEBUG_MSG(2, "## No more clients for this entry\n");
++ DEBUG_MSG(2, _("## No more clients for this entry\n"));
+ Cache_entry_remove(NULL, url);
+ return 1;
+ } else {
+- MSG("Cache_prepare_reload: ERROR, entry still has clients\n");
++ MSG(_("Cache_prepare_reload: ERROR, entry still has clients\n"));
+ }
+
+ return 0;
+@@ -364,18 +380,28 @@ static gint Cache_prepare_reload(DilloUr
+ static gint Cache_open_url(DilloWeb *Web, CA_Callback_t Call, void *CbData)
+ {
+ void *link;
+- gint ClientKey;
++ gint ClientKey, imgOnOtherHost;
+ ChainFunction_t cccFunct;
+ DilloUrl *Url = Web->url;
+ CacheData_t *entry = Cache_entry_search(Url);
+
+ _MSG("Cache_open_url: %s %sFOUND\n", URL_STR(Url), entry ? "" : "NOT ");
+
++ imgOnOtherHost = ((URL_FLAGS(Url) & (URL_IsImage | URL_OnOtherHost))
++ != (URL_IsImage | URL_OnOtherHost));
++ if (entry && (entry->Flags & CA_Expires) &&
++ (!entry->Expires || entry->Expires <= time(NULL)) &&
++ !(URL_FLAGS(Url) & URL_MustCache) && imgOnOtherHost &&
++ !g_slist_find_custom(ClientQueue, Url, Cache_client_url_cmp)) {
++ Cache_entry_remove(entry, Url);
++ entry = NULL;
++ MSG_HTTP(_("Reloading >%s< because it shouldn't be cached\n"),
++ URL_STR(Url));
++ }
+ if ( entry ) {
+ /* URL is cached: feed our client with cached data */
+ ClientKey = Cache_client_enqueue(entry->Url, Web, Call, CbData);
+ Cache_delayed_process_queue(entry);
+-
+ } else {
+ /* URL not cached: create an entry, send our client to the queue,
+ * and open a new connection */
+@@ -388,7 +414,10 @@ static gint Cache_open_url(DilloWeb *Web
+ a_Cache_ccc, BCK, cccFunct, 1, 1);
+ a_Chain_bcb(OpStart, entry->CCCQuery, (void *)entry->Url, Web);
+ } else {
+- a_Interface_msg(Web->bw, "ERROR: unsupported protocol");
++ gchar *msg_enc = a_I18n_locale_to_DILLO_CHARSET(
++ _("ERROR: unsupported protocol"));
++ a_Interface_msg(Web->dd->bw, msg_enc);
++ g_free(msg_enc);
+ a_Cache_ccc(OpAbort, 1, FWD, entry->CCCQuery, NULL, NULL);
+ ClientKey = 0; /* aborted */
+ }
+@@ -456,11 +485,12 @@ gint a_Cache_get_buf(const DilloUrl *Url
+
+ /* Test for a redirection loop */
+ if (entry->Flags & CA_RedirectLoop) {
+- g_warning ("Redirect loop for URL: >%s<\n", URL_STR_(Url));
++ g_warning (_("Redirect loop for URL: >%s<\n"), URL_STR_(Url));
+ break;
+ }
+ /* Test for a working redirection */
+- if (entry && entry->Flags & CA_Redirect && entry->Location) {
++ if (entry && entry->Flags & CA_Redirect && entry->Location
++ && !entry->AuthRealm) {
+ Url = entry->Location;
+ } else
+ break;
+@@ -542,6 +572,32 @@ static GList *Cache_parse_multiple_field
+ }
+ #endif /* !DISABLE_COOKIES */
+
++static void Cache_force_min_expire(CacheData_t *entry, int min, guint stdExp) {
++ time_t t;
++
++ if (!(entry->Flags & CA_Expires) || (URL_FLAGS_(entry->Url) & URL_Post))
++ return;
++ if (min < 0) {
++ entry->Flags &= ~CA_Expires;
++ entry->Expires = 0;
++ return;
++ }
++ t = time(0);
++ if (entry->Expires && t > entry->Expires + 1000) {
++ if (!stdExp)
++ entry->Flags &= ~CA_Expires;
++ entry->Expires = 0;
++ MSG_HTTP(_("Bad clocks, ignore expire on >%s<\n"), URL_STR(entry->Url));
++ return;
++ }
++ if (min && (t += min) > entry->Expires) {
++ _MSG_HTTP(_("Forcing min expire %d on >%s< instead %ld\n"), min,
++ URL_STR(entry->Url), entry->Expires ?
++ entry->Expires - (t - min) : 0);
++ entry->Expires = t;
++ }
++}
++
+ /*
+ * Scan, allocate, and set things according to header info.
+ * (This function needs the whole header to work)
+@@ -549,10 +605,13 @@ static GList *Cache_parse_multiple_field
+ static void Cache_parse_header(CacheData_t *entry, IOData_t *io, gint HdrLen)
+ {
+ gchar *header = entry->Header->str;
+- gchar *Length, *Type, *location_str;
++ gchar *Length, *Type, *CacheControl, *Date, *CC_ptr, *location_str;
++ guint expFlag;
++ gchar *Encoding;
+ #ifndef DISABLE_COOKIES
+ GList *Cookies;
+ #endif
++ gchar *auth_type_realm;
+
+ if ( HdrLen < 12 ) {
+ /* Not enough info. */
+@@ -564,15 +623,29 @@ static void Cache_parse_header(CacheData
+ entry->Flags |= CA_ForceRedirect; /* 301 Moved Permanently */
+ else if ( header[11] == '2' )
+ entry->Flags |= CA_TempRedirect; /* 302 Temporal Redirect */
+-
++ else if ( header[11] == '3' )
++ entry->Flags |= CA_Expires; /* 303 See Other */
++ else if ( header[11] == '7' )
++ entry->Flags |= CA_Expires; /* 307 Moved Temporarely */
++ /* TODO: should be here a_Url_free(entry->Location) ? */
++
+ location_str = Cache_parse_field(header, "Location");
+ entry->Location = a_Url_new(location_str, URL_STR_(entry->Url), 0, 0, 0);
+ g_free(location_str);
+
+ } else if ( strncmp(header + 9, "404", 3) == 0 ) {
+ entry->Flags |= CA_NotFound;
++ } else if ( strncmp(header + 9, "401", 3) == 0 ) {
++ auth_type_realm = Cache_parse_field(header,"WWW-Authenticate");
++ entry->Flags |= CA_Redirect;
++ if (entry->Location)
++ a_Url_free((DilloUrl*) entry->Location);
++ entry->Location = a_Url_dup(entry->Url);
++ entry->AuthRealm = g_string_new(auth_type_realm);
+ }
+
++ expFlag = entry->Flags & CA_Expires;
++
+ entry->ValidSize = io->Status - HdrLen;
+ if ( (Length = Cache_parse_field(header, "Content-Length")) != NULL ) {
+ entry->Flags |= CA_GotLength;
+@@ -582,6 +655,41 @@ static void Cache_parse_header(CacheData
+ entry->TotalSize = 0;
+ }
+
++ if ( (CacheControl = Cache_parse_field(header, "Expires")) != NULL ) {
++ entry->Flags |= CA_Expires;
++ entry->Expires = a_Cookies_create_timestamp(CacheControl);
++ g_free(CacheControl);
++ }
++
++ if ( (CacheControl = Cache_parse_field(header, "Cache-Control")) != NULL ) {
++ CC_ptr = CacheControl;
++ do {
++ while (*CC_ptr == ' ')
++ ++CC_ptr;
++ if ( !g_strncasecmp(CacheControl, "no-cache", 8) ) {
++ entry->Flags |= CA_Expires;
++ entry->Expires = 0;
++ break;
++ } else if ( !g_strncasecmp(CacheControl, "max-age=", 8) ) {
++ char *e;
++ long n;
++
++ if ( !(Date = Cache_parse_field(header, "Date")) ) {
++ MSG_HTTP(_("'Cache-Control: max-age=' without 'Date: ' header"));
++ break;
++ }
++ n = strtoul(CacheControl + 8, &e, 10);
++ if (e > CacheControl + 8 && n >= 0) {
++ entry->Flags |= CA_Expires;
++ entry->Expires = n + a_Cookies_create_timestamp(Date);
++ }
++ g_free(Date);
++ break;
++ }
++ } while ( (CC_ptr = strchr(CC_ptr, ',')) && *++CC_ptr );
++ g_free(CacheControl);
++ }
++
+ #ifndef DISABLE_COOKIES
+ /* BUG: If a server feels like mixing Set-Cookie2 and Set-Cookie
+ * responses which aren't identical, then we have a problem. I don't
+@@ -611,13 +719,32 @@ static void Cache_parse_header(CacheData
+
+ /* Get Content-Type */
+ if ( (Type = Cache_parse_field(header, "Content-Type")) == NULL ) {
+- MSG_HTTP("Server didn't send Content-Type in header.\n");
++ MSG_HTTP(_("Server didn't send Content-Type in header.\n"));
+ } else {
+ entry->TypeHdr = Type;
+ /* This Content-Type is not trusted. It's checked against real data
+ * in Cache_process_queue(); only then CA_GotContentType becomes true.
+ */
+ }
++ /* Get Content-Encoding */
++ if ( (Encoding = Cache_parse_field(header, "Content-Encoding")) == NULL ) {
++ //MSG_HTTP(_("Server didn't send Content-Encoding in header.\n"));
++ Encoding = NULL;
++ }
++ entry->Encoding = Encoding;
++
++ if (URL_FLAGS(entry->Url) & URL_IsImage || (Type && !strncmp(Type, "image/", 5))) {
++ Cache_force_min_expire(entry, prefs.min_image_expire_time, expFlag);
++ } else if (!(entry->Flags & CA_Expires) &&
++ (entry->Location ? entry->Location->query : entry->Url->query) &&
++ prefs.query_expire_time >= 0 && (Type && !strncmp(Type, "text/", 5))) {
++ entry->Flags |= CA_Expires;
++ entry->Expires = time(NULL) + prefs.query_expire_time;
++ MSG(_("Forcing default expire to query url >%s<\n"),
++ URL_STR(entry->Url));
++ } else {
++ Cache_force_min_expire(entry, prefs.min_page_expire_time, expFlag);
++ }
+ }
+
+ /*
+@@ -650,6 +777,134 @@ static gint Cache_get_header(IOData_t *i
+ }
+
+ /*
++ * CONTENT-ENCODING: Process any encoded data
++ *
++ * Unfortunately we need to provide a private uncompress function as
++ * the one in zlib assumes that a zlib header will appear in the compressed
++ * block -- gzip doesn't provide one so inflateInit2 must be called with
++ * negative MAX_WBITS to get the library to cope.
++ */
++
++static int
++dillo_uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen)
++{
++ z_stream stream;
++ int err;
++
++ stream.next_in = (Bytef*)source;
++ stream.avail_in = (uInt)sourceLen;
++ /* Check for source > 64K on 16-bit machine: */
++ if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;
++
++ stream.next_out = dest;
++ stream.avail_out = (uInt)*destLen;
++ if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;
++
++ stream.zalloc = (alloc_func)0;
++ stream.zfree = (free_func)0;
++
++ err = inflateInit2(&stream, -MAX_WBITS);
++ if (err != Z_OK) return err;
++
++ err = inflate(&stream, Z_FINISH);
++ if (err != Z_STREAM_END) {
++ inflateEnd(&stream);
++ return err == Z_OK ? Z_BUF_ERROR : err;
++ }
++ *destLen = stream.total_out;
++
++ err = inflateEnd(&stream);
++ return err;
++}
++
++
++static void Cache_decode_data(CacheData_t *entry)
++{
++ void *new_Data = NULL;
++ int rc;
++ unsigned char *p;
++ int method;
++ int flags;
++ int expand = 2;
++ uLongf destLen;
++
++ DEBUG_MSG(4, _("Cache_decode_data: got all data -- decodinging %s\n"), entry->Encoding);
++ if( strcmp(entry->Encoding, "x-gzip") == 0
++ || strcmp(entry->Encoding, "gzip") == 0) {
++
++ /* entry->Data holds the data to expand */
++ /* entry->TotalSize is length of data */
++
++ p = entry->Data;
++ if ( (*p++ != 0x1f) || (*p++ != 0x8b) ) {
++ DEBUG_MSG(5, _("Cache_decode_data: not gzip data!\n"));
++ goto exit;
++ }
++ method = *p++;
++ flags = *p++;
++ if ( (method != Z_DEFLATED) || (flags & 0xE0) ) {
++ DEBUG_MSG(5, _("Cache_decode_data: invalid gzip data!\n"));
++ goto exit;
++ }
++
++ /* skip some headers */
++ p += 6;
++ if( (flags & 0x04) != 0 ) {
++ /* skip extra field */
++ int i = (*p++);
++ i += ((*p++)<<8);
++ p += i;
++ }
++ if( (flags & 0x08) != 0 ) {
++ /* skip name */
++ while( *p != 0 )
++ p++;
++ p++;
++ }
++ if( (flags & 0x10) != 0 ) {
++ /* skip comment */
++ while( *p != 0 )
++ p++;
++ p++;
++ }
++ if( (flags & 0x02) != 0 ) {
++ /* skip CRC */
++ p += 2;
++ }
++
++ /* finished with header, rest is compressed data without zlib header */
++ rc = Z_BUF_ERROR; /* just to get started */
++ while( rc == Z_BUF_ERROR ) {
++ /* FIXME -- should limit times round loop? */
++ expand++; /* start with 300% expansion */
++ destLen = expand * entry->TotalSize;
++ new_Data = g_realloc(new_Data, destLen);
++ rc = dillo_uncompress((Bytef *)new_Data, &destLen, (Bytef *)p, (uLong)entry->TotalSize);
++ }
++ if( rc == Z_OK ) {
++ DEBUG_MSG(4, "Cache_decode_data: %.2fKB -> %.2f KB (%ld%%)\n",
++ (float)entry->TotalSize/1024, (float)destLen/1024, destLen * 100 /entry->TotalSize);
++ g_free(entry->Data);
++ entry->Data = g_realloc(new_Data, destLen);
++ entry->TotalSize = destLen;
++ entry->ValidSize = destLen;
++ entry->BuffSize = destLen;
++ }
++ else {
++ g_free(new_Data);
++ }
++
++ }else{
++ MSG(_("not x-gzip\n"));
++ }
++
++exit:;
++ g_free((void *)entry->Encoding);
++ entry->Encoding = NULL;
++}
++
++
++/*
+ * Receive new data, update the reception buffer (for next read), update the
+ * cache, and service the client queue.
+ *
+@@ -673,20 +928,26 @@ static void Cache_process_io(int Op, voi
+
+ if ( Op == IOClose ) {
+ if (entry->Flags & CA_GotLength && entry->TotalSize != entry->ValidSize){
+- MSG_HTTP("Content-Length does NOT match message body,\n"
+- " at: %s\n", URL_STR_(entry->Url));
++ MSG_HTTP(_("Content-Length does NOT match message body,\n"
++ " at: %s\n"), URL_STR_(entry->Url));
+ }
+ entry->Flags |= CA_GotData;
+ entry->Flags &= ~CA_Stopped; /* it may catch up! */
+ entry->TotalSize = entry->ValidSize;
+ entry->io = NULL;
+ entry->CCCAnswer = NULL;
++ /* CONTENT-ENCODING --
++ if encoded then translate and clear client block */
++ if ( entry->Encoding != NULL ) {
++ Cache_decode_data(entry);
++ }
++
+ Cache_process_queue(entry);
+ return;
+ } else if ( Op == IOAbort ) {
+ /* todo: implement Abort
+ * (eliminate cache entry and anything related) */
+- DEBUG_MSG(5, "Cache_process_io Op = IOAbort; not implemented yet\n");
++ DEBUG_MSG(5, _("Cache_process_io Op = IOAbort; not implemented yet\n"));
+ entry->io = NULL;
+ entry->CCCAnswer = NULL;
+ return;
+@@ -729,19 +990,21 @@ static void Cache_process_io(int Op, voi
+ * Process redirections (HTTP 30x answers)
+ * (This is a work in progress --not finished yet)
+ */
+-static gint Cache_redirect(CacheData_t *entry, gint Flags, BrowserWindow *bw)
++static gint Cache_redirect(CacheData_t *entry, gint Flags, DilloDoc *dd)
+ {
+ DilloUrl *NewUrl;
+
+ _MSG(" Cache_redirect: redirect_level = %d\n", bw->redirect_level);
+
+ /* if there's a redirect loop, stop now */
+- if (bw->redirect_level >= 5)
++ if (dd->redirect_level >= 5)
+ entry->Flags |= CA_RedirectLoop;
+
+ if (entry->Flags & CA_RedirectLoop) {
+- a_Interface_msg(bw, "ERROR: redirect loop for: %s", URL_STR_(entry->Url));
+- bw->redirect_level = 0;
++ gchar *msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("ERROR: redirect loop for: %s"));
++ a_Interface_msg(dd->bw, msg_enc, URL_STR_(entry->Url));
++ g_free(msg_enc);
++ dd->redirect_level = 0;
+ return 0;
+ }
+
+@@ -749,7 +1012,7 @@ static gint Cache_redirect(CacheData_t *
+ (entry->Flags & CA_ForceRedirect || entry->Flags & CA_TempRedirect ||
+ !entry->ValidSize || entry->ValidSize < 1024 )) {
+
+- _MSG(">>>Redirect from: %s\n to %s\n",
++ _MSG(_(">>>Redirect from: %s\n to %s\n"),
+ URL_STR_(entry->Url), URL_STR_(entry->Location));
+ _MSG("%s", entry->Header->str);
+
+@@ -759,14 +1022,19 @@ static gint Cache_redirect(CacheData_t *
+ 0, 0, 0);
+ if (entry->Flags & CA_TempRedirect)
+ a_Url_set_flags(NewUrl, URL_FLAGS(NewUrl) | URL_E2EReload);
+- a_Nav_push(bw, NewUrl);
++ if (entry->AuthRealm) {
++ a_Auth_byrealm(entry->AuthRealm, NewUrl, dd);
++ return 0;
++ }
++ a_Nav_remove_top_url(dd);
++ a_Nav_push(dd, NewUrl);
+ a_Url_free(NewUrl);
+ } else {
+ /* Sub entity redirection (most probably an image) */
+ if ( !entry->ValidSize ) {
+- DEBUG_MSG(3,">>>Image redirection without entity-content<<<\n");
++ DEBUG_MSG(3, _(">>>Image redirection without entity-content<<<\n"));
+ } else {
+- DEBUG_MSG(3, ">>>Image redirection with entity-content<<<\n");
++ DEBUG_MSG(3, _(">>>Image redirection with entity-content<<<\n"));
+ }
+ }
+ }
+@@ -799,7 +1067,7 @@ void a_Cache_null_client(int Op, CacheCl
+ if (Op == CA_Close) {
+ if (Web->flags & WEB_RootUrl) {
+ /* Remove this client from our active list */
+- a_Interface_close_client(Web->bw, Client->Key);
++ a_Doc_close_client(Web->dd, Client->Key);
+ }
+ }
+
+@@ -825,14 +1093,14 @@ static void Cache_process_queue(CacheDat
+ const gchar *Type;
+ CacheClient_t *Client;
+ DilloWeb *ClientWeb;
+- BrowserWindow *Client_bw = NULL;
++ DilloDoc *Client_dd = NULL;
+ static gboolean Busy = FALSE;
+ gboolean AbortEntry = FALSE;
+ gboolean OfferDownload = FALSE;
+ gboolean TypeMismatch = FALSE;
+
+ if ( Busy )
+- DEBUG_MSG(5, "FATAL!:*** >>>> Cache_process_queue Caught busy!!!\n");
++ DEBUG_MSG(5, _("FATAL!:*** >>>> Cache_process_queue Caught busy!!!\n"));
+ if (!(entry->Flags & CA_GotHeader))
+ return;
+ if (!(entry->Flags & CA_GotContentType)) {
+@@ -840,7 +1108,7 @@ static void Cache_process_queue(CacheDat
+ entry->Data, entry->ValidSize, &Type);
+ if (st == 0 || entry->Flags & CA_GotData) {
+ if (a_Misc_content_type_check(entry->TypeHdr, Type) < 0) {
+- MSG_HTTP("Content-Type '%s' doesn't match the real data.\n",
++ MSG_HTTP(_("Content-Type '%s' doesn't match the real data.\n"),
+ entry->TypeHdr);
+ TypeMismatch = TRUE;
+ }
+@@ -849,29 +1117,35 @@ static void Cache_process_queue(CacheDat
+ } else
+ return; /* i.e., wait for more data */
+ }
++
++ /* CONTENT-ENCODING -- don't let clients process data yet */
++ if ( entry->Encoding != NULL ) {
++ Busy = FALSE;
++ return;
++ }
+
+ Busy = TRUE;
+ for ( i = 0; (Client = g_slist_nth_data(ClientQueue, i)); ++i ) {
+ if ( Client->Url == entry->Url ) {
+ ClientWeb = Client->Web; /* It was a (void*) */
+- Client_bw = ClientWeb->bw; /* 'bw' in a local var */
++ Client_dd = ClientWeb->dd; /* 'd' in a local var */
+
+ if (ClientWeb->flags & WEB_RootUrl) {
+ if (!(entry->Flags & CA_MsgErased)) {
+ /* clear the "expecting for reply..." message */
+- a_Interface_msg(Client_bw, "");
++ a_Interface_msg(Client_dd->bw, "");
+ entry->Flags |= CA_MsgErased;
+ }
+ if (TypeMismatch)
+- a_Interface_msg(Client_bw,"HTTP warning: Content-Type '%s' "
+- "doesn't match the real data.", entry->TypeHdr);
+- if (entry->Flags & CA_Redirect) {
++ a_Interface_msg(Client_dd->bw,_("HTTP warning: Content-Type '%s' "
++ "doesn't match the real data."), entry->TypeHdr);
++ if (entry->Flags & CA_Redirect && !entry->AuthRealm) {
+ if (!Client->Callback) {
+ Client->Callback = a_Cache_null_client;
+- Client_bw->redirect_level++;
++ Client_dd->redirect_level++;
+ }
+ } else {
+- Client_bw->redirect_level = 0;
++ Client_dd->redirect_level = 0;
+ }
+ } else {
+ /* For non root URLs, ignore redirections and 404 answers */
+@@ -900,13 +1174,13 @@ static void Cache_process_queue(CacheDat
+ * Not aborted to avoid multiple connections on the same
+ * resource. A better idea is to abort the connection and
+ * to keep a failed-resource flag in the cache entry. */
+- MSG_HTTP("Unhandled MIME type: <%s>\n",
++ MSG_HTTP(_("Unhandled MIME type: <%s>\n"),
+ entry->TypeHdr ? entry->TypeHdr:entry->TypeDet);
+ }
+ }
+ }
+ if (AbortEntry) {
+- a_Interface_remove_client(Client_bw, Client->Key);
++ a_Doc_remove_client(Client_dd, Client->Key);
+ Cache_client_dequeue(Client, NULLKey);
+ --i; /* Keep the index value in the next iteration */
+ continue;
+@@ -925,7 +1199,7 @@ static void Cache_process_queue(CacheDat
+ gint flags = ClientWeb->flags;
+ /* We finished sending data, let the client know */
+ if (!Client->Callback)
+- DEBUG_MSG(3, "Client Callback is NULL");
++ DEBUG_MSG(3, _("Client Callback is NULL"));
+ else
+ (Client->Callback)(CA_Close, Client);
+ Cache_client_dequeue(Client, NULLKey);
+@@ -933,10 +1207,10 @@ static void Cache_process_queue(CacheDat
+
+ /* call Cache_redirect() from this 'if' to assert one call only. */
+ if ( entry->Flags & CA_Redirect )
+- Cache_redirect(entry, flags, Client_bw);
++ Cache_redirect(entry, flags, Client_dd);
+
+ _MSG("Cache_process_queue: NumRootClients=%d sens_idle_id = %d\n",
+- Client_bw->NumRootClients, Client_bw->sens_idle_id);
++ Client_dd->bw->NumRootClients, Client_dd->bw->sens_idle_id);
+ }
+ }
+ } /* for */
+@@ -945,7 +1219,7 @@ static void Cache_process_queue(CacheDat
+ /* Abort the entry, remove it from cache, and maybe offer download.
+ * (the dialog is made before 'entry' is freed) */
+ if (OfferDownload && Cache_download_enabled(entry->Url))
+- a_Interface_offer_link_download(Client_bw, entry->Url);
++ a_Interface_offer_link_download(Client_dd->bw, entry->Url);
+ Cache_entry_remove(entry, NULL);
+ }
+
+@@ -1008,7 +1282,7 @@ static void Cache_remove_interface_clien
+ for ( i = 0; (Client = g_slist_nth_data(ClientQueue, i)); ++i ) {
+ if ( Client->Url == Url ) {
+ Web = Client->Web;
+- a_Interface_remove_client(Web->bw, Client->Key);
++ a_Doc_remove_client(Web->dd, Client->Key);
+ }
+ }
+ }
+@@ -1026,7 +1300,7 @@ static void Cache_stop_client(gint Key,
+
+ if (!(List = g_slist_find_custom(ClientQueue, GINT_TO_POINTER(Key),
+ Cache_client_key_cmp))){
+- _MSG("WARNING: Cache_stop_client, inexistent client\n");
++ _MSG(_("WARNING: Cache_stop_client, inexistent client\n"));
+ return;
+ }
+
+@@ -1168,7 +1442,7 @@ void a_Cache_ccc(int Op, int Branch, int
+ break;
+ }
+ case OpStop:
+- MSG(" Not implemented\n");
++ MSG(_(" Not implemented\n"));
+ break;
+ case OpAbort:
+ Cache_entry_remove_raw(NULL, Info->LocalKey);
+diff -pruN dillo-0.8.6/src/cache.h dillo-0.8.6-i18n-misc-20060709/src/cache.h
+--- dillo-0.8.6/src/cache.h 2005-10-28 01:20:06.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/cache.h 2006-05-16 01:21:08.000000000 +0900
+@@ -27,6 +27,7 @@
+ #define CA_Stopped (512) /* True if the entry has been stopped */
+ #define CA_MsgErased (1024) /* Used to erase the bw's status bar */
+ #define CA_RedirectLoop (2048) /* Redirect loop */
++#define CA_Expires (4096) /* Should be reloaded, when expired */
+
+ /*
+ * Callback type for cache clients
+diff -pruN dillo-0.8.6/src/capi.c dillo-0.8.6-i18n-misc-20060709/src/capi.c
+--- dillo-0.8.6/src/capi.c 2006-01-04 04:39:31.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/capi.c 2006-07-08 21:49:11.000000000 +0900
+@@ -15,12 +15,16 @@
+ * to get the requests served. Kind of a broker.
+ */
+
++#include <config.h>
+ #include <string.h>
+ #include <unistd.h> /* for pipe */
+
++#include "i18n.h"
++#include "intl.h"
+ #include "msg.h"
+ #include "capi.h"
+ #include "IO/Url.h"
++#include "web.h"
+ #include "chain.h"
+ #include "list.h"
+ #include "interface.h"
+@@ -39,7 +43,7 @@
+ typedef struct {
+ DilloWeb *web;
+ DilloUrl *url; /* local copy of web->url. Used when the latter is freed */
+- void *bw;
++ DilloDoc *dd;
+ gchar *server;
+ gchar *datastr;
+ gint SockFD;
+@@ -83,14 +87,15 @@ void a_Capi_ccc(int Op, int Branch, int
+ * Create a new connection data structure
+ */
+ static dpi_conn_t *
+- Capi_dpi_conn_new(DilloWeb *web, void *bw, char *server, gchar *datastr)
++Capi_dpi_conn_new(DilloWeb *web, DilloDoc *dd, char *server, gchar *datastr)
+ {
+ dpi_conn_t *conn;
+
+ conn = g_new(dpi_conn_t, 1);
+ conn->web = web;
+ conn->url = (web) ? a_Url_dup(web->url) : NULL;
+- conn->bw = bw;
++ conn->dd = dd;
++ conn->server = server;
+ conn->server = g_strdup(server);
+ conn->datastr = g_strdup(datastr);
+ conn->SockFD = -1;
+@@ -211,8 +216,8 @@ static gint Capi_verify_dpi_url_request(
+ /* test POST and GET */
+ if (strchr(URL_STR(web->url), '?') || URL_DATA_(web->url)) {
+ /* safety measure: only allow dpi requests from dpi-generated urls */
+- if (a_Nav_stack_size(web->bw)) {
+- referer = a_History_get_url(NAV_TOP(web->bw));
++ if (a_Nav_stack_size(web->dd)) {
++ referer = a_History_get_url(NAV_TOP(web->dd));
+ if (g_strncasecmp(URL_STR(referer), "dpi:/", 5) == 0)
+ allow = TRUE;
+ }
+@@ -221,7 +226,7 @@ static gint Capi_verify_dpi_url_request(
+ }
+
+ if (!allow) {
+- MSG("Capi_verify_dpi_url_request: Permission Denied!\n");
++ MSG(_("Capi_verify_dpi_url_request: Permission Denied!\n"));
+ MSG(" URL_STR : %s\n", URL_STR(web->url));
+ if (URL_DATA_(web->url))
+ MSG(" URL_DATA: %s\n", URL_DATA(web->url));
+@@ -250,9 +255,10 @@ gint a_Capi_url_uses_dpi(gchar *url_str,
+
+ } else if (g_strncasecmp(url_str, "ftp:/", 5) == 0) {
+ server = g_strdup("ftp");
+-
++#ifndef DILLO_SSL
+ } else if (g_strncasecmp(url_str, "https:/", 7) == 0) {
+ server = g_strdup("https");
++#endif
+ } else if (g_strncasecmp(url_str, "file:", 5) == 0) {
+ server = g_strdup("file");
+ } else if (g_strncasecmp(url_str, "data:", 5) == 0) {
+@@ -315,13 +321,13 @@ gint a_Capi_open_url(DilloWeb *web, CA_C
+ safe = 1;
+ }
+
+- _MSG(" reload=%d URL_E2EReload=%d\n", reload,
++ _MSG(_(" reload=%d URL_E2EReload=%d\n"), reload,
+ (URL_FLAGS(web->url) & URL_E2EReload));
+
+ if (safe && reload) {
+ /* Send dpip command */
+ cmd = Capi_dpi_build_cmd(web->url, server);
+- a_Capi_dpi_send_cmd(web, web->bw, cmd, server, 1);
++ a_Capi_dpi_send_cmd(web, web->dd, cmd, server, 1);
+ g_free(cmd);
+
+ /* test the new dpi-cache connection! */
+@@ -357,7 +363,7 @@ gint a_Capi_get_buf(const DilloUrl *Url,
+ * Send a dpi cmd.
+ * (For instance: add_bookmark, open_url, send_preferences, ...)
+ */
+-gint a_Capi_dpi_send_cmd(DilloWeb *web, void *bw, char *cmd, char *server,
++gint a_Capi_dpi_send_cmd(DilloWeb *web, void *dd, char *cmd, char *server,
+ gint flags)
+ {
+ dpi_conn_t *conn;
+@@ -367,7 +373,7 @@ gint a_Capi_dpi_send_cmd(DilloWeb *web,
+ /* open a new connection to server */
+
+ /* Create a new connection data struct and add it to the list */
+- conn = Capi_dpi_conn_new(web, bw, server, cmd);
++ conn = Capi_dpi_conn_new(web, dd, server, cmd);
+ /* start the CCC operations */
+ a_Capi_ccc(OpStart, 1, BCK, conn->InfoSend, conn, server);
+
+@@ -380,7 +386,7 @@ gint a_Capi_dpi_send_cmd(DilloWeb *web,
+ a_Capi_ccc(OpSend, 1, BCK, conn->InfoSend, dbuf, NULL);
+ g_free(dbuf);
+ } else {
+- MSG(" ERROR: [a_Capi_dpi_send_cmd] No open connection found\n");
++ MSG(_(" ERROR: [a_Capi_dpi_send_cmd] No open connection found\n"));
+ }
+ }
+
+@@ -419,7 +425,7 @@ void a_Capi_ccc(int Op, int Branch, int
+ break;
+ case OpStop:
+ case OpAbort:
+- MSG(" Not implemented\n");
++ MSG(_(" Not implemented\n"));
+ break;
+ }
+ } else { /* FWD */
+@@ -448,7 +454,7 @@ void a_Capi_ccc(int Op, int Branch, int
+ case OpAbort:
+ conn = Info->LocalKey;
+ if (Data1 && !strcmp(Data1, "ERR_dpid"))
+- a_Interface_msg(conn->bw, "ERROR: can't start dpid daemon!");
++ a_Interface_msg(conn->dd->bw, _("ERROR: can't start dpid daemon!"));
+ Capi_dpi_conn_unref(conn);
+ g_free(Info);
+ break;
+@@ -472,7 +478,7 @@ void a_Capi_ccc(int Op, int Branch, int
+ case OpStop:
+ case OpAbort:
+ Capi_dpi_conn_unref(Info->LocalKey);
+- MSG(" Not implemented\n");
++ MSG(_(" Not implemented\n"));
+ break;
+ }
+ } else { /* FWD */
+@@ -483,7 +489,7 @@ void a_Capi_ccc(int Op, int Branch, int
+ if (conn->Flags & ABORTED ||
+ (conn->web && !a_Web_valid(conn->web))) {
+ /* there's no client for this transfer!*/
+- _MSG(" ** Capi 2F catched an invalid 'web' structure\n");
++ _MSG(_(" ** Capi 2F catched an invalid 'web' structure\n"));
+ /* this flag is used just in case the same memory address
+ * is reused for a new 'web' and the test passes */
+ conn->Flags &= ABORTED;
+@@ -491,12 +497,12 @@ void a_Capi_ccc(int Op, int Branch, int
+ a_Chain_bcb(OpStop, Info, conn->url, NULL);
+
+ } else if (strcmp(Data2, "send_status_message") == 0) {
+- a_Interface_msg(conn->bw, "%s", Data1);
++ a_Interface_msg(conn->dd->bw, "%s", Data1);
+ } else if (strcmp(Data2, "chat") == 0) {
+- a_Interface_msg(conn->bw, "%s", Data1);
++ a_Interface_msg(conn->dd->bw, "%s", Data1);
+ a_Bookmarks_chat_add(NULL, NULL, Data1);
+ } else if (strcmp(Data2, "dialog") == 0) {
+- a_Dpiapi_dialog(conn->bw, conn->server, Data1);
++ a_Dpiapi_dialog(conn->dd, conn->server, Data1);
+ } else if (strcmp(Data2, "start_send_page") == 0) {
+ /* start the pipe-writing chain */
+ a_Capi_ccc(OpStart, 3, BCK, a_Chain_new(), Info->LocalKey,NULL);
+@@ -505,7 +511,7 @@ void a_Capi_ccc(int Op, int Branch, int
+ } else if (strcmp(Data2, "send_page_2eof") == 0) {
+ a_Capi_ccc(OpSend, 3, BCK, conn->InfoPipe, Data1, NULL);
+ } else if (strcmp(Data2, "reload_request") == 0) {
+- a_Nav_reload(conn->bw);
++ a_Nav_reload(conn->dd);
+ }
+ break;
+ case OpEnd:
+@@ -527,7 +533,7 @@ void a_Capi_ccc(int Op, int Branch, int
+ }
+ case OpStop:
+ case OpAbort:
+- MSG(" Not implemented\n");
++ MSG(_(" Not implemented\n"));
+ break;
+ }
+ }
+@@ -543,7 +549,7 @@ void a_Capi_ccc(int Op, int Branch, int
+ Capi_dpi_conn_ref(conn);
+ conn->InfoPipe = Info;
+ if (pipe(conn->DpiPipe)) {
+- MSG(" Error with pipe\n");
++ MSG(_(" Error with pipe\n"));
+ return;
+ }
+ a_Chain_link_new(Info, a_Capi_ccc, BCK, a_IO_ccc, 3, 3);
+@@ -561,7 +567,7 @@ void a_Capi_ccc(int Op, int Branch, int
+ case OpStop:
+ case OpAbort:
+ Capi_dpi_conn_unref(Info->LocalKey);
+- MSG(" Not implemented\n");
++ MSG(_(" Not implemented\n"));
+ break;
+ }
+ } else { /* FWD */
+diff -pruN dillo-0.8.6/src/capi.h dillo-0.8.6-i18n-misc-20060709/src/capi.h
+--- dillo-0.8.6/src/capi.h 2005-10-28 01:20:06.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/capi.h 2006-05-16 01:21:08.000000000 +0900
+@@ -10,7 +10,7 @@
+ */
+ gint a_Capi_open_url(DilloWeb *web, CA_Callback_t Call, void *CbData);
+ gint a_Capi_get_buf(const DilloUrl *Url, gchar **PBuf, gint *BufSize);
+-gint a_Capi_dpi_send_cmd(DilloWeb *web, void *bw, char *cmd, char *server,
++gint a_Capi_dpi_send_cmd(DilloWeb *web, void *dd, char *cmd, char *server,
+ gint flags);
+ gint a_Capi_url_uses_dpi(gchar *url_str, gchar **server_ptr);
+
+diff -pruN dillo-0.8.6/src/colors.c dillo-0.8.6-i18n-misc-20060709/src/colors.c
+--- dillo-0.8.6/src/colors.c 2005-10-28 01:20:07.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/colors.c 2006-05-16 01:21:08.000000000 +0900
+@@ -308,7 +308,7 @@ static int Color_distance3(long c1, long
+
+ /*
+ * Return a suitable "visited link" color
+- * Return value:
++ * Return value:
+ * if candidate has good contrast with C_txt, C_lnk and C_bg -> candidate
+ * else another color (from the internal list)
+ */
+diff -pruN dillo-0.8.6/src/commands.c dillo-0.8.6-i18n-misc-20060709/src/commands.c
+--- dillo-0.8.6/src/commands.c 2005-10-28 01:20:07.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/commands.c 2006-05-16 01:21:08.000000000 +0900
+@@ -10,17 +10,23 @@
+ * (at your option) any later version.
+ */
+
++#include <config.h>
+ #include <gtk/gtk.h>
+ #include <stdio.h> /* for sprintf */
+ #include <sys/time.h> /* for gettimeofday (testing gorp only) */
+ #include <unistd.h>
+ #include <string.h> /* for strcat() */
+
++#include "intl.h"
+ #include "msg.h"
+ #include "bookmark.h"
+ #include "interface.h"
++#ifndef DISABLE_TABS
++#include "tab.h"
++#endif /* !DISABLE_TABS */
+ #include "history.h"
+ #include "nav.h"
++#include "doc.h"
+ #include "misc.h"
+ #include "commands.h"
+ #include "prefs.h"
+@@ -28,6 +34,9 @@
+ #include "capi.h"
+ #include "selection.h"
+
++#include <gdk/gdkkeysyms.h>
++#include "i18n.h"
++
+ /* FILE MENU */
+
+ /*
+@@ -43,6 +52,17 @@ void a_Commands_new_callback(GtkWidget *
+ gtk_widget_grab_focus(nbw->location);
+ }
+
++#ifndef DISABLE_TABS
++/*
++ * Create a new browser tab
++ */
++void a_Commands_new_tab_callback(GtkWidget *widget, gpointer client_data)
++{
++ BrowserWindow *bw = (BrowserWindow *) client_data;
++ a_Tab_new(bw);
++}
++
++#endif
+ /*
+ * Create and show the "Open file" dialog
+ */
+@@ -55,18 +75,26 @@ void a_Commands_openfile_callback(GtkWid
+
+ /*
+ * Create and show the "Open Url" dialog window
++ * OR (when prefs.popup_dialogs = FALSE)
++ * focus location bar and select contents
+ */
+ void a_Commands_openurl_callback(GtkWidget *widget, gpointer client_data)
+ {
+ BrowserWindow *bw = (BrowserWindow *) client_data;
+- a_Interface_open_dialog(widget, bw);
++ if (prefs.popup_dialogs)
++ a_Interface_open_dialog(widget, bw);
++ else
++ gtk_widget_grab_focus(bw->location);
+ }
+
+ /*
+- * ?
++ * Show Configurarion Script
+ */
+ void a_Commands_prefs_callback(GtkWidget *widget, gpointer client_data)
+ {
++ gchar *cmd = g_strdup_printf("dillocfg&\n");
++ system(cmd);
++ g_free(cmd);
+ }
+
+ /*
+@@ -75,9 +103,34 @@ void a_Commands_prefs_callback(GtkWidget
+ void a_Commands_close_callback(GtkWidget *widget, gpointer client_data)
+ {
+ BrowserWindow *bw = (BrowserWindow *)client_data;
++ a_Interface_findtext_dialog_close();
+ gtk_widget_destroy(bw->main_window);
+ }
+
++#ifndef DISABLE_TABS
++/*
++ * Close current browser tab, and exit dillo if it's the last one.
++ */
++void a_Commands_close_current_tab_callback(GtkWidget *widget, gpointer client_data)
++{
++ BrowserWindow *bw = (BrowserWindow *)client_data;
++ a_Tab_close(bw->dd);
++}
++
++/*
++ * Close a browser tab, and exit dillo if it's the last one.
++ *
++ * The difference with a_Commands_close_current_tab_callback is that this
++ * callback is called with a specific dd as parameter, while the former is
++ * called with only a bw
++ */
++void a_Commands_close_tab_callback(GtkWidget *widget, gpointer client_data)
++{
++ DilloDoc *dd = (DilloDoc *)client_data;
++ a_Tab_close(dd);
++}
++
++#endif /* DISABLE_TABS */
+ /*
+ * Free memory and quit dillo
+ */
+@@ -90,21 +143,32 @@ void a_Commands_exit_callback(GtkWidget
+ /* PAGE MENU */
+
+ /*
+- * Show current page's source code.
++ * Show current root document's source
+ */
+-void a_Commands_viewsource_callback (GtkWidget *widget, gpointer client_data)
++void a_Commands_viewsource_callback(GtkWidget *widget, gpointer client_data)
+ {
+- BrowserWindow *bw = (BrowserWindow *)client_data;
+- gchar *buf;
+- gint buf_size;
++ BrowserWindow *bw = (BrowserWindow *) client_data;
++ a_Commands_viewsource_doc_callback(widget, (gpointer) bw->dd);
++}
+
++/*
++ * Show document's source code.
++ */
++void a_Commands_viewsource_doc_callback (GtkWidget *widget, gpointer client_data)
++{
++ DilloDoc *dd = (DilloDoc *)client_data;
++ gchar *title, *buf;
++ gint buf_size;
++
+ /* Get page source data */
+- a_Capi_get_buf(a_History_get_url(NAV_TOP(bw)), &buf, &buf_size);
++ a_Capi_get_buf(a_History_get_url(NAV_TOP(dd)), &buf, &buf_size);
+ /* Show it */
+- a_Interface_text_window (&bw->viewsource_window,
+- "View Source", "view_source",
++ title = a_I18n_locale_to_DILLO_CHARSET(_("View Source"));
++ a_Interface_text_window (&dd->bw->viewsource_window,
++ title, "view_source",
+ buf, buf_size,
+ 530, 500);
++ g_free(title);
+ }
+
+ /*
+@@ -114,12 +178,15 @@ void a_Commands_view_page_bugs_callback
+ gpointer client_data)
+ {
+ DilloHtmlLB *html_lb = client_data;
++ gchar *title;
+
+- a_Interface_text_window (&html_lb->bw->pagebugs_window,
+- "Detected HTML errors", "page_bugs",
++ title = a_I18n_locale_to_DILLO_CHARSET(_("Detected HTML errors"));
++ a_Interface_text_window (&html_lb->dd->bw->pagebugs_window,
++ title, "page_bugs",
+ html_lb->page_bugs->str,
+ html_lb->page_bugs->len,
+ 530, 500);
++ g_free(title);
+ }
+
+ /*
+@@ -130,7 +197,7 @@ void a_Commands_selectall_callback(GtkWi
+ }
+
+ /*
+- * Create and show the "Find Text" dialog window
++ * Create and show the "Find Text" dialog window for this page
+ */
+ void a_Commands_findtext_callback(GtkWidget *widget, gpointer client_data)
+ {
+@@ -148,20 +215,56 @@ void a_Commands_print_callback(GtkWidget
+ {
+ }
+
++/* DOCUMENT (FRAME/IFRAME) MENU */
++/*
++ * Create and show the "Find Text" dialog window for this document
++ */
++void a_Commands_findtext_doc_callback(GtkWidget *widget, gpointer client_data)
++{
++ DilloDoc *dd = (DilloDoc *) client_data;
+
+-/* TOOLBAR MENU */
++ /* set search list to this document's visible children */
++ dd->bw->dd_list = a_Doc_get_visible_children(dd);
++ a_Interface_findtext_dialog( dd->bw );
++}
+
+ /*
++ * Bring up the save doc dialog
++ */
++void a_Commands_save_doc_callback(GtkWidget *widget, gpointer client_data)
++{
++ DilloDoc *dd = (DilloDoc *) client_data;
++
++ a_Menu_popup_set_url(dd->bw, a_History_get_url(NAV_TOP(dd)));
++ a_Interface_save_link_dialog(widget, dd->bw);
++}
++
++/*
++ * Show only this doc in the page
++ */
++void a_Commands_showonly_doc_callback(GtkWidget *widget, gpointer client_data)
++{
++ DilloDoc *dd = (DilloDoc *) client_data;
++
++ a_Nav_push(dd->bw->dd, a_History_get_url(NAV_TOP(dd)));
++}
++
++/* TOOLBAR MENU */
++/*
+ * Abort all active connections for this page
+ * (Downloads MUST keep flowing)
+ */
+ void a_Commands_stop_callback(GtkWidget *widget, gpointer client_data)
+ {
+ BrowserWindow *bw = client_data;
+- a_Nav_cancel_expect(bw);
+- a_Interface_stop(bw);
++ gchar *msg_enc;
++
++ a_Nav_cancel_expect(bw->dd);
++ a_Doc_stop(bw->dd);
+ a_Interface_set_button_sens(bw);
+- a_Interface_msg(bw, "Stopped");
++ msg_enc= a_I18n_locale_to_DILLO_CHARSET(_("Stopped"));
++ a_Interface_msg(bw, msg_enc);
++ g_free(msg_enc);
+ }
+
+ /*
+@@ -171,7 +274,7 @@ void a_Commands_back_callback(GtkWidget
+ {
+ BrowserWindow *bw = (BrowserWindow *) client_data;
+
+- a_Nav_back(bw);
++ a_Nav_back(bw->dd);
+ }
+
+ /*
+@@ -211,7 +314,7 @@ void a_Commands_history_callback_same_bw
+ {
+ BrowserWindow *bw = client_data;
+
+- a_Nav_jump_callback(widget, bw, 0);
++ a_Nav_jump_callback(widget, bw->dd, 0);
+ }
+
+ /*
+@@ -223,7 +326,19 @@ void a_Commands_history_callback_new_bw(
+ {
+ BrowserWindow *bw = client_data;
+
+- a_Nav_jump_callback(widget, bw, 1);
++ a_Nav_jump_callback(widget, bw->dd, 1);
++}
++
++/*
++ * Handler for menu entries in the history menus. This one is called, when
++ * the link should be opened in a new tab.
++ */
++void a_Commands_history_callback_new_tab(GtkWidget *widget,
++ gpointer client_data)
++{
++ BrowserWindow *bw = client_data;
++
++ a_Nav_jump_callback(widget, bw->dd, 2);
+ }
+
+ /*
+@@ -233,17 +348,28 @@ void a_Commands_forw_callback(GtkWidget
+ {
+ BrowserWindow *bw = (BrowserWindow *) client_data;
+
+- a_Nav_forw(bw);
++ a_Nav_forw(bw->dd);
+ }
+
+ /*
+- * Start the reload process
++ * Start the reload process for a document
++ */
++void a_Commands_reload_doc_callback(GtkWidget *widget, gpointer client_data)
++{
++ DilloDoc *dd = (DilloDoc *)client_data;
++
++ a_Nav_reload(dd);
++}
++
++/*
++ * Start the reload process for the page
+ */
+ void a_Commands_reload_callback(GtkWidget *widget, gpointer client_data)
+ {
+ BrowserWindow *bw = (BrowserWindow *) client_data;
+
+- a_Nav_reload(bw);
++ a_Interface_findtext_dialog_close();
++ a_Nav_reload(bw->dd);
+ }
+
+ /*
+@@ -253,7 +379,36 @@ void a_Commands_home_callback(GtkWidget
+ {
+ BrowserWindow *bw = (BrowserWindow *) client_data;
+
+- a_Nav_home(bw);
++ a_Nav_home(bw->dd);
++}
++
++/*
++ * Open home with new window/tab
++ */
++void a_Commands_home_nw_callback(GtkWidget *widget, gpointer client_data)
++{
++ BrowserWindow *bw = (BrowserWindow *) client_data;
++ DilloDoc *newdd;
++
++#ifndef DISABLE_TABS
++ if (prefs.tab_instead_of_window) {
++ newdd = a_Doc_new();
++ a_Tab_add(bw, newdd);
++ a_Tab_switch(newdd);
++ a_Nav_home(newdd);
++ return;
++ }
++#endif
++ {
++ gint width, height;
++ BrowserWindow *newbw;
++
++ gdk_window_get_size (bw->main_window->window,
++ &width, &height);
++ newbw = a_Interface_browser_window_new(width, height, 0);
++ newdd = newbw->dd;
++ a_Nav_home(newdd);
++ }
+ }
+
+ /*
+@@ -261,11 +416,12 @@ void a_Commands_home_callback(GtkWidget
+ */
+ void a_Commands_save_callback(GtkWidget *widget, gpointer client_data)
+ {
+- BrowserWindow *bw = (BrowserWindow *) client_data;
++ BrowserWindow *bw = (BrowserWindow *) client_data;
+
+ a_Interface_save_dialog(widget, bw);
+ }
+
++
+ /*
+ * Bring up the save link dialog
+ */
+@@ -276,15 +432,47 @@ void a_Commands_save_link_callback(GtkWi
+ a_Interface_save_link_dialog(widget, bw);
+ }
+
++#ifndef DISABLE_TABS
++/* VIEW MENU */
++void a_Commands_tab_prev_callback(GtkWidget *widget, gpointer client_data)
++{
++ BrowserWindow *bw = (BrowserWindow *) client_data;
++ gtk_notebook_prev_page(GTK_NOTEBOOK(bw->container));
++}
+
+-/* BOOKMARKS MENU */
++void a_Commands_tab_next_callback(GtkWidget *widget, gpointer client_data)
++{
++ BrowserWindow *bw = (BrowserWindow *) client_data;
++ gtk_notebook_next_page(GTK_NOTEBOOK(bw->container));
++}
+
++#endif
++/* BOOKMARKS MENU */
+ /*
+- * Add a bookmark to the current bookmark widget.
++ * Add a bookmark for the current doc to the current bookmark widget.
+ */
+ void a_Commands_addbm_callback(GtkWidget *widget, gpointer client_data)
+ {
+- a_Bookmarks_add(widget, client_data);
++ BrowserWindow *bw = (BrowserWindow *) client_data;
++
++ a_Bookmarks_add(bw->dd, a_History_get_url(NAV_TOP(bw->dd)));
++}
++
++void a_Commands_addbm_doc_callback(GtkWidget *widget, gpointer client_data)
++{
++ DilloDoc *dd = (DilloDoc *) client_data;
++
++ a_Bookmarks_add(dd, a_History_get_url(NAV_TOP(dd)));
++}
++
++/*
++ * add a bookmark for the current link
++ */
++void a_Commands_addbm_link_callback(GtkWidget *widget, gpointer client_data)
++{
++ BrowserWindow *bw = (BrowserWindow *) client_data;
++
++ a_Bookmarks_add(bw->dd, a_Menu_popup_get_url(bw));
+ }
+
+ /*
+@@ -294,7 +482,36 @@ void a_Commands_viewbm_callback(GtkWidge
+ {
+ BrowserWindow *bw = (BrowserWindow *) client_data;
+
+- a_Bookmarks_show(bw);
++ a_Bookmarks_show(bw->dd);
++}
++
++/*
++ * Open bookmarks with new window/tab
++ */
++void a_Commands_viewbm_nw_callback(GtkWidget *widget, gpointer client_data)
++{
++ BrowserWindow *bw = (BrowserWindow *) client_data;
++ DilloDoc *newdd;
++
++#ifndef DISABLE_TABS
++ if (prefs.tab_instead_of_window) {
++ newdd = a_Doc_new();
++ a_Tab_add(bw, newdd);
++ a_Tab_switch(newdd);
++ a_Bookmarks_show(newdd);
++ return;
++ }
++#endif
++ {
++ gint width, height;
++ BrowserWindow *newbw;
++
++ gdk_window_get_size (bw->main_window->window,
++ &width, &height);
++ newbw = a_Interface_browser_window_new(width, height, 0);
++ newdd = newbw->dd;
++ a_Bookmarks_show(newdd);
++ }
+ }
+
+
+@@ -309,7 +526,7 @@ void a_Commands_helphome_callback(GtkWid
+ BrowserWindow *bw = (BrowserWindow *) client_data;
+ DilloUrl *url = a_Url_new(DILLO_HOME, NULL, 0, 0, 0);
+
+- a_Nav_push(bw, url);
++ a_Nav_push(bw->dd, url);
+ a_Url_free(url);
+ }
+
+@@ -323,7 +540,7 @@ void a_Commands_open_link_callback(GtkWi
+ {
+ BrowserWindow *bw = (BrowserWindow *)client_data;
+
+- a_Nav_push(bw, a_Menu_popup_get_url(bw));
++ a_Nav_push(bw->dd, a_Menu_popup_get_url(bw));
+ }
+
+ /*
+@@ -337,10 +554,59 @@ void a_Commands_open_link_nw_callback(Gt
+
+ gdk_window_get_size (bw->main_window->window, &width, &height);
+ newbw = a_Interface_browser_window_new(width, height, 0);
+- a_Nav_push(newbw, a_Menu_popup_get_url(bw));
++ a_Nav_push(newbw->dd, a_Menu_popup_get_url(bw));
+ }
+
+ /*
++ * Duplicate current page in a new window
++ */
++void a_Commands_duplicate_callback(GtkWidget *widget, gpointer client_data)
++{
++ BrowserWindow *bw = (BrowserWindow *)client_data;
++ if(bw->dd->nav_stack == NULL) {
++ a_Commands_new_callback(widget, client_data);
++ return;
++ }
++
++ a_Menu_popup_set_url(bw, a_History_get_url(NAV_TOP(bw->dd)));
++ a_Commands_open_link_nw_callback(widget, client_data);
++}
++
++#ifndef DISABLE_TABS
++/*
++ * Open link in another tab
++ */
++void a_Commands_open_link_nw_tab_callback(GtkWidget *widget, gpointer client_data)
++{
++ BrowserWindow *bw = (BrowserWindow *)client_data;
++ DilloDoc *newdd;
++
++ newdd = a_Doc_new();
++ a_Tab_add(bw, newdd);
++
++ if (!prefs.tab_load_in_background)
++ a_Tab_switch(newdd);
++
++ a_Nav_push(newdd, a_Menu_popup_get_url(bw));
++}
++
++/*
++ * Duplicate current page in a new tab
++ */
++void a_Commands_duplicate_tab_callback(GtkWidget *widget, gpointer client_data)
++{
++ BrowserWindow *bw = (BrowserWindow *)client_data;
++ if(bw->dd->nav_stack == NULL) {
++ a_Commands_new_tab_callback(widget, client_data);
++ return;
++ }
++
++ a_Menu_popup_set_url(bw, a_History_get_url(NAV_TOP(bw->dd)));
++ a_Commands_open_link_nw_tab_callback(widget, client_data);
++}
++#endif
++
++/*
+ * Called when the user wants the popup's URL for pasting.
+ */
+ void a_Commands_select_popup_url_callback(GtkWidget *widget, gpointer data)
+@@ -349,7 +615,6 @@ void a_Commands_select_popup_url_callbac
+ a_Selection_set_selection(widget, URL_STR(a_Menu_popup_get_url(bw)));
+ }
+
+-
+ /* BUG METER POP-UP MENU */
+
+ /*
+@@ -362,7 +627,7 @@ static void Commands_ob_validate_page(Br
+ DilloUrl *url;
+
+ /* prepare the validation request URI */
+- o_url = URL_STR(a_History_get_url(NAV_TOP(bw)));
++ o_url = URL_STR(a_History_get_url(NAV_TOP(bw->dd)));
+ e_url = a_Misc_escape_chars(o_url, ":/?");
+ n_url = e_url ? e_url : o_url;
+ g_string_sprintf(gstr, fmt, n_url);
+@@ -371,7 +636,7 @@ static void Commands_ob_validate_page(Br
+ url = a_Url_new(gstr->str, NULL, 0, 0, 0);
+ g_string_free(gstr, TRUE);
+
+- a_Nav_push(bw, url);
++ a_Nav_push(bw->dd, url);
+ a_Url_free(url);
+ }
+
+@@ -407,7 +672,58 @@ void a_Commands_ob_info_callback(GtkWidg
+ const gchar *info_str = "http://www.dillo.org/help/bug_meter.html";
+ DilloUrl *url = a_Url_new(info_str, NULL, 0, 0, 0);
+
+- a_Nav_push(bw, url);
++ /* here we should un-highlight the selected text */
++ a_Nav_push(bw->dd, url);
+ a_Url_free(url);
+ }
+
++/* MAIN WINDOW */
++
++/*
++ * callback for full screen toggle
++ */
++void a_Commands_full_screen_callback (gpointer client_data)
++{
++ BrowserWindow *bw = (BrowserWindow *) client_data;
++ a_Interface_toggle_panel(bw, TRUE);
++}
++
++/*
++ * Handler for double-mouse-clicks that don't belong to the viewport.
++ */
++gint a_Commands_click_callback(gpointer client_data, GdkEventButton *event)
++{
++ BrowserWindow *bw = (BrowserWindow *) client_data;
++ if (event->type == GDK_2BUTTON_PRESS && event->button == 1)
++ a_Interface_toggle_panel(bw, TRUE);
++ return TRUE;
++}
++
++/*
++ * Handler for key presses that don't belong to the viewport.
++ * (Used to customize the interface a bit)
++ */
++void a_Commands_key_press_handler(GtkWidget *widget,
++ GdkEventKey *event,
++ gpointer client_data)
++{
++ BrowserWindow *bw = client_data;
++ switch (event->keyval) {
++ case GDK_BackSpace:
++ /* This key is handled here because GTK accel group ignores it */
++ if (event->state & GDK_SHIFT_MASK)
++ a_Commands_forw_callback(NULL, bw);
++ else
++ a_Commands_back_callback(NULL, bw);
++ break;
++ case GDK_slash:
++ /* This key is handled here because GTK accel group ignores it */
++ a_Commands_findtext_callback(NULL, bw);
++ break;
++ case GDK_Escape:
++ a_Interface_findtext_dialog_close();
++ default:
++ /* g_print(">> Key pressed!\n"); */
++ break;
++ }
++}
+diff -pruN dillo-0.8.6/src/commands.h dillo-0.8.6-i18n-misc-20060709/src/commands.h
+--- dillo-0.8.6/src/commands.h 2005-10-28 01:20:07.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/commands.h 2006-05-16 01:21:08.000000000 +0900
+@@ -11,10 +11,13 @@ void a_Commands_close_callback(GtkWidget
+ void a_Commands_exit_callback (GtkWidget *widget, gpointer client_data);
+
+ void a_Commands_viewsource_callback (GtkWidget *widget, gpointer client_data);
++void a_Commands_viewsource_doc_callback (GtkWidget *widget, gpointer client_data);
+ void a_Commands_view_page_bugs_callback (GtkWidget *button,
+ gpointer client_data);
+ void a_Commands_selectall_callback (GtkWidget *widget, gpointer client_data);
+ void a_Commands_findtext_callback (GtkWidget *widget, gpointer client_data);
++void a_Commands_findtext_doc_callback (GtkWidget *widget, gpointer client_data);
++void a_Commands_showonly_doc_callback(GtkWidget *widget, gpointer client_data);
+ void a_Commands_print_callback (GtkWidget *widget, gpointer client_data);
+
+ GtkMenu *a_Commands_forw_button_menu_creator_callback(GtkExtButton *button,
+@@ -29,22 +32,42 @@ void a_Commands_history_callback_new_bw(
+ void a_Commands_back_callback (GtkWidget *widget, gpointer client_data);
+ void a_Commands_forw_callback (GtkWidget *widget, gpointer client_data);
+ void a_Commands_reload_callback (GtkWidget *widget, gpointer client_data);
++void a_Commands_reload_doc_callback (GtkWidget *widget, gpointer client_data);
+ void a_Commands_stop_callback (GtkWidget *widget, gpointer client_data);
+ void a_Commands_home_callback (GtkWidget *widget, gpointer client_data);
++void a_Commands_home_nw_callback(GtkWidget *widget, gpointer client_data);
+ void a_Commands_save_callback (GtkWidget *widget, gpointer client_data);
++void a_Commands_save_doc_callback (GtkWidget *widget, gpointer client_data);
+ void a_Commands_save_link_callback (GtkWidget *widget, gpointer client_data);
+-
+ void a_Commands_addbm_callback (GtkWidget *widget, gpointer client_data);
++void a_Commands_addbm_doc_callback (GtkWidget *widget, gpointer client_data);
++void a_Commands_addbm_link_callback (GtkWidget *widget, gpointer client_data);
+ void a_Commands_viewbm_callback (GtkWidget *widget, gpointer client_data);
++void a_Commands_viewbm_nw_callback(GtkWidget *widget, gpointer client_data);
+
+ void a_Commands_helphome_callback (GtkWidget *widget, gpointer client_data);
+
+ void a_Commands_open_link_callback(GtkWidget *widget, gpointer client_data);
+ void a_Commands_open_link_nw_callback(GtkWidget *widget, gpointer client_data);
+ void a_Commands_select_popup_url_callback(GtkWidget *widget, gpointer data);
++void a_Commands_duplicate_callback(GtkWidget *widget, gpointer client_data);
+
+ void a_Commands_ob_w3c_callback(GtkWidget *widget, gpointer client_data);
+ void a_Commands_ob_wdg_callback(GtkWidget *widget, gpointer client_data);
+ void a_Commands_ob_info_callback(GtkWidget *widget, gpointer client_data);
+
++void a_Commands_full_screen_callback(gpointer client_data);
++gint a_Commands_click_callback(gpointer client_data, GdkEventButton *event);
++void a_Commands_key_press_handler(GtkWidget *widget,
++ GdkEventKey *event, gpointer client_data);
++
++#ifndef DISABLE_TABS
++void a_Commands_new_tab_callback(GtkWidget *widget, gpointer client_data);
++void a_Commands_close_current_tab_callback(GtkWidget *widget, gpointer client_data);
++void a_Commands_close_tab_callback(GtkWidget *widget, gpointer client_data);
++void a_Commands_tab_prev_callback (GtkWidget *widget, gpointer client_data);
++void a_Commands_tab_next_callback (GtkWidget *widget, gpointer client_data);
++void a_Commands_open_link_nw_tab_callback(GtkWidget *widget, gpointer client_data);
++void a_Commands_duplicate_tab_callback(GtkWidget *widget, gpointer client_data);
++#endif
+ #endif /* __COMMANDS_H__ */
+diff -pruN dillo-0.8.6/src/cookies.c dillo-0.8.6-i18n-misc-20060709/src/cookies.c
+--- dillo-0.8.6/src/cookies.c 2006-03-30 03:48:13.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/cookies.c 2006-05-16 01:21:08.000000000 +0900
+@@ -15,7 +15,7 @@
+ * http://www.cis.ohio-state.edu/cs/Services/rfc/rfc-text/rfc2965.txt
+ */
+
+-#define DEBUG_LEVEL 10
++#define DEBUG_LEVEL 0
+ #include "debug.h"
+
+
+@@ -78,6 +78,109 @@ static CookieControlAction Cookies_contr
+ static CookieControlAction Cookies_control_check_domain(const char *domain);
+ static int Cookie_control_init(void);
+
++static char *months[] =
++{ "",
++ "Jan", "Feb", "Mar",
++ "Apr", "May", "Jun",
++ "Jul", "Aug", "Sep",
++ "Oct", "Nov", "Dec"
++};
++
++/*
++ * Take a months name and return a number between 1-12.
++ * E.g. 'April' -> 4
++ */
++static int Cookies_get_month(const char *month_name)
++{
++ int i;
++
++ for (i = 1; i <= 12; i++) {
++ if (!g_strncasecmp(months[i], month_name, 3))
++ return i;
++ }
++ return 0;
++}
++
++/*
++ * Return a local timestamp from a GMT date string
++ * Accept: RFC-1123 | RFC-850 | ANSI asctime | Old Netscape format.
++ *
++ * Wdy, DD-Mon-YY HH:MM:SS GMT
++ * Wdy, DD-Mon-YYYY HH:MM:SS GMT
++ * Weekday, DD-Mon-YY HH:MM:SS GMT
++ * Weekday, DD-Mon-YYYY HH:MM:SS GMT
++ * Tue May 21 13:46:22 1991\n
++ * Tue May 21 13:46:22 1991
++ *
++ * (return 0 on malformed date string syntax)
++ */
++time_t a_Cookies_create_timestamp(const char *expires)
++{
++ time_t ret;
++ int day, month, year, hour, minutes, seconds;
++ gchar *cp;
++ gchar *E_msg =
++ "Expire date is malformed!\n"
++ " (should be RFC-1123 | RFC-850 | ANSI asctime)\n"
++ " Ignoring cookie: ";
++
++ cp = strchr(expires, ',');
++ if (!cp && (strlen(expires) == 24 || strlen(expires) == 25)) {
++ /* Looks like ANSI asctime format... */
++ cp = (gchar *)expires;
++ day = strtol(cp + 8, NULL, 10); /* day */
++ month = Cookies_get_month(cp + 4); /* month */
++ year = strtol(cp + 20, NULL, 10); /* year */
++ hour = strtol(cp + 11, NULL, 10); /* hour */
++ minutes = strtol(cp + 14, NULL, 10); /* minutes */
++ seconds = strtol(cp + 17, NULL, 10); /* seconds */
++
++ } else if (cp && (cp - expires == 3 || cp - expires > 5) &&
++ (strlen(cp) == 24 || strlen(cp) == 26)) {
++ /* RFC-1123 | RFC-850 format | Old Netscape format */
++ day = strtol(cp + 2, NULL, 10);
++ month = Cookies_get_month(cp + 5);
++ year = strtol(cp + 9, &cp, 10);
++ /* todo: tricky, because two digits for year IS ambiguous! */
++ year += (year < 70) ? 2000 : ((year < 100) ? 1900 : 0);
++ hour = strtol(cp + 1, NULL, 10);
++ minutes = strtol(cp + 4, NULL, 10);
++ seconds = strtol(cp + 7, NULL, 10);
++
++ } else {
++ MSG("%s%s\n", E_msg, expires);
++ return (time_t) 0;
++ }
++
++ /* Error checks --this may be overkill */
++ if (!(day > 0 && day < 32 && month > 0 && month < 13 && year > 1970 &&
++ hour >= 0 && hour < 24 && minutes >= 0 && minutes < 60 &&
++ seconds >= 0 && seconds < 60)) {
++ MSG("%s%s\n", E_msg, expires);
++ return (time_t) 0;
++ }
++
++ /* Calculate local timestamp.
++ * [stolen from Lynx... (http://lynx.browser.org)] */
++ month -= 3;
++ if (month < 0) {
++ month += 12;
++ year--;
++ }
++
++ day += (year - 1968) * 1461 / 4;
++ day += ((((month * 153) + 2) / 5) - 672);
++ ret = (time_t)((day * 60 * 60 * 24) +
++ (hour * 60 * 60) +
++ (minutes * 60) +
++ seconds);
++
++ MSG("Expires in %ld seconds, at %s",
++ (long)ret - time(NULL), ctime(&ret));
++
++ return ret;
++}
++
+ /*
+ * Return a file pointer. If the file doesn't exist, try to create it,
+ * with the optional 'init_str' as its content.
+@@ -230,7 +333,7 @@ static int Cookie_control_init(void)
+
+ /* Get a file pointer */
+ filename = a_Misc_prepend_user_home(".dillo/cookiesrc");
+- stream = Cookies_fopen(filename, "DEFAULT DENY\n");
++ stream = Cookies_fopen(filename, "DEFAULT ACCEPT\n");
+ g_free(filename);
+
+ if (!stream)
+diff -pruN dillo-0.8.6/src/cookies.h dillo-0.8.6-i18n-misc-20060709/src/cookies.h
+--- dillo-0.8.6/src/cookies.h 2005-10-28 01:20:07.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/cookies.h 2006-05-16 01:21:08.000000000 +0900
+@@ -4,12 +4,13 @@
+ #ifdef DISABLE_COOKIES
+ # define a_Cookies_get(url) g_strdup("")
+ # define a_Cookies_freeall() ;
+- void a_Cookies_init( void );
+ #else
+ char *a_Cookies_get(const DilloUrl *request_url);
+ void a_Cookies_set(GList *cookie_string, const DilloUrl *set_url);
+ void a_Cookies_init( void );
+ void a_Cookies_freeall( void );
++ void a_Cookies_init( void );
++ time_t a_Cookies_create_timestamp(const char *expires);
+ #endif
+
+ #endif /* !__COOKIES_H__ */
+diff -pruN dillo-0.8.6/src/dicache.c dillo-0.8.6-i18n-misc-20060709/src/dicache.c
+--- dillo-0.8.6/src/dicache.c 2005-10-28 01:20:07.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/dicache.c 2006-05-16 01:21:08.000000000 +0900
+@@ -18,6 +18,7 @@
+
+ #include "image.h"
+ #include "web.h"
++#include "doc.h"
+ #include "dicache.h"
+ #include "cache.h"
+ #include "interface.h"
+@@ -261,7 +262,7 @@ void a_Dicache_callback(int Op, CacheCli
+ }
+ } else if ( Op == CA_Close || Op == CA_Abort ) {
+ a_Image_close(Web->Image);
+- a_Interface_close_client(Web->bw, Client->Key);
++ a_Doc_close_client(Web->dd, Client->Key);
+ }
+ }
+
+@@ -366,7 +367,7 @@ void a_Dicache_close(DilloUrl *url, gint
+ DicEntry->cmap = NULL;
+ }
+ a_Image_close(Web->Image);
+- a_Interface_close_client(Web->bw, Client->Key);
++ a_Doc_close_client(Web->dd, Client->Key);
+ }
+
+ /* ------------------------------------------------------------------------- */
+diff -pruN dillo-0.8.6/src/dillo.c dillo-0.8.6-i18n-misc-20060709/src/dillo.c
+--- dillo-0.8.6/src/dillo.c 2006-01-03 03:20:08.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/dillo.c 2006-05-16 01:21:08.000000000 +0900
+@@ -19,6 +19,8 @@
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
++#include <config.h>
++
+ #include <stdio.h>
+ #include <gtk/gtk.h>
+
+@@ -35,10 +37,13 @@
+ #include <locale.h>
+
+ #include <config.h>
++#include "intl.h"
++#include "i18n.h"
+ #include "msg.h"
+ #include "dillo.h"
+ #include "misc.h"
+ #include "nav.h"
++#include "doc.h"
+ #include "history.h"
+ #include "bookmark.h"
+ #include "dicache.h"
+@@ -47,8 +52,12 @@
+ #include "IO/Url.h"
+ #include "prefs.h"
+ #include "interface.h"
++#ifndef DISABLE_TABS
++#include "tab.h"
++#endif /* !DISABLE_TABS */
+ #include "dw.h"
+ #include "cookies.h"
++#include "adblock.h"
+
+
+ /*
+@@ -70,6 +79,7 @@ enum {
+ DILLO_CLI_LOCAL = 1 << 5,
+ DILLO_CLI_GEOMETRY = 1 << 6,
+ DILLO_CLI_DBG_RENDERING = 1 << 7,
++ DILLO_CLI_RCFILE = 1 << 8,
+ DILLO_CLI_ERROR = 1 << 15
+ };
+
+@@ -96,27 +106,31 @@ static void Dillo_print_version(void);
+ */
+ static CLI_options Options[] = {
+ {"-x", "--xid", 1, DILLO_CLI_XID,
+- " -x, --xid XID Open first Dillo window in an existing\n"
+- " GtkSocket which window ID is XID (decimal)."},
++ N_(" -x, --xid XID Open first Dillo window in an existing\n"
++ " GtkSocket which window ID is XID (decimal).")},
+ {"-v", "--version", 0, DILLO_CLI_VERSION,
+- " -v, --version Display version info and exit."},
++ N_(" -v, --version Display version info and exit.")},
+ {"-h", "--help", 0, DILLO_CLI_HELP,
+- " -h, --help Display this help text and exit."},
++ N_(" -h, --help Display this help text and exit.")},
+ {"-f", "--fullwindow", 0, DILLO_CLI_FULLWINDOW,
+- " -f, --fullwindow Start in full window mode: hide address bar,\n"
+- " navigation buttons, menu, and status bar."},
++ N_(" -f, --fullwindow Start in full window mode: hide address bar,\n"
++ " navigation buttons, menu, and status bar.")},
+ {"-l", "--local", 0, DILLO_CLI_LOCAL,
+- " -l, --local Don't follow links for this URL(s)."},
++ N_(" -l, --local Don't follow links for this URL(s).")},
+ {"-g", "-geometry", 1, DILLO_CLI_GEOMETRY,
+- " -g, -geometry GEO Set initial window position where GEO is\n"
+- " <width>x<height>{+-}<x>{+-}<y>"},
++ N_(" -g, -geometry GEO Set initial window position where GEO is\n"
++ " <width>x<height>{+-}<x>{+-}<y>")},
+ {"-D", "--debug-rendering",
+ 0, DILLO_CLI_DBG_RENDERING,
+- " -D, --debug-rendering Draw additionaly several lines in a web page,\n"
+- " representing its structure. For debugging. "},
++ N_(" -D, --debug-rendering Draw additionaly several lines in a web page,\n"
++ " representing its structure. For debugging. ")},
++ {"-R", "--rcfile",
++ 1, DILLO_CLI_RCFILE,
++ N_(" -R, --rcfile FILE Use alternative rcfile.")},
+ {NULL, NULL, 0, 0, NULL}
+ };
+
++
+ /*
+ * Return the maximum number of option arguments
+ */
+@@ -187,7 +201,7 @@ static void Dillo_sigchld_handler(int si
+ while (1) {
+ pid = waitpid (-1, &status, WNOHANG);
+ if (pid < 0) {
+- perror ("waitpid");
++ //perror ("waitpid");
+ break;
+ }
+ if (pid == 0)
+@@ -206,6 +220,7 @@ gint main(int argc, char *argv[])
+ gchar *dir, *curr_locale;
+ DilloUrl *start_url;
+ BrowserWindow *bw;
++ DilloDoc *dd;
+ guint32 xid = 0;
+ guint options_got = 0;
+ gint idx = 0;
+@@ -214,10 +229,18 @@ gint main(int argc, char *argv[])
+ char **opt_argv = NULL;
+ gint xpos = D_GEOMETRY_DEFAULT_XPOS, ypos = D_GEOMETRY_DEFAULT_YPOS;
+ gint width = D_GEOMETRY_DEFAULT_WIDTH, height = D_GEOMETRY_DEFAULT_HEIGHT;
++ char *rcfile = NULL;
+
+ /* set locale */
+ curr_locale = g_strdup(setlocale(LC_ALL, NULL));
+ gtk_set_locale();
++#ifdef ENABLE_NLS
++ /* Initialize Gettext */
++ bindtextdomain (PACKAGE, LOCALEDIR);
++ textdomain (PACKAGE);
++#endif
++ /* get locale */
++ a_I18n_detect_DW_locale();
+ /* Initialize GUI and parse GTK related args */
+ gtk_init(&argc, &argv);
+ gdk_rgb_init();
+@@ -240,8 +263,8 @@ gint main(int argc, char *argv[])
+ if (opt_argv[0][0] >= '0' && opt_argv[0][0] <= '9') {
+ xid = strtol(opt_argv[0], NULL, 10);
+ } else {
+- g_printerr("Error: the XID must be an unsigned decimal numerical "
+- "value.\nThe offending value was: %s\n", opt_argv[0]);
++ g_printerr(_("Error: the XID must be an unsigned decimal numerical "
++ "value.\nThe offending value was: %s\n"), opt_argv[0]);
+ return -1;
+ }
+ break;
+@@ -254,15 +277,18 @@ gint main(int argc, char *argv[])
+ case DILLO_CLI_GEOMETRY:
+ if (a_Misc_parse_geometry(opt_argv[0], &xpos, &ypos, &width, &height))
+ break;
++ case DILLO_CLI_RCFILE:
++ rcfile = opt_argv[0];
++ break;
+ default:
+- g_printerr("Error in command line options.\n");
++ g_printerr(_("Error in command line options.\n"));
+ return -1;
+ break;
+ }
+ }
+
+ /* Send a delayed locale-related message */
+- MSG("Setting locale to %s...\n", curr_locale);
++ MSG(_("Setting gtk charset to %s...\n"), DW_CHARSET);
+ g_free(curr_locale);
+
+ /* This lets threads in the file module end peacefully when aborted
+@@ -278,7 +304,7 @@ gint main(int argc, char *argv[])
+ Dillo_check_home_dir(dir);
+ g_free(dir);
+
+- a_Prefs_init();
++ a_Prefs_init(rcfile);
+ a_Dns_init();
+ a_Http_init();
+ a_Mime_init();
+@@ -287,6 +313,8 @@ gint main(int argc, char *argv[])
+ a_Interface_init();
+ a_Dw_init();
+ a_Cookies_init();
++ a_Adblock_init();
++ a_Doc_init();
+
+ /* -f overrides dillorc */
+ if (options_got & DILLO_CLI_FULLWINDOW)
+@@ -308,18 +336,32 @@ gint main(int argc, char *argv[])
+
+ a_Bookmarks_init();
+
++ dd = bw->dd;
+ /* Send dillo's startup screen */
+- a_Nav_push(bw, prefs.start_page);
++ if (idx >= argc) a_Nav_push(dd, prefs.start_page);
+
+ for (i = idx; i < argc; i++) {
+- /* If more than one URL/FILE, open in new window */
+- if (i > idx)
+- bw = a_Interface_browser_window_new(prefs.width, prefs.height, 0);
++ /* If more than one URL/FILE, open in new window/tab */
++ if (i > idx) {
++#ifndef DISABLE_TABS
++ if (prefs.tab_instead_of_window) {
++ dd = a_Doc_new();
++ a_Tab_add(bw, dd);
++ if (!prefs.tab_load_in_background)
++ a_Tab_switch(dd);
++ } else {
++#endif /* !DISABLE_TABS */
++ bw = a_Interface_browser_window_new(prefs.width, prefs.height, 0);
++ dd = bw->dd;
++#ifndef DISABLE_TABS
++ }
++#endif /* !DISABLE_TABS */
++ }
+
+ start_url = Dillo_make_start_url(argv[i]);
+ if (options_got & DILLO_CLI_LOCAL)
+ a_Url_set_flags(start_url, URL_FLAGS(start_url) | URL_SpamSafe);
+- a_Nav_push(bw, start_url);
++ a_Nav_push(dd, start_url);
+ a_Url_free(start_url);
+ }
+
+@@ -334,17 +376,23 @@ gint main(int argc, char *argv[])
+ * (This can be left to the OS, but we'll do it, with a view to test
+ * and fix our memory management)
+ */
++ a_Adblock_freeall();
+ a_Cookies_freeall();
+ a_Cache_freeall();
+ a_Dicache_freeall();
+ a_Http_freeall();
++#ifdef DILLO_SSL
++ a_Https_freeall();
++#endif
+ a_Dns_freeall();
+ a_Prefs_freeall();
+ a_Dw_freeall();
+ a_History_free();
+-
++#ifdef DEBUG
++ g_mem_profile();
++#endif
+ /* a_Dpi_bye_dpid(); */
+- MSG("Dillo: normal exit!\n");
++ _MSG(_("Dillo: normal exit!\n"));
+ return 0;
+ }
+
+@@ -358,10 +406,10 @@ static void Dillo_check_home_dir(char *d
+
+ if ( stat(dir, &st) == -1 ) {
+ if ( errno == ENOENT && mkdir(dir, 0700) < 0 ) {
+- MSG("Dillo: error creating directory %s: %s\n",
+- dir, g_strerror(errno));
++ MSG(_("Dillo: error creating directory %s: %s\n"),
++ dir, strerror(errno));
+ } else
+- MSG("Dillo: error reading %s: %s\n", dir, g_strerror(errno));
++ MSG(_("Dillo: error reading %s: %s\n"), dir, strerror(errno));
+ }
+ }
+
+@@ -410,8 +458,8 @@ Dillo_get_opt(CLI_options *options, int
+
+ /* Optional arguments have opt_argc < 0 */
+ if (i < n_arg) {
+- g_printerr("Option %s requires %d argument(s)\n",
+- argv[idx - i - 1], n_arg);
++ g_printerr(_("Option %s requires %d argument(s)\n"),
++ argv[idx - i - 1], n_arg);
+ state = O_ERROR;
+ } else
+ state = O_OK;
+@@ -445,18 +493,18 @@ Dillo_get_opt(CLI_options *options, int
+ */
+ static void Dillo_print_help(CLI_options *options)
+ {
+- g_print("\nUsage: dillo [OPTIONS] [URL|FILE]...\n"
+- "Options:\n");
++ g_print(_("\nUsage: dillo [OPTIONS] [URL|FILE]...\n"
++ "Options:\n"));
+
+ for (; options && options->sh_opt; options++) {
+ if (options->help)
+- g_print("%s\n", options->help);
++ g_print("%s\n", _(options->help));
+ else
+- g_print(" %s, %s *Undocumented*\n", options->sh_opt,
++ g_print(_(" %s, %s *Undocumented*\n"), options->sh_opt,
+ options->lg_opt);
+ }
+- g_print(" URL URL to browse.\n"
+- " FILE Local FILE to view.\n");
++ g_print(_(" URL URL to browse.\n"
++ " FILE Local FILE to view.\n"));
+ g_print("\n");
+ }
+
+diff -pruN dillo-0.8.6/src/dns.c dillo-0.8.6-i18n-misc-20060709/src/dns.c
+--- dillo-0.8.6/src/dns.c 2006-03-16 02:01:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/dns.c 2006-05-16 01:21:08.000000000 +0900
+@@ -31,7 +31,8 @@
+ #include "dns.h"
+ #include "list.h"
+
+-#define DEBUG_LEVEL 5
++#define DEBUG_LEVEL 0
++//#define DEBUG_LEVEL 5
+ #include "debug.h"
+
+
+diff -pruN dillo-0.8.6/src/doc.c dillo-0.8.6-i18n-misc-20060709/src/doc.c
+--- dillo-0.8.6/src/doc.c 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/doc.c 2006-05-16 01:21:08.000000000 +0900
+@@ -0,0 +1,656 @@
++/*
++ *
++ * Copyright (C) 2003 Frank de Lange
++ *
++ * 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 of the License, or
++ * (at your option) any later version.
++ */
++
++#include "dw_widget.h"
++#include "dw_gtk_scrolled_window.h"
++#include "dw_gtk_viewport.h"
++#include "dw_container.h"
++#include "doc.h"
++#include "list.h"
++#include "debug.h"
++#include "cache.h"
++#include "nav.h"
++#include "menu.h"
++#include "interface.h"
++#include "commands.h"
++#include <math.h> /* for rint() */
++#ifndef DISABLE_TABS
++/* for a_Tab_title_set */
++#include "tab.h"
++#endif /* !DISABLE_TABS */
++#include "progressbar.h"
++#include "prefs.h"
++
++#define DEBUG_EVENT 0
++#define DEBUG_SIZE 10
++#define DEBUG_ALLOC 10
++
++/* #define DEBUG_LEVEL 0 */
++#include "debug.h"
++
++/*
++ * Local Data
++ */
++
++/* DilloDoc holds everything pertaining to a single document */
++static DilloDoc **dillo_doc;
++static gint num_dd, num_dd_max;
++
++/*
++ * Initialize global data
++ */
++void a_Doc_init(void)
++{
++ num_dd = 0;
++ num_dd_max = 16;
++ dillo_doc = NULL;
++}
++
++/* callbacks */
++
++/*
++ * callback for docwin delete
++ *
++ * this will call a_Doc_destroy for the associated DilloDoc
++ */
++void
++Doc_docwin_destroy_callback(GtkWidget *widget,
++ gpointer user_data)
++{
++ DilloDoc *dd = (DilloDoc *) user_data;
++ /* aargh... get GTK to be quit about the non-existing gadget... */
++ if (GTK_DW_SCROLLED_WINDOW(widget)->gadget)
++ GTK_DW_SCROLLED_WINDOW(widget)->gadget = NULL;
++
++ a_Doc_destroy(dd);
++}
++
++/* public functions */
++
++/*
++ * Stop all active connections for the document (except downloads)
++ */
++void a_Doc_stop(DilloDoc *dd)
++{
++ g_return_if_fail ( dd != NULL );
++ DEBUG_MSG(3, "a_Doc_stop: hi!\n");
++
++ /* Remove root clients */
++ while ( dd->NumRootClients ) {
++ a_Cache_stop_client(dd->RootClients[0]);
++ a_List_remove(dd->RootClients, 0, dd->NumRootClients);
++ }
++ /* Remove image clients */
++ while ( dd->NumImageClients ) {
++ a_Cache_stop_client(dd->ImageClients[0]);
++ a_List_remove(dd->ImageClients, 0, dd->NumImageClients);
++ }
++}
++
++/*
++ * Empty RootClients, ImageClients and PageUrls lists and
++ * reset progress bar data.
++ */
++void a_Doc_clean(DilloDoc *dd)
++{
++ g_return_if_fail ( dd != NULL );
++
++ while ( dd->NumRootClients )
++ a_List_remove(dd->RootClients, 0, dd->NumRootClients);
++
++ while ( dd->NumImageClients )
++ a_List_remove(dd->ImageClients, 0, dd->NumImageClients);
++
++ while ( dd->NumPageUrls ) {
++ a_Url_free(dd->PageUrls[0].Url);
++ a_List_remove(dd->PageUrls, 0, dd->NumPageUrls);
++ }
++
++ /* Zero image-progressbar data */
++ dd->NumImages = 0;
++ dd->NumImagesGot = 0;
++
++ /* Zero progressbar data and ready state */
++ dd->progress = 0.0;
++ dd->ready = TRUE;
++}
++
++/*
++ * Remove the cache-client from the dd list
++ * (client can be a image or a html page)
++ */
++void a_Doc_remove_client(DilloDoc *dd, gint ClientKey)
++{
++ gint i;
++ gboolean Found = FALSE;
++
++ g_return_if_fail ( dd != NULL );
++
++ for ( i = 0; !Found && i < dd->NumRootClients; ++i)
++ if ( dd->RootClients[i] == ClientKey ) {
++ a_List_remove(dd->RootClients, i, dd->NumRootClients);
++ Found = TRUE;
++ }
++
++ for ( i = 0; !Found && i < dd->NumImageClients; ++i)
++ if ( dd->ImageClients[i] == ClientKey ) {
++ a_List_remove(dd->ImageClients, i, dd->NumImageClients);
++ dd->NumImagesGot++;
++ Found = TRUE;
++ }
++
++ a_Interface_set_button_sens(dd->bw);
++}
++
++
++/*
++ * Remove the cache-client from the dd list
++ * (client can be a image or a html page)
++ */
++void a_Doc_close_client(DilloDoc *dd, gint ClientKey)
++{
++ g_return_if_fail ( dd != NULL );
++
++ a_Doc_remove_client(dd, ClientKey);
++ a_Doc_progress_update(dd);
++}
++
++/*
++ * update progress bar, set button sensitivity
++ */
++void
++a_Doc_progress_update(DilloDoc *dd)
++{
++ gchar progress[PBAR_L];
++
++ g_return_if_fail ( dd != NULL );
++
++ if(dd->bw->dd == dd) {
++ a_Interface_set_button_sens(dd->bw);
++ g_snprintf(progress, PBAR_L, "%s%d of %d",
++ PBAR_ISTR(prefs.panel_size == 1),
++ dd->NumImagesGot, dd->NumImages);
++ a_Progressbar_update(dd->bw->imgprogress, progress,
++ (dd->NumImagesGot == dd->NumImages) ? 0 : 1 );
++ g_snprintf(progress, PBAR_L, "%s%.1f Kb",
++ PBAR_PSTR(prefs.panel_size == 1),
++ (float)dd->progress);
++ a_Progressbar_update(dd->bw->progress, progress, (dd->ready) ? 0 : 1 );
++ }
++}
++
++
++/*
++ * Add a reference to the cache-client in the document's list.
++ * This helps us keep track of which are active in the document so that it's
++ * possible to abort them.
++ * (Root: Flag, whether a Root URL or not)
++ */
++void a_Doc_add_client(DilloDoc *dd, gint Key, gint Root)
++{
++ gint nc;
++
++ g_return_if_fail ( dd != NULL );
++
++ if ( Root ) {
++ nc = dd->NumRootClients;
++ a_List_add(dd->RootClients, nc, dd->MaxRootClients);
++ dd->RootClients[nc] = Key;
++ dd->NumRootClients++;
++ } else {
++ nc = dd->NumImageClients;
++ a_List_add(dd->ImageClients, nc, dd->MaxImageClients);
++ dd->ImageClients[nc] = Key;
++ dd->NumImageClients++;
++ dd->NumImages++;
++ }
++ a_Doc_progress_update(dd);
++}
++
++/*
++ * Add an URL to the document's list.
++ * This helps us keep track of page requested URLs so that it's
++ * possible to stop, abort and reload them.)
++ * Flags: Chosen from {DD_Root, DD_Image, DD_Download}
++ */
++void a_Doc_add_url(DilloDoc *dd, const DilloUrl *Url, gint Flags)
++{
++ gint nu, i;
++ gboolean found = FALSE;
++
++ g_return_if_fail ( dd != NULL && Url != NULL );
++
++ nu = dd->NumPageUrls;
++ for ( i = 0; i < nu; i++ ) {
++ if ( !a_Url_cmp(Url, dd->PageUrls[i].Url) ) {
++ found = TRUE;
++ break;
++ }
++ }
++ if ( !found ) {
++ a_List_add(dd->PageUrls, nu, dd->MaxPageUrls);
++ dd->PageUrls[nu].Url = a_Url_dup(Url);
++ dd->PageUrls[nu].Flags = Flags;
++ dd->NumPageUrls++;
++ }
++}
++
++/*
++ * set document title
++ *
++ * this will propagate to the current interface element
++ *
++ * currently just forwards to a_Tab_title_set (when tabs
++ * are compiled in) or a_Interface_set_page_title (when
++ * compiled without tab support)
++ */
++void
++a_Doc_title_set(DilloDoc *dd, gchar *title)
++{
++ g_return_if_fail ( dd != NULL && title != NULL );
++
++ /* only set title for top level document */
++ if(dd->parent == NULL)
++#ifndef DISABLE_TABS
++ a_Tab_title_set(dd, title);
++#else
++ a_Interface_set_page_title(dd->bw, title);
++#endif
++}
++
++/*
++ * set document location
++ *
++ * this will propagate to the current interface element
++ *
++ * currently just forwards to a_Interface_set_location_text
++ */
++void
++a_Doc_location_set(DilloDoc *dd, gchar *location)
++{
++ g_return_if_fail ( dd != NULL && location != NULL );
++
++ /* only set location text if this is the current tab */
++ if((dd->parent == NULL) && dd->bw->dd == dd) {
++ a_Interface_set_location_text(dd->bw, location);
++ }
++}
++
++/*
++ * destroy a document
++ */
++void a_Doc_destroy(DilloDoc *dd)
++{
++ gint i;
++
++ g_return_if_fail ( dd != NULL );
++
++ /* stop/abort open connections. */
++ a_Doc_stop(dd);
++
++ for (i = 0; i < num_dd; i++)
++ if (dillo_doc[i] == dd) {
++ dillo_doc[i] = dillo_doc[--num_dd];
++ break;
++ }
++
++ /* free nav_stack and nav_expect stuff */
++ a_Nav_free(dd);
++
++ /* unref the style */
++ if(dd->style)
++ a_Dw_style_unref(dd->style);
++
++ /* destroy pagemark menu */
++ a_Menu_pagemarks_destroy(dd);
++
++ g_free(dd->RootClients);
++ g_free(dd->ImageClients);
++
++ if(dd->name)
++ g_free(dd->name);
++
++ for (i = 0; i < dd->NumPageUrls; i++)
++ a_Url_free(dd->PageUrls[i].Url);
++ g_free(dd->PageUrls);
++ g_free(dd);
++}
++
++/*
++ * set the dd's cursor type, and update the docwin if it is
++ * mapped.
++ */
++void a_Doc_set_cursor(DilloDoc *dd, GdkCursorType CursorType)
++{
++ GdkCursor *cursor;
++
++ g_return_if_fail ( dd != NULL );
++
++ if ( dd->CursorType != CursorType ) {
++ if(GTK_WIDGET_MAPPED(dd->docwin)) {
++ cursor = gdk_cursor_new(CursorType);
++ gdk_window_set_cursor(dd->docwin->window, cursor);
++ gdk_cursor_destroy(cursor);
++ }
++ dd->CursorType = CursorType;
++ }
++}
++
++/*
++ * Get the DilloDoc which contains *docwin
++ * returns NULL if dd not found
++ */
++DilloDoc *
++a_Doc_get_by_docwin(GtkWidget *docwin)
++{
++ gint i;
++
++ g_return_val_if_fail ( docwin != NULL, NULL );
++
++ for (i = 0; i < num_dd; i++)
++ if (dillo_doc[i]->docwin == docwin)
++ return dillo_doc[i];
++
++ return NULL;
++}
++
++/*
++ * set the dd's name (used for targeted links)
++ */
++void a_Doc_set_name(DilloDoc *dd, gchar *name)
++{
++ g_return_if_fail((dd != NULL) && (name != NULL));
++
++ if (dd && name) {
++ if (dd->name)
++ g_free((gchar *)dd->name);
++ dd->name = g_strdup(name);
++ }
++}
++
++/*
++ * Get a named DilloDoc
++ *
++ * First checks if name is one of the reserved names
++ * ("_blank", "_self", "_parent" and "_top") and acts
++ * accordingly if so. If not, it searches for a document
++ * with the same root as the document which initiated the
++ * search. If still not found, it searches for the first
++ * document with the given name.
++ *
++ * returns NULL if no matching document found
++ */
++DilloDoc *
++a_Doc_get_by_name(DilloDoc *dd, gchar *name)
++{
++ gint i, n;
++ DilloDoc *parent, *document;
++ gint width, height;
++ BrowserWindow *newbw;
++
++ g_return_val_if_fail((dd != NULL) && (name != NULL), NULL);
++
++ parent = a_Doc_get_root(dd);
++ document = NULL;
++
++ /* first see if the target name is one of the reserved names,
++ * if so act appropriately */
++ if(!g_strcasecmp(name, "_blank")) {
++
++#ifndef DISABLE_TABS
++ if(prefs.tab_instead_of_window)
++ {
++ document = a_Doc_new();
++ a_Tab_add(parent->bw, document);
++ }
++ else
++#endif /* !DISABLE_TABS */
++ {
++ gdk_window_get_size(parent->bw->main_window->window, &width, &height);
++ newbw = a_Interface_browser_window_new(width, height, 0);
++ document = newbw->dd;
++ }
++ }
++ else if(!g_strcasecmp(name, "_self"))
++ document = dd;
++ else if(!g_strcasecmp(name, "_parent"))
++ document = a_Doc_get_parent(dd);
++ else if(!g_strcasecmp(name, "_top"))
++ document = a_Doc_get_root(dd);
++
++ /* if previous search did not match, first try to find document with same parent,
++ * if not found try to find first matching named document
++ */
++ if(!document)
++ for (n = 1; n >= 0; n--) {
++ for (i = 0; i < num_dd; i++)
++ if (dillo_doc[i]->name &&
++ (!g_strcasecmp(name, dillo_doc[i]->name)) &&
++ (n ? (a_Doc_get_root(dillo_doc[i]) == parent) : TRUE)) {
++ document = dillo_doc[i];
++ break;
++ }
++ if(document)
++ break;
++ }
++
++ return document;
++}
++
++/*
++ * Get the parent document
++ * For unparented documents it just returns the document itself
++ */
++DilloDoc *
++a_Doc_get_parent(DilloDoc *dd)
++{
++ DilloDoc *parent;
++
++ g_return_val_if_fail(dd != NULL, NULL);
++
++ parent = dd;
++ if(parent->parent)
++ parent = parent->parent;
++
++ return parent;
++}
++
++/*
++ * Get the root document
++ * For unparented documents it just returns the document itself.
++ */
++DilloDoc *
++a_Doc_get_root(DilloDoc *dd)
++{
++ DilloDoc *parent;
++
++ g_return_val_if_fail(dd != NULL, NULL);
++
++ parent = dd;
++ while(parent->parent)
++ parent = parent->parent;
++
++ return parent;
++}
++
++/*
++ * get all visible children (nested documents) for this document
++ *
++ * returns: pointer to GList containing all visible descendants of
++ * the document (including the document itself as the first
++ * item if it is visible. Frameset documents are not visible,
++ * so they are not included in the list).
++ *
++ * returned GList must be g_list_free()'d by caller
++ */
++GList *
++a_Doc_get_visible_children(DilloDoc *dd)
++{
++ gint i;
++ GList *children;
++
++ g_return_val_if_fail(dd != NULL, NULL);
++
++ children = NULL;
++
++ /* first add 'self' to list */
++ if(GTK_WIDGET_VISIBLE(dd->docwin))
++ children = g_list_append(children, dd);
++ for (i = 0; i < num_dd; i++)
++ if (dillo_doc[i]->parent == dd)
++ children = g_list_concat(children,
++ a_Doc_get_visible_children(dillo_doc[i]));
++
++ return children;
++}
++
++/*
++ * Set parent
++ */
++void
++a_Doc_set_parent(DilloDoc *dd, DilloDoc *parent)
++{
++ g_return_if_fail (dd != NULL && parent != NULL);
++
++ dd->parent = parent;
++ a_Doc_set_browserwindow(dd, parent->bw);
++}
++
++/*
++ * set browserwindow
++ */
++void
++a_Doc_set_browserwindow(DilloDoc *dd, BrowserWindow *bw)
++{
++ DwStyle style_attrs;
++ DwStyleFont font;
++
++ g_return_if_fail (dd != NULL && bw != NULL);
++
++ /* set dd's current window */
++ dd->bw = bw;
++
++ /* Catch key_press event */
++ gtk_signal_connect(GTK_OBJECT(GTK_BIN(dd->docwin)->child),
++ "key_press_event",
++ GTK_SIGNAL_FUNC(a_Commands_key_press_handler),
++ bw);
++
++ /* Full screen mode via double click is done in two ways: First,
++ * a feature of the selection is used, since in complex pages,
++ * getting events back to the viewport is quite difficult. Second,
++ * a simple callback, called e.g. when viewing image resources.
++ */
++ a_Selection_set_dclick_callback(
++ GTK_DW_VIEWPORT(GTK_BIN(GTK_BIN(dd->docwin)->child)->child)->selection,
++ (void(*)(gpointer))a_Commands_full_screen_callback,
++ bw);
++ /* Selection requires an owner widget */
++ a_Selection_set_owner(
++ GTK_DW_VIEWPORT(GTK_BIN(GTK_BIN(dd->docwin)->child)->child)->selection,
++ GTK_BIN(dd->docwin)->child);
++
++#if 0
++ /* deselect location bar contents when the scrolled_frame gets focus */
++ gtk_signal_connect_object(GTK_OBJECT(GTK_BIN(dd->docwin)->child),
++ "grab-focus",
++ a_Interface_content_focus_callback,
++ (gpointer) bw);
++#endif
++
++ gtk_signal_connect_object_after(GTK_OBJECT(GTK_BIN(dd->docwin)->child),
++ "button_press_event",
++ GTK_SIGNAL_FUNC(a_Commands_click_callback),
++ (gpointer) bw);
++
++ /* create style for Dw */
++ font.name = prefs.vw_fontname; /* must be defined */
++ font.size = rint(DOC_DEFAULT_FONT_SIZE * prefs.font_factor);
++ font.weight = 400;
++ font.style = DW_STYLE_FONT_STYLE_NORMAL;
++
++ a_Dw_style_init_values (&style_attrs, dd->bw->main_window->window);
++ a_Dw_style_box_set_val (&style_attrs.margin, DOC_DEFAULT_MARGIN);
++ style_attrs.font = a_Dw_style_font_new (&font);
++ style_attrs.color =
++ a_Dw_style_color_new (prefs.text_color, dd->bw->main_window->window);
++ style_attrs.background_color =
++ a_Dw_style_color_new (prefs.bg_color, dd->bw->main_window->window);
++ dd->style = a_Dw_style_new (&style_attrs, dd->bw->main_window->window);
++}
++
++/*
++ * Create a new DilloDoc
++ * (the new document is stored in dillo_doc)
++ */
++DilloDoc *
++a_Doc_new(void)
++{
++ DilloDoc *dd;
++ dd = g_new0(DilloDoc, 1);
++ a_List_add(dillo_doc, num_dd, num_dd_max);
++ dillo_doc[num_dd++] = dd;
++
++ a_Nav_init(dd);
++
++ dd->docwin = a_Dw_gtk_scrolled_window_new();
++ dd->style = NULL;
++ dd->parent = NULL;
++
++ dd->frameset = NULL;
++ dd->name = NULL;
++
++ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(dd->docwin),
++ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
++
++ /* this callback NULLs the docwin->gadget (to keep GTK from
++ * complaining when it tries to destroy a non-existing widget - there
++ * should be a check in dw_gtk_scrolled_window to see if scrolled->gadget
++ * really points at a GTK widget...
++ *
++ * it also destroys the DilloDoc by the way...
++ */
++ gtk_signal_connect(GTK_OBJECT(dd->docwin),
++ "destroy",
++ GTK_SIGNAL_FUNC(Doc_docwin_destroy_callback),
++ (gpointer) dd);
++
++ gtk_widget_show(dd->docwin);
++
++ /* initialize the rest of the bt's data. */
++ dd->redirect_level = 0;
++ dd->RootClients = NULL;
++ dd->NumRootClients = 0;
++ dd->MaxRootClients = 8;
++
++ dd->ImageClients = NULL;
++ dd->NumImageClients = 0;
++ dd->MaxImageClients = 8;
++ dd->NumImages = 0;
++ dd->NumImagesGot = 0;
++
++ dd->PageUrls = NULL;
++ dd->NumPageUrls = 0;
++ dd->MaxPageUrls = 8;
++
++ dd->auth_await_url = NULL;
++
++ dd->pagemarks_menu = NULL;
++ dd->pagemarks_last = NULL;
++
++ dd->CursorType = -1;
++
++ dd->progress = 0.0;
++ dd->ready = TRUE;
++
++ return dd;
++}
++
++
+diff -pruN dillo-0.8.6/src/doc.h dillo-0.8.6-i18n-misc-20060709/src/doc.h
+--- dillo-0.8.6/src/doc.h 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/doc.h 2006-05-16 01:21:08.000000000 +0900
+@@ -0,0 +1,35 @@
++#ifndef __DOC_H__
++#define __DOC_H__
++
++#include "browser.h" /* for DilloDoc */
++
++/* used to set default margin for documents */
++#define DOC_DEFAULT_MARGIN 5
++#define DOC_DEFAULT_FONT_SIZE 12.0
++
++/* macros for documents */
++#define DD_HAS_FOCUS(dd,bw) bw->dd == dd
++
++void a_Doc_init(void);
++void a_Doc_stop(DilloDoc *dd);
++void a_Doc_clean(DilloDoc *dd);
++void a_Doc_title_set(DilloDoc *dd, gchar *title);
++void a_Doc_location_set(DilloDoc *dd, gchar *location);
++void a_Doc_remove_client(DilloDoc *dd, gint ClientKey);
++void a_Doc_close_client(DilloDoc *dd, gint ClientKey);
++void a_Doc_add_client(DilloDoc *dd, gint Key, gint Root);
++void a_Doc_add_url(DilloDoc *dd, const DilloUrl *Url, gint Flags);
++void a_Doc_destroy(DilloDoc *dd);
++void a_Doc_set_cursor(DilloDoc *dd, GdkCursorType CursorType);
++void a_Doc_set_name(DilloDoc *dd, gchar *name);
++DilloDoc * a_Doc_get_by_name(DilloDoc *dd, gchar *name);
++void a_Doc_set_parent(DilloDoc *dd, DilloDoc *parent);
++void a_Doc_set_browserwindow(DilloDoc *dd, BrowserWindow *bw);
++void a_Doc_progress_update(DilloDoc *dd);
++GList * a_Doc_get_visible_children(DilloDoc *dd);
++DilloDoc * a_Doc_get_by_docwin(GtkWidget *docwin);
++DilloDoc * a_Doc_get_parent(DilloDoc *dd);
++DilloDoc * a_Doc_get_root(DilloDoc *dd);
++DilloDoc * a_Doc_new(void);
++
++#endif /* __DOC_H__ */
+diff -pruN dillo-0.8.6/src/dpiapi.c dillo-0.8.6-i18n-misc-20060709/src/dpiapi.c
+--- dillo-0.8.6/src/dpiapi.c 2006-01-12 21:19:02.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/dpiapi.c 2006-05-16 01:21:09.000000000 +0900
+@@ -30,9 +30,9 @@ static char *dialog_server = NULL;
+ /*
+ * Generic callback function for dpip dialogs.
+ */
+-static void Dpiapi_dialog_answer_cb(BrowserWindow *bw)
++static void Dpiapi_dialog_answer_cb(DilloDoc *dd)
+ {
+- DialogAnswer *answer = bw->question_dialog_answer;
++ DialogAnswer *answer = dd->bw->question_dialog_answer;
+ char *cmd, numstr[16];
+
+ /* make dpip tag with the answer */
+@@ -41,18 +41,18 @@ static void Dpiapi_dialog_answer_cb(Brow
+ "answer", "dialog", numstr);
+
+ /* Send answer */
+- a_Capi_dpi_send_cmd(NULL, bw, cmd, dialog_server, 0);
++ a_Capi_dpi_send_cmd(NULL, dd, cmd, dialog_server, 0);
+
+ /* cleanup */
+- bw->question_dialog_data = NULL;
++ dd->bw->question_dialog_data = NULL;
+ g_free(answer->this);
+- bw->question_dialog_answer = NULL;
++ dd->bw->question_dialog_answer = NULL;
+ }
+
+ /*
+ * Process a dpip "dialog" command from any dpi.
+ */
+-void a_Dpiapi_dialog(BrowserWindow *bw, char *server, char *dpip_tag)
++void a_Dpiapi_dialog(DilloDoc *dd, char *server, char *dpip_tag)
+ {
+ char *question, *alt1, *alt2, *alt3, *alt4, *alt5;
+ size_t dpip_tag_len;
+@@ -73,7 +73,7 @@ void a_Dpiapi_dialog(BrowserWindow *bw,
+ alt5 = a_Dpip_get_attr(dpip_tag, dpip_tag_len, "alt5");
+
+ a_Interface_question_dialog(
+- bw, question, TRUE,
++ dd, question, TRUE,
+ alt1, alt2, alt3, alt4, alt5,
+ (GtkSignalFunc) Dpiapi_dialog_answer_cb);
+
+diff -pruN dillo-0.8.6/src/dpiapi.h dillo-0.8.6-i18n-misc-20060709/src/dpiapi.h
+--- dillo-0.8.6/src/dpiapi.h 2005-10-28 01:20:07.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/dpiapi.h 2006-05-16 01:21:09.000000000 +0900
+@@ -1,3 +1,3 @@
+
+-void a_Dpiapi_dialog(BrowserWindow *bw, char *server, char *dpip_tag);
++void a_Dpiapi_dialog(DilloDoc *dd, char *server, char *dpip_tag);
+
+diff -pruN dillo-0.8.6/src/dw_gtk_scrolled_frame.c dillo-0.8.6-i18n-misc-20060709/src/dw_gtk_scrolled_frame.c
+--- dillo-0.8.6/src/dw_gtk_scrolled_frame.c 2006-01-03 03:18:34.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/dw_gtk_scrolled_frame.c 2006-05-16 01:21:08.000000000 +0900
+@@ -451,25 +451,29 @@ static gint Dw_gtk_scrolled_frame_key_pr
+ case GDK_Up:
+ case GDK_KP_Up:
+ Dw_gtk_scrolled_frame_move_by (frame, 0,
+- - frame->vadjustment->step_increment);
++ - frame->vadjustment->step_increment
++ * ((event->state & GDK_SHIFT_MASK)?12:2));
+ return TRUE;
+
+ case GDK_Down:
+ case GDK_KP_Down:
+ Dw_gtk_scrolled_frame_move_by (frame, 0,
+- + frame->vadjustment->step_increment);
++ + frame->vadjustment->step_increment
++ * ((event->state & GDK_SHIFT_MASK)?12:2));
+ return TRUE;
+
+ case GDK_Left:
+ case GDK_KP_Left:
+ Dw_gtk_scrolled_frame_move_by (frame,
+- - frame->hadjustment->step_increment, 0);
++ - frame->hadjustment->step_increment
++ * ((event->state & GDK_SHIFT_MASK)?12:2), 0);
+ return TRUE;
+
+ case GDK_Right:
+ case GDK_KP_Right:
+ Dw_gtk_scrolled_frame_move_by (frame,
+- + frame->hadjustment->step_increment, 0);
++ + frame->hadjustment->step_increment
++ * ((event->state & GDK_SHIFT_MASK)?12:2), 0);
+ return TRUE;
+
+ case GDK_Tab:
+diff -pruN dillo-0.8.6/src/dw_gtk_scrolled_window.c dillo-0.8.6-i18n-misc-20060709/src/dw_gtk_scrolled_window.c
+--- dillo-0.8.6/src/dw_gtk_scrolled_window.c 2005-10-28 01:20:09.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/dw_gtk_scrolled_window.c 2006-05-16 01:21:08.000000000 +0900
+@@ -15,6 +15,7 @@
+ #include "dw_gtk_scrolled_frame.h"
+ #include "dw_gtk_viewport.h"
+ #include "findtext.h"
++#include "dw_tooltip.h"
+ #include <gtk/gtk.h>
+
+ #include "debug.h"
+@@ -242,6 +243,7 @@ static void Dw_gtk_scrolled_window_size_
+ GtkWidget *hscrollbar, *vscrollbar;
+ gint gx, gy;
+
++ a_Dw_tooltip_count_reset();
+ GTK_WIDGET_CLASS(parent_class)->size_allocate (widget, allocation);
+ widget->allocation = *allocation;
+
+@@ -465,7 +467,7 @@ gboolean a_Dw_gtk_scrolled_window_search
+ void a_Dw_gtk_scrolled_window_reset_search (GtkDwScrolledWindow *scrolled)
+ {
+ GtkWidget *viewport;
+-
++ //g_print("%d\n",(int)gtk_type_check_object_cast ((GtkTypeObject*) scrolled, gtk_bin_get_type ()));
+ viewport = GTK_BIN(GTK_BIN(scrolled)->child)->child;
+ a_Findtext_reset_search (GTK_DW_VIEWPORT(viewport)->findtext_state);
+ }
+diff -pruN dillo-0.8.6/src/dw_gtk_viewport.c dillo-0.8.6-i18n-misc-20060709/src/dw_gtk_viewport.c
+--- dillo-0.8.6/src/dw_gtk_viewport.c 2005-10-28 01:20:09.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/dw_gtk_viewport.c 2006-05-16 01:21:08.000000000 +0900
+@@ -12,6 +12,7 @@
+ #include <gtk/gtk.h>
+ #include "msg.h"
+ #include "dw_gtk_viewport.h"
++#include "dw_tooltip.h"
+ #include "dw_container.h"
+ #include "list.h"
+
+@@ -454,6 +455,7 @@ static gint Dw_gtk_viewport_enter_notify
+ static gint Dw_gtk_viewport_leave_notify (GtkWidget *widget,
+ GdkEventCrossing *event)
+ {
++ a_Dw_tooltip_count_reset();
+ /* There will anyway be no Dw widget, thus this simple call */
+ return Dw_widget_mouse_event (NULL, widget, 0, 0, NULL);
+ }
+@@ -478,7 +480,8 @@ void Dw_gtk_viewport_update_background (
+ /* The toplevel widget should always have a defined background color,
+ * except at the beginning. Searching a defined background is not
+ * necessary. */
+- if (viewport->child && viewport->child->style &&
++ if (GTK_LAYOUT(viewport)->bin_window &&
++ viewport->child && viewport->child->style &&
+ viewport->child->style->background_color)
+ gdk_window_set_background (GTK_LAYOUT(viewport)->bin_window,
+ &viewport->child->style->background_color
+@@ -831,10 +834,10 @@ gchar* p_Dw_gtk_viewport_add_anchor (DwW
+ anchor->name = g_strdup (name);
+ anchor->widget = widget;
+ anchor->y = y;
+-
++
+ g_hash_table_insert (viewport->anchors_table, anchor->name, anchor);
+ Dw_gtk_viewport_update_anchor (viewport);
+-
++
+ return anchor->name;
+ }
+ }
+@@ -888,14 +891,14 @@ void p_Dw_gtk_viewport_remove_anchor (Dw
+ g_return_if_fail (widget->viewport != NULL);
+ viewport = GTK_DW_VIEWPORT (widget->viewport);
+
+- exists =
++ exists =
+ g_hash_table_lookup_extended (viewport->anchors_table, name, NULL,
+ &tmp_anchor);
+ g_return_if_fail(exists);
+
+ anchor = tmp_anchor;
+ g_return_if_fail(anchor->widget == widget);
+-
++
+ g_hash_table_remove (viewport->anchors_table, name);
+ g_free (anchor->name);
+ g_free (anchor);
+diff -pruN dillo-0.8.6/src/dw_image.c dillo-0.8.6-i18n-misc-20060709/src/dw_image.c
+--- dillo-0.8.6/src/dw_image.c 2005-10-28 01:20:10.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/dw_image.c 2006-05-16 01:21:08.000000000 +0900
+@@ -10,9 +10,16 @@
+ * (at your option) any later version.
+ */
+
++#include "i18n_gtk.h"
+ #include "msg.h"
+ #include "dw_image.h"
+ #include "dw_gtk_viewport.h"
++#ifndef DISABLE_ANTI_ALIAS
++ #include <X11/Xlib.h>
++ #include <X11/Xft/Xft.h>
++ #undef Status
++ #include <gdk/gdkx.h>
++#endif
+ #include "prefs.h"
+ #include "dw_marshal.h"
+ #include "list.h"
+@@ -87,11 +94,15 @@ enum
+ LINK_PRESSED,
+ LINK_RELEASED,
+ LINK_CLICKED,
++ IMAGE_PRESSED,
+ LAST_SIGNAL
+ };
+
+ static guint image_signals[LAST_SIGNAL] = { 0 };
+ static DwWidgetClass *parent_class;
++#ifndef DISABLE_ANTI_ALIAS
++static XftDraw *xftdraw = NULL;
++#endif
+
+
+ /*
+@@ -205,6 +216,14 @@ static void Dw_image_class_init (DwImage
+ GTK_TYPE_BOOL,
+ 4, GTK_TYPE_INT, GTK_TYPE_INT, GTK_TYPE_INT,
+ GTK_TYPE_GDK_EVENT);
++ image_signals[IMAGE_PRESSED] =
++ gtk_signal_new ("image_pressed",
++ GTK_RUN_FIRST,
++ object_class->type,
++ GTK_SIGNAL_OFFSET (DwImageClass, image_pressed),
++ gtk_marshal_NONE__POINTER,
++ GTK_TYPE_NONE,
++ 1, GTK_TYPE_GDK_EVENT);
+ gtk_object_class_add_signals (object_class, image_signals, LAST_SIGNAL);
+
+ widget_class = (DwWidgetClass*)klass;
+@@ -245,6 +264,9 @@ static void Dw_image_size_request (DwWid
+ DwRequisition *requisition)
+ {
+ DwImage *image;
++#ifndef DISABLE_ANTI_ALIAS
++ XGlyphInfo info;
++#endif
+
+ image = DW_IMAGE (widget);
+
+@@ -255,8 +277,14 @@ static void Dw_image_size_request (DwWid
+ requisition->descent = 0;
+ } else {
+ if (image->alt_text_width == -1)
++#ifndef DISABLE_ANTI_ALIAS
++ XftTextExtentsUtf8(GDK_DISPLAY(), widget->style->font->font,
++ image->alt_text, strlen(image->alt_text), &info);
++ image->alt_text_width = info.xOff;
++#else
+ image->alt_text_width =
+ gdk_string_width (widget->style->font->font, image->alt_text);
++#endif
+
+ requisition->width = image->alt_text_width;
+ requisition->ascent = widget->style->font->font->ascent;
+@@ -306,6 +334,11 @@ static void Dw_image_draw (DwWidget *wid
+ guchar *buffer, *bstart;
+ int i;
+ gboolean selected = FALSE;
++#ifndef DISABLE_ANTI_ALIAS
++ XGlyphInfo info;
++ XftColor xftcolor;
++ GdkWindow *window;
++#endif
+
+ if (image->buffer) {
+ p_Dw_widget_draw_widget_box (widget, area, FALSE);
+@@ -339,8 +372,14 @@ static void Dw_image_draw (DwWidget *wid
+ } else {
+ if (image->alt_text && image->alt_text[0]) {
+ if (image->alt_text_width == -1)
++#ifndef DISABLE_ANTI_ALIAS
++ XftTextExtentsUtf8(GDK_DISPLAY(), widget->style->font->font,
++ image->alt_text, strlen(image->alt_text), &info);
++ image->alt_text_width = info.xOff;
++#else
+ image->alt_text_width =
+ gdk_string_width (widget->style->font->font, image->alt_text);
++#endif
+
+ if (widget->allocation.width < image->alt_text_width ||
+ widget->allocation.ascent + widget->allocation.descent
+@@ -349,13 +388,43 @@ static void Dw_image_draw (DwWidget *wid
+ p_Dw_widget_will_clip (widget);
+
+ p_Dw_widget_draw_widget_box (widget, area, FALSE);
+- gdk_draw_string
++#ifndef DISABLE_ANTI_ALIAS
++ if (!xftdraw) {
++ window = DW_WIDGET_WINDOW (widget);
++ xftdraw = XftDrawCreate(GDK_DISPLAY(),
++ GDK_WINDOW_XWINDOW(window),
++ DefaultVisual(GDK_DISPLAY(), DefaultScreen(GDK_DISPLAY())),
++ DefaultColormap(GDK_DISPLAY(), DefaultScreen(GDK_DISPLAY())));
++#ifdef XFT_VERSION
++ if (XftDrawDrawable(xftdraw) != GDK_WINDOW_XWINDOW(window)) {
++#else
++ if (xftdraw->drawable != GDK_WINDOW_XWINDOW(window)) {
++#endif
++ XftDrawChange(xftdraw, GDK_WINDOW_XWINDOW(window));
++ }
++ }
++ xftcolor.pixel = widget->style->color->color.pixel;
++ xftcolor.color.red = widget->style->color->color.red;
++ xftcolor.color.green = widget->style->color->color.green;
++ xftcolor.color.blue = widget->style->color->color.blue;
++ xftcolor.color.alpha = 0xffff;
++ XftDrawStringUtf8(xftdraw,
++ &xftcolor,
++ widget->style->font->font,
++ p_Dw_widget_x_world_to_viewport (widget, widget->allocation.x),
++ p_Dw_widget_y_world_to_viewport (widget, widget->allocation.y)
++ + widget->style->font->font->ascent,
++ image->alt_text,
++ strlen(image->alt_text));
++#else
++ a_I18n_gdk_draw_string
+ (DW_WIDGET_WINDOW (widget), widget->style->font->font,
+ widget->style->color->gc,
+ p_Dw_widget_x_world_to_viewport (widget, widget->allocation.x),
+ p_Dw_widget_y_world_to_viewport (widget, widget->allocation.y)
+ + widget->style->font->font->ascent,
+ image->alt_text);
++#endif
+ }
+ }
+
+@@ -387,6 +456,7 @@ static gboolean Dw_image_leave_notify (D
+ DwImage *image = DW_IMAGE (widget);
+ gboolean return_val = FALSE;
+
++ a_Dw_tooltip_count_reset();
+ if (image->hover_link != -1) {
+ image->hover_link = -1;
+ gtk_signal_emit (GTK_OBJECT (widget), image_signals[LINK_ENTERED],
+@@ -416,6 +486,14 @@ static gboolean Dw_image_button_press (D
+ gtk_signal_emit (GTK_OBJECT (widget), image_signals[LINK_PRESSED],
+ image->pressed_link, link_x, link_y, event,
+ &return_val);
++
++#if 0
++ if (DW_WIDGET(widget)->button_sensitive) {
++ gtk_signal_emit (GTK_OBJECT (widget), image_signals[IMAGE_PRESSED], event);
++ return TRUE;
++ } else
++ return FALSE;
++#endif
+
+ return return_val;
+ }
+diff -pruN dillo-0.8.6/src/dw_image.h dillo-0.8.6-i18n-misc-20060709/src/dw_image.h
+--- dillo-0.8.6/src/dw_image.h 2005-10-28 01:20:10.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/dw_image.h 2006-05-16 01:21:08.000000000 +0900
+@@ -69,6 +69,10 @@ struct _DwImageClass
+ gboolean (*link_clicked) (DwImage *page,
+ gint link, gint x, gint y,
+ GdkEventButton *event);
++#if 1
++ void (*image_pressed) (DwImage *page,
++ GdkEventButton *event);
++#endif
+ };
+
+
+diff -pruN dillo-0.8.6/src/dw_page.c dillo-0.8.6-i18n-misc-20060709/src/dw_page.c
+--- dillo-0.8.6/src/dw_page.c 2006-01-03 03:17:52.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/dw_page.c 2006-05-16 01:21:08.000000000 +0900
+@@ -19,8 +19,10 @@
+ #include <ctype.h>
+ #include <string.h>
+ #include <stdio.h>
++#include <errno.h>
++#include <iconv.h>
+
+-#include <gtk/gtk.h>
++#include "i18n_gtk.h"
+
+ #include "msg.h"
+ #include "list.h"
+@@ -29,6 +31,7 @@
+ #include "dw_gtk_viewport.h"
+
+ #include "prefs.h"
++#include "i18n.h"
+
+ #define DEBUG_REWRAP_LEVEL 0
+ #define DEBUG_SIZE_LEVEL 10
+@@ -203,6 +206,12 @@ static void Dw_page_init (DwPage *page)
+ {
+ DW_WIDGET_SET_FLAGS (page, DW_USES_HINTS);
+
++#ifndef DISABLE_ANTI_ALIAS
++ page->xftdraw = NULL;
++#endif
++ if (strcmp(RENDER_CHARSET, DILLO_CHARSET) == 0)
++ page->it = (iconv_t)-1;
++ else page->it = iconv_open(RENDER_CHARSET, DILLO_CHARSET);
+ page->list_item = FALSE;
+ page->inner_padding = 0;
+ page->line1_offset = 0;
+@@ -361,6 +370,11 @@ static void Dw_page_destroy (GtkObject *
+ parent_class->destroy. */
+ page->num_words = 0;
+ page->num_lines = 0;
++#ifndef DISABLE_ANTI_ALIAS
++ if (page->xftdraw)
++ XftDrawDestroy(page->xftdraw);
++#endif
++ if (page->it != (iconv_t)-1) iconv_close(page->it);
+
+ DBG_OBJ_SET_NUM(page, "num_lines", page->num_lines);
+
+@@ -626,7 +640,7 @@ static void Dw_page_size_allocate (DwWid
+ p_Dw_widget_size_allocate (word->content.data.widget,
+ &child_allocation);
+ break;
+-
++
+ case DW_CONTENT_ANCHOR:
+ p_Dw_gtk_viewport_change_anchor
+ (widget, word->content.data.anchor,
+@@ -1316,6 +1330,10 @@ static void Dw_page_draw_line (DwPage *p
+ GdkWindow *window;
+ GdkGC *gc, *hl_gc;
+ DwStyleColor *page_bg_color, *word_bg_color;
++#ifndef DISABLE_ANTI_ALIAS
++ XftColor xftcolor;
++ XGlyphInfo info;
++#endif
+
+ /* Here's an idea on how to optimize this routine to minimize the number
+ * of calls to gdk_draw_string:
+@@ -1328,7 +1346,7 @@ static void Dw_page_draw_line (DwPage *p
+ widget = DW_WIDGET (page);
+ window = DW_WIDGET_WINDOW (widget);
+ page_bg_color = p_Dw_widget_get_bg_color (widget);
+-
++
+ x_widget = Dw_page_line_total_x_offset(page,line);
+ x_viewport =
+ p_Dw_widget_x_world_to_viewport (widget,
+@@ -1338,6 +1356,21 @@ static void Dw_page_draw_line (DwPage *p
+ p_Dw_widget_y_world_to_viewport (widget,
+ widget->allocation.y + y_widget);
+ y_viewport_base = y_viewport + line->ascent;
++#ifndef DISABLE_ANTI_ALIAS
++ if (page->xftdraw == 0) {
++ page->xftdraw = XftDrawCreate(GDK_DISPLAY(),
++ GDK_WINDOW_XWINDOW(window),
++ DefaultVisual(GDK_DISPLAY(), DefaultScreen(GDK_DISPLAY())),
++ DefaultColormap(GDK_DISPLAY(), DefaultScreen(GDK_DISPLAY())));
++ }
++ #ifdef XFT_VERSION
++ if (XftDrawDrawable(page->xftdraw) != GDK_WINDOW_XWINDOW(window)) {
++ #else
++ if (page->xftdraw->drawable != GDK_WINDOW_XWINDOW(window)) {
++ #endif
++ XftDrawChange(page->xftdraw, GDK_WINDOW_XWINDOW(window));
++ }
++#endif
+
+ for (word_index = line->first_word; word_index < line->last_word;
+ word_index++) {
+@@ -1352,7 +1385,12 @@ static void Dw_page_draw_line (DwPage *p
+ y_widget);
+
+ switch (word->content.type) {
+- case DW_CONTENT_TEXT:
++ case DW_CONTENT_TEXT: {
++ /* Change from internal charset to render charset. */
++ gchar *word_str = word->content.data.text;
++ if (page->it != (iconv_t)-1)
++ word->content.data.text = a_I18n_convert_raw(&page->it,
++ word->content.data.text, strlen(word->content.data.text));
+ if (word->style->background_color)
+ word_bg_color = word->style->background_color;
+ else
+@@ -1388,9 +1426,24 @@ static void Dw_page_draw_line (DwPage *p
+ word->size.ascent + word->size.descent,
+ FALSE);
+
++#ifndef DISABLE_ANTI_ALIAS
++ /* draw string using Xft */
++ xftcolor.pixel = word->style->color->color.pixel;
++ xftcolor.color.red = word->style->color->color.red;
++ xftcolor.color.green = word->style->color->color.green;
++ xftcolor.color.blue = word->style->color->color.blue;
++ xftcolor.color.alpha = 0xffff;
++ XftDrawStringUtf8(page->xftdraw,
++ &xftcolor,
++ word->style->font->font,
++ x_viewport, y_viewport_base + diff,
++ word->content.data.text,
++ strlen(word->content.data.text));
++#else
+ gdk_draw_string (window, word->style->font->font, gc,
+ x_viewport, y_viewport_base + diff,
+ word->content.data.text);
++#endif
+
+ /* underline */
+ if (word->style->text_decoration & DW_STYLE_TEXT_DECORATION_UNDERLINE)
+@@ -1428,6 +1481,20 @@ static void Dw_page_draw_line (DwPage *p
+ if (word->hl_start[layer] != -1) {
+ word_len = strlen (word->content.data.text);
+ eff_hl_end = MIN (word_len, word->hl_end[layer]);
++#ifndef DISABLE_ANTI_ALIAS
++ XftTextExtentsUtf8(GDK_DISPLAY(),
++ word->style->font->font,
++ word->content.data.text,
++ word->hl_start[layer],
++ &info);
++ start_hl = x_viewport + info.xOff;
++ XftTextExtentsUtf8(GDK_DISPLAY(),
++ word->style->font->font,
++ word->content.data.text + word->hl_start[layer],
++ eff_hl_end - word->hl_start[layer],
++ &info);
++ width_hl = info.xOff;
++#else
+ start_hl = x_viewport +
+ gdk_text_width (word->style->font->font,
+ word->content.data.text,
+@@ -1437,6 +1504,7 @@ static void Dw_page_draw_line (DwPage *p
+ word->content.data.text
+ + word->hl_start[layer],
+ eff_hl_end - word->hl_start[layer]);
++#endif
+
+ /* If the space after this word highlighted, and this word
+ * is not the last one in this line, highlight also the
+@@ -1459,11 +1527,24 @@ static void Dw_page_draw_line (DwPage *p
+
+ /* Highlight the text. */
+ hl_gc = word->style->color->inverse_gc;
++#ifndef DISABLE_ANTI_ALIAS
++ xftcolor.pixel = word->style->color->inverse_color.pixel;
++ xftcolor.color.red = word->style->color->inverse_color.red;
++ xftcolor.color.green = word->style->color->inverse_color.green;
++ xftcolor.color.blue = word->style->color->inverse_color.blue;
++ xftcolor.color.alpha = 0xffff;
++ XftDrawStringUtf8(page->xftdraw,
++ &xftcolor,
++ word->style->font->font,
++ start_hl, y_viewport_base + diff,
++ word->content.data.text + word->hl_start[layer],
++ eff_hl_end - word->hl_start[layer]);
++#else
+ gdk_draw_text (window, word->style->font->font, hl_gc,
+- start_hl, y_viewport_base + diff,
+- word->content.data.text
+- + word->hl_start[layer],
+- eff_hl_end - word->hl_start[layer]);
++ start_hl, y_viewport_base + diff,
++ word->content.data.text + word->hl_start[layer],
++ eff_hl_end - word->hl_start[layer]);
++#endif
+
+ /* underline and strike-through */
+ if (word->style->text_decoration
+@@ -1484,8 +1565,12 @@ static void Dw_page_draw_line (DwPage *p
+ }
+ }
+ }
++ if (page->it != (iconv_t)-1) {
++ g_free(word->content.data.text);
++ word->content.data.text = word_str;
++ }
+ break;
+-
++ }
+ case DW_CONTENT_WIDGET:
+ child = word->content.data.widget;
+ if (p_Dw_widget_intersect (child, area, &child_area))
+@@ -1668,11 +1753,14 @@ static gboolean Dw_page_send_selection_e
+ {
+ DwIterator *it;
+ DwPageLine *line, *last_line;
+- gint32 next_word_start_x, word_start_x, word_x, next_word_x, yfirst, ylast;
++ gint32 next_word_start_x, word_start_x, word_x, next_word_x = 0, yfirst, ylast;
+ gint char_pos = 0, word_index, line_index, link;
+ DwPageWord *word;
+ gboolean found;
+ gboolean within_content;
++#ifndef DISABLE_ANTI_ALIAS
++ XGlyphInfo info;
++#endif
+
+ DEBUG_MSG (DEBUG_EVENT_LEVEL,
+ "Dw_page_send_selection_event: x = %d, y = %d\n", x, y);
+@@ -1747,20 +1835,40 @@ static gboolean Dw_page_send_selection_e
+ if (word->content.type == DW_CONTENT_TEXT) {
+ /* Search the character the mouse pointer is in.
+ * next_word_x is the right side of this character. */
++ int len = strlen(word->content.data.text);
+ char_pos = 0;
+- while ((next_word_x = word_start_x +
+- gdk_text_width(word->style->font->font,
++#ifndef DISABLE_ANTI_ALIAS
++ while (char_pos < len){
++ XftTextExtentsUtf8(GDK_DISPLAY(),
++ word->style->font->font,
++ word->content.data.text,
++ char_pos,
++ &info);
++ if(!((next_word_x = word_start_x + info.xOff) <= x))
++ break;
++ char_pos++;
++ }
++ /* The left side of this character. */
++ XftTextExtentsUtf8(GDK_DISPLAY(),
++ word->style->font->font,
++ word->content.data.text,
++ char_pos - 1,
++ &info);
++ word_x = word_start_x + info.xOff;
++#else
++ while (((next_word_x = word_start_x +
++ a_I18n_gdk_text_width(word->style->font->font,
+ word->content.data.text,
+ char_pos))
+- <= x)
+- char_pos++;
+-
++ <= x) && char_pos < len)
++ char_pos++;
+ /* The left side of this character. */
+ word_x =
+- word_start_x + gdk_text_width (word->style->font->font,
++ word_start_x + a_I18n_gdk_text_width (word->style->font->font,
+ word->content.data.text,
+ char_pos - 1);
+
++#endif
+ /* If the mouse pointer is left from the middle, use the left
+ * position, otherwise, use the right one. */
+ if (x <= (word_x + next_word_x) / 2)
+@@ -1860,6 +1968,7 @@ static gboolean Dw_page_motion_notify (D
+ if (word_index == -1) {
+ page->hover_link = -1;
+ page->hover_tooltip = NULL;
++ a_Dw_tooltip_count_reset();
+ } else {
+ page->hover_link = page->words[word_index].style->x_link;
+ page->hover_tooltip = page->words[word_index].style->x_tooltip;
+@@ -1965,7 +2074,25 @@ static DwPageWord *Dw_page_add_word (DwP
+ static void Dw_page_calc_text_size (DwPage *page, char *text, DwStyle *style,
+ DwRequisition *size)
+ {
+- size->width = gdk_string_width (style->font->font, text);
++#ifndef DISABLE_ANTI_ALIAS
++ XGlyphInfo info;
++#endif
++ gchar *render_str = text;
++
++ /* Change from internal charset to render charset. */
++ if (page->it != (iconv_t)-1) {
++ render_str = a_I18n_convert_raw(&page->it, text, strlen(text));
++ }
++
++#ifndef DISABLE_ANTI_ALIAS
++ XftTextExtentsUtf8(GDK_DISPLAY(),
++ style->font->font, render_str, strlen(render_str), &info);
++ size->width = info.xOff;
++#else
++ size->width = gdk_string_width (style->font->font, render_str);
++#endif
++ if (page->it != (iconv_t)-1) g_free(render_str);
++
+ size->ascent = style->font->font->ascent;
+ size->descent = style->font->font->descent;
+
+@@ -2060,7 +2187,7 @@ gboolean a_Dw_page_add_anchor (DwPage *p
+ y = Dw_page_line_total_y_offset_i (page, page->num_lines - 1);
+
+ /*
+- * Since an anchor does not take any space, it is safe to call
++ * Since an anchor does not take any space, it is safe to call
+ * p_Dw_gtk_viewport_add_anchor already here.
+ */
+ if ((copy = p_Dw_gtk_viewport_add_anchor(DW_WIDGET(page), name, y)) == NULL)
+@@ -2070,7 +2197,7 @@ gboolean a_Dw_page_add_anchor (DwPage *p
+ word->content.type = DW_CONTENT_ANCHOR;
+ word->content.data.anchor = copy;
+ Dw_page_word_wrap (page, page->num_words - 1);
+-
++
+ DBG_OBJ_ARRSET_STR (page, "words.%d.content.anchor", page->num_words - 1,
+ word->content.data.anchor);
+
+@@ -2485,6 +2612,9 @@ static void Dw_page_iterator_get_allocat
+ DwPageLine *line;
+ gint wi, l;
+ gint32 diff;
++#ifndef DISABLE_ANTI_ALIAS
++ XGlyphInfo info;
++#endif
+
+ line = &page->lines[Dw_page_find_line_of_word (page, ii->pos)];
+ word = &page->words[ii->pos];
+@@ -2493,10 +2623,19 @@ static void Dw_page_iterator_get_allocat
+ if (start == 0)
+ diff = 0;
+ else {
+- if (word->content.type == DW_CONTENT_TEXT)
+- diff = gdk_text_width (word->style->font->font,
++ if (word->content.type == DW_CONTENT_TEXT) {
++#ifndef DISABLE_ANTI_ALIAS
++ XftTextExtentsUtf8(GDK_DISPLAY(),
++ word->style->font->font,
++ word->content.data.text,
++ start,
++ &info);
++ diff = info.xOff;
++#else
++ diff = a_I18n_gdk_text_width (word->style->font->font,
+ word->content.data.text, start);
+- else
++#endif
++ } else
+ diff = word->size.width;
+ }
+
+@@ -2520,9 +2659,19 @@ static void Dw_page_iterator_get_allocat
+ allocation->width = word->size.width;
+ else if (end >= l)
+ allocation->width = word->size.width + word->eff_space;
+- else
+- allocation->width = gdk_text_width (word->style->font->font,
++ else {
++#ifndef DISABLE_ANTI_ALIAS
++ XftTextExtentsUtf8(GDK_DISPLAY(),
++ word->style->font->font,
++ word->content.data.text,
++ end,
++ &info);
++ allocation->width = info.xOff;
++#else
++ allocation->width = a_I18n_gdk_text_width (word->style->font->font,
+ word->content.data.text, end);
++#endif
++ }
+ } else {
+ if (end == 1)
+ allocation->width = word->size.width;
+diff -pruN dillo-0.8.6/src/dw_page.h dillo-0.8.6-i18n-misc-20060709/src/dw_page.h
+--- dillo-0.8.6/src/dw_page.h 2005-10-28 01:20:10.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/dw_page.h 2006-05-16 01:21:08.000000000 +0900
+@@ -5,6 +5,7 @@
+ #define __DW_PAGE_H__
+
+ #include <gdk/gdk.h>
++#include <iconv.h>
+ #include "dw_container.h"
+ #include "url.h"
+
+@@ -72,7 +73,10 @@ struct _DwPageWord {
+ struct _DwPage
+ {
+ DwContainer container;
+-
++#ifndef DISABLE_ANTI_ALIAS
++ XftDraw *xftdraw;
++#endif
++ iconv_t it;
+ /* These fields provide some ad-hoc-functionality, used by sub-classes. */
+ gboolean list_item; /* If TRUE, the first word of the page is treated
+ specially (search in source). */
+diff -pruN dillo-0.8.6/src/dw_style.c dillo-0.8.6-i18n-misc-20060709/src/dw_style.c
+--- dillo-0.8.6/src/dw_style.c 2006-01-29 22:42:35.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/dw_style.c 2006-05-16 01:21:08.000000000 +0900
+@@ -11,6 +11,8 @@
+
+ #include "dw_style.h"
+ #include "dw_widget.h"
++#include "prefs.h"
++#include "i18n.h"
+
+ #include <gdk/gdk.h>
+ #include <stdio.h>
+@@ -298,6 +300,26 @@
+ style_char_1 = "o";
+ style_char_2 = "i";
+ break;
++ if (font->weight >= 500 && font->style != DW_STYLE_FONT_STYLE_NORMAL)
++ sprintf(fontname, "%s:style=Bold%s,Semibold%s:size=%d%s%s",
++ font->name, style_char_1, style_char_1, font->size,
++ strlen(font->lang) > 1 ? ":lang=" : "",
++ strlen(font->lang) > 1 ? font->lang : "");
++ else if (font->style != DW_STYLE_FONT_STYLE_NORMAL)
++ sprintf(fontname, "%s:style=%s,Medium%s:size=%d%s%s",
++ font->name, style_char_1, style_char_1, font->size,
++ strlen(font->lang) > 1 ? ":lang=" : "",
++ strlen(font->lang) > 1 ? font->lang : "");
++ else if (font->weight >= 500)
++ sprintf(fontname, "%s:style=Bold,Semibold:size=%d%s%s",
++ font->name, font->size,
++ strlen(font->lang) > 1 ? ":lang=" : "",
++ strlen(font->lang) > 1 ? font->lang : "");
++ else
++ sprintf(fontname, "%s:style=Roman,Regular,Medium:size=%d%s%s",
++ font->name, font->size,
++ strlen(font->lang) > 1 ? ":lang=" : "",
++ strlen(font->lang) > 1 ? font->lang : "");
+ }
+
+ sprintf (fontname, "-*-%s-%s-%s-*-*-%d-*-75-75-*-*-iso8859-1",
+@@ -330,6 +352,12 @@
+ }
+
+ if (font->font == NULL) {
++ /* Try another platform-font that should be available. (fam83) */
++ font->font =
++ gdk_font_load
++ ("-misc-fixed-medium-r-semicondensed--13-100-100-100-c-60-iso8859-1");
++ }
++ if (font->font == NULL) {
+ /* Can't load any suitable font! */
+ g_warning ("Can't load any ISO8859-1 font!?! :(");
+ font->font =
+@@ -354,6 +382,7 @@
+ return (font1->size == font2->size &&
+ font1->weight == font2->weight &&
+ font1->style == font2->style &&
++ strncmp (font1->lang, font2->lang, 5) == 0 &&
+ strcmp (font1->name, font2->name) == 0);
+ }
+
+@@ -365,11 +394,15 @@
+ {
+ const DwStyleFont *font = (DwStyleFont*) key;
+ guint h;
++ gchar *lang;
+
+ h = g_str_hash (font->name);
+ h = (h << 5) - h + font->size;
+ h = (h << 5) - h + font->weight;
+ h = (h << 5) - h + font->style;
++ lang = g_strndup(font->lang, 5);
++ h = h + g_str_hash (lang);
++ g_free(lang);
+ return h;
+ }
+
+@@ -398,6 +431,7 @@
+ font->weight = font_attrs->weight;
+ font->style = font_attrs->style;
+ font->name = g_strdup (font_attrs->name);
++ strncpy(font->lang, font_attrs->lang, 6);
+ font->ref_count = 0;
+
+ Dw_style_font_realize (font, try_all);
+diff -pruN dillo-0.8.6/src/dw_style.h dillo-0.8.6-i18n-misc-20060709/src/dw_style.h
+--- dillo-0.8.6/src/dw_style.h 2005-10-28 01:20:10.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/dw_style.h 2006-05-16 01:21:08.000000000 +0900
+@@ -3,6 +3,13 @@
+
+ #include <gdk/gdktypes.h>
+ #include "dw_tooltip.h"
++#ifndef DISABLE_ANTI_ALIAS
++ #include <X11/Xlib.h>
++ #include <X11/Xft/Xft.h>
++ #undef Status
++ #include <gdk/gdkx.h>
++#endif
++
+
+ #define DW_STYLE_ALIGN_LEFT 1
+ #define DW_STYLE_ALIGN_RIGHT 2
+@@ -146,6 +153,35 @@ typedef gint DwStyleLength;
+
+ #define DW_STYLE_LENGTH_AUTO 0
+
++#ifndef DISABLE_ANTI_ALIAS
++ #ifndef XFT_VERSION
++ #ifndef XFT_DRAW_N_SRC
++ #define XFT_DRAW_N_SRC 2
++ #endif
++struct _XftDraw {
++ Display *dpy;
++ Drawable drawable;
++ Visual *visual; /* NULL for bitmaps */
++ Colormap colormap;
++ Region clip;
++ Bool core_set;
++ Bool render_set;
++ Bool render_able;
++ struct {
++ Picture pict;
++ struct {
++ Picture pict;
++ XRenderColor color;
++ } src[XFT_DRAW_N_SRC];
++ } render;
++ struct {
++ GC draw_gc;
++ unsigned long fg;
++ Font font;
++ } core;
++};
++ #endif
++#endif
+
+ struct _DwStyleBox
+ {
+@@ -189,13 +225,18 @@ struct _DwStyleFont
+ gint weight;
+ DwStyleFontStyle style;
+
+-#ifdef USE_TYPE1
+- gint t1fontid;
++#ifndef DISABLE_ANTI_ALIAS
++ XftFont *font;
+ #else
+- GdkFont *font;
++ #ifdef USE_TYPE1
++ gint t1fontid;
++ #else
++ GdkFont *font;
++ #endif
+ #endif
+ gint space_width;
+ gint x_height;
++ gchar lang[6];
+ };
+
+
+diff -pruN dillo-0.8.6/src/dw_table.c dillo-0.8.6-i18n-misc-20060709/src/dw_table.c
+--- dillo-0.8.6/src/dw_table.c 2005-10-28 01:20:11.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/dw_table.c 2006-05-16 01:21:08.000000000 +0900
+@@ -1559,7 +1559,7 @@ static void Dw_table_sub_calc_col_widths
+ num_nf_cols = num_cols;
+ }
+
+- diff_spacing =
++ diff_spacing =
+ (sub->end_col - sub->start_col - 1)
+ * DW_WIDGET(sub->table)->style->border_spacing;
+
+diff -pruN dillo-0.8.6/src/dw_table_cell.c dillo-0.8.6-i18n-misc-20060709/src/dw_table_cell.c
+--- dillo-0.8.6/src/dw_table_cell.c 2005-10-28 01:20:11.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/dw_table_cell.c 2006-05-16 01:21:08.000000000 +0900
+@@ -22,6 +22,7 @@
+ */
+
+ #include "dw_table_cell.h"
++#include "i18n_gtk.h"
+
+ /*#define DEBUG_LEVEL 1*/
+ #include "debug.h"
+@@ -147,6 +148,9 @@ static gint32 Dw_table_cell_get_value (D
+ DwTableCell *cell = DW_TABLE_CELL (aligned_page);
+ DwPage *page = DW_PAGE (aligned_page);
+ DwPageWord *word;
++#ifndef DISABLE_ANTI_ALIAS
++ XGlyphInfo info;
++#endif
+ int i, word_index;
+ gint32 w;
+
+@@ -168,8 +172,17 @@ static gint32 Dw_table_cell_get_value (D
+ }
+ } else {
+ word = &page->words[cell->char_word_index];
+- w += gdk_text_width (word->style->font->font, word->content.data.text,
++#ifndef DISABLE_ANTI_ALIAS
++ XftTextExtentsUtf8(GDK_DISPLAY(),
++ word->style->font->font,
++ word->content.data.text,
++ cell->char_word_pos,
++ &info);
++ w += info.xOff;
++#else
++ w += a_I18n_gdk_text_width (word->style->font->font, word->content.data.text,
+ cell->char_word_pos);
++#endif
+ }
+
+ return w;
+diff -pruN dillo-0.8.6/src/dw_tooltip.c dillo-0.8.6-i18n-misc-20060709/src/dw_tooltip.c
+--- dillo-0.8.6/src/dw_tooltip.c 2005-10-28 01:20:11.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/dw_tooltip.c 2006-05-16 01:21:08.000000000 +0900
+@@ -14,6 +14,7 @@
+
+ #include <gtk/gtk.h>
+ #include "dw_tooltip.h"
++#include "i18n.h"
+
+ /* The amount of space around the text, including the border. */
+ #define PADDING 4
+@@ -22,17 +23,20 @@
+ * tooltip. */
+ #define DIFF 10
+
+-static gboolean Dw_tooltip_draw (DwTooltip *tooltip);
++static gint pop_count = 0;
++static gboolean Dw_tooltip_draw (DwTooltip *tooltip);
+
+ static DwTooltip *Dw_tooltip_new0 (const char *text, gint ref_count)
+ {
+ DwTooltip *tooltip;
+
++ pop_count = 0;
++
+ tooltip = g_new (DwTooltip, 1);
+ tooltip->ref_count = ref_count;
+ tooltip->window = NULL;
+ tooltip->timeout_id = 0;
+- tooltip->text = g_strdup (text);
++ tooltip->text = a_I18n_DW_CHARSET_from_DILLO_CHARSET(text, -1);
+ return tooltip;
+ }
+
+@@ -70,11 +74,14 @@ void Dw_tooltip_destroy (DwTooltip *tool
+ void a_Dw_tooltip_on_enter (DwTooltip *tooltip)
+ {
+ a_Dw_tooltip_on_leave (tooltip);
+- tooltip->timeout_id = gtk_timeout_add (500, (GtkFunction)Dw_tooltip_draw,
++
++ /* Since it is called by switch without knowing why,
++ * 2 times of the beginning ignore.
++ */
++ tooltip->timeout_id = gtk_timeout_add (500, (GtkFunction)Dw_tooltip_draw,
+ tooltip);
+ }
+
+-
+ /*
+ * Call this function if the pointer has left the widget/word.
+ */
+@@ -91,12 +98,17 @@ void a_Dw_tooltip_on_leave (DwTooltip *t
+ }
+ }
+
++void a_Dw_tooltip_count_reset ()
++{
++ pop_count = 0;
++}
+
+ /*
+ * Call this function if the pointer has moved within the widget/word.
+ */
+ void a_Dw_tooltip_on_motion (DwTooltip *tooltip)
+ {
++ pop_count++;
+ a_Dw_tooltip_on_enter (tooltip);
+ }
+
+@@ -112,6 +124,8 @@ static gboolean Dw_tooltip_draw (DwToolt
+ x = px + DIFF;
+ y = py + DIFF;
+
++ if (pop_count == 0)
++ return FALSE;
+ tooltip->window = gtk_window_new (GTK_WINDOW_POPUP);
+ gtk_widget_set_app_paintable (tooltip->window, TRUE);
+ gtk_widget_set_name (tooltip->window, "gtk-tooltips");
+@@ -161,5 +175,3 @@ static gboolean Dw_tooltip_draw (DwToolt
+ return FALSE;
+ }
+
+-
+-
+diff -pruN dillo-0.8.6/src/dw_tooltip.h dillo-0.8.6-i18n-misc-20060709/src/dw_tooltip.h
+--- dillo-0.8.6/src/dw_tooltip.h 2005-10-28 01:20:11.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/dw_tooltip.h 2006-05-16 01:21:08.000000000 +0900
+@@ -19,12 +19,14 @@ DwTooltip* a_Dw_tooltip_new_no_ref (cons
+ void a_Dw_tooltip_on_enter (DwTooltip *tooltip);
+ void a_Dw_tooltip_on_leave (DwTooltip *tooltip);
+ void a_Dw_tooltip_on_motion (DwTooltip *tooltip);
++void a_Dw_tooltip_count_reset();
+
+ #define a_Dw_tooltip_ref(tooltip) ((tooltip)->ref_count++)
+ #define a_Dw_tooltip_unref(tooltip) if (--((tooltip)->ref_count) == 0) \
+ Dw_tooltip_destroy (tooltip)
+-
++
+ /* Don't use this function directly! */
+ void Dw_tooltip_destroy (DwTooltip *tooltip);
+
++
+ #endif /* __DW_TOOLTIP_H__ */
+diff -pruN dillo-0.8.6/src/findtext.c dillo-0.8.6-i18n-misc-20060709/src/findtext.c
+--- dillo-0.8.6/src/findtext.c 2005-10-28 01:20:11.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/findtext.c 2006-05-16 01:21:09.000000000 +0900
+@@ -55,6 +55,7 @@
+ #include "debug.h"
+ #include <string.h>
+ #include <ctype.h>
++#include "i18n.h"
+
+ /*
+ * Searches needle in haystack, according to type:
+@@ -297,8 +298,6 @@ static gboolean Findtext_search0 (Findte
+ return FALSE;
+ }
+
+-
+-
+ FindtextResult a_Findtext_search (FindtextState *state,
+ gchar *str,
+ gboolean case_sens)
+@@ -306,6 +305,7 @@ FindtextResult a_Findtext_search (Findte
+ int i;
+ gboolean new_key = FALSE, was_highlighted = FALSE, first_trial;
+ FindtextResult result2;
++ char *encStr;
+
+ if (state->widget == NULL)
+ return FINDTEXT_NOT_FOUND;
+@@ -324,19 +324,21 @@ FindtextResult a_Findtext_search (Findte
+ state->hl_iterator = NULL;
+ }
+
++ encStr = a_Misc_add_space(str);
++
+ /* If the key (or the widget) changes (including case sensitivity),
+ the search is started from the beginning. */
+ if (state->keystr == NULL || state->case_sens != case_sens ||
+- strcmp(state->keystr, str) != 0) {
++ strcmp(state->keystr, encStr) != 0) {
+ new_key = TRUE;
+
+ g_free (state->keystr);
+- state->keystr = g_strdup (str);
++ state->keystr = g_strdup (encStr);
+ state->case_sens = case_sens;
+
+ if (state->key != NULL)
+ Findtext_key_destroy (state->key);
+- state->key = Findtext_key_new (str, case_sens);
++ state->key = Findtext_key_new (encStr, case_sens);
+
+ if (state->iterator)
+ a_Dw_word_iterator_free (state->iterator);
+@@ -413,6 +415,7 @@ FindtextResult a_Findtext_search (Findte
+ g_assert (result2 == FINDTEXT_SUCCESS);
+ return FINDTEXT_RESTART;
+ }
++ g_free(encStr);
+ }
+
+ /*
+@@ -437,3 +440,5 @@ void a_Findtext_reset_search (FindtextSt
+ state->hl_iterator = NULL;
+ }
+ }
++
++/* vim: set ts=3 sw=3 sts=3 expandtab:*/
+diff -pruN dillo-0.8.6/src/gtk_ext_button.c dillo-0.8.6-i18n-misc-20060709/src/gtk_ext_button.c
+--- dillo-0.8.6/src/gtk_ext_button.c 2005-10-28 01:20:12.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/gtk_ext_button.c 2006-05-16 01:21:09.000000000 +0900
+@@ -68,14 +68,14 @@ GtkWidget *a_Gtk_ext_button_new_with_lab
+ {
+ GtkWidget *button;
+ GtkWidget *label_widget;
+-
++
+ button = a_Gtk_ext_button_new ();
+ label_widget = gtk_label_new (label);
+ gtk_misc_set_alignment (GTK_MISC (label_widget), 0.5, 0.5);
+-
++
+ gtk_container_add (GTK_CONTAINER (button), label_widget);
+ gtk_widget_show (label_widget);
+-
++
+ return button;
+ }
+
+@@ -166,7 +166,7 @@ static void Gtk_ext_button_init(GtkExtBu
+ static void Gtk_ext_button_destroy (GtkObject *object)
+ {
+ GtkExtButton *button;
+-
++
+ button = GTK_EXT_BUTTON (object);
+ if (button->menu_signal_id != -1)
+ gtk_signal_disconnect (GTK_OBJECT (button->active_menu),
+@@ -213,10 +213,10 @@ static gint Gtk_ext_button_button_press
+ GtkExtButton *ext_button;
+ GtkStateType new_state;
+ GtkMenu *menu;
+-
++
+ button = GTK_BUTTON (widget);
+ ext_button = GTK_EXT_BUTTON (widget);
+-
++
+ if (ext_button->pressed_button) {
+ /* Already a button pressed. */
+ return FALSE;
+@@ -224,11 +224,11 @@ static gint Gtk_ext_button_button_press
+ ext_button->action[event->button - 1]
+ != GTK_EXT_BUTTON_INACTIVE) {
+ ext_button->pressed_button = event->button;
+-
++
+ gtk_grab_add (widget);
+ button->button_down = TRUE;
+ new_state = (button->in_button ? GTK_STATE_ACTIVE : GTK_STATE_NORMAL);
+-
++
+ if (GTK_WIDGET_STATE (button) != new_state) {
+ gtk_widget_set_state (GTK_WIDGET (button), new_state);
+ gtk_widget_queue_draw (GTK_WIDGET (button));
+@@ -248,7 +248,7 @@ static gint Gtk_ext_button_button_press
+ case GTK_EXT_BUTTON_MENU:
+ menu = ext_button->action_data[event->button - 1].menu;
+ break;
+-
++
+ case GTK_EXT_BUTTON_MENU_CREATOR:
+ menu =
+ ext_button->action_data[event->button - 1].creator.func (
+@@ -256,7 +256,7 @@ static gint Gtk_ext_button_button_press
+ ext_button->action_data[event->button - 1].creator.data);
+ break;
+ }
+-
++
+ if (menu) {
+ ext_button->active_menu = menu;
+ gtk_menu_popup (menu, NULL, widget, Gtk_ext_button_position_menu,
+@@ -267,7 +267,7 @@ static gint Gtk_ext_button_button_press
+ Gtk_ext_button_menu_hidden),
+ (gpointer) button);
+ }
+-
++
+ return TRUE;
+ } else
+ return FALSE;
+@@ -322,10 +322,10 @@ static gint Gtk_ext_button_enter_notify
+ GtkButton *button;
+ GtkWidget *event_widget;
+ GtkStateType new_state;
+-
++
+ button = GTK_BUTTON (widget);
+ event_widget = gtk_get_event_widget ((GdkEvent*) event);
+-
++
+ if ((event_widget == widget) && (event->detail != GDK_NOTIFY_INFERIOR)) {
+ button->in_button = TRUE;
+ new_state =
+@@ -350,10 +350,10 @@ static gint Gtk_ext_button_leave_notify
+ GtkButton *button;
+ GtkExtButton *ext_button;
+ GtkWidget *event_widget;
+-
++
+ button = GTK_BUTTON (widget);
+ event_widget = gtk_get_event_widget ((GdkEvent*) event);
+-
++
+ if ((event_widget == widget) &&
+ (event->detail != GDK_NOTIFY_INFERIOR)) {
+ button->in_button = FALSE;
+@@ -392,12 +392,12 @@ static void Gtk_ext_button_menu_hidden (
+ ext_button->active_menu = NULL;
+
+ gtk_grab_remove (GTK_WIDGET (ext_button));
+-
++
+ button = GTK_BUTTON (ext_button);
+ button->in_button = FALSE;
+ button->button_down = FALSE;
+ ext_button->pressed_button = 0;
+-
++
+ gtk_widget_set_state (GTK_WIDGET (button), GTK_STATE_NORMAL);
+ gtk_widget_queue_draw (GTK_WIDGET (button));
+ }
+diff -pruN dillo-0.8.6/src/gtk_ext_button.h dillo-0.8.6-i18n-misc-20060709/src/gtk_ext_button.h
+--- dillo-0.8.6/src/gtk_ext_button.h 2005-10-28 01:20:12.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/gtk_ext_button.h 2006-05-16 01:21:09.000000000 +0900
+@@ -21,7 +21,7 @@ extern "C" {
+
+ typedef struct _GtkExtButton GtkExtButton;
+ typedef struct _GtkExtButtonClass GtkExtButtonClass;
+-
++
+ typedef GtkMenu* (GtkExtButtonMenuCreator)(GtkExtButton *button,
+ gpointer data);
+
+diff -pruN dillo-0.8.6/src/gtk_ext_menu.c dillo-0.8.6-i18n-misc-20060709/src/gtk_ext_menu.c
+--- dillo-0.8.6/src/gtk_ext_menu.c 2005-10-28 01:20:12.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/gtk_ext_menu.c 2006-05-16 01:21:09.000000000 +0900
+@@ -25,7 +25,7 @@
+ *
+ * GtkExtMenu changes dealing with release events a bit: if the affected
+ * menu item is a GtkExtMenuItem, it is told to handle this event specially.
+- * The GtkExtMenuItem will simply change its activate signal temporally.
++ * The GtkExtMenuItem will simply change its activate signal temporally.
+ *
+ * (This is a bit ugly, but still cleaner than listening to the low-level
+ * events, like "button-release-event".)
+@@ -64,10 +64,10 @@ GtkType a_Gtk_ext_menu_get_type (void)
+ (GtkArgGetFunc) NULL,
+ (GtkClassInitFunc)NULL
+ };
+-
++
+ type = gtk_type_unique (gtk_menu_get_type (), &info);
+ }
+-
++
+ return type;
+ }
+
+@@ -78,9 +78,9 @@ GtkType a_Gtk_ext_menu_get_type (void)
+ static void Gtk_ext_menu_class_init (GtkExtMenuClass *klass)
+ {
+ GtkWidgetClass *gtk_widget_class;
+-
++
+ parent_class = gtk_type_class (gtk_menu_get_type ());
+-
++
+ gtk_widget_class = (GtkWidgetClass*) klass;
+ gtk_widget_class->button_release_event = Gtk_ext_menu_button_release;
+ }
+@@ -115,7 +115,7 @@ static gint Gtk_ext_menu_is_item (GtkMen
+ g_return_val_if_fail (menu_shell != NULL, FALSE);
+ g_return_val_if_fail (GTK_IS_MENU_SHELL (menu_shell), FALSE);
+ g_return_val_if_fail (child != NULL, FALSE);
+-
++
+ parent = child->parent;
+ while (parent && GTK_IS_MENU_SHELL (parent)) {
+ if (parent == (GtkWidget*) menu_shell)
+@@ -134,12 +134,12 @@ static GtkWidget* Gtk_ext_menu_get_item
+ GdkEvent *event)
+ {
+ GtkWidget *menu_item;
+-
++
+ menu_item = gtk_get_event_widget ((GdkEvent*) event);
+-
++
+ while (menu_item && !GTK_IS_MENU_ITEM (menu_item))
+ menu_item = menu_item->parent;
+-
++
+ if (menu_item && Gtk_ext_menu_is_item (menu_shell, menu_item))
+ return menu_item;
+ else
+diff -pruN dillo-0.8.6/src/gtk_ext_menu_item.h dillo-0.8.6-i18n-misc-20060709/src/gtk_ext_menu_item.h
+--- dillo-0.8.6/src/gtk_ext_menu_item.h 2005-10-28 01:20:12.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/gtk_ext_menu_item.h 2006-05-16 01:21:09.000000000 +0900
+@@ -28,7 +28,7 @@ struct _GtkExtMenuItem
+ struct _GtkExtMenuItemClass
+ {
+ GtkMenuItemClass parent_class;
+-
++
+ void (*activate1) (GtkExtMenuItem *menu_item);
+ void (*activate2) (GtkExtMenuItem *menu_item);
+ void (*activate3) (GtkExtMenuItem *menu_item);
+diff -pruN dillo-0.8.6/src/gtk_menu_title.c dillo-0.8.6-i18n-misc-20060709/src/gtk_menu_title.c
+--- dillo-0.8.6/src/gtk_menu_title.c 2005-10-28 01:20:12.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/gtk_menu_title.c 2006-05-16 01:21:09.000000000 +0900
+@@ -137,7 +137,7 @@ static void Gtk_menu_title_size_request
+ BORDER_SPACING);
+ requisition->height = 2 * (GTK_CONTAINER (widget)->border_width +
+ widget->style->klass->ythickness);
+-
++
+ if (menu_title->label) {
+ requisition->width +=
+ gdk_string_width (widget->style->font, GTK_MENU_TITLE(widget)->label);
+diff -pruN dillo-0.8.6/src/gtkframeset.c dillo-0.8.6-i18n-misc-20060709/src/gtkframeset.c
+--- dillo-0.8.6/src/gtkframeset.c 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/gtkframeset.c 2006-05-16 01:21:09.000000000 +0900
+@@ -0,0 +1,1305 @@
++/*
++ * File: gtkframeset.c
++ * Copyright (C) 2003 Frank de Lange <frank@unternet.org>
++ *
++ * a frameset widget for GTK - The GIMP Toolkit
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Library General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library 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
++ * Library General Public License for more details.
++ *
++ * You should have received a copy of the GNU Library General Public
++ * License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ * Boston, MA 02111-1307, USA.
++ */
++
++#include "gtkframeset.h"
++#include <string.h> /* for strpbrk() */
++#include <locale.h> /* for setlocale */
++
++#define DEBUG_ALLOC 10
++#define DEBUG_EVENT 10
++/* #define DEBUG_LEVEL 10 */
++#include "debug.h"
++
++/* child args */
++enum
++{
++ CHILD_ARG_0,
++ CHILD_ARG_ROW_ATTACH,
++ CHILD_ARG_COL_ATTACH,
++ CHILD_ARG_X_PADDING,
++ CHILD_ARG_Y_PADDING,
++ CHILD_ARG_BORDER,
++ CHILD_ARG_NORESIZE
++};
++
++/* declarations */
++static void gtk_frameset_class_init (GtkFramesetClass *klass);
++static void gtk_frameset_init (GtkFrameset *frameset);
++static void gtk_frameset_finalize (GtkObject *object);
++static void gtk_frameset_size_allocate (GtkWidget *widget,
++ GtkAllocation *allocation);
++static void gtk_frameset_map (GtkWidget *widget);
++static void gtk_frameset_unmap (GtkWidget *widget);
++static void gtk_frameset_draw (GtkWidget *widget,
++ GdkRectangle *area);
++static gint gtk_frameset_expose (GtkWidget *widget,
++ GdkEventExpose *event);
++static void gtk_frameset_set_child_arg (GtkContainer *container,
++ GtkWidget *child,
++ GtkArg *arg,
++ guint arg_id);
++static void gtk_frameset_get_child_arg (GtkContainer *container,
++ GtkWidget *child,
++ GtkArg *arg,
++ guint arg_id);
++static GtkType gtk_frameset_child_type (GtkContainer *container);
++static void gtk_frameset_add (GtkContainer *container,
++ GtkWidget *widget);
++static void gtk_frameset_remove (GtkContainer *container,
++ GtkWidget *widget);
++static void gtk_frameset_forall (GtkContainer *container,
++ gboolean include_internals,
++ GtkCallback callback,
++ gpointer callback_data);
++static void gtk_frameset_realize (GtkWidget *widget);
++static void gtk_frameset_unrealize (GtkWidget *widget);
++static gint gtk_frameset_button_press (GtkWidget *widget,
++ GdkEventButton *event);
++static gint gtk_frameset_button_release (GtkWidget *widget,
++ GdkEventButton *event);
++static gint gtk_frameset_motion (GtkWidget *widget,
++ GdkEventMotion *event);
++static gint gtk_frameset_enter (GtkWidget *widget,
++ GdkEventCrossing *event);
++static gint gtk_frameset_leave (GtkWidget *widget,
++ GdkEventCrossing *event);
++
++/* private functions */
++static void gtk_frameset_size_allocate_init (GtkFrameset *frameset);
++static void gtk_frameset_size_allocate_pass1(GtkFrameset *frameset);
++static GSList *gtk_frameset_get_multi_length(const gchar *attr);
++static void gtk_frameset_calculate_lengths (GtkFrameset *frameset);
++static gint gtk_frameset_set_resize_rowcol (GtkWidget *widget,
++ gint x,
++ gint y);
++
++static GtkContainerClass *parent_class = NULL;
++
++/* standard GTK function */
++GtkType
++gtk_frameset_get_type (void)
++{
++ static GtkType frameset_type = 0;
++
++ if (!frameset_type)
++ {
++ static const GtkTypeInfo frameset_info =
++ {
++ "GtkFrameset",
++ sizeof (GtkFrameset),
++ sizeof (GtkFramesetClass),
++ (GtkClassInitFunc) gtk_frameset_class_init,
++ (GtkObjectInitFunc) gtk_frameset_init,
++ /* reserved_1 */ NULL,
++ /* reserved_2 */ NULL,
++ (GtkClassInitFunc) NULL,
++ };
++
++ frameset_type = gtk_type_unique (gtk_container_get_type (), &frameset_info);
++ }
++
++ return frameset_type;
++}
++
++/* standard GTK function */
++static void
++gtk_frameset_class_init (GtkFramesetClass *class)
++{
++ GtkObjectClass *object_class;
++ GtkWidgetClass *widget_class;
++ GtkContainerClass *container_class;
++
++ object_class = (GtkObjectClass*) class;
++ widget_class = (GtkWidgetClass*) class;
++ container_class = (GtkContainerClass*) class;
++
++ parent_class = gtk_type_class (gtk_container_get_type ());
++
++ gtk_container_add_child_arg_type ("GtkFrameset::row_attach", GTK_TYPE_UINT, GTK_ARG_READWRITE, CHILD_ARG_ROW_ATTACH);
++ gtk_container_add_child_arg_type ("GtkFrameset::col_attach", GTK_TYPE_UINT, GTK_ARG_READWRITE, CHILD_ARG_COL_ATTACH);
++ gtk_container_add_child_arg_type ("GtkFrameset::x_padding", GTK_TYPE_UINT, GTK_ARG_READWRITE, CHILD_ARG_X_PADDING);
++ gtk_container_add_child_arg_type ("GtkFrameset::y_padding", GTK_TYPE_UINT, GTK_ARG_READWRITE, CHILD_ARG_Y_PADDING);
++ gtk_container_add_child_arg_type ("GtkFrameset::border", GTK_TYPE_BOOL, GTK_ARG_READWRITE, CHILD_ARG_BORDER);
++ gtk_container_add_child_arg_type ("GtkFrameset::noresize", GTK_TYPE_BOOL, GTK_ARG_READWRITE, CHILD_ARG_NORESIZE);
++
++ object_class->finalize = gtk_frameset_finalize;
++
++ widget_class->size_allocate = gtk_frameset_size_allocate;
++ widget_class->map = gtk_frameset_map;
++ widget_class->unmap = gtk_frameset_unmap;
++ widget_class->draw = gtk_frameset_draw;
++ widget_class->expose_event = gtk_frameset_expose;
++ widget_class->realize = gtk_frameset_realize;
++ widget_class->unrealize = gtk_frameset_unrealize;
++ widget_class->button_press_event = gtk_frameset_button_press;
++ widget_class->button_release_event = gtk_frameset_button_release;
++ widget_class->motion_notify_event = gtk_frameset_motion;
++ widget_class->enter_notify_event = gtk_frameset_enter;
++ widget_class->leave_notify_event = gtk_frameset_leave;
++
++ container_class->add = gtk_frameset_add;
++ container_class->remove = gtk_frameset_remove;
++ container_class->forall = gtk_frameset_forall;
++ container_class->child_type = gtk_frameset_child_type;
++ container_class->set_child_arg = gtk_frameset_set_child_arg;
++ container_class->get_child_arg = gtk_frameset_get_child_arg;
++}
++
++/* standard GTK function */
++static GtkType
++gtk_frameset_child_type (GtkContainer *container)
++{
++ return GTK_TYPE_WIDGET;
++}
++
++/* standard GTK function */
++static void
++gtk_frameset_set_child_arg (GtkContainer *container,
++ GtkWidget *child,
++ GtkArg *arg,
++ guint arg_id)
++{
++ GtkFrameset *frameset;
++ GtkFramesetChild *frameset_child;
++ GList *list;
++
++ frameset = GTK_FRAMESET (container);
++ frameset_child = NULL;
++ for (list = frameset->children; list; list = list->next)
++ {
++ frameset_child = list->data;
++
++ if (frameset_child->widget == child)
++ break;
++ }
++ if (!list)
++ return;
++
++ switch (arg_id)
++ {
++ case CHILD_ARG_ROW_ATTACH:
++ frameset_child->row_attach = GTK_VALUE_UINT (*arg);
++ break;
++ case CHILD_ARG_COL_ATTACH:
++ frameset_child->col_attach = GTK_VALUE_UINT (*arg);
++ break;
++ case CHILD_ARG_X_PADDING:
++ frameset_child->xpadding = GTK_VALUE_UINT (*arg);
++ break;
++ case CHILD_ARG_Y_PADDING:
++ frameset_child->ypadding = GTK_VALUE_UINT (*arg);
++ break;
++ case CHILD_ARG_BORDER:
++ frameset_child->border = GTK_VALUE_BOOL (*arg);
++ /* only SET this value (it is set to FALSE by default), otherwise
++ * border frames followed by noborder frames will lose their border
++ *
++ * This feature can also be provided by manipulating the child widget's
++ * border directly. I have tested this and it works. I might use it in a later
++ * version of GtkFrameset */
++ if(GTK_VALUE_BOOL(*arg)) {
++ if(frameset_child->row_attach > 0)
++ /* set top border */
++ frameset->rows[frameset_child->row_attach - 1].border = GTK_VALUE_BOOL (*arg);
++ frameset->rows[frameset_child->row_attach].border = GTK_VALUE_BOOL (*arg);
++ if(frameset_child->col_attach > 0)
++ /* set left border */
++ frameset->cols[frameset_child->col_attach - 1].border = GTK_VALUE_BOOL (*arg);
++ frameset->cols[frameset_child->col_attach].border = GTK_VALUE_BOOL (*arg);
++ }
++ break;
++ case CHILD_ARG_NORESIZE:
++ frameset_child->noresize = GTK_VALUE_BOOL (*arg);
++ /* only SET this value (it is set to FALSE by default), otherwise
++ * noresize frames followed by resizable frames will be resizable as
++ * well through the resizable frames' left/top edge */
++ if(GTK_VALUE_BOOL(*arg)) {
++ if(frameset_child->row_attach + 1 < frameset->nrows)
++ /* make lower edge unresizable */
++ frameset->rows[frameset_child->row_attach + 1].noresize = GTK_VALUE_BOOL (*arg);
++ frameset->rows[frameset_child->row_attach].noresize = GTK_VALUE_BOOL (*arg);
++ if(frameset_child->col_attach + 1 < frameset->ncols)
++ /* make right edge unresizable */
++ frameset->cols[frameset_child->col_attach + 1].noresize = GTK_VALUE_BOOL (*arg);
++ frameset->cols[frameset_child->col_attach].noresize = GTK_VALUE_BOOL (*arg);
++ }
++ break;
++ default:
++ break;
++ }
++ if (GTK_WIDGET_VISIBLE (child) && GTK_WIDGET_VISIBLE (frameset))
++ gtk_widget_queue_resize (child);
++}
++
++/* standard GTK function */
++static void
++gtk_frameset_get_child_arg (GtkContainer *container,
++ GtkWidget *child,
++ GtkArg *arg,
++ guint arg_id)
++{
++ GtkFrameset *frameset;
++ GtkFramesetChild *frameset_child;
++ GList *list;
++
++ frameset = GTK_FRAMESET (container);
++ frameset_child = NULL;
++ for (list = frameset->children; list; list = list->next)
++ {
++ frameset_child = list->data;
++
++ if (frameset_child->widget == child)
++ break;
++ }
++ if (!list)
++ return;
++
++ switch (arg_id)
++ {
++ case CHILD_ARG_ROW_ATTACH:
++ GTK_VALUE_UINT (*arg) = frameset_child->row_attach;
++ break;
++ case CHILD_ARG_COL_ATTACH:
++ GTK_VALUE_UINT (*arg) = frameset_child->col_attach;
++ break;
++ case CHILD_ARG_X_PADDING:
++ GTK_VALUE_UINT (*arg) = frameset_child->xpadding;
++ break;
++ case CHILD_ARG_Y_PADDING:
++ GTK_VALUE_UINT (*arg) = frameset_child->ypadding;
++ break;
++ case CHILD_ARG_BORDER:
++ GTK_VALUE_BOOL (*arg) = frameset_child->border;
++ break;
++ case CHILD_ARG_NORESIZE:
++ GTK_VALUE_BOOL (*arg) = frameset_child->noresize;
++ break;
++ default:
++ arg->type = GTK_TYPE_INVALID;
++ break;
++ }
++}
++
++/*
++ * Standard GTK function
++ */
++static void
++gtk_frameset_realize (GtkWidget *widget)
++{
++ GtkFrameset *frameset = GTK_FRAMESET(widget);
++ GdkWindowAttr attributes;
++ gint attributes_mask;
++
++ GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
++
++ attributes.x = widget->allocation.x;
++ attributes.y = widget->allocation.y;
++ attributes.width = widget->allocation.width;
++ attributes.height = widget->allocation.height;
++ attributes.window_type = GDK_WINDOW_CHILD;
++ attributes.wclass = GDK_INPUT_OUTPUT;
++ attributes.visual = gtk_widget_get_visual (widget);
++ attributes.colormap = gtk_widget_get_colormap (widget);
++ attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK;
++ attributes_mask = (GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP);
++ attributes.event_mask |= (GDK_BUTTON_PRESS_MASK |
++ GDK_BUTTON_RELEASE_MASK |
++ GDK_POINTER_MOTION_MASK |
++ GDK_POINTER_MOTION_HINT_MASK |
++ GDK_ENTER_NOTIFY_MASK |
++ GDK_LEAVE_NOTIFY_MASK);
++
++ widget->window = gdk_window_new (gtk_widget_get_parent_window (widget),
++ &attributes, attributes_mask);
++
++ frameset->cursor_rowcol = gdk_cursor_new(GDK_FLEUR);
++ frameset->cursor_row = gdk_cursor_new(GDK_SB_V_DOUBLE_ARROW);
++ frameset->cursor_col = gdk_cursor_new(GDK_SB_H_DOUBLE_ARROW);
++
++ gdk_window_set_user_data (widget->window, frameset);
++ widget->style = gtk_style_attach (widget->style, widget->window);
++ gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL);
++ gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
++}
++
++/*
++ * standard GTK function
++ */
++static void
++gtk_frameset_unrealize (GtkWidget *widget)
++{
++ GtkFrameset *frameset = GTK_FRAMESET(widget);
++
++ gdk_cursor_destroy(frameset->cursor_rowcol);
++ gdk_cursor_destroy(frameset->cursor_row);
++ gdk_cursor_destroy(frameset->cursor_col);
++
++ GTK_WIDGET_CLASS(parent_class)->unrealize (widget);
++}
++
++/* standard GTK function */
++static void
++gtk_frameset_init (GtkFrameset *frameset)
++{
++ GTK_WIDGET_UNSET_FLAGS (frameset, GTK_NO_WINDOW);
++
++ frameset->children = NULL;
++ frameset->rows = NULL;
++ frameset->cols = NULL;
++ frameset->nrows = 0;
++ frameset->ncols = 0;
++ frameset->resize_row = RESIZE_NONE;
++ frameset->resize_col = RESIZE_NONE;
++ frameset->in_drag = FALSE;
++ frameset->cursor_rowcol = NULL;
++ frameset->cursor_row = NULL;
++ frameset->cursor_col = NULL;
++
++ gtk_frameset_resize (frameset, "*", "*");
++}
++
++/*
++ * standard GTK function
++ *
++ * resize frameset. It is only possible to enlarge the
++ * frameset (or change dimensions while keeping the same
++ * size) as reducing the size could orphan children.
++ */
++void
++gtk_frameset_resize (GtkFrameset *frameset,
++ gchar *row_multilengths,
++ gchar *col_multilengths)
++{
++ gint n_rows, n_cols, n;
++ GSList *rows, *cols;
++ gfloat total_percentage, total_relative;
++ gfloat row_per_relative, row_per_percent;
++ gfloat col_per_relative, col_per_percent;
++
++ g_return_if_fail (frameset != NULL);
++ g_return_if_fail (GTK_IS_FRAMESET(frameset));
++ g_return_if_fail (row_multilengths || col_multilengths);
++
++ DEBUG_MSG(DEBUG_EVENT, "gtk_frameset_resize(%d, %s, %s)\n", (gint) frameset, row_multilengths, col_multilengths);
++
++ rows = gtk_frameset_get_multi_length(row_multilengths);
++ cols = gtk_frameset_get_multi_length(col_multilengths);
++
++ /* (older versions of) compiler happiness */
++ row_per_relative = 0;
++ row_per_percent = 0;
++ col_per_relative = 0;
++ col_per_percent = 0;
++
++ n_rows = g_slist_length(rows);
++ n_cols = g_slist_length(cols);
++
++ /* calculate row and column dimensions. These calculations are slightly hairy...
++ * The theory goes as follows:
++ *
++ * Starting point is the frameset width and height.
++ * First come frames with absolute dimensions. No frame can be bigger than the frameset,
++ * so checks are performed to make sure that absolute frame dimensions do not
++ * exceed frameset dimensions. When the total number of frames with absolute dimensions
++ * exceeds the frameset dimensions, the available space is divided by ratio to those frames.
++ * In case there are only absolute dimensioned frames, available space is divided by ratio to
++ * these frames and the absolute dimensions are transformed into percentual dimensions.
++ *
++ * Next come frames with percentual dimensions. They get to divide the remaining space after
++ * all absolute dimensions have been allocated. If the total of all percentual dimensions adds
++ * up to more than 100, the calculation is normalised to 100%.
++ *
++ * Last come frames with relative dimensions. They get to divide the remaining space after
++ * all absolute and percentual dimensions have been allocated. All available space is divided
++ * by ratio to relative weights and allocated to frames. In the second stage, relative dimensions
++ * are transformed into percentual dimensions so the frameset ends up having only absolute (pixel)
++ * and percentual dimensions.
++ *
++ * The calculations are performed in two stages. In the first (aggregation) stage, the total weight of
++ * absolute, percentual and relative dimensions is calculated. In the second (normalisation) stage, relative
++ * dimensions are transformed into percentual dimensions. The actual calculation of pixel dimensions
++ * is performed in the callback function as it depends on information about the current size of the
++ * frameset widget.
++ *
++ * Can this be optimised? Sure, but... later...
++ */
++
++ if(n_rows >= frameset->nrows)
++ {
++ frameset->nrows = n_rows;
++ frameset->rows = g_realloc (frameset->rows, frameset->nrows * sizeof (GtkFramesetRowCol));
++
++ frameset->row_total_absolute = 0;
++ total_percentage = 0;
++ total_relative = 0;
++
++ for(n = 0; n < frameset->nrows; n++) {
++ frameset->rows[n].length = GPOINTER_TO_INT(g_slist_nth_data(rows, n));
++ frameset->rows[n].noresize = FALSE;
++ frameset->rows[n].border = FALSE;
++ if(LENGTH_IS_RELATIVE(frameset->rows[n].length))
++ (LENGTH_GET_RELATIVE(frameset->rows[n].length) ?
++ total_relative += LENGTH_GET_RELATIVE(frameset->rows[n].length) :
++ total_relative++);
++ else if(LENGTH_IS_PERCENTAGE(frameset->rows[n].length))
++ total_percentage += LENGTH_GET_PERCENTAGE(frameset->rows[n].length);
++ else if(LENGTH_IS_ABSOLUTE(frameset->rows[n].length)) {
++ frameset->row_total_absolute += LENGTH_GET_ABSOLUTE(frameset->rows[n].length);
++ }
++ }
++
++ if((total_percentage == 0) && (total_relative == 0)) {
++ for(n = 0; n < frameset->nrows; n++)
++ if(LENGTH_IS_ABSOLUTE(frameset->rows[n].length))
++ frameset->rows[n].length =
++ LENGTH_CREATE_PERCENTAGE((gfloat) LENGTH_GET_ABSOLUTE(frameset->rows[n].length) /
++ frameset->row_total_absolute);
++ frameset->row_total_absolute = 0;
++ row_per_percent = 1;
++ } else if(total_percentage < 1) {
++ row_per_relative = (gfloat) (1 - total_percentage) / total_relative;
++ row_per_percent = (gfloat) (total_relative > 0 ? 1 : 1.0 / total_percentage);
++ } else {
++ row_per_percent = (gfloat) (1 / total_percentage);
++ row_per_relative = 0;
++ }
++ }
++
++ if(n_cols >= frameset->ncols)
++ {
++ frameset->ncols = n_cols;
++ frameset->cols = g_realloc (frameset->cols, frameset->ncols * sizeof (GtkFramesetRowCol));
++
++ frameset->col_total_absolute = 0;
++ total_percentage = 0;
++ total_relative = 0;
++
++ for(n = 0; n < frameset->ncols; n++) {
++ frameset->cols[n].length = GPOINTER_TO_INT(g_slist_nth_data(cols, n));
++ frameset->cols[n].noresize = FALSE;
++ frameset->cols[n].border = FALSE;
++ if(LENGTH_IS_RELATIVE(frameset->cols[n].length))
++ (LENGTH_GET_RELATIVE(frameset->cols[n].length) ?
++ total_relative += LENGTH_GET_RELATIVE(frameset->cols[n].length) :
++ total_relative++);
++ else if(LENGTH_IS_PERCENTAGE(frameset->cols[n].length))
++ total_percentage += LENGTH_GET_PERCENTAGE(frameset->cols[n].length);
++ else if(LENGTH_IS_ABSOLUTE(frameset->cols[n].length)) {
++ frameset->col_total_absolute += LENGTH_GET_ABSOLUTE(frameset->cols[n].length);
++ }
++ }
++
++ /* normalize values */
++ if((total_percentage == 0) && (total_relative == 0)) {
++ for(n = 0; n < frameset->ncols; n++)
++ if(LENGTH_IS_ABSOLUTE(frameset->cols[n].length))
++ frameset->cols[n].length =
++ LENGTH_CREATE_PERCENTAGE((gfloat) LENGTH_GET_ABSOLUTE(frameset->cols[n].length) /
++ frameset->col_total_absolute);
++ frameset->col_total_absolute = 0;
++ col_per_percent = 1;
++ col_per_relative = 0;
++ } else if(total_percentage < 1) {
++ col_per_relative = (gfloat) (1 - total_percentage) / total_relative;
++ col_per_percent = (gfloat) (total_relative > 0 ? 1 : 1.0 / total_percentage);
++ } else {
++ col_per_percent = (gfloat) (1 / total_percentage);
++ col_per_relative = 0;
++ }
++ }
++
++ /* now, calculate actual width/height distribution */
++ if(frameset->nrows > 1) {
++ for(n_rows = 0; n_rows < frameset->nrows; n_rows++) {
++ if(LENGTH_IS_RELATIVE(frameset->rows[n_rows].length))
++ frameset->rows[n_rows].length =
++ LENGTH_CREATE_PERCENTAGE((LENGTH_GET_RELATIVE(frameset->rows[n_rows].length) ?
++ (LENGTH_GET_RELATIVE(frameset->rows[n_rows].length) * row_per_relative) :
++ row_per_relative));
++ else if(LENGTH_IS_PERCENTAGE(frameset->rows[n_rows].length))
++ frameset->rows[n_rows].length =
++ LENGTH_CREATE_PERCENTAGE((LENGTH_GET_PERCENTAGE(frameset->rows[n_rows].length) * row_per_percent));
++ }
++ } else
++ frameset->rows[0].length = LENGTH_CREATE_PERCENTAGE(1);
++
++ if(frameset->ncols > 1) {
++ for(n_cols = 0; n_cols < frameset->ncols; n_cols++) {
++ if(LENGTH_IS_RELATIVE(frameset->cols[n_cols].length))
++ frameset->cols[n_cols].length =
++ LENGTH_CREATE_PERCENTAGE((LENGTH_GET_RELATIVE(frameset->cols[n_cols].length) ?
++ (LENGTH_GET_RELATIVE(frameset->cols[n_cols].length) * col_per_relative) :
++ col_per_relative));
++ else if(LENGTH_IS_PERCENTAGE(frameset->cols[n_cols].length))
++ frameset->cols[n_cols].length =
++ LENGTH_CREATE_PERCENTAGE(LENGTH_GET_PERCENTAGE(frameset->cols[n_cols].length) * col_per_percent);
++ }
++ } else
++ frameset->cols[0].length = LENGTH_CREATE_PERCENTAGE(1);
++
++ g_slist_free(rows);
++ g_slist_free(cols);
++}
++
++/* standard GTK function */
++GtkWidget*
++gtk_frameset_new (gchar *row_multilengths,
++ gchar *col_multilengths)
++{
++ GtkFrameset *frameset;
++
++ if (!row_multilengths)
++ row_multilengths = "*";
++ if (!col_multilengths)
++ col_multilengths = "*";
++
++ frameset = gtk_type_new (gtk_frameset_get_type ());
++
++ DEBUG_MSG(DEBUG_EVENT, "/*\n");
++
++ gtk_frameset_resize(frameset, row_multilengths, col_multilengths);
++
++ DEBUG_MSG(DEBUG_EVENT, " * NEW frameset: %d\n", (gint) frameset);
++ DEBUG_MSG(DEBUG_EVENT, " * %d rows, %d cols\n", frameset->nrows, frameset->ncols);
++ DEBUG_MSG(DEBUG_EVENT, " */\n");
++
++ return GTK_WIDGET (frameset);
++}
++
++/* standard GTK function */
++void
++gtk_frameset_attach (GtkFrameset *frameset,
++ GtkWidget *child,
++ guint row_attach,
++ guint col_attach,
++ guint xpadding,
++ guint ypadding,
++ gboolean border,
++ gboolean noresize)
++{
++ GtkFramesetChild *frameset_child;
++
++ g_return_if_fail (frameset != NULL);
++ g_return_if_fail (GTK_IS_FRAMESET (frameset));
++ g_return_if_fail (child != NULL);
++ g_return_if_fail (GTK_IS_WIDGET (child));
++ g_return_if_fail (child->parent == NULL);
++ g_return_if_fail (col_attach < frameset->ncols);
++ g_return_if_fail (row_attach < frameset->nrows);
++
++ DEBUG_MSG(DEBUG_EVENT, "gtk_frameset_attach(%d, %d, %d, %d, %d, %d, %d, %d)\n",
++ (gint) frameset, (gint) child, row_attach, col_attach,
++ xpadding, ypadding, border, noresize);
++
++ frameset_child = g_new (GtkFramesetChild, 1);
++ frameset_child->widget = child;
++ frameset_child->row_attach = row_attach;
++ frameset_child->col_attach = col_attach;
++ frameset_child->xpadding = xpadding;
++ frameset_child->ypadding = ypadding;
++ frameset_child->border = border;
++ frameset_child->noresize = noresize;
++
++ frameset->children = g_list_prepend (frameset->children, frameset_child);
++
++ gtk_widget_set_parent (child, GTK_WIDGET (frameset));
++
++ if (GTK_WIDGET_REALIZED (child->parent))
++ gtk_widget_realize (child);
++
++ if (GTK_WIDGET_VISIBLE (child->parent) && GTK_WIDGET_VISIBLE (child))
++ {
++ if (GTK_WIDGET_MAPPED (child->parent))
++ gtk_widget_map (child);
++
++ gtk_widget_queue_resize (child);
++ }
++}
++
++/*
++ * Standard GTK function
++ *
++ * add a widget (frame) to the frameset. The widget
++ * will be put in the current_frame (which will
++ * be increased in the process)
++ */
++static void
++gtk_frameset_add (GtkContainer *frameset,
++ GtkWidget *widget)
++{
++ guint row, col;
++
++ /* is there space left in the frameset for this frame? */
++ if (GTK_FRAMESET(frameset)->current_frame >=
++ (GTK_FRAMESET(frameset)->nrows * GTK_FRAMESET(frameset)->ncols)) {
++ DEBUG_MSG(DEBUG_EVENT, "No space in frameset for frame\n");
++ return;
++ }
++
++ /* calculate row and column for frame */
++ col = GTK_FRAMESET(frameset)->current_frame % GTK_FRAMESET(frameset)->ncols;
++ row = GTK_FRAMESET(frameset)->current_frame / GTK_FRAMESET(frameset)->ncols;
++
++ DEBUG_MSG(DEBUG_EVENT, "NEW FRAME in frameset %d\n", (gint) frameset);
++ DEBUG_MSG(DEBUG_EVENT, " ROW %d COL %d\n", row, col);
++
++ gtk_frameset_attach(GTK_FRAMESET(frameset), /* the frameset widget */
++ widget, /* the child widget */
++ row, /* row to attach to */
++ col, /* column to attach to */
++ 0, /* marginwidth */
++ 0, /* marginheight */
++ FALSE, /* border */
++ FALSE); /* noresize */
++
++ (GTK_FRAMESET(frameset)->current_frame)++;
++}
++
++/* standard GTK function */
++static void
++gtk_frameset_remove (GtkContainer *container,
++ GtkWidget *widget)
++{
++ GtkFrameset *frameset;
++ GtkFramesetChild *child;
++ GList *children;
++
++ g_return_if_fail (container != NULL);
++ g_return_if_fail (GTK_IS_FRAMESET (container));
++ g_return_if_fail (widget != NULL);
++
++ frameset = GTK_FRAMESET (container);
++ children = frameset->children;
++
++ while (children)
++ {
++ child = children->data;
++ children = children->next;
++
++ if (child->widget == widget)
++ {
++ gboolean was_visible = GTK_WIDGET_VISIBLE (widget);
++
++ gtk_widget_unparent (widget);
++
++ frameset->children = g_list_remove (frameset->children, child);
++ g_free (child);
++
++ if (was_visible && GTK_WIDGET_VISIBLE (container))
++ gtk_widget_queue_resize (GTK_WIDGET (container));
++ break;
++ }
++ }
++}
++
++/* standard GTK function */
++static void
++gtk_frameset_forall (GtkContainer *container,
++ gboolean include_internals,
++ GtkCallback callback,
++ gpointer callback_data)
++{
++ GtkFrameset *frameset;
++ GtkFramesetChild *child;
++ GList *children;
++
++ g_return_if_fail (container != NULL);
++ g_return_if_fail (GTK_IS_FRAMESET (container));
++ g_return_if_fail (callback != NULL);
++
++ frameset = GTK_FRAMESET (container);
++ children = frameset->children;
++
++ while (children)
++ {
++ child = children->data;
++ children = children->next;
++
++ (* callback) (child->widget, callback_data);
++ }
++}
++
++/* standard GTK function */
++static void
++gtk_frameset_finalize (GtkObject *object)
++{
++ GtkFrameset *frameset;
++
++ g_return_if_fail (object != NULL);
++ g_return_if_fail (GTK_IS_FRAMESET (object));
++
++ frameset = GTK_FRAMESET (object);
++
++ g_free (frameset->rows);
++ g_free (frameset->cols);
++
++ (* GTK_OBJECT_CLASS (parent_class)->finalize) (object);
++}
++
++/* standard GTK function */
++static void
++gtk_frameset_map (GtkWidget *widget)
++{
++ GtkFrameset *frameset;
++ GtkFramesetChild *child;
++ GList *children;
++
++ g_return_if_fail (widget != NULL);
++ g_return_if_fail (GTK_IS_FRAMESET (widget));
++
++ frameset = GTK_FRAMESET (widget);
++ GTK_WIDGET_SET_FLAGS (frameset, GTK_MAPPED);
++
++ children = frameset->children;
++ while (children)
++ {
++ child = children->data;
++ children = children->next;
++
++ if (GTK_WIDGET_VISIBLE (child->widget) &&
++ !GTK_WIDGET_MAPPED (child->widget))
++ gtk_widget_map (child->widget);
++ }
++
++ gdk_window_show(widget->window);
++}
++
++/* standard GTK function */
++static void
++gtk_frameset_unmap (GtkWidget *widget)
++{
++ GtkFrameset *frameset;
++ GtkFramesetChild *child;
++ GList *children;
++
++ g_return_if_fail (widget != NULL);
++ g_return_if_fail (GTK_IS_FRAMESET (widget));
++
++ frameset = GTK_FRAMESET (widget);
++ GTK_WIDGET_UNSET_FLAGS (frameset, GTK_MAPPED);
++
++ children = frameset->children;
++ while (children)
++ {
++ child = children->data;
++ children = children->next;
++
++ if (GTK_WIDGET_VISIBLE (child->widget) &&
++ GTK_WIDGET_MAPPED (child->widget))
++ gtk_widget_unmap (child->widget);
++ }
++
++ gdk_window_hide(widget->window);
++}
++
++/* standard GTK function */
++static void
++gtk_frameset_draw (GtkWidget *widget,
++ GdkRectangle *area)
++{
++ GtkFrameset *frameset;
++ GtkFramesetChild *child;
++ GList *children;
++ GdkRectangle child_area;
++
++ g_return_if_fail (widget != NULL);
++ g_return_if_fail (GTK_IS_FRAMESET (widget));
++
++ if (GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_MAPPED (widget))
++ {
++ frameset = GTK_FRAMESET (widget);
++ children = frameset->children;
++ while (children)
++ {
++ child = children->data;
++ children = children->next;
++
++ if (gtk_widget_intersect (child->widget, area, &child_area))
++ gtk_widget_draw (child->widget, &child_area);
++ }
++ }
++}
++
++/* standard GTK function */
++static gint
++gtk_frameset_expose (GtkWidget *widget,
++ GdkEventExpose *event)
++{
++ GtkFrameset *frameset;
++ GtkFramesetChild *child;
++ GList *children;
++ GdkEventExpose child_event;
++
++ g_return_val_if_fail (widget != NULL, FALSE);
++ g_return_val_if_fail (GTK_IS_FRAMESET (widget), FALSE);
++
++ if (GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_MAPPED (widget))
++ {
++ frameset = GTK_FRAMESET (widget);
++
++ child_event = *event;
++
++ children = frameset->children;
++ while (children)
++ {
++ child = children->data;
++ children = children->next;
++
++ if (GTK_WIDGET_NO_WINDOW (child->widget) &&
++ gtk_widget_intersect (child->widget, &event->area, &child_event.area))
++ gtk_widget_event (child->widget, (GdkEvent*) &child_event);
++ }
++ }
++
++ return FALSE;
++}
++
++/* standard GTK function */
++static void
++gtk_frameset_size_allocate (GtkWidget *widget,
++ GtkAllocation *allocation)
++{
++ GtkFrameset *frameset;
++
++ g_return_if_fail (widget != NULL);
++ g_return_if_fail (GTK_IS_FRAMESET (widget));
++ g_return_if_fail (allocation != NULL);
++
++ DEBUG_MSG(DEBUG_EVENT, "gtk_frameset_size_allocate(%d, {w:%d, h:%d, x:%d, y:%d})\n",
++ (gint) widget, allocation->width, allocation->height, allocation->x, allocation->y);
++
++ widget->allocation = *allocation;
++ frameset = GTK_FRAMESET (widget);
++
++ if (GTK_WIDGET_REALIZED (widget))
++ gdk_window_move_resize (widget->window,
++ allocation->x, allocation->y,
++ allocation->width, allocation->height);
++
++ gtk_frameset_size_allocate_init (frameset);
++ gtk_frameset_size_allocate_pass1 (frameset);
++}
++
++/*
++ * Calculate child dimensions relative to those of frameset,
++ * based on row and column length specifications
++ */
++void
++gtk_frameset_size_allocate_init(GtkFrameset *frameset)
++{
++ gint n_rows, n_cols;
++ gfloat per_percent;
++ guint real_width, real_height;
++ guint row_borderspace, col_borderspace;
++ guint location;
++
++ /* calculate total amount of border space used */
++ row_borderspace = 0;
++ col_borderspace = 0;
++
++ for(n_rows = 0; n_rows < frameset->nrows - 1; n_rows++)
++ row_borderspace += (frameset->rows[n_rows].border ? GTKFRAMESET_DEFAULT_BORDER_SIZE : 0);
++ for(n_cols = 0; n_cols < frameset->ncols - 1; n_cols++)
++ col_borderspace += (frameset->cols[n_cols].border ? GTKFRAMESET_DEFAULT_BORDER_SIZE : 0);
++
++ real_width =
++ (col_borderspace < GTK_WIDGET(frameset)->allocation.width ?
++ GTK_WIDGET(frameset)->allocation.width - col_borderspace : 0);
++ real_height =
++ (row_borderspace < GTK_WIDGET(frameset)->allocation.height ?
++ GTK_WIDGET(frameset)->allocation.height - row_borderspace : 0);
++
++ location = 0;
++ if(frameset->nrows > 1) {
++ /* calculate number of pixels to dole out per percent */
++ per_percent = (gfloat) (real_height > frameset->row_total_absolute ?
++ ((real_height - frameset->row_total_absolute) / 100.0) : 0);
++ for(n_rows = 0; n_rows < frameset->nrows; n_rows++) {
++ if(LENGTH_IS_PERCENTAGE(frameset->rows[n_rows].length))
++ frameset->rows[n_rows].allocation =
++ (gint) (per_percent * 100 * LENGTH_GET_PERCENTAGE(frameset->rows[n_rows].length));
++ else if(LENGTH_IS_ABSOLUTE(frameset->rows[n_rows].length))
++ frameset->rows[n_rows].allocation =
++ (gint) LENGTH_GET_ABSOLUTE(frameset->rows[n_rows].length);
++
++ frameset->rows[n_rows].location = location;
++ location += frameset->rows[n_rows].allocation +
++ (frameset->rows[n_rows].border ? GTKFRAMESET_DEFAULT_BORDER_SIZE : 0);
++ }
++ } else {
++ frameset->rows[0].allocation = real_height;
++ frameset->rows[0].location = 0;
++ }
++
++ location = 0;
++ if(frameset->ncols > 1) {
++ /* calculate number of pixels to dole out per percent */
++ per_percent = (gfloat) (real_width > frameset->col_total_absolute ?
++ ((real_width - frameset->col_total_absolute) / 100.0) : 0);
++ for(n_cols = 0; n_cols < frameset->ncols; n_cols++) {
++ if(LENGTH_IS_PERCENTAGE(frameset->cols[n_cols].length))
++ frameset->cols[n_cols].allocation =
++ (gint) (per_percent * 100 * LENGTH_GET_PERCENTAGE(frameset->cols[n_cols].length));
++ else if(LENGTH_IS_ABSOLUTE(frameset->cols[n_cols].length))
++ frameset->cols[n_cols].allocation =
++ (gint) LENGTH_GET_ABSOLUTE(frameset->cols[n_cols].length);
++
++ frameset->cols[n_cols].location = location;
++ location += frameset->cols[n_cols].allocation +
++ (frameset->cols[n_cols].border ? GTKFRAMESET_DEFAULT_BORDER_SIZE : 0);
++ }
++ } else {
++ frameset->cols[0].allocation = real_width;
++ frameset->cols[0].location = 0;
++ }
++}
++
++/*
++ * allocate children according to their placement in frameset
++ */
++static void
++gtk_frameset_size_allocate_pass1(GtkFrameset *frameset)
++{
++ GtkFramesetChild *child;
++ GList *children;
++ GtkAllocation *alloc;
++
++ alloc = g_new0(GtkAllocation, 1);
++
++ children = frameset->children;
++ while(children)
++ {
++ child = children->data;
++ children = children->next;
++
++ if(GTK_WIDGET_VISIBLE(child->widget)) {
++ alloc->width = (frameset->cols[child->col_attach].allocation < (2 * child->xpadding) ?
++ 0 : frameset->cols[child->col_attach].allocation - (2 * child->xpadding));
++
++ alloc->height = (frameset->rows[child->row_attach].allocation < (2 * child->ypadding) ?
++ 0 : frameset->rows[child->row_attach].allocation - (2 * child->ypadding));
++ alloc->x = frameset->cols[child->col_attach].location + child->xpadding;
++ alloc->y = frameset->rows[child->row_attach].location + child->ypadding;
++ gtk_widget_size_allocate(GTK_WIDGET(child->widget), alloc);
++
++ DEBUG_MSG(DEBUG_ALLOC, "widget %d (row %d, col %d) allocated (w:%d, h:%d, x:%d, y:%d)\n",
++ (gint) child->widget, child->row_attach, child->col_attach,
++ alloc->width, alloc->height,
++ frameset->cols[child->col_attach].location,
++ frameset->rows[child->row_attach].location);
++ }
++ }
++
++ g_free(alloc);
++}
++
++/*
++ * Parse a comma-separated list of %MultiLengths, and returns a GSList
++ * of lenghts. The caller has to free the GSList.
++ */
++static GSList*
++gtk_frameset_get_multi_length (const gchar *attr)
++{
++ GSList *list;
++ gdouble value;
++ gchar *end, *locale;
++ Length length;
++
++ g_return_val_if_fail(attr != NULL, NULL);
++
++ /* Set 'C' locale to avoid parsing problems with float numbers */
++ locale = g_strdup (setlocale (LC_NUMERIC, NULL));
++ setlocale (LC_NUMERIC, "C");
++
++ list = NULL;
++
++ while(TRUE) {
++ value = g_strtod (attr, &end);
++ switch (*end) {
++ case '%':
++ length = LENGTH_CREATE_PERCENTAGE (value / 100);
++ break;
++
++ case '*':
++ length = LENGTH_CREATE_RELATIVE (value);
++ break;
++
++ default:
++ length = LENGTH_CREATE_ABSOLUTE ((gint) value);
++ break;
++ }
++
++ list = g_slist_append(list, GINT_TO_POINTER(length));
++
++ /* there MUST be a comma between values */
++ if(!(end = strchr(end, ',')))
++ break;
++ /* valid %MultiLength characters: 0123456789%* */
++ if(!(attr = strpbrk(end, "0123456789%*")))
++ break;
++ }
++
++ setlocale (LC_NUMERIC, locale);
++ g_free (locale);
++
++ return list;
++}
++
++/*
++ * given the current location and allocation values, calculate
++ * row/col length values. The results are used in size_allocate
++ */
++static void
++gtk_frameset_calculate_lengths(GtkFrameset *frameset)
++{
++ gint n;
++ guint total_percentage;
++
++ total_percentage = 0;
++ frameset->col_total_absolute = 0;
++ for(n = 0; n < frameset->ncols; n++)
++ if(LENGTH_IS_ABSOLUTE(frameset->cols[n].length)) {
++ frameset->cols[n].length = LENGTH_CREATE_ABSOLUTE(frameset->cols[n].allocation);
++ frameset->col_total_absolute += frameset->cols[n].allocation;
++ } else
++ total_percentage += frameset->cols[n].allocation;
++
++ for(n = 0; n < frameset->ncols; n++) {
++ if(!(LENGTH_IS_ABSOLUTE(frameset->cols[n].length)))
++ frameset->cols[n].length =
++ LENGTH_CREATE_PERCENTAGE(((gfloat) frameset->cols[n].allocation) / total_percentage);
++ }
++
++ total_percentage = 0;
++ frameset->row_total_absolute = 0;
++ for(n = 0; n < frameset->nrows; n++)
++ if(LENGTH_IS_ABSOLUTE(frameset->rows[n].length)) {
++ frameset->rows[n].length = LENGTH_CREATE_ABSOLUTE(frameset->rows[n].allocation);
++ frameset->row_total_absolute += frameset->rows[n].allocation;
++ } else
++ total_percentage += frameset->rows[n].allocation;
++
++ for(n = 0; n < frameset->nrows; n++) {
++ if(!(LENGTH_IS_ABSOLUTE(frameset->rows[n].length)))
++ frameset->rows[n].length =
++ LENGTH_CREATE_PERCENTAGE(((gfloat) frameset->rows[n].allocation) / total_percentage);
++ }
++}
++
++/*
++ * set the resize_row and resize_col attributes and set resize cursor (if any)
++ */
++static gint
++gtk_frameset_set_resize_rowcol(GtkWidget *widget, gint x, gint y)
++{
++ GtkFrameset *frameset = GTK_FRAMESET(widget);
++ guint n;
++
++ g_return_val_if_fail (widget != NULL,FALSE);
++ g_return_val_if_fail (GTK_IS_FRAMESET (widget),FALSE);
++
++ frameset->resize_row = RESIZE_NONE;
++ frameset->resize_col = RESIZE_NONE;
++
++ for(n=1; n < frameset->ncols; n++) {
++ if(frameset->cols[n - 1].allocation + frameset->cols[n - 1].location - GTKFRAMESET_DEFAULT_BORDER_SIZE <= x &&
++ frameset->cols[n].location + GTKFRAMESET_DEFAULT_BORDER_SIZE >= x &&
++ !frameset->cols[n].noresize) {
++ frameset->resize_col = n - 1;
++ break;
++ }
++ }
++
++ for(n=1; n < frameset->nrows; n++) {
++ if(frameset->rows[n - 1].allocation + frameset->rows[n - 1].location - GTKFRAMESET_DEFAULT_BORDER_SIZE <= y &&
++ frameset->rows[n].location + GTKFRAMESET_DEFAULT_BORDER_SIZE >= y &&
++ !frameset->rows[n].noresize) {
++ frameset->resize_row = n - 1;
++ break;
++ }
++ }
++
++ if((frameset->resize_row != RESIZE_NONE) && (frameset->resize_col != RESIZE_NONE))
++ gdk_window_set_cursor(widget->window, frameset->cursor_rowcol);
++ else if(frameset->resize_row != RESIZE_NONE)
++ gdk_window_set_cursor(widget->window, frameset->cursor_row);
++ else if(frameset->resize_col != RESIZE_NONE)
++ gdk_window_set_cursor(widget->window, frameset->cursor_col);
++ else
++ gdk_window_set_cursor(widget->window, NULL);
++
++ return TRUE;
++}
++
++/*
++ * standard GTK function
++ *
++ * enter drag mode on button_1_press over frame border
++ */
++static gint
++gtk_frameset_button_press (GtkWidget *widget, GdkEventButton *event)
++{
++ GtkFrameset *frameset = GTK_FRAMESET(widget);
++
++ g_return_val_if_fail (widget != NULL,FALSE);
++ g_return_val_if_fail (GTK_IS_FRAMESET (widget),FALSE);
++
++ if(!frameset->in_drag &&
++ (event->button == 1) &&
++ (frameset->resize_row != RESIZE_NONE || frameset->resize_col != RESIZE_NONE))
++ {
++ frameset->in_drag = TRUE;
++ gdk_pointer_grab (widget->window, FALSE,
++ GDK_POINTER_MOTION_HINT_MASK
++ | GDK_BUTTON1_MOTION_MASK
++ | GDK_BUTTON_RELEASE_MASK,
++ NULL, NULL, event->time);
++ }
++
++ return TRUE;
++}
++
++/*
++ * standard GTK function
++ */
++static gint
++gtk_frameset_button_release (GtkWidget *widget, GdkEventButton *event)
++{
++ GtkFrameset *frameset = GTK_FRAMESET(widget);
++
++ g_return_val_if_fail (widget != NULL,FALSE);
++ g_return_val_if_fail (GTK_IS_FRAMESET (widget),FALSE);
++
++ if(frameset->in_drag && (event->button == 1))
++ {
++ frameset->in_drag = FALSE;
++ gdk_pointer_ungrab (event->time);
++ gtk_widget_queue_resize(GTK_WIDGET(frameset));
++ }
++
++ return TRUE;
++}
++
++/*
++ * standard GTK function
++ *
++ * determine row/col to resize (from x, y and noresize attribute),
++ * set appropriate cursor (row resize, col resize or both)
++ */
++static gint
++gtk_frameset_enter (GtkWidget *widget, GdkEventCrossing *event)
++{
++ g_return_val_if_fail (widget != NULL,FALSE);
++ g_return_val_if_fail (GTK_IS_FRAMESET (widget),FALSE);
++
++ return gtk_frameset_set_resize_rowcol(widget, event->x, event->y);
++}
++
++/*
++ * standard GTK function
++ *
++ * unset resize cursor and resize_row/resize_col
++ */
++static gint
++gtk_frameset_leave (GtkWidget *widget, GdkEventCrossing *event)
++{
++ GtkFrameset *frameset = GTK_FRAMESET(widget);
++
++ g_return_val_if_fail (widget != NULL,FALSE);
++ g_return_val_if_fail (GTK_IS_FRAMESET (widget),FALSE);
++
++ frameset->resize_row = RESIZE_NONE;
++ frameset->resize_col = RESIZE_NONE;
++ gdk_window_set_cursor(widget->window, NULL);
++
++ return TRUE;
++}
++
++/*
++ * standard GTK function
++ *
++ * resize row and/or column when in_drag is true
++ * otherwise
++ * if resize_row or resize_col is set
++ * set resize_row/resize_col and cursor
++ *
++ * This way, motion events without prior enter events will not set the
++ * cursor
++ */
++static gint
++gtk_frameset_motion (GtkWidget *widget, GdkEventMotion *event)
++{
++ GtkFrameset *frameset = GTK_FRAMESET(widget);
++ guint x, y;
++ gint diff;
++ gboolean return_val;
++
++ g_return_val_if_fail (widget != NULL, FALSE);
++ g_return_val_if_fail (GTK_IS_FRAMESET (widget), FALSE);
++
++ if (event->is_hint)
++ gtk_widget_get_pointer(widget, &x, &y);
++ else {
++ x = event->x;
++ y = event->y;
++ }
++
++ if (frameset->in_drag)
++ {
++ if(frameset->resize_row >= 0) {
++ diff = (y - frameset->rows[frameset->resize_row].location) -
++ frameset->rows[frameset->resize_row].allocation;
++ if(frameset->rows[frameset->resize_row].allocation + diff > 0 &&
++ frameset->rows[frameset->resize_row + 1].allocation - diff > 0) {
++ frameset->rows[frameset->resize_row].allocation += diff;
++ frameset->rows[frameset->resize_row + 1].location += diff;
++ frameset->rows[frameset->resize_row + 1].allocation -= diff;
++ }
++ }
++
++ if(frameset->resize_col >= 0) {
++ diff = (x - frameset->cols[frameset->resize_col].location) -
++ frameset->cols[frameset->resize_col].allocation;
++ if(frameset->cols[frameset->resize_col].allocation + diff > 0 &&
++ frameset->cols[frameset->resize_col + 1].allocation - diff > 0) {
++ frameset->cols[frameset->resize_col].allocation += diff;
++ frameset->cols[frameset->resize_col + 1].location += diff;
++ frameset->cols[frameset->resize_col + 1].allocation -= diff;
++ }
++ }
++
++ gtk_frameset_calculate_lengths(frameset);
++ gtk_widget_queue_resize(GTK_WIDGET(frameset));
++ return_val = TRUE;
++ } else
++ /* only adjust resize_row/resize_col if either of these is already set,
++ * this way the cursor will not be changed by motion events without prior
++ * enter event */
++ if(frameset->resize_row != RESIZE_NONE ||
++ frameset->resize_col != RESIZE_NONE)
++ return_val = gtk_frameset_set_resize_rowcol(widget, x, y);
++ else
++ return_val = TRUE;
++
++ return return_val;
++}
++
+diff -pruN dillo-0.8.6/src/gtkframeset.h dillo-0.8.6-i18n-misc-20060709/src/gtkframeset.h
+--- dillo-0.8.6/src/gtkframeset.h 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/gtkframeset.h 2006-05-16 01:21:09.000000000 +0900
+@@ -0,0 +1,133 @@
++/*
++ * File: gtkframeset.h
++ * Copyright (C) 2003 Frank de Lange <frank@unternet.org>
++ *
++ * a frameset widget for GTK - The GIMP Toolkit
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Library General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library 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
++ * Library General Public License for more details.
++ *
++ * You should have received a copy of the GNU Library General Public
++ * License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ * Boston, MA 02111-1307, USA.
++ */
++
++#ifndef __GTK_FRAMESET_H__
++#define __GTK_FRAMESET_H__
++
++#include <gdk/gdk.h>
++#include <gtk/gtkcontainer.h>
++
++
++#ifdef __cplusplus
++extern "C" {
++#endif /* __cplusplus */
++
++
++#define GTK_FRAMESET(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_FRAMESET, GtkFrameset))
++#define GTK_TYPE_FRAMESET (gtk_frameset_get_type ())
++#define GTK_FRAMESET_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_FRAMESET, GtkFramesetClass))
++#define GTK_IS_FRAMESET(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_FRAMESET))
++#define GTK_IS_FRAMESET_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_FRAMESET))
++
++
++typedef struct _GtkFrameset GtkFrameset;
++typedef struct _GtkFramesetClass GtkFramesetClass;
++typedef struct _GtkFramesetChild GtkFramesetChild;
++typedef struct _GtkFramesetRowCol GtkFramesetRowCol;
++typedef gint32 Length;
++
++/* (adapted from dw_style.h) Lengths */
++#define LENGTH_CREATE_ABSOLUTE(n) (((n) << 2) | 1)
++#define LENGTH_CREATE_PERCENTAGE(n) ((LENGTH_FLOAT_TO_REAL (n) << 3) | 2)
++#define LENGTH_CREATE_RELATIVE(n) ((LENGTH_FLOAT_TO_REAL (n) << 3) | 6)
++#define LENGTH_UNDEF_LENGTH 0
++
++#define LENGTH_IS_ABSOLUTE(l) ((l) & 1)
++#define LENGTH_IS_PERCENTAGE(l) (((l) & 7) == 2)
++#define LENGTH_IS_RELATIVE(l) (((l) & 7) == 6)
++
++#define LENGTH_GET_ABSOLUTE(l) ((l) >> 2)
++#define LENGTH_GET_PERCENTAGE(l) LENGTH_REAL_TO_FLOAT ((l) >> 3)
++#define LENGTH_GET_RELATIVE(l) LENGTH_REAL_TO_FLOAT ((l) >> 3)
++
++#define LENGTH_REAL_TO_FLOAT(v) ((gfloat)(v) / 0x10000)
++#define LENGTH_FLOAT_TO_REAL(v) ((gint)((v) * 0x10000))
++
++/* used in frame resize */
++#define RESIZE_NONE -1
++
++/* default border size */
++#define GTKFRAMESET_DEFAULT_BORDER_SIZE 2
++
++struct _GtkFrameset
++{
++ GtkContainer container;
++
++ GList *children;
++ GtkFramesetRowCol *rows;
++ GtkFramesetRowCol *cols;
++ guint row_total_absolute, col_total_absolute;
++ guint16 nrows;
++ guint16 ncols;
++ guint16 current_frame;
++ gboolean in_drag : 1;
++ gint16 resize_row, resize_col;
++ GdkCursor *cursor_rowcol, *cursor_row, *cursor_col;
++};
++
++struct _GtkFramesetClass
++{
++ GtkContainerClass parent_class;
++};
++
++struct _GtkFramesetChild
++{
++ GtkWidget *widget;
++ guint16 row_attach;
++ guint16 col_attach;
++ guint16 xpadding;
++ guint16 ypadding;
++ gboolean border : 1;
++ gboolean noresize : 1;
++};
++
++struct _GtkFramesetRowCol
++{
++ guint16 location;
++ guint16 allocation;
++ gboolean noresize : 1;
++ gboolean border: 1;
++ Length length;
++ guint16 spacing;
++};
++
++
++GtkType gtk_frameset_get_type (void);
++GtkWidget* gtk_frameset_new (gchar *rows,
++ gchar *columns);
++void gtk_frameset_resize (GtkFrameset *frameset,
++ gchar *rows,
++ gchar *columns);
++void gtk_frameset_attach (GtkFrameset *frameset,
++ GtkWidget *child,
++ guint row_attach,
++ guint col_attach,
++ guint xpadding,
++ guint ypadding,
++ gboolean border,
++ gboolean noresize);
++
++#ifdef __cplusplus
++}
++#endif /* __cplusplus */
++
++#endif /* __GTK_FRAMESET_H__ */
+diff -pruN dillo-0.8.6/src/html.c dillo-0.8.6-i18n-misc-20060709/src/html.c
+--- dillo-0.8.6/src/html.c 2006-04-13 00:50:35.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/html.c 2006-06-25 10:04:43.000000000 +0900
+@@ -17,31 +17,41 @@
+
+ /* Undefine if you want to unroll tables. For instance for PDAs */
+ #define USE_TABLES
+-
+ /* Define to 1 to ignore white space immediately after an open tag,
+ * and immediately before a close tag. */
+ #define SGML_SPCDEL 0
+
++#ifndef ENABLE_META_REFRESH
++ #define SEND_HTML_MSG /* meta-refresh */
++#endif
++//#define USE_OLD_PARSER
++
+
++#include <config.h>
+ #include <ctype.h> /* for isspace and tolower */
+ #include <string.h> /* for memcpy and memmove */
+ #include <stdlib.h>
+ #include <stdio.h> /* for sprintf */
+-#include <math.h> /* for rint */
+-#include <errno.h>
++#include <math.h> /* for rint */
++#include <errno.h> /* for iconv error codes */
++#include <time.h> /* for nanosleep */
+
+-#include <gtk/gtk.h>
++#include "i18n_gtk.h"
+
++#include "intl.h"
+ #include "msg.h"
++#include "adblock.h"
+ #include "list.h"
+ #include "binaryconst.h"
+ #include "colors.h"
+ #include "dillo.h"
+ #include "history.h"
+ #include "nav.h"
++#include "doc.h"
+ #include "menu.h"
+ #include "commands.h"
+ #include "dw.h" /* for Dw_cursor_hand */
++#include "dw_gtk_scrolled_window.h" /* for a_Dw_gtk_scrolled_window_get_dw */
+
+ #include "dw_gtk_viewport.h"
+ #include "dw_gtk_scrolled_window.h"
+@@ -56,11 +66,17 @@
+ #include "dw_list_item.h"
+ #include "dw_style.h"
+ #include "interface.h"
+-#include "progressbar.h"
+ #include "prefs.h"
+ #include "misc.h"
+ #include "capi.h"
+ #include "html.h"
++#include "i18n.h"
++
++#include "gtkframeset.h"
++
++#define DEBUG_EVENT 10
++#define DEBUG_SIZE 10
++#define DEBUG_ALLOC 10
+
+ #define DEBUG_LEVEL 10
+ #include "debug.h"
+@@ -94,7 +110,7 @@ static gint Html_write_raw(DilloHtml *ht
+ static void Html_write(DilloHtml *html, char *Buf, gint BufSize, gint Eof);
+ static void Html_close(DilloHtml *html, gint ClientKey);
+ static void Html_callback(int Op, CacheClient_t *Client);
+-static DilloHtml *Html_new(BrowserWindow *bw, const DilloUrl *url);
++static DilloHtml *Html_new(DilloDoc *dd, const DilloUrl *url);
+ static void Html_tag_open_input(DilloHtml *html, char *tag, gint tagsize);
+ static void Html_add_input(DilloHtmlForm *form,
+ DilloHtmlInputType type,
+@@ -107,6 +123,9 @@ static void Html_submit_form(GtkWidget *
+ gint click_x, gint click_y);
+ static void Html_reset_form(GtkWidget *reset, DilloHtmlLB *html_lb);
+ static gint Html_tag_index(char *tag);
++static void Html_translate(DilloTrans *trans, char *buf, gint bufsize);
++static DilloTrans *Html_translation_new(char *source, char *dest);
++static void Html_translation_free(DilloTrans *trans, gboolean keepbuf);
+
+ /* exported function */
+ DwWidget *a_Html_text(const char *Type, void *P, CA_Callback_t *Call,
+@@ -117,9 +136,6 @@ DwWidget *a_Html_text(const char *Type,
+ * Local Data
+ */
+
+-/* The following array of font sizes has to be _strictly_ crescent */
+-static const gint FontSizes[] = {8, 10, 12, 14, 18, 24};
+-static const gint FontSizesNum = 6;
+ static const gint FontSizesBase = 2;
+
+ /* Parsing table structure */
+@@ -141,9 +157,11 @@ static gint Html_get_line_number(DilloHt
+ gint i, ofs, line;
+ const char *p = html->Start_Buf;
+
++ ofs = (html->Buf_Size < html->CurrTagOfs)
++ ? html->Buf_Size : html->CurrTagOfs;
++
+ g_return_val_if_fail(p != NULL, -1);
+
+- ofs = html->CurrTagOfs;
+ line = html->OldTagLine;
+ for (i = html->OldTagOfs; i < ofs; ++i)
+ if (p[i] == '\n')
+@@ -161,14 +179,14 @@ static void Html_msg(DilloHtml *html, co
+ va_list argp;
+ gchar buf[512];
+
+- g_snprintf(buf, 512, "HTML warning: line %d, ",
++ g_snprintf(buf, 512, _("HTML warning: line %d, "),
+ Html_get_line_number(html));
+ g_string_append(html->linkblock->page_bugs, buf);
+ va_start(argp, format);
+ g_vsnprintf(buf, 512, format, argp);
+ va_end(argp);
+ g_string_append(html->linkblock->page_bugs, buf);
+- a_Interface_bug_meter_update(html->bw,
++ a_Interface_bug_meter_update(html->dd->bw,
+ ++html->linkblock->num_page_bugs);
+ }
+
+@@ -192,14 +210,14 @@ static DilloUrl *Html_url_new(DilloHtml
+ const char *suffix = (n_ic) > 1 ? "s" : "";
+ n_ic_spc = URL_ILLEGAL_CHARS_SPC(url);
+ if (n_ic == n_ic_spc) {
+- MSG_HTML("URL has %d illegal character%s [%d space%s]\n",
++ MSG_HTML(_("URL has %d illegal character%s [%d space%s]\n"),
+ n_ic, suffix, n_ic_spc, suffix);
+ } else if (n_ic_spc == 0) {
+- MSG_HTML("URL has %d illegal character%s [%d in (00-1F or 7F)]\n",
++ MSG_HTML(_("URL has %d illegal character%s [%d in (00-1F or 7F)]\n"),
+ n_ic, suffix, n_ic);
+ } else {
+- MSG_HTML("URL has %d illegal character%s "
+- "[%d space%s and %d in (00-1F or 7F)]\n",
++ MSG_HTML(_("URL has %d illegal character%s "
++ "[%d space%s and %d in (00-1F or 7F)]\n"),
+ n_ic, suffix, n_ic_spc, n_ic_spc ? "s" : "", n_ic-n_ic_spc);
+ }
+ }
+@@ -213,7 +231,15 @@ DwWidget *a_Html_text(const char *Type,
+ void **Data)
+ {
+ DilloWeb *web = P;
+- DilloHtml *html = Html_new(web->bw, web->url);
++ DilloHtml *html = Html_new(web->dd, web->url);
++
++ /* Actual, HTTP header charset is almost reliable in Japan
++ * at least... however, the HTML 4.01 SPEC recommends
++ * to giving top priority to this. */
++ if ((html->server_charset = strstr(Type, "charset="))
++ && html->server_charset + 8)
++ html->server_charset
++ = a_I18n_fix_charset(g_strdup(html->server_charset + 8));
+
+ *Data = (void *) html;
+ *Call = (CA_Callback_t) Html_callback;
+@@ -224,11 +250,11 @@ DwWidget *a_Html_text(const char *Type,
+ /*
+ * We'll make the linkblock first to get it out of the way.
+ */
+-static DilloHtmlLB *Html_lb_new(BrowserWindow *bw, const DilloUrl *url)
++static DilloHtmlLB *Html_lb_new(DilloDoc *dd, const DilloUrl *url)
+ {
+ DilloHtmlLB *html_lb = g_new(DilloHtmlLB, 1);
+
+- html_lb->bw = bw;
++ html_lb->dd = dd;
+ html_lb->base_url = a_Url_dup(url);
+ html_lb->num_forms_max = 1;
+ html_lb->num_forms = 0;
+@@ -242,6 +268,14 @@ static DilloHtmlLB *Html_lb_new(BrowserW
+ html_lb->link_color = prefs.link_color;
+ html_lb->visited_color = prefs.visited_color;
+
++ html_lb->charset = NULL;
++ html_lb->usingMetaCharset = FALSE;
++ html_lb->lang[0] = 0;
++
++#ifdef ENABLE_META_REFRESH
++ html_lb->meta_refresh = NULL;
++#endif
++
+ html_lb->num_page_bugs = 0;
+ html_lb->page_bugs = g_string_new("");
+
+@@ -258,12 +292,17 @@ static void Html_lb_free(void *lb)
+ DilloHtmlLB *html_lb = lb;
+
+ DEBUG_MSG(3, "Html_lb_free\n");
+-
++#ifdef ENABLE_META_REFRESH
++ if (html_lb->meta_refresh) {
++ *html_lb->meta_refresh = 1;
++ }
++#endif
+ a_Url_free(html_lb->base_url);
+
+ for (i = 0; i < html_lb->num_forms; i++) {
+ form = &html_lb->forms[i];
+ a_Url_free(form->action);
++ g_free(form->charset);
+ for (j = 0; j < form->num_inputs; j++) {
+ g_free(form->inputs[j].name);
+ g_free(form->inputs[j].init_str);
+@@ -286,6 +325,8 @@ static void Html_lb_free(void *lb)
+ a_Url_free(html_lb->links[i]);
+ g_free(html_lb->links);
+
++ g_free(html_lb->charset);
++
+ a_Dw_image_map_list_free(&html_lb->maps);
+
+ g_string_free(html_lb->page_bugs, TRUE);
+@@ -319,15 +360,19 @@ static void Html_handle_status(DwWidget
+
+ url = (link == -1) ? NULL : lb->links[link];
+ if (url) {
++ gchar *url_str = NULL;
++ if(URL_STR_(url))
++ url_str = a_I18n_convert(lb->charset, DILLO_CHARSET,
++ URL_STR_(url), -1);
+ Html_set_link_coordinates(lb, link, x, y);
+- a_Interface_msg(lb->bw, "%s",
+- URL_ALT_(url) ? URL_ALT_(url) : URL_STR_(url));
++ a_Interface_msg(lb->dd->bw, "%s",
++ URL_ALT_(url) ? URL_ALT_(url) : url_str);
++ g_free(url_str);
+ a_Dw_widget_set_cursor (widget, Dw_cursor_hand);
+- lb->bw->status_is_link = 1;
+-
++ lb->dd->bw->status_is_link = 1;
+ } else {
+- if (lb->bw->status_is_link)
+- a_Interface_msg(lb->bw, "");
++ if (lb->dd->bw->status_is_link)
++ a_Interface_msg(lb->dd->bw, "");
+ a_Dw_widget_set_cursor (widget, NULL);
+ }
+ }
+@@ -343,26 +388,26 @@ static gboolean Html_link_menu(DwWidget
+
+ if (event->button == 3) {
+ Html_set_link_coordinates(lb, link, x, y);
+- a_Menu_popup_set_url(lb->bw, lb->links[link]);
++ a_Menu_popup_set_url(lb->dd->bw, lb->links[link]);
+
+ /* if we've got an image, prepare the image popup */
+ widget_at_cursor =
+ a_Dw_gtk_scrolled_window_widget_at_viewport_point(
+- GTK_DW_SCROLLED_WINDOW (lb->bw->docwin), event->x, event->y);
++ GTK_DW_SCROLLED_WINDOW (lb->dd->docwin), event->x, event->y);
+ if (widget_at_cursor && DW_IS_IMAGE (widget_at_cursor)) {
+ DwImage *image = DW_IMAGE (widget_at_cursor);
+ /* test image->url (it may have not started to arrive yet!) */
+ if (image->url) {
+ /* use the second URL for this popup */
+- gtk_object_set_data(GTK_OBJECT (lb->bw->menu_popup.over_image),
++ gtk_object_set_data(GTK_OBJECT (lb->dd->bw->menu_popup.over_image),
+ "url2", GINT_TO_POINTER(2));
+- a_Menu_popup_set_url2(lb->bw, image->url);
++ a_Menu_popup_set_url2(lb->dd->bw, image->url);
+ show_oi = TRUE;
+ }
+ }
+- a_Menu_popup_ol_show_oi(lb->bw, show_oi);
++ a_Menu_popup_ol_show_oi(lb->dd->bw, show_oi);
+
+- gtk_menu_popup(GTK_MENU(lb->bw->menu_popup.over_link), NULL, NULL,
++ gtk_menu_popup(GTK_MENU(lb->dd->bw->menu_popup.over_link), NULL, NULL,
+ NULL, NULL, event->button, event->time);
+ return TRUE;
+ }
+@@ -375,21 +420,60 @@ static gboolean Html_link_menu(DwWidget
+ * Activate a link ("link_clicked" callback of the page)
+ */
+ static gboolean Html_link_clicked(DwWidget *widget, gint link, gint x, gint y,
+- GdkEventButton *event, DilloHtmlLB *lb)
++ GdkEventButton *event, DilloHtmlLB *lb)
+ {
++ DilloDoc *named_dd;
++ gchar *target;
++ gboolean return_val;
++
++ return_val = FALSE;
++
+ Html_set_link_coordinates(lb, link, x, y);
+- if (event->button == 1)
+- a_Nav_push(lb->bw, lb->links[link]);
+- else if (event->button == 2) {
+- a_Nav_push_nw(lb->bw, lb->links[link]);
+- } else {
+- return FALSE;
++
++ switch (event->button) {
++ case 1:
++ if (event->state & GDK_SHIFT_MASK) {
++ /* shift-click: open in new window */
++ a_Menu_popup_set_url(lb->dd->bw, lb->links[link]);
++ a_Commands_open_link_nw_callback(NULL, lb->dd->bw);
++#ifndef DISABLE_TABS
++ } else if (event->state & GDK_CONTROL_MASK) {
++ /* control-click: open in new tab */
++ a_Menu_popup_set_url(lb->dd->bw, lb->links[link]);
++ a_Commands_open_link_nw_tab_callback(NULL, lb->dd->bw);
++#endif /* !DISABLE_TABS */
++ } else {
++ if((target = (gchar *) URL_TARGET_(lb->links[link])))
++ /* targeted link or base target, open in either existing
++ * named document or new document */
++ if ((named_dd = a_Doc_get_by_name(lb->dd, (gchar *) target)))
++ a_Nav_push(named_dd, lb->links[link]);
++ else {
++ a_Menu_popup_set_url(lb->dd->bw, lb->links[link]);
++ a_Commands_open_link_nw_callback(NULL, lb->dd->bw);
++ }
++ else
++ a_Nav_push(lb->dd, lb->links[link]);
++ }
++ return_val = TRUE;
++ break;
++ case 2:
++ a_Menu_popup_set_url(lb->dd->bw, lb->links[link]);
++#ifndef DISABLE_TABS
++ if(prefs.tab_instead_of_window)
++ a_Commands_open_link_nw_tab_callback(NULL, lb->dd->bw);
++ else
++#endif /* !DISABLE_TABS */
++ a_Commands_open_link_nw_callback(NULL, lb->dd->bw);
++ return_val = TRUE;
++ break;
++ default:
++ break;
+ }
+
+ if (DW_IS_PAGE (widget))
+ a_Dw_page_change_link_color (DW_PAGE (widget), link, lb->visited_color);
+-
+- return TRUE;
++ return return_val;
+ }
+
+ /*
+@@ -397,14 +481,14 @@ static gboolean Html_link_clicked(DwWidg
+ */
+ static gboolean Html_image_menu(DwWidget *widget,
+ gint32 x, gint32 y, GdkEventButton *event,
+- BrowserWindow *bw)
++ DilloDoc *dd)
+ {
+ DwImage *image = DW_IMAGE (widget);
+ if (event->button == 3 && image->url) {
+- a_Menu_popup_set_url(bw, image->url);
+- a_Menu_popup_clear_url2(bw->menu_popup.over_image);
++ a_Menu_popup_set_url(dd->bw, image->url);
++ a_Menu_popup_clear_url2(dd->bw->menu_popup.over_image);
+
+- gtk_menu_popup(GTK_MENU(bw->menu_popup.over_image), NULL, NULL,
++ gtk_menu_popup(GTK_MENU(dd->bw->menu_popup.over_image), NULL, NULL,
+ NULL, NULL, event->button, event->time);
+ return TRUE;
+ }
+@@ -416,19 +500,62 @@ static gboolean Html_image_menu(DwWidget
+ * Popup the page menu ("button_press_event" callback of the viewport)
+ */
+ static int Html_page_menu(GtkWidget *viewport, GdkEventButton *event,
+- BrowserWindow *bw)
++ DilloDoc *dd)
+ {
+ gpointer bug_pix;
+-
+ if (event->button == 3) {
+ /* set the working URL */
+- a_Menu_popup_set_url(bw, a_History_get_url(NAV_TOP(bw)));
++ a_Menu_popup_set_url(dd->bw, a_History_get_url(NAV_TOP(dd)));
++ if(dd->pagemarks_menu) {
++ /* this dd has a pagemarks menu, hook it up to the window's menu */
++ gtk_menu_item_set_submenu(GTK_MENU_ITEM(dd->bw->pagemarks_menuitem),
++ dd->pagemarks_menu);
++ gtk_widget_set_sensitive(dd->bw->pagemarks_menuitem, TRUE);
++ } else {
++ /* remove pagemarks submenu from window's menu */
++ gtk_widget_set_sensitive(dd->bw->pagemarks_menuitem, FALSE);
++ }
++ if(dd->parent) {
++ /* this is a frame or an iframe, create frame menu */
++ if(dd->bw->menu_popup.over_frame) {
++ gtk_widget_destroy(dd->bw->menu_popup.over_frame);
++ dd->bw->menu_popup.over_frame = NULL;
++ }
++ dd->bw->menu_popup.over_frame = a_Menu_popup_of_new(dd);
++ gtk_menu_item_set_submenu(GTK_MENU_ITEM(dd->bw->frame_menuitem),
++ dd->bw->menu_popup.over_frame);
++ gtk_widget_set_sensitive(dd->bw->frame_menuitem, TRUE);
++ if((dd->parent)->parent) {
++ /* this is a nested frame, show frameset menu
++ * TODO: currently the frameset menu also shows for nested
++ * iframes. It does not do harm, but it is not that useful... */
++ gtk_menu_item_set_submenu(GTK_MENU_ITEM(dd->bw->frameset_menuitem),
++ a_Menu_popup_ofs_new(dd));
++ gtk_widget_set_sensitive(dd->bw->frameset_menuitem, TRUE);
++ gtk_widget_show(dd->bw->frameset_menuitem);
++ } else {
++ gtk_widget_set_sensitive(dd->bw->frameset_menuitem, FALSE);
++ gtk_widget_hide(dd->bw->frameset_menuitem);
++ }
++ gtk_widget_show(dd->bw->frame_menuitem);
++ } else {
++ /* this is an unparented document, disable/destroy frame menu */
++ if(dd->bw->menu_popup.over_frame) {
++ gtk_widget_destroy(dd->bw->menu_popup.over_frame);
++ dd->bw->menu_popup.over_frame = NULL;
++ }
++ gtk_widget_set_sensitive(dd->bw->frame_menuitem, FALSE);
++ gtk_widget_hide(dd->bw->frame_menuitem);
++ gtk_widget_set_sensitive(dd->bw->frameset_menuitem, FALSE);
++ gtk_widget_hide(dd->bw->frameset_menuitem);
++ }
++
+ /* set "View page Bugs" sensitivity */
+- bug_pix = gtk_object_get_data(GTK_OBJECT(bw->status_bug_meter), "bug");
+- gtk_widget_set_sensitive(bw->viewbugs_menuitem,
++ bug_pix = gtk_object_get_data(GTK_OBJECT(dd->bw->status_bug_meter), "bug");
++ gtk_widget_set_sensitive(dd->bw->viewbugs_menuitem,
+ GTK_WIDGET_VISIBLE(GTK_WIDGET(bug_pix)));
+- gtk_menu_popup(GTK_MENU(bw->menu_popup.over_page), NULL, NULL,
+- NULL, NULL, event->button, event->time);
++ gtk_menu_popup(GTK_MENU(dd->bw->menu_popup.over_page), NULL, NULL,
++ NULL, NULL, event->button, event->time);
+ return TRUE;
+ } else
+ return FALSE;
+@@ -458,6 +585,7 @@ static gint Html_set_new_link(DilloHtml
+ {
+ gint nl;
+
++ a_Url_set_referer(*url, html->linkblock->base_url);
+ nl = html->linkblock->num_links;
+ a_List_add(html->linkblock->links, nl, html->linkblock->num_links_max);
+ html->linkblock->links[nl] = (*url) ? *url : NULL;
+@@ -480,7 +608,7 @@ static int Html_check_int(int n, int min
+ static gint Html_form_new(DilloHtmlLB *html_lb,
+ DilloHtmlMethod method,
+ const DilloUrl *action,
+- DilloHtmlEnc enc)
++ gchar *encoding)
+ {
+ gint nf;
+
+@@ -489,7 +617,7 @@ static gint Html_form_new(DilloHtmlLB *h
+ nf = html_lb->num_forms;
+ html_lb->forms[nf].method = method;
+ html_lb->forms[nf].action = a_Url_dup(action);
+- html_lb->forms[nf].enc = enc;
++ html_lb->forms[nf].charset = g_strdup(encoding);
+ html_lb->forms[nf].num_inputs = 0;
+ html_lb->forms[nf].num_inputs_max = 4;
+ html_lb->forms[nf].inputs = NULL;
+@@ -514,7 +642,7 @@ static gint Html_form_new(DilloHtmlLB *h
+ style_attrs = *old_style; \
+ style_attrs.var = (val); \
+ (html)->stack[(html)->stack_top].style = \
+- a_Dw_style_new (&style_attrs, (html)->bw->main_window->window); \
++ a_Dw_style_new (&style_attrs, (html)->dd->bw->main_window->window); \
+ a_Dw_style_unref (old_style); \
+ } while (FALSE)
+
+@@ -539,6 +667,7 @@ static void Html_set_top_font(DilloHtml
+ (prefs.use_oblique ?
+ DW_STYLE_FONT_STYLE_OBLIQUE : DW_STYLE_FONT_STYLE_ITALIC) :
+ DW_STYLE_FONT_STYLE_NORMAL;
++ strncpy(font_attrs.lang, html->linkblock->lang, 6);
+
+ HTML_SET_TOP_ATTR (html, font, a_Dw_style_font_new (&font_attrs));
+ }
+@@ -625,13 +754,13 @@ static void Html_add_indented_widget(Dil
+ a_Dw_style_box_set_border_color
+ (&style_attrs,
+ a_Dw_style_shaded_color_new(style_attrs.color->color_val,
+- html->bw->main_window->window));
++ html->dd->bw->main_window->window));
+ a_Dw_style_box_set_border_style(&style_attrs, DW_STYLE_BORDER_DASHED);
+ #endif
+
+ style_attrs.margin.left = left;
+ style_attrs.margin.right = right;
+- style = a_Dw_style_new (&style_attrs, html->bw->main_window->window);
++ style = a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window);
+
+ a_Dw_page_add_parbreak (DW_PAGE (html->dw), space, style);
+ a_Dw_page_add_widget (DW_PAGE (html->dw), page, style);
+@@ -661,11 +790,11 @@ static gint Html_fontsize_to_level(gint
+ {
+ gint i, level;
+ gdouble normalized_size = fontsize / prefs.font_factor,
+- approximation = FontSizes[FontSizesNum-1] + 1;
++ approximation = prefs.font_sizes[D_FONT_SIZE_NUM-1] + 1;
+
+- for (i = level = 0; i < FontSizesNum; i++)
+- if (approximation >= fabs(normalized_size - FontSizes[i])) {
+- approximation = fabs(normalized_size - FontSizes[i]);
++ for (i = level = 0; i < D_FONT_SIZE_NUM; i++)
++ if (approximation >= fabs(normalized_size - prefs.font_sizes[i])) {
++ approximation = fabs(normalized_size - prefs.font_sizes[i]);
+ level = i;
+ } else {
+ break;
+@@ -680,9 +809,9 @@ static gint Html_fontsize_to_level(gint
+ static gint Html_level_to_fontsize(gint level)
+ {
+ level = MAX(0, level);
+- level = MIN(FontSizesNum - 1, level);
++ level = MIN(D_FONT_SIZE_NUM - 1, level);
+
+- return rint(FontSizes[level]*prefs.font_factor);
++ return rint(prefs.font_sizes[level]*prefs.font_factor);
+ }
+
+ /*
+@@ -706,13 +835,14 @@ static void Html_set_dwpage(DilloHtml *h
+ font.size = Html_level_to_fontsize(FontSizesBase);
+ font.weight = 400;
+ font.style = DW_STYLE_FONT_STYLE_NORMAL;
++ strncpy(font.lang, html->linkblock->lang, 6);
+
+- a_Dw_style_init_values (&style_attrs, html->bw->main_window->window);
++ a_Dw_style_init_values (&style_attrs, html->dd->bw->main_window->window);
+ style_attrs.font = a_Dw_style_font_new (&font);
+ style_attrs.color = a_Dw_style_color_new (prefs.text_color,
+- html->bw->main_window->window);
++ html->dd->bw->main_window->window);
+ html->stack[0].style = a_Dw_style_new (&style_attrs,
+- html->bw->main_window->window);
++ html->dd->bw->main_window->window);
+
+ html->stack[0].table_cell_style = NULL;
+
+@@ -720,21 +850,21 @@ static void Html_set_dwpage(DilloHtml *h
+ Html_connect_signals(html, GTK_OBJECT(widget));
+
+ gtk_signal_connect_while_alive (
+- GTK_OBJECT(GTK_BIN(html->bw->docwin)->child), "button_press_event",
+- GTK_SIGNAL_FUNC(Html_page_menu), (gpointer)html->bw, GTK_OBJECT (page));
++ GTK_OBJECT(GTK_BIN(html->dd->docwin)->child), "button_press_event",
++ GTK_SIGNAL_FUNC(Html_page_menu), (gpointer)html->dd, GTK_OBJECT (page));
+
+ /* Connect the "bug meter" button-press to the linkblock */
+ gtk_signal_connect_while_alive(
+- GTK_OBJECT (html->bw->status_bug_meter), "clicked",
++ GTK_OBJECT (html->dd->bw->status_bug_meter), "clicked",
+ GTK_SIGNAL_FUNC (a_Commands_view_page_bugs_callback),
+ (gpointer)html->linkblock, GTK_OBJECT (page));
+ gtk_signal_connect_while_alive(
+- GTK_OBJECT (html->bw->status_bug_meter), "clicked1",
++ GTK_OBJECT (html->dd->bw->status_bug_meter), "clicked1",
+ GTK_SIGNAL_FUNC (a_Commands_view_page_bugs_callback),
+ (gpointer)html->linkblock, GTK_OBJECT (page));
+ /* also connect with the "View page Bugs" menuitem */
+ gtk_signal_connect_while_alive(
+- GTK_OBJECT (html->bw->viewbugs_menuitem), "activate",
++ GTK_OBJECT (html->dd->bw->viewbugs_menuitem), "activate",
+ GTK_SIGNAL_FUNC (a_Commands_view_page_bugs_callback),
+ (gpointer)html->linkblock, GTK_OBJECT (page));
+
+@@ -747,7 +877,7 @@ static void Html_set_dwpage(DilloHtml *h
+ /*
+ * Create and initialize a new DilloHtml structure
+ */
+-static DilloHtml *Html_new(BrowserWindow *bw, const DilloUrl *url)
++static DilloHtml *Html_new(DilloDoc *dd, const DilloUrl *url)
+ {
+ DilloHtml *html;
+
+@@ -755,6 +885,7 @@ static DilloHtml *Html_new(BrowserWindow
+
+ html->Start_Buf = NULL;
+ html->Start_Ofs = 0;
++ html->Buf_Size = 0;
+ html->CurrTagOfs = 0;
+ html->OldTagOfs = 0;
+ html->OldTagLine = 1;
+@@ -763,8 +894,8 @@ static DilloHtml *Html_new(BrowserWindow
+ html->DocTypeVersion = 0.0f;
+
+ html->dw = NULL;
+- html->bw = bw;
+- html->linkblock = Html_lb_new(bw, url);
++ html->dd = dd;
++ html->linkblock = Html_lb_new(dd, url);
+
+ html->stack_max = 16;
+ html->stack_top = 0;
+@@ -774,6 +905,8 @@ static DilloHtml *Html_new(BrowserWindow
+ html->stack[0].table_cell_style = NULL;
+ html->stack[0].parse_mode = DILLO_HTML_PARSE_MODE_INIT;
+ html->stack[0].table_mode = DILLO_HTML_TABLE_MODE_NONE;
++ html->stack[0].frame_mode = DILLO_HTML_FRAME_MODE_NONE;
++ html->stack[0].frameset = NULL;
+ html->stack[0].cell_text_align_set = FALSE;
+ html->stack[0].list_type = HTML_LIST_NONE; /* no <ul> or <ol> open */
+ html->stack[0].list_number = 0;
+@@ -806,6 +939,10 @@ static DilloHtml *Html_new(BrowserWindow
+
+ html->attr_data = g_string_sized_new(1024);
+
++ html->trans = NULL; /* no conversion yet */
++ html->server_charset = NULL;
++ html->lang = NULL;
++
+ Html_set_dwpage(html);
+
+ return html;
+@@ -823,11 +960,11 @@ static void Html_stash_init(DilloHtml *h
+
+ /* Entities list from the HTML 4.01 DTD */
+ typedef struct {
+- char *entity;
+- int isocode;
++ gchar *entity;
++ guint isocode;
+ } Ent_t;
+
+-#define NumEnt 252
++#define NumEnt 253
+ static const Ent_t Entities[NumEnt] = {
+ {"AElig",0306}, {"Aacute",0301}, {"Acirc",0302}, {"Agrave",0300},
+ {"Alpha",01621},{"Aring",0305}, {"Atilde",0303}, {"Auml",0304},
+@@ -846,7 +983,7 @@ static const Ent_t Entities[NumEnt] = {
+ {"Yacute",0335},{"Yuml",0570}, {"Zeta",01626}, {"aacute",0341},
+ {"acirc",0342}, {"acute",0264}, {"aelig",0346}, {"agrave",0340},
+ {"alefsym",020465},{"alpha",01661},{"amp",38}, {"and",021047},
+- {"ang",021040}, {"aring",0345}, {"asymp",021110},{"atilde",0343},
++ {"ang",021040},{"apos",34},{"aring",0345},{"asymp",021110},{"atilde",0343},
+ {"auml",0344}, {"bdquo",020036},{"beta",01662}, {"brvbar",0246},
+ {"bull",020042},{"cap",021051}, {"ccedil",0347}, {"cedil",0270},
+ {"cent",0242}, {"chi",01707}, {"circ",01306}, {"clubs",023143},
+@@ -894,6 +1031,41 @@ static const Ent_t Entities[NumEnt] = {
+ {"yuml",0377}, {"zeta",01666}, {"zwj",020015}, {"zwnj",020014}
+ };
+
++/* A table for numbered entities. For Latin-1 text this is a 1-1 mapping.
++ * It is more complicated for other character encodings. */
++static char *NumberedEnts[256] = {
++ "?","\001","\002","\003","\004","\005","\006","\007",
++ "\010","\011","\012","\013","\014","\015","\016","\017",
++ "\020","\021","\022","\023","\024","\025","\026","\027",
++ "\030","\031","\032","\033","\034","\035","\036","\037",
++ "\040","!","\042","#","\044","\045","&","\047",
++ "(",")","*","+",",","-",".","/",
++ "0","1","2","3","4","5","6","7",
++ "8","9",":",";","<","=",">","?",
++ "@","A","B","C","D","E","F","G",
++ "H","I","J","K","L","M","N","O",
++ "P","Q","R","S","T","U","V","W",
++ "X","Y","Z","\133","\134","\135","^","_",
++ "\140","a","b","c","d","e","f","g",
++ "h","i","j","k","l","m","n","o",
++ "p","q","r","s","t","u","v","w",
++ "x","y","z","{","\174","}","~","\177",
++ "\200","\201","\202","\203","\204","\205","\206","\207",
++ "\210","\211","\212","\213","\214","\215","\216","\217",
++ "\220","\221","\222","\223","\224","\225","\226","\227",
++ "\230","\231","\232","\233","\234","\235","\236","\237",
++ " ","!", NULL, NULL, "?", NULL, "|", NULL,
++ NULL, "(c)", "a", "<<", NULL, "-", "(R)",
++ NULL, NULL, NULL, "^2", "^3", NULL,
++ "\xcc\xa6", NULL, NULL, ",", "^1", NULL, ">>", "1/4",
++ "1/2", "3/4", "?", "A`", "A'", "A^", "A~", "A\"", "A", "AE", "C", "E`",
++ "E'", "E^", "E\"", "I`", "I'", "I^", "I\"", "D", "N~", "O`", "O'", "O^",
++ "O~", "O\"", NULL, "O/", "U`", "U'", "U^", "U\"", "Y'", "?", "ss",
++ "a`", "a'", "a^", "a~", "a\"", "a", "ae", "c", "e`", "e'", "e^", "e\"",
++ "i`", "i'", "i^", "i\"", "?", "n~", "o`", "o'", "o^", "o~", "o\"",
++ NULL, "o/", "u`", "u'", "u^", "u\"", "y'", "Io", "y\""
++};
++
+
+ /*
+ * Comparison function for binary search
+@@ -917,6 +1089,7 @@ static int Html_entity_search(char *key)
+ return -1;
+ }
+
++#if 0 /* no use on i18n */
+ /*
+ * Switch a few UCS encodings to latin1.
+ */
+@@ -933,7 +1106,7 @@ static gint Html_try_ucs2latin1(gint iso
+ case 0x2039: ret = '<'; break;
+ case 0x203a: ret = '>'; break;
+ case 0x2022: ret = 176; break;
+- default: ret = -1; break;
++ default: ret = isocode; break;
+ }
+ return ret;
+ }
+@@ -956,6 +1129,61 @@ static gint Html_try_ascii2latin1(gint i
+ }
+ return ret;
+ }
++#endif
++
++/* Change from UCS2 to Dillo internal code. */
++static gchar *Html_ucs2utf8(DilloHtml *html, gint isocode) {
++ gchar *ret = NULL;
++
++ /* Try substitute ascii string. this is a temporary step. */
++ if (!a_I18n_has_latin1_charset(html->linkblock->lang)) {
++ if (isocode > 0 && isocode <= 255) {
++ ret = NumberedEnts[isocode];
++ } else switch (isocode) {
++ case 338: ret = "OE"; break;
++ case 339: ret = "oe"; break;
++ case 352: ret = "S^"; break;
++ case 353: ret = "s^"; break;
++ case 376: ret = "Y\""; break;
++ case 402: ret = "f"; break;
++ case 710: ret = "^"; break;
++ case 732: ret = "~"; break;
++ case 8226: ret = "\xe3\x83\xbb"; break;
++ case 8482: ret = "TM"; break;
++ case 8544: ret = "I"; break;
++ case 8545: ret = "II"; break;
++ case 8546: ret = "III"; break;
++ case 8547: ret = "IV"; break;
++ case 8548: ret = "V"; break;
++ case 8549: ret = "VI"; break;
++ case 8550: ret = "VII"; break;
++ case 8551: ret = "VIII"; break;
++ case 8552: ret = "IX"; break;
++ case 8553: ret = "X"; break;
++ case 8554: ret = "XI"; break;
++ case 8555: ret = "XII"; break;
++ case 8722: ret = "-"; break;
++ default:
++ if (isocode >= 8194 && isocode <= 8207) ret = " ";
++ }
++ }
++ switch (isocode) {
++ case 8656: ret = "<="; break;
++ case 8727: ret = "*"; break;
++ case 8764: ret = "~"; break;
++ case 8901: ret = "."; break;
++ case 9001: ret = "<"; break;
++ case 9002: ret = ">"; break;
++ default: break;
++ }
++ if (ret) return g_strdup(ret);
++
++ {
++ /* ISO-10646/UCS2 or ISO-10646-UCS-2 */
++ gchar wc[3] = {(gchar)isocode, (gchar)(isocode>>8), 0};
++ return a_I18n_convert("UCS-2LE", DILLO_CHARSET, wc, 2);
++ }
++}
+
+ /*
+ * Given an entity, return the ISO-Latin1 character code.
+@@ -984,7 +1212,7 @@ static gint Html_parse_entity(DilloHtml
+ /* strtol with base 16 accepts leading "0x" - we don't */
+ if (*s == '0' && s[1] == 'x') {
+ s++;
+- isocode = 0;
++ isocode = 0;
+ } else {
+ isocode = strtol(s, &s, 16);
+ }
+@@ -995,7 +1223,7 @@ static gint Html_parse_entity(DilloHtml
+
+ if (!isocode || errno || isocode > 0x7fffffffL) {
+ /* this catches null bytes, errors and codes >=2^31 */
+- MSG_HTML("numeric character reference out of range\n");
++ MSG_HTML(_("numeric character reference out of range\n"));
+ isocode = -2;
+ }
+
+@@ -1003,19 +1231,19 @@ static gint Html_parse_entity(DilloHtml
+ if (*s == ';')
+ s++;
+ else if (prefs.show_extra_warnings)
+- MSG_HTML("numeric character reference without trailing ';'\n");
++ MSG_HTML(_("numeric character reference without trailing ';'\n"));
+ }
+
+ } else if (isalpha(*s)) {
+ /* character entity reference */
+- while (isalnum(*++s) || strchr(":_.-", *s));
++ while (*++s && (isalnum(*s) || strchr(":_.-", *s)));
+ c = *s;
+ *s = 0;
+
+ if (c != ';' || (i = Html_entity_search(tok)) == -1) {
+ if ((html->DocType == DT_HTML && html->DocTypeVersion == 4.01f) ||
+ html->DocType == DT_XHTML)
+- MSG_HTML("undefined character entity '%s'\n", tok);
++ MSG_HTML(_("undefined character entity '%s'\n"), tok);
+ isocode = -3;
+ } else
+ isocode = Entities[i].isocode;
+@@ -1023,20 +1251,23 @@ static gint Html_parse_entity(DilloHtml
+ if (c == ';')
+ s++;
+ else if (prefs.show_extra_warnings)
+- MSG_HTML("character entity reference without trailing ';'\n");
++ MSG_HTML(_("character entity reference without trailing ';'\n"));
+ }
+
+ *entsize = s-tok+1;
+ g_free(tok);
+
++#if 0 /* no use on i18n */
+ if (isocode >= 128 && isocode <= 159) {
+- MSG_HTML("code positions 128-159 are not defined for ISO Latin-1\n");
++ MSG_HTML(_("code positions 128-159 are not defined for ISO Latin-1\n"));
+ isocode = Html_try_ascii2latin1(isocode);
+ } else if (isocode > 255)
+ /* Try a few UCS translations to Latin1 */
+ isocode = Html_try_ucs2latin1(isocode);
+- else if (isocode == -1 && prefs.show_extra_warnings)
+- MSG_HTML("literal '&'\n");
++ else
++#endif
++ if (isocode == -1 && prefs.show_extra_warnings)
++ MSG_HTML(_("literal '&'\n"));
+
+ return isocode;
+ }
+@@ -1049,7 +1280,7 @@ static char *
+ Html_parse_entities(DilloHtml *html, gchar *token, gint toksize)
+ {
+ gchar *esc_set = "&\xE2\xC2";
+- gchar *new_str;
++ gchar *new_str, *subst, *subst_start;
+ gint i, j, isocode, entsize;
+
+ new_str = g_strndup(token, toksize);
+@@ -1060,9 +1291,14 @@ static char *
+ if (token[i] == '&' &&
+ (isocode = Html_parse_entity(html, token+i,
+ toksize-i, &entsize)) >= 0) {
+- new_str[j++] = (gchar) isocode;
++ subst = subst_start = Html_ucs2utf8(html, isocode);
++ while (*subst != '\0') { /* insert the actual character */
++ new_str[j++] = *subst;
++ subst++;
++ }
++ g_free(subst_start);
+ i += entsize-1;
+-
++#if 0 /* no use on i18n */
+ } else if (token[i] == '\xE2' && token[i+1] == '\x80' && i+2 < toksize){
+ /* Hack: for parsing some UTF-8 characters into latin1 */
+ switch (token[i+2]) {
+@@ -1093,6 +1329,7 @@ static char *
+ new_str[j++] = ' ';
+ ++i;
+
++#endif
+ } else {
+ new_str[j++] = token[i];
+ }
+@@ -1139,7 +1376,7 @@ static void Html_process_space(DilloHtml
+ break;
+ case '\t':
+ if (prefs.show_extra_warnings)
+- MSG_HTML("TAB character inside <PRE>\n");
++ MSG_HTML(_("TAB character inside <PRE>\n"));
+ offset = TAB_SIZE - html->pre_column % TAB_SIZE;
+ a_Dw_page_add_text(DW_PAGE (html->dw),
+ g_strnfill(offset, ' '),
+@@ -1375,7 +1612,7 @@ static void Html_tag_cleanup_at_close(Di
+ /* Warn when we decide to close an open tag (for !w3c_mode) */
+ if (html->stack_top > stack_idx &&
+ Tags[toptag_idx].EndTag != 'O')
+- MSG_HTML(" - forcing close of open tag: <%s>\n",
++ MSG_HTML(_(" - forcing close of open tag: <%s>\n"),
+ Tags[toptag_idx].name);
+
+ /* Close this and only this tag */
+@@ -1384,7 +1621,7 @@ static void Html_tag_cleanup_at_close(Di
+ }
+
+ } else {
+- MSG_HTML("unexpected closing tag: </%s>. -- expected </%s>\n",
++ MSG_HTML(_("unexpected closing tag: </%1$s>. -- expected </%2$s>\n"),
+ Tags[new_idx].name, html->stack[stack_idx].tag_name);
+ }
+ }
+@@ -1429,6 +1666,7 @@ static DwStyleLength Html_parse_length_o
+ end += 2;
+ */
+ default:
++ v = (v > G_MAXSHORT*2) ? DW_STYLE_LENGTH_AUTO : v;
+ l = DW_STYLE_CREATE_ABS_LENGTH ((gint)v);
+ break;
+ }
+@@ -1455,7 +1693,7 @@ static DwStyleLength Html_parse_length (
+ else {
+ /* allow only whitespaces */
+ if (*end && !isspace (*end)) {
+- MSG_HTML("Garbage after length: %s\n", attr);
++ MSG_HTML(_("Garbage after length: %s\n"), attr);
+ return DW_STYLE_LENGTH_AUTO;
+ }
+ }
+@@ -1474,7 +1712,7 @@ static gint32
+ gint32 color = a_Color_parse(subtag, default_color, &err);
+
+ if (err) {
+- MSG_HTML("color is not in \"#RRGGBB\" format\n");
++ MSG_HTML(_("color is not in \"#RRGGBB\" format\n"));
+ }
+ return color;
+ }
+@@ -1494,8 +1732,8 @@ static gint
+ break;
+
+ if (val[i] || !isalpha(val[0]))
+- MSG_HTML("'%s' value is not of the form "
+- "[A-Za-z][A-Za-z0-9:_.-]*\n", attrname);
++ MSG_HTML(_("'%s' value is not of the form "
++ "[A-Za-z][A-Za-z0-9:_.-]*\n"), attrname);
+
+ return !(val[i]);
+ }
+@@ -1591,12 +1829,18 @@ static void Html_parse_doctype(DilloHtml
+ */
+ static void Html_tag_open_html(DilloHtml *html, char *tag, gint tagsize)
+ {
++ const char *attrbuf;
++
+ if (!(html->InFlags & IN_HTML))
+ html->InFlags |= IN_HTML;
+ ++html->Num_HTML;
+
+ if (html->Num_HTML > 1) {
+- MSG_HTML("HTML element was already open\n");
++ MSG_HTML(_("HTML element was already open\n"));
++ }
++
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "lang"))) {
++ strncpy(html->linkblock->lang, attrbuf, 6);
+ }
+ }
+
+@@ -1619,7 +1863,7 @@ static void Html_tag_close_html(DilloHtm
+ static void Html_tag_open_head(DilloHtml *html, char *tag, gint tagsize)
+ {
+ if (html->InFlags & IN_BODY) {
+- MSG_HTML("HEAD element must go before the BODY section\n");
++ MSG_HTML(_("HEAD element must go before the BODY section\n"));
+ html->ReqTagClose = TRUE;
+ return;
+ }
+@@ -1629,7 +1873,7 @@ static void Html_tag_open_head(DilloHtml
+ ++html->Num_HEAD;
+
+ if (html->Num_HEAD > 1) {
+- MSG_HTML("HEAD element was already open\n");
++ MSG_HTML(_("HEAD element was already open\n"));
+ }
+ }
+
+@@ -1642,8 +1886,8 @@ static void Html_tag_close_head(DilloHtm
+ {
+ if (html->InFlags & IN_HEAD) {
+ if (html->Num_TITLE == 0)
+- MSG_HTML("HEAD section lacks the TITLE element\n");
+-
++ MSG_HTML(_("HEAD section lacks the TITLE element\n"));
++
+ html->InFlags &= ~IN_HEAD;
+ }
+ Html_pop_tag(html, TagIdx);
+@@ -1667,10 +1911,10 @@ static void Html_tag_close_title(DilloHt
+ {
+ if (html->InFlags & IN_HEAD) {
+ /* title is only valid inside HEAD */
+- a_Interface_set_page_title(html->linkblock->bw, html->Stash->str);
+- a_History_set_title(NAV_TOP(html->linkblock->bw), html->Stash->str);
++ a_Doc_title_set(html->linkblock->dd, html->Stash->str);
++ a_History_set_title(NAV_TOP(html->linkblock->dd), html->Stash->str);
+ } else {
+- MSG_HTML("the TITLE element must be inside the HEAD section\n");
++ MSG_HTML(_("the TITLE element must be inside the HEAD section\n"));
+ }
+ Html_pop_tag(html, TagIdx);
+ }
+@@ -1725,17 +1969,26 @@ static void Html_tag_open_body(DilloHtml
+ DwStyle style_attrs, *style;
+ gint32 color;
+
++ /* if document contains frameset, ignore body */
++ if (html->InFlags & IN_FRAMESET) return;
++ /* in body, so hide/remove frameset and show docwin */
++ if (html->dd->frameset && GTK_IS_WIDGET(html->dd->frameset)) {
++ gtk_widget_destroy(html->dd->frameset);
++ html->dd->frameset = NULL;
++ gtk_widget_show(GTK_WIDGET(html->dd->docwin));
++ }
++
+ if (!(html->InFlags & IN_BODY))
+ html->InFlags |= IN_BODY;
+ ++html->Num_BODY;
+
+ if (html->Num_BODY > 1) {
+- MSG_HTML("BODY element was already open\n");
++ MSG_HTML(_("BODY element was already open\n"));
+ return;
+ }
+ if (html->InFlags & IN_HEAD) {
+ /* if we're here, it's bad XHTML, no need to recover */
+- MSG_HTML("unclosed HEAD element\n");
++ MSG_HTML(_("unclosed HEAD element\n"));
+ }
+
+ page = DW_PAGE (html->dw);
+@@ -1749,8 +2002,8 @@ static void Html_tag_open_body(DilloHtml
+
+ style_attrs = *html->dw->style;
+ style_attrs.background_color =
+- a_Dw_style_color_new (color, html->bw->main_window->window);
+- style = a_Dw_style_new (&style_attrs, html->bw->main_window->window);
++ a_Dw_style_color_new (color, html->dd->bw->main_window->window);
++ style = a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window);
+ a_Dw_widget_set_style (html->dw, style);
+ a_Dw_style_unref (style);
+ html->stack[html->stack_top].current_bg_color = color;
+@@ -1760,7 +2013,7 @@ static void Html_tag_open_body(DilloHtml
+ color = Html_color_parse(html, attrbuf, prefs.text_color);
+ HTML_SET_TOP_ATTR
+ (html, color,
+- a_Dw_style_color_new (color, html->bw->main_window->window));
++ a_Dw_style_color_new (color, html->dd->bw->main_window->window));
+ }
+
+ if ((attrbuf = Html_get_attr(html, tag, tagsize, "link")))
+@@ -1845,7 +2098,7 @@ static void Html_tag_open_table(DilloHtm
+ (&style_attrs,
+ a_Dw_style_shaded_color_new (
+ html->stack[html->stack_top].current_bg_color,
+- html->bw->main_window->window));
++ html->dd->bw->main_window->window));
+ a_Dw_style_box_set_border_style (&style_attrs, DW_STYLE_BORDER_OUTSET);
+ style_attrs.border_spacing = cellspacing;
+
+@@ -1879,11 +2132,11 @@ static void Html_tag_open_table(DilloHtm
+ bgcolor = prefs.bg_color;
+ html->stack[html->stack_top].current_bg_color = bgcolor;
+ style_attrs.background_color =
+- a_Dw_style_color_new (bgcolor, html->bw->main_window->window);
++ a_Dw_style_color_new (bgcolor, html->dd->bw->main_window->window);
+ }
+ }
+
+- tstyle = a_Dw_style_new (&style_attrs, html->bw->main_window->window);
++ tstyle = a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window);
+
+ /* The style for the cells */
+ style_attrs = *html->stack[html->stack_top].style;
+@@ -1900,7 +2153,7 @@ static void Html_tag_open_table(DilloHtm
+
+ old_style = html->stack[html->stack_top].table_cell_style;
+ html->stack[html->stack_top].table_cell_style =
+- a_Dw_style_new (&style_attrs, html->bw->main_window->window);
++ a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window);
+ if (old_style)
+ a_Dw_style_unref (old_style);
+
+@@ -1931,11 +2184,11 @@ static void Html_tag_open_table_cell(Dil
+
+ switch (html->stack[html->stack_top].table_mode) {
+ case DILLO_HTML_TABLE_MODE_NONE:
+- MSG_HTML("<td> or <th> outside <table>\n");
++ MSG_HTML(_("<td> or <th> outside <table>\n"));
+ return;
+
+ case DILLO_HTML_TABLE_MODE_TOP:
+- MSG_HTML("<td> or <th> outside <tr>\n");
++ MSG_HTML(_("<td> or <th> outside <tr>\n"));
+ /* a_Dw_table_add_cell takes care that dillo does not crash. */
+ /* continues */
+ case DILLO_HTML_TABLE_MODE_TR:
+@@ -1957,7 +2210,7 @@ static void Html_tag_open_table_cell(Dil
+ style_attrs.white_space = DW_STYLE_WHITE_SPACE_NORMAL;
+
+ html->stack[html->stack_top].style =
+- a_Dw_style_new (&style_attrs, html->bw->main_window->window);
++ a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window);
+ a_Dw_style_unref (old_style);
+ Html_tag_set_align_attr (html, tag, tagsize);
+
+@@ -1982,7 +2235,7 @@ static void Html_tag_open_table_cell(Dil
+
+ new_style = TRUE;
+ style_attrs.background_color =
+- a_Dw_style_color_new (bgcolor, html->bw->main_window->window);
++ a_Dw_style_color_new (bgcolor, html->dd->bw->main_window->window);
+ html->stack[html->stack_top].current_bg_color = bgcolor;
+ }
+ }
+@@ -1996,7 +2249,7 @@ static void Html_tag_open_table_cell(Dil
+ col_page = a_Dw_page_new ();
+
+ if (new_style) {
+- style = a_Dw_style_new (&style_attrs, html->bw->main_window->window);
++ style = a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window);
+ a_Dw_widget_set_style (col_page, style);
+ a_Dw_style_unref (style);
+ } else
+@@ -2026,6 +2279,7 @@ static void Html_tag_open_table_cell(Dil
+ */
+ static void Html_tag_open_td(DilloHtml *html, char *tag, gint tagsize)
+ {
++ Html_set_top_font(html, NULL, 0, 0, 0);
+ Html_tag_open_table_cell (html, tag, tagsize, DW_STYLE_TEXT_ALIGN_LEFT);
+ }
+
+@@ -2052,7 +2306,7 @@ static void Html_tag_open_tr(DilloHtml *
+ #ifdef USE_TABLES
+ switch (html->stack[html->stack_top].table_mode) {
+ case DILLO_HTML_TABLE_MODE_NONE:
+- _MSG("Invalid HTML syntax: <tr> outside <table>\n");
++ _MSG(_("Invalid HTML syntax: <tr> outside <table>\n"));
+ return;
+
+ case DILLO_HTML_TABLE_MODE_TOP:
+@@ -2069,9 +2323,9 @@ static void Html_tag_open_tr(DilloHtml *
+
+ style_attrs = *html->stack[html->stack_top].style;
+ style_attrs.background_color =
+- a_Dw_style_color_new (bgcolor, html->bw->main_window->window);
++ a_Dw_style_color_new (bgcolor, html->dd->bw->main_window->window);
+ style =
+- a_Dw_style_new (&style_attrs, html->bw->main_window->window);
++ a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window);
+ html->stack[html->stack_top].current_bg_color = bgcolor;
+ }
+ }
+@@ -2090,7 +2344,7 @@ static void Html_tag_open_tr(DilloHtml *
+ if (Html_tag_set_valign_attr (html, tag, tagsize, &style_attrs)) {
+ old_style = html->stack[html->stack_top].table_cell_style;
+ html->stack[html->stack_top].table_cell_style =
+- a_Dw_style_new (&style_attrs, html->bw->main_window->window);
++ a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window);
+ a_Dw_style_unref (old_style);
+ } else
+
+@@ -2107,87 +2361,320 @@ static void Html_tag_open_tr(DilloHtml *
+ #endif
+ }
+
+-/*
+- * <FRAME>, <IFRAME>
+- * todo: This is just a temporary fix while real frame support
+- * isn't finished. Imitates lynx/w3m's frames.
++static void Html_tag_open_noframes (DilloHtml *html, gchar *tag, gint tagsize)
++{
++ if (html->stack[html->stack_top].frame_mode == DILLO_HTML_FRAME_MODE_NONE)
++ MSG_HTML(_("<noframes> outside of <frameset>!!!\n"));
++ /* This code will allow the misuse of <noframes> which often exists. */
++ html->stack[html->stack_top].frame_mode = DILLO_HTML_FRAME_MODE_NOFRAMES;
++}
++
++/* Warning : this is illegal tag not existing! */
++static void Html_tag_open_noframe (DilloHtml *html, gchar *tag, gint tagsize)
++{
++ MSG_HTML(_("<noframe> is illegal tag !!! use <noframes>.\n"));
++ Html_tag_open_noframes (html, tag, tagsize);
++}
++
++/*
++ * <IFRAME>
+ */
+-static void Html_tag_open_frame (DilloHtml *html, gchar *tag, gint tagsize)
++static void Html_tag_open_iframe (DilloHtml *html, gchar *tag, gint tagsize)
+ {
+ const char *attrbuf;
+- gchar *src, *buf;
+ DilloUrl *url;
++ GtkWidget *box;
++ DwWidget *embed;
++ DilloDoc *dd;
+ DwPage *page;
+- DwStyle style_attrs, *link_style;
+- DwWidget *bullet;
+- gint buf_size;
+-
+- page = DW_PAGE(html->dw);
++ // DwStyle style_attrs, *estyle, *fstyle; /* estyle is for embedding widget, fstyle for iframe */
++ DwStyle style_attrs, *estyle;
++ gchar *width_ptr, *height_ptr;
++ gboolean frameborder;
++ guint marginwidth, marginheight;
++ GtkPolicyType scrolling;
++ gchar *attrbuf_enc;
++
++ Html_tag_set_align_attr(html, tag, tagsize);
++ /* ignore the rest of the text inside the tag
++ *(it is the equivalent of a <noframes> block) */
++ html->stack[html->stack_top].parse_mode = DILLO_HTML_PARSE_MODE_VERBATIM;
++ html->stack[html->stack_top].frame_mode = DILLO_HTML_FRAME_MODE_IFRAME;
+
+- if ( !(attrbuf = Html_get_attr(html, tag, tagsize, "src")) )
++ /* no link == return */
++ if ( !(attrbuf = Html_get_attr(html, tag, tagsize, "src")))
++ return;
++ if (strlen(attrbuf) == 0)
++ return;
++ attrbuf_enc = a_I18n_convert(DILLO_CHARSET, html->linkblock->charset,
++ attrbuf, -1);
++ if (!(url = Html_url_new(html, attrbuf_enc, NULL, 0, 0, 0, 0))) {
++ g_free(attrbuf_enc);
+ return;
++ }
++ g_free(attrbuf_enc);
+
+- if (!(url = Html_url_new(html, attrbuf, NULL, 0, 0, 0, 0)))
++ /* block ads */
++ if(a_Adblock_isblocked(url))
++ {
++ a_Url_free(url);
+ return;
++ }
++
++ page = DW_PAGE (html->dw);
++ style_attrs = *html->stack[html->stack_top].style;
+
+- src = g_strdup(attrbuf);
++ /* use default for width (300) and height (150) if not specified */
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "width")))
++ width_ptr = g_strdup(attrbuf);
++ else
++ width_ptr = g_strdup("300");
+
+- style_attrs = *(html->stack[html->stack_top].style);
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "height")))
++ height_ptr = g_strdup(attrbuf);
++ else
++ height_ptr = g_strdup("150");
+
+- if (a_Capi_get_buf(url, &buf, &buf_size)) /* visited frame */
+- style_attrs.color = a_Dw_style_color_new
+- (html->linkblock->visited_color, html->bw->main_window->window);
+- else /* unvisited frame */
+- style_attrs.color = a_Dw_style_color_new
+- (html->linkblock->link_color, html->bw->main_window->window);
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "frameborder")))
++ frameborder = (strtol (attrbuf, NULL, 10) == 0 ? FALSE : TRUE);
++ else
++ frameborder = TRUE;
+
+- style_attrs.text_decoration |= DW_STYLE_TEXT_DECORATION_UNDERLINE;
+- style_attrs.x_link = Html_set_new_link(html, &url);
+- link_style = a_Dw_style_new (&style_attrs,
+- html->bw->main_window->window);
+-
+- a_Dw_page_add_parbreak(page, 5, html->stack[(html)->stack_top].style);
+-
+- /* The bullet will be assigned the current list style, which should
+- * be "disc" by default, but may in very weird pages be different.
+- * Anyway, there should be no harm. */
+- bullet = a_Dw_bullet_new();
+- a_Dw_page_add_widget(page, bullet, html->stack[html->stack_top].style);
+- a_Dw_page_add_space(page, html->stack[html->stack_top].style);
+-
+- if (tolower(tag[1]) == 'i') {
+- /* IFRAME usually comes with very long advertising/spying URLS,
+- * to not break rendering we will force name="IFRAME" */
+- a_Dw_page_add_text(page, g_strdup("IFRAME"), link_style);
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "marginwidth")))
++ marginwidth = strtol (attrbuf, NULL, 10);
++ else
++ marginwidth = 0;
+
+- } else {
+- /* FRAME:
+- * If 'name' tag is present use it, if not use 'src' value */
+- if ( !(attrbuf = Html_get_attr(html, tag, tagsize, "name")) ) {
+- a_Dw_page_add_text(page, g_strdup(src), link_style);
+- } else {
+- a_Dw_page_add_text(page, g_strdup(attrbuf), link_style);
+- }
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "marginheight")))
++ marginheight = strtol (attrbuf, NULL, 10);
++ else
++ marginheight = 0;
++
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "scrolling")))
++ scrolling = (!g_strcasecmp(attrbuf, "no") ? GTK_POLICY_NEVER :
++ (!g_strcasecmp(attrbuf, "yes") ? GTK_POLICY_ALWAYS : GTK_POLICY_AUTOMATIC));
++ else
++ scrolling = GTK_POLICY_AUTOMATIC;
++
++ dd = a_Doc_new();
++ a_Doc_set_parent(dd, (html)->dd);
++ /* set margins */
++ (dd->style)->margin.left = (dd->style)->margin.right = marginwidth;
++ (dd->style)->margin.top = (dd->style)->margin.bottom = marginheight;
++ /* set border */
++ if(!frameborder)
++ a_Dw_style_box_set_val(&((dd->style)->border_width), frameborder);
++
++ box = gtk_hbox_new(TRUE, 0);
++ gtk_container_set_border_width(GTK_CONTAINER(dd->docwin), 0);
++ gtk_container_set_border_width(GTK_CONTAINER(box), 0);
++ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(dd->docwin), scrolling, scrolling);
++ gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(dd->docwin), TRUE, TRUE, 0);
++ gtk_widget_show(GTK_WIDGET(box));
++
++ /* style for the embedding widget */
++ a_Dw_style_box_set_border_style(&style_attrs, DW_STYLE_BORDER_NONE);
++ a_Dw_style_box_set_val(&style_attrs.margin, 0);
++ a_Dw_style_box_set_val(&style_attrs.border_width, 0);
++ estyle = a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window);
++
++ embed = a_Dw_embed_gtk_new();
++ a_Dw_embed_gtk_add_gtk(DW_EMBED_GTK(embed), GTK_WIDGET(box));
++ Html_add_widget(html, (DwWidget *) embed, width_ptr, height_ptr, estyle);
++
++ a_Dw_style_unref(estyle);
++ g_free(width_ptr);
++ g_free(height_ptr);
++
++ /* set iframe name if specified */
++ if((attrbuf = Html_get_attr(html, tag, tagsize, "name")))
++ a_Doc_set_name(dd, (gchar *) attrbuf);
++
++ a_Url_set_referer(url, html->linkblock->base_url);
++ a_Nav_push(dd, url);
++}
++
++/*
++ * <FRAME>
++ */
++static void Html_tag_open_frame (DilloHtml *html, gchar *tag, gint tagsize)
++{
++ const char *attrbuf;
++ DilloUrl *url;
++ GtkWidget *box;
++ DilloDoc *dd;
++ gboolean frameborder, noresize;
++ guint marginwidth, marginheight;
++ GtkPolicyType scrolling;
++ gchar *attrbuf_enc;
++
++
++ /* no link == return */
++ if ( !(attrbuf = Html_get_attr(html, tag, tagsize, "src")))
++ return;
++ if (strlen(attrbuf) == 0)
++ return;
++ attrbuf_enc = a_I18n_convert(DILLO_CHARSET, html->linkblock->charset,
++ attrbuf, -1);
++ _MSG(" URL %s\n", (attrbuf_enc) ? attrbuf_enc : "(null)");
++ if (!(url = Html_url_new(html, attrbuf_enc, NULL, 0, 0, 0, 0))) {
++ g_free(attrbuf_enc);
++ return;
++ }
++ g_free(attrbuf_enc);
++
++ /* block ads */
++ if(a_Adblock_isblocked(url))
++ {
++ a_Url_free(url);
++ url = Html_url_new(html, "about:blank", NULL, 0, 0, 0, 0);
+ }
+
+- a_Dw_page_add_parbreak(page, 5, html->stack[(html)->stack_top].style);
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "frameborder")))
++ frameborder = (strtol (attrbuf, NULL, 10) == 0 ? FALSE : TRUE);
++ else
++ frameborder = TRUE;
++
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "noresize")))
++ noresize = TRUE;
++ else
++ noresize = FALSE;
++
++ /* if margins have not been set explicitly, use defaults */
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "marginwidth")))
++ marginwidth = strtol (attrbuf, NULL, 10);
++ else
++ marginwidth = DOC_DEFAULT_MARGIN;
++
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "marginheight")))
++ marginheight = strtol (attrbuf, NULL, 10);
++ else
++ marginheight = DOC_DEFAULT_MARGIN;
+
+- a_Dw_style_unref(link_style);
+- g_free(src);
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "scrolling")))
++ scrolling = (!g_strcasecmp(attrbuf, "no") ? GTK_POLICY_NEVER :
++ (!g_strcasecmp(attrbuf, "yes") ? GTK_POLICY_ALWAYS : GTK_POLICY_AUTOMATIC));
++ else
++ scrolling = GTK_POLICY_AUTOMATIC;
++
++ switch(html->stack[html->stack_top].frame_mode) {
++ case DILLO_HTML_FRAME_MODE_NONE:
++ MSG_HTML(_("<frame> outside of <frameset>\n"));
++ return;
++ case DILLO_HTML_FRAME_MODE_NOFRAMES:
++ MSG_HTML(_("<frame> inside of <noframes>\n"));
++ return;
++ case DILLO_HTML_FRAME_MODE_IFRAME:
++ MSG_HTML(_("<frame> inside of <iframe>\n"));
++ return;
++ case DILLO_HTML_FRAME_MODE_FRAMESET:
++ dd = a_Doc_new();
++ a_Doc_set_parent(dd, (html)->dd);
++ /* set marginwidth & height */
++ (dd->style)->margin.left = (dd->style)->margin.right = marginwidth;
++ (dd->style)->margin.top = (dd->style)->margin.bottom = marginheight;
++ if(!frameborder) {
++ a_Dw_style_box_set_val(&((dd->style)->border_width), 0);
++ a_Dw_style_box_set_border_style(dd->style, DW_STYLE_BORDER_NONE);
++ }
++ box = gtk_hbox_new(TRUE, 0);
++ gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(dd->docwin), TRUE, TRUE, 0);
++ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(dd->docwin), scrolling, scrolling);
++ gtk_container_set_border_width(GTK_CONTAINER(dd->docwin), 0);
++ gtk_container_set_border_width(GTK_CONTAINER(box), 0);
++ gtk_widget_show(GTK_WIDGET(box));
++ gtk_container_add_with_args(GTK_CONTAINER(html->stack[html->stack_top].frameset),
++ GTK_WIDGET(box),
++ "GtkFrameset::x_padding", 0,
++ "GtkFrameset::y_padding", 0,
++ "GtkFrameset::noresize", noresize,
++ "GtkFrameset::border", frameborder,
++ NULL);
++ a_Url_set_referer(url, html->linkblock->base_url);
++ a_Nav_push(dd, url);
++
++ /* set frame name if specified */
++ if((attrbuf = Html_get_attr(html, tag, tagsize, "name")))
++ a_Doc_set_name(dd, (gchar *) attrbuf);
++ break;
++
++ default:
++ return;
++ }
+ }
+
+ /*
+ * <FRAMESET>
+- * todo: This is just a temporary fix while real frame support
+- * isn't finished. Imitates lynx/w3m's frames.
+ */
+ static void Html_tag_open_frameset (DilloHtml *html, gchar *tag, gint tagsize)
+ {
+- a_Dw_page_add_parbreak(DW_PAGE (html->dw), 9,
+- html->stack[(html)->stack_top].style);
+- a_Dw_page_add_text(DW_PAGE(html->dw), g_strdup("--FRAME--"),
+- html->stack[html->stack_top].style);
+- Html_add_indented(html, 40, 0, 5);
++ const char *attrbuf;
++ GtkWidget *frameset;
++ gchar *rows, *cols;
++
++ /* (older versions of) compiler happiness */
++ frameset = NULL;
++
++ /* first, see if this frameset tag is in the right place... */
++ if(html->stack[html->stack_top].parse_mode != DILLO_HTML_PARSE_MODE_INIT) {
++ MSG_HTML(_("incorrectly placed <frameset>\n"));
++ return;
++ }
++
++ /* get frameset attributes */
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "rows")))
++ rows = g_strdup(attrbuf);
++ else
++ rows = NULL;
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "cols")))
++ cols = g_strdup(attrbuf);
++ else
++ cols = NULL;
++
++ switch(html->stack[html->stack_top].frame_mode) {
++ case DILLO_HTML_FRAME_MODE_NOFRAMES:
++ MSG_HTML(_("<frameset> inside of <noframes>\n"));
++ g_free(rows);
++ g_free(cols);
++ return;
++ case DILLO_HTML_FRAME_MODE_IFRAME:
++ MSG_HTML(_("<frameset> inside of <iframe>\n"));
++ g_free(rows);
++ g_free(cols);
++ return;
++ case DILLO_HTML_FRAME_MODE_NONE:
++ /* 'root' frameset, so add the frameset to the dd */
++ if(html->dd->frameset)
++ gtk_widget_destroy(html->dd->frameset);
++ frameset = gtk_frameset_new(rows, cols);
++ html->dd->frameset = frameset;
++ gtk_container_add(GTK_CONTAINER(GTK_WIDGET(html->dd->docwin)->parent),
++ GTK_WIDGET(frameset));
++ /* hide the docwin, show the frameset */
++ gtk_widget_hide(GTK_WIDGET(html->dd->docwin));
++ gtk_widget_show(GTK_WIDGET(html->dd->frameset));
++ break;
++ case DILLO_HTML_FRAME_MODE_FRAMESET:
++ /* nested frameset */
++ frameset = gtk_frameset_new(rows, cols);
++ gtk_container_add(GTK_CONTAINER(html->stack[html->stack_top].frameset), GTK_WIDGET(frameset));
++ gtk_widget_show(GTK_WIDGET(frameset));
++ break;
++ default:
++ break;
++ }
++
++ g_free(rows);
++ g_free(cols);
++
++
++ /* once set, this flag does not get reset, even when the frameset tag
++ * is closed. This is intentional. */
++ html->InFlags |= IN_FRAMESET;
++
++ /* put the current frameset state on the stack */
++ html->stack[html->stack_top].frame_mode = DILLO_HTML_FRAME_MODE_FRAMESET;
++ html->stack[html->stack_top].frameset = frameset;
+ }
+
+ /*
+@@ -2200,13 +2687,13 @@ static void Html_tag_open_h(DilloHtml *h
+
+ /* todo: combining these two would be slightly faster */
+ Html_set_top_font(html, prefs.vw_fontname,
+- Html_level_to_fontsize(FontSizesNum - (tag[2] - '0')),
++ Html_level_to_fontsize(D_FONT_SIZE_NUM - (tag[2] - '0')),
+ 1, 3);
+ Html_tag_set_align_attr (html, tag, tagsize);
+
+ /* First finalize unclosed H tags (we test if already named anyway) */
+- a_Menu_pagemarks_set_text(html->bw, html->Stash->str);
+- a_Menu_pagemarks_add(html->bw, DW_PAGE (html->dw),
++ a_Menu_pagemarks_set_text(html->dd, html->Stash->str);
++ a_Menu_pagemarks_add(html->dd, DW_PAGE (html->dw),
+ html->stack[html->stack_top].style, (tag[2] - '0'));
+ Html_stash_init(html);
+ html->stack[html->stack_top].parse_mode =
+@@ -2218,10 +2705,10 @@ static void Html_tag_open_h(DilloHtml *h
+ */
+ static void Html_tag_close_h(DilloHtml *html, gint TagIdx)
+ {
+- a_Menu_pagemarks_set_text(html->bw, html->Stash->str);
++ a_Menu_pagemarks_set_text(html->dd, html->Stash->str);
++ Html_pop_tag(html, TagIdx);
+ a_Dw_page_add_parbreak(DW_PAGE (html->dw), 9,
+ html->stack[(html)->stack_top].style);
+- Html_pop_tag(html, TagIdx);
+ }
+
+ /*
+@@ -2268,7 +2755,7 @@ static void Html_tag_open_button(DilloHt
+ a_Dw_style_box_set_val(&style_attrs.margin, 0);
+ a_Dw_style_box_set_val(&style_attrs.border_width, 0);
+ a_Dw_style_box_set_val(&style_attrs.padding, 0);
+- style = a_Dw_style_new (&style_attrs, html->bw->main_window->window);
++ style = a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window);
+ button = a_Dw_button_new (DW_USES_HINTS, TRUE);
+
+ /* The new button is not set button-insensitive, since nested buttons
+@@ -2282,7 +2769,7 @@ static void Html_tag_open_button(DilloHt
+ a_Dw_style_unref (style);
+
+ a_Dw_style_box_set_val(&style_attrs.margin, 5);
+- style = a_Dw_style_new (&style_attrs, html->bw->main_window->window);
++ style = a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window);
+ page = a_Dw_page_new ();
+ a_Dw_widget_set_style (page, style);
+ a_Dw_style_unref (style);
+@@ -2344,12 +2831,12 @@ static void Html_tag_open_font(DilloHtml
+ if ((attrbuf = Html_get_attr(html, tag, tagsize, "color"))) {
+ if (prefs.contrast_visited_color && html->InVisitedLink) {
+ color = html->linkblock->visited_color;
+- } else {
++ } else {
+ /* use the tag-specified color */
+ color = Html_color_parse(
+ html, attrbuf, style_attrs.color->color_val);
+ style_attrs.color = a_Dw_style_color_new
+- (color, html->bw->main_window->window);
++ (color, html->dd->bw->main_window->window);
+ }
+ }
+
+@@ -2362,7 +2849,7 @@ static void Html_tag_open_font(DilloHtml
+ #endif
+
+ html->stack[html->stack_top].style =
+- a_Dw_style_new (&style_attrs, html->bw->main_window->window);
++ a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window);
+ a_Dw_style_unref (old_style);
+ }
+
+@@ -2534,15 +3021,19 @@ static void Html_load_image(DilloHtml *h
+ {
+ DilloWeb *Web;
+ gint ClientKey;
++ a_Url_set_referer(url, html->linkblock->base_url);
+ /* Fill a Web structure for the cache query */
++ if (URL_FLAGS(html->linkblock->base_url) && URL_MustCache)
++ URL_FLAGS(url) |= URL_MustCache; /* cache page, cache images */
++ URL_FLAGS(url) |= URL_IsImage;
+ Web = a_Web_new(url);
+- Web->bw = html->bw;
++ Web->dd = html->dd;
+ Web->Image = Image;
+ Web->flags |= WEB_Image;
+ /* Request image data from the cache */
+ if ((ClientKey = a_Capi_open_url(Web, NULL, NULL)) != 0) {
+- a_Interface_add_client(html->bw, ClientKey, 0);
+- a_Interface_add_url(html->bw, url, WEB_Image);
++ a_Doc_add_client(html->dd, ClientKey, 0);
++ a_Doc_add_url(html->dd, url, WEB_Image);
+ }
+ }
+
+@@ -2558,23 +3049,38 @@ static void Html_tag_open_img(DilloHtml
+ DwPage *page;
+ DwStyle style_attrs;
+ const char *attrbuf;
++ gchar *attrbuf_enc;
+ gint border;
+
+ /* This avoids loading images. Useful for viewing suspicious HTML email. */
+ if (URL_FLAGS(html->linkblock->base_url) & URL_SpamSafe)
+ return;
+
+- if (!(attrbuf = Html_get_attr(html, tag, tagsize, "src")) ||
+- !(url = Html_url_new(html, attrbuf, NULL, 0, 0, 0, 0)))
++ if (!(attrbuf = Html_get_attr(html, tag, tagsize, "src")))
++ return;
++ attrbuf_enc = a_I18n_convert(DILLO_CHARSET, html->linkblock->charset,
++ attrbuf, -1);
++ url = Html_url_new(html, attrbuf_enc, NULL, 0, 0, 0, 0);
++ g_free(attrbuf_enc);
++ if(!url) return;
++
++ /* block ads */
++ if(a_Adblock_isblocked(url))
++ {
++ a_Url_free(url);
+ return;
++ }
+
+ page = DW_PAGE (html->dw);
+
+-
+ usemap_url = NULL;
+- if ((attrbuf = Html_get_attr(html, tag, tagsize, "usemap")))
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "usemap"))) {
++ attrbuf_enc = a_I18n_convert(DILLO_CHARSET, html->linkblock->charset,
++ attrbuf, -1);
+ /* todo: usemap URLs outside of the document are not used. */
+- usemap_url = Html_url_new(html, attrbuf, NULL, 0, 0, 0, 0);
++ usemap_url = Html_url_new(html, attrbuf_enc, NULL, 0, 0, 0, 0);
++ g_free(attrbuf_enc);
++ }
+
+ style_attrs = *html->stack[html->stack_top].style;
+
+@@ -2590,21 +3096,23 @@ static void Html_tag_open_img(DilloHtml
+ a_Dw_style_box_set_border_color
+ (&style_attrs,
+ a_Dw_style_shaded_color_new (style_attrs.color->color_val,
+- html->bw->main_window->window));
++ html->dd->bw->main_window->window));
+ else
+ a_Dw_style_box_set_border_color
+ (&style_attrs,
+ a_Dw_style_shaded_color_new (html->linkblock->link_color,
+- html->bw->main_window->window));
++ html->dd->bw->main_window->window));
+
+ a_Dw_style_box_set_border_style (&style_attrs, DW_STYLE_BORDER_SOLID);
+ a_Dw_style_box_set_val (&style_attrs.border_width, border);
+ }
+
+ Image = Html_add_new_image(html, tag, tagsize, &style_attrs, TRUE);
++ if (html->stack[html->stack_top].style->x_link != -1)
++ a_Dw_widget_set_button_sensitive(DW_WIDGET(Image->dw), FALSE);
+ Html_connect_signals(html, GTK_OBJECT(Image->dw));
+ gtk_signal_connect_after(GTK_OBJECT(Image->dw), "button_press_event",
+- GTK_SIGNAL_FUNC(Html_image_menu), html->bw);
++ GTK_SIGNAL_FUNC(Html_image_menu), html->dd);
+
+ /* Image maps */
+ if (Html_get_attr(html, tag, tagsize, "ismap")) {
+@@ -2612,7 +3120,7 @@ static void Html_tag_open_img(DilloHtml
+ * being separated with a word, only the first one is ISMAPed
+ */
+ a_Dw_image_set_ismap (Image->dw);
+- _MSG(" Html_tag_open_img: server-side map (ISMAP)\n");
++ _MSG(_(" Html_tag_open_img: server-side map (ISMAP)\n"));
+ } else if (html->stack[html->stack_top].style->x_link != -1 &&
+ usemap_url == NULL)
+ /* For simple links, we have to suppress the "image_pressed" signal.
+@@ -2634,14 +3142,17 @@ static void Html_tag_open_img(DilloHtml
+ static void Html_tag_open_map(DilloHtml *html, char *tag, gint tagsize)
+ {
+ char *hash_name;
+- const char *attrbuf;
++ char *attrbuf_enc;
+ DilloUrl *url;
+
+ if (html->InFlags & IN_MAP) {
+- MSG_HTML("nested <map>\n");
++ MSG_HTML(_("nested <map>\n"));
+ } else {
+- if ((attrbuf = Html_get_attr(html, tag, tagsize, "name"))) {
+- hash_name = g_strdup_printf("#%s", attrbuf);
++ if ((attrbuf_enc = a_I18n_convert(DILLO_CHARSET,
++ html->linkblock->charset,
++ Html_get_attr(html, tag, tagsize, "name"), -1))) {
++ hash_name = g_strdup_printf("#%s", attrbuf_enc);
++ g_free(attrbuf_enc);
+ url = Html_url_new(html, hash_name, NULL, 0, 0, 0, 0);
+ a_Dw_image_map_list_add_map (&html->linkblock->maps, url);
+ a_Url_free (url);
+@@ -2687,7 +3198,7 @@ static int Html_read_coords(DilloHtml *h
+ pending = 0;
+ } else {
+ if (*newtail != ',') {
+- MSG_HTML("usemap coords MUST be separated with ','\n");
++ MSG_HTML(_("usemap coords MUST be separated with ','\n"));
+ }
+ tail = newtail + 1;
+ }
+@@ -2705,6 +3216,7 @@ static void Html_tag_open_area(DilloHtml
+ GdkPoint point[1024];
+ DilloUrl* url;
+ const char *attrbuf;
++ gchar *attrbuf_enc;
+ gint type = DW_IMAGE_MAP_SHAPE_RECT;
+ gint nbpoints, link = -1;
+
+@@ -2730,14 +3242,21 @@ static void Html_tag_open_area(DilloHtml
+
+ if ( Html_get_attr(html, tag, tagsize, "nohref") ) {
+ link = -1;
+- _MSG("nohref");
++ _MSG(_("nohref"));
+ }
+
+ if ((attrbuf = Html_get_attr(html, tag, tagsize, "href"))) {
+- url = Html_url_new(html, attrbuf, NULL, 0, 0, 0, 0);
++ attrbuf_enc = a_I18n_convert(DILLO_CHARSET, html->linkblock->charset,
++ attrbuf, -1);
++ url = Html_url_new(html, attrbuf_enc, NULL, 0, 0, 0, 0);
++ g_free(attrbuf_enc);
+ g_return_if_fail ( url != NULL );
+ if ((attrbuf = Html_get_attr(html, tag, tagsize, "alt")))
+ a_Url_set_alt(url, attrbuf);
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "target")))
++ a_Url_set_target(url, attrbuf);
++ else if (URL_TARGET_(html->linkblock->base_url))
++ a_Url_set_target(url, URL_TARGET_(html->linkblock->base_url));
+
+ link = Html_set_new_link(html, &url);
+ }
+@@ -2762,7 +3281,7 @@ static const char* Html_get_javascript_l
+ if ((ch == '"' || ch == '\'') &&
+ (p2 = strchr(Buf->str + i + 1 , ch))) {
+ p1 = Buf->str + i;
+- MSG_HTML("link depends on javascript()\n");
++ MSG_HTML(_("link depends on javascript()\n"));
+ g_string_truncate(Buf, p2 - Buf->str);
+ g_string_erase(Buf, 0, p1 - Buf->str + 1);
+ }
+@@ -2775,10 +3294,15 @@ static const char* Html_get_javascript_l
+ */
+ static void Html_add_anchor(DilloHtml *html, const char *name)
+ {
+- _MSG("Registering ANCHOR: %s\n", name);
++ gchar *name_enc;
++
++ name_enc = a_I18n_DW_CHARSET_from_DILLO_CHARSET(name, -1);
++ _MSG(_("Registering ANCHOR: %s\n"),
++ a_I18n_DW_CHARSET_from_DILLO_CHARSET(name_enc, -1));
++ g_free(name_enc);
+ if (!a_Dw_page_add_anchor(DW_PAGE(html->dw), name,
+ html->stack[html->stack_top].style))
+- MSG_HTML("Anchor names must be unique within the document\n");
++ MSG_HTML(_("Anchor names must be unique within the document\n"));
+ /* According to Sec. 12.2.1 of the HTML 4.01 spec, "anchor names that
+ * differ only in case may not appear in the same document", but
+ * "comparisons between fragment identifiers and anchor names must be
+@@ -2795,7 +3319,7 @@ static void Html_tag_open_a(DilloHtml *h
+ DwStyle style_attrs, *old_style;
+ DilloUrl *url;
+ const char *attrbuf;
+- gchar *buf;
++ gchar *buf, *attrbuf_enc;
+ gint buf_size;
+
+ /* todo: add support for MAP with A HREF */
+@@ -2806,9 +3330,20 @@ static void Html_tag_open_a(DilloHtml *h
+ if (tolower(attrbuf[0]) == 'j')
+ attrbuf = Html_get_javascript_link(html);
+
+- url = Html_url_new(html, attrbuf, NULL, 0, 0, 0, 0);
++ attrbuf_enc = a_I18n_convert(DILLO_CHARSET, html->linkblock->charset,
++ attrbuf, -1);
++ url = Html_url_new(html, attrbuf_enc, NULL, 0, 0, 0, 0);
++ g_free(attrbuf_enc);
+ g_return_if_fail ( url != NULL );
+
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "target"))) {
++ attrbuf_enc = a_I18n_convert(DILLO_CHARSET, html->linkblock->charset,
++ attrbuf, -1);
++ a_Url_set_target(url, attrbuf_enc);
++ g_free(attrbuf_enc);
++ } else if (URL_TARGET_(html->linkblock->base_url))
++ a_Url_set_target(url, URL_TARGET_(html->linkblock->base_url));
++
+ old_style = html->stack[html->stack_top].style;
+ style_attrs = *old_style;
+
+@@ -2822,20 +3357,21 @@ static void Html_tag_open_a(DilloHtml *h
+ html->linkblock->link_color,
+ html->stack[html->stack_top].current_bg_color),
+ */
+- html->bw->main_window->window);
++ html->dd->bw->main_window->window);
+ } else {
+ style_attrs.color = a_Dw_style_color_new
+- (html->linkblock->link_color, html->bw->main_window->window);
++ (html->linkblock->link_color, html->dd->bw->main_window->window);
+ }
+
+- if ((attrbuf = Html_get_attr(html, tag, tagsize, "title")))
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "title"))) {
+ style_attrs.x_tooltip = a_Dw_tooltip_new_no_ref(attrbuf);
++ }
+
+ style_attrs.text_decoration |= DW_STYLE_TEXT_DECORATION_UNDERLINE;
+ style_attrs.x_link = Html_set_new_link(html, &url);
+
+ html->stack[html->stack_top].style =
+- a_Dw_style_new (&style_attrs, html->bw->main_window->window);
++ a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window);
+ a_Dw_style_unref (old_style);
+ }
+
+@@ -2843,7 +3379,10 @@ static void Html_tag_open_a(DilloHtml *h
+ if (prefs.show_extra_warnings)
+ Html_check_name_val(html, attrbuf, "name");
+ /* html->NameVal is freed in Html_process_tag */
+- html->NameVal = a_Url_decode_hex_str(attrbuf);
++ attrbuf_enc = a_Url_decode_hex_str(attrbuf);
++ html->NameVal = a_I18n_convert(DILLO_CHARSET, html->linkblock->charset,
++ attrbuf_enc, -1);
++ g_free(attrbuf_enc);
+ Html_add_anchor(html, html->NameVal);
+ }
+ }
+@@ -2869,7 +3408,7 @@ static void Html_tag_open_u(DilloHtml *h
+ style_attrs = *style;
+ style_attrs.text_decoration |= DW_STYLE_TEXT_DECORATION_UNDERLINE;
+ html->stack[html->stack_top].style =
+- a_Dw_style_new(&style_attrs, html->bw->main_window->window);
++ a_Dw_style_new(&style_attrs, html->dd->bw->main_window->window);
+ a_Dw_style_unref(style);
+ }
+
+@@ -2885,7 +3424,7 @@ static void Html_tag_open_strike(DilloHt
+ style_attrs = *style;
+ style_attrs.text_decoration |= DW_STYLE_TEXT_DECORATION_LINE_THROUGH;
+ html->stack[html->stack_top].style =
+- a_Dw_style_new(&style_attrs, html->bw->main_window->window);
++ a_Dw_style_new(&style_attrs, html->dd->bw->main_window->window);
+ a_Dw_style_unref(style);
+ }
+
+@@ -2970,7 +3509,7 @@ static void Html_tag_open_menu(DilloHtml
+ html->stack[html->stack_top].ref_list_item = NULL;
+
+ if (prefs.show_extra_warnings)
+- MSG_HTML("it is strongly recommended using <UL> instead of <MENU>\n");
++ MSG_HTML(_("it is strongly recommended using <UL> instead of <MENU>\n"));
+ }
+
+ /*
+@@ -3032,7 +3571,7 @@ static void Html_tag_open_li(DilloHtml *
+
+ switch (html->stack[html->stack_top].list_type) {
+ case HTML_LIST_NONE:
+- MSG_HTML("<li> outside <ul> or <ol>\n");
++ MSG_HTML(_("<li> outside <ul> or <ol>\n"));
+ list_item = a_Dw_list_item_new(NULL);
+ Html_add_indented_widget(html, list_item, 0, 0, 0 /* or 1 */);
+ bullet = a_Dw_bullet_new();
+@@ -3107,7 +3646,7 @@ static void Html_tag_open_hr(DilloHtml *
+ a_Dw_style_box_set_border_color
+ (&style_attrs,
+ a_Dw_style_shaded_color_new (style_attrs.color->color_val,
+- html->bw->main_window->window));
++ html->dd->bw->main_window->window));
+ if (size < 1)
+ size = 1;
+ } else {
+@@ -3116,7 +3655,7 @@ static void Html_tag_open_hr(DilloHtml *
+ (&style_attrs,
+ a_Dw_style_shaded_color_new
+ (html->stack[html->stack_top].current_bg_color,
+- html->bw->main_window->window));
++ html->dd->bw->main_window->window));
+ if (size < 2)
+ size = 2;
+ }
+@@ -3221,14 +3760,14 @@ static void Html_tag_open_form(DilloHtml
+ {
+ DilloUrl *action;
+ DilloHtmlMethod method;
+- DilloHtmlEnc enc;
++ gchar *accept_charset = NULL, *attrbuf_enc;
+ const char *attrbuf;
+
+ a_Dw_page_add_parbreak(DW_PAGE (html->dw), 9,
+ html->stack[(html)->stack_top].style);
+
+ if (html->InFlags & IN_FORM) {
+- MSG_HTML("nested forms\n");
++ MSG_HTML(_("nested forms\n"));
+ return;
+ }
+ html->InFlags |= IN_FORM;
+@@ -3239,15 +3778,25 @@ static void Html_tag_open_form(DilloHtml
+ method = DILLO_HTML_METHOD_POST;
+ /* todo: maybe deal with unknown methods? */
+ }
+- if ((attrbuf = Html_get_attr(html, tag, tagsize, "action")))
+- action = Html_url_new(html, attrbuf, NULL, 0, 0, 0, 0);
+- else
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "action"))) {
++ attrbuf_enc = a_I18n_convert(DILLO_CHARSET, html->linkblock->charset,
++ attrbuf, -1);
++ action = Html_url_new(html, attrbuf_enc, NULL, 0, 0, 0, 0);
++ g_free(attrbuf_enc);
++ } else
+ action = a_Url_dup(html->linkblock->base_url);
+- enc = DILLO_HTML_ENC_URLENCODING;
+- if ( (attrbuf = Html_get_attr(html, tag, tagsize, "encoding")) ) {
+- /* todo: maybe deal with unknown encodings? */
++
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "target")))
++ a_Url_set_target(action, attrbuf);
++ else if (URL_TARGET_(html->linkblock->base_url))
++ a_Url_set_target(action, URL_TARGET_(html->linkblock->base_url));
++
++ if(Html_get_attr(html, tag, tagsize, "accept-charset")) {
++ accept_charset = a_I18n_fix_charset(g_strdup(
++ Html_get_attr(html, tag, tagsize, "accept-charset")));
+ }
+- Html_form_new(html->linkblock, method, action, enc);
++ Html_form_new(html->linkblock, method, action, accept_charset);
++ g_free(accept_charset);
+ a_Url_free(action);
+ }
+
+@@ -3265,9 +3814,9 @@ static void Html_tag_close_form(DilloHtm
+ let's add a custom one */
+ if (form->num_submit_buttons == 0) {
+ if (prefs.show_extra_warnings || form->num_entry_fields != 1)
+- MSG_HTML("FORM lacks a Submit button\n");
++ MSG_HTML(_("FORM lacks a Submit button\n"));
+ if (prefs.generate_submit) {
+- MSG_HTML(" (added a submit button internally)\n");
++ MSG_HTML(_(" (added a submit button internally)\n"));
+ Html_tag_open_input(html, SubmitTag, strlen(SubmitTag));
+ form->num_submit_buttons = 0;
+ }
+@@ -3294,6 +3843,27 @@ static void Html_tag_close_form(DilloHtm
+ Html_pop_tag(html, TagIdx);
+ }
+
++#ifdef ENABLE_META_REFRESH
++/*
++ * Helper function for meta refresh tag.
++ */
++static gboolean Html_tag_meta_refresh(gpointer data)
++{
++ DilloHtmlMetaRefreshData *rdata = (DilloHtmlMetaRefreshData *)data;
++
++ if (!rdata->html_dead) {
++ rdata->lb->meta_refresh = NULL;
++ if ( rdata->url ) {
++ a_Nav_remove_top_url(rdata->lb->dd);
++ a_Nav_push(rdata->lb->dd, rdata->url);
++ }
++ }
++ a_Url_free(rdata->url);
++ g_free(rdata);
++ return FALSE;
++}
++#endif
++
+ /*
+ * Handle <META>
+ * We do not support http-equiv=refresh because it's non standard,
+@@ -3309,6 +3879,32 @@ static void Html_tag_close_form(DilloHtm
+ */
+ static void Html_tag_open_meta(DilloHtml *html, char *tag, gint tagsize)
+ {
++#ifdef ENABLE_META_REFRESH
++ const gchar *attrbuf;
++
++ if (!(html->InFlags & IN_HEAD) && html->linkblock->meta_refresh) {
++ return;
++ }
++ attrbuf = Html_get_attr(html, tag, tagsize, "http-equiv");
++
++ /* Is this a refresh? */
++ if (attrbuf && !g_strcasecmp(attrbuf, "refresh")) {
++ DilloHtmlMetaRefreshData *data;
++ gint delay;
++ gchar *content;
++ #ifdef SEND_HTML_MSG
++ gchar *html_msg, *url;
++ #endif
++
++ /* check for content */
++ if (!(attrbuf = Html_get_attr(html, tag, tagsize, "content")))
++ return;
++
++ /* check for delay */
++ delay = strtol(attrbuf, &content, 0);
++#else
++ const gchar *equiv, *content;
++ #ifdef SEND_HTML_MSG
+ const gchar *meta_template =
+ "<table width='100%%'><tr><td bgcolor='#ee0000'>Warning:</td>\n"
+ " <td bgcolor='#8899aa' width='100%%'>\n"
+@@ -3317,13 +3913,14 @@ static void Html_tag_open_meta(DilloHtml
+ " <tr><td bgcolor='#a0a0a0' colspan='2'>The author wanted you to go\n"
+ " <a href='%s'>here</a>%s</td></tr></table><br>\n";
+
+- const gchar *equiv, *content;
+- gchar *html_msg, delay_str[64];
++ gchar *html_msg;
++ #endif
++ gchar delay_str[64];
+ gint delay;
+
+ /* only valid inside HEAD */
+ if (!(html->InFlags & IN_HEAD)) {
+- MSG_HTML("META elements must be inside the HEAD section\n");
++ MSG_HTML(_("META elements must be inside the HEAD section\n"));
+ return;
+ }
+
+@@ -3337,13 +3934,49 @@ static void Html_tag_open_meta(DilloHtml
+ delay, (delay > 1) ? "s" : "");
+ else
+ sprintf(delay_str, ".");
+-
++#endif
+ /* Skip to anything after "URL=" */
+ while (*content && *(content++) != '=');
+-
++#ifdef ENABLE_META_REFRESH
++ data = g_new(DilloHtmlMetaRefreshData, 1);
++ data->lb = html->linkblock;
++ data->html_dead = 0;
++
++ if (data->lb->meta_refresh) {
++ *data->lb->meta_refresh = 1;
++ }
++
++ data->lb->meta_refresh = &data->html_dead;
++ data->url = Html_url_new(html, *content ? content :
++ URL_STR(a_History_get_url(NAV_TOP(data->lb->dd))),
++ NULL, 0, 0, 0, 0);
++ a_Url_set_flags(data->url, URL_FLAGS(data->url) | URL_E2EReload);
++
++ if (!*content && delay < 7) /* don't refresh itself to often... */
++ delay = 7;
++
++ /* Add a timeout which will load the new location */
++ g_timeout_add(delay ? delay * 1000 : 300, Html_tag_meta_refresh,
++ (gpointer)data);
++ #ifdef SEND_HTML_MSG
++ url = URL_STR( data->url );
++ html_msg = g_strdup_printf(
++ "<p><font color=\"red\">META REFRESH (%d sec): "
++ "<a href=\"%s\">%s</a></p>",
++ delay, url, url);
++ #endif
++#else
++ #ifdef SEND_HTML_MSG
+ /* Send a custom HTML message
+ * todo: this is a hairy hack, It'd be much better to build a widget. */
+ html_msg = g_strdup_printf(meta_template, content, delay_str);
++ #endif
++#endif
++ MSG_HTML(_("The NON-STANDARD meta refresh tag."
++ " The HTML 4.01 SPEC (sec 7.4.4) recommends explicitly to avoid it."
++ " The author wanted you to go <%s>\n"), content);
++
++ #ifdef SEND_HTML_MSG
+ {
+ DilloHtmlProcessingState SaveFlags = html->InFlags;
+ html->InFlags = IN_BODY;
+@@ -3353,6 +3986,7 @@ static void Html_tag_open_meta(DilloHtml
+ html->InFlags = SaveFlags;
+ }
+ g_free(html_msg);
++ #endif
+ }
+ }
+
+@@ -3381,7 +4015,7 @@ static void Html_reset_input(DilloHtmlIn
+ switch (input->type) {
+ case DILLO_HTML_INPUT_TEXT:
+ case DILLO_HTML_INPUT_PASSWORD:
+- gtk_entry_set_text(GTK_ENTRY(input->widget), input->init_str);
++ a_I18n_gtk_entry_set_text(GTK_ENTRY(input->widget), input->init_str);
+ break;
+ case DILLO_HTML_INPUT_CHECKBOX:
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(input->widget),
+@@ -3425,8 +4059,10 @@ static void Html_reset_input(DilloHtmlIn
+ if (input->init_str != NULL) {
+ int pos = 0;
+ gtk_editable_delete_text(GTK_EDITABLE(input->widget), 0, -1);
+- gtk_editable_insert_text(GTK_EDITABLE(input->widget), input->init_str,
+- strlen(input->init_str), &pos);
++ a_I18n_gtk_editable_insert_text(GTK_EDITABLE(input->widget),
++ input->init_str,
++ strlen(input->init_str),
++ &pos);
+ }
+ break;
+ default:
+@@ -3522,17 +4158,34 @@ static void Html_urlencode_append(GStrin
+ g_free(enc_val);
+ }
+
+-/*
++/*
+ * Append a name-value pair to an existing url.
+ * (name and value are urlencoded before appending them)
++ * This also translates the value to the server character encoding or
++ * Accept_charset, if necessary.
+ */
+-static void
+- Html_append_input(GString *url, const char *name, const char *value)
++static void Html_append_input(DilloHtmlLB *lb, GString *url,
++ const char *name, char *value, GtkWidget *submit)
+ {
+- if (name != NULL) {
++ if(name != NULL) {
+ Html_urlencode_append(url, name);
+ g_string_append_c(url, '=');
+- Html_urlencode_append(url, value);
++ if (value != NULL) {
++ int form_index;
++ char *charset, *convValue;
++ /* Search the form that generated the submit event */
++ if ((form_index = Html_find_form(submit, lb)) == -1 ) {
++ charset = lb->charset;
++ } else {
++ DilloHtmlForm *form = &lb->forms[form_index];
++ charset = (form->charset)? form->charset : lb->charset;
++ }
++ convValue = a_I18n_convert(DILLO_CHARSET,
++ charset, value, -1);
++ _MSG("append charset%s\n", charset);
++ Html_urlencode_append(url, convValue);
++ g_free(convValue);
++ }
+ g_string_append_c(url, '&');
+ }
+ }
+@@ -3566,6 +4219,9 @@ static void Html_submit_form(GtkWidget *
+ DilloHtmlInput *input;
+ DilloUrl *new_url;
+ gchar *url_str, *action_str, *p, *text;
++ DilloDoc *name_dd;
++
++ name_dd = NULL;
+
+ /* Search the form that generated the submit event */
+ if ( (i = Html_find_form(submit, html_lb)) == -1 )
+@@ -3579,29 +4235,33 @@ static void Html_submit_form(GtkWidget *
+ DEBUG_MSG(3,"Html_submit_form form->action=%s\n",URL_STR_(form->action));
+
+ for (input_index = 0; input_index < form->num_inputs; input_index++) {
++ gchar *enc_buf;
+ input = &(form->inputs[input_index]);
+ switch (input->type) {
+ case DILLO_HTML_INPUT_TEXT:
+ case DILLO_HTML_INPUT_PASSWORD:
+- Html_append_input(DataStr, input->name,
+- gtk_entry_get_text(GTK_ENTRY(input->widget)));
++ enc_buf = a_I18n_gtk_entry_get_text(GTK_ENTRY(input->widget));
++ Html_append_input(html_lb, DataStr, input->name, enc_buf, submit);
++ g_free(enc_buf);
+ break;
+ case DILLO_HTML_INPUT_CHECKBOX:
+ case DILLO_HTML_INPUT_RADIO:
+ if (GTK_TOGGLE_BUTTON(input->widget)->active &&
+ input->name != NULL && input->init_str != NULL) {
+- Html_append_input(DataStr, input->name, input->init_str);
++ Html_append_input(html_lb, DataStr, input->name,
++ input->init_str, submit);
+ }
+ break;
+ case DILLO_HTML_INPUT_HIDDEN:
+- Html_append_input(DataStr, input->name, input->init_str);
++ Html_append_input(html_lb, DataStr, input->name,
++ input->init_str, submit);
+ break;
+ case DILLO_HTML_INPUT_SELECT:
+ for (i = 0; i < input->select->num_options; i++) {
+ if (GTK_CHECK_MENU_ITEM(input->select->options[i].menuitem)->
+ active) {
+- Html_append_input(DataStr, input->name,
+- input->select->options[i].value);
++ Html_append_input(html_lb, DataStr, input->name,
++ input->select->options[i].value, submit);
+ break;
+ }
+ }
+@@ -3610,23 +4270,26 @@ static void Html_submit_form(GtkWidget *
+ for (i = 0; i < input->select->num_options; i++) {
+ if (input->select->options[i].menuitem->state ==
+ GTK_STATE_SELECTED) {
+- Html_append_input(DataStr, input->name,
+- input->select->options[i].value);
++ Html_append_input(html_lb, DataStr, input->name,
++ input->select->options[i].value, submit);
+ }
+ }
+ break;
+ case DILLO_HTML_INPUT_TEXTAREA:
+- text = gtk_editable_get_chars(GTK_EDITABLE (input->widget),0,-1);
+- Html_append_input(DataStr, input->name, text);
++ text = a_I18n_gtk_editable_get_chars(GTK_EDITABLE (input->widget),
++ 0,-1);
++ Html_append_input(html_lb, DataStr, input->name, text, submit);
+ g_free(text);
+ break;
+ case DILLO_HTML_INPUT_INDEX:
+- Html_urlencode_append(DataStr,
+- gtk_entry_get_text(GTK_ENTRY(input->widget)));
++ enc_buf = a_I18n_gtk_entry_get_text(GTK_ENTRY(input->widget));
++ Html_urlencode_append(DataStr, enc_buf);
++ g_free(enc_buf);
+ break;
+ case DILLO_HTML_INPUT_IMAGE:
+ if (input->widget == submit) {
+- Html_append_input(DataStr, input->name, input->init_str);
++ Html_append_input(html_lb, DataStr, input->name,
++ input->init_str, submit);
+ Html_append_clickpos(DataStr, input->name, click_x, click_y);
+ }
+ break;
+@@ -3634,7 +4297,8 @@ static void Html_submit_form(GtkWidget *
+ case DILLO_HTML_INPUT_BUTTON_SUBMIT:
+ /* Only the button that triggered the submit. */
+ if (input->widget == submit && form->num_submit_buttons > 0)
+- Html_append_input(DataStr, input->name, input->init_str);
++ Html_append_input(html_lb, DataStr, input->name,
++ input->init_str, submit);
+ break;
+ default:
+ break;
+@@ -3664,16 +4328,25 @@ static void Html_submit_form(GtkWidget *
+ g_free(url_str);
+ }
+
+- a_Nav_push(html_lb->bw, new_url);
++ a_Url_set_referer(new_url, html_lb->base_url);
++ if (URL_TARGET_(form->action)) {
++ a_Url_set_target(new_url, (gchar *) URL_TARGET_(form->action));
++ name_dd = a_Doc_get_by_name(html_lb->dd, (gchar *) URL_TARGET_(new_url));
++ }
++
++ if (name_dd)
++ a_Nav_push(name_dd, new_url);
++ else
++ a_Nav_push(html_lb->dd, new_url);
+ g_free(action_str);
+ g_string_free(DataStr, TRUE);
+ a_Url_free(new_url);
+ } else {
+- MSG("Html_submit_form: Method unknown\n");
++ MSG(_("Html_submit_form: Method unknown\n"));
+ }
+
+ /* now, make the rendered area have its focus back */
+- gtk_widget_grab_focus(GTK_BIN(html_lb->bw->docwin)->child);
++ gtk_widget_grab_focus(GTK_BIN(html_lb->dd->docwin)->child);
+ }
+
+
+@@ -3719,7 +4392,15 @@ static DwWidget *Html_input_image(DilloH
+ const char *attrbuf;
+
+ if ((attrbuf = Html_get_attr(html, tag, tagsize, "src")) &&
+- (url = Html_url_new(html, attrbuf, NULL, 0, 0, 0, 0))) {
++ (url = Html_url_new(html, attrbuf, NULL, 0, 0, 0, 0))) {
++
++ /* block ads */
++ if(a_Adblock_isblocked(url))
++ {
++ a_Url_free(url);
++ return NULL;
++ }
++
+ button = a_Dw_button_new (0, FALSE);
+ a_Dw_page_add_widget (DW_PAGE (html->dw), button,
+ html->stack[html->stack_top].style);
+@@ -3743,7 +4424,7 @@ static DwWidget *Html_input_image(DilloH
+ }
+ }
+
+- DEBUG_MSG(10, "Html_input_image: unable to create image submit.\n");
++ DEBUG_MSG(10, _("Html_input_image: unable to create image submit.\n"));
+ a_Url_free(url);
+ return NULL;
+ }
+@@ -3765,7 +4446,7 @@ static void Html_tag_open_input(DilloHtm
+ gint input_index;
+
+ if (!(html->InFlags & IN_FORM)) {
+- MSG_HTML("input camp outside <form>\n");
++ MSG_HTML(_("input camp outside <form>\n"));
+ return;
+ }
+
+@@ -3782,8 +4463,9 @@ static void Html_tag_open_input(DilloHtm
+ inp_type = DILLO_HTML_INPUT_PASSWORD;
+ widget = gtk_entry_new();
+ gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE);
+- if (value)
+- init_str = g_strdup(Html_get_attr(html, tag, tagsize, "value"));
++ if (value) {
++ init_str = value;//g_strdup(Html_get_attr(html, tag, tagsize, "value"));
++ }
+ } else if (!g_strcasecmp(type, "checkbox")) {
+ inp_type = DILLO_HTML_INPUT_CHECKBOX;
+ widget = gtk_check_button_new();
+@@ -3808,19 +4490,51 @@ static void Html_tag_open_input(DilloHtm
+ init_str = (value) ? value : NULL;
+ } else if (!g_strcasecmp(type, "hidden")) {
+ inp_type = DILLO_HTML_INPUT_HIDDEN;
+- if (value)
+- init_str = g_strdup(Html_get_attr(html, tag, tagsize, "value"));
++ if (value) {
++ /* adhock fix: keep \n */
++ int i;
++ gboolean found_value;
++ gchar *buf1, *buf2, *bufu;
++ gchar delimiter[3] = " >";
++
++ buf1 = g_strndup(tag, tagsize);
++ bufu = g_strndup(tag, tagsize);
++ g_strup(bufu);
++ found_value = (strstr(bufu, "VALUE=") != NULL);
++ buf2 = buf1 + (strstr(bufu, "VALUE=") - bufu + 6);
++ g_free(bufu);
++ if (found_value) {
++ GString *buf3;
++ delimiter[0] = (buf2[0] == '"' || buf2[0] == '\'') ? buf2[0] : ' ';
++ if (delimiter[0] != ' ') buf2++;
++ if (strpbrk(buf2, delimiter)) strpbrk(buf2, delimiter)[0] = '\0';
++ buf3 = g_string_new(buf2);
++ for (i = 0; i < buf3->len; ++i) {
++ if (buf3->str[i] == '\r') {
++ if (buf3->str[i + 1] == '\n')
++ g_string_erase(buf3, i, 1);
++ else
++ buf3->str[i] = '\n';
++ }
++ }
++ init_str = buf3->str;
++ g_string_free(buf3, FALSE);
++ } else {
++ init_str = g_strdup(Html_get_attr(html, tag, tagsize, "value"));
++ }
++ g_free(buf1);
++ }
+ } else if (!g_strcasecmp(type, "submit")) {
+ inp_type = DILLO_HTML_INPUT_SUBMIT;
+- init_str = (value) ? value : g_strdup("submit");
+- widget = gtk_button_new_with_label(init_str);
++ init_str = (value) ? value : g_strdup(_("submit"));
++ widget = a_I18n_gtk_button_new_with_label(init_str);
+ gtk_widget_set_sensitive(widget, FALSE); /* Until end of FORM! */
+ gtk_signal_connect(GTK_OBJECT(widget), "clicked",
+ GTK_SIGNAL_FUNC(Html_submit_form), html_lb);
+ } else if (!g_strcasecmp(type, "reset")) {
+ inp_type = DILLO_HTML_INPUT_RESET;
+- init_str = (value) ? value : g_strdup("Reset");
+- widget = gtk_button_new_with_label(init_str);
++ init_str = (value) ? value : g_strdup(_("Reset"));
++ widget = a_I18n_gtk_button_new_with_label(init_str);
+ gtk_widget_set_sensitive(widget, FALSE); /* Until end of FORM! */
+ gtk_signal_connect(GTK_OBJECT(widget), "clicked",
+ GTK_SIGNAL_FUNC(Html_reset_form), html_lb);
+@@ -3829,9 +4543,9 @@ static void Html_tag_open_input(DilloHtm
+ /* Don't request the image, make a text submit button instead */
+ inp_type = DILLO_HTML_INPUT_SUBMIT;
+ attrbuf = Html_get_attr(html, tag, tagsize, "alt");
+- label = attrbuf ? attrbuf : value ? value : name ? name : "Submit";
++ label = attrbuf ? attrbuf : value ? value : name ? name : _("Submit");
+ init_str = g_strdup(label);
+- widget = gtk_button_new_with_label(init_str);
++ widget = a_I18n_gtk_button_new_with_label(init_str);
+ gtk_widget_set_sensitive(widget, FALSE); /* Until end of FORM! */
+ gtk_signal_connect(GTK_OBJECT(widget), "clicked",
+ GTK_SIGNAL_FUNC(Html_submit_form), html_lb);
+@@ -3846,12 +4560,12 @@ static void Html_tag_open_input(DilloHtm
+ /* todo: implement it! */
+ inp_type = DILLO_HTML_INPUT_FILE;
+ init_str = (value) ? value : NULL;
+- MSG("An input of the type \"file\" wasn't rendered!\n");
++ MSG(_("An input of the type \"file\" wasn't rendered!\n"));
+ } else if (!g_strcasecmp(type, "button")) {
+ inp_type = DILLO_HTML_INPUT_BUTTON;
+ if (value) {
+ init_str = value;
+- widget = gtk_button_new_with_label(init_str);
++ widget = a_I18n_gtk_button_new_with_label(init_str);
+ }
+ } else {
+ /* Text input, which also is the default */
+@@ -3930,7 +4644,7 @@ static void Html_tag_open_isindex(DilloH
+ action = a_Url_dup(html->linkblock->base_url);
+
+ Html_form_new(html->linkblock, DILLO_HTML_METHOD_GET, action,
+- DILLO_HTML_ENC_URLENCODING);
++ NULL);
+
+ form = &(html_lb->forms[html_lb->num_forms - 1]);
+
+@@ -3978,7 +4692,7 @@ static void Html_tag_close_textarea(Dill
+ html->Stash = g_string_erase(html->Stash, 0, 1);
+ if (html->Stash->str[0] == '\n')
+ html->Stash = g_string_erase(html->Stash, 0, 1);
+-
++
+ /* As the spec recommends to canonicalize line endings, it is safe
+ * to replace '\r' with '\n'. It will be canonicalized anyway! */
+ for (i = 0; i < html->Stash->len; ++i) {
+@@ -3989,15 +4703,15 @@ static void Html_tag_close_textarea(Dill
+ html->Stash->str[i] = '\n';
+ }
+ }
+-
++
+ /* The HTML3.2 spec says it can have "text and character entities". */
+ str = Html_parse_entities(html, html->Stash->str, html->Stash->len);
+-
++
+ form = &(html_lb->forms[html_lb->num_forms - 1]);
+ form->inputs[form->num_inputs - 1].init_str = str;
+- gtk_text_insert(GTK_TEXT(form->inputs[form->num_inputs - 1].widget),
++ a_I18n_gtk_text_insert(GTK_TEXT(form->inputs[form->num_inputs - 1].widget),
+ NULL, NULL, NULL, str, -1);
+-
++
+ html->InFlags &= ~IN_TEXTAREA;
+ }
+ Html_pop_tag(html, TagIdx);
+@@ -4020,12 +4734,12 @@ static void Html_tag_open_textarea(Dillo
+
+ /* We can't push a new <FORM> because the 'action' URL is unknown */
+ if (!(html->InFlags & IN_FORM)) {
+- MSG_HTML("<textarea> outside <form>\n");
++ MSG_HTML(_("<textarea> outside <form>\n"));
+ html->ReqTagClose = TRUE;
+ return;
+ }
+ if (html->InFlags & IN_TEXTAREA) {
+- MSG_HTML("nested <textarea>\n");
++ MSG_HTML(_("nested <textarea>\n"));
+ html->ReqTagClose = TRUE;
+ return;
+ }
+@@ -4033,6 +4747,7 @@ static void Html_tag_open_textarea(Dillo
+ html->InFlags |= IN_TEXTAREA;
+ html_lb = html->linkblock;
+ form = &(html_lb->forms[html_lb->num_forms - 1]);
++
+ Html_stash_init(html);
+ html->stack[html->stack_top].parse_mode = DILLO_HTML_PARSE_MODE_VERBATIM;
+
+@@ -4096,11 +4811,11 @@ static void Html_tag_open_select(DilloHt
+ gint size, type, multi;
+
+ if (!(html->InFlags & IN_FORM)) {
+- MSG_HTML("<select> outside <form>\n");
++ MSG_HTML(_("<select> outside <form>\n"));
+ return;
+ }
+ if (html->InFlags & IN_SELECT) {
+- MSG_HTML("nested <select>\n");
++ MSG_HTML(_("nested <select>\n"));
+ return;
+ }
+ html->InFlags |= IN_SELECT;
+@@ -4153,7 +4868,7 @@ static void Html_option_finish(DilloHtml
+ GtkWidget *menuitem;
+ GSList *group;
+ DilloHtmlSelect *select;
+-
++
+ if (!(html->InFlags & IN_FORM))
+ return;
+
+@@ -4169,7 +4884,8 @@ static void Html_option_finish(DilloHtml
+ else
+ group = gtk_radio_menu_item_group(GTK_RADIO_MENU_ITEM
+ (select->options[0].menuitem));
+- menuitem = gtk_radio_menu_item_new_with_label(group, html->Stash->str);
++ menuitem = a_I18n_gtk_radio_menu_item_new_with_label(group,
++ html->Stash->str);
+ select->options[select->num_options - 1].menuitem = menuitem;
+ if ( select->options[select->num_options - 1].value == NULL )
+ select->options[select->num_options - 1].value =
+@@ -4182,7 +4898,7 @@ static void Html_option_finish(DilloHtml
+ GTK_SIGNAL_FUNC (a_Interface_scroll_popup),
+ NULL);
+ } else if ( input->type == DILLO_HTML_INPUT_SEL_LIST ) {
+- menuitem = gtk_list_item_new_with_label(html->Stash->str);
++ menuitem = a_I18n_gtk_list_item_new_with_label(html->Stash->str);
+ select->options[select->num_options - 1].menuitem = menuitem;
+ if (select->options[select->num_options - 1].value == NULL)
+ select->options[select->num_options - 1].value =
+@@ -4241,14 +4957,14 @@ static void Html_tag_close_select(DilloH
+
+ if (html->InFlags & IN_SELECT) {
+ html->InFlags &= ~IN_SELECT;
+-
++
+ html_lb = html->linkblock;
+-
++
+ form = &(html_lb->forms[html_lb->num_forms - 1]);
+ input = &(form->inputs[form->num_inputs - 1]);
+ if (input->type == DILLO_HTML_INPUT_SELECT) {
+ Html_option_finish(html);
+-
++
+ gtk_option_menu_set_menu(GTK_OPTION_MENU(input->widget),
+ input->select->menu);
+ Html_select_set_history(input);
+@@ -4256,14 +4972,14 @@ static void Html_tag_close_select(DilloH
+ /* gtk_option_menu_set_history(GTK_OPTION_MENU(input->widget), 1); */
+
+ gtk_widget_show(input->widget);
+-
++
+ embed_gtk = a_Dw_embed_gtk_new ();
+ a_Dw_embed_gtk_add_gtk (DW_EMBED_GTK (embed_gtk), input->widget);
+ a_Dw_page_add_widget(DW_PAGE (html->dw), embed_gtk,
+ html->stack[html->stack_top].style);
+ } else if (input->type == DILLO_HTML_INPUT_SEL_LIST) {
+ Html_option_finish(html);
+-
++
+ if (input->select->size < input->select->num_options) {
+ scrolledwindow = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow),
+@@ -4272,23 +4988,23 @@ static void Html_tag_close_select(DilloH
+ gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW
+ (scrolledwindow),
+ input->widget);
+-
++
+ gtk_container_set_focus_vadjustment
+ (GTK_CONTAINER (input->widget),
+ gtk_scrolled_window_get_vadjustment
+ (GTK_SCROLLED_WINDOW(scrolledwindow)));
+-
++
+ /* Calculate the height of the scrolled window */
+ gtk_widget_size_request(input->select->options[0].menuitem, &req);
+ height = input->select->size * req.height +
+ 2 * scrolledwindow->style->klass->ythickness;
+ gtk_widget_set_usize(scrolledwindow, -1, height);
+-
++
+ gtk_widget_show(input->widget);
+ input->widget = scrolledwindow;
+ }
+ gtk_widget_show(input->widget);
+-
++
+ /* note: In this next call, scrolledwindows get a g_warning from
+ * gdkwindow.c:422. I'm not really going to sweat it now - the
+ * embedded widget stuff is going to get massively redone anyway. */
+@@ -4307,11 +5023,15 @@ static void Html_tag_close_select(DilloH
+ static void Html_tag_open_base(DilloHtml *html, char *tag, gint tagsize)
+ {
+ const char *attrbuf;
++ gchar *attrbuf_enc;
+ DilloUrl *BaseUrl;
+
+ if (html->InFlags & IN_HEAD) {
+ if ((attrbuf = Html_get_attr(html, tag, tagsize, "href"))) {
+- BaseUrl = Html_url_new(html, attrbuf, "", 0, 0, 0, 1);
++ attrbuf_enc = a_I18n_convert(DILLO_CHARSET, html->linkblock->charset,
++ attrbuf, -1);
++ BaseUrl = Html_url_new(html, attrbuf_enc, "", 0, 0, 0, 1);
++ g_free(attrbuf_enc);
+ if (URL_SCHEME_(BaseUrl)) {
+ /* Pass the URL_SpamSafe flag to the new base url */
+ a_Url_set_flags(
+@@ -4319,12 +5039,14 @@ static void Html_tag_open_base(DilloHtml
+ a_Url_free(html->linkblock->base_url);
+ html->linkblock->base_url = BaseUrl;
+ } else {
+- MSG_HTML("base URI is relative (it MUST be absolute)\n");
++ MSG_HTML(_("base URI is relative (it MUST be absolute)\n"));
+ a_Url_free(BaseUrl);
+ }
+ }
++ if ((attrbuf = Html_get_attr(html, tag, tagsize, "target")))
++ a_Url_set_target(html->linkblock->base_url, attrbuf);
+ } else {
+- MSG_HTML("the BASE element must appear in the HEAD section\n");
++ MSG_HTML(_("the BASE element must appear in the HEAD section\n"));
+ }
+ }
+
+@@ -4467,7 +5189,6 @@ static const TagInfo Tags[] = {
+ {"body", B8(011110),'O',1, Html_tag_open_body, Html_tag_close_body},
+ {"br", B8(010001),'F',0, Html_tag_open_br, Html_tag_close_default},
+ {"button", B8(011101),'R',2, Html_tag_open_button, Html_tag_close_default},
+- /* caption */
+ {"center", B8(011110),'R',2, Html_tag_open_center, Html_tag_close_div},
+ {"cite", B8(010101),'R',2, Html_tag_open_cite, Html_tag_close_default},
+ {"code", B8(010101),'R',2, Html_tag_open_code, Html_tag_close_default},
+@@ -4484,9 +5205,9 @@ static const TagInfo Tags[] = {
+ {"em", B8(010101),'R',2, Html_tag_open_em, Html_tag_close_default},
+ /* fieldset */
+ {"font", B8(010101),'R',2, Html_tag_open_font, Html_tag_close_default},
+- {"form", B8(011110),'R',2, Html_tag_open_form, Html_tag_close_form},
+- {"frame", B8(010010),'F',0, Html_tag_open_frame, Html_tag_close_default},
+- {"frameset", B8(011110),'R',2,Html_tag_open_frameset, Html_tag_close_default},
++ {"form", B8(011110),'R',5, Html_tag_open_form, Html_tag_close_form},
++ {"frame", B8(000010),'F',0, Html_tag_open_frame, Html_tag_close_default},
++ {"frameset", B8(001110),'R',2,Html_tag_open_frameset, Html_tag_close_default},
+ {"h1", B8(010110),'R',2, Html_tag_open_h, Html_tag_close_h},
+ {"h2", B8(010110),'R',2, Html_tag_open_h, Html_tag_close_h},
+ {"h3", B8(010110),'R',2, Html_tag_open_h, Html_tag_close_h},
+@@ -4497,7 +5218,7 @@ static const TagInfo Tags[] = {
+ {"hr", B8(010010),'F',0, Html_tag_open_hr, Html_tag_close_default},
+ {"html", B8(001110),'O',1, Html_tag_open_html, Html_tag_close_html},
+ {"i", B8(010101),'R',2, Html_tag_open_i, Html_tag_close_default},
+- {"iframe", B8(011110),'R',2, Html_tag_open_frame, Html_tag_close_default},
++ {"iframe", B8(011110),'R',2, Html_tag_open_iframe, Html_tag_close_default},
+ {"img", B8(010001),'F',0, Html_tag_open_img, Html_tag_close_default},
+ {"input", B8(010001),'F',0, Html_tag_open_input, Html_tag_close_default},
+ /* ins */
+@@ -4511,7 +5232,8 @@ static const TagInfo Tags[] = {
+ /* menu 1010 -- todo: not exactly 1010, it can contain LI and inline */
+ {"menu", B8(011010),'R',2, Html_tag_open_menu, Html_tag_close_par},
+ {"meta", B8(100001),'F',0, Html_tag_open_meta, Html_tag_close_default},
+- /* noframes 1011 */
++ {"noframe", B8(001011),'R',2, Html_tag_open_noframe, Html_tag_close_default}, /* Illegal tag */
++ {"noframes", B8(001011),'R',2, Html_tag_open_noframes, Html_tag_close_default},
+ /* noscript 1011 */
+ /* object 11xxxx */
+ {"ol", B8(011010),'R',2, Html_tag_open_ol, Html_tag_close_par},
+@@ -4675,7 +5397,7 @@ static void Html_stack_cleanup_at_open(D
+
+ /* we have an inline (or empty) container... */
+ if (Tags[oldtag_idx].EndTag == 'R') {
+- MSG_HTML("<%s> is not allowed to contain <%s>. -- closing <%s>\n",
++ MSG_HTML(_("<%1$s> is not allowed to contain <%2$s>. -- closing <%3$s>\n"),
+ Tags[oldtag_idx].name, Tags[new_idx].name,
+ Tags[oldtag_idx].name);
+ }
+@@ -4684,7 +5406,6 @@ static void Html_stack_cleanup_at_open(D
+ if ((html->InFlags & IN_PRE) &&
+ strcmp(Tags[new_idx].name, "hr") == 0)
+ break;
+-
+ /* This call closes the top tag only. */
+ Html_tag_cleanup_at_close(html, oldtag_idx);
+ }
+@@ -4791,7 +5512,7 @@ static void Html_process_tag(DilloHtml *
+ /* todo: this is only raising a warning, take some defined action.
+ * Note: apache uses IMG inside PRE (we could use its "alt"). */
+ if ((html->InFlags & IN_PRE) && Html_tag_pre_excludes(ni))
+- MSG_HTML("<pre> is not allowed to contain <%s>\n", Tags[ni].name);
++ MSG_HTML(_("<pre> is not allowed to contain <%s>\n"), Tags[ni].name);
+
+ /* Push the tag into the stack */
+ Html_push_tag(html, ni);
+@@ -4813,7 +5534,7 @@ static void Html_process_tag(DilloHtml *
+ /* We compare the "id" value with the url-decoded "name" value */
+ if (!html->NameVal || strcmp(html->NameVal, attrbuf)) {
+ if (html->NameVal)
+- MSG_HTML("'id' and 'name' attribute of <a> tag differ\n");
++ MSG_HTML(_("'id' and 'name' attribute of <a> tag differ\n"));
+ Html_add_anchor(html, attrbuf);
+ }
+ }
+@@ -4869,6 +5590,7 @@ static const char *Html_get_attr2(DilloH
+ DilloHtmlTagParsingFlags flags)
+ {
+ gint i, isocode, entsize, Found = 0, delimiter = 0, attr_pos = 0;
++ gchar *subst;
+ GString *Buf = html->attr_data;
+ DilloHtmlTagParsingState state = SEEK_ATTR_START;
+
+@@ -4922,7 +5644,9 @@ static const char *Html_get_attr2(DilloH
+ } else if (tag[i] == '&' && (flags & HTML_ParseEntities)) {
+ if ((isocode = Html_parse_entity(html, tag+i,
+ tagsize-i, &entsize)) >= 0) {
+- g_string_append_c(Buf, (gchar) isocode);
++ subst = Html_ucs2utf8(html, isocode);
++ g_string_append(Buf, subst);
++ g_free(subst);
+ i += entsize-1;
+ } else {
+ g_string_append_c(Buf, tag[i]);
+@@ -4996,7 +5720,12 @@ static void Html_add_widget(DilloHtml *h
+ Html_parse_length (html, width_str) : DW_STYLE_LENGTH_AUTO;
+ new_style_attrs.height = height_str ?
+ Html_parse_length (html, height_str) : DW_STYLE_LENGTH_AUTO;
+- style = a_Dw_style_new (&new_style_attrs, (html)->bw->main_window->window);
++ if ((gulong)new_style_attrs.width*new_style_attrs.height
++ > (gulong)(G_MAXLONG >> 1)) {
++ new_style_attrs.width = DW_STYLE_LENGTH_AUTO;
++ new_style_attrs.height = DW_STYLE_LENGTH_AUTO;
++ }
++ style = a_Dw_style_new (&new_style_attrs, (html)->dd->bw->main_window->window);
+ a_Dw_page_add_widget(DW_PAGE (html->dw), widget, style);
+ a_Dw_style_unref (style);
+ }
+@@ -5030,6 +5759,11 @@ static gint Html_write_raw(DilloHtml *ht
+ gint token_start, buf_index;
+
+ g_return_val_if_fail ((page = DW_PAGE (html->dw)) != NULL, 0);
++
++ if(bufsize < 0){
++ _MSG(_("Html_write_raw : bufsize is negative!\n"));
++ bufsize = strlen(buf);
++ }
+
+ buf = g_strndup(buf, bufsize);
+
+@@ -5105,7 +5839,7 @@ static gint Html_write_raw(DilloHtml *ht
+ if (buf[offset] == ch || !buf[offset]) {
+ buf_index = offset;
+ } else {
+- MSG_HTML("attribute lacks closing quote\n");
++ MSG_HTML(_("attribute lacks closing quote\n"));
+ break;
+ }
+ }
+@@ -5113,7 +5847,7 @@ static gint Html_write_raw(DilloHtml *ht
+ /* unterminated tag detected */
+ p = g_strndup(buf+token_start+1,
+ strcspn(buf+token_start+1, " <"));
+- MSG_HTML("<%s> element lacks its closing '>'\n", p);
++ MSG_HTML(_("<%s> element lacks its closing '>'\n"), p);
+ g_free(p);
+ --buf_index;
+ break;
+@@ -5127,19 +5861,62 @@ static gint Html_write_raw(DilloHtml *ht
+ }
+ }
+ } else {
+- /* A Word: search for whitespace or tag open */
+- while (++buf_index < bufsize) {
+- buf_index += strcspn(buf + buf_index, " <\n\r\t\f\v");
+- if ( buf[buf_index] == '<' && (ch = buf[buf_index + 1]) &&
+- !isalpha(ch) && !strchr("/!?", ch))
+- continue;
+- break;
+- }
+- if (buf_index < bufsize || Eof) {
+- /* successfully found end of token */
+- Html_process_word(html, buf + token_start,
+- buf_index - token_start);
+- token_start = buf_index;
++ /* A Word */
++ if (a_I18n_use_CJK_charset(html->linkblock->lang)) {
++ if (!IS_ASCII_CHAR(buf[buf_index])) {
++ /* Deal with multibyte characters, treat each character as a word. */
++ int wordnum = a_I18n_mblen(&buf[buf_index]);
++ if (wordnum != 0) {
++ buf_index += wordnum;
++ if (buf_index < bufsize || Eof) {
++ Html_process_word(html, buf + token_start,
++ buf_index - token_start);
++ token_start = buf_index;
++ }
++ } else {
++ /* ignore it, unless it is a multibyte character that has not
++ * completely arrived yet */
++ buf_index++;
++ if (buf_index < bufsize || Eof)
++ token_start = buf_index;
++ }
++ } else {
++ /* search for whitespace or tag open or multibyte character*/
++ /* otherwise, fall back to ASCII */
++ while (++buf_index < bufsize) {
++ while (buf_index < bufsize
++ && IS_ASCII_CHAR(buf[buf_index])
++ && !memchr(" <\n\r\t\f\v&", buf[buf_index], 8))
++ buf_index++;
++ if (buf[buf_index] == '<'
++ && buf[buf_index + 1]
++ && !isalpha(buf[buf_index + 1])
++ && !strchr("/!?", buf[buf_index + 1]))
++ continue; /* found a tag. */
++ break;
++ }
++ if (buf_index < bufsize || Eof) {
++ /* successfully found end of token */
++ Html_process_word(html, buf + token_start,
++ buf_index - token_start);
++ token_start = buf_index;
++ }
++ }
++ } else {
++ /* search for whitespace or tag open or multibyte character*/
++ while (++buf_index < bufsize) {
++ buf_index += strcspn(buf + buf_index, " <\n\r\t\f\v");
++ if ( buf[buf_index] == '<' && (ch = buf[buf_index + 1]) &&
++ !isalpha(ch) && !strchr("/!?", ch))
++ continue;
++ break;
++ }
++ if (buf_index < bufsize || Eof) {
++ /* successfully found end of token */
++ Html_process_word(html, buf + token_start,
++ buf_index - token_start);
++ token_start = buf_index;
++ }
+ }
+ }
+ }/*while*/
+@@ -5150,6 +5927,60 @@ static gint Html_write_raw(DilloHtml *ht
+ return token_start;
+ }
+
++/* wait for </head> or <body> tag. if waiting, return TRUE*/
++static gboolean Html_wait(char *Buf, gint BufSize, gint Eof)
++{
++ char *head, *body;
++ struct timespec t = {0, 10000000L}; // 10ms
++
++ if (Eof == 1) return FALSE;
++
++ head = a_Misc_stristr(Buf, "</head>");
++ if (head && (BufSize - (head - Buf)) > 0) return FALSE;
++ body = a_Misc_stristr(Buf, "<body");
++ if (body && (BufSize - (body - Buf)) > 0) return FALSE;
++
++ _MSG("wait..\n");
++ nanosleep(&t, NULL);
++ return TRUE;
++}
++
++/* guess charset */
++static void
++Html_guess_charset(DilloHtml *html, char *Buf, gint BufSize)
++{
++ if (html->Start_Ofs != 0 && html->linkblock->usingMetaCharset)
++ return;
++
++ g_free(html->linkblock->charset);
++ /* 1. Server Charset */
++ if (html->server_charset) {
++ html->linkblock->charset = g_strdup(html->server_charset);
++ return;
++ }
++
++ /* 2. Meta Tag Charset */
++ html->linkblock->charset = a_I18n_get_charset_from_meta_tag(Buf, BufSize);
++ if (html->linkblock->charset) {
++#if 0
++ /* for rare case - page has many entities. */
++ gchar *charset;
++ if (g_strcasecmp(html->linkblock->charset, "ISO-8859-1") == 0) {
++ Buf = Html_parse_entities(html, Buf, BufSize);
++ charset = a_I18n_get_encoding(Buf, -1);
++ if (!html->lang) html->lang = a_I18n_get_lang_from_charset(charset);
++ g_free(charset);
++ g_free(Buf);
++ }
++#endif
++ html->linkblock->usingMetaCharset = TRUE;
++ return;
++ }
++
++ /* 3. Guess from document */
++ html->linkblock->charset = a_I18n_get_encoding(Buf, BufSize);
++}
++
+ /*
+ * Process the newly arrived html and put it into the page structure.
+ * (This function is called by Html_callback whenever there's new data)
+@@ -5157,23 +5988,51 @@ static gint Html_write_raw(DilloHtml *ht
+ static void Html_write(DilloHtml *html, char *Buf, gint BufSize, gint Eof)
+ {
+ DwPage *page;
+- char completestr[32];
+ gint token_start;
+- char *buf = Buf + html->Start_Ofs;
+- gint bufsize = BufSize - html->Start_Ofs;
+
+ g_return_if_fail ( (page = DW_PAGE (html->dw)) != NULL );
+-
++ if (BufSize == 0) return;
+ html->Start_Buf = Buf;
+- token_start = Html_write_raw(html, buf, bufsize, Eof);
++ html->Buf_Size = BufSize;
++
++ if (!html->trans) {
++ /* wait <meta> tag. */
++ if (html->Start_Ofs == 0 && Html_wait(Buf, BufSize, Eof))
++ return;
++ /* guess charset */
++ Html_guess_charset(html, Buf, BufSize);
++ if (html->linkblock->charset) {
++ html->trans = Html_translation_new(html->linkblock->charset,
++ DILLO_CHARSET);
++ if (!html->lang)
++ html->lang = a_I18n_get_lang_from_charset(html->linkblock->charset);
++ strncpy(html->linkblock->lang, html->lang, 6);
++ Html_set_top_font(html, NULL, 0, 0, 0);
++ }
++ }
++
++ if (html->trans) {
++ int bufsize;
++
++ // translation needed and available
++ Html_translate(html->trans, Buf, BufSize);
++ // note trans->bufsize includes the null byte
++ bufsize = html->trans->bufsize - html->Start_Ofs;
++ if (bufsize == 0) token_start = 0;
++ else
++ token_start = Html_write_raw(html,
++ html->trans->buffer + html->Start_Ofs, bufsize, Eof);
++ } else {
++ // translation not needed, or not available
++ token_start = Html_write_raw(html, Buf + html->Start_Ofs,
++ BufSize - html->Start_Ofs, Eof);
++ }
+ html->Start_Ofs += token_start;
+
+- if ( html->bw ) {
+- g_snprintf(
+- completestr, 32, "%s%.1f Kb",
+- PBAR_PSTR(prefs.panel_size == 1),
+- (float)html->Start_Ofs/1024);
+- a_Progressbar_update(html->bw->progress, completestr, 1);
++ if ( html->dd ) {
++ html->dd->progress = html->Start_Ofs/1024;
++ html->dd->ready = FALSE;
++ a_Doc_progress_update(html->dd);
+ }
+ }
+
+@@ -5207,12 +6066,97 @@ static void Html_close(DilloHtml *html,
+ g_string_free(html->attr_data, TRUE);
+
+ /* Remove this client from our active list */
+- a_Interface_close_client(html->bw, ClientKey);
+-
+- /* Set progress bar insensitive */
+- a_Progressbar_update(html->bw->progress, NULL, 0);
++ a_Doc_close_client(html->dd, ClientKey);
+
++ /* update progress */
++ html->dd->ready = TRUE;
++ a_Doc_progress_update(html->dd);
++
++ /* close the character encoding converter, if present */
++ Html_translation_free(html->trans, FALSE);
++ g_free(html->server_charset);
++ g_free(html->lang);
++
+ g_free(html);
+ }
+
++/*
++ * This translates between character encodings. The results are put into
++ * `trans'. This call can be used repeatedly as new data arrives.
++ */
++static void Html_translate(DilloTrans *trans, char *buf, gint bufsize) {
++ char *source, *dest, *temp;
++ size_t s_left, d_left;
++ int bytesneeded;
++
++ g_return_if_fail(trans && buf);
++
++ /* is there nothing new? */
++ if (bufsize == trans->converted) {
++ if (bufsize == 0 && !trans->buffer) {
++ trans->buffer = g_new0(char,1); /* allocate if given empty input */
++ trans->bufsize = 0;
++ }
++ return; /* no new data */
++ }
++
++ /* allocate a string, leaving enough space for worst-case growth */
++
++ /* now the proper translation */
++ source = buf + trans->converted;
++ s_left = bufsize - trans->converted;
++ d_left = bufsize * D_CHAR_GROWTH;
++ temp = g_malloc(d_left + 1);
++ dest = temp;
++ a_I18n_iconv(trans->conversion,
++ &source, &s_left,
++ &dest, &d_left);
++ trans->converted = bufsize - s_left; /* note how far into the source */
++
++ /* now do the proper allocation */
++ bytesneeded = bufsize * D_CHAR_GROWTH - d_left;
++ if (!trans->buffer) {
++ trans->buffer = g_realloc(temp, bytesneeded + 1); /* cut to size */
++ trans->bufsize = bytesneeded;
++ } else {
++ trans->buffer = g_realloc(trans->buffer, trans->bufsize + bytesneeded + 1);
++ memcpy(trans->buffer + trans->bufsize, temp, bytesneeded + 1);
++ trans->bufsize += bytesneeded;
++ g_free(temp);
++ }
++}
++
++/*
++ * This sets up character encoding translation. It should be done once
++ * for each document that has to be translated.
++ * The inputs are iconv-style encoding names.
++ * This can return NULL if there is an error.
++ */
++static DilloTrans *Html_translation_new(char *source, char *dest) {
++ DilloTrans *trans;
++
++ g_return_val_if_fail(source && dest, NULL);
++ if (strncmp(source, "ASCII", 5) == 0) return NULL;
++
++ trans = g_new0(DilloTrans, 1);
++ trans->conversion = iconv_open(dest, source);
++ if (trans->conversion == (iconv_t)-1) {
++ g_warning (_("could not allocate character encoding converter"));
++ g_free(trans);
++ return NULL;
++ }
++ return trans;
++}
++
++/*
++ * This shuts down character encoding translation.
++ * Set the second parameter to true if you want to keep the translated buffer.
++ */
++static void Html_translation_free(DilloTrans *trans, gboolean keepbuf) {
++ if (!trans) return;
++ iconv_close(trans->conversion);
++ if (!keepbuf) g_free(trans->buffer);
++ g_free(trans);
++}
+
++/* vim: set ts=3 sw=3 sts=3 expandtab:*/
+diff -pruN dillo-0.8.6/src/html.h dillo-0.8.6-i18n-misc-20060709/src/html.h
+--- dillo-0.8.6/src/html.h 2006-01-14 01:05:20.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/html.h 2006-05-16 01:21:09.000000000 +0900
+@@ -1,10 +1,11 @@
+ #ifndef __HTML_H__
+ #define __HTML_H__
+
++#include <iconv.h>
+ #include <gdk/gdk.h>
+ #include <gtk/gtkcontainer.h>
+
+-#include "browser.h" /* for BrowserWindow */
++#include "browser.h" /* for DilloDoc */
+ #include "dw_widget.h" /* for DwWidget */
+ #include "dw_image.h" /* for DwImageMapList */
+
+@@ -18,6 +19,9 @@ extern "C" {
+ likely that imagemaps will go here. */
+
+ typedef struct _DilloHtmlLB DilloHtmlLB;
++#ifdef ENABLE_META_REFRESH
++typedef struct _DilloHtmlMetaRefreshData DilloHtmlMetaRefreshData;
++#endif
+
+ typedef struct _DilloHtml DilloHtml;
+ typedef struct _DilloHtmlClass DilloHtmlClass;
+@@ -26,10 +30,11 @@ typedef struct _DilloHtmlForm DilloHt
+ typedef struct _DilloHtmlOption DilloHtmlOption;
+ typedef struct _DilloHtmlSelect DilloHtmlSelect;
+ typedef struct _DilloHtmlInput DilloHtmlInput;
++typedef struct _DilloTrans DilloTrans;
+
+
+ struct _DilloHtmlLB {
+- BrowserWindow *bw;
++ DilloDoc *dd;
+ DilloUrl *base_url;
+
+ DilloHtmlForm *forms;
+@@ -47,8 +52,22 @@ struct _DilloHtmlLB {
+
+ gint num_page_bugs;
+ GString *page_bugs;
++
++ gchar *charset;
++ gboolean usingMetaCharset;
++ gchar lang[6];
++#ifdef ENABLE_META_REFRESH
++ gint *meta_refresh;
++#endif
+ };
+
++#ifdef ENABLE_META_REFRESH
++struct _DilloHtmlMetaRefreshData {
++ DilloHtmlLB *lb;
++ int html_dead;
++ DilloUrl *url;
++};
++#endif
+
+ typedef enum {
+ DT_NONE,
+@@ -88,6 +107,12 @@ typedef enum {
+ DILLO_HTML_TABLE_MODE_TD /* inside of <td> */
+ } DilloHtmlTableMode;
+
++typedef enum {
++ DILLO_HTML_FRAME_MODE_NONE, /* no frameset at all */
++ DILLO_HTML_FRAME_MODE_IFRAME, /* inside of <iframe> */
++ DILLO_HTML_FRAME_MODE_FRAMESET, /* inside of <frameset> */
++ DILLO_HTML_FRAME_MODE_NOFRAMES /* inside of <noframes> */
++} DilloHtmlFrameMode;
+
+ typedef enum {
+ IN_HTML = 1 << 0,
+@@ -98,7 +123,8 @@ typedef enum {
+ IN_TEXTAREA = 1 << 5,
+ IN_MAP = 1 << 6,
+ IN_PRE = 1 << 7,
+- IN_BUTTON = 1 << 8
++ IN_BUTTON = 1 << 8,
++ IN_FRAMESET = 1 << 9
+ } DilloHtmlProcessingState;
+
+
+@@ -107,6 +133,8 @@ struct _DilloHtmlState {
+ DwStyle *style, *table_cell_style;
+ DilloHtmlParseMode parse_mode;
+ DilloHtmlTableMode table_mode;
++ DilloHtmlFrameMode frame_mode;
++ GtkWidget *frameset;
+ gboolean cell_text_align_set;
+ enum { HTML_LIST_NONE, HTML_LIST_UNORDERED, HTML_LIST_ORDERED } list_type;
+ gint list_number;
+@@ -135,14 +163,10 @@ typedef enum {
+ DILLO_HTML_METHOD_POST
+ } DilloHtmlMethod;
+
+-typedef enum {
+- DILLO_HTML_ENC_URLENCODING
+-} DilloHtmlEnc;
+-
+ struct _DilloHtmlForm {
+ DilloHtmlMethod method;
+ DilloUrl *action;
+- DilloHtmlEnc enc;
++ gchar *charset;
+
+ DilloHtmlInput *inputs;
+ gint num_inputs;
+@@ -196,12 +220,24 @@ struct _DilloHtmlInput {
+ gboolean init_val; /* only meaningful for buttons */
+ };
+
++/* This is used when converting from one character encoding to another */
++struct _DilloTrans {
++ iconv_t conversion; /* iconv conversion handler */
++ char *buffer; /* The converted string. This moves about!! */
++ int bufsize; /* Current length of the buffer, excluding NULL. */
++ int converted; /* number of input bytes converted */
++};
++
+ struct _DilloHtml {
+ DwWidget *dw; /* this is duplicated in the stack (page) */
++ DilloTrans *trans; /* handle for character set conversion */
++ gchar *server_charset;
++ gchar *lang;
+
+ DilloHtmlLB *linkblock;
+ gchar *Start_Buf;
+ size_t Start_Ofs;
++ size_t Buf_Size;
+ size_t CurrTagOfs;
+ size_t OldTagOfs, OldTagLine;
+
+@@ -235,7 +271,7 @@ struct _DilloHtml {
+
+ GString *attr_data;
+
+- BrowserWindow *bw;
++ DilloDoc *dd;
+ };
+
+ #ifdef __cplusplus
+diff -pruN dillo-0.8.6/src/i18n.c dillo-0.8.6-i18n-misc-20060709/src/i18n.c
+--- dillo-0.8.6/src/i18n.c 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/i18n.c 2006-05-16 01:21:09.000000000 +0900
+@@ -0,0 +1,662 @@
++/*
++ * File: i18n.c
++ *
++ * Copyright (C) 2003 Kiyo <kiyo@teki.jpn.ph>
++ * This code referred to Mr. Robert Thomson's code. and created it.
++ *
++ * 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 of the License, or
++ * (at your option) any later version.
++ */
++
++/*
++ * guess encoding charset and convert
++ */
++
++#include <config.h>
++#include <ctype.h>
++#include <string.h>
++#include <glib.h>
++#include <errno.h> /* for iconv error codes */
++#include <iconv.h>
++
++#include "intl.h"
++#include "misc.h"
++#include "msg.h"
++#include "i18n.h"
++
++//#define DEBUG_LEVEL 10
++#include "debug.h"
++
++#define MIN_HEADER_LENGTH (gint)(sizeof("<head><meta http-equiv=\"content-type\"" \
++ " content=\"text/html\"; charset=></head>") - 1)
++#define MAX_HEADER_LENGTH 10240
++
++typedef enum {
++ AD_NONE,
++ AD_CHINESE,
++ AD_KOREAN,
++ AD_JAPANESE,
++ AD_ALL
++} I18nAutoDetectionType;
++
++static gchar *default_lang;
++static gchar *dw_charset;
++static I18nAutoDetectionType detect_type;
++static gboolean use_CJK_charset;
++
++typedef struct {
++ gchar *lang;
++ gchar *charset;
++} lang_charset;
++
++#define LANG_TBL_N 59
++static lang_charset lang_tbl[LANG_TBL_N] = {
++ {"ZH_TW", "BIG5"},
++ {"ZH_HK", "BIG5HKSCS"},
++ {"ZH_CN", "GBK"},
++ {"YI", "CP1255"},
++ {"VI", "TCVN"},
++ {"UR", "CP1256"},
++ {"UK", "KOI8-U"},
++ {"TURKISH", "ISO8859-9"},
++ {"TT", "TATAR-CYR"},
++ {"TR", "ISO8859-9"},
++ {"TG", "KOI8-C"},
++ {"TA", "TSCII-0"},
++ {"SR_SP", "ISO8859-2"},
++ {"SR", "ISO8859-5"},
++ {"SQ", "ISO8859-2"},
++ {"SP", "ISO8859-5"},
++ {"SL", "ISO8859-2"},
++ {"SK", "ISO8859-2"},
++ {"SH", "ISO8859-2"},
++ {"SE_NO", "UTF-8"},
++ {"SERBOCROATIAN", "ISO8859-2"},
++ {"RU_UA", "KOI8-U"},
++ {"RU_RU", "KOI8-R"},
++ {"RUSSIAN", "ISO8859-5"},
++ {"RUMANIAN", "ISO8859-2"},
++ {"RU", "KOI8-R"},
++ {"RO", "ISO8859-2"},
++ {"POSIX", "C"},
++ {"POLISH", "ISO8859-2"},
++ {"PL", "ISO8859-2"},
++ {"MT", "ISO8859-3"},
++ {"MK", "ISO8859-5"},
++ {"LO", "MULELAO-1"},
++ {"KO", "EUCKR"},
++ {"KA", "GEORGIAN-ACADEMY"},
++ {"JP_JP", "EUCJP"},
++ {"JA", "EUCJP"},
++ {"IW", "ISO8859-8"},
++ {"IU", "NUNACOM-8"},
++ {"HY", "ARMSCII-8"},
++ {"HU", "ISO8859-2"},
++ {"HR", "ISO8859-2"},
++ {"HI", "ISCII-DEV"},
++ {"HE", "ISO8859-8"},
++ {"GREEK", "ISO8859-7"},
++ {"FA", "UTF-8"},
++ {"EO", "ISO8859-3"},
++ {"EL", "ISO8859-7"},
++ {"EE", "ISO8859-4"},
++ {"CZ", "ISO8859-2"},
++ {"CS", "ISO8859-2"},
++ {"CROATIAN", "ISO8859-2"},
++ {"CHINESE-T", "EUCTW"},
++ {"CHINESE-S", "EUCCN"},
++ {"BE", "CP1251"},
++ {"AZ", "ISO8859-9E"},
++ {"AR", "ISO8859-6"},
++ {"AM", "UTF-8"},
++ {"A3", "KOI8-C"},
++};
++
++static gchar *I18n_get_charset_from_lang(const gchar *lang)
++{
++ gint i;
++ gchar u_lang[64];
++
++ strncpy(u_lang, lang, 64);
++ g_strup(u_lang);
++ if (strstr(u_lang, "EURO")) return g_strdup("ISO8859-15");
++ for (i = 0; i < LANG_TBL_N; i++) {
++ if (strncmp(u_lang, lang_tbl[i].lang, strlen(lang_tbl[i].lang)) == 0)
++ return g_strdup(lang_tbl[i].charset);
++ }
++ return g_strdup("ISO8859-1");
++}
++
++void a_I18n_detect_DW_locale()
++{
++ char *lang;
++
++ lang = getenv("LC_CTYPE");
++ if (!lang || !*lang) lang = getenv("LC_ALL");
++ if (!lang || !*lang) lang = getenv("LANG");
++
++ detect_type = AD_NONE;
++ use_CJK_charset = FALSE;
++ if (!lang) {
++ dw_charset = g_strdup("ISO8859-1");
++ default_lang = g_strdup("en");
++ return;
++ }
++ if (g_strncasecmp(lang, "ZH", 2) == 0) {
++ detect_type = AD_CHINESE;
++ use_CJK_charset = TRUE;
++ } else if (g_strncasecmp(lang, "KO", 2) == 0) {
++ detect_type = AD_KOREAN;
++ use_CJK_charset = TRUE;
++ } else if (g_strncasecmp(lang, "JA", 2) == 0) {
++ detect_type = AD_JAPANESE;
++ use_CJK_charset = TRUE;
++ }
++ if (strchr(lang, '.')) {
++ default_lang = g_strdup(lang);
++ strchr(default_lang, '.')[0] = 0;
++ } else {
++ default_lang = g_strdup(lang);
++ }
++ if (strchr(default_lang, '_')) {
++ strchr(default_lang, '_')[0] = '-';
++ }
++
++ dw_charset = (strchr(lang, '.'))
++ ? a_I18n_fix_charset(g_strdup(strchr(lang, '.') + 1))
++ : I18n_get_charset_from_lang(lang);
++ if (!dw_charset) dw_charset = g_strdup(DILLO_CHARSET);
++}
++
++const gchar *a_I18n_get_DW_charset()
++{
++ return dw_charset;
++}
++
++/* If charset has latin1, return TRUE. */
++gboolean a_I18n_has_latin1_charset(gchar *lang)
++{
++ return (g_strncasecmp(lang, "ja", 2) != 0);
++}
++
++gchar *a_I18n_get_lang_from_charset(const gchar *charset)
++{
++ gchar *buf, *lang;
++ if (!charset) return NULL;
++
++ buf = g_strdup(charset);
++ g_strup(buf);
++ if (strcmp(buf, "ISO-8859-1") == 0 ||
++ strcmp(buf, "WINDOWS-1252") == 0) {
++ lang ="en"; /* af,sq,eu,ca,da,nl,fo,fi,fr,gl,de,is,ga,it */
++ } else if (strncmp(buf, "BIG", 3) == 0 ||
++ strcmp(buf, "EUC-TW") == 0) {
++ lang ="zh-TW"; /* Traditional */
++ } else if (strncmp(buf, "GB", 2) == 0 ||
++ strcmp(buf, "EUC-CN") == 0) {
++ lang ="zh-CN"; /* Simplified */
++ } else if (strcmp(buf, "SJIS") == 0 ||
++ strncmp(buf, "SHIFT", 5) == 0 ||
++ strcmp(buf, "EUC-JP") == 0 ||
++ strcmp(buf, "ISO-2022-JP") == 0) {
++ lang ="ja";
++ } else if (strcmp(buf, "EUC-KR") == 0 ||
++ strcmp(buf, "ISO-2022-KR") == 0) {
++ lang ="ko";
++ } else if (strcmp(buf, "ISO-8859-2") == 0 ||
++ strcmp(buf, "WINDOWS-1250") == 0) {
++ lang ="hr"; /* sl */
++ } else if (strcmp(buf, "ISO-8859-3") == 0) {
++ lang ="eo"; /* mt */
++ } else if (strcmp(buf, "WINDOWS-874") == 0) {
++ lang ="th";
++ } else if (strcmp(buf, "WINDOWS-1251") == 0 ||
++ strcmp(buf, "KOI8-R") == 0) {
++ lang ="ru";
++ } else if (strcmp(buf, "ISO-8859-5") == 0 ||
++ strcmp(buf, "KOI8-U") == 0) {
++ lang ="uk";
++ } else if (strcmp(buf, "ISO-8859-6") == 0 ||
++ strcmp(buf, "WINDOWS-1256") == 0) {
++ lang ="ar";
++ } else if (strcmp(buf, "ISO-8859-7") == 0) {
++ lang ="el";
++ } else if (strcmp(buf, "ISO-8859-8") == 0) {
++ lang ="he";
++ } else if (strcmp(buf, "ISO-8859-9") == 0 ||
++ strcmp(buf, "WINDOWS-1254") == 0) {
++ lang ="tr";
++ } else if (strcmp(buf, "ISO-8859-13") == 0 ||
++ strcmp(buf, "WINDOWS-1257") == 0) {
++ lang ="lt"; /* lv */
++ } else if (strcmp(buf, "ISO-8859-15") == 0) {
++ lang = "et";
++/* eo es la ms ...
++ } else if (strncmp(buf, "", 1) == 0) {
++ lang = "";
++*/
++ } else {
++ lang = default_lang;
++ }
++ g_free(buf);
++
++ return g_strdup(lang);;
++}
++
++gboolean a_I18n_use_CJK_charset(gchar *lang)
++{
++ return (g_strncasecmp(lang, "zh", 2) == 0 ||
++ g_strncasecmp(lang, "ko", 2) == 0 ||
++ g_strncasecmp(lang, "ja", 2) == 0);
++}
++
++/* fix name Html_charset to iconv_charset. for example "x-sjis" to "SJIS"... */
++/* TODO: remake this code! */
++gchar *a_I18n_fix_charset(gchar *charset)
++{
++ iconv_t it;
++
++ if (!charset) return NULL;
++ g_strup(charset);
++ if (strchr(charset, '@'))
++ strchr(charset, '@')[0] = '\0';
++ if (strncmp(charset, "X-", 2) == 0) {
++ gchar *old_charset = charset;
++ charset = g_strdup(charset + 2);
++ g_free(old_charset);
++ }
++ /* Japan Only */
++ if (strcmp(charset, "SHIFTJIS") == 0) {
++ g_free(charset);
++ return g_strdup("SJIS");
++ }
++ /* Korea Only */
++ if (strcmp(charset, "KS_C_5601-1987") == 0) {
++ g_free(charset);
++ return g_strdup("EUC-KR");
++ }
++ if (strcmp(charset, "UNICODE-1-1-UTF-8") == 0) {
++ g_free(charset);
++ return g_strdup("UTF-8");
++ }
++ if (strchr(charset, '_')) {
++ strchr(charset, '_')[0] = '-';
++ }
++ if ((it = iconv_open(charset, charset)) == (iconv_t)-1) {
++ g_free(charset);
++ return NULL;
++ }
++ iconv_close(it);
++ return charset;
++}
++
++/* auto detect Chinese charset. -- GB2312,GBK,GB18030,HZ,ISO-2022-CN,
++ * Big5,Big5-HKSCS,EUC-CN,EUC-TW*/
++gchar *I18n_detect_chinese_charset(const gchar *buf, gint bufsize)
++{
++ /* TODO: implement this! */
++ return g_strdup(DW_CHARSET);
++}
++
++/* auto detect Korean charset. -- EUC-KR,UHC,JOHAB,ISO-2022-KR */
++gchar *I18n_detect_korean_charset(const gchar *buf, gint bufsize)
++{
++ /* TODO: implement this! */
++ return g_strdup(DW_CHARSET);
++}
++
++/* auto detect Japanese charset. -- Shift_JIS,EUC-JP,ISO-2022-JP */
++gchar *I18n_detect_japanese_charset(const gchar *buf, gint bufsize)
++{
++ gint i, got_sjis = 0, got_euc = 0, got_jis = 0;
++ if (!buf || bufsize == 0)
++ return g_strdup("SJIS");
++
++ /* check CR code. */
++ if (strstr(buf, "\r"))
++ got_sjis += 2;
++
++ for (i = 0; i < bufsize; i++) {
++ if (got_sjis > got_euc && got_sjis >= 40)
++ return g_strdup("SJIS");
++ else if (got_euc > got_sjis && got_euc >= 40)
++ return g_strdup("EUC-JP");
++ else if (got_jis > 3)
++ return g_strdup("ISO-2022-JP");
++ if (buf[i] == 0x1b) {
++ if (buf[i+1] == '$' || buf[i+1] == '(')
++ got_jis++;
++ else
++ got_jis--;
++ } else if (IS_ASCII_CHAR(buf[i])) continue;
++ _MSG("e=%d s=%d j=%d %d\n", got_euc, got_sjis, got_jis, i);
++ if (IS_SJIS_CHAR1(buf[i])) {
++ if(IS_SJIS_CHAR2(buf[i+1])) {
++ i++;
++ got_sjis += 2;
++ continue;
++ } else
++ got_euc += 2;
++ }
++ if (IS_EUC_CHAR(buf[i])) {
++ if (IS_EUC_CHAR(buf[i+1])) {
++ got_euc += 2;
++ i++;
++ } else got_sjis += 2;
++ }
++ if (i >= 1)
++ if (IS_HANKANA_CHAR(buf[i - 2])
++ && IS_HANKANA_CHAR(buf[i - 1])
++ && IS_HANKANA_CHAR(buf[i])) {
++ got_sjis++;
++ if (IS_HANKANA_CHAR(buf[i+1]))
++ got_sjis++;
++ }
++ }
++
++ _MSG(_("charset detect may mistake...\n"));
++ if (got_jis > 1)
++ return g_strdup("ISO-2022-JP");
++ if (got_sjis > got_euc)
++ return g_strdup("SJIS");
++ if (got_euc >= 1)
++ return g_strdup("EUC-JP");
++
++ /* check CR code again... */
++ if (strstr(buf, "\r"))
++ return g_strdup("SJIS");
++ else
++ return g_strdup("EUC-JP");
++}
++
++static gchar *I18n_detect_utf8(const gchar *buf, gint bufsize)
++{
++ gint i, utf_count;
++
++ utf_count = 0;
++ for (i = 0; i < bufsize; i++) {
++ if (IS_UTF8_FIRST_CHAR(buf[i])) {
++ if (IS_ASCII_CHAR(buf[i + 1])) {
++ utf_count -= 8;
++ } else if (IS_UTF8_2BYTE_FIRST_CHAR(buf[i])) {
++ if (IS_UTF8_NON_FIRST_CHAR(buf[i + 1])
++ && (IS_UTF8_FIRST_CHAR(buf[i + 2])
++ || IS_ASCII_CHAR(buf[i + 2])))
++ utf_count++;
++ else
++ utf_count -= 8;
++ } else if (IS_UTF8_3BYTE_FIRST_CHAR(buf[i])) {
++ if (IS_UTF8_NON_FIRST_CHAR(buf[i + 1])
++ && IS_UTF8_NON_FIRST_CHAR(buf[i + 2])
++ && (IS_UTF8_FIRST_CHAR(buf[i + 3])
++ || IS_ASCII_CHAR(buf[i + 3])))
++ utf_count += 2;
++ else
++ utf_count -= 8;
++ } else if (IS_UTF8_4BYTE_FIRST_CHAR(buf[i])
++ && IS_UTF8_NON_FIRST_CHAR(buf[i + 1])
++ && IS_UTF8_NON_FIRST_CHAR(buf[i + 2])
++ && IS_UTF8_NON_FIRST_CHAR(buf[i + 3])
++ && (IS_UTF8_FIRST_CHAR(buf[i + 4])
++ || IS_ASCII_CHAR(buf[i + 4])))
++ utf_count += 3;
++ else
++ utf_count -= 8;
++ if (utf_count <= -16 || utf_count >= 16)
++ break;
++ }
++ }
++ if (utf_count >= 9)
++ return g_strdup("UTF-8");
++ return NULL;
++}
++
++gchar *a_I18n_get_charset_from_meta_tag(
++ const gchar *buf, gint bufsize)
++{
++ gchar *meta_buf, *meta_tag, *head_end, *meta_charset, *charset = NULL;
++ gint meta_buf_size, charset_len;
++
++ if (!buf || bufsize < MIN_HEADER_LENGTH)
++ return NULL;
++
++ /* crate upper string */
++ if (bufsize > MAX_HEADER_LENGTH)
++ meta_buf_size = MAX_HEADER_LENGTH;
++ else
++ meta_buf_size = bufsize;
++ meta_buf = g_strndup(buf, meta_buf_size);
++ meta_buf[meta_buf_size - 1] = '\0';
++ g_strup(meta_buf);
++
++ /* find meta-charset */
++ if (!((meta_tag = strstr(meta_buf, "<META "))
++ && (meta_tag += sizeof("<META ") - 1)
++ && (meta_charset = strstr(meta_tag, "CHARSET="))
++ && (strstr(meta_tag, "HTTP-EQUIV=\"CONTENT-TYPE")
++ || strstr(meta_tag, "HTTP-EQUIV=CONTENT-TYPE")))) {
++ g_free(meta_buf);
++ return NULL;
++ }
++ head_end = strstr(meta_tag, "</HEAD>");
++
++ /* check HTML code. */
++ if (meta_charset > head_end) {
++ MSG(_("<meta> outside of <head>!\n"));
++ //g_free(meta_buf);
++ //return NULL;
++ }
++
++ meta_charset += sizeof("CHARSET=") - 1;
++ if (meta_charset[0] == '"' || meta_charset[0] == '\'')
++ meta_charset++;
++ charset_len = strpbrk(meta_charset, "\"'/> ") - meta_charset;
++ if (charset_len > 0)
++ charset = g_strndup(meta_charset, charset_len);
++ g_free(meta_buf);
++ if (charset)
++ charset = a_I18n_fix_charset(charset);
++ if (charset && strncmp(charset, "UTF", 3) == 0
++ && (strncmp(charset, "UTF16", 5) == 0
++ || strncmp(charset, "UTF-16", 6) == 0
++ || strncmp(charset, "UTF32", 5) == 0
++ || strncmp(charset, "UTF-32", 6) == 0))
++ return NULL;
++ return charset;
++}
++
++/** get encoding charset.
++ * buf : check target buffer.
++ * bufsize : buf's size.
++ * return : charset
++ */
++gchar *a_I18n_get_encoding(const gchar *buf, gint bufsize)
++{
++ gchar *charset;
++
++ if (!buf) return NULL;
++ if (bufsize == 0) return g_strdup("");
++
++ /* skip ascii char */
++ {
++ gint i, old_bufsize = bufsize;
++ for (i = 0; i < old_bufsize; i++) {
++ if (IS_ASCII_CHAR(buf[0])
++ && buf[0] != 0x1b) { //for ISO-2022-* detect
++ buf++;
++ bufsize--;
++ } else break;
++ }
++ if (bufsize == 0) {
++ _MSG(_("all ascii code\n"));
++ return g_strdup("ASCII");
++ }
++ }
++
++ /* Check UTF-8 code. */
++ charset = I18n_detect_utf8(buf, bufsize);
++ if (charset) return charset;
++
++ switch (detect_type) {
++ case AD_ALL:
++ /* TODO: implement this! */
++ case AD_CHINESE:
++ return I18n_detect_chinese_charset(buf, bufsize);
++ case AD_KOREAN:
++ return I18n_detect_korean_charset(buf, bufsize);
++ case AD_JAPANESE:
++ return I18n_detect_japanese_charset(buf, bufsize);
++ case AD_NONE:
++ default:
++ return g_strdup(DW_CHARSET);
++ }
++}
++
++/* [hack] iconv with error recovery */
++size_t a_I18n_iconv(iconv_t cd,
++ char **inbuf, size_t *inbytesleft,
++ char **outbuf, size_t *outbytesleft)
++{
++ size_t error_count = 0;
++
++ if (iconv(cd, inbuf, inbytesleft, outbuf, outbytesleft)
++ == (size_t)-1 && errno != EINVAL) {
++ _MSG(_("unable to fully convert between character encodings\n"));
++ /*
++ * This just skips past unconvertable characters, putting white square
++ * in the output, then retries the conversion.
++ */
++ while ((int)*inbytesleft > 0 && (int)*outbytesleft > 0
++ && errno == EILSEQ) {
++ error_count++;
++ (*outbuf)[0] = '['; /* white square */
++ (*outbuf)[1] = ']';
++ *outbuf += 2;
++ *outbytesleft -= 2;
++ *inbuf += 2;
++ *inbytesleft -= 2;
++ if ((int)*inbytesleft > 0 && (int)*outbytesleft > 0)
++ iconv(cd, inbuf, inbytesleft, outbuf, outbytesleft);
++ }
++ }
++ *outbuf[0] = '\0';
++ return error_count;
++}
++
++
++/* Charset Transrate. for the part which gives priority to speed.*/
++gchar *a_I18n_convert_raw(iconv_t *it, const gchar* buf, size_t bufsize)
++{
++ size_t outLeft, outSize;
++ gchar *outStart, *in, *out;
++
++ outLeft = bufsize * D_CHAR_GROWTH;
++ outSize = outLeft + 1;
++ if (!buf) return NULL;
++ if (bufsize == 0) return g_strdup("");
++
++ outStart = (gchar *)g_malloc(outSize);
++ in = (gchar *)buf;
++ out = outStart;
++
++ if (!*it || *it==(iconv_t)-1) {
++ g_warning(_("no support enc\n"));
++ *it = iconv_open("ASCII", DILLO_CHARSET);
++ }
++ a_I18n_iconv(*it, &in, &bufsize, &out, &outLeft);
++ _MSG("free %d bytes.\n", outSize - outLeft);
++ return outStart = g_realloc(outStart, outSize - outLeft);
++}
++
++/* Charset Transrate. for simple text or string.
++ * if buf is nul-terminated, can set bufsize -1 */
++gchar *a_I18n_convert(
++ const gchar* from, const gchar* to,
++ const gchar* buf, gint bufsize)
++{
++ iconv_t it;
++ gchar *outBuf;
++ gint len;
++
++ if (!buf) return NULL;
++ if (bufsize == 0) return g_strdup("");
++ g_return_val_if_fail(from && to, g_strndup(buf, bufsize));
++ len = (bufsize == -1) ? (gint)strlen(buf) : bufsize;
++ if (len < 0) {
++ MSG("a_I18n_convert: bufsize < 0\n");
++ return g_strdup(buf);
++ }
++ it = iconv_open(to, from);
++ outBuf = a_I18n_convert_raw(&it, buf, len);
++ iconv_close(it);
++ return outBuf;
++}
++
++/* Convert to Toolkit's charset. */
++gchar *a_I18n_DW_CHARSET_from_DILLO_CHARSET(const gchar* buf, gint bufsize)
++{
++ return a_I18n_convert(DILLO_CHARSET, DW_CHARSET, buf, bufsize);
++}
++
++/* Convert to internal charset. */
++gchar *a_I18n_DW_CHARSET_to_DILLO_CHARSET(const gchar* buf, gint bufsize)
++{
++ return a_I18n_convert(DW_CHARSET, DILLO_CHARSET, buf, bufsize);
++}
++
++/* For gettext string. */
++gchar *a_I18n_locale_to_DILLO_CHARSET(const gchar* buf)
++{
++ return a_I18n_convert(LOCALE_CHARSET, DILLO_CHARSET, buf, -1);
++}
++
++/* mblen() only for UTF-8 stream.
++ * return multibyte char size. */
++gint a_I18n_mblen(gchar *str)
++{
++ if (IS_UTF8_3BYTE_FIRST_CHAR(str[0])) {
++ if (IS_UTF8_NON_FIRST_CHAR(str[1]))
++ if (IS_UTF8_NON_FIRST_CHAR(str[2]))
++ return 3;
++ } else if(IS_UTF8_2BYTE_FIRST_CHAR(str[0])) {
++ if (IS_UTF8_NON_FIRST_CHAR(str[1]))
++ return 2;
++ } else if(IS_UTF8_4BYTE_FIRST_CHAR(str[0])) {
++ if (IS_UTF8_NON_FIRST_CHAR(str[1]))
++ if (IS_UTF8_NON_FIRST_CHAR(str[2]))
++ if (IS_UTF8_NON_FIRST_CHAR(str[3]))
++ return 4;
++ }
++ return 0;
++}
++
++/*
++ * check invalid string, and repair.
++ */
++gchar *a_I18n_string_check(const gchar *input, const gchar *charset)
++{
++ gint i, len;
++ gchar *ret, *str;
++ GString *out = g_string_new("");
++
++ /* convert to same charset.
++ * invalid chars will be replaced to white square. */
++ str = a_I18n_convert(charset, charset, input, -1);
++ len = (str) ? strlen(str) : 0;
++
++ /* skip white square. */
++ for(i = 0; i < len; i++) {
++ if ((guchar)str[i] == '[' && (guchar)str[i+1] == ']')
++ i++;
++ else
++ g_string_append_c(out, str[i]);
++ }
++ g_free(str);
++ ret = out->str;
++ g_string_free(out, FALSE);
++ return ret;
++}
++
++/* vim: set ts=3 sw=3 sts=3 expandtab:*/
+diff -pruN dillo-0.8.6/src/i18n.h dillo-0.8.6-i18n-misc-20060709/src/i18n.h
+--- dillo-0.8.6/src/i18n.h 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/i18n.h 2006-05-16 01:21:09.000000000 +0900
+@@ -0,0 +1,71 @@
++#ifndef __I18N_H__
++#define __I18N_H__
++
++#include <gtk/gtk.h>
++#include <stdlib.h> /* for getenv() */
++#include <iconv.h>
++
++#ifdef __cplusplus
++extern "C" {
++#endif /* __cplusplus */
++
++#define IS_ASCII_CHAR(c) (!(((unsigned char)(c)) & 0x80))
++
++#define IS_UTF8_FIRST_CHAR(c) ((((unsigned char)(c)) >> 6) == 0x03)
++#define IS_UTF8_NON_FIRST_CHAR(c) ((((unsigned char)(c)) >> 6) == 0x02)
++#define IS_UTF8_2BYTE_FIRST_CHAR(c) ((((unsigned char)(c)) >> 5) == 0x06)
++#define IS_UTF8_3BYTE_FIRST_CHAR(c) ((((unsigned char)(c)) >> 4) == 0x0E)
++#define IS_UTF8_4BYTE_FIRST_CHAR(c) ((((unsigned char)(c)) >> 3) == 0x1E)
++
++#define IS_HANKANA_CHAR(c) \
++ (((unsigned char)(c))>=0xa1 && ((unsigned char)(c))<=0xdf)
++
++#define IS_EUC_CHAR(c) \
++((((unsigned char)(c))>=0xa0 && ((unsigned char)(c))<=0xfe) \
++ || ((unsigned char)(c) == 0x8E)) //half width katakana
++
++#define IS_SJIS_CHAR1(c) \
++ ((((unsigned char)(c))>=0x81 && ((unsigned char)(c))<=0x9f) \
++ || (((unsigned char)(c))>=0xe0 && ((unsigned char)(c))<=0xef))
++#define IS_SJIS_CHAR2(c) \
++ (((unsigned char)(c))>=0x40 && ((unsigned char)(c))<=0xfc)
++
++#define DILLO_CHARSET "UTF-8"
++#define D_CHAR_GROWTH 3
++#define LOCALE_CHARSET (a_I18n_get_DW_charset())
++#define DW_CHARSET LOCALE_CHARSET
++#ifndef DISABLE_ANTI_ALIAS
++ #define RENDER_CHARSET "UTF-8"
++#else
++ #define RENDER_CHARSET DW_CHARSET
++#endif
++
++void a_I18n_detect_DW_locale();
++const gchar *a_I18n_get_DW_charset();
++gboolean a_I18n_has_latin1_charset(gchar *lang);
++gboolean a_I18n_use_CJK_charset(gchar *lang);
++gchar *a_I18n_get_lang_from_charset(const gchar *charset);
++gchar *a_I18n_fix_charset(gchar *charset);
++gchar *a_I18n_get_charset_from_meta_tag(const gchar *buf, gint bufsize);
++gchar *a_I18n_get_encoding(const gchar *buf, gint bufsize);
++size_t a_I18n_iconv(iconv_t cd,
++ char **inbuf, size_t *inbytesleft,
++ char **outbuf, size_t *outbytesleft);
++gchar *a_I18n_convert_raw(iconv_t *it, const gchar* buf, size_t bufsize);
++gchar *a_I18n_convert(const gchar* from, const gchar* to, const gchar* buf, gint bufsize);
++gint a_I18n_mblen(gchar *str);
++gchar *a_I18n_string_check(const gchar *input, const gchar *charset);
++gchar *a_I18n_DW_CHARSET_from_DILLO_CHARSET(const gchar* buf, gint bufsize);
++gchar *a_I18n_DW_CHARSET_to_DILLO_CHARSET(const gchar* buf, gint bufsize);
++gchar *a_I18n_locale_to_DILLO_CHARSET(const gchar* buf);
++#define a_I18n_locale_from_DILLO_CHARSET \
++ a_I18n_DW_CHARSET_from_DILLO_CHARSET
++
++#ifdef __cplusplus
++}
++#endif /* __cplusplus */
++
++
++#endif /* __I18N_H__ */
++
++/* vim: set ts=3 sw=3 sts=3 expandtab:*/
+diff -pruN dillo-0.8.6/src/i18n_gtk.c dillo-0.8.6-i18n-misc-20060709/src/i18n_gtk.c
+--- dillo-0.8.6/src/i18n_gtk.c 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/i18n_gtk.c 2006-05-16 01:21:09.000000000 +0900
+@@ -0,0 +1,128 @@
++/*
++ * File: i18n_gtk.c
++ *
++ * Copyright (C) 2003 Kiyo <kiyo@teki.jpn.ph>
++ *
++ * 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 of the License, or
++ * (at your option) any later version.
++ */
++/* gtk+ UTF-8 wrapper. */
++#include <string.h>
++#include <gtk/gtk.h>
++#include "i18n_gtk.h"
++#include "i18n.h"
++
++#ifndef DISABLE_I18N
++GtkWidget* a_I18n_gtk_label_new (const gchar *str) {
++ gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(str, -1);
++ GtkWidget* widget = gtk_label_new(locale_str);
++ g_free(locale_str);
++ return widget;
++}
++
++void a_I18n_gtk_label_set_text(GtkLabel *label, const gchar *str) {
++ gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(str, -1);
++ gtk_label_set_text(label, locale_str);
++ g_free(locale_str);
++}
++
++void a_I18n_gtk_window_set_title(GtkWindow *window, const gchar *title) {
++ gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(title, -1);
++ gtk_window_set_title(window, locale_str);
++ g_free(locale_str);
++}
++
++gchar* a_I18n_gtk_editable_get_chars(GtkEditable *editable,
++ gint start_pos, gint end_pos) {
++ gchar *locale_str = gtk_editable_get_chars(editable, start_pos, end_pos);
++ gchar *utf8_str = a_I18n_locale_to_DILLO_CHARSET(locale_str);
++ g_free(locale_str);
++ return utf8_str;
++}
++
++void a_I18n_gtk_editable_insert_text(GtkEditable *editable,
++ const gchar *new_text, gint new_text_length,
++ gint *position) {
++ gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(new_text,
++ new_text_length);
++ gtk_editable_insert_text(editable,
++ locale_str, (!locale_str) ? 0 : strlen(locale_str), position);
++ g_free(locale_str);
++}
++
++GtkWidget* a_I18n_gtk_radio_menu_item_new_with_label(GSList *group,
++ const gchar *label) {
++ gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(label, -1);
++ GtkWidget* widget = gtk_radio_menu_item_new_with_label(group, locale_str);
++ g_free(locale_str);
++ return widget;
++}
++
++GtkWidget* a_I18n_gtk_list_item_new_with_label(const gchar *label) {
++ gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(label, -1);
++ GtkWidget* widget = gtk_list_item_new_with_label(locale_str);
++ g_free(locale_str);
++ return widget;
++}
++
++void a_I18n_gtk_text_insert(GtkText *text, GdkFont *font,
++ GdkColor *fore, GdkColor *back,
++ const char *chars, gint length) {
++ gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(chars, length);
++ gtk_text_insert(text, font, fore, back, locale_str,
++ (!locale_str) ? 0 : strlen(locale_str));
++ g_free(locale_str);
++}
++
++GtkWidget* a_I18n_gtk_button_new_with_label(const gchar *label) {
++ gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(label, -1);
++ GtkWidget* widget = gtk_button_new_with_label(locale_str);
++ g_free(locale_str);
++ return widget;
++}
++
++void a_I18n_gtk_entry_set_text(GtkEntry *entry, const gchar *text) {
++ gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(text, -1);
++ gtk_entry_set_text(entry, (locale_str)? locale_str : "");
++ g_free(locale_str);
++}
++
++gchar* a_I18n_gtk_entry_get_text(GtkEntry *entry) {
++ gchar *locale_str = gtk_entry_get_text(entry);
++ gchar *utf8_str = a_I18n_locale_to_DILLO_CHARSET(locale_str);
++ return utf8_str;
++}
++
++GtkWidget* a_I18n_gtk_menu_item_new_with_label(const gchar *label) {
++ gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(label, -1);
++ GtkWidget* widget = gtk_menu_item_new_with_label(locale_str);
++ g_free(locale_str);
++ return widget;
++}
++
++void a_I18n_gdk_draw_string (GdkDrawable *drawable,
++ GdkFont *font,
++ GdkGC *gc,
++ gint x,
++ gint y,
++ const gchar *string) {
++ gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(string, -1);
++ gdk_draw_string (drawable, font, gc, x, y, locale_str);
++ g_free(locale_str);
++}
++
++gint a_I18n_gdk_text_width (GdkFont *font,
++ const gchar *text, gint text_length) {
++ gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(text,
++ text_length);
++ gint len;
++ if (!locale_str) return 0;
++ len = gdk_text_width(font, locale_str, strlen(locale_str));
++ g_free(locale_str);
++ return len;
++}
++
++#endif /* DISABLE_I18n */
++
+diff -pruN dillo-0.8.6/src/i18n_gtk.h dillo-0.8.6-i18n-misc-20060709/src/i18n_gtk.h
+--- dillo-0.8.6/src/i18n_gtk.h 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/i18n_gtk.h 2006-05-16 01:21:09.000000000 +0900
+@@ -0,0 +1,67 @@
++#ifndef __GTK_I18N__
++#define __GTK_I18N__
++
++#include <gtk/gtk.h>
++
++#ifdef __cplusplus
++extern "C" {
++#endif /* __cplusplus */
++
++//#define DISABLE_I18N
++#ifndef DISABLE_I18N
++
++/* GTK */
++GtkWidget* a_I18n_gtk_label_new (const gchar *str);
++void a_I18n_gtk_label_set_text (GtkLabel *label, const gchar *str);
++void a_I18n_gtk_window_set_title (GtkWindow *window, const gchar *title);
++gchar* a_I18n_gtk_editable_get_chars (GtkEditable *editable,
++ gint start_pos, gint end_pos);
++void a_I18n_gtk_editable_insert_text (GtkEditable *editable,
++ const gchar *new_text, gint new_text_length,
++ gint *position);
++GtkWidget* a_I18n_gtk_radio_menu_item_new_with_label (GSList *group,
++ const gchar *label);
++GtkWidget* a_I18n_gtk_list_item_new_with_label (const gchar *label);
++void a_I18n_gtk_text_insert (GtkText *text, GdkFont *font,
++ GdkColor *fore, GdkColor *back,
++ const char *chars, gint length);
++GtkWidget* a_I18n_gtk_button_new_with_label (const gchar *label);
++void a_I18n_gtk_entry_set_text (GtkEntry *entry, const gchar *text);
++gchar* a_I18n_gtk_entry_get_text (GtkEntry *entry);
++GtkWidget* a_I18n_gtk_menu_item_new_with_label (const gchar *label);
++
++/* GDK */
++void a_I18n_gdk_draw_string (GdkDrawable *drawable,
++ GdkFont *font,
++ GdkGC *gc,
++ gint x,
++ gint y,
++ const gchar *string);
++gint a_I18n_gdk_text_width (GdkFont *font,
++ const gchar *text, gint text_length);
++
++#else
++#define a_I18n_gtk_label_new gtk_label_new
++#define a_I18n_gtk_label_set_text gtk_label_set_text
++#define a_I18n_gtk_window_set_title gtk_window_set_title
++#define a_I18n_gtk_editable_get_chars gtk_editable_get_chars
++#define a_I18n_gtk_editable_insert_text gtk_editable_insert_text
++#define a_I18n_gtk_radio_menu_item_new_with_label \
++ gtk_radio_menu_item_new_with_label
++#define a_I18n_gtk_list_item_new_with_label gtk_list_item_new_with_label
++#define a_I18n_gtk_text_insert gtk_text_insert
++#define a_I18n_gtk_button_new_with_label gtk_button_new_with_label
++#define a_I18n_gtk_entry_set_text gtk_entry_set_text
++#define a_I18n_gtk_entry_get_text gtk_entry_get_text
++#define a_I18n_gtk_menu_item_new_with_label gtk_menu_item_new_with_label
++#define a_I18n_gdk_draw_string gdk_draw_string
++#define a_I18n_gdk_text_width gdk_text_width
++#endif /* DISABLE_I18n */
++
++#define a_I18n_gtk_label_set a_I18n_gtk_label_set_text
++
++#ifdef __cplusplus
++}
++#endif /* __cplusplus */
++
++#endif /* __GTK_I18N__ */
+diff -pruN dillo-0.8.6/src/image.c dillo-0.8.6-i18n-misc-20060709/src/image.c
+--- dillo-0.8.6/src/image.c 2005-10-28 01:20:13.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/image.c 2006-05-16 01:21:09.000000000 +0900
+@@ -51,7 +51,7 @@ DilloImage *a_Image_new(gint width,
+ Image->State = IMG_Empty;
+
+ Image->RefCount = 1;
+-
++
+ return Image;
+ }
+
+diff -pruN dillo-0.8.6/src/interface.c dillo-0.8.6-i18n-misc-20060709/src/interface.c
+--- dillo-0.8.6/src/interface.c 2005-12-02 21:40:44.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/interface.c 2006-07-09 00:46:26.000000000 +0900
+@@ -20,18 +20,24 @@
+ #include <sys/time.h>
+ #include <fcntl.h>
+
++#include "intl.h"
+ #include "msg.h"
+ #include "list.h"
+ #include "misc.h"
++#include "i18n.h"
++#include "i18n_gtk.h"
+ #include "dillo.h"
+ #include "history.h"
+ #include "nav.h"
++#include "doc.h"
+ #include "IO/Url.h"
+ #include "IO/IO.h"
+ #include "interface.h"
++#ifndef DISABLE_TABS
++#include "tab.h"
++#endif /* !DISABLE_TABS */
+ #include "commands.h"
+ #include "menu.h"
+-#include "bookmark.h"
+ #include "prefs.h"
+ #include "url.h"
+ #include "capi.h"
+@@ -52,6 +58,7 @@
+ #include "debug.h"
+
+
++void Interface_add_search_dialog(BrowserWindow *bw);
+ /*
+ * Local Data
+ */
+@@ -69,6 +76,8 @@ static gchar *open_dialog_last_dirname =
+ /* save dialog last dir */
+ static gchar *save_dialog_last_dirname = NULL;
+
++/* Keep to close find_text_dialog. */
++static GtkWidget *find_text_window;
+
+ /*
+ * Initialize global data
+@@ -83,93 +92,8 @@ void a_Interface_init(void)
+ save_dialog_last_dirname = NULL;
+ }
+
+-/*
+- * Stop all active connections in the browser window (except downloads)
+- */
+-void a_Interface_stop(BrowserWindow *bw)
+-{
+- DEBUG_MSG(3, "a_Interface_stop: hi!\n");
+-
+- /* Remove root clients */
+- while ( bw->NumRootClients ) {
+- a_Cache_stop_client(bw->RootClients[0]);
+- a_List_remove(bw->RootClients, 0, bw->NumRootClients);
+- }
+- /* Remove image clients */
+- while ( bw->NumImageClients ) {
+- a_Cache_stop_client(bw->ImageClients[0]);
+- a_List_remove(bw->ImageClients, 0, bw->NumImageClients);
+- }
+-}
+-
+-/*
+- * Empty RootClients, ImageClients and PageUrls lists and
+- * reset progress bar data.
+- */
+-void a_Interface_clean(BrowserWindow *bw)
+-{
+- g_return_if_fail ( bw != NULL );
+-
+- while ( bw->NumRootClients )
+- a_List_remove(bw->RootClients, 0, bw->NumRootClients);
+-
+- while ( bw->NumImageClients )
+- a_List_remove(bw->ImageClients, 0, bw->NumImageClients);
+-
+- while ( bw->NumPageUrls ) {
+- a_Url_free(bw->PageUrls[0].Url);
+- a_List_remove(bw->PageUrls, 0, bw->NumPageUrls);
+- }
+-
+- /* Zero image-progressbar data */
+- bw->NumImages = 0;
+- bw->NumImagesGot = 0;
+-}
+-
+ /*=== Browser Window Interface Updating =====================================*/
+ /*
+- * Remove the cache-client from the bw list
+- * (client can be a image or a html page)
+- */
+-void a_Interface_remove_client(BrowserWindow *bw, gint ClientKey)
+-{
+- gint i;
+- gboolean Found = FALSE;
+-
+- for ( i = 0; !Found && i < bw->NumRootClients; ++i)
+- if ( bw->RootClients[i] == ClientKey ) {
+- a_List_remove(bw->RootClients, i, bw->NumRootClients);
+- Found = TRUE;
+- }
+-
+- for ( i = 0; !Found && i < bw->NumImageClients; ++i)
+- if ( bw->ImageClients[i] == ClientKey ) {
+- a_List_remove(bw->ImageClients, i, bw->NumImageClients);
+- bw->NumImagesGot++;
+- Found = TRUE;
+- }
+-
+- a_Interface_set_button_sens(bw);
+-}
+-
+-/*
+- * Remove the cache-client from the bw list
+- * (client can be a image or a html page)
+- */
+-void a_Interface_close_client(BrowserWindow *bw, gint ClientKey)
+-{
+- gchar numstr[32];
+-
+- a_Interface_remove_client(bw, ClientKey);
+-
+- /* --Progress bars stuff-- */
+- g_snprintf(numstr, 32, "%s%d of %d", PBAR_ISTR(prefs.panel_size == 1),
+- bw->NumImagesGot, bw->NumImages);
+- a_Progressbar_update(bw->imgprogress, numstr,
+- (bw->NumImagesGot == bw->NumImages) ? 0 : 1 );
+-}
+-
+-/*
+ * Set the sensitivity on back/forw buttons and menu entries.
+ */
+ static gint Interface_sens_idle_func(BrowserWindow *bw)
+@@ -177,16 +101,27 @@ static gint Interface_sens_idle_func(Bro
+ gboolean back_sensitive, forw_sensitive, stop_sensitive;
+
+ /* Stop button */
+- stop_sensitive = (bw->NumRootClients > 0);
++ stop_sensitive = (bw->dd->NumRootClients > 0);
+ gtk_widget_set_sensitive(bw->stop_button, stop_sensitive);
+
++
+ /* Back and Forward buttons */
+- back_sensitive = a_Nav_stack_ptr(bw) > 0;
++ back_sensitive = a_Nav_stack_ptr(bw->dd) > 0;
+ gtk_widget_set_sensitive(bw->back_button, back_sensitive);
+- forw_sensitive = (a_Nav_stack_ptr(bw) < a_Nav_stack_size(bw) - 1 &&
+- !bw->nav_expecting);
++ forw_sensitive = (a_Nav_stack_ptr(bw->dd) < a_Nav_stack_size(bw->dd) - 1 &&
++ !bw->dd->nav_expecting);
+ gtk_widget_set_sensitive(bw->forw_button, forw_sensitive);
+
++ if(prefs.show_popup_navigation) {
++ /* adjust popup menu buttons */
++ if (GTK_IS_WIDGET(bw->stop_op_menu_button))
++ gtk_widget_set_sensitive(bw->stop_op_menu_button, stop_sensitive);
++ if (GTK_IS_WIDGET(bw->back_op_menu_button))
++ gtk_widget_set_sensitive(bw->back_op_menu_button, back_sensitive);
++ if (GTK_IS_WIDGET(bw->forw_op_menu_button))
++ gtk_widget_set_sensitive(bw->forw_op_menu_button, forw_sensitive);
++ }
++
+ bw->sens_idle_id = 0;
+ return FALSE;
+ }
+@@ -202,85 +137,18 @@ void a_Interface_set_button_sens(Browser
+ }
+
+ /*
+- * Add a reference to the cache-client in the browser window's list.
+- * This helps us keep track of which are active in the window so that it's
+- * possible to abort them.
+- * (Root: Flag, whether a Root URL or not)
+- */
+-void a_Interface_add_client(BrowserWindow *bw, gint Key, gint Root)
+-{
+- gint nc;
+- char numstr[32];
+-
+- g_return_if_fail ( bw != NULL );
+-
+- if ( Root ) {
+- nc = bw->NumRootClients;
+- a_List_add(bw->RootClients, nc, bw->MaxRootClients);
+- bw->RootClients[nc] = Key;
+- bw->NumRootClients++;
+- a_Interface_set_button_sens(bw);
+- } else {
+- nc = bw->NumImageClients;
+- a_List_add(bw->ImageClients, nc, bw->MaxImageClients);
+- bw->ImageClients[nc] = Key;
+- bw->NumImageClients++;
+- bw->NumImages++;
+- a_Interface_set_button_sens(bw);
+-
+- /* --Progress bar stuff-- */
+- g_snprintf(numstr, 32, "%s%d of %d", PBAR_ISTR(prefs.panel_size == 1),
+- bw->NumImagesGot, bw->NumImages);
+- a_Progressbar_update(bw->imgprogress, numstr, 1);
+- }
+-}
+-
+-/*
+- * Add an URL to the browser window's list.
+- * This helps us keep track of page requested URLs so that it's
+- * possible to stop, abort and reload them.)
+- * Flags: Chosen from {BW_Root, BW_Image, BW_Download}
+- */
+-void a_Interface_add_url(BrowserWindow *bw, const DilloUrl *Url, gint Flags)
+-{
+- gint nu, i;
+- gboolean found = FALSE;
+-
+- g_return_if_fail ( bw != NULL && Url != NULL );
+-
+- nu = bw->NumPageUrls;
+- for ( i = 0; i < nu; i++ ) {
+- if ( !a_Url_cmp(Url, bw->PageUrls[i].Url) ) {
+- found = TRUE;
+- break;
+- }
+- }
+- if ( !found ) {
+- a_List_add(bw->PageUrls, nu, bw->MaxPageUrls);
+- bw->PageUrls[nu].Url = a_Url_dup(Url);
+- bw->PageUrls[nu].Flags = Flags;
+- bw->NumPageUrls++;
+- }
+-
+- /* test:
+- MSG("Urls:\n");
+- for (i = 0; i < bw->NumPageUrls; i++)
+- MSG("%s\n", bw->PageUrls[i].Url);
+- MSG("---\n");
+- */
+-}
+-
+-/*
+- * Remove a single browser window. This includes all its open childs,
++ * Remove a single browser window. This includes all its open documents,
+ * freeing all resources associated with them, and exiting gtk
+ * if no browser windows are left.
+ */
+ static gboolean Interface_quit(GtkWidget *widget, BrowserWindow *bw)
+ {
+ gint i;
+-
+- /* stop/abort open connections. */
+- a_Interface_stop(bw);
++ a_Interface_findtext_dialog_close();
++ /* destroy the container. It should take all its contents with
++ * it, relying on callbacks to destroy non-widget data
++ */
++ gtk_widget_destroy(GTK_WIDGET(bw->container));
+
+ g_slist_free(bw->PanelHandles);
+
+@@ -290,14 +158,16 @@ static gboolean Interface_quit(GtkWidget
+ gtk_widget_destroy(bw->openfile_dialog_window);
+ if (bw->quit_dialog_window != NULL)
+ gtk_widget_destroy(bw->quit_dialog_window);
+- if (bw->findtext_dialog_window != NULL)
+- gtk_widget_destroy(bw->findtext_dialog_window);
++ if (bw->findtext_dialog != NULL)
++ gtk_widget_destroy(bw->findtext_dialog);
+ if (bw->search_dialog_window != NULL)
+ gtk_widget_destroy(bw->search_dialog_window);
+ if (bw->proxy_passwd_dialog_window != NULL)
+ gtk_widget_destroy(bw->proxy_passwd_dialog_window);
+ if (bw->question_dialog_window != NULL)
+ gtk_widget_destroy(bw->question_dialog_window);
++ if (bw->passwd_dialog_window != NULL)
++ gtk_widget_destroy(bw->passwd_dialog_window);
+
+ if (bw->menu_popup.over_page)
+ gtk_widget_destroy(bw->menu_popup.over_page);
+@@ -310,29 +180,25 @@ static gboolean Interface_quit(GtkWidget
+ gtk_widget_destroy(bw->menu_popup.over_forw);
+ if (bw->menu_popup.over_bug)
+ gtk_widget_destroy(bw->menu_popup.over_bug);
++#ifndef DISABLE_TABS
++ if (bw->menu_popup.over_tab)
++ gtk_widget_destroy(bw->menu_popup.over_tab);
++#endif /* !DISABLE_TABS */
+ if (bw->menu_popup.url)
+ a_Url_free(bw->menu_popup.url);
+ if (bw->menu_popup.url2)
+ a_Url_free(bw->menu_popup.url2);
+-
++
+ if (bw->sens_idle_id)
+ gtk_idle_remove(bw->sens_idle_id);
+
++
+ for (i = 0; i < num_bw; i++)
+ if (browser_window[i] == bw) {
+ browser_window[i] = browser_window[--num_bw];
+ break;
+ }
+
+- /* free nav_stack and nav_expect stuff */
+- a_Nav_free(bw);
+-
+- g_free(bw->RootClients);
+- g_free(bw->ImageClients);
+-
+- for (i = 0; i < bw->NumPageUrls; i++)
+- a_Url_free(bw->PageUrls[i].Url);
+- g_free(bw->PageUrls);
+ g_free(bw);
+
+ if (num_bw == 0)
+@@ -349,7 +215,7 @@ static gboolean Interface_quit(GtkWidget
+ */
+ static void Interface_entry_clear(GtkEntry *entry)
+ {
+- gtk_entry_set_text(entry, "");
++ a_I18n_gtk_entry_set_text(entry, "");
+ gtk_widget_grab_focus(GTK_WIDGET(entry));
+ }
+
+@@ -380,13 +246,14 @@ static void Interface_cub_selection_rece
+ _MSG("Interface_cub_selection_received:\n");
+
+ if (selection_data->length < 0) {
+- DEBUG_MSG (1, "Selection retrieval failed\n");
++ DEBUG_MSG (1, _("Selection retrieval failed\n"));
+ return;
+ }
+-
+- damn_string = g_strndup((gchar *)selection_data->data,
++
++ damn_string = a_I18n_locale_from_DILLO_CHARSET(
++ (gchar *)selection_data->data,
+ selection_data->length);
+- gtk_entry_set_text(GTK_ENTRY(bw->location), damn_string);
++ a_I18n_gtk_entry_set_text(GTK_ENTRY(bw->location), damn_string);
+ gtk_widget_activate(GTK_WIDGET(bw->location));
+ g_free(damn_string);
+
+@@ -453,21 +320,6 @@ static GtkWidget *Interface_toolbox_ext_
+ }
+
+ /*
+- * Set the bw's cursor type
+- */
+-void a_Interface_set_cursor(BrowserWindow *bw, GdkCursorType CursorType)
+-{
+- GdkCursor *cursor;
+-
+- if ( bw->CursorType != CursorType ) {
+- cursor = gdk_cursor_new(CursorType);
+- gdk_window_set_cursor(bw->docwin->window, cursor);
+- gdk_cursor_destroy(cursor);
+- bw->CursorType = CursorType;
+- }
+-}
+-
+-/*
+ * Connect button's "clicked" event with (key, key_mod) pair.
+ */
+ static void Interface_set_button_accel(GtkButton *button,
+@@ -508,8 +360,8 @@ static GtkWidget *Interface_locbar_new(B
+ a_Gtk_ext_button_set_command(GTK_EXT_BUTTON(bw->clear_url_button), 2);
+
+ gtk_toolbar_append_widget(GTK_TOOLBAR(toolbar_l), bw->clear_url_button,
+- "Clear the URL box (middle-click to paste an "
+- "URL).", "Toolbar/Clear");
++ _("Clear the URL box (middle-click to paste an "
++ "URL)."), "Toolbar/Clear");
+ gtk_signal_connect_object(GTK_OBJECT(bw->clear_url_button), "clicked",
+ GTK_SIGNAL_FUNC (Interface_entry_clear),
+ GTK_OBJECT(bw->location));
+@@ -530,7 +382,7 @@ static GtkWidget *Interface_locbar_new(B
+
+ bw->search_button = gtk_toolbar_append_item(
+ GTK_TOOLBAR(toolbar_r),
+- NULL, "Search the Web", "Toolbar/New",
++ NULL, _("Search the Web"), "Toolbar/New",
+ Interface_pixmap_new(bw->main_window, search_xpm),
+ GTK_SIGNAL_FUNC(a_Interface_search_dialog),
+ bw);
+@@ -562,11 +414,11 @@ static GtkWidget *Interface_toolbar_new(
+
+ /* back button */
+ bw->back_button =
+- Interface_toolbox_ext_button_new(bw->main_window, label ? "Back" : NULL,
++ Interface_toolbox_ext_button_new(bw->main_window, label ? _("Back") : NULL,
+ s ? s_left_xpm : left_xpm,
+ &label_widget, &icon_widget);
+ gtk_toolbar_append_widget(GTK_TOOLBAR(toolbar), bw->back_button,
+- "Go to previous page (right-click for menu).",
++ _("Go to previous page (right-click for menu)."),
+ "Toolbar/Back");
+ gtk_widget_set_sensitive(bw->back_button, FALSE);
+ Interface_set_button_accel(GTK_BUTTON(bw->back_button), GDK_comma,
+@@ -595,11 +447,11 @@ static GtkWidget *Interface_toolbar_new(
+ /* forward button */
+ bw->forw_button =
+ Interface_toolbox_ext_button_new(bw->main_window,
+- label ? "Forward" : NULL,
++ label ? _("Forward") : NULL,
+ s ? s_right_xpm : right_xpm,
+ &label_widget, &icon_widget);
+ gtk_toolbar_append_widget(GTK_TOOLBAR(toolbar), bw->forw_button,
+- "Go to next page (right-click for menu).",
++ _("Go to next page (right-click for menu)."),
+ "Toolbar/Forward");
+ gtk_widget_set_sensitive(bw->forw_button, FALSE);
+ Interface_set_button_accel(GTK_BUTTON(bw->forw_button), GDK_period,
+@@ -624,67 +476,81 @@ static GtkWidget *Interface_toolbar_new(
+ toolbar_child->label = label_widget;
+
+ /* home button */
+- bw->home_button = gtk_toolbar_append_item(
+- GTK_TOOLBAR(toolbar),
+- label ? "Home" : NULL,
+- "Go to the Home page", "Toolbar/Home",
+- Interface_pixmap_new(bw->main_window,
+- s ? s_home_xpm : home_xpm),
+- (GtkSignalFunc) a_Commands_home_callback, bw);
+- /*
+- * SG: This had never any effect, was it there for future extensions?
+- * gtk_signal_connect(GTK_OBJECT(bw->home_button), "button-press-event",
+- * GTK_SIGNAL_FUNC(a_Commands_navpress_callback), bw);
+- */
++ bw->home_button =
++ Interface_toolbox_ext_button_new(bw->main_window,
++ label ? _("Home") : NULL,
++ s ? s_home_xpm : home_xpm,
++ &label_widget, &icon_widget);
++ gtk_toolbar_append_widget(GTK_TOOLBAR(toolbar), bw->home_button,
++ _("Go to the Home page"),
++ "Toolbar/Home");
++ a_Gtk_ext_button_set_command(GTK_EXT_BUTTON(bw->home_button), 1);
++ a_Gtk_ext_button_set_command(GTK_EXT_BUTTON(bw->home_button), 2);
++ gtk_signal_connect(GTK_OBJECT(bw->home_button), "clicked",
++ GTK_SIGNAL_FUNC(a_Commands_home_callback), (gpointer)bw);
++ gtk_signal_connect(GTK_OBJECT(bw->home_button), "clicked1",
++ GTK_SIGNAL_FUNC(a_Commands_home_callback), (gpointer)bw);
++ gtk_signal_connect(GTK_OBJECT(bw->home_button), "clicked2",
++ GTK_SIGNAL_FUNC(a_Commands_home_nw_callback), (gpointer)bw);
+
+ /* reload button */
+ bw->reload_button = gtk_toolbar_append_item(
+ GTK_TOOLBAR(toolbar),
+- label ? "Reload" : NULL,
+- "Reload this page", "Toolbar/Reload",
++ label ? _("Reload") : NULL,
++ _("Reload this page"), "Toolbar/Reload",
+ Interface_pixmap_new(bw->main_window,
+ s ? s_reload_xpm : reload_xpm),
+ (GtkSignalFunc) a_Commands_reload_callback, bw);
+ Interface_set_button_accel(GTK_BUTTON(bw->reload_button), GDK_r,
+ GDK_CONTROL_MASK, bw->accel_group);
++ Interface_set_button_accel(GTK_BUTTON(bw->reload_button), GDK_F5,
++ 0, bw->accel_group);
+
+ /* save button */
+ bw->save_button = gtk_toolbar_append_item(
+ GTK_TOOLBAR(toolbar),
+- label ? "Save" : NULL,
+- "Save this page", "Toolbar/Save",
++ label ? _("Save") : NULL,
++ _("Save this page"), "Toolbar/Save",
+ Interface_pixmap_new(bw->main_window,
+ s ? s_save_xpm : save_xpm),
+ (GtkSignalFunc) a_Commands_save_callback, bw);
+ /* stop button */
+ bw->stop_button = gtk_toolbar_append_item(
+ GTK_TOOLBAR(toolbar),
+- label ? "Stop" : NULL,
+- "Stop the current transfer", "Toolbar/Stop",
++ label ? _("Stop") : NULL,
++ _("Stop the current transfer"), "Toolbar/Stop",
+ Interface_pixmap_new(bw->main_window,
+ s ? s_stop_xpm : stop_xpm),
+ (GtkSignalFunc) a_Commands_stop_callback, bw);
+ gtk_widget_set_sensitive(bw->stop_button, FALSE);
++ /*
++ Interface_set_button_accel(GTK_BUTTON(bw->stop_button), GDK_Escape,
++ 0, bw->accel_group);
++ */
+
+ /* bookmarks button */
+- bw->bookmarks_button = gtk_toolbar_append_item(
+- GTK_TOOLBAR(toolbar),
+- label ? "Book" : NULL,
+- "View bookmarks", "Toolbar/Bookmarks",
+- Interface_pixmap_new(bw->main_window,
+- s ? s_bm_xpm : bm_xpm),
+- (GtkSignalFunc) a_Commands_viewbm_callback, bw);
++ bw->bookmarks_button =
++ Interface_toolbox_ext_button_new(bw->main_window,
++ label ? _("Book") : NULL,
++ s ? s_bm_xpm : bm_xpm,
++ &label_widget, &icon_widget);
++ gtk_toolbar_append_widget(GTK_TOOLBAR(toolbar), bw->bookmarks_button,
++ _("View bookmarks"),
++ "Toolbar/Bookmarks");
+ gtk_widget_set_sensitive(bw->bookmarks_button, TRUE);
+ Interface_set_button_accel(GTK_BUTTON(bw->bookmarks_button), GDK_semicolon,
+ 0, bw->accel_group);
+ Interface_set_button_accel(GTK_BUTTON(bw->bookmarks_button), GDK_b,
+ GDK_CONTROL_MASK, bw->accel_group);
+- /*
+- * SG: This had never any effect, was it there for future extensions?
+- * gtk_signal_connect(GTK_OBJECT(bw->bookmarks_button),
+- * "button-press-event",
+- * GTK_SIGNAL_FUNC(a_Commands_navpress_callback), bw);
+- */
++ a_Gtk_ext_button_set_command(GTK_EXT_BUTTON(bw->bookmarks_button), 1);
++ a_Gtk_ext_button_set_command(GTK_EXT_BUTTON(bw->bookmarks_button), 2);
++ gtk_signal_connect(GTK_OBJECT(bw->bookmarks_button), "clicked",
++ GTK_SIGNAL_FUNC(a_Commands_viewbm_callback), (gpointer)bw);
++ gtk_signal_connect(GTK_OBJECT(bw->bookmarks_button), "clicked1",
++ GTK_SIGNAL_FUNC(a_Commands_viewbm_callback), (gpointer)bw);
++ gtk_signal_connect(GTK_OBJECT(bw->bookmarks_button), "clicked2",
++ GTK_SIGNAL_FUNC(a_Commands_viewbm_nw_callback),
++ (gpointer)bw);
+
+ gtk_widget_show(toolbar);
+ return toolbar;
+@@ -712,7 +578,7 @@ static GtkWidget *Interface_progressbox_
+ * Hide/Unhide this bw's control panels.
+ * toggle: Flag [toggle or set].
+ */
+-static void Interface_toggle_panel(BrowserWindow *bw, gint toggle)
++void a_Interface_toggle_panel(BrowserWindow *bw, gint toggle)
+ {
+ if (toggle)
+ bw->fullwindow = !bw->fullwindow;
+@@ -721,12 +587,16 @@ static void Interface_toggle_panel(Brows
+ g_slist_foreach(bw->PanelHandles, (GFunc)gtk_widget_hide, NULL);
+ gtk_widget_hide(bw->status_box);
+ gtk_widget_show (bw->full_screen_off_button);
+- gtk_widget_grab_focus(GTK_BIN(bw->docwin)->child);
++ gtk_widget_grab_focus(GTK_BIN(bw->dd->docwin)->child);
+ } else {
+ g_slist_foreach(bw->PanelHandles, (GFunc)gtk_widget_show, NULL);
+ gtk_widget_show(bw->status_box);
+ gtk_widget_hide (bw->full_screen_off_button);
+ }
++#ifndef DISABLE_TABS
++ a_Tab_visibility_update(bw);
++#endif /* !DISABLE_TABS */
++
+ }
+
+ /*
+@@ -760,50 +630,7 @@ static void Interface_browser_window_cus
+ gtk_widget_hide(bw->progress_box);
+
+ bw->fullwindow = prefs.fullwindow_start;
+- Interface_toggle_panel(bw, FALSE);
+-}
+-
+-static void Interface_full_screen_callback (BrowserWindow *bw)
+-{
+- Interface_toggle_panel(bw, TRUE);
+-}
+-
+-/*
+- * Handler for double-mouse-clicks that don't belong to the viewport.
+- */
+-static gint Interface_click_callback(BrowserWindow *bw, GdkEventButton *event)
+-{
+- if (event->type == GDK_2BUTTON_PRESS && event->button == 1)
+- Interface_toggle_panel(bw, TRUE);
+- return TRUE;
+-}
+-
+-/*
+- * Handler for key presses that don't belong to the viewport.
+- * (Used to customize the interface a bit)
+- */
+-static void Interface_key_press_handler(GtkWidget *widget,
+- GdkEventKey *event,
+- gpointer client_data)
+-{
+- BrowserWindow *bw = client_data;
+-
+- switch (event->keyval) {
+- case GDK_BackSpace:
+- /* This key is handled here because GTK accel group ignores it */
+- if (event->state & GDK_SHIFT_MASK)
+- a_Commands_forw_callback(NULL, bw);
+- else
+- a_Commands_back_callback(NULL, bw);
+- break;
+- case GDK_slash:
+- /* This key is handled here because GTK accel group ignores it */
+- a_Commands_findtext_callback(NULL, bw);
+- break;
+- default:
+- _MSG(">> Key pressed!\n");
+- break;
+- }
++ a_Interface_toggle_panel(bw, FALSE);
+ }
+
+ /*
+@@ -825,7 +652,7 @@ static void Interface_add_full_screen_bu
+ gtk_widget_show (dummy);
+
+ button = gtk_button_new ();
+- gtk_tooltips_set_tip (tooltips, button, "Hide Controls", "Show Controls");
++ gtk_tooltips_set_tip (tooltips, button, _("Hide Controls"), _("Show Controls"));
+ GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
+ gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
+ gtk_widget_show (button);
+@@ -836,9 +663,13 @@ static void Interface_add_full_screen_bu
+
+ gtk_signal_connect_object
+ (GTK_OBJECT (button), "clicked",
+- GTK_SIGNAL_FUNC (Interface_full_screen_callback), (gpointer)bw);
++ GTK_SIGNAL_FUNC (a_Commands_full_screen_callback), (gpointer)bw);
+ }
+
++/*******************
++ * browser windows *
++ *******************/
++
+ /*
+ * Create a new browser window and return it.
+ * (the new window is stored in browser_window[])
+@@ -848,6 +679,9 @@ a_Interface_browser_window_new(gint widt
+ {
+ GtkWidget *box1, *hbox, *button, *label,
+ *progbox, *toolbar, *handlebox, *menubar, *locbox, *pixmap;
++#ifdef DISABLE_TABS
++ GtkWidget *box2;
++#endif /* DISABLE_TABS */
+ BrowserWindow *bw;
+ char buf[64];
+
+@@ -856,14 +690,17 @@ a_Interface_browser_window_new(gint widt
+ a_List_add(browser_window, num_bw, num_bw_max);
+ browser_window[num_bw++] = bw;
+
+- /* initialize nav_stack struct in browser_window struct */
+- a_Nav_init(bw);
+-
+ if (!xid)
+ bw->main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ else
+ bw->main_window = gtk_plug_new(xid);
+
++ /* set tooltips.
++ * TODO: this is a global, change to browser-window local?
++ */
++ bw->tooltips = tooltips;
++ gtk_tooltips_enable(bw->tooltips);
++
+ gtk_window_set_policy(GTK_WINDOW(bw->main_window), TRUE, TRUE, FALSE);
+ gtk_signal_connect(GTK_OBJECT(bw->main_window), "delete_event",
+ GTK_SIGNAL_FUNC(gtk_object_destroy), bw);
+@@ -873,6 +710,8 @@ a_Interface_browser_window_new(gint widt
+
+ gtk_window_set_wmclass(GTK_WINDOW(bw->main_window), "dillo", "Dillo");
+
++ gtk_widget_set_usize(bw->main_window, width, height);
++
+ /* -RL :: I must realize the window to see it correctly */
+ gtk_widget_realize(bw->main_window);
+
+@@ -880,10 +719,6 @@ a_Interface_browser_window_new(gint widt
+ bw->accel_group = gtk_accel_group_new();
+ gtk_window_add_accel_group(GTK_WINDOW(bw->main_window), bw->accel_group);
+
+- /* set window title */
+- g_snprintf(buf, 64, "Version %s", VERSION);
+- a_Interface_set_page_title(bw, buf);
+-
+ box1 = gtk_vbox_new(FALSE, 0);
+
+ /* setup the control panel */
+@@ -912,7 +747,6 @@ a_Interface_browser_window_new(gint widt
+ gtk_widget_show(hbox);
+ gtk_box_pack_start(GTK_BOX(box1), handlebox, FALSE, FALSE, 0);
+ gtk_widget_show(handlebox);
+-
+ } else if (prefs.panel_size == 2 || prefs.panel_size == 3) {
+ handlebox = gtk_handle_box_new();
+ bw->PanelHandles = g_slist_append(bw->PanelHandles, handlebox);
+@@ -969,9 +803,12 @@ a_Interface_browser_window_new(gint widt
+
+ handlebox = gtk_handle_box_new();
+ bw->PanelHandles = g_slist_append(bw->PanelHandles, handlebox);
++ hbox = gtk_hbox_new(FALSE, 0);
+ locbox = Interface_locbar_new(bw);
+- gtk_container_add(GTK_CONTAINER(handlebox), locbox);
++ gtk_box_pack_start(GTK_BOX(hbox), locbox, TRUE, TRUE, 0);
+ gtk_widget_show(locbox);
++ gtk_container_add(GTK_CONTAINER(handlebox), hbox);
++ gtk_widget_show(hbox);
+ gtk_box_pack_start(GTK_BOX(box1), handlebox, FALSE, FALSE, 0);
+ gtk_widget_show(handlebox);
+ }
+@@ -979,58 +816,87 @@ a_Interface_browser_window_new(gint widt
+ /* Add box1 */
+ gtk_container_add(GTK_CONTAINER(bw->main_window), box1);
+
+- /* Now the main document window */
+- bw->docwin = a_Dw_gtk_scrolled_window_new();
+- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(bw->docwin),
+- GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+- gtk_box_pack_start(GTK_BOX(box1), bw->docwin, TRUE, TRUE, 0);
+- gtk_widget_show(bw->docwin);
++ /* Create the full_screen_off_button. This button is shared between all
++ * documents in a tabbed browser. On switching tabs it is reparented
++ * to the new current tab */
++ bw->full_screen_off_button = gtk_button_new ();
++ gtk_button_set_relief (GTK_BUTTON (bw->full_screen_off_button),
++ GTK_RELIEF_NONE);
++ gtk_tooltips_set_tip (tooltips, bw->full_screen_off_button,
++ _("Show Controls"), _("Hide Controls"));
++ GTK_WIDGET_UNSET_FLAGS (bw->full_screen_off_button, GTK_CAN_FOCUS);
++
++ pixmap = Interface_pixmap_new(bw->main_window, full_screen_off_xpm);
++ gtk_container_add (GTK_CONTAINER (bw->full_screen_off_button), pixmap);
++ gtk_widget_show (pixmap);
++
++ gtk_signal_connect_object
++ (GTK_OBJECT (bw->full_screen_off_button), "clicked",
++ GTK_SIGNAL_FUNC (a_Commands_full_screen_callback), (gpointer)bw);
++
++#ifndef DISABLE_TABS
++ /* add tab browser */
++ bw->container = a_Tab_browser_new(bw);
++ /* Add initial tab*/
++ a_Tab_new(bw);
++#else
++ /* add document container */
++ bw->dd = a_Doc_new();
++ a_Doc_set_browserwindow(bw->dd, bw);
++ /* add box2, which will contain the docwin and the frameset.
++ * Usually, only one of these is visible at any time */
++ box2 = gtk_hbox_new(TRUE, 0);
++ gtk_container_set_border_width(GTK_CONTAINER(box2), 0);
++ gtk_box_pack_start(GTK_BOX(box2), GTK_WIDGET(bw->dd->docwin), TRUE, TRUE, 0);
++ /* as this is a new document, the frameset will be empty so there
++ * is no need to pack it in the box */
++ gtk_widget_show(box2);
++
++ /* point bw->container at the box containing dd's docwin.
++ * This ensures that the docwin (and, through its callback,
++ * the associated DilloDoc) is destroyed when the window is closed */
++ bw->container = GTK_CONTAINER(box2);
+
+ /* todo (GTK2): this call is a bit of a workaround to missing focus
+ * between the location box and the docwin. It's fixed in GTK2:
+ * http://mail.gnome.org/archives/gtk-list/2003-June/msg00307.html */
+- gtk_widget_grab_focus(GTK_BIN(bw->docwin)->child);
++ gtk_widget_grab_focus(GTK_BIN(bw->dd->docwin)->child);
+
++#if 0
+ /* Full screen mode via double click is done in two ways: First,
+ * a feature of the selection is used, since in complex pages,
+ * getting events back to the viewport is quite difficult. Second,
+ * a simple callback, called e.g. when viewing image resources. */
+ a_Selection_set_dclick_callback(
+- GTK_DW_VIEWPORT(GTK_BIN(GTK_BIN(bw->docwin)->child)->child)->selection,
+- (void(*)(gpointer))Interface_full_screen_callback, bw);
++ GTK_DW_VIEWPORT(GTK_BIN(GTK_BIN(bw->dd->docwin)->child)->child)->selection,
++ (void(*)(gpointer))a_Commands_full_screen_callback, bw);
+ /* Selection requires an owner widget */
+ a_Selection_set_owner(
+- GTK_DW_VIEWPORT(GTK_BIN(GTK_BIN(bw->docwin)->child)->child)->selection,
+- GTK_BIN(bw->docwin)->child);
++ GTK_DW_VIEWPORT(GTK_BIN(GTK_BIN(bw->dd->docwin)->child)->child)->selection,
++ GTK_BIN(bw->dd->docwin)->child);
++#endif
+
+- gtk_signal_connect_object_after(GTK_OBJECT(GTK_BIN(bw->docwin)->child),
++#if 0
++ gtk_signal_connect_object_after(GTK_OBJECT(GTK_BIN(bw->dd->docwin)->child),
+ "button_press_event",
+- GTK_SIGNAL_FUNC(Interface_click_callback),
++ GTK_SIGNAL_FUNC(a_Commands_click_callback),
+ (gpointer)bw);
++#endif
+
+ /* full screen button: actually there're two buttons, one in the scrolled
+ * window (fs off) and one in the status bar (fs on). They look as one. */
+- bw->full_screen_off_button = gtk_button_new ();
+- gtk_tooltips_set_tip (tooltips, bw->full_screen_off_button,
+- "Show Controls", "Hide Controls");
+- GTK_WIDGET_UNSET_FLAGS (bw->full_screen_off_button, GTK_CAN_FOCUS);
+- a_Dw_gtk_scrolled_window_add_gadget (GTK_DW_SCROLLED_WINDOW (bw->docwin),
+- bw->full_screen_off_button);
+- pixmap = Interface_pixmap_new(bw->main_window, full_screen_off_xpm);
+- gtk_container_add (GTK_CONTAINER (bw->full_screen_off_button), pixmap);
+- gtk_widget_show (pixmap);
+- gtk_signal_connect_object
+- (GTK_OBJECT (bw->full_screen_off_button), "clicked",
+- GTK_SIGNAL_FUNC (Interface_full_screen_callback), (gpointer)bw);
++ a_Dw_gtk_scrolled_window_add_gadget(GTK_DW_SCROLLED_WINDOW (bw->dd->docwin),
++ bw->full_screen_off_button);
+ Interface_set_button_accel(GTK_BUTTON(bw->full_screen_off_button), GDK_h,
+ GDK_CONTROL_MASK, bw->accel_group);
+
+ /* Catch key_press event */
+- gtk_signal_connect(GTK_OBJECT(GTK_BIN(bw->docwin)->child),
++ gtk_signal_connect(GTK_OBJECT(GTK_BIN(bw->dd->docwin)->child),
+ "key_press_event",
+- GTK_SIGNAL_FUNC(Interface_key_press_handler), bw);
+-
+- gtk_widget_set_usize(bw->main_window, width, height);
++ GTK_SIGNAL_FUNC(a_Commands_key_press_handler), bw);
++#endif /* !DISABLE_TABS */
++ gtk_box_pack_start(GTK_BOX(box1), GTK_WIDGET(bw->container), TRUE, TRUE, 0);
++ gtk_widget_show(GTK_WIDGET(bw->container));
+
+ /* status widget */
+ /* create the over-bug-meter menu */
+@@ -1060,11 +926,12 @@ a_Interface_browser_window_new(gint widt
+ gtk_container_add (GTK_CONTAINER (button), hbox);
+ gtk_widget_show(hbox);
+ gtk_tooltips_set_tip (tooltips, button,
+- "Show HTML bugs (right-click for menu).", "");
++ _("Show HTML bugs (right-click for menu)."), "");
+
+ bw->status_box = gtk_hbox_new(FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(bw->status_box), bw->status, TRUE, TRUE, 2);
+ gtk_widget_show(bw->status);
++ Interface_add_search_dialog(bw);
+ gtk_box_pack_start(GTK_BOX(bw->status_box), button, FALSE, FALSE, 0);
+ gtk_widget_show(button);
+
+@@ -1076,47 +943,15 @@ a_Interface_browser_window_new(gint widt
+ gtk_widget_show(bw->main_window);
+ gtk_widget_show(box1);
+
++#if 0 //already initialize by g_new0().
+ /* initialize the rest of the bw's data. */
+- bw->pagemarks_menuitem = NULL;
+- bw->pagemarks_menu = NULL;
+- bw->pagemarks_last = NULL;
+- bw->viewbugs_menuitem = NULL;
+-
+- /* the image menu is created first because it is used by the link menu */
+- bw->menu_popup.over_image = a_Menu_popup_oi_new(bw);
+- bw->menu_popup.over_link = a_Menu_popup_ol_new(bw);
+- bw->menu_popup.over_page = a_Menu_popup_op_new(bw);
+- bw->menu_popup.over_back = NULL;
+- bw->menu_popup.over_forw = NULL;
+- bw->menu_popup.url = NULL;
+- bw->menu_popup.url2 = NULL;
+-
+- bw->redirect_level = 0;
+- bw->sens_idle_id = 0;
+-
+- bw->CursorType = -1;
+-
+- bw->RootClients = NULL;
+- bw->NumRootClients = 0;
+- bw->MaxRootClients = 8;
+-
+- bw->ImageClients = NULL;
+- bw->NumImageClients = 0;
+- bw->MaxImageClients = 8;
+- bw->NumImages = 0;
+- bw->NumImagesGot = 0;
+-
+- bw->PageUrls = NULL;
+- bw->NumPageUrls = 0;
+- bw->MaxPageUrls = 8;
+-
+ bw->open_dialog_window = NULL;
+ bw->open_dialog_entry = NULL;
+ bw->openfile_dialog_window = NULL;
+ bw->quit_dialog_window = NULL;
+ bw->save_dialog_window = NULL;
+ bw->save_link_dialog_window = NULL;
+- bw->findtext_dialog_window = NULL;
++ bw->findtext_dialog = NULL;
+ bw->findtext_dialog_check = NULL;
+ bw->findtext_dialog_entry = NULL;
+ bw->search_dialog_window = NULL;
+@@ -1125,15 +960,61 @@ a_Interface_browser_window_new(gint widt
+ bw->proxy_passwd_dialog_entry = NULL;
+ bw->question_dialog_window = NULL;
+ bw->question_dialog_data = NULL;
++ bw->passwd_dialog_window = NULL;
++ bw->passwd_dialog_uentry = NULL;
++ bw->passwd_dialog_pentry = NULL;
+ bw->viewsource_window = NULL;
+ bw->pagebugs_window = NULL;
+
++ bw->pagemarks_menuitem = NULL;
++ bw->viewbugs_menuitem = NULL;
++ bw->frame_menuitem = NULL;
++ bw->frameset_menuitem = NULL;
++ bw->menu_popup.over_frame = NULL;
++ bw->back_op_menu_button = NULL;
++ bw->forw_op_menu_button = NULL;
++ bw->stop_op_menu_button = NULL;
++#endif
++ /* the image menu is created first because it is used by the link menu */
++ bw->menu_popup.over_image = a_Menu_popup_oi_new(bw);
++ bw->menu_popup.over_page = a_Menu_popup_op_new(bw);
++ bw->menu_popup.over_link = a_Menu_popup_ol_new(bw);
++#if 0 //already initialize by g_new0().
++ bw->menu_popup.over_back = NULL;
++ bw->menu_popup.over_forw = NULL;
++
++#ifndef DISABLE_TABS
++ bw->menu_popup.over_tab = NULL;
++#endif /* !DISABLE_TABS */
++ bw->menu_popup.url = NULL;
++ bw->menu_popup.url2 = NULL;
++#endif
++
++
++ bw->found = FALSE;
++ bw->dd_list = NULL;
++ bw->dd_list_index = 0;
++
++ bw->sens_idle_id = 0;
++
++ /* set focus to location bar */
++ if(prefs.focus_location_on_new)
++ gtk_widget_grab_focus(bw->location);
++ else
++ gtk_widget_grab_focus(GTK_BIN(bw->dd->docwin)->child);
++
++ /* set document (and window) title */
++ g_snprintf(buf, 64, "Version %s", VERSION);
++ a_Doc_title_set(bw->dd, buf);
++
+ /* now that the bw is made, let's customize it.. */
+ Interface_browser_window_customize(bw);
+
+ return bw;
+ }
+
++
++
+ /*
+ * Set the title of the browser window to start with "Dillo: "
+ * prepended to it.
+@@ -1146,7 +1027,7 @@ void a_Interface_set_page_title(BrowserW
+
+ buf = g_string_new("");
+ g_string_sprintfa(buf, "Dillo: %s", title);
+- gtk_window_set_title(GTK_WINDOW(bw->main_window), buf->str);
++ a_I18n_gtk_window_set_title(GTK_WINDOW(bw->main_window), buf->str);
+ g_string_free(buf, TRUE);
+ }
+
+@@ -1155,7 +1036,7 @@ void a_Interface_set_page_title(BrowserW
+ */
+ void a_Interface_set_location_text(BrowserWindow *bw, char *text)
+ {
+- gtk_entry_set_text(GTK_ENTRY(bw->location), text);
++ a_I18n_gtk_entry_set_text(GTK_ENTRY(bw->location), text);
+ }
+
+ /*
+@@ -1163,7 +1044,7 @@ void a_Interface_set_location_text(Brows
+ */
+ gchar *a_Interface_get_location_text(BrowserWindow *bw)
+ {
+- return gtk_entry_get_text(GTK_ENTRY(bw->location));
++ return a_I18n_gtk_entry_get_text(GTK_ENTRY(bw->location));
+ }
+
+ /*
+@@ -1181,13 +1062,16 @@ void a_Interface_reset_progress_bars(Bro
+ void a_Interface_msg(BrowserWindow *bw, const char *format, ... )
+ {
+ static char msg[1024];
++ char *msg_fix;
+ va_list argp;
+
+ if ( bw ) {
+ va_start(argp, format);
+ g_vsnprintf(msg, 1024, format, argp);
+ va_end(argp);
+- gtk_label_set_text(GTK_LABEL(bw->status), msg);
++ msg_fix = a_I18n_string_check(msg, DILLO_CHARSET);
++ a_I18n_gtk_label_set_text(GTK_LABEL(bw->status), msg_fix);
++ g_free(msg_fix);
+ bw->status_is_link = 0;
+ }
+ }
+@@ -1255,7 +1139,7 @@ void a_Interface_quit_all(void)
+ gtk_widget_destroy(bws[i]->main_window);
+
+ g_free(bws);
+-
++
+ g_free(open_dialog_last_dirname);
+ g_free(save_dialog_last_dirname);
+ }
+@@ -1312,7 +1196,7 @@ static void
+ Cfn = (s = a_Misc_escape_chars(fn, "% ")) ? s : fn;
+ g_string_sprintf(UrlStr, "file:%s", Cfn);
+ url = a_Url_new(UrlStr->str, NULL, 0, 0, 0);
+- a_Nav_push(bw, url);
++ a_Nav_push(bw->dd, url);
+ a_Url_free(url);
+ g_string_free(UrlStr, TRUE);
+ g_free(s);
+@@ -1330,10 +1214,12 @@ static void
+ */
+ static gchar *Interface_make_search_url(const gchar *str)
+ {
+- gchar *keys = a_Url_encode_hex_str(str), *c = prefs.search_url;
++ gchar *enc_str = a_I18n_convert(DILLO_CHARSET, prefs.search_charset, str, -1);
++ gchar *keys = a_Url_encode_hex_str(enc_str), *c = prefs.search_url;
+ GString *newstr = g_string_sized_new(strlen(c)+strlen(keys));
+ gchar *search_url;
+
++ g_free(enc_str);
+ for (; *c; c++)
+ if (*c == '%')
+ switch(*++c) {
+@@ -1342,9 +1228,9 @@ static gchar *Interface_make_search_url(
+ case '%':
+ g_string_append_c(newstr, '%'); break;;
+ case 0:
+- MSG("Warning: search_url ends with '%%'\n"); c--; break;;
++ MSG(_("Warning: search_url ends with '%%'\n")); c--; break;;
+ default:
+- MSG("Warning: illegal specifier '%%%c' in search_url\n", *c);
++ MSG(_("Warning: illegal specifier '%%%c' in search_url\n"), *c);
+ }
+ else
+ g_string_append_c(newstr, *c);
+@@ -1372,14 +1258,14 @@ static void Interface_open_url_string(gc
+
+ url = a_Url_new(new_text, NULL, 0, 0, 0);
+ if (url) {
+- a_Nav_push(bw, url);
++ a_Nav_push(bw->dd, url);
+ a_Url_free(url);
+ }
+ g_free(new_text);
+ }
+
+ /* let the rendered area have focus */
+- gtk_widget_grab_focus(GTK_BIN(bw->docwin)->child);
++ gtk_widget_grab_focus(GTK_BIN(bw->dd->docwin)->child);
+ }
+
+ /*
+@@ -1409,7 +1295,7 @@ void a_Interface_openfile_dialog(Browser
+ if (!bw->openfile_dialog_window) {
+ Interface_make_choose_file_dialog(
+ &(bw->openfile_dialog_window),
+- "openfile_dialog", "Dillo", "Dillo: Open File",
++ "openfile_dialog", "Dillo", _("Dillo: Open File"),
+ (GtkSignalFunc) Interface_openfile_ok_callback, (void *)bw);
+ }
+
+@@ -1485,7 +1371,7 @@ static void
+ (GtkSignalFunc) gtk_widget_grab_default,
+ GTK_OBJECT(button));
+
+- button = gtk_button_new_with_label("Clear");
++ button = gtk_button_new_with_label(_("Clear"));
+ gtk_signal_connect_object(GTK_OBJECT(button), "clicked",
+ (GtkSignalFunc) Interface_entry_clear,
+ GTK_OBJECT(entry));
+@@ -1493,7 +1379,7 @@ static void
+ gtk_box_pack_start(GTK_BOX(box2), button, FALSE, TRUE, 0);
+ gtk_widget_show(button);
+
+- button = gtk_button_new_with_label("Cancel");
++ button = gtk_button_new_with_label(_("Cancel"));
+ gtk_signal_connect_object(GTK_OBJECT(button), "clicked",
+ (GtkSignalFunc) gtk_widget_destroy,
+ GTK_OBJECT(*DialogWindow));
+@@ -1522,7 +1408,7 @@ static void Interface_question_dialog_se
+ * (0 means the window was cancelled, and 1 to 5 the respective alternatives)
+ */
+ static void Interface_make_question_dialog(
+- BrowserWindow *bw,
++ DilloDoc *dd,
+ GtkWidget **DialogWindow, char *WmName, char *WmClass,
+ char *WTitle, char *Question, gint modal_flag,
+ char *alt1, char *alt2, char *alt3, char *alt4, char *alt5,
+@@ -1540,7 +1426,7 @@ static void Interface_make_question_dial
+ gtk_window_set_modal(GTK_WINDOW(*DialogWindow), modal_flag);
+ /* attach AnswerCallback to "destroy" so appropriate actions can be taken */
+ gtk_signal_connect_object(GTK_OBJECT(*DialogWindow), "destroy",
+- (GtkSignalFunc) AnswerCallback, (gpointer)bw);
++ (GtkSignalFunc) AnswerCallback, (gpointer)dd);
+ gtk_signal_connect(GTK_OBJECT(*DialogWindow), "destroy",
+ (GtkSignalFunc) Interface_destroy_window, DialogWindow);
+
+@@ -1559,7 +1445,7 @@ static void Interface_make_question_dial
+ * (it looks clumsy, but provides a handy interface for the caller) */
+ answer = g_new(DialogAnswer, 6);
+ for (i = 0; i < 6; ++i) {
+- answer[i].bw = bw;
++ answer[i].bw = dd->bw;
+ answer[i].alt_num = i;
+ answer[i].this = answer;
+ }
+@@ -1567,7 +1453,7 @@ static void Interface_make_question_dial
+ answer[2].alt_str = alt2; answer[3].alt_str = alt3;
+ answer[4].alt_str = alt4; answer[5].alt_str = alt5;
+ /* Set the default answer */
+- bw->question_dialog_answer = &answer[0];
++ dd->bw->question_dialog_answer = &answer[0];
+
+ /* pack the alternatives */
+ box2 = gtk_hbox_new(TRUE, 5);
+@@ -1592,23 +1478,117 @@ static void Interface_make_question_dial
+ }
+
+ /*
++ * Make a password-dialog with two entries, OK and Cancel.
++ */
++void Interface_make_passwd_dialog(
++ GtkWidget **DialogWindow, char *WmName, char *WmClass,
++ char *WTitle, char *Context,
++ GtkWidget **passwd_dialog_uentry,
++ GtkWidget **passwd_dialog_pentry,
++ GtkSignalFunc OkCallback, void *OkCbData,
++ GtkSignalFunc CancelCallback, void *CancelCbData)
++{
++ GtkWidget *label,
++ *label_user,
++ *label_pass,
++ *button,
++ *box_l,
++ *box_u,
++ *box_p,
++ *box_b;
++
++ *DialogWindow = gtk_window_new(GTK_WINDOW_DIALOG);
++ gtk_window_set_wmclass(GTK_WINDOW(*DialogWindow), WmName, WmClass);
++ gtk_window_set_title(GTK_WINDOW(*DialogWindow), WTitle);
++ gtk_container_border_width(GTK_CONTAINER(*DialogWindow), 10);
++ gtk_signal_connect(GTK_OBJECT(*DialogWindow), "destroy",
++ (GtkSignalFunc) Interface_destroy_window, DialogWindow);
++
++ box_l = gtk_vbox_new(FALSE, 5);
++ label = gtk_label_new(Context);
++ gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_FILL);
++ gtk_box_pack_start(GTK_BOX(box_l), label, FALSE, FALSE, 0);
++ gtk_widget_show(label);
++ box_u = gtk_hbox_new(FALSE, 5);
++ label_user = gtk_label_new(_("User Name:"));
++ gtk_box_pack_start(GTK_BOX(box_u), label_user, FALSE, FALSE, 0);
++ gtk_widget_show(label_user);
++ *passwd_dialog_uentry=gtk_entry_new();
++ gtk_box_pack_start(GTK_BOX(box_u),*passwd_dialog_uentry, TRUE, TRUE, 0);
++ gtk_widget_show(*passwd_dialog_uentry);
++ box_p = gtk_hbox_new(FALSE, 5);
++ label_pass = gtk_label_new(_("Password:"));
++ gtk_box_pack_start(GTK_BOX(box_p), label_pass, FALSE, FALSE, 0);
++ gtk_widget_show(label_pass);
++ *passwd_dialog_pentry=gtk_entry_new();
++ gtk_entry_set_visibility(GTK_ENTRY(*passwd_dialog_pentry), FALSE);
++ gtk_box_pack_start(GTK_BOX(box_p),*passwd_dialog_pentry, TRUE, TRUE, 0);
++ gtk_widget_show(*passwd_dialog_pentry);
++
++ box_b = gtk_hbox_new(TRUE, 5);
++ button = gtk_button_new_with_label(_("OK"));
++ gtk_signal_connect_object(GTK_OBJECT(button), "clicked",
++ OkCallback, OkCbData);
++ gtk_signal_connect(GTK_OBJECT(button), "clicked",
++ (GtkSignalFunc) Interface_destroy_window, DialogWindow);
++ gtk_widget_show(button);
++ gtk_box_pack_start(GTK_BOX(box_b), button, FALSE, TRUE, 0);
++ button = gtk_button_new_with_label(_("Cancel"));
++ gtk_signal_connect_object(GTK_OBJECT(button), "clicked",
++ CancelCallback, CancelCbData);
++ gtk_signal_connect(GTK_OBJECT(button), "clicked",
++ (GtkSignalFunc) Interface_destroy_window, DialogWindow);
++ gtk_widget_show(button);
++ gtk_box_pack_start(GTK_BOX(box_b), button, TRUE, TRUE, 0);
++ gtk_box_pack_start(GTK_BOX(box_l), box_u, TRUE, FALSE, 0);
++ gtk_box_pack_start(GTK_BOX(box_l), box_p, TRUE, FALSE, 0);
++ gtk_box_pack_start(GTK_BOX(box_l), box_b, TRUE, FALSE, 0);
++ gtk_container_add(GTK_CONTAINER(*DialogWindow), box_l);
++
++ gtk_widget_show(box_b);
++ gtk_widget_show(box_p);
++ gtk_widget_show(box_u);
++ gtk_widget_show(box_l);
++ gtk_widget_grab_focus(GTK_WIDGET(*passwd_dialog_uentry));
++ gtk_widget_show(*DialogWindow);
++}
++
++/*
++ * Create and show a user/passwd dialog
++ */
++void a_Interface_passwd_dialog(
++ BrowserWindow *bw, gchar *Context,
++ GtkSignalFunc OkCallback, void *OkCbData,
++ GtkSignalFunc CancelCallback, void *CancelCbData)
++{
++ if (!bw->passwd_dialog_window) {
++ Interface_make_passwd_dialog(&(bw->passwd_dialog_window),
++ "passwd_dialog", "Dillo", _("Dillo: Enter Authentication"), Context,
++ &(bw->passwd_dialog_uentry), &(bw->passwd_dialog_pentry),
++ OkCallback, OkCbData, CancelCallback, CancelCbData);
++ } else {
++ gtk_widget_destroy(bw->passwd_dialog_window);
++ }
++}
++
++/*
+ * Create and show an [OK|Cancel] question dialog
+ */
+ void a_Interface_question_dialog(
+- BrowserWindow *bw, gchar *QuestionTxt, gint modal_flag,
++ DilloDoc *dd, gchar *QuestionTxt, gint modal_flag,
+ char *alt1, char *alt2, char *alt3, char *alt4, char *alt5,
+ GtkSignalFunc AnswerCallback)
+ {
+- if (!bw->question_dialog_window) {
++ if (!dd->bw->question_dialog_window) {
+ Interface_make_question_dialog(
+- bw,
+- &(bw->question_dialog_window), "question_dialog", "Dillo",
+- "Dillo: Question", QuestionTxt, modal_flag,
++ dd,
++ &(dd->bw->question_dialog_window), "question_dialog", "Dillo",
++ _("Dillo: Question"), QuestionTxt, modal_flag,
+ alt1, alt2, alt3, alt4, alt5,
+ AnswerCallback);
+ } else {
+ /* should not reach here */
+- gtk_widget_destroy(bw->question_dialog_window);
++ gtk_widget_destroy(dd->bw->question_dialog_window);
+ }
+ }
+
+@@ -1619,9 +1599,9 @@ void a_Interface_open_dialog(GtkWidget *
+ {
+ if (!bw->open_dialog_window) {
+ Interface_make_dialog(&(bw->open_dialog_window),
+- "open_dialog", "Dillo", "Dillo: Open URL",
++ "open_dialog", "Dillo", _("Dillo: Open URL"),
+ &(bw->open_dialog_entry), "", 1, NULL, NULL,
+- "OK", (GtkSignalFunc) a_Interface_entry_open_url, (void *)bw);
++ _("OK"), (GtkSignalFunc) a_Interface_entry_open_url, (void *)bw);
+ if (prefs.transient_dialogs)
+ gtk_window_set_transient_for(GTK_WINDOW(bw->open_dialog_window),
+ GTK_WINDOW(bw->main_window));
+@@ -1643,11 +1623,13 @@ static void Interface_save_callback(int
+
+ if ( Op ){
+ struct stat st;
++ gchar *msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("File saved (%d Bytes)"));
+
+ fflush(Web->stream);
+ fstat(fileno(Web->stream), &st);
+ fclose(Web->stream);
+- a_Interface_msg(Web->bw, "File saved (%d Bytes)", st.st_size);
++ a_Interface_msg(Web->dd->bw, msg_enc, st.st_size);
++ g_free(msg_enc);
+ } else {
+ if ( (Bytes = Client->BufSize - Web->SavedBytes) > 0 ) {
+ Bytes = fwrite(Client->Buf + Web->SavedBytes, 1, Bytes, Web->stream);
+@@ -1670,11 +1652,11 @@ static void Interface_file_save_url(GtkW
+ choosefile = GTK_FILE_SELECTION(bw->save_dialog_window);
+ entry_url = GTK_ENTRY(bw->location);
+ name = gtk_file_selection_get_filename(choosefile);
+- url = a_Url_dup(a_History_get_url(NAV_TOP(bw)));
++ url = a_Url_dup(a_History_get_url(NAV_TOP(bw->dd)));
+
+ if ( strlen(name) && (out = fopen(name, "w")) != NULL ) {
+ DilloWeb *Web = a_Web_new(url);
+- Web->bw = bw;
++ Web->dd = bw->dd;
+ Web->stream = out;
+ Web->flags |= WEB_Download;
+ /* todo: keep track of this client */
+@@ -1710,20 +1692,20 @@ static void Interface_file_save_link(Gtk
+ /* Not cached, ask the downloads server to get it */
+ cmd = a_Dpip_build_cmd("cmd=%s url=%s destination=%s",
+ "download", URL_STR(url), name);
+- a_Capi_dpi_send_cmd(NULL, bw, cmd, "downloads", 1);
++ a_Capi_dpi_send_cmd(NULL, bw->dd, cmd, "downloads", 1);
+ g_free(cmd);
+
+ } else {
+ /* Cached! Save from the cache */
+ if ( strlen(name) && (out = fopen(name, "w")) != NULL ) {
+ DilloWeb *Web = a_Web_new(url);
+- Web->bw = bw;
++ Web->dd = bw->dd;
+ Web->stream = out;
+ Web->flags |= WEB_Download;
+ /* todo: keep track of this client */
+ a_Capi_open_url(Web, Interface_save_callback, Web);
+ } else
+- g_printerr("Error trying to save: %s\n", name);
++ g_printerr(_("Error trying to save: %s\n"), name);
+ }
+
+ gtk_widget_destroy(bw->save_link_dialog_window);
+@@ -1776,7 +1758,7 @@ void a_Interface_save_dialog(GtkWidget *
+ if (!bw->save_dialog_window) {
+ Interface_make_choose_file_dialog(
+ &bw->save_dialog_window,
+- "save_dialog", "Dillo", "Dillo: Save URL as File...",
++ "save_dialog", "Dillo", _("Dillo: Save URL as File..."),
+ (GtkSignalFunc) Interface_file_save_url, (void *)bw );
+ }
+ url = a_Url_new(a_Interface_get_location_text(bw), NULL, 0, 0, 0);
+@@ -1803,7 +1785,7 @@ void a_Interface_save_link_dialog(GtkWid
+ Interface_make_choose_file_dialog(
+ &bw->save_link_dialog_window,
+ "save_link_dialog", "Dillo",
+- "Dillo: Save link as File...",
++ _("Dillo: Save link as File..."),
+ (GtkSignalFunc) Interface_file_save_link,
+ (void *)bw);
+ }
+@@ -1834,55 +1816,189 @@ static void Interface_entry_search(GtkWi
+ {
+ char *string;
+ gboolean case_sens;
++ DilloDoc *dd;
+
+- string = gtk_editable_get_chars(GTK_EDITABLE(bw->findtext_dialog_entry),
+- 0, -1);
++ string = a_I18n_gtk_editable_get_chars(GTK_EDITABLE(bw->findtext_dialog_entry),
++ 0, -1);
++ if (!string || strlen(string) == 0) return;
+ case_sens = gtk_toggle_button_get_active
+- (GTK_TOGGLE_BUTTON(bw->findtext_dialog_check));
+- switch(a_Dw_gtk_scrolled_window_search(GTK_DW_SCROLLED_WINDOW(bw->docwin),
+- string, case_sens)) {
++ (GTK_TOGGLE_BUTTON(bw->findtext_dialog_check));
++
++ /* get the document to search from dd_list */
++ dd = g_list_nth_data(bw->dd_list, bw->dd_list_index);
++ if (!dd) return;
++
++ switch(a_Dw_gtk_scrolled_window_search(GTK_DW_SCROLLED_WINDOW(dd->docwin),
++ string, case_sens)) {
+ case FINDTEXT_RESTART:
+- a_Interface_message_window("Dillo: Find text",
+- "No further occurence of \"%s\". "
+- "Restarting from the beginning.", string);
+- break;
+ case FINDTEXT_NOT_FOUND:
+- a_Interface_message_window("Dillo: Find text",
+- "Cannot find \"%s\".", string);
+- break;
++ a_Dw_gtk_scrolled_window_reset_search((void *) dd->docwin);
++ if(++(bw->dd_list_index) < g_list_length(bw->dd_list)) {
++ /* recursively repeat search in next document */
++ Interface_entry_search(widget, bw);
++ } else {
++ if (!bw->found) {
++ if (prefs.popup_dialogs) {
++ gchar *title, *msg;
++ title = a_I18n_locale_to_DILLO_CHARSET(_("Dillo: Find text"));
++ msg = a_I18n_locale_to_DILLO_CHARSET(_("Cannot find \"%s\"."));
++ a_Interface_message_window(title, msg, string);
++ g_free(title);
++ g_free(msg);
++ } else {
++ gchar *format;
++ format = a_I18n_locale_to_DILLO_CHARSET(_("Cannot find \"%s\"."));
++ a_Interface_msg(bw, format, string);
++ g_free(format);
++ }
++ } else {
++ if (prefs.popup_dialogs) {
++ gchar *title, *msg;
++ title = a_I18n_locale_to_DILLO_CHARSET(_("Dillo: Find text"));
++ msg = a_I18n_locale_to_DILLO_CHARSET(_("No further occurence of \"%s\". "
++ "Restarting from the beginning."));
++ a_Interface_message_window(title, msg, string);
++ g_free(title);
++ g_free(msg);
++ } else {
++ gchar *format;
++ format = a_I18n_locale_to_DILLO_CHARSET(
++ _("(Find) \"%s\": restart from beginning"));
++ a_Interface_msg(bw, format, string);
++ g_free(format);
++ }
++ }
++ bw->found = FALSE;
++ bw->dd_list_index = 0;
++ }
++ break;
++ case FINDTEXT_SUCCESS:
++ bw->found = TRUE;
++ if (!prefs.popup_dialogs) {
++ gchar *format;
++ format = a_I18n_locale_to_DILLO_CHARSET(_("(Find) \"%s\""));
++ a_Interface_msg(bw, format, string);
++ g_free(format);
++ }
++ break;
++ default:
++ _MSG(_("Unexpected return from a_Dw_gtk_scrolled_window_search()\n"));
++ break;
+ }
++
+ g_free(string);
+ }
+
+ /*
++ * Callback for findtext destroy, resets search and destroys dd_list
++ */
++void a_Interface_findtext_dialog_destroy(BrowserWindow *bw)
++{
++ DilloDoc *dd = NULL;
++
++ if (!find_text_window) return;
++ dd = g_list_nth_data(bw->dd_list, bw->dd_list_index);
++ /* reset the search */
++ a_Dw_gtk_scrolled_window_reset_search((void *) dd->docwin);
++ /* destroy the list */
++ g_list_free(bw->dd_list);
++ bw->dd_list = NULL;
++ bw->dd_list_index = 0;
++ bw->found = FALSE;
++ find_text_window = NULL;
++ if (!prefs.popup_dialogs)
++ a_Interface_msg(bw, "");
++ gtk_widget_grab_focus(GTK_WIDGET(GTK_BIN(bw->dd->docwin)->child));
++}
++
++/*
++ * Close the dialog interface for finding text in a page
++ */
++void a_Interface_findtext_dialog_close(){
++ if (!find_text_window) return;
++ if (prefs.popup_dialogs)
++ gtk_widget_destroy(find_text_window);
++ else {
++ gtk_widget_hide(find_text_window);
++ }
++}
++
++void Interface_add_search_dialog(BrowserWindow *bw)
++{
++ if (prefs.popup_dialogs) return;
++ if (bw->findtext_dialog) return;
++ bw->findtext_dialog = gtk_hbox_new(FALSE, 0);
++ bw->findtext_dialog_entry = gtk_entry_new();
++ bw->findtext_dialog_check = gtk_check_button_new_with_label("aA");
++ gtk_widget_set_usize(bw->findtext_dialog, 100, 0);
++ gtk_widget_show(bw->findtext_dialog_entry);
++ gtk_widget_show(bw->findtext_dialog_check);
++ gtk_tooltips_set_tip(tooltips, bw->findtext_dialog_entry,
++ _("press <Enter> to (repeat) search, <Esc> to close search"),
++ _("Search"));
++ gtk_tooltips_set_tip(tooltips, bw->findtext_dialog_check,
++ _("Case sensitive"),
++ _("Case sensitive"));
++ gtk_box_pack_start(GTK_BOX(bw->findtext_dialog),
++ bw->findtext_dialog_check, FALSE, FALSE, 0);
++ gtk_box_pack_start(GTK_BOX(bw->findtext_dialog),
++ bw->findtext_dialog_entry, TRUE, TRUE, 0);
++ gtk_box_pack_start(GTK_BOX(bw->status_box),
++ bw->findtext_dialog, TRUE, TRUE, 2);
++ gtk_signal_connect(GTK_OBJECT(bw->findtext_dialog_entry), "activate",
++ Interface_entry_search, (void *) bw);
++ gtk_signal_connect_object
++ (GTK_OBJECT(bw->findtext_dialog), "hide",
++ (GtkSignalFunc) a_Interface_findtext_dialog_destroy,
++ (void*) bw);
++ gtk_widget_add_accelerator(bw->findtext_dialog, "hide",
++ bw->accel_group, GDK_Escape, 0, 0);
++}
++
++/*
+ * Show the dialog interface for finding text in a page
+ */
+ void a_Interface_findtext_dialog(BrowserWindow *bw)
+ {
+- if (!bw->findtext_dialog_window) {
+- Interface_make_dialog(&(bw->findtext_dialog_window),
+- "findtext_dialog", "Dillo", "Dillo: Find text in page",
+- &(bw->findtext_dialog_entry), "", 1,
+- &(bw->findtext_dialog_check), "Case sensitive",
+- "Find", (GtkSignalFunc) Interface_entry_search, (void *)bw);
+- if (prefs.transient_dialogs)
+- gtk_window_set_transient_for(GTK_WINDOW(bw->findtext_dialog_window),
+- GTK_WINDOW(bw->main_window));
+- gtk_signal_connect_object
+- (GTK_OBJECT(bw->findtext_dialog_window), "destroy",
+- (GtkSignalFunc) a_Dw_gtk_scrolled_window_reset_search,
+- (void*)bw->docwin);
+- gtk_window_set_position(GTK_WINDOW(bw->findtext_dialog_window),
+- GTK_WIN_POS_NONE);
+- }
++ /* make search list if it has not been defined yet */
++ if(bw->dd_list == NULL)
++ bw->dd_list = a_Doc_get_visible_children(bw->dd);
++ bw->dd_list_index = 0;
++ /* reset found state */
++ bw->found = FALSE;
++
++ /* does the user want popup windows? */
++ if (prefs.popup_dialogs) {
++ /* YES: create search dialog popup */
++ if (!bw->findtext_dialog) {
++ Interface_make_dialog(&(bw->findtext_dialog),
++ "findtext_dialog", "Dillo", _("Dillo: Find text in page"),
++ &(bw->findtext_dialog_entry), "", 1,
++ &(bw->findtext_dialog_check), _("Case sensitive"),
++ _("Find"), (GtkSignalFunc) Interface_entry_search, (void *)bw);
++ if (prefs.transient_dialogs)
++ gtk_window_set_transient_for(GTK_WINDOW(bw->findtext_dialog),
++ GTK_WINDOW(bw->main_window));
++ gtk_signal_connect_object
++ (GTK_OBJECT(bw->findtext_dialog), "destroy",
++ (GtkSignalFunc) a_Interface_findtext_dialog_destroy,
++ (void*) bw);
++ gtk_window_set_position(GTK_WINDOW(bw->findtext_dialog),
++ GTK_WIN_POS_NONE);
++ }
+
+- a_Interface_set_nice_window_pos(bw->findtext_dialog_window,
+- bw->main_window);
++ a_Interface_set_nice_window_pos(bw->findtext_dialog,
++ bw->main_window);
+
+- if (!GTK_WIDGET_VISIBLE(bw->findtext_dialog_window))
+- gtk_widget_show(bw->findtext_dialog_window);
+- else
+- gdk_window_raise(bw->findtext_dialog_window->window);
++ if (!GTK_WIDGET_VISIBLE(bw->findtext_dialog))
++ gtk_widget_show(bw->findtext_dialog);
++ else
++ gdk_window_raise(bw->findtext_dialog->window);
++ } else {
++ gtk_widget_show(bw->findtext_dialog);
++ gtk_widget_grab_focus(bw->findtext_dialog_entry);
++ }
++ find_text_window = bw->findtext_dialog;
+ }
+
+ /*
+@@ -1892,7 +2008,7 @@ static void Interface_search_callback(Gt
+ {
+ gchar *keyw, *url_str;
+
+- keyw = gtk_editable_get_chars(GTK_EDITABLE(bw->search_dialog_entry), 0, -1);
++ keyw = a_I18n_gtk_editable_get_chars(GTK_EDITABLE(bw->search_dialog_entry), 0, -1);
+ if (keyw) {
+ url_str = Interface_make_search_url(keyw);
+ Interface_open_url_string(url_str, bw);
+@@ -1910,9 +2026,9 @@ void a_Interface_search_dialog(GtkWidget
+ {
+ if (!bw->search_dialog_window) {
+ Interface_make_dialog(&(bw->search_dialog_window),
+- "search_dialog", "Dillo", "Dillo: Search the Web",
++ "search_dialog", _("Dillo"), _("Dillo: Search the Web"),
+ &(bw->search_dialog_entry), "", 1, NULL, NULL,
+- "Search", (GtkSignalFunc)Interface_search_callback, (void *)bw);
++ _("Search"), (GtkSignalFunc)Interface_search_callback, (void *)bw);
+ if (prefs.transient_dialogs)
+ gtk_window_set_transient_for(GTK_WINDOW(bw->search_dialog_window),
+ GTK_WINDOW(bw->main_window));
+@@ -1931,7 +2047,7 @@ static void Interface_entry_proxy_passwd
+ {
+ gchar *text;
+
+- text = gtk_editable_get_chars(GTK_EDITABLE(bw->proxy_passwd_dialog_entry),
++ text = a_I18n_gtk_editable_get_chars(GTK_EDITABLE(bw->proxy_passwd_dialog_entry),
+ 0, -1);
+ a_Http_set_proxy_passwd(text);
+ g_free(text);
+@@ -1947,14 +2063,14 @@ void a_Interface_proxy_passwd_dialog(Bro
+ {
+ GString *buf = g_string_new("");
+
+- g_string_sprintf(buf, "Dillo: Enter proxy password for '%s'",
++ g_string_sprintf(buf, _("Dillo: Enter proxy password for '%s'"),
+ prefs.http_proxyuser);
+
+ if (!bw->proxy_passwd_dialog_window) {
+ Interface_make_dialog(&(bw->proxy_passwd_dialog_window),
+ "proxy_passwd_dialog", "Dillo", buf->str,
+ &(bw->proxy_passwd_dialog_entry), "", 0, NULL, NULL,
+- "OK", (GtkSignalFunc)Interface_entry_proxy_passwd, (void *)bw);
++ _("OK"), (GtkSignalFunc)Interface_entry_proxy_passwd, (void *)bw);
+ if (prefs.transient_dialogs)
+ gtk_window_set_transient_for(
+ GTK_WINDOW(bw->proxy_passwd_dialog_window),
+@@ -2011,7 +2127,7 @@ void a_Interface_message_window(const ch
+
+ window = gtk_window_new(GTK_WINDOW_DIALOG);
+ gtk_window_set_wmclass(GTK_WINDOW(window), "question_dialog", "dillo");
+- gtk_window_set_title(GTK_WINDOW(window), title);
++ a_I18n_gtk_window_set_title(GTK_WINDOW(window), title);
+ gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
+ gtk_container_border_width(GTK_CONTAINER(window), 10);
+ gtk_signal_connect_object(GTK_OBJECT(window), "delete_event",
+@@ -2024,7 +2140,7 @@ void a_Interface_message_window(const ch
+ box = gtk_vbox_new(FALSE, 5);
+ frame = gtk_frame_new(NULL);
+ gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
+- label = gtk_label_new(msg);
++ label = a_I18n_gtk_label_new(msg);
+ gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_FILL);
+ gtk_misc_set_padding(GTK_MISC(label), 20, 20);
+ gtk_container_add(GTK_CONTAINER(frame), label);
+@@ -2032,7 +2148,7 @@ void a_Interface_message_window(const ch
+ gtk_widget_show(frame);
+ gtk_box_pack_start(GTK_BOX(box), frame, TRUE, TRUE, 0);
+
+- button = gtk_button_new_with_label("Close");
++ button = gtk_button_new_with_label(_("Close"));
+ gtk_signal_connect_object(GTK_OBJECT(button), "clicked",
+ (GtkSignalFunc)gtk_widget_destroy, (void*)window);
+ gtk_widget_add_accelerator(button, "clicked",
+@@ -2057,6 +2173,7 @@ void a_Interface_text_window (GtkWidget
+ {
+ gint xsize, ysize;
+ GtkWidget *window, *box1, *button, *scrolled_window, *text;
++ char *enc_buf, *charset;
+
+ if (*text_widget)
+ gtk_widget_destroy (*text_widget);
+@@ -2075,7 +2192,7 @@ void a_Interface_text_window (GtkWidget
+ GTK_SIGNAL_FUNC(gtk_widget_destroyed),
+ text_widget);
+
+- gtk_window_set_title (GTK_WINDOW (window), title);
++ a_I18n_gtk_window_set_title (GTK_WINDOW (window), title);
+ gtk_container_border_width (GTK_CONTAINER (window), 0);
+
+ box1 = gtk_vbox_new (FALSE, 0);
+@@ -2095,10 +2212,18 @@ void a_Interface_text_window (GtkWidget
+ gtk_widget_show (text);
+
+ gtk_text_freeze (GTK_TEXT (text));
+- gtk_text_insert (GTK_TEXT (text), NULL, NULL, NULL, buf, buf_size);
++
++ charset = a_I18n_get_charset_from_meta_tag(buf, buf_size);
++ if (!charset) charset = a_I18n_get_encoding(buf, buf_size);
++ enc_buf = a_I18n_convert(charset, DW_CHARSET, buf, buf_size);
++ g_free(charset);
++
++ if (enc_buf)
++ gtk_text_insert (GTK_TEXT (text),
++ NULL, NULL, NULL, enc_buf, strlen(enc_buf));
+ gtk_text_thaw (GTK_TEXT (text));
+
+- button = gtk_button_new_with_label ("close");
++ button = gtk_button_new_with_label (_("close"));
+ gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
+ GTK_SIGNAL_FUNC(gtk_widget_destroy),
+ GTK_OBJECT (window));
+@@ -2156,3 +2281,5 @@ void a_Interface_set_nice_window_pos(Gtk
+ gtk_widget_set_uposition(win1, (sh - h1) / 2, 0);
+ }
+ }
++
++/* vim: set ts=3 sw=3 sts=3 expandtab:*/
+diff -pruN dillo-0.8.6/src/interface.h dillo-0.8.6-i18n-misc-20060709/src/interface.h
+--- dillo-0.8.6/src/interface.h 2005-10-28 01:20:13.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/interface.h 2006-05-16 01:21:09.000000000 +0900
+@@ -6,7 +6,7 @@
+ /*
+ * This struct is used with custom dialogs.
+ * It can be extended to provide extra widgets (e.g. check buttons).
+- *
++ *
+ */
+ typedef struct _DialogAnswer DialogAnswer;
+ struct _DialogAnswer {
+@@ -18,14 +18,8 @@ struct _DialogAnswer {
+
+
+ void a_Interface_init(void);
+-void a_Interface_stop(BrowserWindow *bw);
+-void a_Interface_clean(BrowserWindow *bw);
+-void a_Interface_quit_all(void);
+
+-void a_Interface_add_client(BrowserWindow *bw, gint Key, gint Root);
+-void a_Interface_remove_client(BrowserWindow *bw, gint ClientKey);
+-void a_Interface_add_url(BrowserWindow *bw, const DilloUrl *Url, gint Flags);
+-void a_Interface_close_client(BrowserWindow *bw, gint ClientKey);
++void a_Interface_quit_all(void);
+
+ void a_Interface_msg(BrowserWindow *bw, const char *format, ... );
+ void a_Interface_bug_meter_update(BrowserWindow *bw, gint num_err);
+@@ -36,6 +30,8 @@ void a_Interface_save_dialog(GtkWidget *
+ void a_Interface_save_link_dialog(GtkWidget *widget, BrowserWindow *bw);
+ void a_Interface_offer_link_download(BrowserWindow *bw, const DilloUrl *url);
+ void a_Interface_search_dialog(GtkWidget *widget, BrowserWindow *bw);
++void Interface_findtext_dialog_destroy(BrowserWindow *bw);
++void a_Interface_findtext_dialog_close();
+ void a_Interface_findtext_dialog(BrowserWindow *bw);
+ void a_Interface_proxy_passwd_dialog(BrowserWindow *bw);
+ void a_Interface_quit_dialog(BrowserWindow *bw);
+@@ -45,7 +41,12 @@ void a_Interface_set_location_text(Brows
+ gchar *a_Interface_get_location_text(BrowserWindow *bw);
+ void a_Interface_reset_progress_bars(BrowserWindow *bw);
+ void a_Interface_entry_open_url(GtkWidget *widget, BrowserWindow *bw);
+-void a_Interface_set_cursor(BrowserWindow *bw, GdkCursorType CursorType);
++
++void a_Interface_toggle_panel(BrowserWindow *bw, gboolean toggle);
++
++/* content (scrolled_frame and everything in it) focus callback */
++void a_Interface_content_focus_callback(BrowserWindow *bw);
++
+ BrowserWindow *
+ a_Interface_browser_window_new(gint width, gint height, guint32 xid);
+
+@@ -54,7 +55,7 @@ void a_Interface_set_button_sens(Browser
+ void a_Interface_scroll_popup(GtkWidget *widget);
+
+ void a_Interface_question_dialog(
+- BrowserWindow *bw, gchar *QuestionTxt, gint modal_flag,
++ DilloDoc *dd, gchar *QuestionTxt, gint modal_flag,
+ char *alt1, char *alt2, char *alt3, char *alt4, char *alt5,
+ GtkSignalFunc AnswerCallback);
+ void a_Interface_message_window(const char *title, const char *format, ... );
+@@ -65,5 +66,10 @@ void a_Interface_text_window (GtkWidget
+
+ void a_Interface_set_nice_window_pos(GtkWidget *win1, GtkWidget *win2);
+
++void a_Interface_passwd_dialog(BrowserWindow *bw,
++ gchar *Context,
++ GtkSignalFunc OkCallback, void *OkCbData,
++ GtkSignalFunc CancelCallback, void *CancelCbData);
++
+
+ #endif /* __INTERFACE_H__ */
+diff -pruN dillo-0.8.6/src/intl.h dillo-0.8.6-i18n-misc-20060709/src/intl.h
+--- dillo-0.8.6/src/intl.h 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/intl.h 2006-05-16 01:21:09.000000000 +0900
+@@ -0,0 +1,24 @@
++#ifndef __INTL_H__
++#define __INTL_H__
++
++#ifdef ENABLE_NLS
++# include <libintl.h>
++# include <locale.h>
++# define _(String) dgettext(PACKAGE,String)
++# ifdef gettext_noop
++# define N_(String) gettext_noop(String)
++# else
++# define N_(String) (String)
++# endif /* gettext_noop */
++#else
++# define _(String) (String)
++# define N_(String) (String)
++# define textdomain(String) (String)
++# define gettext(String) (String)
++# define dgettext(Domain,String) (String)
++# define dcgettext(Domain,String,Type) (String)
++# define bindtextdomain(Domain,Directory) (Domain)
++# define bind_textdomain_codeset(Domain,Codeset) (Domain)
++#endif /* ENABLE_NLS */
++
++#endif /* __INTL_H__ */
+diff -pruN dillo-0.8.6/src/menu.c dillo-0.8.6-i18n-misc-20060709/src/menu.c
+--- dillo-0.8.6/src/menu.c 2005-10-28 01:20:13.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/menu.c 2006-05-16 01:21:09.000000000 +0900
+@@ -20,11 +20,16 @@
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
++#include <config.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <gtk/gtk.h>
+ #include <gdk/gdkkeysyms.h>
++#include "intl.h"
++#include "i18n.h"
++#include "i18n_gtk.h"
++#include "prefs.h"
+ #include "history.h"
+ #include "nav.h"
+ #include "commands.h"
+@@ -38,6 +43,8 @@
+ #include "gtk_ext_menu_item.h"
+ #include "gtk_menu_title.h"
+
++/* NOTE: default charset is DW_CHARSET */
++
+ /*
+ * Forward declarations
+ */
+@@ -156,31 +163,54 @@ GtkWidget *a_Menu_mainbar_new(BrowserWin
+ {
+ GtkWidget *menubar;
+ GtkWidget *file_menu;
++ GtkWidget *view_menu;
++
+ /* GtkWidget *help_menu; */
+
+ bw->menubar = menubar = gtk_menu_bar_new();
+
+ /* FILE MENU */
+- file_menu = Menu_new(menubar, tiny ? "_F" : "_File", FALSE, bw);
+- Menu_add(file_menu, "_New Browser", "<ctrl>N", bw,
++ file_menu = Menu_new(menubar, tiny ? "_F" : _("_File"), FALSE, bw);
++ Menu_add(file_menu, _("_New Window"), "<ctrl>N", bw,
+ a_Commands_new_callback, bw);
+- Menu_add(file_menu, "_Open File...", "<ctrl>O", bw,
++#ifndef DISABLE_TABS
++ Menu_add(file_menu, _("New _Tab"), "<ctrl>T", bw,
++ a_Commands_new_tab_callback, bw);
++ Menu_sep(file_menu);
++#endif /* !DISABLE_TABS */
++ Menu_add(file_menu, _("_Open File..."), "<ctrl>O", bw,
+ a_Commands_openfile_callback, bw);
+- Menu_add(file_menu, "Open _URL...", "<ctrl>L", bw,
++ Menu_add(file_menu, _("Open _URL..."), "<ctrl>L", bw,
+ a_Commands_openurl_callback, bw);
+ /*
+- Menu_add(file_menu, "_Preferences", "<ctrl>E", bw,
++ Menu_add(file_menu, _("_Preferences"), "<ctrl>E", bw,
+ a_Commands_prefs_callback, bw);
+ */
+- Menu_add(file_menu, "Close Window", "<ctrl>Q", bw,
++ Menu_add(file_menu, _("Close Window"), "<ctrl>Q", bw,
+ a_Commands_close_callback, bw);
++#ifndef DISABLE_TABS
++ Menu_add(file_menu, _("Close Tab"), "<ctrl>W", bw,
++ a_Commands_close_current_tab_callback, bw);
++#endif /* !DISABLE_TABS */
+ Menu_sep(file_menu);
+- Menu_add(file_menu, "Exit Dillo", "<alt>Q", bw,
++ Menu_add(file_menu, _("Exit Dillo"), "<alt>Q", bw,
+ a_Commands_exit_callback, bw);
+
++ /* VIEW MENU */
++ view_menu = Menu_new(menubar, tiny? "_V" : _("_View"), FALSE, bw);
++#ifndef DISABLE_TABS
++ Menu_add(view_menu, _("Previous tab"), "<ctrl>comma", bw,
++ a_Commands_tab_prev_callback, bw);
++ Menu_add(view_menu, _("Next tab"), "<ctrl>period", bw,
++ a_Commands_tab_next_callback, bw);
++ Menu_sep(view_menu);
++#endif /* !DISABLE_TABS */
++ Menu_add(view_menu, _("_Options..."), NULL, bw,
++ a_Commands_prefs_callback, bw);
++
+ /* HELP MENU
+- help_menu = Menu_new(menubar, "_Help", TRUE, bw);
+- Menu_add(help_menu, "Dillo _Home", NULL, bw,
++ help_menu = Menu_new(menubar, _("_Help"), TRUE, bw);
++ Menu_add(help_menu, _("Dillo _Home"), NULL, bw,
+ a_Commands_helphome_callback, bw);
+ */
+ return menubar;
+@@ -195,28 +225,149 @@ GtkWidget *a_Menu_popup_op_new(BrowserWi
+
+ menu = gtk_menu_new();
+ Menu_sep(menu);
+- Menu_add_title(menu, "PAGE OPTIONS");
++ Menu_add_title(menu, _("PAGE OPTIONS"));
+ Menu_sep(menu);
+- Menu_add(menu, "View page Source", NULL, bw,
++ if(prefs.show_popup_navigation) {
++ bw->back_op_menu_button = Menu_add(menu, _("Back"), NULL, bw,
++ a_Commands_back_callback, bw);
++ bw->forw_op_menu_button = Menu_add(menu, _("Forward"), NULL, bw,
++ a_Commands_forw_callback, bw);
++ bw->stop_op_menu_button = Menu_add(menu, _("Stop"), NULL, bw,
++ a_Commands_stop_callback, bw);
++ Menu_add(menu, _("_Reload"), "<ctrl>r", bw,
++ a_Commands_reload_callback, bw);
++ Menu_sep(menu);
++ }
++ Menu_add(menu, _("View page So_urce"), NULL, bw,
+ a_Commands_viewsource_callback, bw);
+- bw->viewbugs_menuitem = Menu_add(menu, "View page Bugs", NULL,bw, NULL,bw);
+-
+- Menu_add(menu, "Bookmark this page", NULL, bw,
++ bw->viewbugs_menuitem = Menu_add(menu, _("View page Bugs"), NULL,bw, NULL,bw);
++ Menu_add(menu, _("_Bookmark this Page"), NULL, bw,
+ a_Commands_addbm_callback, bw);
+ Menu_sep(menu);
+- Menu_add(menu, "_Find Text", "<ctrl>F", bw,
++ Menu_add(menu, _("Duplicate this Page"), "<alt>n", bw,
++ a_Commands_duplicate_callback, bw);
++#ifndef DISABLE_TABS
++ Menu_add(menu, _("Duplicate this tab"), "<alt>t", bw,
++ a_Commands_duplicate_tab_callback, bw);
++#endif /* !DISABLE_TABS */
++ Menu_sep(menu);
++ Menu_add(menu, _("_Find Text"), "<ctrl>F", bw,
+ a_Commands_findtext_callback, bw);
+
+- bw->pagemarks_menuitem = Menu_add(menu, "Jump to...", NULL, bw, NULL, bw);
++ bw->pagemarks_menuitem = Menu_add(menu, _("Jump to..."), NULL, bw, NULL, NULL);
++ bw->frame_menuitem = Menu_add(menu, _("This Frame..."), NULL, bw, NULL, NULL);
++ bw->frameset_menuitem = Menu_add(menu, _("This Frameset..."), NULL, bw, NULL, NULL);
+
+ Menu_sep(menu);
+- Menu_add(menu, "Save page As...", NULL, bw,
++ Menu_add(menu, _("Save Page As..."), "<ctrl>s", bw,
+ a_Commands_save_callback, bw);
+
+ return menu;
+ }
+
+ /*
++ * Make a new frame menu and return it
++ */
++GtkWidget *a_Menu_popup_of_new(DilloDoc *dd)
++{
++ GtkWidget *menu;
++
++ menu = gtk_menu_new();
++ Menu_sep(menu);
++ Menu_add_title(menu, _("FRAME OPTIONS"));
++ Menu_sep(menu);
++ if (prefs.show_popup_navigation) {
++ dd->bw->back_op_menu_button = Menu_add(menu, _("Back"), NULL, dd->bw,
++ a_Commands_back_callback, dd->bw);
++ dd->bw->forw_op_menu_button = Menu_add(menu, _("Forward"), NULL, dd->bw,
++ a_Commands_forw_callback, dd->bw);
++ dd->bw->stop_op_menu_button = Menu_add(menu, _("Stop"), NULL, dd->bw,
++ a_Commands_stop_callback, dd->bw);
++ Menu_add(menu, _("_Reload"), NULL, dd->bw,
++ a_Commands_reload_callback, dd->bw);
++ Menu_sep(menu);
++ }
++ Menu_add(menu, _("View frame Source"), NULL, dd->bw,
++ a_Commands_viewsource_doc_callback, dd);
++ Menu_add(menu, _("Bookmark this Frame"), NULL, dd->bw,
++ a_Commands_addbm_doc_callback, dd);
++ Menu_add(menu, _("Reload this Frame"), NULL, dd->bw,
++ a_Commands_reload_doc_callback, dd);
++ Menu_sep(menu);
++ Menu_add(menu, _("Show only this Frame"), NULL, dd->bw,
++ a_Commands_showonly_doc_callback, dd);
++ Menu_add(menu, _("Open Frame in new Window"), NULL, dd->bw,
++ a_Commands_open_link_nw_callback, dd->bw);
++#ifndef DISABLE_TABS
++ Menu_add(menu, _("Open Frame in new Tab"), NULL, dd->bw,
++ a_Commands_open_link_nw_tab_callback, dd->bw);
++#endif /* !DISABLE_TABS */
++ Menu_sep(menu);
++ Menu_add(menu, _("_Find Text in this Frame..."), NULL, dd->bw,
++ a_Commands_findtext_doc_callback, dd);
++ Menu_sep(menu);
++ Menu_add(menu, _("Save Frame As..."), NULL, dd->bw,
++ a_Commands_save_doc_callback, dd);
++
++ return menu;
++}
++
++/*
++ * Make a new frameset menu and return it
++ *
++ */
++GtkWidget *a_Menu_popup_ofs_new(DilloDoc *dd)
++{
++ GtkWidget *frameset_menu;
++
++ frameset_menu = gtk_menu_new();
++ Menu_sep(frameset_menu);
++ Menu_add_title(frameset_menu, _("FRAMESET OPTIONS"));
++ Menu_sep(frameset_menu);
++ Menu_add(frameset_menu, _("View Frameset Source"), NULL, dd->bw,
++ a_Commands_viewsource_doc_callback, dd->parent);
++ Menu_add(frameset_menu, _("Bookmark this Frameset"), NULL, dd->bw,
++ a_Commands_addbm_doc_callback, dd->parent);
++ Menu_add(frameset_menu, _("Reload this Frameset"), NULL, dd->bw,
++ a_Commands_reload_doc_callback, dd->parent);
++ Menu_sep(frameset_menu);
++ Menu_add(frameset_menu, _("Show only this Frameset"), NULL, dd->bw,
++ a_Commands_showonly_doc_callback, dd->parent);
++ Menu_sep(frameset_menu);
++ Menu_add(frameset_menu, _("_Find Text in this Frameset..."), NULL, dd->bw,
++ a_Commands_findtext_doc_callback, dd->parent);
++ Menu_sep(frameset_menu);
++ Menu_add(frameset_menu, _("Save Frame As..."), NULL, dd->bw,
++ a_Commands_save_doc_callback, dd->parent);
++
++ return frameset_menu;
++}
++
++
++#ifndef DISABLE_TABS
++/*
++ * Make a new popup menu for when the mouse is over a tab
++ */
++GtkWidget *a_Menu_popup_tab_new(DilloDoc *dd)
++{
++ GtkWidget *menu;
++
++ menu = gtk_menu_new();
++ Menu_sep(menu);
++ Menu_add_title(menu, _("TAB OPTIONS"));
++ Menu_sep(menu);
++ Menu_add(menu, _("Close Tab"), NULL, dd->bw,
++ a_Commands_close_tab_callback, dd);
++ Menu_add(menu, _("New Tab"), NULL, dd->bw,
++ a_Commands_new_tab_callback, dd->bw);
++ Menu_add(menu, _("Reload Tab"), NULL, dd->bw,
++ a_Commands_reload_doc_callback, dd);
++ return menu;
++}
++
++#endif /* !DISABLE_TABS */
++
++/*
+ * Set the popup's primary DilloUrl
+ */
+ void a_Menu_popup_set_url(BrowserWindow *bw, const DilloUrl *url)
+@@ -267,8 +418,8 @@ Menu_popup_history_select_callback(GtkWi
+ BrowserWindow *bw = data;
+
+ idx = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT (widget), "nav_idx"));
+- if (idx >= 0 && idx < a_Nav_stack_size(bw)) {
+- a_Interface_msg(bw, "%s", URL_STR_(a_History_get_url(NAV_IDX(bw,idx))));
++ if (idx >= 0 && idx < a_Nav_stack_size(bw->dd)) {
++ a_Interface_msg(bw, "%s", URL_STR_(a_History_get_url(NAV_IDX(bw->dd,idx))));
+ bw->status_is_link = 1;
+ }
+ }
+@@ -284,6 +435,15 @@ Menu_popup_history_deselect_callback(Gtk
+ }
+
+ /*
++ * Called when the user selects "Copy Link Location" in the link menu.
++ */
++void a_Menu_popup_select_url_callback(GtkWidget *widget, gpointer client_data)
++{
++ BrowserWindow *bw = (BrowserWindow *)client_data;
++ a_Selection_set_selection(widget, URL_STR(a_Menu_popup_get_url(bw)));
++}
++
++/*
+ * Make a new popup menu for history browsing
+ * direction: {backward = -1, forward = 1}
+ */
+@@ -292,31 +452,39 @@ GtkWidget *a_Menu_popup_history_new(Brow
+ int i;
+ GtkWidget *menu, *menu_item;
+ GString *text = g_string_sized_new(128);
++ gchar *text_enc;
+
+ menu = a_Gtk_ext_menu_new();
+ Menu_sep(menu);
+ if (direction>0) {
+- Menu_add_title(menu, "FOLLOWING PAGES");
+- i = a_Nav_stack_ptr(bw) + 1;
++ Menu_add_title(menu, _("FOLLOWING PAGES"));
++ i = a_Nav_stack_ptr(bw->dd) + 1;
+ } else {
+- Menu_add_title(menu, "PREVIOUS PAGES");
+- i = a_Nav_stack_ptr(bw) - 1;
++ Menu_add_title(menu, _("PREVIOUS PAGES"));
++ i = a_Nav_stack_ptr(bw->dd) - 1;
+ }
+ Menu_sep(menu);
+
+- for ( ; i >= 0 && i < a_Nav_stack_size(bw); i+=direction ) {
+- if (a_History_get_title(NAV_IDX(bw,i))) {
+- g_string_assign(text, a_History_get_title(NAV_IDX(bw,i)));
++ for ( ; i >= 0 && i < a_Nav_stack_size(bw->dd); i+=direction ) {
++ if (a_History_get_title(NAV_IDX(bw->dd,i))) {
++ g_string_assign(text, a_History_get_title(NAV_IDX(bw->dd,i)));
+ } else {
+- g_string_assign(text, URL_STR(a_History_get_url(NAV_IDX(bw,i))));
++ g_string_assign(text, URL_STR(a_History_get_url(NAV_IDX(bw->dd,i))));
+ }
+ if ( text->len > 64 ) {
+- g_string_truncate(text, 64);
++ int max_len = 64;
++ while (IS_UTF8_NON_FIRST_CHAR(text->str[max_len - 1]))
++ max_len--;
++ if (IS_UTF8_FIRST_CHAR(text->str[max_len - 1]))
++ max_len--;
++ g_string_truncate(text, max_len);
+ g_string_append(text, "...");
+ }
+- menu_item = a_Gtk_ext_menu_item_new_with_label(text->str);
++ text_enc = a_I18n_DW_CHARSET_from_DILLO_CHARSET(text->str, text->len);
++ menu_item = a_Gtk_ext_menu_item_new_with_label(text_enc);
+ gtk_menu_append(GTK_MENU(menu), menu_item);
+ gtk_widget_show(menu_item);
++ g_free(text_enc);
+ /* attach the nav_stack index to the menu item */
+ gtk_object_set_data(GTK_OBJECT (menu_item), "nav_idx",
+ GINT_TO_POINTER(i));
+@@ -360,23 +528,29 @@ GtkWidget *a_Menu_popup_ol_new(BrowserWi
+
+ menu = gtk_menu_new();
+ Menu_sep(menu);
+- Menu_add_title(menu, "LINK OPTIONS");
++ Menu_add_title(menu, _("LINK OPTIONS"));
+ Menu_sep(menu);
+- Menu_add(menu, "Open Link in New Window", NULL, bw,
++ Menu_add(menu, _("Open Link in New Window"), NULL, bw,
+ a_Commands_open_link_nw_callback, bw);
+- Menu_add(menu, "Bookmark this Link", NULL, bw,
+- a_Commands_addbm_callback, bw);
+-
+- copy = Menu_add(menu, "Copy Link location", NULL, bw,
+- a_Commands_select_popup_url_callback, bw);
++#ifndef DISABLE_TABS
++ Menu_add(menu, _("Open Link in New Tab"), NULL, bw,
++ a_Commands_open_link_nw_tab_callback, bw);
++#endif /* !DISABLE_TABS */
++ Menu_add(menu, _("Open Link"), NULL, bw,
++ a_Commands_open_link_callback, bw);
++ Menu_sep(menu);
++ Menu_add(menu, _("Bookmark this Link"), NULL, bw,
++ a_Commands_addbm_link_callback, bw);
++ copy = Menu_add(menu, _("Copy Link location"), NULL, bw,
++ a_Menu_popup_select_url_callback, bw);
+ a_Selection_init_selection(copy);
+
+ Menu_sep(menu);
+- Menu_add(menu, "Save Link As...", NULL, bw,
++ Menu_add(menu, _("Save Link As..."), NULL, bw,
+ a_Commands_save_link_callback, bw);
+
+ Menu_sep(menu);
+- menuitem = Menu_add(menu, "Image Menu...", NULL, bw, NULL, bw);
++ menuitem = Menu_add(menu, _("Image Menu..."), NULL, bw, NULL, bw);
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem),
+ bw->menu_popup.over_image);
+ bw->menu_popup.ol_oi_submenu = menuitem;
+@@ -394,20 +568,27 @@ GtkWidget *a_Menu_popup_oi_new (BrowserW
+
+ menu = gtk_menu_new();
+ Menu_sep(menu);
+- Menu_add_title(menu, "IMAGE OPTIONS");
++ Menu_add_title(menu, _("IMAGE OPTIONS"));
+ Menu_sep(menu);
+- Menu_add(menu, "Isolate Image", NULL, bw,
++ Menu_add(menu, _("Isolate Image"), NULL, bw,
+ a_Commands_open_link_callback, bw);
+- Menu_add(menu, "Open Image in New Window", NULL, bw,
++ Menu_add(menu, _("Open Image in New Window"), NULL, bw,
+ a_Commands_open_link_nw_callback, bw);
+- Menu_add(menu, "Bookmark this Image", NULL, bw,
+- a_Commands_addbm_callback, bw);
+- copy = Menu_add(menu, "Copy Image location", NULL, bw,
+- a_Commands_select_popup_url_callback, bw);
++#ifndef DISABLE_TABS
++ Menu_add(menu, _("Open Image in New Tab"), NULL, bw,
++ a_Commands_open_link_nw_tab_callback, bw);
++#endif /* !DISABLE_TABS */
++ Menu_add(menu, _("Open Image"), NULL, bw,
++ a_Commands_open_link_callback, bw);
++ Menu_sep(menu);
++ Menu_add(menu, _("Bookmark this Image"), NULL, bw,
++ a_Commands_addbm_link_callback, bw);
++ copy = Menu_add(menu, _("Copy Image location"), NULL, bw,
++ a_Menu_popup_select_url_callback, bw);
+ a_Selection_init_selection(copy);
+
+ Menu_sep(menu);
+- Menu_add(menu, "Save Image As...", NULL, bw,
++ Menu_add(menu, _("Save Image As..."), NULL, bw,
+ a_Commands_save_link_callback, bw);
+ return menu;
+ }
+@@ -421,14 +602,14 @@ GtkWidget *a_Menu_popup_ob_new (BrowserW
+
+ menu = gtk_menu_new();
+ Menu_sep(menu);
+- Menu_add_title(menu, "BUG METER OPTIONS");
++ Menu_add_title(menu, _("BUG METER OPTIONS"));
+ Menu_sep(menu);
+- Menu_add(menu, "Validate URL with W3C", NULL, bw,
++ Menu_add(menu, _("Validate URL with W3C"), NULL, bw,
+ a_Commands_ob_w3c_callback, bw);
+- Menu_add(menu, "Validate URL with WDG", NULL, bw,
++ Menu_add(menu, _("Validate URL with WDG"), NULL, bw,
+ a_Commands_ob_wdg_callback, bw);
+ Menu_sep(menu);
+- Menu_add(menu, "About Bug Meter...", NULL, bw,
++ Menu_add(menu, _("About Bug Meter..."), NULL, bw,
+ a_Commands_ob_info_callback, bw);
+ return menu;
+ }
+@@ -455,28 +636,46 @@ void a_Menu_popup_ol_show_oi(BrowserWind
+ static void Menu_pagemarks_goto_pagemark(GtkWidget *widget,
+ gpointer client_data)
+ {
+- BrowserWindow *bw = (BrowserWindow *) client_data;
++ DilloDoc *dd = (DilloDoc *) client_data;
+ char anchor[32];
+
+ g_snprintf (anchor, 32, "#%ld", (long int)widget);
+- a_Dw_gtk_scrolled_window_set_anchor(GTK_DW_SCROLLED_WINDOW(bw->docwin),
++ a_Dw_gtk_scrolled_window_set_anchor(GTK_DW_SCROLLED_WINDOW(dd->docwin),
+ anchor);
+ }
+
+ /*
+- * Deallocate the memory used by a pagemarks menu and create a new one
++ * Deallocate memory used by a pagemark menu
+ */
+-void a_Menu_pagemarks_new(BrowserWindow *bw)
++void a_Menu_pagemarks_destroy(DilloDoc *dd)
+ {
+- gtk_widget_set_sensitive(bw->pagemarks_menuitem, FALSE);
+-
+- if (bw->pagemarks_menu)
+- gtk_widget_destroy(bw->pagemarks_menu);
+- bw->pagemarks_menu = gtk_menu_new();
+- bw->pagemarks_last = NULL;
++ /* set pagemarks menu insensitive if this is the current tab */
++ if(dd->bw->dd == dd)
++ gtk_widget_set_sensitive(dd->bw->pagemarks_menuitem, FALSE);
++ if (GTK_IS_WIDGET(dd->pagemarks_menu))
++ {
++ gtk_object_unref(GTK_OBJECT(dd->pagemarks_menu));
++ dd->pagemarks_menu = NULL;
++ dd->pagemarks_last = NULL;
++ }
++}
+
+- gtk_menu_item_set_submenu(GTK_MENU_ITEM(bw->pagemarks_menuitem),
+- bw->pagemarks_menu);
++/*
++ * Deallocate the memory used by a pagemarks menu and create a new one
++ */
++void a_Menu_pagemarks_new(DilloDoc *dd)
++{
++ a_Menu_pagemarks_destroy(dd);
++ dd->pagemarks_menu = gtk_menu_new();
++ /* add a reference to the object, otherwise it will be destroyed
++ * when the document (tab) is switched */
++ gtk_object_ref(GTK_OBJECT(dd->pagemarks_menu));
++ dd->pagemarks_last = NULL;
++
++ /* add to bw's menu only if this is the current tab */
++ if(dd->bw->dd == dd)
++ gtk_menu_item_set_submenu(GTK_MENU_ITEM(dd->bw->pagemarks_menuitem),
++ dd->pagemarks_menu);
+ }
+
+ /*
+@@ -484,43 +683,61 @@ void a_Menu_pagemarks_new(BrowserWindow
+ * The text can be set only at the closing H tag.
+ * level is the level of the heading (1-6).
+ */
+-void a_Menu_pagemarks_add(BrowserWindow *bw, void *page, void *style,
++void a_Menu_pagemarks_add(DilloDoc *dd, void *page, void *style,
+ gint level)
+ {
+ char anchor[32], spaces[32], name[32];
+
+- gtk_widget_set_sensitive(bw->pagemarks_menuitem, TRUE);
++ /* set pagemarks menu sensitive if this is the current tab */
++ if(dd->bw->dd == dd)
++ gtk_widget_set_sensitive(dd->bw->pagemarks_menuitem, TRUE);
+ g_snprintf(spaces, 32, "%*s", 3 * (level - 1), "");
+- bw->pagemarks_last = Menu_add(bw->pagemarks_menu, spaces, NULL, bw,
+- Menu_pagemarks_goto_pagemark, bw);
+- g_snprintf(anchor, 32, "#%ld", (glong)(bw->pagemarks_last));
++ dd->pagemarks_last = gtk_menu_item_new_with_label(spaces);
++ gtk_menu_append(GTK_MENU(dd->pagemarks_menu),dd->pagemarks_last);
++ gtk_widget_show(dd->pagemarks_last);
++ gtk_signal_connect(GTK_OBJECT(dd->pagemarks_last), "activate",
++ (GtkSignalFunc) Menu_pagemarks_goto_pagemark, dd);
++ /* was:
++ * Menu_add(dd->pagemarks_menu, spaces, NULL, dd,
++ * Pagemark_goto_pagemark, dd);
++ * but Menu_add is a private function for menu.c so... */
++ g_snprintf(anchor, 32, "#%ld", (glong)(dd->pagemarks_last));
+ a_Dw_page_add_anchor(page, anchor, style);
+- gtk_signal_connect (GTK_OBJECT (bw->pagemarks_last), "select",
++ gtk_signal_connect (GTK_OBJECT (dd->pagemarks_last), "select",
+ GTK_SIGNAL_FUNC (a_Interface_scroll_popup), NULL);
+ g_snprintf(name, 32, "dilloHeading%d", level);
+- gtk_widget_set_name(bw->pagemarks_last, name);
++ gtk_widget_set_name(dd->pagemarks_last, name);
+ }
+
+ /*
+ * Set the text for the last created pagemark.
+ */
+-void a_Menu_pagemarks_set_text(BrowserWindow *bw, const char *str)
++void a_Menu_pagemarks_set_text(DilloDoc *dd, const char *str)
+ {
+ GString *text;
+ GtkWidget *child;
++ char *label_text;
+
+ /* Avoid problems with lonely closing tags and nested headings */
+- if ( bw->pagemarks_last &&
+- (child = GTK_BIN (bw->pagemarks_last)->child) &&
++ if ( dd->pagemarks_last &&
++ (child = GTK_BIN (dd->pagemarks_last)->child) &&
+ GTK_IS_LABEL (child) ) {
+ text = g_string_new(GTK_LABEL(child)->label);
+ g_string_append(text, str);
+ if ( text->len > 64 ) {
+- g_string_truncate(text, 64);
++ int max_len = 64;
++ while (IS_UTF8_NON_FIRST_CHAR(text->str[max_len - 1]))
++ max_len--;
++ if (IS_UTF8_FIRST_CHAR(text->str[max_len - 1]))
++ max_len--;
++ g_string_truncate(text, max_len);
+ g_string_append(text, "...");
+ }
+- gtk_label_set_text(GTK_LABEL (child), text->str);
++ label_text = a_I18n_string_check(text->str, DILLO_CHARSET);
++ a_I18n_gtk_label_set_text(GTK_LABEL (child), label_text);
++ g_free(label_text);
+ g_string_free(text, 1);
+- bw->pagemarks_last = NULL;
++ dd->pagemarks_last = NULL;
+ }
+ }
++
+diff -pruN dillo-0.8.6/src/menu.h dillo-0.8.6-i18n-misc-20060709/src/menu.h
+--- dillo-0.8.6/src/menu.h 2005-10-28 01:20:13.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/menu.h 2006-05-16 01:21:09.000000000 +0900
+@@ -8,7 +8,12 @@ GtkWidget *a_Menu_popup_op_new (BrowserW
+ GtkWidget *a_Menu_popup_ol_new (BrowserWindow *bw);
+ GtkWidget *a_Menu_popup_oi_new (BrowserWindow *bw);
+ GtkWidget *a_Menu_popup_ob_new (BrowserWindow *bw);
++GtkWidget *a_Menu_popup_of_new (DilloDoc *dd);
++GtkWidget *a_Menu_popup_ofs_new (DilloDoc *dd);
+ GtkWidget *a_Menu_popup_history_new(BrowserWindow *bw, gint direction);
++#ifndef DISABLE_TABS
++GtkWidget *a_Menu_popup_tab_new(DilloDoc *dd);
++#endif
+ void a_Menu_popup_ol_show_oi(BrowserWindow *bw, gboolean show);
+ void a_Menu_popup_set_url(BrowserWindow *bw, const DilloUrl *url);
+ void a_Menu_popup_set_url2(BrowserWindow *bw, const DilloUrl *url);
+@@ -16,10 +21,10 @@ void a_Menu_popup_clear_url2(GtkWidget *
+
+ DilloUrl *a_Menu_popup_get_url(BrowserWindow *bw);
+
+-void a_Menu_pagemarks_new (BrowserWindow *bw);
+-void a_Menu_pagemarks_destroy (BrowserWindow *bw);
+-void a_Menu_pagemarks_add(BrowserWindow *bw, void *page, void *style,
++void a_Menu_pagemarks_new (DilloDoc *dd);
++void a_Menu_pagemarks_destroy (DilloDoc *dd);
++void a_Menu_pagemarks_add(DilloDoc *dd, void *page, void *style,
+ gint level);
+-void a_Menu_pagemarks_set_text(BrowserWindow *bw, const char *str);
++void a_Menu_pagemarks_set_text(DilloDoc *dd, const char *str);
+
+ #endif /* MENU_H */
+diff -pruN dillo-0.8.6/src/misc.c dillo-0.8.6-i18n-misc-20060709/src/misc.c
+--- dillo-0.8.6/src/misc.c 2006-04-06 05:57:18.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/misc.c 2006-05-16 01:21:09.000000000 +0900
+@@ -10,6 +10,7 @@
+ * (at your option) any later version.
+ */
+
++#include <config.h>
+ #include <glib.h>
+
+ #include <stdio.h>
+@@ -18,8 +19,12 @@
+ #include <string.h>
+ #include <ctype.h>
+
++#include "intl.h"
+ #include "msg.h"
+ #include "misc.h"
++#include "prefs.h"
++#include "i18n.h"
++
+
+ /*
+ * Prepend the users home-dir to 'file' string i.e,
+@@ -116,7 +121,7 @@ gchar *a_Misc_expand_tabs(const char *st
+ int len, i, j, pos, old_pos;
+ char *val;
+
+- if ( (len = strlen(str)) ) {
++ if (str && (len = strlen(str)) ) {
+ for (pos = 0, i = 0; i < len; i++) {
+ if (str[i] == '\t') {
+ /* Fill with whitespaces until the next tab. */
+@@ -385,3 +390,184 @@ gchar *a_Misc_encode_base64(const gchar
+ out[i] = '\0';
+ return out;
+ }
++
++/* insert a space between multibyte chars. */
++gchar *a_Misc_add_space(gchar *str){
++ char *encStr, *parseStr;
++ int buf_index = 0;
++ int parse_index = 0;
++ int wordnum = 0;
++ int len = strlen(str);
++ if(len == 0)
++ return NULL;
++ //g_print("SOURCE[%3d]: %s\n",len, str);
++ parseStr = g_malloc0(len * 2);
++ while(buf_index < len){
++ if ((wordnum = a_I18n_mblen(&str[buf_index])) == 0){
++ while(isprint(str[buf_index + wordnum]))
++ wordnum++;
++ }
++ if(wordnum == 0){
++ g_warning("Findtext_add_space() invalid char.\n");
++ //parseStr[parse_index] = str[buf_index];
++ buf_index++;
++ } else {
++ strncpy(&parseStr[parse_index], &str[buf_index], wordnum);
++ parse_index += wordnum;
++ buf_index += wordnum;
++ parseStr[parse_index] = ' ';
++ }
++ parse_index++;
++ }
++ parseStr[parse_index - ((wordnum == 0)?0:1)] = 0;
++ encStr = g_strndup(parseStr,strlen(parseStr));
++ //g_print("PARSE[%3d]: %s\n",strlen(parseStr), parseStr);
++ g_free(parseStr);
++ return encStr;
++}
++
++#ifndef DISABLE_TABS
++
++/*
++ * (adapted from Galeon's misc_string_shorten_name())
++ * try to shorten a string to target_length or less
++ * this is quite language-specific, ie. it will not work
++ * with non indo-european languages
++ *
++ * minimum returned string length is 1, even if target_length
++ * is set to a lower value
++ *
++ * caller has to free the returned string
++ */
++gchar *
++a_Misc_string_compress(const gchar *input, gint target_length)
++{
++ gint i, j, length;
++ gchar *name, **common_prefixes = prefs.compress_common_prefixes_vec;
++ gchar *shortened_name;
++ char c;
++
++ /* it does not make sense to compress a string into nothing... */
++ if (target_length < 1)
++ target_length = 1;
++
++ if (input == NULL)
++ return (a_Misc_string_shorten(g_strdup(_("Untitled")),target_length));
++
++ /* copy and clean name */
++ name = g_strdup (input);
++ g_strstrip (name);
++ length = strlen (name);
++
++ /* remove common prefixes from string */
++ if (common_prefixes)
++ for(i=0; common_prefixes[i]; ++i)
++ if(strncasecmp(name, common_prefixes[i],strlen(common_prefixes[i])) == 0) {
++ length -= strlen(common_prefixes[i]);
++ memmove(name, name + strlen(common_prefixes[i]), length + 1);
++ }
++
++ /* remove trailing whitespace, if any */
++ g_strchug(name);
++
++ /* remove vowels from string */
++ for (i = length - 1, j = length - 1; i >= 0; i--) {
++ c = name[i];
++ /* keep the letter if the string is short enough
++ * already, if the letter is at the beginning of a
++ * word, or if it's not a lowercase vowel */
++ if (length <= target_length || i == 0 ||
++ (i > 0 && name[i - 1] == ' ') ||
++ /* prefs.compress_vowels contains those characters
++ that can be skipped without making a word totally
++ irrecognizable. In most languages, those are the
++ vowels (with and without accents) */
++ !strchr (prefs.compress_vowels, c))
++ {
++ name[j] = c;
++ j--;
++ }
++ else
++ {
++ length--;
++ }
++ }
++ /* shift */
++ memmove(name, name + j + 1, length + 1);
++
++ /* short enough yet? */
++ if (length <= target_length)
++ {
++ return name;
++ }
++
++ /* no - try chopping out whole words */
++ for (i = target_length; i > 0; i--) {
++ if (ispunct((int) name[i]) || isspace((int) name[i]))
++ {
++ while (ispunct((int) name[i]) || isspace((int) name[i]))
++ {
++ i--;
++ }
++ /* this will do */
++ name[i + 1] = '\0';
++ g_strchomp (name);
++ return name;
++ }
++ }
++
++ /* still too long - use shortening on the compressed string */
++ shortened_name = a_Misc_string_shorten(name, target_length);
++ g_free(name);
++ return shortened_name;
++}
++
++/*
++ * shorten a string to no more than target_length characters
++ * by replacing part of the middle of the string by
++ * three ellipsis ('...').
++ *
++ * minimum returned string length is 3, even if target_length
++ * is set to a lower value.
++ *
++ * caller must free returned string
++ */
++gchar *
++a_Misc_string_shorten(const gchar *input, gint target_length)
++{
++ gchar *output;
++ gint actual_length, first_length, second_length;
++
++ if (!input) return NULL;
++
++ /* target length can not be smaller than 3 */
++ if (target_length < 3)
++ target_length = 3;
++
++ actual_length = strlen (input);
++
++ /* if the string is already short enough, or if it's too short for
++ * us to shorten it, return a new copy */
++ if (actual_length <= target_length ||
++ actual_length <= 3)
++ return g_strdup (input);
++
++ /* allocate new string */
++ output = g_new (gchar, target_length + 1);
++
++ /* calc lengths to take from beginning and ending of input */
++ second_length = (target_length - 3) / 2;
++ if(second_length%2 != 0) second_length++;
++ first_length = target_length - 3 - second_length;
++
++ /* create string */
++ strncpy (output, input, first_length);
++ strncpy (output + first_length, "...", 3);
++ strncpy (output + first_length + 3,
++ input + actual_length - second_length, second_length);
++ output[target_length] = '\0';
++
++ return output;
++}
++
++#endif /* !DISABLE_TABS */
+diff -pruN dillo-0.8.6/src/misc.h dillo-0.8.6-i18n-misc-20060709/src/misc.h
+--- dillo-0.8.6/src/misc.h 2006-04-05 04:51:06.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/misc.h 2006-05-16 01:21:09.000000000 +0900
+@@ -15,6 +15,11 @@ gint a_Misc_get_content_type_from_data(v
+ int a_Misc_content_type_check(const char *EntryType, const char *DetectedType);
+ gint a_Misc_parse_geometry(gchar *geom, gint *x, gint *y, gint *w, gint *h);
+ gchar *a_Misc_encode_base64(const gchar *in);
++gchar *a_Misc_add_space(gchar *str);
++#ifndef DISABLE_TABS
++gchar *a_Misc_string_compress(const gchar *input, gint target_length);
++gchar *a_Misc_string_shorten(const gchar *input, gint target_length);
++#endif /* !DISABLE_TABS */
+
+ /* Return a NULL-terminated string containing the characters from p1 to p2. */
+ #define a_Misc_strpdup(s, p1, p2) g_strndup((s) + (p1), (p2) - (p1))
+diff -pruN dillo-0.8.6/src/msg.h dillo-0.8.6-i18n-misc-20060709/src/msg.h
+--- dillo-0.8.6/src/msg.h 2005-10-28 01:20:13.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/msg.h 2006-05-16 01:21:08.000000000 +0900
+@@ -22,6 +22,10 @@
+ Html_msg(html, fmt); \
+ } G_STMT_END
+
+-#define MSG_HTTP(fmt...) g_print("HTTP warning: " fmt)
++#define MSG_HTTP(fmt...) \
++ G_STMT_START { \
++ g_print(_("HTTP warning: ")); \
++ g_print(fmt); \
++ } G_STMT_END
+
+ #endif /* __MSG_H__ */
+diff -pruN dillo-0.8.6/src/nav.c dillo-0.8.6-i18n-misc-20060709/src/nav.c
+--- dillo-0.8.6/src/nav.c 2006-01-03 03:17:23.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/nav.c 2006-05-16 01:21:09.000000000 +0900
+@@ -12,17 +12,21 @@
+
+ /* Support for a navigation stack */
+
++#include <config.h>
+ #include <stdio.h>
+ #include <gtk/gtk.h>
++#include "intl.h"
+ #include "msg.h"
+ #include "list.h"
+ #include "nav.h"
+ #include "history.h"
+ #include "web.h"
++#include "doc.h"
+ #include "menu.h"
+ #include "interface.h"
+ #include "dw_gtk_scrolled_window.h"
+ #include "prefs.h"
++#include "commands.h"
+ #include "capi.h"
+
+ /* #define DEBUG_LEVEL 3 */
+@@ -31,29 +35,29 @@
+ /*
+ * Forward declarations
+ */
+-static void Nav_reload(BrowserWindow *bw);
++static void Nav_reload(DilloDoc *dd);
+
+
+ /*
+ * Initialize the navigation structure with safe values
+ */
+-void a_Nav_init(BrowserWindow *bw)
++void a_Nav_init(DilloDoc *dd)
+ {
+- bw->nav_stack_size = 0;
+- bw->nav_stack_size_max = 16;
+- bw->nav_stack = NULL;
+- bw->nav_stack_ptr = -1;
+- bw->nav_expecting = FALSE;
+- bw->nav_expect_url = NULL;
++ dd->nav_stack_size = 0;
++ dd->nav_stack_size_max = 16;
++ dd->nav_stack = NULL;
++ dd->nav_stack_ptr = -1;
++ dd->nav_expecting = FALSE;
++ dd->nav_expect_url = NULL;
+ }
+
+ /*
+ * Free memory used by this module
+ */
+-void a_Nav_free(BrowserWindow *bw)
++void a_Nav_free(DilloDoc *dd)
+ {
+- a_Nav_cancel_expect(bw);
+- g_free(bw->nav_stack);
++ a_Nav_cancel_expect(dd);
++ g_free(dd->nav_stack);
+ }
+
+
+@@ -62,79 +66,79 @@ void a_Nav_free(BrowserWindow *bw)
+ /*
+ * Return current nav_stack pointer [0 based; -1 = empty]
+ */
+-gint a_Nav_stack_ptr(BrowserWindow *bw)
++gint a_Nav_stack_ptr(DilloDoc *dd)
+ {
+- return bw->nav_stack_ptr;
++ return dd->nav_stack_ptr;
+ }
+
+ /*
+ * Move the nav_stack pointer
+ */
+-static void Nav_stack_move_ptr(BrowserWindow *bw, gint offset)
++static void Nav_stack_move_ptr(DilloDoc *dd, gint offset)
+ {
+ gint nptr;
+
+- g_return_if_fail (bw != NULL);
++ g_return_if_fail (dd != NULL);
+ if (offset != 0) {
+- nptr = bw->nav_stack_ptr + offset;
+- g_return_if_fail (nptr >= 0 && nptr < bw->nav_stack_size);
+- bw->nav_stack_ptr = nptr;
++ nptr = dd->nav_stack_ptr + offset;
++ g_return_if_fail (nptr >= 0 && nptr < dd->nav_stack_size);
++ dd->nav_stack_ptr = nptr;
+ }
+ }
+
+ /*
+ * Return size of nav_stack [1 based]
+ */
+-gint a_Nav_stack_size(BrowserWindow *bw)
++gint a_Nav_stack_size(DilloDoc *dd)
+ {
+- return bw->nav_stack_size;
++ return dd->nav_stack_size;
+ }
+
+ /*
+ * Add an URL-index in the navigation stack.
+ */
+-static void Nav_stack_add(BrowserWindow *bw, gint idx)
++static void Nav_stack_add(DilloDoc *dd, gint idx)
+ {
+- g_return_if_fail (bw != NULL);
++ g_return_if_fail (dd != NULL);
+
+- ++bw->nav_stack_ptr;
+- if ( bw->nav_stack_ptr == bw->nav_stack_size) {
+- a_List_add(bw->nav_stack, bw->nav_stack_size, bw->nav_stack_size_max);
+- ++bw->nav_stack_size;
++ ++dd->nav_stack_ptr;
++ if ( dd->nav_stack_ptr == dd->nav_stack_size) {
++ a_List_add(dd->nav_stack, dd->nav_stack_size, dd->nav_stack_size_max);
++ ++dd->nav_stack_size;
+ } else {
+- bw->nav_stack_size = bw->nav_stack_ptr + 1;
++ dd->nav_stack_size = dd->nav_stack_ptr + 1;
+ }
+- bw->nav_stack[bw->nav_stack_ptr] = idx;
++ dd->nav_stack[dd->nav_stack_ptr] = idx;
+ }
+
+ /*
+ * Remove an URL-index from the navigation stack.
+ */
+-static void Nav_stack_remove(BrowserWindow *bw, gint idx)
++static void Nav_stack_remove(DilloDoc *dd, gint idx)
+ {
+- gint sz = a_Nav_stack_size(bw);
++ gint sz = a_Nav_stack_size(dd);
+
+- g_return_if_fail (bw != NULL && idx >=0 && idx < sz);
++ g_return_if_fail (dd != NULL && idx >=0 && idx < sz);
+
+ for ( ; idx < sz - 1; ++idx)
+- bw->nav_stack[idx] = bw->nav_stack[idx + 1];
+- if ( bw->nav_stack_ptr == --bw->nav_stack_size )
+- --bw->nav_stack_ptr;
++ dd->nav_stack[idx] = dd->nav_stack[idx + 1];
++ if ( dd->nav_stack_ptr == --dd->nav_stack_size )
++ --dd->nav_stack_ptr;
+ }
+
+ /*
+- * Remove equal adyacent URLs at the top of the stack.
++ * Remove equal adjacent URLs at the top of the stack.
+ * (It may happen with redirections)
+ */
+-static void Nav_stack_clean(BrowserWindow *bw)
++static void Nav_stack_clean(DilloDoc *dd)
+ {
+ gint i;
+
+- g_return_if_fail (bw != NULL);
++ g_return_if_fail (dd != NULL);
+
+- if ((i = a_Nav_stack_size(bw)) >= 2 &&
+- bw->nav_stack[i-2] == bw->nav_stack[i-1])
+- Nav_stack_remove(bw, i - 1);
++ if ((i = a_Nav_stack_size(dd)) >= 2 &&
++ dd->nav_stack[i-2] == dd->nav_stack[i-1])
++ Nav_stack_remove(dd, i - 1);
+ }
+
+
+@@ -146,7 +150,7 @@ static void Nav_stack_clean(BrowserWindo
+ * This function requests the page's root-URL; images and related stuff
+ * are fetched directly by the HTML module.
+ */
+-static void Nav_open_url(BrowserWindow *bw, const DilloUrl *url, gint offset)
++static void Nav_open_url(DilloDoc *dd, const DilloUrl *url, gint offset)
+ {
+ DilloUrl *old_url = NULL;
+ gboolean MustLoad;
+@@ -154,48 +158,49 @@ static void Nav_open_url(BrowserWindow *
+ DilloWeb *Web;
+ gboolean ForceReload = (URL_FLAGS(url) & URL_E2EReload);
+
+- MSG("Nav_open_url: Url=>%s<\n", URL_STR_(url));
++ _MSG("Nav_open_url: Url=>%s<\n", URL_STR_(url));
+
+ /* Get the url of the current page */
+- if ( a_Nav_stack_ptr(bw) != -1 )
+- old_url = a_History_get_url(NAV_TOP(bw));
++ if ( a_Nav_stack_ptr(dd) != -1 )
++ old_url = a_History_get_url(NAV_TOP(dd));
+
+ /* Record current scrolling position
+ * (the strcmp check is necessary because of redirections) */
+ if (old_url &&
+- !strcmp(URL_STR(old_url), a_Interface_get_location_text(bw))) {
++ !strcmp(URL_STR(old_url), a_Interface_get_location_text(dd->bw))) {
+ old_url->scrolling_position_x =
+ a_Dw_gtk_scrolled_window_get_scrolling_position_x(
+- GTK_DW_SCROLLED_WINDOW(bw->docwin));
++ GTK_DW_SCROLLED_WINDOW(dd->docwin));
+ old_url->scrolling_position_y =
+ a_Dw_gtk_scrolled_window_get_scrolling_position_y(
+- GTK_DW_SCROLLED_WINDOW(bw->docwin));
++ GTK_DW_SCROLLED_WINDOW(dd->docwin));
+ }
+
+ /* Update navigation-stack-pointer (offset may be zero) */
+- Nav_stack_move_ptr(bw, offset);
++ Nav_stack_move_ptr(dd, offset);
+
+ /* Page must be reloaded, if old and new url (without anchor) differ */
+ MustLoad = ForceReload || !old_url;
+ if (old_url){
+ MustLoad |= a_Url_cmp(old_url, url);
+- MustLoad |= strcmp(URL_STR(old_url), a_Interface_get_location_text(bw));
++ /* TODO: possible issue with background/(i)frame load, see above */
++ MustLoad |= strcmp(URL_STR(old_url), a_Interface_get_location_text(dd->bw));
+ }
+
+ if ( MustLoad ) {
+- a_Interface_stop(bw);
+- a_Interface_clean(bw);
++ a_Doc_stop(dd);
++ a_Doc_clean(dd);
+
+- a_Menu_pagemarks_new(bw);
++ a_Menu_pagemarks_new(dd);
+
+ Web = a_Web_new(url);
+- Web->bw = bw;
++ Web->dd = dd;
+ Web->flags |= WEB_RootUrl;
+ if ((ClientKey = a_Capi_open_url(Web, NULL, NULL)) != 0) {
+- a_Interface_add_client(bw, ClientKey, 1);
+- a_Interface_add_url(bw, url, WEB_RootUrl);
++ a_Doc_add_client(dd, ClientKey, 1);
++ a_Doc_add_url(dd, url, WEB_RootUrl);
+ }
+- a_Interface_set_cursor(bw, GDK_LEFT_PTR);
++ a_Doc_set_cursor(dd, GDK_LEFT_PTR);
+ }
+
+ /* Jump to #anchor position */
+@@ -203,7 +208,7 @@ static void Nav_open_url(BrowserWindow *
+ /* todo: push on stack */
+ gchar *pf = a_Url_decode_hex_str(URL_FRAGMENT_(url));
+ a_Dw_gtk_scrolled_window_set_anchor(
+- GTK_DW_SCROLLED_WINDOW(bw->docwin), pf);
++ GTK_DW_SCROLLED_WINDOW(dd->docwin), pf);
+ g_free(pf);
+ }
+ }
+@@ -212,155 +217,191 @@ static void Nav_open_url(BrowserWindow *
+ * Cancel the last expected url if present. The responsibility
+ * for actually aborting the data stream remains with the caller.
+ */
+-void a_Nav_cancel_expect(BrowserWindow *bw)
++void a_Nav_cancel_expect(DilloDoc *dd)
+ {
+- if (bw->nav_expecting) {
+- if (bw->nav_expect_url) {
+- a_Url_free(bw->nav_expect_url);
+- bw->nav_expect_url = NULL;
++ if (dd->nav_expecting) {
++ if (dd->nav_expect_url) {
++ a_Url_free(dd->nav_expect_url);
++ dd->nav_expect_url = NULL;
+ }
+- bw->nav_expecting = FALSE;
++ dd->nav_expecting = FALSE;
+ }
+ }
+
+ /*
+ * We have an answer! Set things accordingly.
+ */
+-void a_Nav_expect_done(BrowserWindow *bw)
++void a_Nav_expect_done(DilloDoc *dd)
+ {
+ gint idx;
+ DilloUrl *url;
+
+- g_return_if_fail(bw != NULL);
++ g_return_if_fail(dd != NULL);
+
+- if (bw->nav_expecting) {
+- url = bw->nav_expect_url;
++ if (dd->nav_expecting) {
++ url = dd->nav_expect_url;
+ /* unset E2EReload before adding this url to history */
+- a_Url_set_flags(url, URL_FLAGS(url) & ~URL_E2EReload);
++ a_Url_set_flags(url, (URL_FLAGS(url) & ~URL_E2EReload) | URL_MustCache);
+ idx = a_History_add_url(url);
+- Nav_stack_add(bw, idx);
++ Nav_stack_add(dd, idx);
+
+ a_Url_free(url);
+- bw->nav_expect_url = NULL;
+- bw->nav_expecting = FALSE;
++ dd->nav_expect_url = NULL;
++ dd->nav_expecting = FALSE;
+ }
+- Nav_stack_clean(bw);
+- a_Interface_set_button_sens(bw);
++ Nav_stack_clean(dd);
++ a_Doc_progress_update(dd);
++}
++
++/*
++ * Remove top-URL from the navigation stack.
++ * (Used to remove URLs that force redirection)
++ */
++void a_Nav_remove_top_url(DilloDoc *dd)
++{
++ g_return_if_fail (dd != NULL);
++
++ /* Deallocate the URL a the top of the stack */
++ Nav_stack_remove(dd, a_Nav_stack_size(dd) - 1);
+ }
+
+ /*
+ * Make 'url' the current browsed page (upon data arrival)
+- * - Set bw to expect the URL data
++ * - Set dd to expect the URL data
+ * - Ask the cache to feed back the requested URL (via Nav_open_url)
+ */
+-void a_Nav_push(BrowserWindow *bw, const DilloUrl *url)
++void a_Nav_push(DilloDoc *dd, const DilloUrl *url)
+ {
+- g_return_if_fail (bw != NULL);
++ g_return_if_fail (dd != NULL);
+
+- if (bw->nav_expecting && a_Url_cmp(bw->nav_expect_url, url) == 0 &&
+- URL_STRCAMP_EQ(URL_FRAGMENT_(bw->nav_expect_url), URL_FRAGMENT_(url))) {
++ if (dd->nav_expecting && a_Url_cmp(dd->nav_expect_url, url) == 0 &&
++ URL_STRCAMP_EQ(URL_FRAGMENT_(dd->nav_expect_url), URL_FRAGMENT_(url))
++ && !(URL_FLAGS(url) & URL_RealmAccess)) { //except BASIC Realm
+ /* we're already expecting that url (most probably a double-click) */
+ return;
+ }
+- a_Nav_cancel_expect(bw);
+- bw->nav_expect_url = a_Url_dup(url);
+- bw->nav_expecting = TRUE;
+- Nav_open_url(bw, url, 0);
++ a_Nav_cancel_expect(dd);
++ dd->nav_expect_url = a_Url_dup(url);
++ dd->nav_expecting = TRUE;
++ /* is this is a targeted URL, (re)name the document after it */
++ if(URL_TARGET_(url))
++ a_Doc_set_name(dd, (gchar *) URL_TARGET_(url));
++ Nav_open_url(dd, url, 0);
+ }
+
+ /*
+ * Same as a_Nav_push() but in a new window.
+ */
+-void a_Nav_push_nw(BrowserWindow *bw, const DilloUrl *url)
++void a_Nav_push_nw(DilloDoc *dd, const DilloUrl *url)
+ {
+ gint width, height;
+ BrowserWindow *newbw;
+
+- gdk_window_get_size (bw->main_window->window, &width, &height);
++ gdk_window_get_size (dd->bw->main_window->window, &width, &height);
+ newbw = a_Interface_browser_window_new(width, height, 0);
+- a_Nav_push(newbw, url);
++ a_Nav_push(newbw->dd, url);
+ }
+
+ /*
+ * Wraps a_Nav_push to match 'DwPage->link' function type
+ */
+-void a_Nav_vpush(void *vbw, const DilloUrl *url)
++void a_Nav_vpush(void *vdd, const DilloUrl *url)
+ {
+- a_Nav_push(vbw, url);
++ a_Nav_push(vdd, url);
+ }
+
+ /*
+ * Send the browser back to previous page
+ */
+-void a_Nav_back(BrowserWindow *bw)
++void a_Nav_back(DilloDoc *dd)
+ {
+- gint idx = a_Nav_stack_ptr(bw);
++ gint idx = a_Nav_stack_ptr(dd);
+
+- a_Nav_cancel_expect(bw);
++ a_Nav_cancel_expect(dd);
+ if ( --idx >= 0 ){
+- a_Interface_msg(bw, "");
+- Nav_open_url(bw, a_History_get_url(NAV_IDX(bw,idx)), -1);
++ a_Interface_msg(dd->bw, "");
++ Nav_open_url(dd, a_History_get_url(NAV_IDX(dd,idx)), -1);
+ }
+ }
+
+ /*
+ * Send the browser to next page in the history list
+ */
+-void a_Nav_forw(BrowserWindow *bw)
++void a_Nav_forw(DilloDoc *dd)
+ {
+- gint idx = a_Nav_stack_ptr(bw);
++ gint idx = a_Nav_stack_ptr(dd);
+
+- a_Nav_cancel_expect(bw);
+- if (++idx < a_Nav_stack_size(bw)) {
+- a_Interface_msg(bw, "");
+- Nav_open_url(bw, a_History_get_url(NAV_IDX(bw,idx)), +1);
++ a_Nav_cancel_expect(dd);
++ if (++idx < a_Nav_stack_size(dd)) {
++ a_Interface_msg(dd->bw, "");
++ Nav_open_url(dd, a_History_get_url(NAV_IDX(dd,idx)), +1);
+ }
+ }
+
+ /*
+ * Redirect the browser to the HOME page!
+ */
+-void a_Nav_home(BrowserWindow *bw)
++void a_Nav_home(DilloDoc *dd)
+ {
+- a_Nav_push(bw, prefs.home);
++ a_Nav_push(dd, prefs.home);
+ }
+
+ /*
+ * Jump to an URL within the stack history
+- * NewBw: {0 = same window, 1 = new window}
++#ifndef DISABLE_TABS
++ * NewDd: {0 = same window, 1 = new window, 2 = new tab}
++#else
++ * NewDd: {0 = same window, 1 = new window}
++#endif
+ */
+-void a_Nav_jump_callback(GtkWidget *widget, gpointer client_data, gint NewBw)
++void a_Nav_jump_callback(GtkWidget *widget, gpointer client_data, gint NewDd)
+ {
+ int idx;
+- BrowserWindow *bw = client_data;
++ DilloDoc *dd = client_data;
+
+ idx = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT (widget), "nav_idx"));
+- if (idx >= 0 && idx < a_Nav_stack_size(bw)) {
+- if (NewBw == 1) {
+- a_Nav_push_nw(bw, a_History_get_url(NAV_IDX(bw,idx)));
+- } else {
+- Nav_open_url(bw, a_History_get_url(NAV_IDX(bw,idx)),
+- idx - a_Nav_stack_ptr(bw));
+- }
++ if (idx >= 0 && idx < a_Nav_stack_size(dd)) {
++ switch (NewDd) {
++ case 0:
++ /* Open link in same bw */
++ Nav_open_url(dd, a_History_get_url(NAV_IDX(dd,idx)),
++ idx - a_Nav_stack_ptr(dd));
++ break;
++ case 1:
++ /* Open link in a new bw */
++ a_Menu_popup_set_url(dd->bw, a_History_get_url(NAV_IDX(dd,idx)));
++ a_Commands_open_link_nw_callback(widget, dd->bw);
++ break;
++#ifndef DISABLE_TABS
++ case 2:
++ /* Open link in a new tab */
++ a_Menu_popup_set_url(dd->bw, a_History_get_url(NAV_IDX(dd,idx)));
++ a_Commands_open_link_nw_tab_callback(widget, dd->bw);
++ break;
++#endif
++ default:
++ g_error(_("Unhandled switch type %d in a_Nav_jump_callback in src/nav.c\n"), NewDd);
++ }
+ }
+ }
+
+ /*
+ * Callback for reload confirmation
+ */
+-static void Nav_reload_confirmation_cb(BrowserWindow *bw)
++static void Nav_reload_confirmation_cb(DilloDoc *dd)
+ {
+- DialogAnswer *answer = bw->question_dialog_answer;
++ DialogAnswer *answer = dd->bw->question_dialog_answer;
+
+ _MSG("Nav_reload_confirmation_cb %p\n", bw->question_dialog_window);
+
++ if (!answer) return;
+ if (answer->alt_num == 1) { /* "OK" */
+ DEBUG_MSG(3, "Nav_reload_confirmed\n");
+- if ( a_Nav_stack_size(bw) &&
+- bw->question_dialog_data == a_History_get_url(NAV_TOP(bw)) ) {
++ if ( a_Nav_stack_size(dd) &&
++ dd->bw->question_dialog_data == a_History_get_url(NAV_TOP(dd)) ) {
+ /* a genuine confirmation! */
+ DEBUG_MSG(3, "Nav_reload_confirmed test: OK\n");
+- Nav_reload(bw);
++ Nav_reload(dd);
+ }
+
+ } else { /* window closed or cancel button */
+@@ -368,27 +409,27 @@ static void Nav_reload_confirmation_cb(B
+ }
+
+ /* cleanup */
+- bw->question_dialog_data = NULL;
++ dd->bw->question_dialog_data = NULL;
+ g_free(answer->this);
+- bw->question_dialog_answer = NULL;
++ dd->bw->question_dialog_answer = NULL;
+ }
+
+ /*
+ * This one does a_Nav_reload's job!
+ */
+-static void Nav_reload(BrowserWindow *bw)
++static void Nav_reload(DilloDoc *dd)
+ {
+ DilloUrl *url, *ReqURL;
+
+- a_Nav_cancel_expect(bw);
+- if ( a_Nav_stack_size(bw) ) {
+- url = a_History_get_url(NAV_TOP(bw));
+- ReqURL = a_Url_dup(a_History_get_url(NAV_TOP(bw)));
++ a_Nav_cancel_expect(dd);
++ if ( a_Nav_stack_size(dd) ) {
++ url = a_History_get_url(NAV_TOP(dd));
++ ReqURL = a_Url_dup(a_History_get_url(NAV_TOP(dd)));
+ /* Let's make reload be end-to-end */
+ a_Url_set_flags(ReqURL, URL_FLAGS(ReqURL) | URL_E2EReload);
+ /* This is an explicit reload, so clear the SpamSafe flag */
+ a_Url_set_flags(ReqURL, URL_FLAGS(ReqURL) & ~URL_SpamSafe);
+- Nav_open_url(bw, ReqURL, 0);
++ Nav_open_url(dd, ReqURL, 0);
+ a_Url_free(ReqURL);
+ }
+ }
+@@ -397,23 +438,23 @@ static void Nav_reload(BrowserWindow *bw
+ * Implement the RELOAD button functionality.
+ * (We haven't defined it yet ;)
+ */
+-void a_Nav_reload(BrowserWindow *bw)
++void a_Nav_reload(DilloDoc *dd)
+ {
+ DilloUrl *url;
+
+- a_Nav_cancel_expect(bw);
+- if ( a_Nav_stack_size(bw) ) {
+- url = a_History_get_url(NAV_TOP(bw));
++ a_Nav_cancel_expect(dd);
++ if ( a_Nav_stack_size(dd) ) {
++ url = a_History_get_url(NAV_TOP(dd));
+ if (URL_FLAGS(url) & URL_Post) {
+ /* Attempt to repost data, let's confirm... */
+- bw->question_dialog_data = (gpointer)url;
++ dd->bw->question_dialog_data = (gpointer)url;
+ a_Interface_question_dialog(
+- bw, "Repost form data?", TRUE,
+- "OK", "Cancel", NULL, NULL, NULL,
++ dd, _("Repost form data?"), TRUE,
++ _("OK"), _("Cancel"), NULL, NULL, NULL,
+ (GtkSignalFunc) Nav_reload_confirmation_cb);
+
+ } else {
+- Nav_reload(bw);
++ Nav_reload(dd);
+ }
+ }
+ }
+diff -pruN dillo-0.8.6/src/nav.h dillo-0.8.6-i18n-misc-20060709/src/nav.h
+--- dillo-0.8.6/src/nav.h 2005-10-28 01:20:14.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/nav.h 2006-05-16 01:21:09.000000000 +0900
+@@ -6,28 +6,29 @@
+
+
+ /* useful macros for the navigation stack */
+-#define NAV_IDX(bw, i) (bw)->nav_stack[i]
+-#define NAV_TOP(bw) (bw)->nav_stack[(bw)->nav_stack_ptr]
++#define NAV_IDX(dd, i) (dd)->nav_stack[i]
++#define NAV_TOP(dd) (dd)->nav_stack[(dd)->nav_stack_ptr]
+
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif /* __cplusplus */
+
+-void a_Nav_push(BrowserWindow *bw, const DilloUrl *url);
+-void a_Nav_push_nw(BrowserWindow *bw, const DilloUrl *url);
+-void a_Nav_vpush(void *vbw, const DilloUrl *url);
+-void a_Nav_back(BrowserWindow *bw);
+-void a_Nav_forw(BrowserWindow *bw);
+-void a_Nav_home(BrowserWindow *bw);
+-void a_Nav_reload(BrowserWindow *bw);
+-void a_Nav_init(BrowserWindow *bw);
+-void a_Nav_free(BrowserWindow *bw);
+-void a_Nav_cancel_expect (BrowserWindow *bw);
+-void a_Nav_expect_done(BrowserWindow *bw);
+-void a_Nav_jump_callback(GtkWidget *widget, gpointer client_data, gint NewBw);
+-gint a_Nav_stack_ptr(BrowserWindow *bw);
+-gint a_Nav_stack_size(BrowserWindow *bw);
++void a_Nav_push(DilloDoc *dd, const DilloUrl *url);
++void a_Nav_push_nw(DilloDoc *dd, const DilloUrl *url);
++void a_Nav_vpush(void *vdd, const DilloUrl *url);
++void a_Nav_back(DilloDoc *dd);
++void a_Nav_forw(DilloDoc *dd);
++void a_Nav_home(DilloDoc *dd);
++void a_Nav_reload(DilloDoc *dd);
++void a_Nav_init(DilloDoc *dd);
++void a_Nav_free(DilloDoc *dd);
++void a_Nav_cancel_expect (DilloDoc *dd);
++void a_Nav_expect_done(DilloDoc *dd);
++void a_Nav_remove_top_url(DilloDoc *dd);
++void a_Nav_jump_callback(GtkWidget *widget, gpointer client_data, gint NewDd);
++gint a_Nav_stack_ptr(DilloDoc *dd);
++gint a_Nav_stack_size(DilloDoc *dd);
+
+
+ #ifdef __cplusplus
+diff -pruN dillo-0.8.6/src/plain.c dillo-0.8.6-i18n-misc-20060709/src/plain.c
+--- dillo-0.8.6/src/plain.c 2006-01-03 03:16:58.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/plain.c 2006-05-16 01:21:09.000000000 +0900
+@@ -18,13 +18,13 @@
+ #include <math.h> /* for rint() */
+ #include <gtk/gtk.h>
+
++#include "i18n.h"
+ #include "prefs.h"
+ #include "dw_page.h"
+ #include "cache.h"
+ #include "browser.h"
+ #include "web.h"
+-#include "interface.h"
+-#include "progressbar.h"
++#include "doc.h"
+ #include "misc.h"
+ #include "history.h"
+ #include "nav.h"
+@@ -35,8 +35,9 @@ typedef struct _DilloPlain {
+ DwWidget *dw;
+ size_t Start_Ofs; /* Offset of where to start reading next */
+ DwStyle *style;
+- BrowserWindow *bw;
++ DilloDoc *dd;
+ gint state;
++ gchar *charset;
+ } DilloPlain;
+
+ /* FSM states */
+@@ -64,7 +65,7 @@ static int Plain_page_menu(GtkWidget *vi
+ BrowserWindow *bw)
+ {
+ if (event->button == 3) {
+- a_Menu_popup_set_url(bw, a_History_get_url(NAV_TOP(bw)));
++ a_Menu_popup_set_url(bw, a_History_get_url(NAV_TOP(bw->dd)));
+ gtk_menu_popup(GTK_MENU(bw->menu_popup.over_page), NULL, NULL,
+ NULL, NULL, event->button, event->time);
+ return TRUE;
+@@ -75,7 +76,7 @@ static int Plain_page_menu(GtkWidget *vi
+ /*
+ * Create and initialize a new DilloPlain structure.
+ */
+-static DilloPlain *Plain_new(BrowserWindow *bw)
++static DilloPlain *Plain_new(DilloDoc *dd)
+ {
+ DilloPlain *plain;
+ DwPage *page;
+@@ -83,30 +84,31 @@ static DilloPlain *Plain_new(BrowserWind
+ DwStyleFont font_attrs;
+
+ plain = g_new(DilloPlain, 1);
++ plain->charset = NULL;
+ plain->state = ST_SeekingEol;
+ plain->Start_Ofs = 0;
+- plain->bw = bw;
++ plain->dd = dd;
+ plain->dw = a_Dw_page_new();
+ page = (DwPage *) plain->dw;
+
+ /* Create the font and attribute for the page. */
+ font_attrs.name = prefs.fw_fontname;
+- font_attrs.size = rint(12.0 * prefs.font_factor);
++ font_attrs.size = rint(prefs.font_sizes[2] * prefs.font_factor);
+ font_attrs.weight = 400;
+ font_attrs.style = DW_STYLE_FONT_STYLE_NORMAL;
+-
+- a_Dw_style_init_values (&style_attrs, plain->bw->main_window->window);
++ strncpy(font_attrs.lang, "", 6);
++ a_Dw_style_init_values (&style_attrs, plain->dd->bw->main_window->window);
+ style_attrs.font = a_Dw_style_font_new (&font_attrs);
+ style_attrs.color = a_Dw_style_color_new (prefs.text_color,
+- plain->bw->main_window->window);
++ plain->dd->bw->main_window->window);
+ plain->style = a_Dw_style_new (&style_attrs,
+- plain->bw->main_window->window);
++ plain->dd->bw->main_window->window);
+ /* a_Dw_widget_set_style (plain->dw, plain->style); */
+
+ /* The context menu */
+ gtk_signal_connect_while_alive
+- (GTK_OBJECT(GTK_BIN(plain->bw->docwin)->child),"button_press_event",
+- GTK_SIGNAL_FUNC(Plain_page_menu), (gpointer)plain->bw,
++ (GTK_OBJECT(GTK_BIN(plain->dd->docwin)->child),"button_press_event",
++ GTK_SIGNAL_FUNC(Plain_page_menu), (gpointer)plain->dd->bw,
+ GTK_OBJECT (page));
+
+ return plain;
+@@ -119,7 +121,7 @@ DwWidget* a_Plain_text(const char *type,
+ void **Data)
+ {
+ DilloWeb *web = P;
+- DilloPlain *plain = Plain_new(web->bw);
++ DilloPlain *plain = Plain_new(web->dd);
+
+ *Call = (CA_Callback_t)Plain_callback;
+ *Data = (void*)plain;
+@@ -140,11 +142,10 @@ static void Plain_callback(int Op, Cache
+ if (plain->Start_Ofs < Client->BufSize)
+ Plain_write(plain, Client->Buf, Client->BufSize, 1);
+ /* remove this client from our active list */
+- a_Interface_close_client(plain->bw, Client->Key);
+- /* set progress bar insensitive */
+- a_Progressbar_update(plain->bw->progress, NULL, 0);
+-
++ plain->dd->ready = TRUE;
++ a_Doc_close_client(plain->dd, Client->Key);
+ a_Dw_style_unref (plain->style);
++ g_free(plain->charset);
+ g_free(plain);
+ } else {
+ Plain_write(plain, Client->Buf, Client->BufSize, 0);
+@@ -164,6 +165,8 @@ static void Plain_write(DilloPlain *plai
+ char *data;
+ guint i, len, MaxBytes;
+
++ if(!plain->charset)
++ plain->charset = a_I18n_get_encoding(Buf, BufSize);
+ Start = (char*)Buf + plain->Start_Ofs;
+ MaxBytes = BufSize - plain->Start_Ofs;
+ i = len = 0;
+@@ -177,7 +180,8 @@ static void Plain_write(DilloPlain *plai
+ }
+ break;
+ case ST_Eol:
+- data = g_strndup(Start + i - len, len);
++ data = a_I18n_convert(plain->charset, DILLO_CHARSET,
++ Start + i - len, len);
+ a_Dw_page_add_text(page, a_Misc_expand_tabs(data), plain->style);
+ g_free(data);
+ a_Dw_page_add_parbreak(page, 0, plain->style);
+@@ -190,19 +194,17 @@ static void Plain_write(DilloPlain *plai
+ }
+ plain->Start_Ofs += i - len;
+ if ( Eof && len ) {
+- data = g_strndup(Start + i - len, len);
++ data = a_I18n_convert(plain->charset, DILLO_CHARSET,
++ Start + i - len, len);
+ a_Dw_page_add_text(page, a_Misc_expand_tabs(data), plain->style);
+ g_free(data);
+ a_Dw_page_add_parbreak(page, 0, plain->style);
+ plain->Start_Ofs += len;
+ }
+
+- if ( plain->bw ) {
+- gchar completestr[32];
+- g_snprintf(
+- completestr, 32, "%s%.1f Kb",
+- PBAR_PSTR(prefs.panel_size == 1),
+- (float)plain->Start_Ofs/1024);
+- a_Progressbar_update(plain->bw->progress, completestr, 1);
++ if ( plain->dd ) {
++ plain->dd->progress = plain->Start_Ofs/1024;
++ plain->dd->ready = FALSE;
++ a_Doc_progress_update(plain->dd);
+ }
+ }
+diff -pruN dillo-0.8.6/src/prefs.c dillo-0.8.6-i18n-misc-20060709/src/prefs.c
+--- dillo-0.8.6/src/prefs.c 2005-10-28 01:20:14.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/prefs.c 2006-07-08 21:11:44.000000000 +0900
+@@ -18,18 +18,25 @@
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
++#include <config.h>
++
+ #include <glib.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
++#include <stdio.h> /* for sscanf */
+ #include <stdlib.h>
+ #include <string.h> /* for strchr */
+ #include <fcntl.h>
+ #include <unistd.h>
+ #include <locale.h> /* for setlocale */
++#include "intl.h"
+ #include "prefs.h"
+ #include "colors.h"
+ #include "misc.h"
+
++#define DEBUG_LEVEL 5
++#include "debug.h"
++
+ /* symbol array */
+ static const struct {
+ gchar *name;
+@@ -39,6 +46,8 @@ static const struct {
+ { "http_proxy", DRC_TOKEN_PROXY },
+ { "http_proxyuser", DRC_TOKEN_PROXYUSER },
+ { "no_proxy", DRC_TOKEN_NOPROXY },
++ { "user_agent", DRC_TOKEN_USER_AGENT },
++ { "send_referer", DRC_TOKEN_SEND_REFERER },
+ { "link_color", DRC_TOKEN_LINK_COLOR },
+ { "visited_color", DRC_TOKEN_VISITED_COLOR, },
+ { "bg_color", DRC_TOKEN_BG_COLOR },
+@@ -53,8 +62,10 @@ static const struct {
+ { "panel_size", DRC_TOKEN_PANEL_SIZE },
+ { "small_icons", DRC_TOKEN_SMALL_ICONS },
+ { "limit_text_width", DRC_TOKEN_LIMIT_TEXT_WIDTH },
++ { "limit_font_decoration", DRC_TOKEN_LIMIT_FONT_DECORATION },
+ { "w3c_plus_heuristics", DRC_TOKEN_W3C_PLUS_HEURISTICS },
+ { "font_factor", DRC_TOKEN_FONT_FACTOR },
++ { "font_sizes", DRC_TOKEN_FONT_SIZES },
+ { "use_dicache", DRC_TOKEN_USE_DICACHE },
+ { "show_back", DRC_TOKEN_SHOW_BACK },
+ { "show_forw", DRC_TOKEN_SHOW_FORW },
+@@ -68,15 +79,37 @@ static const struct {
+ { "show_url", DRC_TOKEN_SHOW_URL },
+ { "show_search", DRC_TOKEN_SHOW_SEARCH },
+ { "show_progress_box", DRC_TOKEN_SHOW_PROGRESS_BOX },
++ { "show_popup_navigation", DRC_TOKEN_SHOW_POPUP_NAVIGATION },
+ { "fullwindow_start", DRC_TOKEN_FULLWINDOW_START },
+ { "transient_dialogs", DRC_TOKEN_TRANSIENT_DIALOGS },
++ { "popup_dialogs", DRC_TOKEN_POPUP_DIALOGS },
++ { "vw_aafontname", DRC_TOKEN_VW_AAFONT },
++ { "fw_aafontname", DRC_TOKEN_FW_AAFONT },
+ { "vw_fontname", DRC_TOKEN_VW_FONT },
+ { "fw_fontname", DRC_TOKEN_FW_FONT },
+ { "generate_submit", DRC_TOKEN_GENERATE_SUBMIT },
+ { "enterpress_forces_submit", DRC_TOKEN_ENTERPRESS_FORCES_SUBMIT },
+ { "search_url", DRC_TOKEN_SEARCH_URL },
++ { "search_charset", DRC_TOKEN_SEARCH_CHARSET },
+ { "show_msg", DRC_TOKEN_SHOW_MSG },
+- { "show_extra_warnings", DRC_TOKEN_SHOW_EXTRA_WARNINGS }
++ { "show_extra_warnings", DRC_TOKEN_SHOW_EXTRA_WARNINGS },
++ { "focus_location_on_new", DRC_TOKEN_FOCUS_LOCATION_ON_NEW },
++ { "accept_language", DRC_TOKEN_ACCEPT_LANGUAGE },
++ { "query_expire_time", DRC_TOKEN_QUERY_EXPIRE_TIME },
++ { "min_page_expire", DRC_TOKEN_MIN_PAGE_EXPIRE_TIME },
++ { "min_image_expire", DRC_TOKEN_MIN_IMAGE_EXPIRE_TIME },
++#ifndef DISABLE_TABS
++ { "tab_load_in_background", DRC_TOKEN_TAB_LOAD_IN_BACKGROUND },
++ { "tab_instead_of_window", DRC_TOKEN_TAB_INSTEAD_OF_WINDOW },
++ { "tab_bar_show_fullscreen", DRC_TOKEN_TAB_BAR_SHOW_FULLSCREEN },
++ { "tab_bar_show_single_tab", DRC_TOKEN_TAB_BAR_SHOW_SINGLE_TAB },
++ { "tab_bar_scroller", DRC_TOKEN_TAB_BAR_SCROLLER },
++ { "tab_bar_homogeneous", DRC_TOKEN_TAB_BAR_HOMOGENEOUS },
++ { "tab_title_compress", DRC_TOKEN_TAB_TITLE_COMPRESS },
++ { "tab_close_middle_click", DRC_TOKEN_TAB_CLOSE_MIDDLE_CLICK },
++ { "compress_vowels", DRC_TOKEN_COMPRESS_VOWELS },
++ { "compress_common_prefixes", DRC_TOKEN_COMPRESS_COMMON_PREFIXES },
++#endif /* !DISABLE_TABS */
+ };
+
+ static const guint n_symbols = sizeof (symbols) / sizeof (symbols[0]);
+@@ -129,6 +162,21 @@ static guint Prefs_parser(GScanner *scan
+ prefs.no_proxy = g_strdup(scanner->value.v_string);
+ prefs.no_proxy_vec = g_strsplit(prefs.no_proxy, " ", 0);
+ break;
++ case DRC_TOKEN_USER_AGENT:
++ {
++ gchar *prefs_value = g_strdup(scanner->value.v_string);
++ gchar *option = NULL;
++ g_free(prefs.user_agent);
++ if((option = strstr(prefs_value, "%v"))) {
++ option[1] = 's';
++ prefs.user_agent = g_strdup_printf(prefs_value, VERSION);
++ } else prefs.user_agent = prefs_value;
++ DEBUG_MSG(4, "Setting User-Agent: \"%s\"\n", prefs.user_agent);
++ break;
++ }
++ case DRC_TOKEN_SEND_REFERER:
++ prefs.send_referer = (strcmp(scanner->value.v_string, "YES") == 0);
++ break;
+ case DRC_TOKEN_LINK_COLOR:
+ prefs.link_color = a_Color_parse(scanner->value.v_string,
+ prefs.link_color, &st);
+@@ -184,10 +232,30 @@ static guint Prefs_parser(GScanner *scan
+ break;
+ case DRC_TOKEN_FONT_FACTOR:
+ prefs.font_factor = strtod(scanner->value.v_string, NULL);
+- break;
++#ifndef DISABLE_ANTI_ALIAS
++ prefs.font_factor *= 0.8;
++#endif
++ break;
++ case DRC_TOKEN_FONT_SIZES:
++ {
++ int sizes[D_FONT_SIZE_NUM];
++ if (sscanf(scanner->value.v_string,
++ "%d %d %d %d %d %d",
++ &sizes[0],
++ &sizes[1],
++ &sizes[2],
++ &sizes[3],
++ &sizes[4],
++ &sizes[5]) == D_FONT_SIZE_NUM) {
++ memcpy(prefs.font_sizes, sizes, sizeof(int) * D_FONT_SIZE_NUM);
++ }
++ }
+ case DRC_TOKEN_LIMIT_TEXT_WIDTH:
+ prefs.limit_text_width = (strcmp(scanner->value.v_string, "YES") == 0);
+ break;
++ case DRC_TOKEN_LIMIT_FONT_DECORATION:
++ prefs.limit_font_decoration = (strcmp(scanner->value.v_string, "YES") == 0);
++ break;
+ case DRC_TOKEN_W3C_PLUS_HEURISTICS:
+ prefs.w3c_plus_heuristics = (strcmp(scanner->value.v_string,"YES") == 0);
+ break;
+@@ -230,17 +298,31 @@ static guint Prefs_parser(GScanner *scan
+ case DRC_TOKEN_SHOW_PROGRESS_BOX:
+ prefs.show_progress_box = (strcmp(scanner->value.v_string, "YES") == 0);
+ break;
++ case DRC_TOKEN_SHOW_POPUP_NAVIGATION:
++ prefs.show_popup_navigation = (strcmp(scanner->value.v_string, "YES") == 0);
++ break;
+ case DRC_TOKEN_FULLWINDOW_START:
+ prefs.fullwindow_start = (strcmp(scanner->value.v_string, "YES") == 0);
+ break;
+ case DRC_TOKEN_TRANSIENT_DIALOGS:
+ prefs.transient_dialogs = (strcmp(scanner->value.v_string, "YES") == 0);
+ break;
++ case DRC_TOKEN_POPUP_DIALOGS:
++ prefs.popup_dialogs = (strcmp(scanner->value.v_string, "YES") == 0);
++ break;
++#ifdef DISABLE_ANTI_ALIAS
+ case DRC_TOKEN_FW_FONT:
++#else
++ case DRC_TOKEN_FW_AAFONT:
++#endif
+ g_free(prefs.fw_fontname);
+ prefs.fw_fontname = g_strdup(scanner->value.v_string);
+ break;
++#ifdef DISABLE_ANTI_ALIAS
+ case DRC_TOKEN_VW_FONT:
++#else
++ case DRC_TOKEN_VW_AAFONT:
++#endif
+ g_free(prefs.vw_fontname);
+ prefs.vw_fontname = g_strdup(scanner->value.v_string);
+ break;
+@@ -255,6 +337,10 @@ static guint Prefs_parser(GScanner *scan
+ g_free(prefs.search_url);
+ prefs.search_url = g_strdup(scanner->value.v_string);
+ break;
++ case DRC_TOKEN_SEARCH_CHARSET:
++ g_free(prefs.search_charset);
++ prefs.search_charset = g_strdup(scanner->value.v_string);
++ break;
+ case DRC_TOKEN_SHOW_MSG:
+ prefs.show_msg =
+ (strcmp(scanner->value.v_string, "YES") == 0);
+@@ -263,23 +349,94 @@ static guint Prefs_parser(GScanner *scan
+ prefs.show_extra_warnings =
+ (strcmp(scanner->value.v_string, "YES") == 0);
+ break;
++ case DRC_TOKEN_FOCUS_LOCATION_ON_NEW:
++ prefs.focus_location_on_new =
++ (strcmp(scanner->value.v_string, "YES") == 0);
++ break;
++ case DRC_TOKEN_ACCEPT_LANGUAGE:
++ if (strlen(scanner->value.v_string) != 0) {
++ g_free(prefs.accept_language);
++ prefs.accept_language = g_strdup(scanner->value.v_string);
++ }
++ break;
++ case DRC_TOKEN_QUERY_EXPIRE_TIME:
++ prefs.query_expire_time = strtol(scanner->value.v_string, NULL, 10);
++ break;
++ case DRC_TOKEN_MIN_PAGE_EXPIRE_TIME:
++ prefs.min_page_expire_time = strtol(scanner->value.v_string, NULL, 10);
++ break;
++ case DRC_TOKEN_MIN_IMAGE_EXPIRE_TIME:
++ prefs.min_image_expire_time = strtol(scanner->value.v_string, NULL, 10);
++ break;
++#ifndef DISABLE_TABS
++ case DRC_TOKEN_TAB_LOAD_IN_BACKGROUND:
++ prefs.tab_load_in_background =
++ (strcmp(scanner->value.v_string, "YES") == 0);
++ break;
++ case DRC_TOKEN_TAB_INSTEAD_OF_WINDOW:
++ prefs.tab_instead_of_window =
++ (strcmp(scanner->value.v_string, "YES") == 0);
++ break;
++ case DRC_TOKEN_TAB_BAR_SHOW_FULLSCREEN:
++ prefs.tab_bar_show_fullscreen =
++ (strcmp(scanner->value.v_string, "YES") == 0);
++ break;
++ case DRC_TOKEN_TAB_BAR_SHOW_SINGLE_TAB:
++ prefs.tab_bar_show_single_tab =
++ (strcmp(scanner->value.v_string, "YES") == 0);
++ break;
++ case DRC_TOKEN_TAB_BAR_SCROLLER:
++ prefs.tab_bar_scroller =
++ (strcmp(scanner->value.v_string, "YES") == 0);
++ break;
++ case DRC_TOKEN_TAB_BAR_HOMOGENEOUS:
++ prefs.tab_bar_homogeneous =
++ (strcmp(scanner->value.v_string, "YES") == 0);
++ break;
++ case DRC_TOKEN_TAB_TITLE_COMPRESS:
++ prefs.tab_title_compress =
++ (strcmp(scanner->value.v_string, "YES") == 0);
++ break;
++ case DRC_TOKEN_TAB_CLOSE_MIDDLE_CLICK:
++ prefs.tab_close_middle_click =
++ (strcmp(scanner->value.v_string, "YES") == 0);
++ break;
++ case DRC_TOKEN_COMPRESS_VOWELS:
++ g_free(prefs.compress_vowels);
++ prefs.compress_vowels = g_strdup(scanner->value.v_string);
++ break;
++ case DRC_TOKEN_COMPRESS_COMMON_PREFIXES:
++ g_free(prefs.compress_common_prefixes);
++ prefs.compress_common_prefixes = g_strdup(scanner->value.v_string);
++ prefs.compress_common_prefixes_vec =
++ g_strsplit(prefs.compress_common_prefixes, ";", 0);
++ break;
++#endif /*DISABLE_TABS */
+ default:
+ break; /* Not reached */
+ }
+ return G_TOKEN_NONE;
+ }
+
+-static gint Prefs_load(void)
++static gint Prefs_load(char *rcfile)
+ {
+ GScanner *scanner;
+- gint fd;
++ gint fd = -1;
+ guint i, expected_token;
+ gchar *file;
+
+ /* Here we load and set options from dillorc */
+- file = a_Misc_prepend_user_home(".dillo/dillorc");
+- fd = open(file, O_RDONLY);
+- g_free(file);
++ if (rcfile) {
++ if ((fd = open(rcfile, O_RDONLY)) < 0) {
++ g_printerr(_("Error: Can't open specified config file."
++ " default file is used.\n"));
++ }
++ }
++ if (fd < 0) {
++ file = a_Misc_prepend_user_home(".dillo/dillorc");
++ fd = open(file, O_RDONLY);
++ g_free(file);
++ }
+ if (fd < 0 && (fd = open(DILLORC_SYS, O_RDONLY)) < 0)
+ return FILE_NOT_FOUND;
+
+@@ -318,7 +475,7 @@ static gint Prefs_load(void)
+ g_scanner_input_file(scanner, fd);
+
+ /* give the error handler an idea on how the input is named */
+- scanner->input_name = "dillorc";
++ scanner->input_name = (rcfile) ? rcfile : "dillorc";
+
+ /*
+ * Scanning loop, we parse the input until it's end is reached,
+@@ -354,7 +511,7 @@ static gint Prefs_load(void)
+ return PARSE_OK;
+ }
+
+-void a_Prefs_init(void)
++void a_Prefs_init(char *rcfile)
+ {
+ gchar *old_locale;
+
+@@ -366,6 +523,8 @@ void a_Prefs_init(void)
+ prefs.http_proxyuser = NULL;
+ prefs.no_proxy = NULL;
+ prefs.no_proxy_vec = NULL;
++ prefs.user_agent = NULL;
++ prefs.send_referer = TRUE;
+ prefs.link_color = DW_COLOR_DEFAULT_BLUE;
+ prefs.visited_color = DW_COLOR_DEFAULT_PURPLE;
+ prefs.bg_color = DW_COLOR_DEFAULT_BGND;
+@@ -380,8 +539,18 @@ void a_Prefs_init(void)
+ prefs.panel_size = 1;
+ prefs.small_icons = FALSE;
+ prefs.limit_text_width = FALSE;
++ prefs.limit_font_decoration = FALSE;
+ prefs.w3c_plus_heuristics = TRUE;
+ prefs.font_factor = 1.0;
++#ifndef DISABLE_ANTI_ALIAS
++ prefs.font_factor = 0.8;
++#endif
++ prefs.font_sizes[0] = D_FONT_SIZE_1;
++ prefs.font_sizes[1] = D_FONT_SIZE_2;
++ prefs.font_sizes[2] = D_FONT_SIZE_3;
++ prefs.font_sizes[3] = D_FONT_SIZE_4;
++ prefs.font_sizes[4] = D_FONT_SIZE_5;
++ prefs.font_sizes[5] = D_FONT_SIZE_6;
+ prefs.use_dicache = FALSE;
+ prefs.show_back=TRUE;
+ prefs.show_forw=TRUE;
+@@ -395,21 +564,42 @@ void a_Prefs_init(void)
+ prefs.show_url=TRUE;
+ prefs.show_search=TRUE;
+ prefs.show_progress_box=TRUE;
++ prefs.show_popup_navigation=TRUE;
+ prefs.fullwindow_start=FALSE;
+ prefs.transient_dialogs=FALSE;
+- prefs.vw_fontname = g_strdup("helvetica");
+- prefs.fw_fontname = g_strdup("courier");
++ prefs.popup_dialogs=FALSE;
++ prefs.vw_fontname = g_strdup(D_DEFAULT_VW_FONT);
++ prefs.fw_fontname = g_strdup(D_DEFAULT_FW_FONT);
+ prefs.generate_submit = FALSE;
+ prefs.enterpress_forces_submit = FALSE;
+- prefs.search_url = g_strdup("http://www.google.com/search?q=%s");
++ prefs.search_url = g_strdup(DILLO_SEARCH_URL);
++ prefs.search_charset = g_strdup(DILLO_SEARCH_CHARSET);
+ prefs.show_msg = TRUE;
+ prefs.show_extra_warnings = FALSE;
+-
++ prefs.focus_location_on_new = TRUE;
++ prefs.accept_language = g_strdup(DILLO_ACCEPT_LANGUAGE);
++ prefs.query_expire_time = -1;
++ prefs.min_page_expire_time = 60; // some sites need 0. 60; // 1 minute
++ prefs.min_image_expire_time = 1800; // 30 minutes
++#ifndef DISABLE_TABS
++ prefs.tab_load_in_background = FALSE;
++ prefs.tab_instead_of_window = FALSE;
++ prefs.tab_bar_show_fullscreen = FALSE;
++ prefs.tab_bar_show_single_tab = FALSE;
++ prefs.tab_bar_scroller = FALSE;
++ prefs.tab_bar_homogeneous = TRUE;
++ prefs.tab_title_compress = TRUE;
++ prefs.tab_close_middle_click = TRUE;
++ prefs.compress_vowels = g_strdup(COMPRESS_VOWELS);
++ prefs.compress_common_prefixes = g_strdup(COMPRESS_COMMON_PREFIXES);
++ prefs.compress_common_prefixes_vec =
++ g_strsplit(prefs.compress_common_prefixes, ";", 0);
++#endif /* DISABLE_TABS */
+ /* this locale stuff is to avoid parsing problems with float numbers */
+ old_locale = g_strdup (setlocale (LC_NUMERIC, NULL));
+ setlocale (LC_NUMERIC, "C");
+
+- Prefs_load();
++ Prefs_load(rcfile);
+
+ setlocale (LC_NUMERIC, old_locale);
+ g_free (old_locale);
+@@ -426,9 +616,18 @@ void a_Prefs_freeall(void)
+ if (prefs.no_proxy_vec)
+ g_strfreev(prefs.no_proxy_vec);
+ a_Url_free(prefs.http_proxy);
++ g_free(prefs.user_agent);
+ g_free(prefs.fw_fontname);
+ g_free(prefs.vw_fontname);
+ a_Url_free(prefs.start_page);
+ a_Url_free(prefs.home);
+ g_free(prefs.search_url);
++ g_free(prefs.search_charset);
++ g_free(prefs.accept_language);
++#ifndef DISABLE_TABS
++ g_free(prefs.compress_vowels);
++ g_free(prefs.compress_common_prefixes);
++ if (prefs.compress_common_prefixes_vec)
++ g_strfreev(prefs.compress_common_prefixes_vec);
++#endif /* DISABLE_TABS */
+ }
+diff -pruN dillo-0.8.6/src/prefs.h dillo-0.8.6-i18n-misc-20060709/src/prefs.h
+--- dillo-0.8.6/src/prefs.h 2005-10-28 01:20:14.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/prefs.h 2006-05-16 01:21:09.000000000 +0900
+@@ -9,6 +9,9 @@ extern "C" {
+
+ #define DILLO_START_PAGE "about:splash"
+ #define DILLO_HOME "http://www.dillo.org/"
++#define DILLO_SEARCH_URL "http://www.google.com/search?ie=UTF-8&oe=UTF-8&q=%s"
++#define DILLO_SEARCH_CHARSET "UTF-8"
++#define DILLO_ACCEPT_LANGUAGE "en-us"
+ #define D_GEOMETRY_DEFAULT_WIDTH 640
+ #define D_GEOMETRY_DEFAULT_HEIGHT 550
+ #define D_GEOMETRY_DEFAULT_XPOS -9999
+@@ -20,6 +23,28 @@ extern "C" {
+ #define DW_COLOR_DEFAULT_PURPLE 0x800080
+ #define DW_COLOR_DEFAULT_BGND 0xd6d6c0
+
++#define COMPRESS_VOWELS "aeiouyAEIOUY"
++#define COMPRESS_COMMON_PREFIXES "index of ;re: ;fwd: ;www.;welcome to ;the "
++
++#ifdef DISABLE_ANTI_ALIAS
++ #define D_DEFAULT_VW_FONT "*-gothic"
++ #define D_DEFAULT_FW_FONT "*-gothic"
++ #define D_FONT_SIZE_BASE 8
++#else
++ #define D_DEFAULT_VW_FONT "*"
++ #define D_DEFAULT_FW_FONT "*"
++ #define D_FONT_SIZE_BASE 6
++#endif
++
++/* The following array of font sizes has to be _strictly_ crescent */
++#define D_FONT_SIZE_1 (D_FONT_SIZE_BASE + 2)
++#define D_FONT_SIZE_2 (D_FONT_SIZE_BASE + 4)
++#define D_FONT_SIZE_3 (D_FONT_SIZE_BASE + 6)
++#define D_FONT_SIZE_4 (D_FONT_SIZE_BASE + 8)
++#define D_FONT_SIZE_5 (D_FONT_SIZE_BASE + 12)
++#define D_FONT_SIZE_6 (D_FONT_SIZE_BASE + 16)
++#define D_FONT_SIZE_NUM 6
++
+ /* define enumeration values to be returned */
+ enum {
+ PARSE_OK = 0,
+@@ -33,6 +58,8 @@ typedef enum {
+ DRC_TOKEN_PROXY,
+ DRC_TOKEN_PROXYUSER,
+ DRC_TOKEN_NOPROXY,
++ DRC_TOKEN_USER_AGENT,
++ DRC_TOKEN_SEND_REFERER,
+ DRC_TOKEN_LINK_COLOR,
+ DRC_TOKEN_VISITED_COLOR,
+ DRC_TOKEN_BG_COLOR,
+@@ -46,8 +73,10 @@ typedef enum {
+ DRC_TOKEN_PANEL_SIZE,
+ DRC_TOKEN_SMALL_ICONS,
+ DRC_TOKEN_FONT_FACTOR,
++ DRC_TOKEN_FONT_SIZES,
+ DRC_TOKEN_SHOW_TOOLTIP,
+ DRC_TOKEN_LIMIT_TEXT_WIDTH,
++ DRC_TOKEN_LIMIT_FONT_DECORATION,
+ DRC_TOKEN_W3C_PLUS_HEURISTICS,
+ DRC_TOKEN_USE_DICACHE,
+ DRC_TOKEN_SHOW_BACK,
+@@ -62,15 +91,37 @@ typedef enum {
+ DRC_TOKEN_SHOW_URL,
+ DRC_TOKEN_SHOW_SEARCH,
+ DRC_TOKEN_SHOW_PROGRESS_BOX,
++ DRC_TOKEN_SHOW_POPUP_NAVIGATION,
+ DRC_TOKEN_FULLWINDOW_START,
+ DRC_TOKEN_TRANSIENT_DIALOGS,
++ DRC_TOKEN_POPUP_DIALOGS,
+ DRC_TOKEN_FW_FONT,
+ DRC_TOKEN_VW_FONT,
++ DRC_TOKEN_FW_AAFONT,
++ DRC_TOKEN_VW_AAFONT,
+ DRC_TOKEN_GENERATE_SUBMIT,
+ DRC_TOKEN_ENTERPRESS_FORCES_SUBMIT,
+ DRC_TOKEN_SEARCH_URL,
++ DRC_TOKEN_SEARCH_CHARSET,
+ DRC_TOKEN_SHOW_MSG,
+ DRC_TOKEN_SHOW_EXTRA_WARNINGS,
++ DRC_TOKEN_FOCUS_LOCATION_ON_NEW,
++ DRC_TOKEN_ACCEPT_LANGUAGE,
++ DRC_TOKEN_QUERY_EXPIRE_TIME,
++ DRC_TOKEN_MIN_PAGE_EXPIRE_TIME,
++ DRC_TOKEN_MIN_IMAGE_EXPIRE_TIME,
++#ifndef DISABLE_TABS
++ DRC_TOKEN_TAB_LOAD_IN_BACKGROUND,
++ DRC_TOKEN_TAB_INSTEAD_OF_WINDOW,
++ DRC_TOKEN_TAB_BAR_SHOW_FULLSCREEN,
++ DRC_TOKEN_TAB_BAR_SHOW_SINGLE_TAB,
++ DRC_TOKEN_TAB_BAR_SCROLLER,
++ DRC_TOKEN_TAB_BAR_HOMOGENEOUS,
++ DRC_TOKEN_TAB_TITLE_COMPRESS,
++ DRC_TOKEN_TAB_CLOSE_MIDDLE_CLICK,
++ DRC_TOKEN_COMPRESS_VOWELS,
++ DRC_TOKEN_COMPRESS_COMMON_PREFIXES,
++#endif /* !DISABLE_TABS */
+
+ DRC_TOKEN_LAST
+ } Dillo_Rc_TokenType;
+@@ -86,6 +137,8 @@ struct _DilloPrefs {
+ gchar *http_proxyuser;
+ gchar *no_proxy;
+ gchar **no_proxy_vec;
++ gchar *user_agent;
++ gboolean send_referer;
+ DilloUrl *start_page;
+ DilloUrl *home;
+ gint32 link_color;
+@@ -100,8 +153,10 @@ struct _DilloPrefs {
+ gint panel_size;
+ gboolean small_icons;
+ gboolean limit_text_width;
++ gboolean limit_font_decoration;
+ gboolean w3c_plus_heuristics;
+ gdouble font_factor;
++ gint font_sizes[D_FONT_SIZE_NUM];
+ gboolean use_dicache;
+ gboolean show_back;
+ gboolean show_forw;
+@@ -115,21 +170,42 @@ struct _DilloPrefs {
+ gboolean show_url;
+ gboolean show_search;
+ gboolean show_progress_box;
++ gboolean show_popup_navigation;
+ gboolean fullwindow_start;
+ gboolean transient_dialogs;
++ gboolean popup_dialogs;
+ gchar *vw_fontname;
+ gchar *fw_fontname;
+ gboolean generate_submit;
+ gboolean enterpress_forces_submit;
+ gchar *search_url;
++ gchar *search_charset;
+ gboolean show_msg;
+ gboolean show_extra_warnings;
++ gboolean focus_location_on_new;
++ gchar *accept_language;
++ gint query_expire_time;
++ gint min_page_expire_time;
++ gint min_image_expire_time;
++#ifndef DISABLE_TABS
++ gboolean tab_load_in_background;
++ gboolean tab_instead_of_window;
++ gboolean tab_bar_show_fullscreen;
++ gboolean tab_bar_show_single_tab;
++ gboolean tab_bar_scroller;
++ gboolean tab_bar_homogeneous;
++ gboolean tab_title_compress;
++ gboolean tab_close_middle_click;
++ gchar *compress_vowels;
++ gchar *compress_common_prefixes;
++ gchar **compress_common_prefixes_vec;
++#endif /* DISABLE_TABS */
+ };
+
+ /* Global Data */
+ DilloPrefs prefs;
+
+-void a_Prefs_init(void);
++void a_Prefs_init(char *rcfile);
+ void a_Prefs_freeall(void);
+
+ #ifdef __cplusplus
+diff -pruN dillo-0.8.6/src/progressbar.h dillo-0.8.6-i18n-misc-20060709/src/progressbar.h
+--- dillo-0.8.6/src/progressbar.h 2005-10-28 01:20:14.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/progressbar.h 2006-05-16 01:21:09.000000000 +0900
+@@ -27,6 +27,8 @@
+ extern "C" {
+ #endif /* __cplusplus */
+
++#define PBAR_L 32 /* max length of progress bar string */
++
+ #define PBAR_ISTR(s) (s) ? "" : "Images: "
+ #define PBAR_PSTR(s) (s) ? "" : "Page: "
+
+diff -pruN dillo-0.8.6/src/selection.c dillo-0.8.6-i18n-misc-20060709/src/selection.c
+--- dillo-0.8.6/src/selection.c 2006-01-03 03:16:32.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/selection.c 2006-05-16 01:21:09.000000000 +0900
+@@ -14,6 +14,7 @@
+ * See doc/Selection.txt for informations about this module.
+ */
+
++#include "i18n.h"
+ #include "selection.h"
+ #include "strbuf.h"
+ #include "dw_gtk_viewport.h"
+@@ -570,7 +571,7 @@ static void Selection_copy(Selection *se
+ strlen (i->content.data.text) - a_char);
+ a_Strbuf_append (strbuf, tmp);
+ g_free (tmp);
+- } else if (cmp == 0) {
++ } else if (cmp == 0 && b_char > 0) {
+ /* the end */
+ tmp = g_strndup(si->content.data.text, b_char);
+ a_Strbuf_append (strbuf, tmp);
+@@ -638,8 +639,11 @@ void a_Selection_set_selection(GtkWidget
+ /* As the clear-selection callback is not being called automatically
+ * before setting the new value, it'll be cleared here. --Jcid
+ * todo: this selection code needs a revision */
++ gchar *oldSelection;
+ g_free(selection);
+- selection = g_strdup(str);
++ oldSelection = a_I18n_locale_from_DILLO_CHARSET(str, -1);
++ selection = a_I18n_string_check(oldSelection, DW_CHARSET);
++ g_free(oldSelection);
+ }
+ }
+
+@@ -649,8 +653,25 @@ void a_Selection_set_selection(GtkWidget
+ void a_Selection_give_selection_callback(GtkWidget *widget,
+ GtkSelectionData *data, guint info, guint time)
+ {
+- gtk_selection_data_set(data, GDK_SELECTION_TYPE_STRING,
+- 8, selection, strlen(selection));
++ guchar *ctext;
++ gint format, length;
++ GdkAtom encoding;
++ gboolean is_ascii_string;
++ gint i;
++
++ is_ascii_string = TRUE;
++ for (i = 0; selection[i]; i++) {
++ is_ascii_string &= IS_ASCII_CHAR(selection[i]);
++ }
++
++ if (is_ascii_string) {
++ gtk_selection_data_set(data, GDK_SELECTION_TYPE_STRING,
++ 8, selection, strlen(selection));
++ } else {
++ gdk_string_to_compound_text(selection, &encoding, &format, &ctext, &length);
++ gtk_selection_data_set(data, encoding, 8, ctext, length);
++ gdk_free_compound_text(ctext);
++ }
+ }
+
+ /*
+@@ -666,3 +687,4 @@ gint a_Selection_clear_selection_callbac
+ return TRUE;
+ }
+
++/* vim: set ts=3 sw=3 sts=3 expandtab:*/
+diff -pruN dillo-0.8.6/src/strbuf.c dillo-0.8.6-i18n-misc-20060709/src/strbuf.c
+--- dillo-0.8.6/src/strbuf.c 2005-10-28 01:20:15.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/strbuf.c 2006-05-16 01:21:09.000000000 +0900
+@@ -78,17 +78,27 @@ gchar* a_Strbuf_chars (Strbuf_t *strbuf)
+ g_free (strbuf->str);
+ strbuf->str = g_new (gchar, strbuf->num_chars + 1);
+
++#if 1 /* if 1, use old code. */
++ strbuf->list = g_slist_reverse (strbuf->list);
++#else
+ /* The strings in the list are prepended so we have to start from the tail
+ * and work our way to the start of the new string */
+ p = strbuf->str + strbuf->num_chars;
++#endif
++ p = strbuf->str;
+ for (it = strbuf->list; it; it = it->next) {
+ s = (gchar*)(it->data);
+ l = strlen (s);
+- p -= l;
+ memcpy (p, s, l * sizeof (gchar));
++ p += l;
+ }
+
++#if 1 /* if 1, use old code. */
++ *p = 0;
++ strbuf->list = g_slist_reverse (strbuf->list); /* reverse reversion */
++#else
+ p[strbuf->num_chars] = 0;
++#endif
+ strbuf->str_valid = TRUE;
+
+ return strbuf->str;
+diff -pruN dillo-0.8.6/src/tab.c dillo-0.8.6-i18n-misc-20060709/src/tab.c
+--- dillo-0.8.6/src/tab.c 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/tab.c 2006-05-16 01:21:09.000000000 +0900
+@@ -0,0 +1,500 @@
++/*
++ * File: tab.c
++ *
++ * Copyright (C) 2003 Frank de Lange <frank@unternet.org>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version. */
++
++#ifndef DISABLE_TABS
++
++#include <config.h>
++
++#include <stdio.h>
++#include <ctype.h>
++#include <gtk/gtk.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <sys/time.h>
++#include <fcntl.h>
++
++#include "intl.h"
++#include "i18n.h"
++#include "misc.h"
++#include "dillo.h"
++#include "history.h"
++#include "nav.h"
++#include "doc.h"
++#include "IO/Url.h"
++#include "interface.h"
++#include "tab.h"
++#include "commands.h"
++#include "prefs.h"
++#include "menu.h"
++
++#include "dw_gtk_scrolled_window.h"
++#include "dw_gtk_viewport.h"
++
++#include <gdk/gdkkeysyms.h>
++
++#define DEBUG_EVENT 0
++#define DEBUG_SIZE 10
++#define DEBUG_ALLOC 10
++
++#define DEBUG_LEVEL 0
++#include "debug.h"
++
++/* BROWSER TABS */
++
++/* callbacks */
++
++/*
++ * callback for tab label resize_request. This adjusts
++ * the tab title to the width of the tab, compressing
++ * or shortening (according to preference) the title if needed
++ */
++void
++Tab_label_size_request_callback(GtkWidget *widget,
++ GtkAllocation *alloc,
++ gpointer client_data)
++{
++ DilloDoc *dd = (DilloDoc *) client_data;
++ GtkLabel *tab_label = (GtkLabel *) widget;
++ gchar *tab_title, *checked_str, *short_title;
++ gint tab_title_size, tab_title_len;
++
++ /* the tool tip is attached to the parent of the label, an event box */
++ tab_title = ((GtkTooltipsData *) gtk_tooltips_data_get(
++ GTK_WIDGET(
++ GTK_WIDGET(
++ tab_label)->parent)))->tip_text;
++
++ tab_title_size = (gint) ((gfloat) alloc->width / dd->bw->tab_label_average_character_width);
++
++ /* compress or shorten the tab title? */
++ tab_title = a_I18n_DW_CHARSET_to_DILLO_CHARSET(tab_title, -1);
++ tab_title_len = strlen(tab_title);
++ if (prefs.tab_title_compress) {
++ /* use title compression algorithm */
++ short_title = a_Misc_string_compress(tab_title, tab_title_size);
++ } else {
++ /* use simple shortening */
++ short_title = a_Misc_string_shorten(tab_title, tab_title_size);
++ }
++ g_free(tab_title);
++ tab_title = a_I18n_DW_CHARSET_from_DILLO_CHARSET(short_title, -1);
++ g_free(short_title);
++
++ /* check string */
++ checked_str = a_I18n_string_check(tab_title, DW_CHARSET);
++ g_free(tab_title);
++
++ gtk_label_set_text(GTK_LABEL(tab_label), checked_str);
++ g_free(checked_str);
++}
++
++/*
++ * callback for tab label button_press_event
++ *
++ * used to popup menu with tab options
++ *
++ * even though this is called 'tab_label_..., the callback is in
++ * fact attached to an event box surrounding the tab_label, as gtk
++ * label widgets can not receive events
++ */
++void
++Tab_label_button_press_event_callback(GtkWidget *widget,
++ GdkEventButton *event,
++ gpointer client_data)
++{
++ DilloDoc *dd = (DilloDoc *) client_data;
++ switch (event->button) {
++ case 1:
++ a_Tab_switch(dd);
++ break;
++ case 2:
++ /* currently unused */
++ DEBUG_MSG(DEBUG_EVENT, "You pressed button (%d) over a tab...\n", (gint) event->button);
++ if (prefs.tab_close_middle_click)
++ a_Tab_close(dd);
++ break;
++ case 3:
++ /* popup tab options menu */
++ if (dd->bw->menu_popup.over_tab)
++ gtk_widget_destroy(dd->bw->menu_popup.over_tab);
++ dd->bw->menu_popup.over_tab = a_Menu_popup_tab_new(dd);
++ gtk_menu_popup(GTK_MENU(dd->bw->menu_popup.over_tab), NULL, NULL,
++ NULL, NULL, event->button, event->time);
++ break;
++ default:
++ /* weird pointer with more than 3 buttons, ignore */
++ DEBUG_MSG(DEBUG_EVENT, "You pressed button (%d) over a tab...\n", (gint) event->button);
++ break;
++ }
++}
++
++/*
++ * callback for tab switch. This just calls a_Tab_switch for the docwin
++ * passed as page
++ */
++void
++Tab_switch_callback(GtkWidget *tabbrowser,
++ GtkNotebookPage *page,
++ gint page_num,
++ gpointer client_data)
++{
++ DilloDoc *dd;
++ GtkWidget *docwin;
++
++ /* the notebook page contains a box, which contains the docwin as its first child
++ * hence this hairy function... */
++ docwin = g_list_nth_data(gtk_container_children(GTK_CONTAINER(gtk_notebook_get_nth_page(GTK_NOTEBOOK(tabbrowser), page_num))), 0);
++ dd = a_Doc_get_by_docwin(docwin);
++
++ if(dd)
++ a_Tab_switch(dd);
++}
++
++/*
++ * callback for tab add
++ */
++void
++Tab_add_callback(GtkContainer *container,
++ GtkWidget *widget,
++ gpointer client_data)
++{
++ DEBUG_MSG(DEBUG_EVENT, "I am the tab_add callback in src/tab.c!\n");
++}
++
++/*
++ * callback for tab remove
++ */
++void
++Tab_remove_callback(GtkContainer *container,
++ GtkWidget *widget,
++ gpointer client_data)
++{
++ DEBUG_MSG(DEBUG_EVENT, "I am the tab remove callback, in src/tab.c!\n");
++}
++
++/*
++ * callback for tab browser destroy
++ */
++void
++Tab_browser_destroy_callback(GtkContainer *container,
++ GtkWidget *widget,
++ gpointer client_data)
++{
++ DEBUG_MSG(DEBUG_EVENT, "I am the tab browser destroy callback, in src/tab.c!\n");
++}
++
++/* Public functions */
++
++/*
++ * return a new tab browser
++ */
++GtkContainer *
++a_Tab_browser_new(BrowserWindow *bw)
++{
++ GtkRequisition *req;
++ GtkWidget *label;
++ GtkNotebook *tabbrowser;
++
++ /* try to calulate the average width of a character in a label
++ * in the current context. This is something of a hack...
++ */
++ req = g_new0(GtkRequisition, 1);
++ label = gtk_label_new(D_QUICK_BROWN_FOX);
++ gtk_widget_show(label);
++ gtk_widget_size_request(GTK_WIDGET(label), req);
++ bw->tab_label_average_character_width = (gfloat) ((gfloat) req->width / (gfloat) strlen(GTK_LABEL(label)->label));
++ g_free(req);
++
++ /* Add tabbrowser */
++ tabbrowser = GTK_NOTEBOOK(gtk_notebook_new());
++ gtk_notebook_set_show_border(GTK_NOTEBOOK(tabbrowser), FALSE);
++ gtk_notebook_set_scrollable(GTK_NOTEBOOK(tabbrowser), prefs.tab_bar_scroller);
++ gtk_notebook_set_homogeneous_tabs(GTK_NOTEBOOK(tabbrowser), prefs.tab_bar_homogeneous);
++ gtk_signal_connect_after(GTK_OBJECT(tabbrowser),
++ "switch_page",
++ GTK_SIGNAL_FUNC(Tab_switch_callback),
++ (gpointer) bw);
++
++ gtk_signal_connect_after(GTK_OBJECT(tabbrowser),
++ "add",
++ GTK_SIGNAL_FUNC(Tab_add_callback),
++ (gpointer) bw);
++
++ gtk_signal_connect(GTK_OBJECT(tabbrowser),
++ "remove",
++ GTK_SIGNAL_FUNC(Tab_remove_callback),
++ (gpointer) bw);
++ /* commented out, currently not in use...
++ gtk_signal_connect(GTK_OBJECT(tabbrowser),
++ "destroy",
++ GTK_SIGNAL_FUNC(Tab_browser_destroy_callback),
++ (gpointer) bw);
++ */
++
++ return GTK_CONTAINER(tabbrowser);
++}
++
++/*
++ * switch tab, update interface
++ */
++void
++a_Tab_switch(DilloDoc *dd)
++{
++ a_Interface_findtext_dialog_close();
++ a_Dw_tooltip_count_reset ();
++
++ /* set bw's current root document */
++ dd->bw->dd = a_Doc_get_root(dd);
++
++ /* add the browser window's full_screen_off_button to the dd's
++ * docwin. This button is owned by the window (this makes it easier
++ * to move tabs between windows, if needed), so it needs to
++ * be moved from tab to tab when the tab becomes current (as
++ * GTK does not allow a widget to have more than one parent).
++ *
++ * XXX:HACK
++ */
++ if (GTK_WIDGET(dd->bw->full_screen_off_button)->parent != dd->docwin) {
++ /* keep a ref to the widget to keep it alive in transit... */
++ gtk_object_ref(GTK_OBJECT(dd->bw->full_screen_off_button));
++ if (GTK_WIDGET(dd->bw->full_screen_off_button)->parent)
++ gtk_container_remove(GTK_CONTAINER(GTK_WIDGET(dd->bw->full_screen_off_button)->parent),
++ GTK_WIDGET(dd->bw->full_screen_off_button));
++ a_Dw_gtk_scrolled_window_add_gadget(GTK_DW_SCROLLED_WINDOW (dd->docwin),
++ dd->bw->full_screen_off_button);
++ /* ref is no longer needed, discard it... */
++ gtk_object_unref(GTK_OBJECT(dd->bw->full_screen_off_button));
++
++ /* XXX:HACK the docwin does not show (or raise?) the widget when needed... */
++ if(GTK_WIDGET_VISIBLE(dd->bw->full_screen_off_button)) {
++ gtk_widget_hide(dd->bw->full_screen_off_button);
++ gtk_widget_show(dd->bw->full_screen_off_button);
++ }
++ }
++
++ /* update progress bar and adjust button sensitivity */
++ a_Doc_progress_update(dd);
++
++ /* adjust tab specific interface elements */
++ if (dd->nav_stack_ptr != -1)
++ /* this tab has a document loaded, set values accordingly */
++ {
++ a_Interface_set_page_title(dd->bw, (gchar *) a_History_get_title(NAV_TOP(dd)));
++ a_Interface_set_location_text(dd->bw,URL_STR_(a_History_get_url(NAV_TOP(dd))));
++ } else {
++ /* no document loaded in tab, use default values */
++ gchar *title = a_I18n_locale_to_DILLO_CHARSET(_("(Untitled)"));
++ a_Interface_set_page_title(dd->bw, title);
++ g_free(title);
++ a_Interface_set_location_text(dd->bw,"");
++ }
++
++ /* show tab */
++ gtk_notebook_set_page(GTK_NOTEBOOK(dd->bw->container),
++ gtk_notebook_page_num(GTK_NOTEBOOK(dd->bw->container),
++ GTK_WIDGET(dd->docwin)->parent));
++
++ /* set focus to docwin */
++ gtk_widget_grab_focus(GTK_BIN(dd->docwin)->child);
++}
++
++/*
++ * set visibility of tab bar
++ */
++void
++a_Tab_visibility_update(BrowserWindow *bw)
++{
++ gboolean hide_tabs;
++
++ g_return_if_fail(bw != NULL);
++
++ /* this gets called in the tab switching code, which in turn gets called when
++ * a tab is deleted. This includes the final tab, which in turn causes the main_window
++ * to be destroyed, which of course includes the tabbrowser... So, check first if
++ * there is still a tabbrowser around to update before doing anything else...
++ */
++ if(!GTK_IS_CONTAINER(bw->container))
++ return;
++
++ /* HIDE tab bar IF
++ * - there is only one tab left AND the preference tab_bar_show_single_tab
++ * is set to NO
++ * OR
++ * - when using fullscreen AND the preference tab_bar_show_fullscreen
++ * is set to NO
++ * OTHERWISE
++ * SHOW tab bar
++ */
++ hide_tabs = ((g_list_length(gtk_container_children(GTK_CONTAINER(bw->container))) == 1)
++ && (!prefs.tab_bar_show_single_tab));
++ hide_tabs |= (bw->fullwindow
++ && (!prefs.tab_bar_show_fullscreen));
++ gtk_notebook_set_show_tabs(GTK_NOTEBOOK(bw->container), !hide_tabs);
++}
++
++
++/*
++ * close a specific browser tab,
++ * close window if no tabs left
++ *
++ * NOTE: this will destroy the document which
++ * was displayed in the tab, through the destroy callback
++ * for the docwin (in src/doc.c). If documents have to
++ * be moved between tabs or frames, unparent the
++ * pagemarks menu and reparent dd->docwin before calling
++ * this function!
++ */
++void
++a_Tab_close(DilloDoc *dd)
++{
++ gint page_num;
++ BrowserWindow *bw = dd->bw;
++
++ g_return_if_fail (dd != NULL);
++
++ a_Interface_findtext_dialog_close();
++
++ page_num = gtk_notebook_page_num(GTK_NOTEBOOK(bw->container),
++ GTK_WIDGET(dd->docwin)->parent);
++
++ /* left-to-right tab deletion: if this is the current page, show next page */
++ if(gtk_notebook_get_current_page(GTK_NOTEBOOK(bw->container)) == page_num)
++ gtk_notebook_next_page(GTK_NOTEBOOK(bw->container));
++
++ /* this will destroy dd->docwin (and the DilloDoc)
++ * if there are no reference left to it */
++ gtk_notebook_remove_page(GTK_NOTEBOOK(bw->container), page_num);
++
++ if (gtk_notebook_get_current_page(GTK_NOTEBOOK(bw->container)) == -1)
++ {
++ /* destroying the main window causes its destroy
++ callback to be fired. This takes down the
++ rest of the BrowserWindow */
++ gtk_widget_destroy(GTK_WIDGET(bw->main_window));
++ }
++
++ a_Tab_visibility_update(bw);
++}
++
++/*
++ * Add a tab (containing a new DilloDoc) to a browser window
++ */
++void
++a_Tab_new(BrowserWindow *bw)
++{
++ DilloDoc *dd;
++
++ g_return_if_fail (bw != NULL);
++
++ dd = a_Doc_new();
++ a_Tab_add(bw, dd);
++
++ /* always show new tabs, even when background loading */
++ a_Tab_switch(dd);
++
++ /* set focus to url bar */
++ gtk_widget_grab_focus(dd->bw->location);
++}
++
++
++/*
++ * Add a tab (containing an existing DilloDoc) to a browser window
++ */
++void
++a_Tab_add(BrowserWindow *bw, DilloDoc *dd)
++{
++ GString *tab_title;
++ GtkWidget *tab_label, *tab_label_event_box, *box;
++ GtkPackType *pack_type = g_new0(GtkPackType, 1);
++
++ g_return_if_fail (bw != NULL && dd != NULL);
++
++ a_Doc_set_browserwindow(dd, bw);
++
++ if (dd->nav_stack_ptr != -1)
++ {
++ tab_title = g_string_new(a_History_get_title(NAV_TOP(dd)));
++ } else {
++ tab_title = g_string_new(_("(Untitled)"));
++ }
++
++ tab_label_event_box = gtk_event_box_new();
++ tab_label = gtk_label_new(tab_title->str);
++ gtk_widget_show(tab_label);
++ gtk_container_add(GTK_CONTAINER(tab_label_event_box), tab_label);
++ box = gtk_hbox_new(TRUE, 0);
++ gtk_container_set_border_width(GTK_CONTAINER(box), 0);
++ gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(dd->docwin), TRUE, TRUE, 0);
++ if(dd->frameset)
++ gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(dd->frameset), TRUE, TRUE, 0);
++ gtk_widget_show(box);
++ gtk_notebook_append_page(GTK_NOTEBOOK(bw->container), box, tab_label_event_box);
++
++ /* add tooltip with full title. This has to be attached to the event box,
++ * since label widgets are windowless and hence can not receive events */
++ gtk_tooltips_set_tip(GTK_TOOLTIPS(dd->bw->tooltips),
++ GTK_WIDGET(tab_label_event_box),
++ tab_title->str,
++ tab_title->str);
++
++ /* make sure the tab labels adjust their size according to available space */
++ gtk_signal_connect_after(GTK_OBJECT(tab_label),
++ "size_allocate",
++ GTK_SIGNAL_FUNC(Tab_label_size_request_callback),
++ (gpointer) dd);
++
++ /* catch button press events for showing menu, etc. This has to be attached
++ * to the event box, since label widgets are windowless and hence can not
++ * receive events */
++ gtk_signal_connect_after(GTK_OBJECT(tab_label_event_box),
++ "button_press_event",
++ GTK_SIGNAL_FUNC(Tab_label_button_press_event_callback),
++ (gpointer) dd);
++
++ g_string_free(tab_title, TRUE);
++ gtk_notebook_query_tab_label_packing(GTK_NOTEBOOK(bw->container), GTK_WIDGET(dd->docwin)->parent, NULL, NULL, pack_type);
++ gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(bw->container), GTK_WIDGET(dd->docwin)->parent, TRUE, TRUE, *pack_type);
++ g_free(pack_type);
++ a_Tab_visibility_update(bw);
++}
++
++
++/*
++ * set tab title
++ * also sets window title if this tab is the current tab
++ */
++void
++a_Tab_title_set(DilloDoc *dd, gchar *title)
++{
++ GtkWidget *tab_label;
++ gchar *title_enc;
++
++ g_return_if_fail (dd != NULL && title != NULL);
++
++ /* set tooltip on tab label container (a GtkEventBox), and queue a resize
++ * for the label itself so the title is redrawn */
++ tab_label = gtk_notebook_get_tab_label(GTK_NOTEBOOK(dd->bw->container),GTK_WIDGET(dd->docwin)->parent);
++ title_enc = a_I18n_DW_CHARSET_from_DILLO_CHARSET(title, -1);
++ gtk_tooltips_set_tip(GTK_TOOLTIPS(dd->bw->tooltips),
++ GTK_WIDGET(tab_label),
++ title_enc,
++ title_enc);
++ g_free(title_enc);
++
++ gtk_widget_queue_resize(GTK_WIDGET(GTK_BIN(tab_label)->child));
++
++ /* if this is the current tab, set window title */
++ if (dd->bw->dd == dd)
++ a_Interface_set_page_title(dd->bw, title);
++}
++
++#endif /* !DISABLE_TABS */
++
++/* vim: set ts=3 sw=3 sts=3 expandtab:*/
+diff -pruN dillo-0.8.6/src/tab.h dillo-0.8.6-i18n-misc-20060709/src/tab.h
+--- dillo-0.8.6/src/tab.h 1970-01-01 09:00:00.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/tab.h 2006-05-16 01:21:09.000000000 +0900
+@@ -0,0 +1,22 @@
++#ifndef __TAB_H__
++#define __TAB_H__
++
++#ifndef DISABLE_TABS
++#include "browser.h"
++
++/* this string is used to calculate the average width of a
++ * character in a GTK_LABEL in the current context.
++ */
++#define D_QUICK_BROWN_FOX "The Quick Brown Fox Jumped Over The Lazy Dog"
++
++GtkContainer *
++a_Tab_browser_new(BrowserWindow *bw);
++void a_Tab_new(BrowserWindow *bw);
++void a_Tab_close(DilloDoc *dd);
++void a_Tab_add(BrowserWindow *bw, DilloDoc *dd);
++void a_Tab_switch(DilloDoc *dd);
++void a_Tab_title_set(DilloDoc *dd, gchar *title);
++void a_Tab_visibility_update(BrowserWindow *bw);
++
++#endif /* !DISABLE_TABS */
++#endif /* __TAB_H__ */
+diff -pruN dillo-0.8.6/src/url.c dillo-0.8.6-i18n-misc-20060709/src/url.c
+--- dillo-0.8.6/src/url.c 2006-01-03 03:11:47.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/url.c 2006-06-19 01:03:28.000000000 +0900
+@@ -70,7 +70,8 @@ gchar *a_Url_str(const DilloUrl *u)
+ url->fragment ? url->fragment : "");
+ }
+
+- return url->url_string->str;
++ if(url->url_string) return url->url_string->str;
++ return NULL;
+ }
+
+ /*
+@@ -172,6 +173,8 @@ void a_Url_free(DilloUrl *url)
+ g_free((gchar *)url->buffer);
+ g_free((gchar *)url->data);
+ g_free((gchar *)url->alt);
++ g_free((gchar *)url->target);
++ g_free((gchar *)url->referer);
+ g_free(url);
+ }
+ }
+@@ -180,7 +183,7 @@ void a_Url_free(DilloUrl *url)
+ * Resolve the URL as RFC2396 suggests.
+ */
+ static GString *Url_resolve_relative(const gchar *RelStr,
+- DilloUrl *BaseUrlPar,
++ DilloUrl **BaseUrlPar,
+ const gchar *BaseStr)
+ {
+ gchar *p, *s, *e;
+@@ -191,9 +194,9 @@ static GString *Url_resolve_relative(con
+ /* parse relative URL */
+ RelUrl = Url_object_new(RelStr);
+
+- if (BaseUrlPar) {
+- BaseUrl = BaseUrlPar;
+- } else if (RelUrl->scheme == NULL) {
++ if (*BaseUrlPar) {
++ BaseUrl = *BaseUrlPar;
++ } else {
+ /* only required when there's no <scheme> in RelStr */
+ BaseUrl = Url_object_new(BaseStr);
+ }
+@@ -302,8 +305,7 @@ static GString *Url_resolve_relative(con
+ done:
+ g_string_free(Path, TRUE);
+ a_Url_free(RelUrl);
+- if (BaseUrl != BaseUrlPar)
+- a_Url_free(BaseUrl);
++ *BaseUrlPar = BaseUrl;
+ return SolvedUrl;
+ }
+
+@@ -323,6 +325,7 @@ done:
+ * flags = 0
+ * data = NULL
+ * alt = NULL
++ * target = NULL
+ * ismap_url_len = 0
+ * scrolling_position = 0
+ * }
+@@ -332,7 +335,7 @@ done:
+ DilloUrl* a_Url_new(const gchar *url_str, const gchar *base_url,
+ gint flags, gint32 posx, gint32 posy)
+ {
+- DilloUrl *url;
++ DilloUrl *url, *BaseUrl = NULL;
+ gchar *urlstring, *p, *new_str = NULL;
+ GString *SolvedUrl;
+ gint n_ic, n_ic_spc;
+@@ -368,19 +371,27 @@ DilloUrl* a_Url_new(const gchar *url_str
+ }
+
+ /* Resolve the URL */
+- SolvedUrl = Url_resolve_relative(urlstring, NULL, base_url);
++ SolvedUrl = Url_resolve_relative(urlstring, &BaseUrl, base_url);
+ DEBUG_MSG(2, "SolvedUrl = %s\n", SolvedUrl->str);
+- g_return_val_if_fail (SolvedUrl != NULL, NULL);
++ if (!SolvedUrl) {
++ a_Url_free(BaseUrl);
++ return NULL;
++ }
+
+ /* Fill url data */
+ url = Url_object_new(SolvedUrl->str);
++ if (BaseUrl && !URL_STRCAMP_I_EQ(URL_HOST_(url), URL_HOST_(BaseUrl))) {
++ flags |= URL_OnOtherHost;
++ }
+ url->url_string = SolvedUrl;
+ url->flags = flags;
+ url->scrolling_position_x = posx;
+ url->scrolling_position_y = posy;
+ url->illegal_chars = n_ic;
+ url->illegal_chars_spc = n_ic_spc;
+-
++ url->referer = NULL;//g_strdup(base_url);
++ a_Url_free(BaseUrl);
++
+ g_free(new_str);
+ return url;
+ }
+@@ -401,11 +412,13 @@ DilloUrl* a_Url_dup(const DilloUrl *ori)
+ url->flags = ori->flags;
+ url->data = g_strdup(ori->data);
+ url->alt = g_strdup(ori->alt);
++ url->target = g_strdup(ori->target);
+ url->ismap_url_len = ori->ismap_url_len;
+ url->scrolling_position_x = ori->scrolling_position_x;
+ url->scrolling_position_y = ori->scrolling_position_y;
+ url->illegal_chars = ori->illegal_chars;
+ url->illegal_chars_spc = ori->illegal_chars_spc;
++ url->referer = g_strdup(ori->referer);
+
+ return url;
+ }
+@@ -465,6 +478,18 @@ void a_Url_set_alt(DilloUrl *u, const gc
+ }
+
+ /*
++ * Set DilloUrl target (used to target link at specific frame or window)
++ */
++void a_Url_set_target(DilloUrl *u, const gchar *target)
++{
++ if (u) {
++ if (u->target)
++ g_free((gchar *)u->target);
++ u->target = g_strdup(target);
++ }
++}
++
++/*
+ * Set DilloUrl scrolling position
+ */
+ void a_Url_set_pos(DilloUrl *u, gint32 posx, gint32 posy)
+@@ -476,6 +501,17 @@ void a_Url_set_pos(DilloUrl *u, gint32 p
+ }
+
+ /*
++ * Set DilloUrl referer URL
++ */
++void a_Url_set_referer(DilloUrl *u, DilloUrl *ref)
++{
++ if (u && ref) {
++ g_free((gchar *)u->referer);
++ u->referer = g_strdup(a_Url_str(ref));
++ }
++}
++
++/*
+ * Set DilloUrl ismap coordinates
+ * (this is optimized for not hogging the CPU)
+ */
+@@ -612,3 +648,4 @@ gchar *a_Url_string_strip_delimiters(con
+ }
+ return new_str;
+ }
++
+diff -pruN dillo-0.8.6/src/url.h dillo-0.8.6-i18n-misc-20060709/src/url.h
+--- dillo-0.8.6/src/url.h 2006-01-03 03:39:40.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/url.h 2006-05-16 01:21:09.000000000 +0900
+@@ -41,26 +41,33 @@
+ #define URL_ReloadIncomplete (1 << 9)
+ #define URL_SpamSafe (1 << 10)
+
++#define URL_MustCache (1 << 11)
++#define URL_IsImage (1 << 12)
++#define URL_OnOtherHost (1 << 13)
++
++
+ /*
+ * Access methods to fields inside DilloURL.
+ * (non '_'-ended macros MUST use these for initialization sake)
+ */
+ /* these MAY return NULL: */
+-#define URL_SCHEME_(u) u->scheme
+-#define URL_AUTHORITY_(u) u->authority
+-#define URL_PATH_(u) u->path
+-#define URL_QUERY_(u) u->query
+-#define URL_FRAGMENT_(u) u->fragment
+-#define URL_HOST_(u) a_Url_hostname(u)
+-#define URL_DATA_(u) u->data
+-#define URL_ALT_(u) u->alt
+-#define URL_STR_(u) a_Url_str(u)
++#define URL_SCHEME_(u) u->scheme
++#define URL_AUTHORITY_(u) u->authority
++#define URL_PATH_(u) u->path
++#define URL_QUERY_(u) u->query
++#define URL_FRAGMENT_(u) u->fragment
++#define URL_HOST_(u) a_Url_hostname(u)
++#define URL_DATA_(u) u->data
++#define URL_ALT_(u) u->alt
++#define URL_STR_(u) a_Url_str(u)
++#define URL_REFERER_(u) u->referer
++#define URL_TARGET_(u) u->target
+ /* these return an integer */
+-#define URL_PORT_(u) (URL_HOST(u) ? u->port : u->port)
+-#define URL_FLAGS_(u) u->flags
+-#define URL_POSX_(u) u->scrolling_position_x
+-#define URL_POSY_(u) u->scrolling_position_y
+-#define URL_ILLEGAL_CHARS_(u) url->illegal_chars
++#define URL_PORT_(u) (URL_HOST(u) ? u->port : u->port)
++#define URL_FLAGS_(u) u->flags
++#define URL_POSX_(u) u->scrolling_position_x
++#define URL_POSY_(u) u->scrolling_position_y
++#define URL_ILLEGAL_CHARS_(u) url->illegal_chars
+ #define URL_ILLEGAL_CHARS_SPC_(u) url->illegal_chars_spc
+
+ /*
+@@ -68,22 +75,24 @@
+ * When the "empty" and "undefined" concepts of RFC-2396 are irrelevant to
+ * the caller, and a string is required, use these methods instead:
+ */
+-#define NPTR2STR(p) ((p) ? (p) : "")
+-#define URL_SCHEME(u) NPTR2STR(URL_SCHEME_(u))
+-#define URL_AUTHORITY(u) NPTR2STR(URL_AUTHORITY_(u))
+-#define URL_PATH(u) NPTR2STR(URL_PATH_(u))
+-#define URL_QUERY(u) NPTR2STR(URL_QUERY_(u))
+-#define URL_FRAGMENT(u) NPTR2STR(URL_FRAGMENT_(u))
+-#define URL_HOST(u) NPTR2STR(URL_HOST_(u))
+-#define URL_DATA(u) NPTR2STR(URL_DATA_(u))
+-#define URL_ALT(u) NPTR2STR(URL_ALT_(u))
+-#define URL_STR(u) NPTR2STR(URL_STR_(u))
+-#define URL_PORT(u) URL_PORT_(u)
+-#define URL_FLAGS(u) URL_FLAGS_(u)
+-#define URL_POSX(u) URL_POSX_(u)
+-#define URL_POSY(u) URL_POSY_(u)
+-#define URL_ILLEGAL_CHARS(u) URL_ILLEGAL_CHARS_(u)
++#define NPTR2STR(p) ((p) ? (p) : "")
++#define URL_SCHEME(u) NPTR2STR(URL_SCHEME_(u))
++#define URL_AUTHORITY(u) NPTR2STR(URL_AUTHORITY_(u))
++#define URL_PATH(u) NPTR2STR(URL_PATH_(u))
++#define URL_QUERY(u) NPTR2STR(URL_QUERY_(u))
++#define URL_FRAGMENT(u) NPTR2STR(URL_FRAGMENT_(u))
++#define URL_HOST(u) NPTR2STR(URL_HOST_(u))
++#define URL_DATA(u) NPTR2STR(URL_DATA_(u))
++#define URL_ALT(u) NPTR2STR(URL_ALT_(u))
++#define URL_STR(u) NPTR2STR(URL_STR_(u))
++#define URL_PORT(u) URL_PORT_(u)
++#define URL_FLAGS(u) URL_FLAGS_(u)
++#define URL_POSX(u) URL_POSX_(u)
++#define URL_POSY(u) URL_POSY_(u)
++#define URL_ILLEGAL_CHARS(u) URL_ILLEGAL_CHARS_(u)
+ #define URL_ILLEGAL_CHARS_SPC(u) URL_ILLEGAL_CHARS_SPC_(u)
++#define URL_REFERER(u) NPTR2STR(URL_REFERER_(u))
++#define URL_TARGET(u) NPTR2STR(URL_TARGET_(u))
+
+
+
+@@ -117,11 +126,13 @@ struct _DilloUrl {
+ gint flags;
+ const gchar *data; /* POST */
+ const gchar *alt; /* "alt" text (used by image maps) */
++ const gchar *target; /* target frame/window */
+ gint ismap_url_len; /* Used by server side image maps */
+ gint32 scrolling_position_x, scrolling_position_y;
+ /* remember position of visited urls */
+ gint illegal_chars; /* number of illegal chars */
+ gint illegal_chars_spc; /* number of illegal space chars */
++ const gchar *referer; /* The URL that refered to this one */
+ };
+
+
+@@ -135,7 +146,9 @@ gint a_Url_cmp(const DilloUrl *A, const
+ void a_Url_set_flags(DilloUrl *u, gint flags);
+ void a_Url_set_data(DilloUrl *u, gchar *data);
+ void a_Url_set_alt(DilloUrl *u, const gchar *alt);
++void a_Url_set_target(DilloUrl *u, const gchar *target);
+ void a_Url_set_pos(DilloUrl *u, gint32 posx, gint32 posy);
++void a_Url_set_referer(DilloUrl *u, DilloUrl *ref);
+ void a_Url_set_ismap_coords(DilloUrl *u, gchar *coord_str);
+ gchar *a_Url_decode_hex_str(const gchar *str);
+ gchar *a_Url_encode_hex_str(const gchar *str);
+diff -pruN dillo-0.8.6/src/web.c dillo-0.8.6-i18n-misc-20060709/src/web.c
+--- dillo-0.8.6/src/web.c 2005-10-28 01:20:15.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/web.c 2006-05-16 01:21:09.000000000 +0900
+@@ -9,15 +9,18 @@
+ * (at your option) any later version.
+ */
+
++#include <config.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <gtk/gtk.h>
+ #include <math.h> /* for rint */
+
++#include "intl.h"
+ #include "msg.h"
+ #include "browser.h"
+-#include "nav.h"
+ #include "interface.h"
++#include "nav.h"
++#include "doc.h"
+ #include "IO/IO.h"
+ #include "IO/mime.h"
+
+@@ -27,7 +30,7 @@
+ #include "prefs.h"
+ #include "web.h"
+
+-#define DEBUG_LEVEL 5
++//#define DEBUG_LEVEL 5
+ #include "debug.h"
+
+ /*
+@@ -45,12 +48,12 @@ gint a_Web_dispatch_by_type (const char
+ CA_Callback_t *Call, void **Data)
+ {
+ DwWidget *dw = NULL;
+- DwStyle style_attrs, *style;
+- DwStyleFont font;
++// DwStyle style_attrs, *style;
++// DwStyleFont font;
+
+ DEBUG_MSG(1, "a_Web_dispatch_by_type\n");
+
+- g_return_val_if_fail(Web->bw != NULL, -1);
++ g_return_val_if_fail(Web->dd != NULL, -1);
+
+ if (Web->flags & WEB_RootUrl) {
+ /* We have RootUrl! */
+@@ -58,46 +61,35 @@ gint a_Web_dispatch_by_type (const char
+ if (dw == NULL)
+ return -1;
+
+- /* Set a style for the widget */
+- font.name = prefs.vw_fontname; /* must be defined */
+- font.size = rint(12.0 * prefs.font_factor);
+- font.weight = 400;
+- font.style = DW_STYLE_FONT_STYLE_NORMAL;
+-
+- a_Dw_style_init_values (&style_attrs, Web->bw->main_window->window);
+- a_Dw_style_box_set_val (&style_attrs.margin, 5);
+- style_attrs.font = a_Dw_style_font_new (&font);
+- style_attrs.color =
+- a_Dw_style_color_new (prefs.text_color, Web->bw->main_window->window);
+- style_attrs.background_color =
+- a_Dw_style_color_new (prefs.bg_color, Web->bw->main_window->window);
+- style = a_Dw_style_new (&style_attrs, Web->bw->main_window->window);
+- a_Dw_widget_set_style (dw, style);
+- a_Dw_style_unref (style);
++ /* set widget style */
++ a_Dw_widget_set_style(dw, Web->dd->style);
+
+ a_Dw_gtk_scrolled_window_set_dw(
+- GTK_DW_SCROLLED_WINDOW(Web->bw->docwin), dw);
++ GTK_DW_SCROLLED_WINDOW(Web->dd->docwin), dw);
+
+ if (URL_POSX(Web->url) || URL_POSY(Web->url)) {
+ a_Dw_gtk_scrolled_window_set_scrolling_position(
+- GTK_DW_SCROLLED_WINDOW(Web->bw->docwin),
++ GTK_DW_SCROLLED_WINDOW(Web->dd->docwin),
+ URL_POSX(Web->url), URL_POSY(Web->url));
+ } else {
+ gchar *pf = a_Url_decode_hex_str(URL_FRAGMENT_(Web->url));
+ a_Dw_gtk_scrolled_window_set_anchor(
+- GTK_DW_SCROLLED_WINDOW(Web->bw->docwin), pf);
++ GTK_DW_SCROLLED_WINDOW(Web->dd->docwin), pf);
+ g_free(pf);
+ }
+
+- /* Clear the title bar for pages without a <TITLE> tag */
+- a_Interface_set_page_title(Web->bw, "");
+- a_Interface_set_location_text(Web->bw, URL_STR(Web->url));
+- a_Interface_reset_progress_bars(Web->bw);
++
++ /* Set document title to url, will be replaced by real title
++ * if this page has a <TITLE> tag */
++ a_Doc_title_set(Web->dd, URL_STR(Web->url));
++ /* update progress */
++ a_Doc_progress_update(Web->dd);
++ a_Doc_location_set(Web->dd, URL_STR(Web->url));
+ /* Reset the bug meter */
+- a_Interface_bug_meter_update(Web->bw, 0);
++ a_Interface_bug_meter_update(Web->dd->bw, 0);
+
+ /* Let the Nav module know... */
+- a_Nav_expect_done(Web->bw);
++ a_Nav_expect_done(Web->dd);
+
+ } else {
+ /* A non-RootUrl. At this moment we only handle image-children */
+@@ -121,7 +113,7 @@ DilloWeb* a_Web_new(const DilloUrl *url)
+
+ _MSG(" a_Web_new: ValidWebs ==> %d\n", g_slist_length(ValidWebs));
+ web->url = a_Url_dup(url);
+- web->bw = NULL;
++ web->dd = NULL;
+ web->flags = 0;
+ web->Image = NULL;
+ web->stream = NULL;
+diff -pruN dillo-0.8.6/src/web.h dillo-0.8.6-i18n-misc-20060709/src/web.h
+--- dillo-0.8.6/src/web.h 2005-10-28 01:20:15.000000000 +0900
++++ dillo-0.8.6-i18n-misc-20060709/src/web.h 2006-05-16 01:21:09.000000000 +0900
+@@ -23,7 +23,7 @@ typedef struct _DilloWeb DilloWeb;
+
+ struct _DilloWeb {
+ DilloUrl *url; /* Requested URL */
+- BrowserWindow *bw; /* The requesting browser window [reference] */
++ DilloDoc *dd; /* The requesting browser document [reference] */
+ gint flags; /* Additional info */
+
+ DilloImage *Image; /* For image urls [reference] */