diff options
author | Graeme Gregory <dp@xora.org.uk> | 2006-12-07 11:46:23 +0000 |
---|---|---|
committer | Graeme Gregory <dp@xora.org.uk> | 2006-12-07 11:46:23 +0000 |
commit | 6f4be830deb5532a92760293543f27d85c0fb556 (patch) | |
tree | f9a1ee72b4df2aace449c5568eeddb9e1c0f685c | |
parent | 29d2d89d93b1f7039c6f2d2c22e5c75b8dd48e10 (diff) |
dillo_0.8.6.bb : major enhancements courtesy of B_Lizzard and
http://teki.jpn.ph/pc/software/index-e.shtml, see bug #1660
dillo_0.8.5.bb : remove old version
-rw-r--r-- | packages/dillo/dillo-0.8.5/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/dillo/dillo-0.8.5/dillo.desktop | 9 | ||||
-rw-r--r-- | packages/dillo/dillo-0.8.5/dillo.png | bin | 4175 -> 0 bytes | |||
-rw-r--r-- | packages/dillo/dillo-0.8.5/dpi.patch | 27 | ||||
-rw-r--r-- | packages/dillo/dillo-0.8.5/dpid.patch | 13 | ||||
-rw-r--r-- | packages/dillo/dillo-0.8.5/font.patch | 15 | ||||
-rw-r--r-- | packages/dillo/dillo-0.8.6/dillo-i18n.diff | 48036 | ||||
-rw-r--r-- | packages/dillo/dillo-0.8.6/font.patch | 15 | ||||
-rw-r--r-- | packages/dillo/dillo_0.8.5.bb | 28 | ||||
-rw-r--r-- | packages/dillo/dillo_0.8.6.bb | 13 |
10 files changed, 48043 insertions, 113 deletions
diff --git a/packages/dillo/dillo-0.8.5/.mtn2git_empty b/packages/dillo/dillo-0.8.5/.mtn2git_empty deleted file mode 100644 index e69de29bb2..0000000000 --- a/packages/dillo/dillo-0.8.5/.mtn2git_empty +++ /dev/null diff --git a/packages/dillo/dillo-0.8.5/dillo.desktop b/packages/dillo/dillo-0.8.5/dillo.desktop deleted file mode 100644 index 6c5f994da4..0000000000 --- a/packages/dillo/dillo-0.8.5/dillo.desktop +++ /dev/null @@ -1,9 +0,0 @@ -[Desktop Entry] -Name=Web browser -Comment=Dillo -Exec=dillo -Terminal=0 -Type=Application -Icon=dillo.png -Categories=Application;PIM;GPE -StartupNotify=True diff --git a/packages/dillo/dillo-0.8.5/dillo.png b/packages/dillo/dillo-0.8.5/dillo.png Binary files differdeleted file mode 100644 index 99c942f190..0000000000 --- a/packages/dillo/dillo-0.8.5/dillo.png +++ /dev/null diff --git a/packages/dillo/dillo-0.8.5/dpi.patch b/packages/dillo/dillo-0.8.5/dpi.patch deleted file mode 100644 index 867107e516..0000000000 --- a/packages/dillo/dillo-0.8.5/dpi.patch +++ /dev/null @@ -1,27 +0,0 @@ ---- dillo-0.8.5/dpi/Makefile.am.orig 2005-12-20 15:12:15.000000000 +0000 -+++ dillo-0.8.5/dpi/Makefile.am 2005-12-20 15:13:12.000000000 +0000 -@@ -1,4 +1,4 @@ --AM_CFLAGS = @GLIB_CFLAGS@ -+AM_CFLAGS = @GTK_CFLAGS@ - - bookmarksdir = $(libdir)/dillo/dpi/bookmarks - downloadsdir = $(libdir)/dillo/dpi/downloads -@@ -13,12 +13,12 @@ - hello_PROGRAMS = hello.filter.dpi - file_PROGRAMS = file.dpi - --bookmarks_dpi_LDADD = @GLIB_LIBS@ --downloads_dpi_LDADD = @GLIB_LIBS@ --ftp_filter_dpi_LDADD = @GLIB_LIBS@ --https_filter_dpi_LDADD = @GLIB_LIBS@ @LIBSSL_LIBS@ --hello_filter_dpi_LDADD = @GLIB_LIBS@ --file_dpi_LDADD = @GLIB_LIBS@ @LIBPTHREAD_LIBS@ -+bookmarks_dpi_LDADD = @GTK_LIBS@ -+downloads_dpi_LDADD = @GTK_LIBS@ -+ftp_filter_dpi_LDADD = @GTK_LIBS@ -+https_filter_dpi_LDADD = @GTK_LIBS@ @LIBSSL_LIBS@ -+hello_filter_dpi_LDADD = @GTK_LIBS@ -+file_dpi_LDADD = @GTK_LIBS@ @LIBPTHREAD_LIBS@ - - file_dpi_LDFLAGS = @LIBPTHREAD_LDFLAGS@ - diff --git a/packages/dillo/dillo-0.8.5/dpid.patch b/packages/dillo/dillo-0.8.5/dpid.patch deleted file mode 100644 index 1a3f51140f..0000000000 --- a/packages/dillo/dillo-0.8.5/dpid.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- dillo-0.8.5/dpid/Makefile.am.orig 2005-12-20 15:14:17.000000000 +0000 -+++ dillo-0.8.5/dpid/Makefile.am 2005-12-20 15:14:37.000000000 +0000 -@@ -1,8 +1,8 @@ - AM_CPPFLAGS=-DDPIDRC_SYS='"$(sysconfdir)/dpidrc"' --AM_CFLAGS = @GLIB_CFLAGS@ -+AM_CFLAGS = @GTK_CFLAGS@ - - bin_PROGRAMS = dpid --dpid_LDADD = @GLIB_LIBS@ -+dpid_LDADD = @GTK_LIBS@ - - EXTRA_DIST = dpidc - bin_SCRIPTS = dpidc diff --git a/packages/dillo/dillo-0.8.5/font.patch b/packages/dillo/dillo-0.8.5/font.patch deleted file mode 100644 index ace3da8dd6..0000000000 --- a/packages/dillo/dillo-0.8.5/font.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- dillo-0.8.5/src/dw_style.c.orig 2005-12-20 13:01:19.000000000 +0000 -+++ dillo-0.8.5/src/dw_style.c 2005-12-20 13:03:34.000000000 +0000 -@@ -330,6 +330,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 = diff --git a/packages/dillo/dillo-0.8.6/dillo-i18n.diff b/packages/dillo/dillo-0.8.6/dillo-i18n.diff new file mode 100644 index 0000000000..b9ef35933c --- /dev/null +++ b/packages/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, µ) != 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, µ) != 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, µ) != 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, µ) != 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" + " %s </b></font></td>\n" + " <td bgcolor='white' width='100%%'> </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" + " %s </b></font></td>\n" + " <td bgcolor='white' width='100%%'> </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 sections:"); ++ g_string_sprintf(gstr, modifypage_update_title, _("Update 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 titles:"); ++ g_string_sprintf(gstr, modifypage_update_title, _("Update 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/“/“[1m/g ++s/â€/[0mâ€/g ++s/‘/‘[1m/g ++s/’/[0m’/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> 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> 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 an operation </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>, mark its operands, and </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'> 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 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'> 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'> 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 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 sections:" ++msgstr "" ++ ++#: dpi/bookmarks.c:1107 ++msgid "Update 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> 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> ブックマーク::</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> 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 an operation </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>, mark its operands, and </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> ブックマーク :: 変更</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>命令をé¸æŠž </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'> 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 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> ブックマークã®å¤‰æ›´:: ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’è¿½åŠ " ++"</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'> 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> ブックマークã®å¤‰æ›´:: アップデート</" ++"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'> 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 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> ブックマークã®å¤‰æ›´:: 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 sections:" ++msgstr "<pre>セクションã®æ›´æ–°:</pre>" ++ ++#: dpi/bookmarks.c:1107 ++msgid "Update 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> 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> 书ç¾::</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> 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 an operation </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>, mark its operands, and </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> ä¹¦ç¾ :: 编辑</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>选择动作 </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'> 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 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> 编辑书ç¾:: åŠ å…¥é¡¹ç›®</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'> 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> 编辑书ç¾:: æ›´æ–°</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'> 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 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> 编辑书ç¾:: åŠ å…¥ç½‘é¡µ</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 sections:" ++msgstr "<pre>更新项目:</pre>" ++ ++#: dpi/bookmarks.c:1107 ++msgid "Update 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> 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> 書籤::</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> 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 an operation </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>, mark its operands, and </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> 書籤 :: 編輯</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>é¸æ“‡å‹•ä½œ </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'> 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 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> 編輯書籤:: åŠ å…¥é …ç›®</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'> 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> 編輯書籤:: æ›´æ–°</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'> 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 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> 編輯書籤:: åŠ å…¥ç¶²é </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 sections:" ++msgstr "<pre>æ›´æ–°é …ç›®:</pre>" ++ ++#: dpi/bookmarks.c:1107 ++msgid "Update 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<webmaster@teki.jpn.ph>.<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] */ diff --git a/packages/dillo/dillo-0.8.6/font.patch b/packages/dillo/dillo-0.8.6/font.patch deleted file mode 100644 index ace3da8dd6..0000000000 --- a/packages/dillo/dillo-0.8.6/font.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- dillo-0.8.5/src/dw_style.c.orig 2005-12-20 13:01:19.000000000 +0000 -+++ dillo-0.8.5/src/dw_style.c 2005-12-20 13:03:34.000000000 +0000 -@@ -330,6 +330,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 = diff --git a/packages/dillo/dillo_0.8.5.bb b/packages/dillo/dillo_0.8.5.bb deleted file mode 100644 index eb9e76c3e6..0000000000 --- a/packages/dillo/dillo_0.8.5.bb +++ /dev/null @@ -1,28 +0,0 @@ -SECTION = "x11/network" -DESCRIPTION = "Lightweight gtk+ browser." -LICENSE = "GPL" -DEPENDS = "gtk+-1.2" -SRC_URI="http://www.dillo.org/download/dillo-${PV}.tar.bz2 \ - file://font.patch;patch=1 \ - file://dpi.patch;patch=1 \ - file://dpid.patch;patch=1 \ - file://dillo.desktop \ - file://dillo.png" - - -PRIORITY = "optional" - -RCONFLICTS = "dillo2" - -S = "${WORKDIR}/dillo-${PV}/" - -inherit autotools pkgconfig - -FILES_${PN} += " /usr/lib/dillo/ /usr/bin/dpid /usr/bin/dpidc " - -do_install_append() { - install -d ${D}${datadir}/applications - install -d ${D}${datadir}/pixmaps - install -m 0644 ${WORKDIR}/dillo.desktop ${D}${datadir}/applications/dillo.desktop - install -m 0644 ${WORKDIR}/dillo.png ${D}${datadir}/pixmaps/dillo.png -} diff --git a/packages/dillo/dillo_0.8.6.bb b/packages/dillo/dillo_0.8.6.bb index 81233ed28c..8150e16214 100644 --- a/packages/dillo/dillo_0.8.6.bb +++ b/packages/dillo/dillo_0.8.6.bb @@ -1,11 +1,12 @@ SECTION = "x11/network" -DESCRIPTION = "Lightweight gtk+ browser." +DESCRIPTION = "Lightweight gtk+ browser, enhanced version, with support for SSL, frames, tabs and much more..." LICENSE = "GPL" -DEPENDS = "gtk+-1.2 libpng" +PR = "r1" +DEPENDS = "gtk+-1.2 libpng openssl" SRC_URI="http://www.dillo.org/download/dillo-${PV}.tar.bz2 \ - file://font.patch;patch=1 \ - file://dillo.desktop \ - file://dillo.png" + file://dillo-i18n.diff;patch=1 \ + file://dillo.desktop \ + file://dillo.png" PRIORITY = "optional" @@ -20,7 +21,7 @@ FILES_${PN} += " /usr/lib/dillo/ /usr/bin/dpid /usr/bin/dpidc " export PNG_CONFIG = "${STAGING_BINDIR_CROSS}/libpng-config" -EXTRA_OECONF = "--disable-dlgui" +EXTRA_OECONF = "--disable-dlgui --disable-anti-alias" do_install_append() { install -d ${D}${datadir}/applications |