=============================== 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 -#include -#include +# 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 -#include -], [ 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 -#include -#include +_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 -#include -], [ 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 +#include +#include +#include +/* 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 , 1995-2000. +dnl Bruno Haible , 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 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 +]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 +]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 +]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 &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 /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 +#include ], + [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 +#include ], + [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 +#include +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 , 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 +#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 +#include + +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 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 and 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 exists, +# doesn't clash with , 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 +#include ], + [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 exists, doesn't clash with , + 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 exists, +# doesn't clash with , 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 +#include ], + [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 exists, doesn't clash with , + 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 exists and doesn't clash with +# . + +AC_DEFUN([gt_HEADER_INTTYPES_H], +[ + AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, + [ + AC_TRY_COMPILE( + [#include +#include ], + [], 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 exists and doesn't clash with .]) + 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 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 +#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 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 ], + [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 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 , 1995. + +# Check whether LC_MESSAGES is available in . + +AC_DEFUN([AM_LC_MESSAGES], +[ + AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include ], [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 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 +#include +#include + +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 +#include +], [ 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 +#include +#include + +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 +#include +], [ 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 + * + * 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 +#include +#include +#include +#include +#include + +#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 + +#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 + * + * 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 +#include +#include +#include +#include + +#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 +#include + +#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 + * + * 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 +#include + +#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 + +#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 + #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 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 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 header file. */ #undef HAVE_MEMORY_H +/* Define to 1 if you have the header file. */ +#undef HAVE_OPENSSL_ERR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_OPENSSL_SSL_H + /* Define to 1 if you have the 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 , 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 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=/' < #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 +#include +#include +#include +/* 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 to if __STDC__ is defined, since + # 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 +#else +# include +#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 +_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 to if __STDC__ is defined, since + # 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 +#else +# include +#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 +_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 &5\"") >&5 (eval $ac_compiler --version &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 -#include -#include -#include -/* 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 &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 to if __STDC__ is defined, since - # 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 -#else -# include -#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 -_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 to if __STDC__ is defined, since - # 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 -#else -# include -#endif - Syntax error +#include +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 -_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 &5\"") >&5 - (eval $ac_compiler --version &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 +#include +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 &5\"") >&5 - (eval $ac_compiler -v &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 &5\"") >&5 - (eval $ac_compiler -V &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 +#include 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 +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 +#include +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 +_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 +_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 +#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 +#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 . 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
 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 
 #include 
 #include 
 #include 
@@ -38,6 +39,7 @@
 #include "dpiutil.h"
 
 #include 
+#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_("\n"
 "\n"
 "\n"
 "Bookmarks\n"
@@ -107,10 +109,10 @@ DOCTYPE
 "    \n"
 "  \n"
 "\n"
-"
\n"; +"
\n"); char *modifypage_header = -DOCTYPE +N_("\n" "\n" "\n" "Bookmarks\n" @@ -143,25 +145,25 @@ DOCTYPE " \n" " \n" " \n" -"\n"; +"\n"); char *mainpage_sections_header = -"\n" +N_("
\n" " \n" " \n"); char *modifypage_sections_header = -"
\n" " \n" " \n"; +"
\n" " \n" -"
Sections:
Sections:
\n" +N_("
\n" " \n" " \n"); char *mainpage_sections_item = "
\n" " \n" " \n"; +"
\n" " \n" -"
Sections:
Sections:
\n" @@ -192,7 +194,7 @@ char *mainpage_section_card_header = " \n" " \n" " \n" -" \n" " \n"; @@ -200,7 +202,7 @@ char *modifypage_section_card_header = " \n" "
\n" +" \n" "    %s    
\n" " \n" -" \n" " \n"; @@ -238,7 +240,7 @@ char *modifypage_footer = /* ------------------------------------------------------------------------- */ char *modifypage_add_section_page = -DOCTYPE +N_("\n" "\n" "\n" "Bookmarks\n" @@ -274,11 +276,11 @@ DOCTYPE "\n" "\n" "\n" -"\n"; +"\n"); /* ------------------------------------------------------------------------- */ char *modifypage_update_header = -DOCTYPE +N_("\n" "\n" "\n" "Bookmarks\n" @@ -292,7 +294,7 @@ DOCTYPE "
\n" +" \n" "    %s    
\n" "
\n" "
\n" -"\n"; +"\n"); char *modifypage_update_title = "\n" @@ -305,7 +307,7 @@ char *modifypage_update_item_header = "
\n"; char *modifypage_update_item = -"\n"; +" \n"); char *modifypage_update_item2 = -"\n"; +" \n"); char *modifypage_update_item_footer = "
\n" +N_("
\n" " \n" " \n" " \n" @@ -315,33 +317,33 @@ char *modifypage_update_item = " \n" " \n" "
Title:URL:%s
\n" -"
\n" +N_("
\n" " \n" " \n" " \n" " \n" "
Title:
\n" -"
\n"; char *modifypage_update_footer = -"\n" +N_("
\n" "\n" "
\n" "
\n" "
\n" "\n" -"\n"; +"\n"); /* ------------------------------------------------------------------------- */ char *modifypage_add_url = -DOCTYPE +N_("\n" "\n" "\n" "Bookmarks\n" @@ -379,7 +381,7 @@ DOCTYPE "
\n" "\n" "\n" -"\n"; +"\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/
  • / /' -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 - " Error on the bookmarks server..."; + _("\n" + " Error on the bookmarks server..."); 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, "
  • \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 #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 #include #include +#include +#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 + + * 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 + + * 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 ], + [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 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 , 1995-2000. +dnl Bruno Haible , 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 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 +]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 +]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 +]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 +#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 +#include ], + [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 +#include ], + [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 +#include +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 +#include + +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 +#include +#if HAVE_STDINT_H_WITH_UINTMAX +#include +#endif +#if HAVE_INTTYPES_H_WITH_UINTMAX +#include +#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 or .]) + 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 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 +#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 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 exists and doesn't clash with +# . + +AC_DEFUN([gt_HEADER_INTTYPES_H], +[ + AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, + [ + AC_TRY_COMPILE( + [#include +#include ], + [], 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 exists and doesn't clash with .]) + 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 exists, +# doesn't clash with , 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 +#include ], + [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 exists, doesn't clash with , + 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 , 1995. + +# Check whether LC_MESSAGES is available in . + +AC_DEFUN([AM_LC_MESSAGES], +[ + AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include ], [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 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 &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 , 1995-2000. +dnl Bruno Haible , 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 , 1995-2000. +dnl Bruno Haible , 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 < "$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" < /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" <> "$ac_file.tmp" < +#include +/* 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 , 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 +#if HAVE_STDINT_H +#include +#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 ], result=?) + _AC_COMPUTE_INT([~(size_t)0 % 10], res_lo, + [#include ], result=?) + _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint, + [#include ], 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 + 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 exists, +# doesn't clash with , 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 +#include ], + [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 exists, doesn't clash with , + 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 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 and 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 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 + 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 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 + 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 , 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 ." - exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" - exit $? ;; -*) @@ -101,42 +104,12 @@ Send bug reports to &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 +# 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 + + * Makefile.in.in: Upgrade to gettext-0.11.4. + * Rules-quot: Upgrade to gettext-0.11.4. + +2003-10-01 gettextize + + * 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 +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datadir = @datadir@ +localedir = $(datadir)/locale +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +mkinstalldirs = $(SHELL) $(MKINSTALLDIRS) +#mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` + +GMSGFMT = @GMSGFMT@ +MSGFMT = @MSGFMT@ +XGETTEXT = @XGETTEXT@ +MSGMERGE = msgmerge +MSGMERGE_UPDATE = @MSGMERGE@ --update +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +UPDATEPOFILES = @UPDATEPOFILES@ +DUMMYPOFILES = @DUMMYPOFILES@ +DISTFILES.common = Makefile.in.in Makevars remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) POTFILES.in $(DOMAIN).pot \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + +CATALOGS = @CATALOGS@ + +# Makevars gets inserted here. (Don't remove this line!) + +.SUFFIXES: +.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-update + +.po.mo: + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ + +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ + cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all: all-@USE_NLS@ + +all-yes: $(CATALOGS) +all-no: + +# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +$(POFILES): $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common); do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext"; then \ + for file in $(DISTFILES.common); do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +dvi info tags TAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + $(MAKE) update-po + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: $(DISTFILES) + dists="$(DISTFILES)"; \ + if test -f $(srcdir)/ChangeLog; then dists="$$dists ChangeLog"; fi; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir); \ + else \ + cp -p $(srcdir)/$$file $(distdir); \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ + $(SHELL) ./config.status + +force: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -pruN dillo-0.8.6/po/Makevars dillo-0.8.6-i18n-misc-20060709/po/Makevars --- dillo-0.8.6/po/Makevars 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/po/Makevars 2006-05-16 01:21:06.000000000 +0900 @@ -0,0 +1,41 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = Free Software Foundation, Inc. + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = http://teki.jpn.ph/ + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = diff -pruN dillo-0.8.6/po/POTFILES.in dillo-0.8.6-i18n-misc-20060709/po/POTFILES.in --- dillo-0.8.6/po/POTFILES.in 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/po/POTFILES.in 2006-05-16 01:25:31.000000000 +0900 @@ -0,0 +1,176 @@ +src/msg.h +src/acconfig.h +src/auth.c +src/auth.h +src/bitvec.c +src/bitvec.h +src/bookmark.c +src/bookmark.h +src/browser.h +src/cache.c +src/cache.h +src/capi.c +src/capi.h +src/chain.c +src/chain.h +src/colors.c +src/colors.h +src/commands.c +src/commands.h +src/cookies.c +src/cookies.h +src/debug.h +src/dicache.c +src/dicache.h +src/dillo.c +src/dillo.h +src/dns.c +src/dns.h +src/doc.c +src/doc.h +src/dw.c +src/dw.h +src/dw_aligned_page.c +src/dw_aligned_page.h +src/dw_bullet.c +src/dw_bullet.h +src/dw_button.c +src/dw_button.h +src/dw_container.c +src/dw_container.h +src/dw_embed_gtk.c +src/dw_embed_gtk.h +src/dw_ext_iterator.c +src/dw_ext_iterator.h +src/dw_gtk_scrolled_frame.c +src/dw_gtk_scrolled_frame.h +src/dw_gtk_scrolled_window.c +src/dw_gtk_scrolled_window.h +src/dw_gtk_statuslabel.c +src/dw_gtk_statuslabel.h +src/dw_gtk_viewport.c +src/dw_gtk_viewport.h +src/dw_hruler.c +src/dw_hruler.h +src/dw_image.c +src/dw_image.h +src/dw_list_item.c +src/dw_list_item.h +src/dw_marshal.c +src/dw_marshal.h +src/dw_page.c +src/dw_page.h +src/dw_style.c +src/dw_style.h +src/dw_table.c +src/dw_table.h +src/dw_table_cell.c +src/dw_table_cell.h +src/dw_tooltip.c +src/dw_tooltip.h +src/dw_widget.c +src/dw_widget.h +src/findtext.c +src/findtext.h +src/selection.c +src/selection.h +src/web.c +src/web.h +src/progressbar.c +src/progressbar.h +src/gtk_ext_button.c +src/gtk_ext_button.h +src/gtk_ext_menu.c +src/gtk_ext_menu.h +src/gtk_ext_menu_item.c +src/gtk_ext_menu_item.h +src/gtk_menu_title.c +src/gtk_menu_title.h +src/gif.c +src/jpeg.c +src/png.c +src/html.c +src/html.h +src/image.c +src/image.h +src/misc.c +src/misc.h +src/interface.h +src/interface.c +src/history.c +src/history.h +src/nav.c +src/nav.h +src/plain.c +src/menu.c +src/menu.h +src/prefs.c +src/prefs.h +src/klist.c +src/klist.h +src/strbuf.c +src/strbuf.h +src/url.c +src/url.h +src/list.h +src/binaryconst.h +src/pixmaps.h +src/dpiapi.c +src/dpiapi.h +src/i18n.c +src/i18n.h +src/i18n_gtk.c +src/i18n_gtk.h +src/gtkframeset.c +src/gtkframeset.h +src/intl.h +src/tab.c +src/tab.h +src/IO/https.c +src/IO/DBIO.h +src/IO/DBIO.c +src/IO/mime.c +src/IO/mime.h +src/IO/about.c +src/IO/Url.c +src/IO/Url.h +src/IO/proto.c +src/IO/http.c +src/IO/dpi.c +src/IO/IO.c +src/IO/IO.h +src/adblock.c +src/adblock.h +dpid/dpi.h +dpid/dpi_service.h +dpid/dpi_socket_dir.h +dpid/dpid.h +dpid/dpid_common.h +dpid/misc_new.h +dpid/dpi.c +dpid/dpi_service.c +dpid/dpi_socket_dir.c +dpid/dpid.c +dpid/dpid_common.c +dpid/main.c +dpid/misc_new.c +dpi/bookmarks.c +dpi/dpiutil.c +dpi/dpiutil.h +dpi/downloads.cc +dpi/file.c +dpi/ftp.c +dpi/hello.c +dpi/https.c +dpi/cookies.c +dpi/datauri.c +dpi/downloads-old.c +config/dillocfg.c +config/dillocfg.h +config/dillocfg_option.c +config/dillocfg_option.h +config/dillocfg_token.h +config/dillocfg_token.c +config.h +dpip/dpip.h +dpip/dpip.c diff -pruN dillo-0.8.6/po/Rules-quot dillo-0.8.6-i18n-misc-20060709/po/Rules-quot --- dillo-0.8.6/po/Rules-quot 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/po/Rules-quot 2006-05-16 01:21:06.000000000 +0900 @@ -0,0 +1,42 @@ +# Special Makefile rules for English message catalogs with quotation marks. + +DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot + +.SUFFIXES: .insert-header .po-update-en + +en@quot.po-update: en@quot.po-update-en +en@boldquot.po-update: en@boldquot.po-update-en + +.insert-header.po-update-en: + @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ + if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + ll=`echo $$lang | sed -e 's/@.*//'`; \ + LC_ALL=C; export LC_ALL; \ + cd $(srcdir); \ + if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "creation of $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +en@quot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header + +en@boldquot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header + +mostlyclean: mostlyclean-quot +mostlyclean-quot: + rm -f *.insert-header diff -pruN dillo-0.8.6/po/boldquot.sed dillo-0.8.6-i18n-misc-20060709/po/boldquot.sed --- dillo-0.8.6/po/boldquot.sed 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/po/boldquot.sed 2006-05-16 01:21:06.000000000 +0900 @@ -0,0 +1,10 @@ +s/"\([^"]*\)"/“\1â€/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“â€/""/g +s/“/“/g +s/â€/â€/g +s/‘/‘/g +s/’/’/g diff -pruN dillo-0.8.6/po/dillo.pot dillo-0.8.6-i18n-misc-20060709/po/dillo.pot --- dillo-0.8.6/po/dillo.pot 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/po/dillo.pot 2006-07-09 00:49:42.000000000 +0900 @@ -0,0 +1,1908 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , 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 \n" +"Language-Team: LANGUAGE \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" +" x{+-}{+-}" +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
    \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: . -- expected \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 " or  outside \n"
    +msgstr ""
    +
    +#: src/html.c:2191
    +msgid "\n"
    +msgstr ""
    +
    +#: src/html.c:2309
    +msgid "Invalid HTML syntax:  outside 
    or outside
    \n" +msgstr "" + +#: src/html.c:2367 +msgid " outside of <frameset>!!!\n" +msgstr "" + +#: src/html.c:2375 +msgid "<noframe> is illegal tag !!! use <noframes>.\n" +msgstr "" + +#: src/html.c:2562 +msgid "<frame> outside of <frameset>\n" +msgstr "" + +#: src/html.c:2565 +msgid "<frame> inside of <noframes>\n" +msgstr "" + +#: src/html.c:2568 +msgid "<frame> inside of <iframe>\n" +msgstr "" + +#: src/html.c:2620 +msgid "incorrectly placed <frameset>\n" +msgstr "" + +#: src/html.c:2636 +msgid "<frameset> inside of <noframes>\n" +msgstr "" + +#: src/html.c:2641 +msgid "<frameset> inside of <iframe>\n" +msgstr "" + +#: src/html.c:3123 +msgid " Html_tag_open_img: server-side map (ISMAP)\n" +msgstr "" + +#: src/html.c:3149 +msgid "nested <map>\n" +msgstr "" + +#: src/html.c:3201 +msgid "usemap coords MUST be separated with ','\n" +msgstr "" + +#: src/html.c:3245 +msgid "nohref" +msgstr "" + +#: src/html.c:3284 +msgid "link depends on javascript()\n" +msgstr "" + +#: src/html.c:3300 +#, c-format +msgid "Registering ANCHOR: %s\n" +msgstr "" + +#: src/html.c:3305 +msgid "Anchor names must be unique within the document\n" +msgstr "" + +#: src/html.c:3512 +msgid "it is strongly recommended using <UL> instead of <MENU>\n" +msgstr "" + +#: src/html.c:3574 +msgid "<li> outside <ul> or <ol>\n" +msgstr "" + +#: src/html.c:3770 +msgid "nested forms\n" +msgstr "" + +#: src/html.c:3817 +msgid "FORM lacks a Submit button\n" +msgstr "" + +#: src/html.c:3819 +msgid " (added a submit button internally)\n" +msgstr "" + +#: src/html.c:3923 +msgid "META elements must be inside the HEAD section\n" +msgstr "" + +#: src/html.c:3975 +#, c-format +msgid "" +"The NON-STANDARD meta refresh tag. The HTML 4.01 SPEC (sec 7.4.4) recommends " +"explicitly to avoid it. The author wanted you to go <%s>\n" +msgstr "" + +#: src/html.c:4345 +msgid "Html_submit_form: Method unknown\n" +msgstr "" + +#: src/html.c:4427 +msgid "Html_input_image: unable to create image submit.\n" +msgstr "" + +#: src/html.c:4449 +msgid "input camp outside <form>\n" +msgstr "" + +#: src/html.c:4529 +msgid "submit" +msgstr "" + +#: src/html.c:4536 config/dillocfg.c:79 +msgid "Reset" +msgstr "" + +#: src/html.c:4546 +msgid "Submit" +msgstr "" + +#: src/html.c:4563 +msgid "An input of the type \"file\" wasn't rendered!\n" +msgstr "" + +#: src/html.c:4737 +msgid "<textarea> outside <form>\n" +msgstr "" + +#: src/html.c:4742 +msgid "nested <textarea>\n" +msgstr "" + +#: src/html.c:4814 +msgid "<select> outside <form>\n" +msgstr "" + +#: src/html.c:4818 +msgid "nested <select>\n" +msgstr "" + +#: src/html.c:5042 +msgid "base URI is relative (it MUST be absolute)\n" +msgstr "" + +#: src/html.c:5049 +msgid "the BASE element must appear in the HEAD section\n" +msgstr "" + +#: src/html.c:5400 +#, c-format +msgid "<%1$s> is not allowed to contain <%2$s>. -- closing <%3$s>\n" +msgstr "" + +#: src/html.c:5515 +#, c-format +msgid "<pre> is not allowed to contain <%s>\n" +msgstr "" + +#: src/html.c:5537 +msgid "'id' and 'name' attribute of <a> tag differ\n" +msgstr "" + +#: src/html.c:5764 +msgid "Html_write_raw : bufsize is negative!\n" +msgstr "" + +#: src/html.c:5842 +msgid "attribute lacks closing quote\n" +msgstr "" + +#: src/html.c:5850 +#, c-format +msgid "<%s> element lacks its closing '>'\n" +msgstr "" + +#: src/html.c:6144 +msgid "could not allocate character encoding converter" +msgstr "" + +#: src/misc.c:455 +msgid "Untitled" +msgstr "" + +#: src/interface.c:249 +msgid "Selection retrieval failed\n" +msgstr "" + +#: src/interface.c:363 +msgid "Clear the URL box (middle-click to paste an URL)." +msgstr "" + +#: src/interface.c:385 +msgid "Search the Web" +msgstr "" + +#: src/interface.c:417 src/menu.c:231 src/menu.c:280 +msgid "Back" +msgstr "" + +#: src/interface.c:421 +msgid "Go to previous page (right-click for menu)." +msgstr "" + +#: src/interface.c:450 src/menu.c:233 src/menu.c:282 +msgid "Forward" +msgstr "" + +#: src/interface.c:454 +msgid "Go to next page (right-click for menu)." +msgstr "" + +#: src/interface.c:481 +msgid "Home" +msgstr "" + +#: src/interface.c:485 +msgid "Go to the Home page" +msgstr "" + +#: src/interface.c:499 config/dillocfg.c:80 +msgid "Reload" +msgstr "" + +#: src/interface.c:500 +msgid "Reload this page" +msgstr "" + +#: src/interface.c:512 config/dillocfg.c:81 +msgid "Save" +msgstr "" + +#: src/interface.c:513 +msgid "Save this page" +msgstr "" + +#: src/interface.c:520 src/menu.c:235 src/menu.c:284 +msgid "Stop" +msgstr "" + +#: src/interface.c:521 +msgid "Stop the current transfer" +msgstr "" + +#: src/interface.c:534 +msgid "Book" +msgstr "" + +#: src/interface.c:538 +msgid "View bookmarks" +msgstr "" + +#: src/interface.c:655 src/interface.c:826 +msgid "Hide Controls" +msgstr "" + +#: src/interface.c:655 src/interface.c:826 +msgid "Show Controls" +msgstr "" + +#: src/interface.c:929 +msgid "Show HTML bugs (right-click for menu)." +msgstr "" + +#: src/interface.c:1231 +#, c-format +msgid "Warning: search_url ends with '%%'\n" +msgstr "" + +#: src/interface.c:1233 +#, c-format +msgid "Warning: illegal specifier '%%%c' in search_url\n" +msgstr "" + +#: src/interface.c:1298 +msgid "Dillo: Open File" +msgstr "" + +#: src/interface.c:1374 +msgid "Clear" +msgstr "" + +#: src/interface.c:1382 src/interface.c:1536 src/nav.c:453 +msgid "Cancel" +msgstr "" + +#: src/interface.c:1513 +msgid "User Name:" +msgstr "" + +#: src/interface.c:1520 +msgid "Password:" +msgstr "" + +#: src/interface.c:1529 src/interface.c:1604 src/interface.c:2073 +#: src/nav.c:453 +msgid "OK" +msgstr "" + +#: src/interface.c:1566 +msgid "Dillo: Enter Authentication" +msgstr "" + +#: src/interface.c:1586 +msgid "Dillo: Question" +msgstr "" + +#: src/interface.c:1602 +msgid "Dillo: Open URL" +msgstr "" + +#: src/interface.c:1626 +#, c-format +msgid "File saved (%d Bytes)" +msgstr "" + +#: src/interface.c:1708 +#, c-format +msgid "Error trying to save: %s\n" +msgstr "" + +#: src/interface.c:1761 +msgid "Dillo: Save URL as File..." +msgstr "" + +#: src/interface.c:1788 +msgid "Dillo: Save link as File..." +msgstr "" + +#: src/interface.c:1843 src/interface.c:1857 +msgid "Dillo: Find text" +msgstr "" + +#: src/interface.c:1844 src/interface.c:1850 +#, c-format +msgid "Cannot find \"%s\"." +msgstr "" + +#: src/interface.c:1858 +#, c-format +msgid "No further occurence of \"%s\". Restarting from the beginning." +msgstr "" + +#: src/interface.c:1866 +#, c-format +msgid "(Find) \"%s\": restart from beginning" +msgstr "" + +#: src/interface.c:1879 +#, c-format +msgid "(Find) \"%s\"" +msgstr "" + +#: src/interface.c:1885 +msgid "Unexpected return from a_Dw_gtk_scrolled_window_search()\n" +msgstr "" + +#: src/interface.c:1937 +msgid "press <Enter> to (repeat) search, <Esc> to close search" +msgstr "" + +#: src/interface.c:1938 src/interface.c:2031 +msgid "Search" +msgstr "" + +#: src/interface.c:1940 src/interface.c:1941 src/interface.c:1977 +msgid "Case sensitive" +msgstr "" + +#: src/interface.c:1975 +msgid "Dillo: Find text in page" +msgstr "" + +#: src/interface.c:1978 +msgid "Find" +msgstr "" + +#: src/interface.c:2029 +msgid "Dillo" +msgstr "" + +#: src/interface.c:2029 +msgid "Dillo: Search the Web" +msgstr "" + +#: src/interface.c:2066 +#, c-format +msgid "Dillo: Enter proxy password for '%s'" +msgstr "" + +#: src/interface.c:2151 +msgid "Close" +msgstr "" + +#: src/interface.c:2226 +msgid "close" +msgstr "" + +#: src/nav.c:383 +#, c-format +msgid "Unhandled switch type %d in a_Nav_jump_callback in src/nav.c\n" +msgstr "" + +#: src/nav.c:452 +msgid "Repost form data?" +msgstr "" + +#: src/menu.c:173 +msgid "_File" +msgstr "" + +#: src/menu.c:174 +msgid "_New Window" +msgstr "" + +#: src/menu.c:177 +msgid "New _Tab" +msgstr "" + +#: src/menu.c:181 +msgid "_Open File..." +msgstr "" + +#: src/menu.c:183 +msgid "Open _URL..." +msgstr "" + +#: src/menu.c:189 +msgid "Close Window" +msgstr "" + +#: src/menu.c:192 src/menu.c:359 +msgid "Close Tab" +msgstr "" + +#: src/menu.c:196 +msgid "Exit Dillo" +msgstr "" + +#: src/menu.c:200 +msgid "_View" +msgstr "" + +#: src/menu.c:202 +msgid "Previous tab" +msgstr "" + +#: src/menu.c:204 +msgid "Next tab" +msgstr "" + +#: src/menu.c:208 +msgid "_Options..." +msgstr "" + +#: src/menu.c:228 +msgid "PAGE OPTIONS" +msgstr "" + +#: src/menu.c:237 src/menu.c:286 +msgid "_Reload" +msgstr "" + +#: src/menu.c:241 +msgid "View page So_urce" +msgstr "" + +#: src/menu.c:243 +msgid "View page Bugs" +msgstr "" + +#: src/menu.c:244 +msgid "_Bookmark this Page" +msgstr "" + +#: src/menu.c:247 +msgid "Duplicate this Page" +msgstr "" + +#: src/menu.c:250 +msgid "Duplicate this tab" +msgstr "" + +#: src/menu.c:254 +msgid "_Find Text" +msgstr "" + +#: src/menu.c:257 +msgid "Jump to..." +msgstr "" + +#: src/menu.c:258 +msgid "This Frame..." +msgstr "" + +#: src/menu.c:259 +msgid "This Frameset..." +msgstr "" + +#: src/menu.c:262 +msgid "Save Page As..." +msgstr "" + +#: src/menu.c:277 +msgid "FRAME OPTIONS" +msgstr "" + +#: src/menu.c:290 +msgid "View frame Source" +msgstr "" + +#: src/menu.c:292 +msgid "Bookmark this Frame" +msgstr "" + +#: src/menu.c:294 +msgid "Reload this Frame" +msgstr "" + +#: src/menu.c:297 +msgid "Show only this Frame" +msgstr "" + +#: src/menu.c:299 +msgid "Open Frame in new Window" +msgstr "" + +#: src/menu.c:302 +msgid "Open Frame in new Tab" +msgstr "" + +#: src/menu.c:306 +msgid "_Find Text in this Frame..." +msgstr "" + +#: src/menu.c:309 src/menu.c:340 +msgid "Save Frame As..." +msgstr "" + +#: src/menu.c:325 +msgid "FRAMESET OPTIONS" +msgstr "" + +#: src/menu.c:327 +msgid "View Frameset Source" +msgstr "" + +#: src/menu.c:329 +msgid "Bookmark this Frameset" +msgstr "" + +#: src/menu.c:331 +msgid "Reload this Frameset" +msgstr "" + +#: src/menu.c:334 +msgid "Show only this Frameset" +msgstr "" + +#: src/menu.c:337 +msgid "_Find Text in this Frameset..." +msgstr "" + +#: src/menu.c:357 +msgid "TAB OPTIONS" +msgstr "" + +#: src/menu.c:361 +msgid "New Tab" +msgstr "" + +#: src/menu.c:363 +msgid "Reload Tab" +msgstr "" + +#: src/menu.c:460 +msgid "FOLLOWING PAGES" +msgstr "" + +#: src/menu.c:463 +msgid "PREVIOUS PAGES" +msgstr "" + +#: src/menu.c:531 +msgid "LINK OPTIONS" +msgstr "" + +#: src/menu.c:533 +msgid "Open Link in New Window" +msgstr "" + +#: src/menu.c:536 +msgid "Open Link in New Tab" +msgstr "" + +#: src/menu.c:539 +msgid "Open Link" +msgstr "" + +#: src/menu.c:542 +msgid "Bookmark this Link" +msgstr "" + +#: src/menu.c:544 +msgid "Copy Link location" +msgstr "" + +#: src/menu.c:549 +msgid "Save Link As..." +msgstr "" + +#: src/menu.c:553 +msgid "Image Menu..." +msgstr "" + +#: src/menu.c:571 +msgid "IMAGE OPTIONS" +msgstr "" + +#: src/menu.c:573 +msgid "Isolate Image" +msgstr "" + +#: src/menu.c:575 +msgid "Open Image in New Window" +msgstr "" + +#: src/menu.c:578 +msgid "Open Image in New Tab" +msgstr "" + +#: src/menu.c:581 +msgid "Open Image" +msgstr "" + +#: src/menu.c:584 +msgid "Bookmark this Image" +msgstr "" + +#: src/menu.c:586 +msgid "Copy Image location" +msgstr "" + +#: src/menu.c:591 +msgid "Save Image As..." +msgstr "" + +#: src/menu.c:605 +msgid "BUG METER OPTIONS" +msgstr "" + +#: src/menu.c:607 +msgid "Validate URL with W3C" +msgstr "" + +#: src/menu.c:609 +msgid "Validate URL with WDG" +msgstr "" + +#: src/menu.c:612 +msgid "About Bug Meter..." +msgstr "" + +#: src/prefs.c:431 +msgid "Error: Can't open specified config file. default file is used.\n" +msgstr "" + +#: src/i18n.c:359 +msgid "charset detect may mistake...\n" +msgstr "" + +#: src/i18n.c:447 +msgid "<meta> outside of <head>!\n" +msgstr "" + +#: src/i18n.c:493 +msgid "all ascii code\n" +msgstr "" + +#: src/i18n.c:526 +msgid "unable to fully convert between character encodings\n" +msgstr "" + +#: src/i18n.c:565 +msgid "no support enc\n" +msgstr "" + +#: src/tab.c:293 src/tab.c:425 dpi/bookmarks.c:1653 +msgid "(Untitled)" +msgstr "" + +#: src/IO/https.c:168 +msgid "--Error detected\n" +msgstr "" + +#: src/IO/https.c:173 src/IO/https.c:204 src/IO/http.c:294 +msgid "ERROR: unable to connect to remote host" +msgstr "" + +#: src/IO/https.c:179 src/IO/http.c:309 +msgid "--Connection established\n" +msgstr "" + +#: src/IO/https.c:280 src/IO/http.c:417 +#, c-format +msgid "Sending query to %s..." +msgstr "" + +#: src/IO/https.c:333 src/IO/http.c:486 +#, c-format +msgid "DNS solving %s" +msgstr "" + +#: src/IO/https.c:363 +msgid " HTTPS: new abort handler! #2\n" +msgstr "" + +#: src/IO/https.c:365 src/IO/https.c:387 src/IO/http.c:301 src/IO/http.c:520 +#: src/IO/http.c:551 +#, c-format +msgid "ERROR: %s" +msgstr "" + +#: src/IO/https.c:386 +msgid " HTTP: new abort handler! #1\n" +msgstr "" + +#: src/IO/https.c:400 src/IO/http.c:564 +#, c-format +msgid "ERROR: Dns can't solve %s" +msgstr "" + +#: src/IO/https.c:421 src/IO/http.c:591 +msgid "Query sent, waiting for reply..." +msgstr "" + +#: src/IO/http.c:190 +#, c-format +msgid "Getting %1$s, referer %2$s\n" +msgstr "" + +#: src/IO/http.c:259 +#, c-format +msgid "" +"Query:\n" +"%s" +msgstr "" + +#: src/IO/http.c:286 +msgid "--Connection broken\n" +msgstr "" + +#: src/IO/http.c:342 +#, c-format +msgid "Http_connect_socket ERROR: %s\n" +msgstr "" + +#: src/IO/http.c:363 src/IO/http.c:377 +#, c-format +msgid "Connecting to %s\n" +msgstr "" + +#: src/IO/http.c:396 +msgid "Contacting host..." +msgstr "" + +#: src/IO/http.c:529 +msgid "Http: OpAbort [1B]\n" +msgstr "" + +#: src/IO/dpi.c:188 +msgid "ERROR: [Dpi_get_token] Can't find token start\n" +msgstr "" + +#: src/IO/dpi.c:221 +msgid "ERROR: [Dpi_get_token] *** NULL code here ***\n" +msgstr "" + +#: src/IO/dpi.c:312 +msgid "Dpi: [Dpi_process_io] IOClose\n" +msgstr "" + +#: src/IO/dpi.c:338 +#, c-format +msgid "Dpi_start_dpid (child): %s\n" +msgstr "" + +#: src/IO/dpi.c:348 src/IO/dpi.c:363 +#, c-format +msgid "Dpi_start_dpid: %s\n" +msgstr "" + +#: src/IO/dpi.c:359 +#, c-format +msgid "Dpi_start_dpid: n = %d\n" +msgstr "" + +#: src/IO/dpi.c:386 +#, c-format +msgid "Dpi_check_uds: %1$s %2$s\n" +msgstr "" + +#: src/IO/dpi.c:673 +msgid "dpi.c: ERROR, can't start dpi daemon\n" +msgstr "" + +#: src/IO/dpi.c:686 +msgid "a_Dpi_ccc: OpAbort[2B], Not implemented\n" +msgstr "" + +#: src/IO/dpi.c:790 src/IO/dpi.c:794 +#, c-format +msgid "a_Dpi_bye_dpid: %s\n" +msgstr "" + +#: dpid/dpi_socket_dir.c:106 +#, c-format +msgid "The dpi_socket_dir file does not exist\n" +msgstr "" + +#: dpid/dpi_socket_dir.c:110 dpid/dpi_socket_dir.c:114 +#, c-format +msgid "debug_msg - init_sockdir: The socket directory " +msgstr "" + +#: dpid/dpi_socket_dir.c:111 +#, c-format +msgid "%s exists and is OK\n" +msgstr "" + +#: dpid/dpi_socket_dir.c:115 +#, c-format +msgid "%s does not exist or is not a directory\n" +msgstr "" + +#: dpid/dpi_socket_dir.c:124 +#, c-format +msgid " - Failed to create dpi socket directory\n" +msgstr "" + +#: dpid/dpi_socket_dir.c:127 +#, c-format +msgid " - failed to save %s\n" +msgstr "" + +#: dpid/main.c:59 dpid/main.c:66 dpid/main.c:77 dpid/main.c:85 dpid/main.c:99 +#: dpid/main.c:104 dpid/main.c:109 +#, c-format +msgid "ERROR in child proc for %s\n" +msgstr "" + +#: dpid/main.c:166 +#, c-format +msgid ": dpid failed to parse cmd in %s\n" +msgstr "" + +#: dpid/main.c:265 +#, c-format +msgid "Failed to create socket directory\n" +msgstr "" + +#: dpid/main.c:275 +#, c-format +msgid "dpid refuses to start, possibly because:\n" +msgstr "" + +#: dpid/main.c:276 +#, c-format +msgid "\t1) An instance of dpid is already running.\n" +msgstr "" + +#: dpid/main.c:277 +#, c-format +msgid "\t2) A previous dpid didn't clean up on exit.\n" +msgstr "" + +#: dpid/main.c:280 +msgid "init_srs_sockets failed\n" +msgstr "" + +#: dpid/main.c:294 +#, c-format +msgid "dpid started\n" +msgstr "" + +#: dpid/main.c:340 +#, c-format +msgid "accept on srs socket failed\n" +msgstr "" + +#: dpid/main.c:341 +#, c-format +msgid "service pending connections, and continue\n" +msgstr "" + +#: dpi/bookmarks.c:96 +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>Bookmarks</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr>\n" +" <td>&nbsp;Bookmarks::</td>\n" +" <td width='100%' align='right'>\n" +" [<a href='dpi:/bm/modify'>modify</a>]\n" +" </td></tr>\n" +" </table></td></tr>\n" +"</table>\n" +"<br>\n" +msgstr "" + +#: dpi/bookmarks.c:115 +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>Bookmarks</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr>\n" +" <td>&nbsp;Bookmarks :: modify</td></tr>\n" +" </table></td></tr> \n" +"</table> \n" +"\n" +"<form>\n" +"<table width='100%' border='1' cellpadding='0'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td><b>Select&nbsp;an&nbsp;operation&nbsp;</b></td>\n" +" <td><select name='operation'>\n" +" <option value='none' selected>--\n" +" <option value='delete'>Delete\n" +" <option value='move'>Move\n" +" <option value='modify'>Modify\n" +" <option value='add_sec'>Add Section\n" +" <option value='add_url'>Add URL\n" +" </select></td>\n" +" <td><b>,&nbsp;mark&nbsp;its&nbsp;operands,&nbsp;and&nbsp;</b></td>\n" +" <td><input type='submit' name='submit' value='submit.'></td>\n" +" <td width='100%'></td>\n" +" </tr>\n" +" </table></td></tr>\n" +"</table>\n" +msgstr "" + +#: dpi/bookmarks.c:151 +msgid "" +"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n" +" <tr valign='top'>\n" +" <td>\n" +" <table bgcolor='#b4b4b4' border='2' cellpadding='4' cellspacing='1'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n" +msgstr "" + +#: dpi/bookmarks.c:160 +msgid "" +"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n" +" <tr valign='top'>\n" +" <td>\n" +" <table bgcolor='#b4b4b4' border='1'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n" +msgstr "" + +#: dpi/bookmarks.c:243 +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>Bookmarks</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: add section\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +" <input type='hidden' name='operation' value='add_section'>\n" +"<table border='1' width='100%'>\n" +" <tr>\n" +" <td bgcolor='olive'><b>New&nbsp;section:</b></td>\n" +" <td bgcolor='white' width='100%'></td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='10'>\n" +"<tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td>Title:</td>\n" +" <td><input type='text' name='title' size='64'></td></tr>\n" +" </table>\n" +" </td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='submit.'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" +"\n" +msgstr "" + +#: dpi/bookmarks.c:283 +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>Bookmarks</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: update\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +"<input type='hidden' name='operation' value='modify2'>\n" +msgstr "" + +#: dpi/bookmarks.c:310 +#, c-format +msgid "" +"<tr><td>\n" +" <table width='100%%' bgcolor='teal'>\n" +" <tr>\n" +" <td>Title:</td>\n" +" <td><input type='text' name='title%d' size='64'\n" +" value='%s'></td></tr>\n" +" <tr>\n" +" <td>URL:</td>\n" +" <td>%s</td></tr>\n" +" </table>\n" +" </td></tr>\n" +msgstr "" + +#: dpi/bookmarks.c:323 +#, c-format +msgid "" +"<tr><td>\n" +" <table width='100%%' bgcolor='teal'>\n" +" <tr>\n" +" <td>Title:</td>\n" +" <td><input type='text' name='s%d' size='64'\n" +" value='%s'></td></tr>\n" +" </table>\n" +" </td></tr>\n" +msgstr "" + +#: dpi/bookmarks.c:336 +#, c-format +msgid "" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='submit.'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" +msgstr "" + +#: dpi/bookmarks.c:346 +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>Bookmarks</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: add url\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +"<input type='hidden' name='operation' value='add_url2'>\n" +"<table border='1' width='100%'>\n" +" <tr>\n" +" <td bgcolor='olive'><b>Add&nbsp;url:</b></td>\n" +" <td bgcolor='white' width='100%'></td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='10'>\n" +"<tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td>Title:</td>\n" +" <td><input type='text' name='title' size='64'></td></tr>\n" +" <tr>\n" +" <td>URL:</td>\n" +" <td><input type='text' name='url' size='64'></td></tr>\n" +" </table>\n" +" </td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='submit.'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" +msgstr "" + +#: dpi/bookmarks.c:691 +msgid "Unclassified" +msgstr "" + +#: dpi/bookmarks.c:724 +#, c-format +msgid "echo \":s0: Unclassified\" > %s" +msgstr "" + +#: dpi/bookmarks.c:786 +#, c-format +msgid "" +"Syntax error in bookmarks file:\n" +" %s" +msgstr "" + +#: dpi/bookmarks.c:898 +msgid "Added bookmark!" +msgstr "" + +#: dpi/bookmarks.c:1087 +msgid "Update&nbsp;sections:" +msgstr "" + +#: dpi/bookmarks.c:1107 +msgid "Update&nbsp;titles:" +msgstr "" + +#: dpi/bookmarks.c:1404 +msgid "Delete: you must mark what to delete!" +msgstr "" + +#: dpi/bookmarks.c:1410 +msgid "Move: you must mark a target section!" +msgstr "" + +#: dpi/bookmarks.c:1412 +msgid "Move: can not move a section (yet)." +msgstr "" + +#: dpi/bookmarks.c:1414 +msgid "Move: you must mark some urls, and a target section!" +msgstr "" + +#: dpi/bookmarks.c:1419 +msgid "Modify: you must mark what to update!" +msgstr "" + +#: dpi/bookmarks.c:1436 +msgid "Add url: only one target section is allowed!" +msgstr "" + +#: dpi/bookmarks.c:1443 +msgid "No operation, just do nothing!" +msgstr "" + +#: dpi/bookmarks.c:1446 +msgid "Sorry, not implemented yet." +msgstr "" + +#: dpi/bookmarks.c:1614 +msgid "Haven't got a full tag!\n" +msgstr "" + +#: dpi/bookmarks.c:1690 +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<HTML><body> Error on the bookmarks server...</body></html>" +msgstr "" + +#: config/dillocfg.c:82 +msgid "Quit" +msgstr "" + +#: config/dillocfg.c:84 config/dillocfg.c:90 +msgid "Dillo Preferences" +msgstr "" + +#: config/dillocfg.c:113 +msgid "Interface" +msgstr "" + +#: config/dillocfg.c:114 +msgid " Font " +msgstr "" + +#: config/dillocfg.c:115 +msgid " Color " +msgstr "" + +#: config/dillocfg.c:116 +msgid " Network " +msgstr "" + +#: config/dillocfg.c:118 +msgid " Tab " +msgstr "" + +#: config/dillocfg.c:121 +msgid " Other " +msgstr "" + +#: config/dillocfg.c:329 +msgid "Add" +msgstr "" + +#: config/dillocfg.c:330 +msgid "Delete" +msgstr "" + +#: config/dillocfg.c:336 +msgid "Address" +msgstr "" + +#: config/dillocfg.c:337 +msgid "Rule" +msgstr "" + +#: config/dillocfg.c:363 config/dillocfg.c:369 +#, c-format +msgid "Read failed <%s>\n" +msgstr "" + +#: config/dillocfg.c:450 config/dillocfg.c:458 +#, c-format +msgid "can't write <%s>\n" +msgstr "" + +#: config/dillocfg_token.c:60 +msgid "Window Size" +msgstr "" + +#: config/dillocfg_token.c:68 +msgid "HTTP Proxy" +msgstr "" + +#: config/dillocfg_token.c:76 +msgid "HTTP Proxy User" +msgstr "" + +#: config/dillocfg_token.c:84 +msgid "NO Proxy" +msgstr "" + +#: config/dillocfg_token.c:92 +msgid "User-Agent" +msgstr "" + +#: config/dillocfg_token.c:100 +msgid "Send referer header" +msgstr "" + +#: config/dillocfg_token.c:108 +msgid "Link color" +msgstr "" + +#: config/dillocfg_token.c:116 +msgid "Visited color" +msgstr "" + +#: config/dillocfg_token.c:124 +msgid "BackGround color" +msgstr "" + +#: config/dillocfg_token.c:132 +msgid "Allow white bg" +msgstr "" + +#: config/dillocfg_token.c:140 +msgid "Force my colors" +msgstr "" + +#: config/dillocfg_token.c:148 +msgid "Contrast visited color" +msgstr "" + +#: config/dillocfg_token.c:156 +msgid "Text color" +msgstr "" + +#: config/dillocfg_token.c:164 +msgid "Use oblique" +msgstr "" + +#: config/dillocfg_token.c:172 +msgid "Start Page" +msgstr "" + +#: config/dillocfg_token.c:180 +msgid "HOMEPAGE" +msgstr "" + +#: config/dillocfg_token.c:188 +msgid "Search-engine's URL" +msgstr "" + +#: config/dillocfg_token.c:196 +msgid "Search-engine's charset" +msgstr "" + +#: config/dillocfg_token.c:204 +msgid "Show Tooltip" +msgstr "" + +#: config/dillocfg_token.c:212 +msgid "Panel Size" +msgstr "" + +#: config/dillocfg_token.c:220 +msgid "Small icons" +msgstr "" + +#: config/dillocfg_token.c:228 +msgid "Limit text width" +msgstr "" + +#: config/dillocfg_token.c:236 +msgid "Limit font decoration" +msgstr "" + +#: config/dillocfg_token.c:244 +msgid "Font factor" +msgstr "" + +#: config/dillocfg_token.c:252 +msgid "Font Sizes" +msgstr "" + +#: config/dillocfg_token.c:260 +msgid "W3C+heuristics" +msgstr "" + +#: config/dillocfg_token.c:268 +msgid "Use dicache" +msgstr "" + +#: config/dillocfg_token.c:276 +msgid "Show Back" +msgstr "" + +#: config/dillocfg_token.c:284 +msgid "Show Forw" +msgstr "" + +#: config/dillocfg_token.c:292 +msgid "Show Home" +msgstr "" + +#: config/dillocfg_token.c:300 +msgid "Show Reload" +msgstr "" + +#: config/dillocfg_token.c:308 +msgid "Show Save" +msgstr "" + +#: config/dillocfg_token.c:316 +msgid "Show Stop" +msgstr "" + +#: config/dillocfg_token.c:324 +msgid "Show Bookmarks" +msgstr "" + +#: config/dillocfg_token.c:332 +msgid "Show Menubar" +msgstr "" + +#: config/dillocfg_token.c:340 +msgid "Show ClearURL" +msgstr "" + +#: config/dillocfg_token.c:348 +msgid "Show URL box" +msgstr "" + +#: config/dillocfg_token.c:356 +msgid "Show Web Search" +msgstr "" + +#: config/dillocfg_token.c:364 +msgid "Show Progress box" +msgstr "" + +#: config/dillocfg_token.c:372 +msgid "Show Popup navigation" +msgstr "" + +#: config/dillocfg_token.c:380 +msgid "Fullwindow start" +msgstr "" + +#: config/dillocfg_token.c:388 +msgid "Transient dialogs" +msgstr "" + +#: config/dillocfg_token.c:396 +msgid "Popup dialogs" +msgstr "" + +#: config/dillocfg_token.c:404 +msgid "vw_aafontname" +msgstr "" + +#: config/dillocfg_token.c:412 +msgid "fw_aafontname" +msgstr "" + +#: config/dillocfg_token.c:420 +msgid "vw_fontname" +msgstr "" + +#: config/dillocfg_token.c:428 +msgid "fw_fontname" +msgstr "" + +#: config/dillocfg_token.c:436 +msgid "Generate submit" +msgstr "" + +#: config/dillocfg_token.c:444 +msgid "Enterpress forces submit" +msgstr "" + +#: config/dillocfg_token.c:452 +msgid "Show debugging messsages" +msgstr "" + +#: config/dillocfg_token.c:460 +msgid "Show Extra Warnings" +msgstr "" + +#: config/dillocfg_token.c:468 +msgid "Focus location on new" +msgstr "" + +#: config/dillocfg_token.c:476 config/dillocfg_token.c:484 +msgid "Accept Language" +msgstr "" + +#: config/dillocfg_token.c:493 +msgid "Tab load in background" +msgstr "" + +#: config/dillocfg_token.c:501 +msgid "Tab close middle click" +msgstr "" + +#: config/dillocfg_token.c:509 +msgid "Tab instead of window" +msgstr "" + +#: config/dillocfg_token.c:517 +msgid "Tab bar show fullscreen" +msgstr "" + +#: config/dillocfg_token.c:525 +msgid "Tab bar show single tab" +msgstr "" + +#: config/dillocfg_token.c:533 +msgid "Tab bar scroller" +msgstr "" + +#: config/dillocfg_token.c:541 +msgid "Tab bar homogeneous" +msgstr "" + +#: config/dillocfg_token.c:549 +msgid "Tab title compress" +msgstr "" + +#: config/dillocfg_token.c:557 +msgid "Compress vowels" +msgstr "" + +#: config/dillocfg_token.c:565 +msgid "Compress_common_prefixes" +msgstr "" + +#: config/dillocfg_token.c:574 +msgid "Default" +msgstr "" diff -pruN dillo-0.8.6/po/en@boldquot.header dillo-0.8.6-i18n-misc-20060709/po/en@boldquot.header --- dillo-0.8.6/po/en@boldquot.header 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/po/en@boldquot.header 2006-05-16 01:21:06.000000000 +0900 @@ -0,0 +1,25 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# +# This catalog furthermore displays the text between the quotation marks in +# bold face, assuming the VT100/XTerm escape sequences. +# diff -pruN dillo-0.8.6/po/en@quot.header dillo-0.8.6-i18n-misc-20060709/po/en@quot.header --- dillo-0.8.6/po/en@quot.header 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/po/en@quot.header 2006-05-16 01:21:06.000000000 +0900 @@ -0,0 +1,22 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# diff -pruN dillo-0.8.6/po/insert-header.sin dillo-0.8.6-i18n-misc-20060709/po/insert-header.sin --- dillo-0.8.6/po/insert-header.sin 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/po/insert-header.sin 2006-05-16 01:21:06.000000000 +0900 @@ -0,0 +1,23 @@ +# Sed script that inserts the file called HEADER before the header entry. +# +# At each occurrence of a line starting with "msgid ", we execute the following +# commands. At the first occurrence, insert the file. At the following +# occurrences, do nothing. The distinction between the first and the following +# occurrences is achieved by looking at the hold space. +/^msgid /{ +x +# Test if the hold space is empty. +s/m/m/ +ta +# Yes it was empty. First occurrence. Read the file. +r HEADER +# Output the file's contents by reading the next line. But don't lose the +# current line while doing this. +g +N +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} ¥Ð¥¤¥Ê¥ê¡¼¡¦¥Õ¥¡¥¤¥ëdillo-0.8.6/po/ja.gmo¤Èdillo-0.8.6-i18n-misc-20060709/po/ja.gmo¤Ï°ã¤¤¤Þ¤¹ diff -pruN dillo-0.8.6/po/ja.po dillo-0.8.6-i18n-misc-20060709/po/ja.po --- dillo-0.8.6/po/ja.po 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/po/ja.po 2006-07-09 00:49:43.000000000 +0900 @@ -0,0 +1,2207 @@ +# DILLO 日本語メッセージ +# Copyright (C) 2003-2006 +# This file is distributed under the same license as the dillo package. +# Kiyo <kiyo@teki.jpn.ph>, 2003-2006. +msgid "" +msgstr "" +"Project-Id-Version: dillo 0.8.6-i18n-misc\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2006-07-09 00:49+0900\n" +"PO-Revision-Date: 2006-03-26 22:06+0900\n" +"Last-Translator: Kiyo <kiyo@teki.jpn.ph>\n" +"Language-Team: Japanese <kiyo@teki.jpn.ph>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/msg.h:27 +msgid "HTTP warning: " +msgstr "HTTP 警告: " + +#: src/auth.c:87 +msgid "Browser Url has changed\n" +msgstr "ブラウザã®UrlãŒå¤‰æ›´ã•ã‚Œã¦ã„ã¾ã—ãŸ\n" + +#: src/cache.c:253 +msgid "WARNING: Cache_entry_add, leaking an entry.\n" +msgstr "警告: Cache_entry_addã§ã‚¨ãƒ³ãƒˆãƒªãƒ¼ãŒæ¼ã‚Œã¦ã„ã¾ã™ã€‚\n" + +#: src/cache.c:316 +msgid "## Aborting CCCQuery\n" +msgstr "## CCCQueryをアボートã—ã¦ã„ã¾ã™\n" + +#: src/cache.c:319 +msgid "## Aborting CCCAnswer\n" +msgstr "## CCCAnswerをアボートã—ã¦ã„ã¾ã™\n" + +#: src/cache.c:322 +msgid "## Aborting raw2\n" +msgstr "## raw2をアボートã—ã¦ã„ã¾ã™\n" + +#: src/cache.c:365 +msgid "## No more clients for this entry\n" +msgstr "## ã“ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã«ã¯ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆãŒã‚ã‚Šã¾ã›ã‚“\n" + +#: src/cache.c:369 +msgid "Cache_prepare_reload: ERROR, entry still has clients\n" +msgstr "" +"Cache_prepare_reload: エラー エントリーãŒã¾ã ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚’æŒã£ã¦ã„ã¾ã™\n" + +#: src/cache.c:398 +#, c-format +msgid "Reloading >%s< because it shouldn't be cached\n" +msgstr "キャッシュã•ã‚Œã‚‹ã¹ãã§ã¯ãªã„ã®ã§>%s<ã‚’å†èª­ã¿è¾¼ã¿ã—ã¦ã„ã¾ã™\n" + +#: src/cache.c:418 +msgid "ERROR: unsupported protocol" +msgstr "エラー: サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„プロトコルã§ã™" + +#: src/cache.c:488 +#, c-format +msgid "Redirect loop for URL: >%s<\n" +msgstr "URL: >%s<ã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆãƒ«ãƒ¼ãƒ—\n" + +#: src/cache.c:590 +#, c-format +msgid "Bad clocks, ignore expire on >%s<\n" +msgstr "ä¸æ­£ãªæ™‚é–“ã§ã™ã€‚>%s<ã®æœ‰åŠ¹æœŸé™ã‚’無視ã—ã¾ã™\n" + +#: src/cache.c:594 +#, c-format +msgid "Forcing min expire %d on >%s< instead %ld\n" +msgstr "最å°æœ‰åŠ¹æœŸé™%dã‚’>%s<ã§%ldã®ä»£ã‚ã‚Šã«å¼·åˆ¶ã—ã¾ã™\n" + +#: src/cache.c:678 +msgid "'Cache-Control: max-age=' without 'Date: ' header" +msgstr "'Date: 'ヘッダã®ç„¡ã„'Cache-Control: max-age='" + +#: src/cache.c:722 +msgid "Server didn't send Content-Type in header.\n" +msgstr "サーãƒãƒ¼ãŒãƒ˜ãƒƒãƒ€ã§Content-Typeã‚’é€ä¿¡ã—ã¾ã›ã‚“ã§ã—ãŸã€‚\n" + +#: src/cache.c:743 +#, c-format +msgid "Forcing default expire to query url >%s<\n" +msgstr "è¦æ±‚ã•ã‚ŒãŸurl>%s<ã«ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®æœ‰åŠ¹æœŸé™ã‚’強制ã—ã¾ã™\n" + +#: src/cache.c:831 +#, c-format +msgid "Cache_decode_data: got all data -- decodinging %s\n" +msgstr "" +"Cache_decode_data: å…¨ã¦ã®ãƒ‡ãƒ¼ã‚¿ã‚’å–å¾—ã—ã¾ã—㟠-- %sをデコードã—ã¦ã„ã¾ã™\n" + +#: src/cache.c:840 +msgid "Cache_decode_data: not gzip data!\n" +msgstr "Cache_decode_data: gzipデータã§ã¯ã‚ã‚Šã¾ã›ã‚“!\n" + +#: src/cache.c:846 +msgid "Cache_decode_data: invalid gzip data!\n" +msgstr "Cache_decode_data: ä¸æ­£ãªgzipデータã§ã™!\n" + +#: src/cache.c:898 +msgid "not x-gzip\n" +msgstr "x-gzipã§ã¯ã‚ã‚Šã¾ã›ã‚“\n" + +#: src/cache.c:931 +#, c-format +msgid "" +"Content-Length does NOT match message body,\n" +" at: %s\n" +msgstr "" +"Content-LengthãŒmessage bodyã¨é©åˆã—ã¾ã›ã‚“ã§ã—ãŸã€‚\n" +": %s\n" + +#: src/cache.c:950 +msgid "Cache_process_io Op = IOAbort; not implemented yet\n" +msgstr "Cache_process_io Op = IOAbort; ã¾ã å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“\n" + +#: src/cache.c:1004 +#, c-format +msgid "ERROR: redirect loop for: %s" +msgstr "エラー: %sã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆãƒ«ãƒ¼ãƒ—" + +#: src/cache.c:1015 +#, c-format +msgid "" +">>>Redirect from: %s\n" +" to %s\n" +msgstr "" +">>>%sã‹ã‚‰\n" +"%sã¸ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã—ã¾ã™\n" + +#: src/cache.c:1035 +msgid ">>>Image redirection without entity-content<<<\n" +msgstr ">>>entity-contentã®ãªã„ç”»åƒã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆ<<<\n" + +#: src/cache.c:1037 +msgid ">>>Image redirection with entity-content<<<\n" +msgstr ">>>entity-contentã®ã‚ã‚‹ç”»åƒã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆ<<<\n" + +#: src/cache.c:1103 +msgid "FATAL!:*** >>>> Cache_process_queue Caught busy!!!\n" +msgstr "致命的!:*** >>>> Cache_process_queueã¯ãƒ“ジーを検出ã—ã¾ã—ãŸ!!!\n" + +#: src/cache.c:1111 +#, c-format +msgid "Content-Type '%s' doesn't match the real data.\n" +msgstr "Content-Type '%s'ã¯å®Ÿéš›ã®ãƒ‡ãƒ¼ã‚¿ã¨ãƒžãƒƒãƒã—ã¦ã„ã¾ã›ã‚“。\n" + +#: src/cache.c:1140 +#, c-format +msgid "HTTP warning: Content-Type '%s' doesn't match the real data." +msgstr "HTTP警告: Content-Type '%s'ã¯å®Ÿéš›ã®ãƒ‡ãƒ¼ã‚¿ã¨ãƒžãƒƒãƒã—ã¦ã„ã¾ã›ã‚“。" + +#: src/cache.c:1177 +#, c-format +msgid "Unhandled MIME type: <%s>\n" +msgstr "扱ãˆãªã„MIMEタイプ: <%s>\n" + +#: src/cache.c:1202 +msgid "Client Callback is NULL" +msgstr "クライアントã®ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯ãŒNULLã§ã™" + +#: src/cache.c:1303 +msgid "WARNING: Cache_stop_client, inexistent client\n" +msgstr "警告: Cache_stop_client クライアントãŒå­˜åœ¨ã—ã¾ã›ã‚“\n" + +#: src/cache.c:1445 src/capi.c:428 src/capi.c:481 src/capi.c:536 +#: src/capi.c:570 src/IO/dpi.c:720 src/IO/dpi.c:760 +msgid " Not implemented\n" +msgstr "ã™ã¿ã¾ã›ã‚“ã€ã¾ã å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“。\n" + +#: src/capi.c:229 +msgid "Capi_verify_dpi_url_request: Permission Denied!\n" +msgstr "Capi_verify_dpi_url_request: 許å¯ãŒã‚ã‚Šã¾ã›ã‚“!\n" + +#: src/capi.c:324 +#, c-format +msgid " reload=%d URL_E2EReload=%d\n" +msgstr " reload=%d URL_E2EReload=%d\n" + +#: src/capi.c:389 +msgid " ERROR: [a_Capi_dpi_send_cmd] No open connection found\n" +msgstr " エラー: [a_Capi_dpi_send_cmd] é–‹ã„ã¦ã„る接続ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ\n" + +#: src/capi.c:457 +msgid "ERROR: can't start dpid daemon!" +msgstr "エラー: dpidデーモンを開始ã§ãã¾ã›ã‚“" + +#: src/capi.c:492 +msgid " ** Capi 2F catched an invalid 'web' structure\n" +msgstr " ** Capi 2F 無効ãª'web'構造体をキャッãƒã—ã¾ã—ãŸ\n" + +#: src/capi.c:552 +msgid " Error with pipe\n" +msgstr "pipeã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ\n" + +#: src/commands.c:166 +msgid "View Source" +msgstr "ソースã®è¡¨ç¤º" + +#: src/commands.c:183 +msgid "Detected HTML errors" +msgstr "検出ã•ã‚ŒãŸHTMLã®ã‚¨ãƒ©ãƒ¼" + +#: src/commands.c:265 +msgid "Stopped" +msgstr "åœæ­¢ã—ã¾ã—ãŸã€‚" + +#: src/dillo.c:109 +msgid "" +" -x, --xid XID Open first Dillo window in an existing\n" +" GtkSocket which window ID is XID (decimal)." +msgstr "" +" -x, --xid XID window IDãŒXID(å進数)ã§ã‚る既存ã®GtkSocketã§\n" +" 最åˆã®Dilloã®windowã‚’é–‹ãã¾ã™ã€‚" + +#: src/dillo.c:112 +msgid " -v, --version Display version info and exit." +msgstr " -v, --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã¦çµ‚了ã—ã¾ã™ã€‚" + +#: src/dillo.c:114 +msgid " -h, --help Display this help text and exit." +msgstr " -h, --help ã“ã®ãƒ˜ãƒ«ãƒ—テキストを表示ã—ã¦çµ‚了ã—ã¾ã™ã€‚" + +#: src/dillo.c:116 +msgid "" +" -f, --fullwindow Start in full window mode: hide address bar,\n" +" navigation buttons, menu, and status bar." +msgstr "" +" -f, --fullwindow 全画é¢ãƒ¢ãƒ¼ãƒ‰ã§é–‹å§‹: アドレスãƒãƒ¼ã€\n" +" ナビゲーションボタンã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã€ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãƒãƒ¼ãŒéžè¡¨" +"示ã«ãªã‚Šã¾ã™ã€‚" + +#: src/dillo.c:119 +msgid " -l, --local Don't follow links for this URL(s)." +msgstr " -l, --local ã“ã®URLã§ãƒªãƒ³ã‚¯ã‚’ãŸã©ã‚Šã¾ã›ã‚“" + +#: src/dillo.c:121 +msgid "" +" -g, -geometry GEO Set initial window position where GEO is\n" +" <width>x<height>{+-}<x>{+-}<y>" +msgstr "" +" -g, -geometry GEO åˆæœŸã‚¦ã‚¤ãƒ³ãƒ‰ã‚¦ã®ä½ç½®ã‚’GEOã«è¨­å®šã—ã¾ã™ã€‚\n" +" <width>x<height>{+-}<x>{+-}<y>" + +#: src/dillo.c:125 +msgid "" +" -D, --debug-rendering Draw additionaly several lines in a web page,\n" +" representing its structure. For debugging. " +msgstr "" +" -D, --debug-rendering WEBページã®ä¸­ã«ãã®æ§‹é€ ã‚’表ã™ã‚ˆã†ã«ã€\n" +" ã„ãã¤ã‹ã®ç·šã‚’追加ã§æç”»ã—ã¾ã™ã€‚ デãƒãƒƒã‚°ç”¨ã§ã™ã€‚ " + +#: src/dillo.c:129 +msgid " -R, --rcfile FILE Use alternative rcfile." +msgstr " -R, --rcfile FILE 代ã‚ã‚Šã®è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’使用ã—ã¾ã™ã€‚" + +#: src/dillo.c:266 +#, c-format +msgid "" +"Error: the XID must be an unsigned decimal numerical value.\n" +"The offending value was: %s\n" +msgstr "" +"エラー: XIDã¯ç¬¦å·ç„¡ã—ã®å進数ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚\n" +"å•é¡Œã¨ãªã£ãŸå€¤: %s\n" + +#: src/dillo.c:284 +msgid "Error in command line options.\n" +msgstr "コマンドラインオプションã§ã‚¨ãƒ©ãƒ¼ãŒèµ·ãã¾ã—ãŸã€‚\n" + +#: src/dillo.c:291 +#, c-format +msgid "Setting gtk charset to %s...\n" +msgstr "gtk charsetã‚’%sã«è¨­å®šã—ã¦ã„ã¾ã™...\n" + +#: src/dillo.c:395 +msgid "Dillo: normal exit!\n" +msgstr "Dillo: 正常終了\n" + +#: src/dillo.c:409 +#, c-format +msgid "Dillo: error creating directory %s: %s\n" +msgstr "Dillo: ディレクトリ%sã®ä½œæˆã§ã‚¨ãƒ©ãƒ¼ã—ã¾ã—ãŸ: %s\n" + +#: src/dillo.c:412 +#, c-format +msgid "Dillo: error reading %s: %s\n" +msgstr "Dillo: %sã®èª­ã¿è¾¼ã¿ã§ã‚¨ãƒ©ãƒ¼ã—ã¾ã—ãŸ: %s\n" + +#: src/dillo.c:461 +#, c-format +msgid "Option %s requires %d argument(s)\n" +msgstr "オプション %sã¯%d個ã®å¼•æ•°ã‚’å¿…è¦ã¨ã—ã¾ã™\n" + +#: src/dillo.c:496 +msgid "" +"\n" +"Usage: dillo [OPTIONS] [URL|FILE]...\n" +"Options:\n" +msgstr "" +"\n" +"使ã„æ–¹: dillo [オプション] [URL|ファイル]...\n" +"オプション:\n" + +#: src/dillo.c:503 +#, c-format +msgid " %s, %s *Undocumented*\n" +msgstr " %s, %s (説明ãªã—)\n" + +#: src/dillo.c:506 +msgid "" +" URL URL to browse.\n" +" FILE Local FILE to view.\n" +msgstr "" +" URL ブラウズã™ã‚‹URL\n" +" FILE 表示ã™ã‚‹ãƒ­ãƒ¼ã‚«ãƒ«ãƒ•ã‚¡ã‚¤ãƒ«\n" + +#: src/html.c:182 +#, c-format +msgid "HTML warning: line %d, " +msgstr "HTML 警告: %d行目, " + +#: src/html.c:213 +#, c-format +msgid "URL has %d illegal character%s [%d space%s]\n" +msgstr "URLã«%d個ã®ä¸æ­£ãªæ–‡å­—%s [%d個ã®ã‚¹ãƒšãƒ¼ã‚¹%s]ãŒå«ã¾ã‚Œã¦ã„ã¾ã™\n" + +#: src/html.c:216 +#, c-format +msgid "URL has %d illegal character%s [%d in (00-1F or 7F)]\n" +msgstr "URLã«%d個ã®ä¸æ­£ãªæ–‡å­—%s[%d個ã®(00-1Fã¾ãŸã¯7F)]ãŒå«ã¾ã‚Œã¦ã„ã¾ã™\n" + +#: src/html.c:219 +#, c-format +msgid "URL has %d illegal character%s [%d space%s and %d in (00-1F or 7F)]\n" +msgstr "" +"URLã«%d個ã®ä¸æ­£ãªæ–‡å­—%s [%d個ã®ã‚¹ãƒšãƒ¼ã‚¹%sã¨%d個ã®(00-1F, 7F)]ãŒå«ã¾ã‚Œã¦ã„ã¾" +"ã™\n" + +#: src/html.c:1226 +msgid "numeric character reference out of range\n" +msgstr "数値文字å‚ç…§ãŒç¯„囲外ã§ã™\n" + +#: src/html.c:1234 +msgid "numeric character reference without trailing ';'\n" +msgstr "後ã«';'ãŒç„¡ã„数値文字å‚ç…§ã§ã™\n" + +#: src/html.c:1246 +#, c-format +msgid "undefined character entity '%s'\n" +msgstr "未定義ã®æ–‡å­—å‚ç…§ '%s'\n" + +#: src/html.c:1254 +msgid "character entity reference without trailing ';'\n" +msgstr "後ã«';'ãŒç„¡ã„文字実体å‚ç…§ã§ã™\n" + +#: src/html.c:1262 +msgid "code positions 128-159 are not defined for ISO Latin-1\n" +msgstr "コードãƒã‚¤ãƒ³ãƒˆ 128-159ã¯ISO Latin-1ã§å®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“\n" + +#: src/html.c:1270 +msgid "literal '&'\n" +msgstr "リテラル '&'\n" + +#: src/html.c:1379 +msgid "TAB character inside <PRE>\n" +msgstr "TAB文字ãŒ<PRE>ã®ä¸­ã«ã‚ã‚Šã¾ã™\n" + +#: src/html.c:1615 +#, c-format +msgid " - forcing close of open tag: <%s>\n" +msgstr " - 開始タグã«çµ‚了タグを強制ã—ã¾ã™: <%s>\n" + +#: src/html.c:1624 +#, c-format +msgid "unexpected closing tag: </%1$s>. -- expected </%2$s>\n" +msgstr "予期ã—ãªã„終了タグ: </%1$s> -- 予期ã•ã‚Œã¦ã„ãŸã®ã¯</%2$s>ã§ã™\n" + +#: src/html.c:1696 +#, c-format +msgid "Garbage after length: %s\n" +msgstr "é•·ã•%s以é™ã«ä¸ç”¨ãªãƒ‡ãƒ¼ã‚¿\n" + +#: src/html.c:1715 +msgid "color is not in \"#RRGGBB\" format\n" +msgstr "colorãŒ\"#RRGGBB\"ã®åž‹å¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n" + +#: src/html.c:1735 +#, c-format +msgid "'%s' value is not of the form [A-Za-z][A-Za-z0-9:_.-]*\n" +msgstr "値'%s'ã¯[A-Za-z][A-Za-z0-9:_.-]*ã®å½¢å¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n" + +#: src/html.c:1839 +msgid "HTML element was already open\n" +msgstr "HTMLè¦ç´ ã¯æ—¢ã«é–‹ã„ã¦ã„ã¾ã™\n" + +#: src/html.c:1866 +msgid "HEAD element must go before the BODY section\n" +msgstr "BASEè¦ç´ ã¯HEADセクションã«ç¾ã‚れるã¹ãã§ã™ã€‚\n" + +#: src/html.c:1876 +msgid "HEAD element was already open\n" +msgstr "HEADè¦ç´ ã¯æ—¢ã«é–‹ã„ã¦ã„ã¾ã™\n" + +#: src/html.c:1889 +msgid "HEAD section lacks the TITLE element\n" +msgstr "HEADセクションã«TITLEè¦ç´ ãŒæ¬ ã‘ã¦ã„ã¾ã™\n" + +#: src/html.c:1917 +msgid "the TITLE element must be inside the HEAD section\n" +msgstr "TITLEè¦ç´ ã¯HEADセクションã«ç¾ã‚れるã¹ãã§ã™ã€‚\n" + +#: src/html.c:1986 +msgid "BODY element was already open\n" +msgstr "BODYè¦ç´ ã¯æ—¢ã«é–‹ã„ã¦ã„ã¾ã™\n" + +#: src/html.c:1991 +msgid "unclosed HEAD element\n" +msgstr "é–‰ã˜ã‚‰ã‚Œãªã‹ã£ãŸHEADè¦ç´ \n" + +#: src/html.c:2187 +msgid "<td> or <th> outside <table>\n" +msgstr "<td>ã¾ãŸã¯<th>ãŒ<table>ã®å¤–å´ã«ã‚ã‚Šã¾ã™\n" + +#: src/html.c:2191 +msgid "<td> or <th> outside <tr>\n" +msgstr "<td>ã¾ãŸã¯<th>ãŒ<tr>ã®å¤–å´ã«ã‚ã‚Šã¾ã™\n" + +#: src/html.c:2309 +msgid "Invalid HTML syntax: <tr> outside <table>\n" +msgstr "ä¸æ­£ãªHTML構文: <tr>ãŒ<table>ã®å¤–å´ã«ã‚ã‚Šã¾ã™\n" + +#: src/html.c:2367 +msgid "<noframes> outside of <frameset>!!!\n" +msgstr "<noframes>ãŒ<frameset>ã®å¤–å´ã«ã‚ã‚Šã¾ã™!!!\n" + +#: src/html.c:2375 +msgid "<noframe> is illegal tag !!! use <noframes>.\n" +msgstr "<noframe>ã¯ä¸æ­£ãªã‚¿ã‚°ã§ã™!!! <noframes>を使用ã—ã¦ãã ã•ã„\n" + +#: src/html.c:2562 +msgid "<frame> outside of <frameset>\n" +msgstr "<frame>ãŒ<frameset>ã®å¤–å´ã«ã‚ã‚Šã¾ã™\n" + +#: src/html.c:2565 +msgid "<frame> inside of <noframes>\n" +msgstr "<frame>ãŒ<noframes>ã®å†…å´ã«ã‚ã‚Šã¾ã™\n" + +#: src/html.c:2568 +msgid "<frame> inside of <iframe>\n" +msgstr "<frame>ãŒ<iframe>ã®å†…å´ã«ã‚ã‚Šã¾ã™\n" + +#: src/html.c:2620 +msgid "incorrectly placed <frameset>\n" +msgstr "<frameset>ãŒèª¤ã£ãŸå ´æ‰€ã«ã‚ã‚Šã¾ã™\n" + +#: src/html.c:2636 +msgid "<frameset> inside of <noframes>\n" +msgstr "<frameset>ãŒ<noframes>ã®å†…å´ã«ã‚ã‚Šã¾ã™\n" + +#: src/html.c:2641 +msgid "<frameset> inside of <iframe>\n" +msgstr "<frameset>ãŒ<iframe>ã®å†…å´ã«ã‚ã‚Šã¾ã™\n" + +#: src/html.c:3123 +msgid " Html_tag_open_img: server-side map (ISMAP)\n" +msgstr " Html_tag_open_img: server-side map (ISMAP)\n" + +#: src/html.c:3149 +msgid "nested <map>\n" +msgstr "<map>ãŒãƒã‚¹ãƒˆã•ã‚Œã¦ã„ã¾ã™\n" + +#: src/html.c:3201 +msgid "usemap coords MUST be separated with ','\n" +msgstr "usemapコードã¯','ã§åŒºåˆ‡ã‚‰ã‚Œã¦ã„ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“\n" + +#: src/html.c:3245 +msgid "nohref" +msgstr "nohref" + +#: src/html.c:3284 +msgid "link depends on javascript()\n" +msgstr "リンクãŒjavascript()ã«ä¾å­˜ã—ã¦ã„ã¾ã™ã€‚\n" + +#: src/html.c:3300 +#, c-format +msgid "Registering ANCHOR: %s\n" +msgstr "ANCHORを登録ã—ã¦ã„ã¾ã™: %s\n" + +#: src/html.c:3305 +msgid "Anchor names must be unique within the document\n" +msgstr "アンカーåã¯æ–‡æ›¸å†…ã§å›ºæœ‰ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“\n" + +#: src/html.c:3512 +msgid "it is strongly recommended using <UL> instead of <MENU>\n" +msgstr "<MENU>ã®ä»£ã‚Šã«<UL>を使ã†ã“ã¨ãŒå¼·ã推奨ã•ã‚Œã¦ã„ã¾ã™\n" + +#: src/html.c:3574 +msgid "<li> outside <ul> or <ol>\n" +msgstr "<li>ãŒ<ul>ã¾ãŸã¯<ol>ã®å¤–å´ã«ã‚ã‚Šã¾ã™\n" + +#: src/html.c:3770 +msgid "nested forms\n" +msgstr "formsãŒãƒã‚¹ãƒˆã•ã‚Œã¦ã„ã¾ã™\n" + +#: src/html.c:3817 +msgid "FORM lacks a Submit button\n" +msgstr "FORMã«SubmitボタンãŒæ¬ ã‘ã¦ã„ã¾ã™\n" + +#: src/html.c:3819 +msgid " (added a submit button internally)\n" +msgstr " (submitボタンを内部ã§è¿½åŠ ã—ã¾ã—ãŸ)\n" + +#: src/html.c:3923 +msgid "META elements must be inside the HEAD section\n" +msgstr "METAè¦ç´ ã¯HEADセクションã«ç¾ã‚れるã¹ãã§ã™ã€‚\n" + +#: src/html.c:3975 +#, c-format +msgid "" +"The NON-STANDARD meta refresh tag. The HTML 4.01 SPEC (sec 7.4.4) recommends " +"explicitly to avoid it. The author wanted you to go <%s>\n" +msgstr "" +"éžæ¨™æº–ã®meta refreshã‚¿ã‚°ã§ã™ã€‚HTML4.01SPEC(sec 7.4.4)ã§ã¯ã“れを回é¿ã™ã‚‹ã“ã¨ã‚’" +"ã¯ã£ãã‚Šã¨æŽ¨å¥¨ã—ã¦ã„ã¾ã™ã€‚(ã“ã®ãƒšãƒ¼ã‚¸ã®)著者ã¯<%s>ã«è¡Œãã“ã¨ã‚’望んã§ã„ã¾ã—" +"ãŸã€‚\n" + +#: src/html.c:4345 +msgid "Html_submit_form: Method unknown\n" +msgstr "Html_submit_form: ä¸æ˜Žãªãƒ¡ã‚½ãƒƒãƒ‰ã§ã™\n" + +#: src/html.c:4427 +msgid "Html_input_image: unable to create image submit.\n" +msgstr "Html_input_image: ç”»åƒé€ä¿¡ãƒœã‚¿ãƒ³ã‚’生æˆã§ãã¾ã›ã‚“。\n" + +#: src/html.c:4449 +msgid "input camp outside <form>\n" +msgstr "inputã®å ´æ‰€ãŒ<form>ã®å¤–å´ã«ã‚ã‚Šã¾ã™\n" + +#: src/html.c:4529 +msgid "submit" +msgstr "é€ä¿¡" + +#: src/html.c:4536 config/dillocfg.c:79 +msgid "Reset" +msgstr "リセット" + +#: src/html.c:4546 +msgid "Submit" +msgstr "é€ä¿¡" + +#: src/html.c:4563 +msgid "An input of the type \"file\" wasn't rendered!\n" +msgstr "inputタイプ\"file\"ã¯ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚\n" + +#: src/html.c:4737 +msgid "<textarea> outside <form>\n" +msgstr "<textarea>ãŒ<form>ã®å¤–å´ã«ã‚ã‚Šã¾ã™\n" + +#: src/html.c:4742 +msgid "nested <textarea>\n" +msgstr "<textarea>ãŒãƒã‚¹ãƒˆã•ã‚Œã¦ã„ã¾ã™\n" + +#: src/html.c:4814 +msgid "<select> outside <form>\n" +msgstr "<select>ãŒ<form>ã®å¤–å´ã«ã‚ã‚Šã¾ã™\n" + +#: src/html.c:4818 +msgid "nested <select>\n" +msgstr "<select>ãŒãƒã‚¹ãƒˆã•ã‚Œã¦ã„ã¾ã™\n" + +#: src/html.c:5042 +msgid "base URI is relative (it MUST be absolute)\n" +msgstr "base URIãŒé–¢é€£ã—ã¦ã„ã¾ã™(ç„¡æ¡ä»¶ã§ã‚ã‚‹ã¹ãã§ã™)\n" + +#: src/html.c:5049 +msgid "the BASE element must appear in the HEAD section\n" +msgstr "BASEè¦ç´ ã¯HEADセクションã«ç¾ã‚れるã¹ãã§ã™\n" + +#: src/html.c:5400 +#, c-format +msgid "<%1$s> is not allowed to contain <%2$s>. -- closing <%3$s>\n" +msgstr "<%1$s>ã¯<%2$s>ã‚’å«ã‚€ã“ã¨ãŒè¨±ã•ã‚Œã¦ã„ã¾ã›ã‚“。 -- <%3$s>ã‚’é–‰ã˜ã¦ã„ã¾ã™\n" + +#: src/html.c:5515 +#, c-format +msgid "<pre> is not allowed to contain <%s>\n" +msgstr "<pre>ã¯<%s>ã‚’å«ã‚€ã“ã¨ãŒè¨±ã•ã‚Œã¦ã„ã¾ã›ã‚“\n" + +#: src/html.c:5537 +msgid "'id' and 'name' attribute of <a> tag differ\n" +msgstr "<a>ã‚¿ã‚°ã®'id'ã¨'name'属性ã¯ç•°ãªã‚Šã¾ã™\n" + +#: src/html.c:5764 +msgid "Html_write_raw : bufsize is negative!\n" +msgstr "Html_write_raw : ãƒãƒƒãƒ•ã‚¡ã‚µã‚¤ã‚ºãŒè² ã®å€¤ã§ã™!\n" + +#: src/html.c:5842 +msgid "attribute lacks closing quote\n" +msgstr "属性ã§é–‰ã˜ã‚‹ã‚¯ã‚©ãƒ¼ãƒˆãŒæ¬ ã‘ã¦ã„ã¾ã™\n" + +#: src/html.c:5850 +#, c-format +msgid "<%s> element lacks its closing '>'\n" +msgstr "<%s>属性ã¯'>'ã§é–‰ã˜ã‚‰ã‚Œã¦ã„ã¾ã›ã‚“\n" + +#: src/html.c:6144 +msgid "could not allocate character encoding converter" +msgstr "文字コードコンãƒãƒ¼ã‚¿ã‚’割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“" + +#: src/misc.c:455 +msgid "Untitled" +msgstr "ç„¡é¡Œ" + +#: src/interface.c:249 +msgid "Selection retrieval failed\n" +msgstr "セレクションã®ã«å¤±æ•—\n" + +#: src/interface.c:363 +msgid "Clear the URL box (middle-click to paste an URL)." +msgstr "URLボックスをクリア(中クリックã§URLを貼り付ã‘)" + +#: src/interface.c:385 +msgid "Search the Web" +msgstr "Webを検索" + +#: src/interface.c:417 src/menu.c:231 src/menu.c:280 +msgid "Back" +msgstr "戻る" + +#: src/interface.c:421 +msgid "Go to previous page (right-click for menu)." +msgstr "å‰ã®ãƒšãƒ¼ã‚¸ã«æˆ»ã‚‹(å³ã‚¯ãƒªãƒƒã‚¯ã§ãƒ¡ãƒ‹ãƒ¥ãƒ¼)" + +#: src/interface.c:450 src/menu.c:233 src/menu.c:282 +msgid "Forward" +msgstr "進む" + +#: src/interface.c:454 +msgid "Go to next page (right-click for menu)." +msgstr "次ã®ãƒšãƒ¼ã‚¸ã«é€²ã‚€(å³ã‚¯ãƒªãƒƒã‚¯ã§ãƒ¡ãƒ‹ãƒ¥ãƒ¼)" + +#: src/interface.c:481 +msgid "Home" +msgstr "ホーム" + +#: src/interface.c:485 +msgid "Go to the Home page" +msgstr "ホームページを開ã" + +#: src/interface.c:499 config/dillocfg.c:80 +msgid "Reload" +msgstr "å†èª­è¾¼" + +#: src/interface.c:500 +msgid "Reload this page" +msgstr "ã“ã®ãƒšãƒ¼ã‚¸ã‚’å†èª­è¾¼ã™ã‚‹" + +#: src/interface.c:512 config/dillocfg.c:81 +msgid "Save" +msgstr "ä¿å­˜" + +#: src/interface.c:513 +msgid "Save this page" +msgstr "ã“ã®ãƒšãƒ¼ã‚¸ã‚’ä¿å­˜ã™ã‚‹" + +#: src/interface.c:520 src/menu.c:235 src/menu.c:284 +msgid "Stop" +msgstr "中止" + +#: src/interface.c:521 +msgid "Stop the current transfer" +msgstr "読ã¿è¾¼ã¿ã‚’中止ã™ã‚‹" + +#: src/interface.c:534 +msgid "Book" +msgstr "ブックマーク" + +#: src/interface.c:538 +msgid "View bookmarks" +msgstr "ブックマークã®è¡¨ç¤º" + +#: src/interface.c:655 src/interface.c:826 +msgid "Hide Controls" +msgstr "コントロールã®éžè¡¨ç¤º" + +#: src/interface.c:655 src/interface.c:826 +msgid "Show Controls" +msgstr "コントロールã®è¡¨ç¤º" + +#: src/interface.c:929 +msgid "Show HTML bugs (right-click for menu)." +msgstr "HTMLã®ãƒã‚°ã‚’表示(å³ã‚¯ãƒªãƒƒã‚¯ã§ãƒ¡ãƒ‹ãƒ¥ãƒ¼)" + +#: src/interface.c:1231 +#, c-format +msgid "Warning: search_url ends with '%%'\n" +msgstr "警告: search_urlã®çµ‚端ã«'%%'ãŒã‚ã‚Šã¾ã™ã€‚\n" + +#: src/interface.c:1233 +#, c-format +msgid "Warning: illegal specifier '%%%c' in search_url\n" +msgstr "警告: 無効ãªæŒ‡å®šå­'%%%c'ãŒsearch_urlã®ä¸­ã«ã‚ã‚Šã¾ã™ã€‚\n" + +#: src/interface.c:1298 +msgid "Dillo: Open File" +msgstr "Dillo: ファイルを開ã" + +#: src/interface.c:1374 +msgid "Clear" +msgstr "クリア" + +#: src/interface.c:1382 src/interface.c:1536 src/nav.c:453 +msgid "Cancel" +msgstr "å–消" + +#: src/interface.c:1513 +msgid "User Name:" +msgstr "ユーザーå:" + +#: src/interface.c:1520 +msgid "Password:" +msgstr "パスワード:" + +#: src/interface.c:1529 src/interface.c:1604 src/interface.c:2073 +#: src/nav.c:453 +msgid "OK" +msgstr "了解" + +#: src/interface.c:1566 +msgid "Dillo: Enter Authentication" +msgstr "Dillo: èªè¨¼" + +#: src/interface.c:1586 +msgid "Dillo: Question" +msgstr "Dillo: 質å•" + +#: src/interface.c:1602 +msgid "Dillo: Open URL" +msgstr "Dillo: URLã‚’é–‹ã" + +#: src/interface.c:1626 +#, c-format +msgid "File saved (%d Bytes)" +msgstr "ファイルã«ä¿å­˜ã—ã¾ã—ãŸã€‚(%d ãƒã‚¤ãƒˆ)" + +#: src/interface.c:1708 +#, c-format +msgid "Error trying to save: %s\n" +msgstr "%sã®æ›¸ã込んã§ã„る時ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚\n" + +#: src/interface.c:1761 +msgid "Dillo: Save URL as File..." +msgstr "Dillo: URLをファイルã«ä¿å­˜..." + +#: src/interface.c:1788 +msgid "Dillo: Save link as File..." +msgstr "Dillo: リンクをファイルã«ä¿å­˜..." + +#: src/interface.c:1843 src/interface.c:1857 +msgid "Dillo: Find text" +msgstr "Dillo: テキストã®æ¤œç´¢" + +#: src/interface.c:1844 src/interface.c:1850 +#, c-format +msgid "Cannot find \"%s\"." +msgstr "\"%s\"ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚" + +#: src/interface.c:1858 +#, c-format +msgid "No further occurence of \"%s\". Restarting from the beginning." +msgstr "\"%s\"を最後ã¾ã§æ¤œç´¢ã—ã¾ã—ãŸã€‚ 先頭ã‹ã‚‰å†æ¤œç´¢ã—ã¾ã™ã€‚" + +#: src/interface.c:1866 +#, c-format +msgid "(Find) \"%s\": restart from beginning" +msgstr "(検索) \"%s\": 最åˆã‹ã‚‰å†é–‹ã—ã¾ã™" + +#: src/interface.c:1879 +#, c-format +msgid "(Find) \"%s\"" +msgstr "(検索) \"%s\"" + +#: src/interface.c:1885 +msgid "Unexpected return from a_Dw_gtk_scrolled_window_search()\n" +msgstr "予期ã—ãªã„a_Dw_gtk_scrolled_window_search()ã‹ã‚‰ã®æˆ»ã‚Šå€¤\n" + +#: src/interface.c:1937 +msgid "press <Enter> to (repeat) search, <Esc> to close search" +msgstr "<Enter>を押ã™ã¨(続ã‘ã¦)検索ã€<Esc>ã§æ¤œç´¢ã‚’終了" + +#: src/interface.c:1938 src/interface.c:2031 +msgid "Search" +msgstr "検索" + +#: src/interface.c:1940 src/interface.c:1941 src/interface.c:1977 +msgid "Case sensitive" +msgstr "大文字/å°æ–‡å­—を区別ã™ã‚‹" + +#: src/interface.c:1975 +msgid "Dillo: Find text in page" +msgstr "Dillo: テキストã®æ¤œç´¢" + +#: src/interface.c:1978 +msgid "Find" +msgstr "検索" + +#: src/interface.c:2029 +msgid "Dillo" +msgstr "Dillo" + +#: src/interface.c:2029 +msgid "Dillo: Search the Web" +msgstr "Dillo: Webを検索" + +#: src/interface.c:2066 +#, c-format +msgid "Dillo: Enter proxy password for '%s'" +msgstr "Dillo: '%s'ã¸ã®ãƒ—ロキシパスワードを入力ã—ã¦ãã ã•ã„" + +#: src/interface.c:2151 +msgid "Close" +msgstr "é–‰ã˜ã‚‹" + +#: src/interface.c:2226 +msgid "close" +msgstr "é–‰ã˜ã‚‹" + +#: src/nav.c:383 +#, c-format +msgid "Unhandled switch type %d in a_Nav_jump_callback in src/nav.c\n" +msgstr "src/nav.cã®a_Nav_jump_callbackã§å‡¦ç†ã§ããªã„switchã®ç¨®é¡ž %d\n" + +#: src/nav.c:452 +msgid "Repost form data?" +msgstr "データをå†é€ä¿¡ã—ã¾ã™ã‹?" + +#: src/menu.c:173 +msgid "_File" +msgstr "ファイル(_F)" + +#: src/menu.c:174 +msgid "_New Window" +msgstr "æ–°è¦Window(_N)" + +#: src/menu.c:177 +msgid "New _Tab" +msgstr "æ–°è¦ã‚¿ãƒ–(_T)" + +#: src/menu.c:181 +msgid "_Open File..." +msgstr "ファイルを開ã(_O)..." + +#: src/menu.c:183 +msgid "Open _URL..." +msgstr "URLã‚’é–‹ã(_U)..." + +#: src/menu.c:189 +msgid "Close Window" +msgstr "Windowã‚’é–‰ã˜ã‚‹" + +#: src/menu.c:192 src/menu.c:359 +msgid "Close Tab" +msgstr "タブを閉ã˜ã‚‹" + +#: src/menu.c:196 +msgid "Exit Dillo" +msgstr "Dilloを終了ã™ã‚‹" + +#: src/menu.c:200 +msgid "_View" +msgstr "表示(_V)" + +#: src/menu.c:202 +msgid "Previous tab" +msgstr "å‰ã®ã‚¿ãƒ–" + +#: src/menu.c:204 +msgid "Next tab" +msgstr "次ã®ã‚¿ãƒ–" + +#: src/menu.c:208 +msgid "_Options..." +msgstr "設定(_O)..." + +#: src/menu.c:228 +msgid "PAGE OPTIONS" +msgstr "ページオプション" + +#: src/menu.c:237 src/menu.c:286 +msgid "_Reload" +msgstr "å†èª­è¾¼(_R)" + +#: src/menu.c:241 +msgid "View page So_urce" +msgstr "ページã®ã‚½ãƒ¼ã‚¹ã‚’表示(_u)" + +#: src/menu.c:243 +msgid "View page Bugs" +msgstr "ページã®ãƒã‚°ã‚’表示(_u)" + +#: src/menu.c:244 +msgid "_Bookmark this Page" +msgstr "ã“ã®ãƒšãƒ¼ã‚¸ã‚’ブックマークã™ã‚‹(_B)" + +#: src/menu.c:247 +msgid "Duplicate this Page" +msgstr "ã“ã®ãƒšãƒ¼ã‚¸ã‚’複製ã™ã‚‹" + +#: src/menu.c:250 +msgid "Duplicate this tab" +msgstr "ã“ã®ã‚¿ãƒ–を複製ã™ã‚‹" + +#: src/menu.c:254 +msgid "_Find Text" +msgstr "テキストã®æ¤œç´¢(_F)" + +#: src/menu.c:257 +msgid "Jump to..." +msgstr "ジャンプ..." + +#: src/menu.c:258 +msgid "This Frame..." +msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ ..." + +#: src/menu.c:259 +msgid "This Frameset..." +msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã‚»ãƒƒãƒˆ..." + +#: src/menu.c:262 +msgid "Save Page As..." +msgstr "ページã«åå‰ã‚’付ã‘ã¦ä¿å­˜..." + +#: src/menu.c:277 +msgid "FRAME OPTIONS" +msgstr "フレームオプション" + +#: src/menu.c:290 +msgid "View frame Source" +msgstr "フレームã®ã‚½ãƒ¼ã‚¹ã‚’表示" + +#: src/menu.c:292 +msgid "Bookmark this Frame" +msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã‚’ブックマークã™ã‚‹" + +#: src/menu.c:294 +msgid "Reload this Frame" +msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã‚’å†èª­è¾¼ã™ã‚‹" + +#: src/menu.c:297 +msgid "Show only this Frame" +msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã®ã¿è¡¨ç¤º" + +#: src/menu.c:299 +msgid "Open Frame in new Window" +msgstr "フレームを新ã—ã„Windowã§é–‹ã" + +#: src/menu.c:302 +msgid "Open Frame in new Tab" +msgstr "フレームを新ã—ã„タブã§é–‹ã" + +#: src/menu.c:306 +msgid "_Find Text in this Frame..." +msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ å†…をテキスト検索(_F)..." + +#: src/menu.c:309 src/menu.c:340 +msgid "Save Frame As..." +msgstr "フレームã«åå‰ã‚’付ã‘ã¦ä¿å­˜..." + +#: src/menu.c:325 +msgid "FRAMESET OPTIONS" +msgstr "フレームセットオプション" + +#: src/menu.c:327 +msgid "View Frameset Source" +msgstr "フレームセットã®ã‚½ãƒ¼ã‚¹ã‚’表示" + +#: src/menu.c:329 +msgid "Bookmark this Frameset" +msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã‚»ãƒƒãƒˆã‚’ブックマークã™ã‚‹" + +#: src/menu.c:331 +msgid "Reload this Frameset" +msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã‚»ãƒƒãƒˆã‚’å†èª­è¾¼ã™ã‚‹" + +#: src/menu.c:334 +msgid "Show only this Frameset" +msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã‚»ãƒƒãƒˆã®ã¿è¡¨ç¤º" + +#: src/menu.c:337 +msgid "_Find Text in this Frameset..." +msgstr "ã“ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã‚»ãƒƒãƒˆå†…をテキスト検索(_F)..." + +#: src/menu.c:357 +msgid "TAB OPTIONS" +msgstr "タブオプション" + +#: src/menu.c:361 +msgid "New Tab" +msgstr "æ–°è¦ã‚¿ãƒ–" + +#: src/menu.c:363 +msgid "Reload Tab" +msgstr "タブをå†èª­è¾¼" + +#: src/menu.c:460 +msgid "FOLLOWING PAGES" +msgstr "次ã®ãƒšãƒ¼ã‚¸" + +#: src/menu.c:463 +msgid "PREVIOUS PAGES" +msgstr "å‰ã®ãƒšãƒ¼ã‚¸" + +#: src/menu.c:531 +msgid "LINK OPTIONS" +msgstr "リンクオプション" + +#: src/menu.c:533 +msgid "Open Link in New Window" +msgstr "リンクを新ã—ã„Windowã§é–‹ã" + +#: src/menu.c:536 +msgid "Open Link in New Tab" +msgstr "リンクを新ã—ã„タブã§é–‹ã" + +#: src/menu.c:539 +msgid "Open Link" +msgstr "リンクを開ã" + +#: src/menu.c:542 +msgid "Bookmark this Link" +msgstr "ã“ã®ãƒªãƒ³ã‚¯ã‚’ブックマーク(_B)" + +#: src/menu.c:544 +msgid "Copy Link location" +msgstr "リンクã®å ´æ‰€ã‚’コピー" + +#: src/menu.c:549 +msgid "Save Link As..." +msgstr "リンクã«åå‰ã‚’付ã‘ã¦ä¿å­˜..." + +#: src/menu.c:553 +msgid "Image Menu..." +msgstr "ç”»åƒãƒ¡ãƒ‹ãƒ¥ãƒ¼..." + +#: src/menu.c:571 +msgid "IMAGE OPTIONS" +msgstr "ç”»åƒã‚ªãƒ—ション" + +#: src/menu.c:573 +msgid "Isolate Image" +msgstr "ç”»åƒã ã‘を表示" + +#: src/menu.c:575 +msgid "Open Image in New Window" +msgstr "ç”»åƒã‚’æ–°ã—ã„Windowã§é–‹ã" + +#: src/menu.c:578 +msgid "Open Image in New Tab" +msgstr "ç”»åƒã‚’æ–°ã—ã„タブã§é–‹ã" + +#: src/menu.c:581 +msgid "Open Image" +msgstr "ç”»åƒã‚’é–‹ã" + +#: src/menu.c:584 +msgid "Bookmark this Image" +msgstr "ã“ã®ç”»åƒã‚’ブックマークã™ã‚‹" + +#: src/menu.c:586 +msgid "Copy Image location" +msgstr "ç”»åƒã®å ´æ‰€ã‚’コピーã™ã‚‹" + +#: src/menu.c:591 +msgid "Save Image As..." +msgstr "ç”»åƒã«åå‰ã‚’付ã‘ã¦ä¿å­˜..." + +#: src/menu.c:605 +msgid "BUG METER OPTIONS" +msgstr "ãƒã‚°ãƒ¡ãƒ¼ã‚¿ãƒ¼ã‚ªãƒ—ション" + +#: src/menu.c:607 +msgid "Validate URL with W3C" +msgstr "URLã‚’W3Cã§æ¤œæŸ»ã™ã‚‹" + +#: src/menu.c:609 +msgid "Validate URL with WDG" +msgstr "URLã‚’WDGã§æ¤œæŸ»ã™ã‚‹" + +#: src/menu.c:612 +msgid "About Bug Meter..." +msgstr "ãƒã‚°ãƒ¡ãƒ¼ã‚¿ãƒ¼ã«ã¤ã„ã¦..." + +#: src/prefs.c:431 +msgid "Error: Can't open specified config file. default file is used.\n" +msgstr "エラー: 設定ファイルを開ã‘ã¾ã›ã‚“。デフォルトã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒä½¿ç”¨ä¸­ã§ã™ã€‚\n" + +#: src/i18n.c:359 +msgid "charset detect may mistake...\n" +msgstr "文字コードèªè­˜ã«å¤±æ•—ã—ãŸã‹ã‚‚ã—ã‚Œã¾ã›ã‚“...\n" + +#: src/i18n.c:447 +msgid "<meta> outside of <head>!\n" +msgstr "<meta>ãŒ<head>ã®å¤–å´ã«ã‚ã‚Šã¾ã™\n" + +#: src/i18n.c:493 +msgid "all ascii code\n" +msgstr "å…¨ã¦ASCIIコードã§ã™ã€‚\n" + +#: src/i18n.c:526 +msgid "unable to fully convert between character encodings\n" +msgstr "文字コードを完全ã«å¤‰æ›ã§ãã¾ã›ã‚“ã§ã—ãŸ\n" + +#: src/i18n.c:565 +msgid "no support enc\n" +msgstr "サãƒãƒ¼ãƒˆã—ã¦ãªã„エンコードã§ã™ã€‚\n" + +#: src/tab.c:293 src/tab.c:425 dpi/bookmarks.c:1653 +msgid "(Untitled)" +msgstr "(ç„¡é¡Œ)" + +#: src/IO/https.c:168 +msgid "--Error detected\n" +msgstr "--エラーを検出ã—ã¾ã—ãŸ\n" + +#: src/IO/https.c:173 src/IO/https.c:204 src/IO/http.c:294 +msgid "ERROR: unable to connect to remote host" +msgstr "エラー: リモートホストã«æŽ¥ç¶šã§ãã¾ã›ã‚“" + +#: src/IO/https.c:179 src/IO/http.c:309 +msgid "--Connection established\n" +msgstr "--接続を確立ã—ã¾ã—ãŸ\n" + +#: src/IO/https.c:280 src/IO/http.c:417 +#, c-format +msgid "Sending query to %s..." +msgstr "クエリを%sã«é€ä¿¡ã—ã¦ã„ã¾ã™..." + +#: src/IO/https.c:333 src/IO/http.c:486 +#, c-format +msgid "DNS solving %s" +msgstr "DNSã¯%sを解決ã—ã¦ã„ã¾ã™" + +#: src/IO/https.c:363 +msgid " HTTPS: new abort handler! #2\n" +msgstr " HTTPS: æ–°è¦ã®abortãƒãƒ³ãƒ‰ãƒ©ã§ã™! #2\n" + +#: src/IO/https.c:365 src/IO/https.c:387 src/IO/http.c:301 src/IO/http.c:520 +#: src/IO/http.c:551 +#, c-format +msgid "ERROR: %s" +msgstr "エラー: %s" + +#: src/IO/https.c:386 +msgid " HTTP: new abort handler! #1\n" +msgstr " HTTP: æ–°è¦ã®abortãƒãƒ³ãƒ‰ãƒ©ã§ã™! #1\n" + +#: src/IO/https.c:400 src/IO/http.c:564 +#, c-format +msgid "ERROR: Dns can't solve %s" +msgstr "エラー: DNSã¯%sを解決ã§ãã¾ã›ã‚“" + +#: src/IO/https.c:421 src/IO/http.c:591 +msgid "Query sent, waiting for reply..." +msgstr "クエリをé€ä¿¡ã—ã¾ã—㟠応答を待ã£ã¦ã„ã¾ã™..." + +#: src/IO/http.c:190 +#, c-format +msgid "Getting %1$s, referer %2$s\n" +msgstr "%1$sã‚’å–得中 リファラ %2$s\n" + +#: src/IO/http.c:259 +#, c-format +msgid "" +"Query:\n" +"%s" +msgstr "" +"クエリ:\n" +"%s" + +#: src/IO/http.c:286 +msgid "--Connection broken\n" +msgstr "--切断ã•ã‚Œã¾ã—ãŸ\n" + +#: src/IO/http.c:342 +#, c-format +msgid "Http_connect_socket ERROR: %s\n" +msgstr "Http_connect_socketã§ã‚¨ãƒ©ãƒ¼: %s\n" + +#: src/IO/http.c:363 src/IO/http.c:377 +#, c-format +msgid "Connecting to %s\n" +msgstr "%sã«æŽ¥ç¶šã—ã¦ã„ã¾ã™\n" + +#: src/IO/http.c:396 +msgid "Contacting host..." +msgstr "ホストã«æŽ¥ç¶šã—ã¦ã„ã¾ã™..." + +#: src/IO/http.c:529 +msgid "Http: OpAbort [1B]\n" +msgstr "Http: OpAbort [1B]\n" + +#: src/IO/dpi.c:188 +msgid "ERROR: [Dpi_get_token] Can't find token start\n" +msgstr "エラー: [Dpi_get_token] トークンã®é–‹å§‹ã‚’見ã¤ã‘られã¾ã›ã‚“。\n" + +#: src/IO/dpi.c:221 +msgid "ERROR: [Dpi_get_token] *** NULL code here ***\n" +msgstr "エラー: [Dpi_get_token] *** ã“ã“ã«NULLコードãŒã‚ã‚Šã¾ã™ ***\n" + +#: src/IO/dpi.c:312 +msgid "Dpi: [Dpi_process_io] IOClose\n" +msgstr "Dpi: [Dpi_process_io] IOClose\n" + +#: src/IO/dpi.c:338 +#, c-format +msgid "Dpi_start_dpid (child): %s\n" +msgstr "Dpi_start_dpid (child): %s\n" + +#: src/IO/dpi.c:348 src/IO/dpi.c:363 +#, c-format +msgid "Dpi_start_dpid: %s\n" +msgstr "Dpi_start_dpid: %s\n" + +#: src/IO/dpi.c:359 +#, c-format +msgid "Dpi_start_dpid: n = %d\n" +msgstr "Dpi_start_dpid: n = %d\n" + +#: src/IO/dpi.c:386 +#, c-format +msgid "Dpi_check_uds: %1$s %2$s\n" +msgstr "Dpi_check_uds: %1$s %2$s\n" + +#: src/IO/dpi.c:673 +msgid "dpi.c: ERROR, can't start dpi daemon\n" +msgstr "dpi.c: エラー, dpiデーモンを開始ã§ãã¾ã›ã‚“\n" + +#: src/IO/dpi.c:686 +msgid "a_Dpi_ccc: OpAbort[2B], Not implemented\n" +msgstr "a_Dpi_ccc: OpAbort[2B], 実装ã•ã‚Œã¦ã„ã¾ã›ã‚“\n" + +#: src/IO/dpi.c:790 src/IO/dpi.c:794 +#, c-format +msgid "a_Dpi_bye_dpid: %s\n" +msgstr "a_Dpi_bye_dpid: %s\n" + +#: dpid/dpi_socket_dir.c:106 +#, c-format +msgid "The dpi_socket_dir file does not exist\n" +msgstr "dpi_socket_dirファイルãŒå­˜åœ¨ã—ã¾ã›ã‚“\n" + +#: dpid/dpi_socket_dir.c:110 dpid/dpi_socket_dir.c:114 +#, c-format +msgid "debug_msg - init_sockdir: The socket directory " +msgstr "debug_msg - init_sockdir: socketディレクトリã¯" + +#: dpid/dpi_socket_dir.c:111 +#, c-format +msgid "%s exists and is OK\n" +msgstr "%sã¯å­˜åœ¨ã—ã¦ã„ã¦OKã§ã™\n" + +#: dpid/dpi_socket_dir.c:115 +#, c-format +msgid "%s does not exist or is not a directory\n" +msgstr "%sã¯å­˜åœ¨ã—ãªã„ã‹ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã¯ã‚ã‚Šã¾ã›ã‚“\n" + +#: dpid/dpi_socket_dir.c:124 +#, c-format +msgid " - Failed to create dpi socket directory\n" +msgstr " - dpi socketディレクトリã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸ\n" + +#: dpid/dpi_socket_dir.c:127 +#, c-format +msgid " - failed to save %s\n" +msgstr " - %sã®ä¿å­˜ã«å¤±æ•—ã—ã¾ã—ãŸ\n" + +#: dpid/main.c:59 dpid/main.c:66 dpid/main.c:77 dpid/main.c:85 dpid/main.c:99 +#: dpid/main.c:104 dpid/main.c:109 +#, c-format +msgid "ERROR in child proc for %s\n" +msgstr "%sã§å­ãƒ—ロセスãŒã‚¨ãƒ©ãƒ¼\n" + +#: dpid/main.c:166 +#, c-format +msgid ": dpid failed to parse cmd in %s\n" +msgstr ": dpidãŒ%sã®ã‚³ãƒžãƒ³ãƒ‰è§£æžã«å¤±æ•—ã—ã¾ã—ãŸ\n" + +#: dpid/main.c:265 +#, c-format +msgid "Failed to create socket directory\n" +msgstr "socketディレクトリã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸ\n" + +#: dpid/main.c:275 +#, c-format +msgid "dpid refuses to start, possibly because:\n" +msgstr "dpidã¯é–‹å§‹ã‚’æ‹’å¦ã—ã¾ã—ãŸã€‚予想ã•ã‚Œã‚‹åŽŸå› :\n" + +#: dpid/main.c:276 +#, c-format +msgid "\t1) An instance of dpid is already running.\n" +msgstr "\t1) dpidã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒæ—¢ã«èµ·å‹•ã—ã¦ã„る。\n" + +#: dpid/main.c:277 +#, c-format +msgid "\t2) A previous dpid didn't clean up on exit.\n" +msgstr "\t2) å‰ã®dpidãŒä¸æ­£çµ‚了ã—ãŸã€‚\n" + +#: dpid/main.c:280 +msgid "init_srs_sockets failed\n" +msgstr "init_srs_socketsãŒå¤±æ•—ã—ã¾ã—ãŸ\n" + +#: dpid/main.c:294 +#, c-format +msgid "dpid started\n" +msgstr "dpidãŒé–‹å§‹ã—ã¾ã—ãŸ\n" + +#: dpid/main.c:340 +#, c-format +msgid "accept on srs socket failed\n" +msgstr "srs socketã®å—ç†ã«å¤±æ•—ã—ã¾ã—ãŸ\n" + +#: dpid/main.c:341 +#, c-format +msgid "service pending connections, and continue\n" +msgstr "未解決ã®æŽ¥ç¶šã‚’を供給ã—ã€ç¶™ç¶šã—ã¾ã™\n" + +#: dpi/bookmarks.c:96 +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>Bookmarks</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr>\n" +" <td>&nbsp;Bookmarks::</td>\n" +" <td width='100%' align='right'>\n" +" [<a href='dpi:/bm/modify'>modify</a>]\n" +" </td></tr>\n" +" </table></td></tr>\n" +"</table>\n" +"<br>\n" +msgstr "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>ブックマーク</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr>\n" +" <td><pre>&nbsp;ブックマーク::</pre></td>\n" +" <td width='100%' align='right'>\n" +" <pre>[<a href='dpi:/bm/modify'>変更</a>]</pre>\n" +" </td></tr>\n" +" </table></td></tr>\n" +"</table>\n" +"<br>\n" + +#: dpi/bookmarks.c:115 +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>Bookmarks</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr>\n" +" <td>&nbsp;Bookmarks :: modify</td></tr>\n" +" </table></td></tr> \n" +"</table> \n" +"\n" +"<form>\n" +"<table width='100%' border='1' cellpadding='0'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td><b>Select&nbsp;an&nbsp;operation&nbsp;</b></td>\n" +" <td><select name='operation'>\n" +" <option value='none' selected>--\n" +" <option value='delete'>Delete\n" +" <option value='move'>Move\n" +" <option value='modify'>Modify\n" +" <option value='add_sec'>Add Section\n" +" <option value='add_url'>Add URL\n" +" </select></td>\n" +" <td><b>,&nbsp;mark&nbsp;its&nbsp;operands,&nbsp;and&nbsp;</b></td>\n" +" <td><input type='submit' name='submit' value='submit.'></td>\n" +" <td width='100%'></td>\n" +" </tr>\n" +" </table></td></tr>\n" +"</table>\n" +msgstr "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>ブックマーク</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr>\n" +" <td><pre>&nbsp;ブックマーク :: 変更</pre></td></tr>\n" +" </table></td></tr> \n" +"</table> \n" +"\n" +"<form>\n" +"<table width='100%' border='1' cellpadding='0'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td><pre><b>命令をé¸æŠž&nbsp;</b></pre></td>\n" +" <td><select name='operation'>\n" +" <option value='none' selected>--\n" +" <option value='delete'>削除\n" +" <option value='move'>移動\n" +" <option value='modify'>変更\n" +" <option value='add_sec'>セクションを追加\n" +" <option value='add_url'>URLを追加\n" +" </select></td>\n" +" <td><pre><b>ã€å¯¾è±¡ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ã€</b></pre></td>\n" +" <td><input type='submit' name='submit' value='é©ç”¨'></td>\n" +" <td width='100%'></td>\n" +" </tr>\n" +" </table></td></tr>\n" +"</table>\n" + +#: dpi/bookmarks.c:151 +msgid "" +"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n" +" <tr valign='top'>\n" +" <td>\n" +" <table bgcolor='#b4b4b4' border='2' cellpadding='4' cellspacing='1'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n" +msgstr "" +"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n" +" <tr valign='top'>\n" +" <td>\n" +" <table bgcolor='#b4b4b4' border='2' cellpadding='4' cellspacing='1'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr><td><pre>セクション:</pre></td></tr></table></td></tr>\n" + +#: dpi/bookmarks.c:160 +msgid "" +"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n" +" <tr valign='top'>\n" +" <td>\n" +" <table bgcolor='#b4b4b4' border='1'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n" +msgstr "" +"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n" +" <tr valign='top'>\n" +" <td>\n" +" <table bgcolor='#b4b4b4' border='1' cellpadding='4' cellspacing='1'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr><td><pre>セクション:</pre></td></tr></table></td></tr>\n" + +#: dpi/bookmarks.c:243 +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>Bookmarks</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: add section\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +" <input type='hidden' name='operation' value='add_section'>\n" +"<table border='1' width='100%'>\n" +" <tr>\n" +" <td bgcolor='olive'><b>New&nbsp;section:</b></td>\n" +" <td bgcolor='white' width='100%'></td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='10'>\n" +"<tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td>Title:</td>\n" +" <td><input type='text' name='title' size='64'></td></tr>\n" +" </table>\n" +" </td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='submit.'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" +"\n" +msgstr "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>ブックマーク</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'><pre>&nbsp;ブックマークã®å¤‰æ›´:: セクションを追加" +"</pre>\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +" <input type='hidden' name='operation' value='add_section'>\n" +"<table border='1' width='100%'>\n" +" <tr>\n" +" <td bgcolor='olive'><pre><b>æ–°è¦ ã‚»ã‚¯ã‚·ãƒ§ãƒ³:</b></pre></td>\n" +" <td bgcolor='white' width='100%'></td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='10'>\n" +"<tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td><pre>タイトル:</pre></td>\n" +" <td><input type='text' name='title' size='64'></td></tr>\n" +" </table>\n" +" </td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='é©ç”¨'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" +"\n" + +#: dpi/bookmarks.c:283 +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>Bookmarks</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: update\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +"<input type='hidden' name='operation' value='modify2'>\n" +msgstr "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>ブックマーク</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'><pre>&nbsp;ブックマークã®å¤‰æ›´:: アップデート</" +"pre>\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +"<input type='hidden' name='operation' value='modify2'>\n" + +#: dpi/bookmarks.c:310 +#, c-format +msgid "" +"<tr><td>\n" +" <table width='100%%' bgcolor='teal'>\n" +" <tr>\n" +" <td>Title:</td>\n" +" <td><input type='text' name='title%d' size='64'\n" +" value='%s'></td></tr>\n" +" <tr>\n" +" <td>URL:</td>\n" +" <td>%s</td></tr>\n" +" </table>\n" +" </td></tr>\n" +msgstr "" +"<tr><td>\n" +" <table width='100%%' bgcolor='teal'>\n" +" <tr>\n" +" <td><pre>タイトル:</pre></td>\n" +" <td><input type='text' name='title%d' size='64'\n" +" value='%s'></td></tr>\n" +" <tr>\n" +" <td>URL:</td>\n" +" <td>%s</td></tr>\n" +" </table>\n" +" </td></tr>\n" + +#: dpi/bookmarks.c:323 +#, c-format +msgid "" +"<tr><td>\n" +" <table width='100%%' bgcolor='teal'>\n" +" <tr>\n" +" <td>Title:</td>\n" +" <td><input type='text' name='s%d' size='64'\n" +" value='%s'></td></tr>\n" +" </table>\n" +" </td></tr>\n" +msgstr "" +"<tr><td>\n" +" <table width='100%%' bgcolor='teal'>\n" +" <tr>\n" +" <td><pre>タイトル:</pre></td>\n" +" <td><input type='text' name='s%d' size='64'\n" +" value='%s'></td></tr>\n" +" </table>\n" +" </td></tr>\n" + +#: dpi/bookmarks.c:336 +#, c-format +msgid "" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='submit.'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" +msgstr "" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='é©ç”¨'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" + +#: dpi/bookmarks.c:346 +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>Bookmarks</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: add url\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +"<input type='hidden' name='operation' value='add_url2'>\n" +"<table border='1' width='100%'>\n" +" <tr>\n" +" <td bgcolor='olive'><b>Add&nbsp;url:</b></td>\n" +" <td bgcolor='white' width='100%'></td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='10'>\n" +"<tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td>Title:</td>\n" +" <td><input type='text' name='title' size='64'></td></tr>\n" +" <tr>\n" +" <td>URL:</td>\n" +" <td><input type='text' name='url' size='64'></td></tr>\n" +" </table>\n" +" </td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='submit.'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" +msgstr "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>ブックマーク</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'><pre>&nbsp;ブックマークã®å¤‰æ›´:: URLã®è¿½åŠ </" +"pre>\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +"<input type='hidden' name='operation' value='add_url2'>\n" +"<table border='1' width='100%'>\n" +" <tr>\n" +" <td bgcolor='olive'><pre><b>URLã®è¿½åŠ :</b></pre></td>\n" +" <td bgcolor='white' width='100%'></td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='10'>\n" +"<tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td><pre>タイトル:</pre></td>\n" +" <td><input type='text' name='title' size='64'></td></tr>\n" +" <tr>\n" +" <td>URL:</td>\n" +" <td><input type='text' name='url' size='64'></td></tr>\n" +" </table>\n" +" </td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='é©ç”¨'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" + +#: dpi/bookmarks.c:691 +msgid "Unclassified" +msgstr "未分類" + +#: dpi/bookmarks.c:724 +#, c-format +msgid "echo \":s0: Unclassified\" > %s" +msgstr "echo \":s0: 未分類\" > %s" + +#: dpi/bookmarks.c:786 +#, c-format +msgid "" +"Syntax error in bookmarks file:\n" +" %s" +msgstr "ブックマークファイルã§æ§‹æ–‡ã‚¨ãƒ©ãƒ¼: %s" + +#: dpi/bookmarks.c:898 +msgid "Added bookmark!" +msgstr "ブックマークã«è¿½åŠ ã—ã¾ã—ãŸ!" + +#: dpi/bookmarks.c:1087 +msgid "Update&nbsp;sections:" +msgstr "<pre>セクションã®æ›´æ–°:</pre>" + +#: dpi/bookmarks.c:1107 +msgid "Update&nbsp;titles:" +msgstr "<pre>タイトルã®æ›´æ–°:</pre>" + +#: dpi/bookmarks.c:1404 +msgid "Delete: you must mark what to delete!" +msgstr "削除: 削除ã—ãŸã„項目をマークã—ã¦ä¸‹ã•ã„!" + +#: dpi/bookmarks.c:1410 +msgid "Move: you must mark a target section!" +msgstr "移動: 移動先ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’マークã—ã¦ä¸‹ã•ã„!" + +#: dpi/bookmarks.c:1412 +msgid "Move: can not move a section (yet)." +msgstr "移動: (ã¾ã )セクションを移動ã§ãã¾ã›ã‚“。" + +#: dpi/bookmarks.c:1414 +msgid "Move: you must mark some urls, and a target section!" +msgstr "移動: URL(複数å¯)ã¨ç§»å‹•å…ˆã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’é¸æŠžã—ã¦ä¸‹ã•ã„!" + +#: dpi/bookmarks.c:1419 +msgid "Modify: you must mark what to update!" +msgstr "変更: æ›´æ–°ã—ãŸã„項目をマークã—ã¦ä¸‹ã•ã„!" + +#: dpi/bookmarks.c:1436 +msgid "Add url: only one target section is allowed!" +msgstr "URLã®è¿½åŠ : セクションを一ã¤ã ã‘é¸æŠžã—ã¦ä¸‹ã•ã„!" + +#: dpi/bookmarks.c:1443 +msgid "No operation, just do nothing!" +msgstr "命令ãŒä½•ã‚‚é¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“!" + +#: dpi/bookmarks.c:1446 +msgid "Sorry, not implemented yet." +msgstr "ã™ã¿ã¾ã›ã‚“ã€ã¾ã å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“。" + +#: dpi/bookmarks.c:1614 +msgid "Haven't got a full tag!\n" +msgstr "å分ãªã‚¿ã‚°ã‚’å¾—ã¦ã„ã¾ã›ã‚“!\n" + +#: dpi/bookmarks.c:1690 +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<HTML><body> Error on the bookmarks server...</body></html>" +msgstr "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<HTML><body> ブックマークサーãƒãƒ¼ã®ã‚¨ãƒ©ãƒ¼ã§ã™...</body></html>" + +#: config/dillocfg.c:82 +msgid "Quit" +msgstr "終了" + +#: config/dillocfg.c:84 config/dillocfg.c:90 +msgid "Dillo Preferences" +msgstr "Dillo 設定" + +#: config/dillocfg.c:113 +msgid "Interface" +msgstr "インターフェース" + +#: config/dillocfg.c:114 +msgid " Font " +msgstr " フォント " + +#: config/dillocfg.c:115 +msgid " Color " +msgstr " 色 " + +#: config/dillocfg.c:116 +msgid " Network " +msgstr " ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ " + +#: config/dillocfg.c:118 +msgid " Tab " +msgstr " タブ " + +#: config/dillocfg.c:121 +msgid " Other " +msgstr " ãã®ä»– " + +#: config/dillocfg.c:329 +msgid "Add" +msgstr "追加" + +#: config/dillocfg.c:330 +msgid "Delete" +msgstr "削除" + +#: config/dillocfg.c:336 +msgid "Address" +msgstr "アドレス" + +#: config/dillocfg.c:337 +msgid "Rule" +msgstr "ルール" + +#: config/dillocfg.c:363 config/dillocfg.c:369 +#, c-format +msgid "Read failed <%s>\n" +msgstr "<%s>ã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ\n" + +#: config/dillocfg.c:450 config/dillocfg.c:458 +#, c-format +msgid "can't write <%s>\n" +msgstr "<%s>ã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“\n" + +#: config/dillocfg_token.c:60 +msgid "Window Size" +msgstr "Windowã®å¤§ãã•" + +#: config/dillocfg_token.c:68 +msgid "HTTP Proxy" +msgstr "HTTPプロキシ" + +#: config/dillocfg_token.c:76 +msgid "HTTP Proxy User" +msgstr "HTTPプロキシユーザー" + +#: config/dillocfg_token.c:84 +msgid "NO Proxy" +msgstr "プロキシを使ã‚ãªã„ã®ã¯" + +#: config/dillocfg_token.c:92 +msgid "User-Agent" +msgstr "ユーザーエージェント" + +#: config/dillocfg_token.c:100 +msgid "Send referer header" +msgstr "リファラヘッダをé€ä¿¡ã™ã‚‹" + +#: config/dillocfg_token.c:108 +msgid "Link color" +msgstr "未訪å•ãƒªãƒ³ã‚¯ã®è‰²" + +#: config/dillocfg_token.c:116 +msgid "Visited color" +msgstr "訪å•æ¸ˆã¿ãƒªãƒ³ã‚¯ã®è‰²" + +#: config/dillocfg_token.c:124 +msgid "BackGround color" +msgstr "背景ã®è‰²" + +#: config/dillocfg_token.c:132 +msgid "Allow white bg" +msgstr "白ã„背景を許å¯ã™ã‚‹" + +#: config/dillocfg_token.c:140 +msgid "Force my colors" +msgstr "常ã«è¨­å®šã—ãŸè‰²ã§è¡¨ç¤ºã™ã‚‹" + +#: config/dillocfg_token.c:148 +msgid "Contrast visited color" +msgstr "訪å•æ¸ˆã¿ãƒªãƒ³ã‚¯ã‚’æ­£å対ã®è‰²ã§è¡¨ç¤ºã™ã‚‹" + +#: config/dillocfg_token.c:156 +msgid "Text color" +msgstr "テキストã®è‰²" + +#: config/dillocfg_token.c:164 +msgid "Use oblique" +msgstr "イタリックã§ã¯ãªã斜体を使ã†" + +#: config/dillocfg_token.c:172 +msgid "Start Page" +msgstr "開始ページ" + +#: config/dillocfg_token.c:180 +msgid "HOMEPAGE" +msgstr "ホームページ" + +#: config/dillocfg_token.c:188 +msgid "Search-engine's URL" +msgstr "検索エンジンã®URL" + +#: config/dillocfg_token.c:196 +msgid "Search-engine's charset" +msgstr "検索エンジンã®æ–‡å­—コード" + +#: config/dillocfg_token.c:204 +msgid "Show Tooltip" +msgstr "ツールãƒãƒƒãƒ—を表示" + +#: config/dillocfg_token.c:212 +msgid "Panel Size" +msgstr "パãƒãƒ«ã®å¤§ãã•" + +#: config/dillocfg_token.c:220 +msgid "Small icons" +msgstr "å°ã•ã„アイコン" + +#: config/dillocfg_token.c:228 +msgid "Limit text width" +msgstr "テキストã®å¹…を制é™ã™ã‚‹" + +#: config/dillocfg_token.c:236 +msgid "Limit font decoration" +msgstr "フォントã®é£¾ã‚Šã‚’制é™ã™ã‚‹" + +#: config/dillocfg_token.c:244 +msgid "Font factor" +msgstr "フォントã®å€çŽ‡" + +#: config/dillocfg_token.c:252 +msgid "Font Sizes" +msgstr "フォントã®å¤§ãã•" + +#: config/dillocfg_token.c:260 +msgid "W3C+heuristics" +msgstr "W3C+ヒューリスティック" + +#: config/dillocfg_token.c:268 +msgid "Use dicache" +msgstr "ç”»åƒã‚’éžåœ§ç¸®ã§ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã™ã‚‹" + +#: config/dillocfg_token.c:276 +msgid "Show Back" +msgstr "戻るを表示" + +#: config/dillocfg_token.c:284 +msgid "Show Forw" +msgstr "進むを表示" + +#: config/dillocfg_token.c:292 +msgid "Show Home" +msgstr "ホームを表示" + +#: config/dillocfg_token.c:300 +msgid "Show Reload" +msgstr "å†èª­è¾¼ã‚’表示" + +#: config/dillocfg_token.c:308 +msgid "Show Save" +msgstr "ä¿å­˜ã‚’表示" + +#: config/dillocfg_token.c:316 +msgid "Show Stop" +msgstr "åœæ­¢ã‚’表示" + +#: config/dillocfg_token.c:324 +msgid "Show Bookmarks" +msgstr "ブックマークを表示" + +#: config/dillocfg_token.c:332 +msgid "Show Menubar" +msgstr "メニューãƒãƒ¼ã‚’表示" + +#: config/dillocfg_token.c:340 +msgid "Show ClearURL" +msgstr "URLクリアを表示" + +#: config/dillocfg_token.c:348 +msgid "Show URL box" +msgstr "URLボックスを表示" + +#: config/dillocfg_token.c:356 +msgid "Show Web Search" +msgstr "Web検索を表示" + +#: config/dillocfg_token.c:364 +msgid "Show Progress box" +msgstr "プログレスボックスを表示" + +#: config/dillocfg_token.c:372 +msgid "Show Popup navigation" +msgstr "ãƒãƒƒãƒ—アップナビゲーションを表示" + +#: config/dillocfg_token.c:380 +msgid "Fullwindow start" +msgstr "フルウインドウã§é–‹å§‹ã™ã‚‹" + +#: config/dillocfg_token.c:388 +msgid "Transient dialogs" +msgstr "一時的ãªãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã‚’許å¯ã™ã‚‹" + +#: config/dillocfg_token.c:396 +msgid "Popup dialogs" +msgstr "ダイアログをãƒãƒƒãƒ—アップã™ã‚‹" + +#: config/dillocfg_token.c:404 +msgid "vw_aafontname" +msgstr "AA時ã®ãƒ—ロãƒãƒ¼ã‚·ãƒ§ãƒŠãƒ«ãƒ•ã‚©ãƒ³ãƒˆ" + +#: config/dillocfg_token.c:412 +msgid "fw_aafontname" +msgstr "AA時ã®å›ºå®šå¹…フォント" + +#: config/dillocfg_token.c:420 +msgid "vw_fontname" +msgstr "プロãƒãƒ¼ã‚·ãƒ§ãƒŠãƒ«ãƒ•ã‚©ãƒ³ãƒˆ" + +#: config/dillocfg_token.c:428 +msgid "fw_fontname" +msgstr "固定幅フォント" + +#: config/dillocfg_token.c:436 +msgid "Generate submit" +msgstr "é€ä¿¡ãƒœã‚¿ãƒ³ã®è‡ªå‹•ç”Ÿæˆ" + +#: config/dillocfg_token.c:444 +msgid "Enterpress forces submit" +msgstr "Enterキーã§ãƒ•ã‚©ãƒ¼ãƒ ã®é€ä¿¡" + +#: config/dillocfg_token.c:452 +msgid "Show debugging messsages" +msgstr "デãƒãƒƒã‚°ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®è¡¨ç¤º" + +#: config/dillocfg_token.c:460 +msgid "Show Extra Warnings" +msgstr "余分ãªè­¦å‘Šã‚’表示" + +#: config/dillocfg_token.c:468 +msgid "Focus location on new" +msgstr "æ–°è¦Windowã§URLãƒãƒ¼ã«ãƒ•ã‚©ãƒ¼ã‚«ã‚¹ã™ã‚‹" + +#: config/dillocfg_token.c:476 config/dillocfg_token.c:484 +msgid "Accept Language" +msgstr "Accept Language" + +#: config/dillocfg_token.c:493 +msgid "Tab load in background" +msgstr "タブをè£ã§é–‹ã" + +#: config/dillocfg_token.c:501 +msgid "Tab close middle click" +msgstr "タブを中クリックã§é–‰ã˜ã‚‹" + +#: config/dillocfg_token.c:509 +msgid "Tab instead of window" +msgstr "Windowã®ä»£ã‚ã‚Šã«ã‚¿ãƒ–ã§é–‹ã" + +#: config/dillocfg_token.c:517 +msgid "Tab bar show fullscreen" +msgstr "フルスクリーンã§ã‚¿ãƒ–ãƒãƒ¼ã‚’表示" + +#: config/dillocfg_token.c:525 +msgid "Tab bar show single tab" +msgstr "タブãŒä¸€ã¤ã§ã‚‚表示ã™ã‚‹" + +#: config/dillocfg_token.c:533 +msgid "Tab bar scroller" +msgstr "タブãƒãƒ¼ã«ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ãƒœã‚¿ãƒ³ã‚’表示" + +#: config/dillocfg_token.c:541 +msgid "Tab bar homogeneous" +msgstr "タブを全ã¦åŒã˜å¹…ã«ã™ã‚‹" + +#: config/dillocfg_token.c:549 +msgid "Tab title compress" +msgstr "タブã®ã‚¿ã‚¤ãƒˆãƒ«ã‚’圧縮ã™ã‚‹" + +#: config/dillocfg_token.c:557 +msgid "Compress vowels" +msgstr "çœç•¥ã™ã‚‹æ–‡å­—" + +#: config/dillocfg_token.c:565 +msgid "Compress_common_prefixes" +msgstr "çœç•¥ã™ã‚‹æŽ¥é ­èªž" + +#: config/dillocfg_token.c:574 +msgid "Default" +msgstr "デフォルト" + +#~ msgid "" +#~ " URL URL to browse.\n" +#~ " FILE Local FILE to view.\n" +#~ msgstr "" +#~ " URL ブラウズã™ã‚‹URL\n" +#~ " FILE 表示ã™ã‚‹ãƒ­ãƒ¼ã‚«ãƒ«ãƒ•ã‚¡ã‚¤ãƒ«\n" + +#~ msgid "realm" +#~ msgstr "領域" + +#~ msgid " -f, --fullwindow Start in full window mode." +#~ msgstr " -f, --fullwindow フルウインドウã§é–‹å§‹ã—ã¾ã™" + +#~ msgid "Character entities for ASCII [129-159] are 'undefined' for HTML\n" +#~ msgstr "HTMLã§ã¯ASCII [129-159]ã®æ–‡å­—実体å‚ç…§ãŒæœªå®šç¾©ã§ã™ã€‚\n" + +#~ msgid "first character of '%s' value is outside the [A-Za-z] set\n" +#~ msgstr "'%s'ã®æœ€åˆã®æ–‡å­—ãŒ[A-Za-z]以外ã§ã™\n" + +#~ msgid "not found ' or \" in <meta> tag!\n" +#~ msgstr "<meta>タグ内㫠' ã¾ãŸã¯ \" ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n" + +#~ msgid "<meta> outside of <head>! or not found charset.\n" +#~ msgstr "<head>ã®å¤–å´ã«<meta>ãŒã‚ã‚‹ã‹ã€charsetãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n" + +#~ msgid "Close Find Text" +#~ msgstr "テキストã®æ¤œç´¢ã‚’é–‰ã˜ã‚‹" + +#~ msgid "get_command failed\n" +#~ msgstr "get_commandãŒå¤±æ•—ã—ã¾ã—ãŸ\n" + +#~ msgid "Clear the url-box!" +#~ msgstr "URLボックスをクリア" + +#~ msgid "Go to next page" +#~ msgstr "次ã®ãƒšãƒ¼ã‚¸ã«é€²ã‚€" + +#~ msgid "Show HTML bugs" +#~ msgstr "HTMLã®ãƒã‚°ã‚’表示" + +#~ msgid "Directory listing of" +#~ msgstr "ディレクトリã®ä¸€è¦§ " + +#~ msgid "Parent directory" +#~ msgstr "上ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª" + +#~ msgid "ERROR: Can't find %s %s" +#~ msgstr "エラー: %s %sを見ã¤ã‘られã¾ã›ã‚“" + +#~ msgid "Warning: Can't find <%s>\n" +#~ msgstr "警告: <%s>を見ã¤ã‘られã¾ã›ã‚“\n" + +#~ msgid "Add Bookmark for Link" +#~ msgstr "リンクをブックマークã«è¿½åŠ " + +#~ msgid "ERROR: suspicious username: %s\n" +#~ msgstr "エラー: ç–‘ã‚ã—ã„ユーザーå: %s\n" + +#~ msgid "Server NOT running\n" +#~ msgstr "サーãƒãƒ¼ãŒèµ·å‹•ã—ã¦ã„ã¾ã›ã‚“。\n" + +#~ msgid "<waited %d cycles for server to be on line>\n" +#~ msgstr "<サーãƒãƒ¼ã‚’ã“ã®è¡Œã§%dサイクル待ã¡ã¾ã—ãŸ>\n" + +#~ msgid "Tab" +#~ msgstr "タブ" + +#~ msgid "Window Width" +#~ msgstr "Windowã®æ¨ªå¹…" + +#~ msgid "Window Height" +#~ msgstr "Windowã®é«˜ã•" + +#~ msgid "broken JIS code!\n" +#~ msgstr "ç ´æã—ãŸJISコードã§ã™\n" + +#~ msgid "guess maybe mistaken. recheck charset.\n" +#~ msgstr "推測ã«å¤±æ•—ã—ãŸå¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚文字コードをå†ãƒã‚§ãƒƒã‚¯ã—ã¾ã™ã€‚\n" + +#~ msgid "not found meta tag charset.\n" +#~ msgstr "metaã‚¿ã‚°ã«charsetãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n" + +#~ msgid "Setting locale to %s...\n" +#~ msgstr "LOCALEã‚’%sã«è¨­å®šã—ã¦ã„ã¾ã™...\n" diff -pruN dillo-0.8.6/po/quot.sed dillo-0.8.6-i18n-misc-20060709/po/quot.sed --- dillo-0.8.6/po/quot.sed 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/po/quot.sed 2006-05-16 01:21:06.000000000 +0900 @@ -0,0 +1,6 @@ +s/"\([^"]*\)"/“\1â€/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“â€/""/g diff -pruN dillo-0.8.6/po/remove-potcdate.sin dillo-0.8.6-i18n-misc-20060709/po/remove-potcdate.sin --- dillo-0.8.6/po/remove-potcdate.sin 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/po/remove-potcdate.sin 2006-05-16 01:21:06.000000000 +0900 @@ -0,0 +1,19 @@ +# Sed script that remove the POT-Creation-Date line in the header entry +# from a POT file. +# +# The distinction between the first and the following occurrences of the +# pattern is achieved by looking at the hold space. +/^"POT-Creation-Date: .*"$/{ +x +# Test if the hold space is empty. +s/P/P/ +ta +# Yes it was empty. First occurrence. Remove the line. +g +d +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} ¥Ð¥¤¥Ê¥ê¡¼¡¦¥Õ¥¡¥¤¥ëdillo-0.8.6/po/zh_CN.gmo¤Èdillo-0.8.6-i18n-misc-20060709/po/zh_CN.gmo¤Ï°ã¤¤¤Þ¤¹ diff -pruN dillo-0.8.6/po/zh_CN.po dillo-0.8.6-i18n-misc-20060709/po/zh_CN.po --- dillo-0.8.6/po/zh_CN.po 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/po/zh_CN.po 2006-07-09 00:49:43.000000000 +0900 @@ -0,0 +1,2100 @@ +# Dillo Chinese Translation. +# Copyright (C) YEAR Free Software Foundation, Inc. +# This file is distributed under the same license as the PACKAGE package. +# Babyfai Cheung <babyfai1@yahoo.com.hk>, 2005. +msgid "" +msgstr "" +"Project-Id-Version: Dillo 0.8.4-i18n-misc\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2006-07-09 00:49+0900\n" +"PO-Revision-Date: 2005-02-06 22:00+0800\n" +"Last-Translator: Babyfai Cheung <babyfai1@yahoo.com.hk>\n" +"Language-Team: NONE\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/msg.h:27 +msgid "HTTP warning: " +msgstr "" + +#: src/auth.c:87 +msgid "Browser Url has changed\n" +msgstr "æµè§ˆå™¨ä½å€å·²å˜æ›´\n" + +#: src/cache.c:253 +msgid "WARNING: Cache_entry_add, leaking an entry.\n" +msgstr "" + +#: src/cache.c:316 +msgid "## Aborting CCCQuery\n" +msgstr "## 退出 CCCQuery\n" + +#: src/cache.c:319 +msgid "## Aborting CCCAnswer\n" +msgstr "## 退出 CCCAnswer\n" + +#: src/cache.c:322 +msgid "## Aborting raw2\n" +msgstr "## 退出 raw2\n" + +#: src/cache.c:365 +msgid "## No more clients for this entry\n" +msgstr "" + +#: src/cache.c:369 +msgid "Cache_prepare_reload: ERROR, entry still has clients\n" +msgstr "" + +#: src/cache.c:398 +#, c-format +msgid "Reloading >%s< because it shouldn't be cached\n" +msgstr "" + +#: src/cache.c:418 +msgid "ERROR: unsupported protocol" +msgstr "错误: 尚未支æ´çš„通讯å定" + +#: src/cache.c:488 +#, c-format +msgid "Redirect loop for URL: >%s<\n" +msgstr "é‡å¯¼å‘回圈予 URL: >%s<\n" + +#: src/cache.c:590 +#, c-format +msgid "Bad clocks, ignore expire on >%s<\n" +msgstr "" + +#: src/cache.c:594 +#, c-format +msgid "Forcing min expire %d on >%s< instead %ld\n" +msgstr "" + +#: src/cache.c:678 +msgid "'Cache-Control: max-age=' without 'Date: ' header" +msgstr "" + +#: src/cache.c:722 +msgid "Server didn't send Content-Type in header.\n" +msgstr "æœåŠ¡å™¨å¹¶æœªåœ¨æ ‡å¤´ä¸­é€å‡ºå†…容.\n" + +#: src/cache.c:743 +#, c-format +msgid "Forcing default expire to query url >%s<\n" +msgstr "" + +#: src/cache.c:831 +#, c-format +msgid "Cache_decode_data: got all data -- decodinging %s\n" +msgstr "Cache_decode_data: 收到全部资料 -- æ­£åœ¨è§£ç  %s\n" + +#: src/cache.c:840 +msgid "Cache_decode_data: not gzip data!\n" +msgstr "Cache_decode_data: 没有压缩资料!\n" + +#: src/cache.c:846 +msgid "Cache_decode_data: invalid gzip data!\n" +msgstr "Cache_decode_data: 无效的压缩资料!\n" + +#: src/cache.c:898 +msgid "not x-gzip\n" +msgstr "没有 X-压缩资料\n" + +#: src/cache.c:931 +#, c-format +msgid "" +"Content-Length does NOT match message body,\n" +" at: %s\n" +msgstr "" +"å‘现ä¸ç¬¦é•¿åº¦çš„内容,\n" +" 在: %s\n" + +#: src/cache.c:950 +msgid "Cache_process_io Op = IOAbort; not implemented yet\n" +msgstr "" + +#: src/cache.c:1004 +#, c-format +msgid "ERROR: redirect loop for: %s" +msgstr "错误: é‡å¯¼å‘回圈予: %s" + +#: src/cache.c:1015 +#, c-format +msgid "" +">>>Redirect from: %s\n" +" to %s\n" +msgstr "" +">>>é‡å¯¼å‘从: %s\n" +" 至 %s\n" + +#: src/cache.c:1035 +msgid ">>>Image redirection without entity-content<<<\n" +msgstr ">>>é‡å¯¼å‘å½±åƒ,在无实质主题下<<<\n" + +#: src/cache.c:1037 +msgid ">>>Image redirection with entity-content<<<\n" +msgstr ">>>é‡å¯¼å‘å½±åƒ,在实质主题下<<<\n" + +#: src/cache.c:1103 +msgid "FATAL!:*** >>>> Cache_process_queue Caught busy!!!\n" +msgstr "é‡å¤§é”™è¯¯:*** >>>> Cache_process_queue 系统ç¹å¿™ !!!\n" + +#: src/cache.c:1111 +#, c-format +msgid "Content-Type '%s' doesn't match the real data.\n" +msgstr "" + +#: src/cache.c:1140 +#, c-format +msgid "HTTP warning: Content-Type '%s' doesn't match the real data." +msgstr "" + +#: src/cache.c:1177 +#, fuzzy, c-format +msgid "Unhandled MIME type: <%s>\n" +msgstr "" +"\n" +" ä¸æ˜Žçš„ MIME 类型: <%s>\n" + +#: src/cache.c:1202 +msgid "Client Callback is NULL" +msgstr "" + +#: src/cache.c:1303 +msgid "WARNING: Cache_stop_client, inexistent client\n" +msgstr "" + +#: src/cache.c:1445 src/capi.c:428 src/capi.c:481 src/capi.c:536 +#: src/capi.c:570 src/IO/dpi.c:720 src/IO/dpi.c:760 +msgid " Not implemented\n" +msgstr "没有实行\n" + +#: src/capi.c:229 +msgid "Capi_verify_dpi_url_request: Permission Denied!\n" +msgstr "" + +#: src/capi.c:324 +#, c-format +msgid " reload=%d URL_E2EReload=%d\n" +msgstr "" + +#: src/capi.c:389 +msgid " ERROR: [a_Capi_dpi_send_cmd] No open connection found\n" +msgstr "" + +#: src/capi.c:457 +msgid "ERROR: can't start dpid daemon!" +msgstr "" + +#: src/capi.c:492 +msgid " ** Capi 2F catched an invalid 'web' structure\n" +msgstr "" + +#: src/capi.c:552 +msgid " Error with pipe\n" +msgstr "" + +#: src/commands.c:166 +msgid "View Source" +msgstr "检视æºå§‹æ¡£" + +#: src/commands.c:183 +msgid "Detected HTML errors" +msgstr "å‘现 HTML 错误" + +#: src/commands.c:265 +msgid "Stopped" +msgstr "å·²åœæ­¢" + +#: src/dillo.c:109 +msgid "" +" -x, --xid XID Open first Dillo window in an existing\n" +" GtkSocket which window ID is XID (decimal)." +msgstr "" + +#: src/dillo.c:112 +msgid " -v, --version Display version info and exit." +msgstr "" + +#: src/dillo.c:114 +msgid " -h, --help Display this help text and exit." +msgstr "" + +#: src/dillo.c:116 +msgid "" +" -f, --fullwindow Start in full window mode: hide address bar,\n" +" navigation buttons, menu, and status bar." +msgstr "" + +#: src/dillo.c:119 +msgid " -l, --local Don't follow links for this URL(s)." +msgstr "" + +#: src/dillo.c:121 +msgid "" +" -g, -geometry GEO Set initial window position where GEO is\n" +" <width>x<height>{+-}<x>{+-}<y>" +msgstr "" + +#: src/dillo.c:125 +msgid "" +" -D, --debug-rendering Draw additionaly several lines in a web page,\n" +" representing its structure. For debugging. " +msgstr "" + +#: src/dillo.c:129 +msgid " -R, --rcfile FILE Use alternative rcfile." +msgstr "" + +#: src/dillo.c:266 +#, c-format +msgid "" +"Error: the XID must be an unsigned decimal numerical value.\n" +"The offending value was: %s\n" +msgstr "" + +#: src/dillo.c:284 +msgid "Error in command line options.\n" +msgstr "" + +#: src/dillo.c:291 +#, c-format +msgid "Setting gtk charset to %s...\n" +msgstr "" + +#: src/dillo.c:395 +#, fuzzy +msgid "Dillo: normal exit!\n" +msgstr "Dillo: 找寻字串" + +#: src/dillo.c:409 +#, c-format +msgid "Dillo: error creating directory %s: %s\n" +msgstr "" + +#: src/dillo.c:412 +#, c-format +msgid "Dillo: error reading %s: %s\n" +msgstr "" + +#: src/dillo.c:461 +#, c-format +msgid "Option %s requires %d argument(s)\n" +msgstr "" + +#: src/dillo.c:496 +msgid "" +"\n" +"Usage: dillo [OPTIONS] [URL|FILE]...\n" +"Options:\n" +msgstr "" + +#: src/dillo.c:503 +#, c-format +msgid " %s, %s *Undocumented*\n" +msgstr "" + +#: src/dillo.c:506 +msgid "" +" URL URL to browse.\n" +" FILE Local FILE to view.\n" +msgstr "" + +#: src/html.c:182 +#, c-format +msgid "HTML warning: line %d, " +msgstr "" + +#: src/html.c:213 +#, c-format +msgid "URL has %d illegal character%s [%d space%s]\n" +msgstr "" + +#: src/html.c:216 +#, c-format +msgid "URL has %d illegal character%s [%d in (00-1F or 7F)]\n" +msgstr "" + +#: src/html.c:219 +#, c-format +msgid "URL has %d illegal character%s [%d space%s and %d in (00-1F or 7F)]\n" +msgstr "" + +#: src/html.c:1226 +msgid "numeric character reference out of range\n" +msgstr "" + +#: src/html.c:1234 +msgid "numeric character reference without trailing ';'\n" +msgstr "" + +#: src/html.c:1246 +#, c-format +msgid "undefined character entity '%s'\n" +msgstr "" + +#: src/html.c:1254 +msgid "character entity reference without trailing ';'\n" +msgstr "" + +#: src/html.c:1262 +msgid "code positions 128-159 are not defined for ISO Latin-1\n" +msgstr "" + +#: src/html.c:1270 +msgid "literal '&'\n" +msgstr "" + +#: src/html.c:1379 +msgid "TAB character inside <PRE>\n" +msgstr "" + +#: src/html.c:1615 +#, c-format +msgid " - forcing close of open tag: <%s>\n" +msgstr "" + +#: src/html.c:1624 +#, c-format +msgid "unexpected closing tag: </%1$s>. -- expected </%2$s>\n" +msgstr "" + +#: src/html.c:1696 +#, c-format +msgid "Garbage after length: %s\n" +msgstr "" + +#: src/html.c:1715 +msgid "color is not in \"#RRGGBB\" format\n" +msgstr "" + +#: src/html.c:1735 +#, c-format +msgid "'%s' value is not of the form [A-Za-z][A-Za-z0-9:_.-]*\n" +msgstr "" + +#: src/html.c:1839 +msgid "HTML element was already open\n" +msgstr "" + +#: src/html.c:1866 +msgid "HEAD element must go before the BODY section\n" +msgstr "" + +#: src/html.c:1876 +msgid "HEAD element was already open\n" +msgstr "" + +#: src/html.c:1889 +msgid "HEAD section lacks the TITLE element\n" +msgstr "" + +#: src/html.c:1917 +msgid "the TITLE element must be inside the HEAD section\n" +msgstr "" + +#: src/html.c:1986 +msgid "BODY element was already open\n" +msgstr "" + +#: src/html.c:1991 +msgid "unclosed HEAD element\n" +msgstr "" + +#: src/html.c:2187 +msgid "<td> or <th> outside <table>\n" +msgstr "" + +#: src/html.c:2191 +msgid "<td> or <th> outside <tr>\n" +msgstr "" + +#: src/html.c:2309 +msgid "Invalid HTML syntax: <tr> outside <table>\n" +msgstr "" + +#: src/html.c:2367 +msgid "<noframes> outside of <frameset>!!!\n" +msgstr "" + +#: src/html.c:2375 +msgid "<noframe> is illegal tag !!! use <noframes>.\n" +msgstr "" + +#: src/html.c:2562 +msgid "<frame> outside of <frameset>\n" +msgstr "" + +#: src/html.c:2565 +msgid "<frame> inside of <noframes>\n" +msgstr "" + +#: src/html.c:2568 +msgid "<frame> inside of <iframe>\n" +msgstr "" + +#: src/html.c:2620 +msgid "incorrectly placed <frameset>\n" +msgstr "" + +#: src/html.c:2636 +msgid "<frameset> inside of <noframes>\n" +msgstr "" + +#: src/html.c:2641 +msgid "<frameset> inside of <iframe>\n" +msgstr "" + +#: src/html.c:3123 +msgid " Html_tag_open_img: server-side map (ISMAP)\n" +msgstr "" + +#: src/html.c:3149 +msgid "nested <map>\n" +msgstr "" + +#: src/html.c:3201 +msgid "usemap coords MUST be separated with ','\n" +msgstr "" + +#: src/html.c:3245 +msgid "nohref" +msgstr "" + +#: src/html.c:3284 +msgid "link depends on javascript()\n" +msgstr "" + +#: src/html.c:3300 +#, c-format +msgid "Registering ANCHOR: %s\n" +msgstr "" + +#: src/html.c:3305 +msgid "Anchor names must be unique within the document\n" +msgstr "" + +#: src/html.c:3512 +msgid "it is strongly recommended using <UL> instead of <MENU>\n" +msgstr "" + +#: src/html.c:3574 +msgid "<li> outside <ul> or <ol>\n" +msgstr "" + +#: src/html.c:3770 +msgid "nested forms\n" +msgstr "" + +#: src/html.c:3817 +msgid "FORM lacks a Submit button\n" +msgstr "" + +#: src/html.c:3819 +msgid " (added a submit button internally)\n" +msgstr "" + +#: src/html.c:3923 +msgid "META elements must be inside the HEAD section\n" +msgstr "" + +#: src/html.c:3975 +#, c-format +msgid "" +"The NON-STANDARD meta refresh tag. The HTML 4.01 SPEC (sec 7.4.4) recommends " +"explicitly to avoid it. The author wanted you to go <%s>\n" +msgstr "" + +#: src/html.c:4345 +msgid "Html_submit_form: Method unknown\n" +msgstr "" + +#: src/html.c:4427 +msgid "Html_input_image: unable to create image submit.\n" +msgstr "" + +#: src/html.c:4449 +msgid "input camp outside <form>\n" +msgstr "" + +#: src/html.c:4529 +msgid "submit" +msgstr "æ交" + +#: src/html.c:4536 config/dillocfg.c:79 +msgid "Reset" +msgstr "é‡è®¾" + +#: src/html.c:4546 +msgid "Submit" +msgstr "æ交" + +#: src/html.c:4563 +msgid "An input of the type \"file\" wasn't rendered!\n" +msgstr "" + +#: src/html.c:4737 +msgid "<textarea> outside <form>\n" +msgstr "" + +#: src/html.c:4742 +msgid "nested <textarea>\n" +msgstr "" + +#: src/html.c:4814 +msgid "<select> outside <form>\n" +msgstr "" + +#: src/html.c:4818 +msgid "nested <select>\n" +msgstr "" + +#: src/html.c:5042 +msgid "base URI is relative (it MUST be absolute)\n" +msgstr "" + +#: src/html.c:5049 +msgid "the BASE element must appear in the HEAD section\n" +msgstr "" + +#: src/html.c:5400 +#, c-format +msgid "<%1$s> is not allowed to contain <%2$s>. -- closing <%3$s>\n" +msgstr "" + +#: src/html.c:5515 +#, c-format +msgid "<pre> is not allowed to contain <%s>\n" +msgstr "" + +#: src/html.c:5537 +msgid "'id' and 'name' attribute of <a> tag differ\n" +msgstr "" + +#: src/html.c:5764 +msgid "Html_write_raw : bufsize is negative!\n" +msgstr "" + +#: src/html.c:5842 +msgid "attribute lacks closing quote\n" +msgstr "" + +#: src/html.c:5850 +#, c-format +msgid "<%s> element lacks its closing '>'\n" +msgstr "" + +#: src/html.c:6144 +msgid "could not allocate character encoding converter" +msgstr "" + +#: src/misc.c:455 +msgid "Untitled" +msgstr "未命å" + +#: src/interface.c:249 +msgid "Selection retrieval failed\n" +msgstr "选择回收失败\n" + +#: src/interface.c:363 +msgid "Clear the URL box (middle-click to paste an URL)." +msgstr "清空ä½å€æ (点击中键)." + +#: src/interface.c:385 +msgid "Search the Web" +msgstr "æœå¯»ç½‘页" + +#: src/interface.c:417 src/menu.c:231 src/menu.c:280 +msgid "Back" +msgstr "返回" + +#: src/interface.c:421 +msgid "Go to previous page (right-click for menu)." +msgstr "回到上一页(å³å‡»èœå•)." + +#: src/interface.c:450 src/menu.c:233 src/menu.c:282 +msgid "Forward" +msgstr "å¾€å‰" + +#: src/interface.c:454 +msgid "Go to next page (right-click for menu)." +msgstr "移至下一页(å³å‡»èœå•)." + +#: src/interface.c:481 +msgid "Home" +msgstr "首页" + +#: src/interface.c:485 +msgid "Go to the Home page" +msgstr "移至首页" + +#: src/interface.c:499 config/dillocfg.c:80 +msgid "Reload" +msgstr "é‡è½½" + +#: src/interface.c:500 +msgid "Reload this page" +msgstr "é‡æ–°è½½å…¥" + +#: src/interface.c:512 config/dillocfg.c:81 +msgid "Save" +msgstr "储存" + +#: src/interface.c:513 +msgid "Save this page" +msgstr "储存网页" + +#: src/interface.c:520 src/menu.c:235 src/menu.c:284 +msgid "Stop" +msgstr "åœæ­¢" + +#: src/interface.c:521 +msgid "Stop the current transfer" +msgstr "åœæ­¢å½“å‰çš„ä¼ é€" + +#: src/interface.c:534 +msgid "Book" +msgstr "书签" + +#: src/interface.c:538 +msgid "View bookmarks" +msgstr "检视书签" + +#: src/interface.c:655 src/interface.c:826 +msgid "Hide Controls" +msgstr "éšè—控制æ " + +#: src/interface.c:655 src/interface.c:826 +msgid "Show Controls" +msgstr "显示控制æ " + +#: src/interface.c:929 +msgid "Show HTML bugs (right-click for menu)." +msgstr "显示 HTML 错误(å³å‡»èœå•)." + +#: src/interface.c:1231 +#, c-format +msgid "Warning: search_url ends with '%%'\n" +msgstr "警告: search_url 结尾为 '%%'\n" + +#: src/interface.c:1233 +#, c-format +msgid "Warning: illegal specifier '%%%c' in search_url\n" +msgstr "警告: 在 search_url 中,有éžæ³•çš„指定符 '%%%c'\n" + +#: src/interface.c:1298 +msgid "Dillo: Open File" +msgstr "Dillo: å¼€å¯æ–‡ä»¶" + +#: src/interface.c:1374 +msgid "Clear" +msgstr "清除" + +#: src/interface.c:1382 src/interface.c:1536 src/nav.c:453 +msgid "Cancel" +msgstr "å–消" + +#: src/interface.c:1513 +msgid "User Name:" +msgstr "用户å称:" + +#: src/interface.c:1520 +msgid "Password:" +msgstr "å£ä»¤:" + +#: src/interface.c:1529 src/interface.c:1604 src/interface.c:2073 +#: src/nav.c:453 +msgid "OK" +msgstr "确定" + +#: src/interface.c:1566 +msgid "Dillo: Enter Authentication" +msgstr "Dillo: 进入验è¯" + +#: src/interface.c:1586 +msgid "Dillo: Question" +msgstr "Dillo: 问题" + +#: src/interface.c:1602 +msgid "Dillo: Open URL" +msgstr "Dillo: å¼€å¯ç½‘页" + +#: src/interface.c:1626 +#, c-format +msgid "File saved (%d Bytes)" +msgstr "文件已存入(%d Bytes)" + +#: src/interface.c:1708 +#, c-format +msgid "Error trying to save: %s\n" +msgstr "错误於储存: %s\n" + +#: src/interface.c:1761 +msgid "Dillo: Save URL as File..." +msgstr "Dillo: 储存网页为..." + +#: src/interface.c:1788 +msgid "Dillo: Save link as File..." +msgstr "Dillo: 储存连接为..." + +#: src/interface.c:1843 src/interface.c:1857 +msgid "Dillo: Find text" +msgstr "Dillo: 找寻字串" + +#: src/interface.c:1844 src/interface.c:1850 +#, c-format +msgid "Cannot find \"%s\"." +msgstr "找ä¸åˆ° \"%s\"." + +#: src/interface.c:1858 +#, c-format +msgid "No further occurence of \"%s\". Restarting from the beginning." +msgstr "找ä¸åˆ°æ›´å¤šç¬¦åˆ \"%s\". é‡å¼€ç«¯å†æ‰¾å¯»" + +#: src/interface.c:1866 +#, c-format +msgid "(Find) \"%s\": restart from beginning" +msgstr "(找寻) \"%s\": é‡å¼€ç«¯å†æ‰¾å¯» " + +#: src/interface.c:1879 +#, c-format +msgid "(Find) \"%s\"" +msgstr "(找寻) \"%s\"" + +#: src/interface.c:1885 +msgid "Unexpected return from a_Dw_gtk_scrolled_window_search()\n" +msgstr "æ„外回传从 a_Dw_gtk_scrolled_window_search()\n" + +#: src/interface.c:1937 +msgid "press <Enter> to (repeat) search, <Esc> to close search" +msgstr "按 <Enter> é‡æ–°æœå¯», <Esc> 退出" + +#: src/interface.c:1938 src/interface.c:2031 +msgid "Search" +msgstr "æœå¯»" + +#: src/interface.c:1940 src/interface.c:1941 src/interface.c:1977 +msgid "Case sensitive" +msgstr "区分大å°å†™" + +#: src/interface.c:1975 +msgid "Dillo: Find text in page" +msgstr "Dillo: 在页é¢ä¸­æ‰¾å¯»æ–‡å­—" + +#: src/interface.c:1978 +msgid "Find" +msgstr "找寻" + +#: src/interface.c:2029 +msgid "Dillo" +msgstr "Dillo" + +#: src/interface.c:2029 +msgid "Dillo: Search the Web" +msgstr "Dillo: æœå¯»ç½‘页" + +#: src/interface.c:2066 +#, c-format +msgid "Dillo: Enter proxy password for '%s'" +msgstr "Dillo: 输入 '%s' çš„æœåŠ¡å™¨å£ä»¤" + +#: src/interface.c:2151 +msgid "Close" +msgstr "关闭" + +#: src/interface.c:2226 +msgid "close" +msgstr "关闭" + +#: src/nav.c:383 +#, c-format +msgid "Unhandled switch type %d in a_Nav_jump_callback in src/nav.c\n" +msgstr "" + +#: src/nav.c:452 +msgid "Repost form data?" +msgstr "å†åˆ—出表å•èµ„æ–™?" + +#: src/menu.c:173 +msgid "_File" +msgstr "文件(_F)" + +#: src/menu.c:174 +msgid "_New Window" +msgstr "新窗å£(_N)" + +#: src/menu.c:177 +msgid "New _Tab" +msgstr "新分页(_T)" + +#: src/menu.c:181 +msgid "_Open File..." +msgstr "å¼€å¯æ–‡ä»¶(_O)..." + +#: src/menu.c:183 +msgid "Open _URL..." +msgstr "å¼€å¯ä½å€(_U)..." + +#: src/menu.c:189 +msgid "Close Window" +msgstr "关闭窗å£" + +#: src/menu.c:192 src/menu.c:359 +msgid "Close Tab" +msgstr "关闭分页" + +#: src/menu.c:196 +msgid "Exit Dillo" +msgstr "关闭 Dillo" + +#: src/menu.c:200 +msgid "_View" +msgstr "检视(_V)" + +#: src/menu.c:202 +msgid "Previous tab" +msgstr "上一分页" + +#: src/menu.c:204 +msgid "Next tab" +msgstr "下一分页" + +#: src/menu.c:208 +msgid "_Options..." +msgstr "选项(_O)..." + +#: src/menu.c:228 +msgid "PAGE OPTIONS" +msgstr "页é¢é€‰é¡¹" + +#: src/menu.c:237 src/menu.c:286 +msgid "_Reload" +msgstr "é‡è½½(_R)" + +#: src/menu.c:241 +msgid "View page So_urce" +msgstr "检视æºå§‹æ¡£(_S)" + +#: src/menu.c:243 +msgid "View page Bugs" +msgstr "检视页é¢é”™è¯¯" + +#: src/menu.c:244 +msgid "_Bookmark this Page" +msgstr "加进书签(_B)" + +#: src/menu.c:247 +msgid "Duplicate this Page" +msgstr "å¤åˆ¶è‡³æ–°çª—å£" + +#: src/menu.c:250 +msgid "Duplicate this tab" +msgstr "å¤åˆ¶è‡³æ–°åˆ†é¡µ" + +#: src/menu.c:254 +msgid "_Find Text" +msgstr "找寻文字(_F)" + +#: src/menu.c:257 +msgid "Jump to..." +msgstr "跳至..." + +#: src/menu.c:258 +msgid "This Frame..." +msgstr "此框架..." + +#: src/menu.c:259 +msgid "This Frameset..." +msgstr "此框架布局..." + +#: src/menu.c:262 +msgid "Save Page As..." +msgstr "储存为..." + +#: src/menu.c:277 +msgid "FRAME OPTIONS" +msgstr "框架选项" + +#: src/menu.c:290 +msgid "View frame Source" +msgstr "检视框架æºå§‹æ¡£" + +#: src/menu.c:292 +msgid "Bookmark this Frame" +msgstr "框架加进书签" + +#: src/menu.c:294 +msgid "Reload this Frame" +msgstr "é‡æ–°è½½å…¥" + +#: src/menu.c:297 +msgid "Show only this Frame" +msgstr "åªæ˜¾ç¤ºæ­¤æ¡†æž¶" + +#: src/menu.c:299 +msgid "Open Frame in new Window" +msgstr "在新窗å£å¼€å¯æ¡†æž¶" + +#: src/menu.c:302 +msgid "Open Frame in new Tab" +msgstr "在新分页开å¯æ¡†æž¶" + +#: src/menu.c:306 +msgid "_Find Text in this Frame..." +msgstr "於框架找寻字串(_F)..." + +#: src/menu.c:309 src/menu.c:340 +msgid "Save Frame As..." +msgstr "储存框架为..." + +#: src/menu.c:325 +msgid "FRAMESET OPTIONS" +msgstr "框架布局选项" + +#: src/menu.c:327 +msgid "View Frameset Source" +msgstr "检视æºå§‹æ¡£" + +#: src/menu.c:329 +msgid "Bookmark this Frameset" +msgstr "加进书签" + +#: src/menu.c:331 +msgid "Reload this Frameset" +msgstr "é‡æ–°è½½å…¥" + +#: src/menu.c:334 +msgid "Show only this Frameset" +msgstr "åªæ˜¾ç¤ºæ­¤æ¡†æž¶" + +#: src/menu.c:337 +msgid "_Find Text in this Frameset..." +msgstr "找寻字串(_F)..." + +#: src/menu.c:357 +msgid "TAB OPTIONS" +msgstr "分页选项" + +#: src/menu.c:361 +msgid "New Tab" +msgstr "新分页" + +#: src/menu.c:363 +msgid "Reload Tab" +msgstr "é‡è½½åˆ†é¡µ" + +#: src/menu.c:460 +msgid "FOLLOWING PAGES" +msgstr "下一页" + +#: src/menu.c:463 +msgid "PREVIOUS PAGES" +msgstr "上一页" + +#: src/menu.c:531 +msgid "LINK OPTIONS" +msgstr "连接选项" + +#: src/menu.c:533 +msgid "Open Link in New Window" +msgstr "在新窗å£å¼€å¯è¿žæŽ¥" + +#: src/menu.c:536 +msgid "Open Link in New Tab" +msgstr "在新分页开å¯è¿žæŽ¥" + +#: src/menu.c:539 +msgid "Open Link" +msgstr "å¼€å¯è¿žæŽ¥" + +#: src/menu.c:542 +msgid "Bookmark this Link" +msgstr "连接加进书签" + +#: src/menu.c:544 +msgid "Copy Link location" +msgstr "å¤åˆ¶è¿žæŽ¥ä½å€" + +#: src/menu.c:549 +msgid "Save Link As..." +msgstr "储存连接为..." + +#: src/menu.c:553 +msgid "Image Menu..." +msgstr "å½±åƒèœå•.." + +#: src/menu.c:571 +msgid "IMAGE OPTIONS" +msgstr "å½±åƒé€‰é¡¹" + +#: src/menu.c:573 +msgid "Isolate Image" +msgstr "检视影åƒ" + +#: src/menu.c:575 +msgid "Open Image in New Window" +msgstr "在新窗å£å¼€å¯å½±åƒ" + +#: src/menu.c:578 +msgid "Open Image in New Tab" +msgstr "在新分页开å¯å½±åƒ" + +#: src/menu.c:581 +msgid "Open Image" +msgstr "å¼€å¯å½±åƒ" + +#: src/menu.c:584 +msgid "Bookmark this Image" +msgstr "将影åƒåŠ å…¥ä¹¦ç­¾" + +#: src/menu.c:586 +msgid "Copy Image location" +msgstr "å¤åˆ¶å½±åƒä½å€" + +#: src/menu.c:591 +msgid "Save Image As..." +msgstr "储存影åƒä¸º..." + +#: src/menu.c:605 +msgid "BUG METER OPTIONS" +msgstr "错误侦测选项" + +#: src/menu.c:607 +msgid "Validate URL with W3C" +msgstr "以 W3C 错误侦测" + +#: src/menu.c:609 +msgid "Validate URL with WDG" +msgstr "以 WDG 错误侦测" + +#: src/menu.c:612 +msgid "About Bug Meter..." +msgstr "关於错误侦测..." + +#: src/prefs.c:431 +msgid "Error: Can't open specified config file. default file is used.\n" +msgstr "" + +#: src/i18n.c:359 +msgid "charset detect may mistake...\n" +msgstr "文字检测å¯èƒ½é”™è¯¯...\n" + +#: src/i18n.c:447 +msgid "<meta> outside of <head>!\n" +msgstr "" + +#: src/i18n.c:493 +msgid "all ascii code\n" +msgstr "全为 ASCII ç¼–ç \n" + +#: src/i18n.c:526 +msgid "unable to fully convert between character encodings\n" +msgstr "未能完全转æ¢æ–‡å­—é—´çš„ç¼–ç \n" + +#: src/i18n.c:565 +msgid "no support enc\n" +msgstr "ä¸æ”¯æ´çš„ç¼–ç \n" + +#: src/tab.c:293 src/tab.c:425 dpi/bookmarks.c:1653 +msgid "(Untitled)" +msgstr "(无题)" + +#: src/IO/https.c:168 +msgid "--Error detected\n" +msgstr "--错误检测\n" + +#: src/IO/https.c:173 src/IO/https.c:204 src/IO/http.c:294 +msgid "ERROR: unable to connect to remote host" +msgstr "错误: 未能连接远端主机" + +#: src/IO/https.c:179 src/IO/http.c:309 +msgid "--Connection established\n" +msgstr "--连线已建立\n" + +#: src/IO/https.c:280 src/IO/http.c:417 +#, c-format +msgid "Sending query to %s..." +msgstr "æ­£é€å‡ºè¯·æ±‚至 %s..." + +#: src/IO/https.c:333 src/IO/http.c:486 +#, c-format +msgid "DNS solving %s" +msgstr "DNS 正查释域å %s" + +#: src/IO/https.c:363 +msgid " HTTPS: new abort handler! #2\n" +msgstr "" + +#: src/IO/https.c:365 src/IO/https.c:387 src/IO/http.c:301 src/IO/http.c:520 +#: src/IO/http.c:551 +#, c-format +msgid "ERROR: %s" +msgstr "错误: %s" + +#: src/IO/https.c:386 +msgid " HTTP: new abort handler! #1\n" +msgstr "" + +#: src/IO/https.c:400 src/IO/http.c:564 +#, c-format +msgid "ERROR: Dns can't solve %s" +msgstr "错误: Dns 未能查释域å %s" + +#: src/IO/https.c:421 src/IO/http.c:591 +msgid "Query sent, waiting for reply..." +msgstr "请求已é€å‡º, 正等侯回覆中..." + +#: src/IO/http.c:190 +#, c-format +msgid "Getting %1$s, referer %2$s\n" +msgstr "æå– %1$s 中, 因应 %2$s\n" + +#: src/IO/http.c:259 +#, c-format +msgid "" +"Query:\n" +"%s" +msgstr "" +"查询: \n" +"%s" + +#: src/IO/http.c:286 +msgid "--Connection broken\n" +msgstr "--连线被中断 \n" + +#: src/IO/http.c:342 +#, c-format +msgid "Http_connect_socket ERROR: %s\n" +msgstr "è¿žæŽ¥ç«¯å£ é”™è¯¯: %s\n" + +#: src/IO/http.c:363 src/IO/http.c:377 +#, c-format +msgid "Connecting to %s\n" +msgstr "正在连接 %s\n" + +#: src/IO/http.c:396 +msgid "Contacting host..." +msgstr "正在è”系主机..." + +#: src/IO/http.c:529 +msgid "Http: OpAbort [1B]\n" +msgstr "Http: OpAbort [1B]\n" + +#: src/IO/dpi.c:188 +msgid "ERROR: [Dpi_get_token] Can't find token start\n" +msgstr "" + +#: src/IO/dpi.c:221 +msgid "ERROR: [Dpi_get_token] *** NULL code here ***\n" +msgstr "" + +#: src/IO/dpi.c:312 +msgid "Dpi: [Dpi_process_io] IOClose\n" +msgstr "" + +#: src/IO/dpi.c:338 +#, c-format +msgid "Dpi_start_dpid (child): %s\n" +msgstr "" + +#: src/IO/dpi.c:348 src/IO/dpi.c:363 +#, c-format +msgid "Dpi_start_dpid: %s\n" +msgstr "" + +#: src/IO/dpi.c:359 +#, c-format +msgid "Dpi_start_dpid: n = %d\n" +msgstr "" + +#: src/IO/dpi.c:386 +#, c-format +msgid "Dpi_check_uds: %1$s %2$s\n" +msgstr "" + +#: src/IO/dpi.c:673 +msgid "dpi.c: ERROR, can't start dpi daemon\n" +msgstr "" + +#: src/IO/dpi.c:686 +msgid "a_Dpi_ccc: OpAbort[2B], Not implemented\n" +msgstr "" + +#: src/IO/dpi.c:790 src/IO/dpi.c:794 +#, c-format +msgid "a_Dpi_bye_dpid: %s\n" +msgstr "" + +#: dpid/dpi_socket_dir.c:106 +#, c-format +msgid "The dpi_socket_dir file does not exist\n" +msgstr "dpi_socket_dir 文件并ä¸å­˜åœ¨\n" + +#: dpid/dpi_socket_dir.c:110 dpid/dpi_socket_dir.c:114 +#, c-format +msgid "debug_msg - init_sockdir: The socket directory " +msgstr "" + +#: dpid/dpi_socket_dir.c:111 +#, c-format +msgid "%s exists and is OK\n" +msgstr "%s 存在并å¯æ­£å¸¸ä½¿ç”¨\n" + +#: dpid/dpi_socket_dir.c:115 +#, c-format +msgid "%s does not exist or is not a directory\n" +msgstr "%s ä¸å­˜åœ¨ä¸”ä¸æ˜¯ä¸€ä¸ªç›®å½•\n" + +#: dpid/dpi_socket_dir.c:124 +#, c-format +msgid " - Failed to create dpi socket directory\n" +msgstr "" + +#: dpid/dpi_socket_dir.c:127 +#, c-format +msgid " - failed to save %s\n" +msgstr "" + +#: dpid/main.c:59 dpid/main.c:66 dpid/main.c:77 dpid/main.c:85 dpid/main.c:99 +#: dpid/main.c:104 dpid/main.c:109 +#, c-format +msgid "ERROR in child proc for %s\n" +msgstr "" + +#: dpid/main.c:166 +#, c-format +msgid ": dpid failed to parse cmd in %s\n" +msgstr "" + +#: dpid/main.c:265 +#, c-format +msgid "Failed to create socket directory\n" +msgstr "" + +#: dpid/main.c:275 +#, c-format +msgid "dpid refuses to start, possibly because:\n" +msgstr "" + +#: dpid/main.c:276 +#, c-format +msgid "\t1) An instance of dpid is already running.\n" +msgstr "" + +#: dpid/main.c:277 +#, c-format +msgid "\t2) A previous dpid didn't clean up on exit.\n" +msgstr "" + +#: dpid/main.c:280 +msgid "init_srs_sockets failed\n" +msgstr "" + +#: dpid/main.c:294 +#, c-format +msgid "dpid started\n" +msgstr "" + +#: dpid/main.c:340 +#, c-format +msgid "accept on srs socket failed\n" +msgstr "" + +#: dpid/main.c:341 +#, c-format +msgid "service pending connections, and continue\n" +msgstr "" + +#: dpi/bookmarks.c:96 +#, fuzzy +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>Bookmarks</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr>\n" +" <td>&nbsp;Bookmarks::</td>\n" +" <td width='100%' align='right'>\n" +" [<a href='dpi:/bm/modify'>modify</a>]\n" +" </td></tr>\n" +" </table></td></tr>\n" +"</table>\n" +"<br>\n" +msgstr "" +"<html>\n" +"<head>\n" +"<title>书签</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr>\n" +" <td><pre>&nbsp;书签::</pre></td>\n" +" <td width='100%' align='right'>\n" +" <pre>[<a href='dpi:/bm/modify'>编辑</a>]</pre>\n" +" </td></tr>\n" +" </table></td></tr>\n" +"</table>\n" +"<br>\n" + +#: dpi/bookmarks.c:115 +#, fuzzy +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>Bookmarks</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr>\n" +" <td>&nbsp;Bookmarks :: modify</td></tr>\n" +" </table></td></tr> \n" +"</table> \n" +"\n" +"<form>\n" +"<table width='100%' border='1' cellpadding='0'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td><b>Select&nbsp;an&nbsp;operation&nbsp;</b></td>\n" +" <td><select name='operation'>\n" +" <option value='none' selected>--\n" +" <option value='delete'>Delete\n" +" <option value='move'>Move\n" +" <option value='modify'>Modify\n" +" <option value='add_sec'>Add Section\n" +" <option value='add_url'>Add URL\n" +" </select></td>\n" +" <td><b>,&nbsp;mark&nbsp;its&nbsp;operands,&nbsp;and&nbsp;</b></td>\n" +" <td><input type='submit' name='submit' value='submit.'></td>\n" +" <td width='100%'></td>\n" +" </tr>\n" +" </table></td></tr>\n" +"</table>\n" +msgstr "" +"<html>\n" +"<head>\n" +"<title>书签</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr>\n" +" <td><pre>&nbsp;书签 :: 编辑</pre></td></tr>\n" +" </table></td></tr> \n" +"</table> \n" +"\n" +"<form>\n" +"<table width='100%' border='1' cellpadding='0'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td><pre><b>选择动作&nbsp;</b></pre></td>\n" +" <td><select name='operation'>\n" +" <option value='none' selected>--\n" +" <option value='delete'>删除\n" +" <option value='move'>移动\n" +" <option value='modify'>修改\n" +" <option value='add_sec'>加入项目\n" +" <option value='add_url'>加入 URL\n" +" </select></td>\n" +" <td><pre><b>套用已选动作</b></pre></td>\n" +" <td><input type='submit' name='submit' value='套用.'></td>\n" +" <td width='100%'></td>\n" +" </tr>\n" +" </table></td></tr>\n" +"</table>\n" + +#: dpi/bookmarks.c:151 +msgid "" +"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n" +" <tr valign='top'>\n" +" <td>\n" +" <table bgcolor='#b4b4b4' border='2' cellpadding='4' cellspacing='1'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n" +msgstr "" +"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n" +" <tr valign='top'>\n" +" <td>\n" +" <table bgcolor='#b4b4b4' border='2' cellpadding='4' cellspacing='1'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr><td><pre>项目:</pre></td></tr></table></td></tr>\n" + +#: dpi/bookmarks.c:160 +msgid "" +"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n" +" <tr valign='top'>\n" +" <td>\n" +" <table bgcolor='#b4b4b4' border='1'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n" +msgstr "" +"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n" +" <tr valign='top'>\n" +" <td>\n" +" <table bgcolor='#b4b4b4' border='1'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr><td><pre>项目:</pre></td></tr></table></td></tr>\n" + +#: dpi/bookmarks.c:243 +#, fuzzy +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>Bookmarks</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: add section\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +" <input type='hidden' name='operation' value='add_section'>\n" +"<table border='1' width='100%'>\n" +" <tr>\n" +" <td bgcolor='olive'><b>New&nbsp;section:</b></td>\n" +" <td bgcolor='white' width='100%'></td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='10'>\n" +"<tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td>Title:</td>\n" +" <td><input type='text' name='title' size='64'></td></tr>\n" +" </table>\n" +" </td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='submit.'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" +"\n" +msgstr "" +"<html>\n" +"<head>\n" +"<title>书签</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'><pre>&nbsp;编辑书签:: 加入项目</pre>\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +" <input type='hidden' name='operation' value='add_section'>\n" +"<table border='1' width='100%'>\n" +" <tr>\n" +" <td bgcolor='olive'><pre><b>新加入项目:</b></pre></td>\n" +" <td bgcolor='white' width='100%'></td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='10'>\n" +"<tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td><pre>标题:</pre></td>\n" +" <td><input type='text' name='title' size='64'></td></tr>\n" +" </table>\n" +" </td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='套用.'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" +"\n" + +#: dpi/bookmarks.c:283 +#, fuzzy +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>Bookmarks</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: update\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +"<input type='hidden' name='operation' value='modify2'>\n" +msgstr "" +"<html>\n" +"<head>\n" +"<title>书签</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'><pre>&nbsp;编辑书签:: æ›´æ–°</pre>\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +"<input type='hidden' name='operation' value='modify2'>\n" + +#: dpi/bookmarks.c:310 +#, c-format +msgid "" +"<tr><td>\n" +" <table width='100%%' bgcolor='teal'>\n" +" <tr>\n" +" <td>Title:</td>\n" +" <td><input type='text' name='title%d' size='64'\n" +" value='%s'></td></tr>\n" +" <tr>\n" +" <td>URL:</td>\n" +" <td>%s</td></tr>\n" +" </table>\n" +" </td></tr>\n" +msgstr "" +"<tr><td>\n" +" <table width='100%%' bgcolor='teal'>\n" +" <tr>\n" +" <td><pre>标题:</pre></td>\n" +" <td><input type='text' name='title%d' size='64'\n" +" value='%s'></td></tr>\n" +" <tr>\n" +" <td>URL:</td>\n" +" <td>%s</td></tr>\n" +" </table>\n" +" </td></tr>\n" + +#: dpi/bookmarks.c:323 +#, c-format +msgid "" +"<tr><td>\n" +" <table width='100%%' bgcolor='teal'>\n" +" <tr>\n" +" <td>Title:</td>\n" +" <td><input type='text' name='s%d' size='64'\n" +" value='%s'></td></tr>\n" +" </table>\n" +" </td></tr>\n" +msgstr "" +"<tr><td>\n" +" <table width='100%%' bgcolor='teal'>\n" +" <tr>\n" +" <td><pre>标题:</pre></td>\n" +" <td><input type='text' name='s%d' size='64'\n" +" value='%s'></td></tr>\n" +" </table>\n" +" </td></tr>\n" + +#: dpi/bookmarks.c:336 +#, c-format +msgid "" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='submit.'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" +msgstr "" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='套用.'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" + +#: dpi/bookmarks.c:346 +#, fuzzy +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>Bookmarks</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: add url\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +"<input type='hidden' name='operation' value='add_url2'>\n" +"<table border='1' width='100%'>\n" +" <tr>\n" +" <td bgcolor='olive'><b>Add&nbsp;url:</b></td>\n" +" <td bgcolor='white' width='100%'></td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='10'>\n" +"<tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td>Title:</td>\n" +" <td><input type='text' name='title' size='64'></td></tr>\n" +" <tr>\n" +" <td>URL:</td>\n" +" <td><input type='text' name='url' size='64'></td></tr>\n" +" </table>\n" +" </td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='submit.'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" +msgstr "" +"<html>\n" +"<head>\n" +"<title>书签</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'><pre>&nbsp;编辑书签:: 加入网页</pre>\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +"<input type='hidden' name='operation' value='add_url2'>\n" +"<table border='1' width='100%'>\n" +" <tr>\n" +" <td bgcolor='olive'><pre><b>加入网页l:</b></pre></td>\n" +" <td bgcolor='white' width='100%'></td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='10'>\n" +"<tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td><pre>标题:</pre></td>\n" +" <td><input type='text' name='title' size='64'></td></tr>\n" +" <tr>\n" +" <td>URL:</td>\n" +" <td><input type='text' name='url' size='64'></td></tr>\n" +" </table>\n" +" </td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='套用.'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" + +#: dpi/bookmarks.c:691 +msgid "Unclassified" +msgstr "未ç»åˆ†ç±»" + +#: dpi/bookmarks.c:724 +#, c-format +msgid "echo \":s0: Unclassified\" > %s" +msgstr "echo \":s0: 未ç»åˆ†ç±»\" > %s" + +#: dpi/bookmarks.c:786 +#, c-format +msgid "" +"Syntax error in bookmarks file:\n" +" %s" +msgstr "" +"语法错误於书签档:\n" +" %s" + +#: dpi/bookmarks.c:898 +msgid "Added bookmark!" +msgstr "加进书签!" + +#: dpi/bookmarks.c:1087 +msgid "Update&nbsp;sections:" +msgstr "<pre>更新项目:</pre>" + +#: dpi/bookmarks.c:1107 +msgid "Update&nbsp;titles:" +msgstr "<pre>更新标题:</pre>" + +#: dpi/bookmarks.c:1404 +msgid "Delete: you must mark what to delete!" +msgstr "删除: 请先选择项目!" + +#: dpi/bookmarks.c:1410 +msgid "Move: you must mark a target section!" +msgstr "移动: 请先选择项目!" + +#: dpi/bookmarks.c:1412 +msgid "Move: can not move a section (yet)." +msgstr "移动: 移动项目失败!" + +#: dpi/bookmarks.c:1414 +msgid "Move: you must mark some urls, and a target section!" +msgstr "移动: 请先选择网页åŠé¡¹ç›®!" + +#: dpi/bookmarks.c:1419 +msgid "Modify: you must mark what to update!" +msgstr "修改: 请先选择è¦æ›´æ–°çš„项目!" + +#: dpi/bookmarks.c:1436 +msgid "Add url: only one target section is allowed!" +msgstr "加入网页: åªå¯é€‰æ‹©ä¸€ä¸ªé¡¹ç›®!" + +#: dpi/bookmarks.c:1443 +msgid "No operation, just do nothing!" +msgstr "没有指示,æ“作无效!" + +#: dpi/bookmarks.c:1446 +msgid "Sorry, not implemented yet." +msgstr "æ“作尚未完æˆ." + +#: dpi/bookmarks.c:1614 +msgid "Haven't got a full tag!\n" +msgstr "找ä¸åˆ°å®Œæ•´æ ‡ç­¾!\n" + +#: dpi/bookmarks.c:1690 +#, fuzzy +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<HTML><body> Error on the bookmarks server...</body></html>" +msgstr "<HTML><body> 书签系统错误...</body></html>" + +#: config/dillocfg.c:82 +msgid "Quit" +msgstr "退出" + +#: config/dillocfg.c:84 config/dillocfg.c:90 +msgid "Dillo Preferences" +msgstr "å好设定" + +#: config/dillocfg.c:113 +msgid "Interface" +msgstr "介é¢" + +#: config/dillocfg.c:114 +msgid " Font " +msgstr "å­—åž‹" + +#: config/dillocfg.c:115 +msgid " Color " +msgstr "颜色" + +#: config/dillocfg.c:116 +msgid " Network " +msgstr "网络" + +#: config/dillocfg.c:118 +msgid " Tab " +msgstr "分页" + +#: config/dillocfg.c:121 +msgid " Other " +msgstr "其他" + +#: config/dillocfg.c:329 +msgid "Add" +msgstr "加入" + +#: config/dillocfg.c:330 +msgid "Delete" +msgstr "删除" + +#: config/dillocfg.c:336 +msgid "Address" +msgstr "ä½å€" + +#: config/dillocfg.c:337 +msgid "Rule" +msgstr "规则" + +#: config/dillocfg.c:363 config/dillocfg.c:369 +#, c-format +msgid "Read failed <%s>\n" +msgstr "é”™è¯¯è¯»å– <%s>\n" + +#: config/dillocfg.c:450 config/dillocfg.c:458 +#, c-format +msgid "can't write <%s>\n" +msgstr "ä¸èƒ½å†™å…¥ <%s>\n" + +#: config/dillocfg_token.c:60 +msgid "Window Size" +msgstr "窗å£å¤§å°" + +#: config/dillocfg_token.c:68 +msgid "HTTP Proxy" +msgstr "代ç†æœåŠ¡å™¨" + +#: config/dillocfg_token.c:76 +msgid "HTTP Proxy User" +msgstr "æœåŠ¡å™¨ç”¨æˆ·" + +#: config/dillocfg_token.c:84 +msgid "NO Proxy" +msgstr "没有æœåŠ¡å™¨" + +#: config/dillocfg_token.c:92 +msgid "User-Agent" +msgstr "æµè§ˆå™¨-相容识别" + +#: config/dillocfg_token.c:100 +msgid "Send referer header" +msgstr "" + +#: config/dillocfg_token.c:108 +msgid "Link color" +msgstr "连接" + +#: config/dillocfg_token.c:116 +msgid "Visited color" +msgstr "已到网页" + +#: config/dillocfg_token.c:124 +msgid "BackGround color" +msgstr "背景" + +#: config/dillocfg_token.c:132 +msgid "Allow white bg" +msgstr "空白背景" + +#: config/dillocfg_token.c:140 +msgid "Force my colors" +msgstr "使用自选颜色" + +#: config/dillocfg_token.c:148 +msgid "Contrast visited color" +msgstr "加亮已到网页颜色" + +#: config/dillocfg_token.c:156 +msgid "Text color" +msgstr "文字颜色" + +#: config/dillocfg_token.c:164 +msgid "Use oblique" +msgstr "兼容斜体" + +#: config/dillocfg_token.c:172 +msgid "Start Page" +msgstr "起始页" + +#: config/dillocfg_token.c:180 +msgid "HOMEPAGE" +msgstr "首页" + +#: config/dillocfg_token.c:188 +msgid "Search-engine's URL" +msgstr "æœå¯»å¼•æ“Žç½‘å€" + +#: config/dillocfg_token.c:196 +msgid "Search-engine's charset" +msgstr "æœå¯»å¼•æ“Žå­—体" + +#: config/dillocfg_token.c:204 +msgid "Show Tooltip" +msgstr "显示æ示" + +#: config/dillocfg_token.c:212 +msgid "Panel Size" +msgstr "æ¿é¢å¤§å°" + +#: config/dillocfg_token.c:220 +msgid "Small icons" +msgstr "å°åž‹å›¾ç¤º" + +#: config/dillocfg_token.c:228 +msgid "Limit text width" +msgstr "é™åˆ¶æ–‡å­—宽度" + +#: config/dillocfg_token.c:236 +msgid "Limit font decoration" +msgstr "é™åˆ¶æ–‡å­—装饰" + +#: config/dillocfg_token.c:244 +msgid "Font factor" +msgstr "文字系数" + +#: config/dillocfg_token.c:252 +msgid "Font Sizes" +msgstr "文字大å°" + +#: config/dillocfg_token.c:260 +msgid "W3C+heuristics" +msgstr "W3C+试探程åº" + +#: config/dillocfg_token.c:268 +msgid "Use dicache" +msgstr "使用ç£ç¢Ÿç¼“å­˜" + +#: config/dillocfg_token.c:276 +msgid "Show Back" +msgstr "显示返回" + +#: config/dillocfg_token.c:284 +msgid "Show Forw" +msgstr "显示往å‰" + +#: config/dillocfg_token.c:292 +msgid "Show Home" +msgstr "显示首页" + +#: config/dillocfg_token.c:300 +msgid "Show Reload" +msgstr "显示é‡è½½" + +#: config/dillocfg_token.c:308 +msgid "Show Save" +msgstr "显示储存" + +#: config/dillocfg_token.c:316 +msgid "Show Stop" +msgstr "显示åœæ­¢" + +#: config/dillocfg_token.c:324 +msgid "Show Bookmarks" +msgstr "显示书签" + +#: config/dillocfg_token.c:332 +msgid "Show Menubar" +msgstr "显示èœå•æ‹¦" + +#: config/dillocfg_token.c:340 +msgid "Show ClearURL" +msgstr "显示清空ä½å€" + +#: config/dillocfg_token.c:348 +msgid "Show URL box" +msgstr "显示ä½å€æ " + +#: config/dillocfg_token.c:356 +msgid "Show Web Search" +msgstr "显示æœå¯»æ¡†" + +#: config/dillocfg_token.c:364 +msgid "Show Progress box" +msgstr "显示进度框" + +#: config/dillocfg_token.c:372 +msgid "Show Popup navigation" +msgstr "显示弹出æµè§ˆ" + +#: config/dillocfg_token.c:380 +msgid "Fullwindow start" +msgstr "å…¨å±å¹•å¼€å§‹" + +#: config/dillocfg_token.c:388 +msgid "Transient dialogs" +msgstr "短暂对è¯æ¡†" + +#: config/dillocfg_token.c:396 +msgid "Popup dialogs" +msgstr "弹出对è¯æ¡†" + +#: config/dillocfg_token.c:404 +msgid "vw_aafontname" +msgstr "一般字体(平滑化)" + +#: config/dillocfg_token.c:412 +msgid "fw_aafontname" +msgstr "固定字体(平滑化)" + +#: config/dillocfg_token.c:420 +msgid "vw_fontname" +msgstr "一般字体" + +#: config/dillocfg_token.c:428 +msgid "fw_fontname" +msgstr "固定字体" + +#: config/dillocfg_token.c:436 +msgid "Generate submit" +msgstr "å‘放æ交" + +#: config/dillocfg_token.c:444 +msgid "Enterpress forces submit" +msgstr "按 Enter é”®æ交" + +#: config/dillocfg_token.c:452 +msgid "Show debugging messsages" +msgstr "显示除错讯æ¯" + +#: config/dillocfg_token.c:460 +msgid "Show Extra Warnings" +msgstr "显示é‡å¤§è­¦å‘Šè®¯æ¯" + +#: config/dillocfg_token.c:468 +msgid "Focus location on new" +msgstr "èšç„¦ä½å€æ–¼æ–°çª—å£" + +#: config/dillocfg_token.c:476 config/dillocfg_token.c:484 +msgid "Accept Language" +msgstr "接å—语言" + +#: config/dillocfg_token.c:493 +msgid "Tab load in background" +msgstr "在背景开å¯åˆ†é¡µ" + +#: config/dillocfg_token.c:501 +msgid "Tab close middle click" +msgstr "以中键关闭分页" + +#: config/dillocfg_token.c:509 +msgid "Tab instead of window" +msgstr "以分页替代窗å£" + +#: config/dillocfg_token.c:517 +msgid "Tab bar show fullscreen" +msgstr "分页标题æ æ˜¾ç¤ºå…¨å±å¹•" + +#: config/dillocfg_token.c:525 +msgid "Tab bar show single tab" +msgstr "分页标题æ åªæ˜¾ç¤ºå•ä¸€åˆ†é¡µ" + +#: config/dillocfg_token.c:533 +msgid "Tab bar scroller" +msgstr "显示分页标题æ å·è½´" + +#: config/dillocfg_token.c:541 +msgid "Tab bar homogeneous" +msgstr "分页标题æ å¹³å‡åŒ–" + +#: config/dillocfg_token.c:549 +msgid "Tab title compress" +msgstr "简化分页标题" + +#: config/dillocfg_token.c:557 +msgid "Compress vowels" +msgstr "压缩æ¯éŸ³å­—å…ƒ" + +#: config/dillocfg_token.c:565 +msgid "Compress_common_prefixes" +msgstr "压缩标头文字" + +#: config/dillocfg_token.c:574 +msgid "Default" +msgstr "缺çœå€¼" ¥Ð¥¤¥Ê¥ê¡¼¡¦¥Õ¥¡¥¤¥ëdillo-0.8.6/po/zh_TW.gmo¤Èdillo-0.8.6-i18n-misc-20060709/po/zh_TW.gmo¤Ï°ã¤¤¤Þ¤¹ diff -pruN dillo-0.8.6/po/zh_TW.po dillo-0.8.6-i18n-misc-20060709/po/zh_TW.po --- dillo-0.8.6/po/zh_TW.po 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/po/zh_TW.po 2006-07-09 00:49:43.000000000 +0900 @@ -0,0 +1,2100 @@ +# Dillo Chinese Translation. +# Copyright (C) YEAR Free Software Foundation, Inc. +# This file is distributed under the same license as the PACKAGE package. +# Babyfai Cheung <babyfai1@yahoo.com.hk>, 2005. +msgid "" +msgstr "" +"Project-Id-Version: Dillo 0.8.4-i18n-misc\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2006-07-09 00:49+0900\n" +"PO-Revision-Date: 2005-02-06 22:00+0800\n" +"Last-Translator: Babyfai Cheung <babyfai1@yahoo.com.hk>\n" +"Language-Team: NONE\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/msg.h:27 +msgid "HTTP warning: " +msgstr "" + +#: src/auth.c:87 +msgid "Browser Url has changed\n" +msgstr "ç€è¦½å™¨ä½å€å·²è®Šæ›´\n" + +#: src/cache.c:253 +msgid "WARNING: Cache_entry_add, leaking an entry.\n" +msgstr "" + +#: src/cache.c:316 +msgid "## Aborting CCCQuery\n" +msgstr "## 退出 CCCQuery\n" + +#: src/cache.c:319 +msgid "## Aborting CCCAnswer\n" +msgstr "## 退出 CCCAnswer\n" + +#: src/cache.c:322 +msgid "## Aborting raw2\n" +msgstr "## 退出 raw2\n" + +#: src/cache.c:365 +msgid "## No more clients for this entry\n" +msgstr "" + +#: src/cache.c:369 +msgid "Cache_prepare_reload: ERROR, entry still has clients\n" +msgstr "" + +#: src/cache.c:398 +#, c-format +msgid "Reloading >%s< because it shouldn't be cached\n" +msgstr "" + +#: src/cache.c:418 +msgid "ERROR: unsupported protocol" +msgstr "錯誤: 尚未支æ´çš„通訊å”定" + +#: src/cache.c:488 +#, c-format +msgid "Redirect loop for URL: >%s<\n" +msgstr "é‡å°Žå‘回圈予 URL: >%s<\n" + +#: src/cache.c:590 +#, c-format +msgid "Bad clocks, ignore expire on >%s<\n" +msgstr "" + +#: src/cache.c:594 +#, c-format +msgid "Forcing min expire %d on >%s< instead %ld\n" +msgstr "" + +#: src/cache.c:678 +msgid "'Cache-Control: max-age=' without 'Date: ' header" +msgstr "" + +#: src/cache.c:722 +msgid "Server didn't send Content-Type in header.\n" +msgstr "伺æœå™¨ä¸¦æœªåœ¨æ¨™é ­ä¸­é€å‡ºå…§å®¹.\n" + +#: src/cache.c:743 +#, c-format +msgid "Forcing default expire to query url >%s<\n" +msgstr "" + +#: src/cache.c:831 +#, c-format +msgid "Cache_decode_data: got all data -- decodinging %s\n" +msgstr "Cache_decode_data: 收到全部資料 -- 正在解碼 %s\n" + +#: src/cache.c:840 +msgid "Cache_decode_data: not gzip data!\n" +msgstr "Cache_decode_data: 沒有壓縮資料!\n" + +#: src/cache.c:846 +msgid "Cache_decode_data: invalid gzip data!\n" +msgstr "Cache_decode_data: 無效的壓縮資料!\n" + +#: src/cache.c:898 +msgid "not x-gzip\n" +msgstr "沒有 X-壓縮資料\n" + +#: src/cache.c:931 +#, c-format +msgid "" +"Content-Length does NOT match message body,\n" +" at: %s\n" +msgstr "" +"發ç¾ä¸ç¬¦é•·åº¦çš„內容,\n" +" 在: %s\n" + +#: src/cache.c:950 +msgid "Cache_process_io Op = IOAbort; not implemented yet\n" +msgstr "" + +#: src/cache.c:1004 +#, c-format +msgid "ERROR: redirect loop for: %s" +msgstr "錯誤: é‡å°Žå‘回圈予: %s" + +#: src/cache.c:1015 +#, c-format +msgid "" +">>>Redirect from: %s\n" +" to %s\n" +msgstr "" +">>>é‡å°Žå‘從: %s\n" +" 至 %s\n" + +#: src/cache.c:1035 +msgid ">>>Image redirection without entity-content<<<\n" +msgstr ">>>é‡å°Žå‘å½±åƒ,在無實質主題下<<<\n" + +#: src/cache.c:1037 +msgid ">>>Image redirection with entity-content<<<\n" +msgstr ">>>é‡å°Žå‘å½±åƒ,在實質主題下<<<\n" + +#: src/cache.c:1103 +msgid "FATAL!:*** >>>> Cache_process_queue Caught busy!!!\n" +msgstr "é‡å¤§éŒ¯èª¤:*** >>>> Cache_process_queue 系統ç¹å¿™ !!!\n" + +#: src/cache.c:1111 +#, c-format +msgid "Content-Type '%s' doesn't match the real data.\n" +msgstr "" + +#: src/cache.c:1140 +#, c-format +msgid "HTTP warning: Content-Type '%s' doesn't match the real data." +msgstr "" + +#: src/cache.c:1177 +#, fuzzy, c-format +msgid "Unhandled MIME type: <%s>\n" +msgstr "" +"\n" +" ä¸æ˜Žçš„ MIME é¡žåž‹: <%s>\n" + +#: src/cache.c:1202 +msgid "Client Callback is NULL" +msgstr "" + +#: src/cache.c:1303 +msgid "WARNING: Cache_stop_client, inexistent client\n" +msgstr "" + +#: src/cache.c:1445 src/capi.c:428 src/capi.c:481 src/capi.c:536 +#: src/capi.c:570 src/IO/dpi.c:720 src/IO/dpi.c:760 +msgid " Not implemented\n" +msgstr "沒有實行\n" + +#: src/capi.c:229 +msgid "Capi_verify_dpi_url_request: Permission Denied!\n" +msgstr "" + +#: src/capi.c:324 +#, c-format +msgid " reload=%d URL_E2EReload=%d\n" +msgstr "" + +#: src/capi.c:389 +msgid " ERROR: [a_Capi_dpi_send_cmd] No open connection found\n" +msgstr "" + +#: src/capi.c:457 +msgid "ERROR: can't start dpid daemon!" +msgstr "" + +#: src/capi.c:492 +msgid " ** Capi 2F catched an invalid 'web' structure\n" +msgstr "" + +#: src/capi.c:552 +msgid " Error with pipe\n" +msgstr "" + +#: src/commands.c:166 +msgid "View Source" +msgstr "檢視æºå§‹æª”" + +#: src/commands.c:183 +msgid "Detected HTML errors" +msgstr "ç™¼ç¾ HTML 錯誤" + +#: src/commands.c:265 +msgid "Stopped" +msgstr "å·²åœæ­¢" + +#: src/dillo.c:109 +msgid "" +" -x, --xid XID Open first Dillo window in an existing\n" +" GtkSocket which window ID is XID (decimal)." +msgstr "" + +#: src/dillo.c:112 +msgid " -v, --version Display version info and exit." +msgstr "" + +#: src/dillo.c:114 +msgid " -h, --help Display this help text and exit." +msgstr "" + +#: src/dillo.c:116 +msgid "" +" -f, --fullwindow Start in full window mode: hide address bar,\n" +" navigation buttons, menu, and status bar." +msgstr "" + +#: src/dillo.c:119 +msgid " -l, --local Don't follow links for this URL(s)." +msgstr "" + +#: src/dillo.c:121 +msgid "" +" -g, -geometry GEO Set initial window position where GEO is\n" +" <width>x<height>{+-}<x>{+-}<y>" +msgstr "" + +#: src/dillo.c:125 +msgid "" +" -D, --debug-rendering Draw additionaly several lines in a web page,\n" +" representing its structure. For debugging. " +msgstr "" + +#: src/dillo.c:129 +msgid " -R, --rcfile FILE Use alternative rcfile." +msgstr "" + +#: src/dillo.c:266 +#, c-format +msgid "" +"Error: the XID must be an unsigned decimal numerical value.\n" +"The offending value was: %s\n" +msgstr "" + +#: src/dillo.c:284 +msgid "Error in command line options.\n" +msgstr "" + +#: src/dillo.c:291 +#, c-format +msgid "Setting gtk charset to %s...\n" +msgstr "" + +#: src/dillo.c:395 +#, fuzzy +msgid "Dillo: normal exit!\n" +msgstr "Dillo: 找尋字串" + +#: src/dillo.c:409 +#, c-format +msgid "Dillo: error creating directory %s: %s\n" +msgstr "" + +#: src/dillo.c:412 +#, c-format +msgid "Dillo: error reading %s: %s\n" +msgstr "" + +#: src/dillo.c:461 +#, c-format +msgid "Option %s requires %d argument(s)\n" +msgstr "" + +#: src/dillo.c:496 +msgid "" +"\n" +"Usage: dillo [OPTIONS] [URL|FILE]...\n" +"Options:\n" +msgstr "" + +#: src/dillo.c:503 +#, c-format +msgid " %s, %s *Undocumented*\n" +msgstr "" + +#: src/dillo.c:506 +msgid "" +" URL URL to browse.\n" +" FILE Local FILE to view.\n" +msgstr "" + +#: src/html.c:182 +#, c-format +msgid "HTML warning: line %d, " +msgstr "" + +#: src/html.c:213 +#, c-format +msgid "URL has %d illegal character%s [%d space%s]\n" +msgstr "" + +#: src/html.c:216 +#, c-format +msgid "URL has %d illegal character%s [%d in (00-1F or 7F)]\n" +msgstr "" + +#: src/html.c:219 +#, c-format +msgid "URL has %d illegal character%s [%d space%s and %d in (00-1F or 7F)]\n" +msgstr "" + +#: src/html.c:1226 +msgid "numeric character reference out of range\n" +msgstr "" + +#: src/html.c:1234 +msgid "numeric character reference without trailing ';'\n" +msgstr "" + +#: src/html.c:1246 +#, c-format +msgid "undefined character entity '%s'\n" +msgstr "" + +#: src/html.c:1254 +msgid "character entity reference without trailing ';'\n" +msgstr "" + +#: src/html.c:1262 +msgid "code positions 128-159 are not defined for ISO Latin-1\n" +msgstr "" + +#: src/html.c:1270 +msgid "literal '&'\n" +msgstr "" + +#: src/html.c:1379 +msgid "TAB character inside <PRE>\n" +msgstr "" + +#: src/html.c:1615 +#, c-format +msgid " - forcing close of open tag: <%s>\n" +msgstr "" + +#: src/html.c:1624 +#, c-format +msgid "unexpected closing tag: </%1$s>. -- expected </%2$s>\n" +msgstr "" + +#: src/html.c:1696 +#, c-format +msgid "Garbage after length: %s\n" +msgstr "" + +#: src/html.c:1715 +msgid "color is not in \"#RRGGBB\" format\n" +msgstr "" + +#: src/html.c:1735 +#, c-format +msgid "'%s' value is not of the form [A-Za-z][A-Za-z0-9:_.-]*\n" +msgstr "" + +#: src/html.c:1839 +msgid "HTML element was already open\n" +msgstr "" + +#: src/html.c:1866 +msgid "HEAD element must go before the BODY section\n" +msgstr "" + +#: src/html.c:1876 +msgid "HEAD element was already open\n" +msgstr "" + +#: src/html.c:1889 +msgid "HEAD section lacks the TITLE element\n" +msgstr "" + +#: src/html.c:1917 +msgid "the TITLE element must be inside the HEAD section\n" +msgstr "" + +#: src/html.c:1986 +msgid "BODY element was already open\n" +msgstr "" + +#: src/html.c:1991 +msgid "unclosed HEAD element\n" +msgstr "" + +#: src/html.c:2187 +msgid "<td> or <th> outside <table>\n" +msgstr "" + +#: src/html.c:2191 +msgid "<td> or <th> outside <tr>\n" +msgstr "" + +#: src/html.c:2309 +msgid "Invalid HTML syntax: <tr> outside <table>\n" +msgstr "" + +#: src/html.c:2367 +msgid "<noframes> outside of <frameset>!!!\n" +msgstr "" + +#: src/html.c:2375 +msgid "<noframe> is illegal tag !!! use <noframes>.\n" +msgstr "" + +#: src/html.c:2562 +msgid "<frame> outside of <frameset>\n" +msgstr "" + +#: src/html.c:2565 +msgid "<frame> inside of <noframes>\n" +msgstr "" + +#: src/html.c:2568 +msgid "<frame> inside of <iframe>\n" +msgstr "" + +#: src/html.c:2620 +msgid "incorrectly placed <frameset>\n" +msgstr "" + +#: src/html.c:2636 +msgid "<frameset> inside of <noframes>\n" +msgstr "" + +#: src/html.c:2641 +msgid "<frameset> inside of <iframe>\n" +msgstr "" + +#: src/html.c:3123 +msgid " Html_tag_open_img: server-side map (ISMAP)\n" +msgstr "" + +#: src/html.c:3149 +msgid "nested <map>\n" +msgstr "" + +#: src/html.c:3201 +msgid "usemap coords MUST be separated with ','\n" +msgstr "" + +#: src/html.c:3245 +msgid "nohref" +msgstr "" + +#: src/html.c:3284 +msgid "link depends on javascript()\n" +msgstr "" + +#: src/html.c:3300 +#, c-format +msgid "Registering ANCHOR: %s\n" +msgstr "" + +#: src/html.c:3305 +msgid "Anchor names must be unique within the document\n" +msgstr "" + +#: src/html.c:3512 +msgid "it is strongly recommended using <UL> instead of <MENU>\n" +msgstr "" + +#: src/html.c:3574 +msgid "<li> outside <ul> or <ol>\n" +msgstr "" + +#: src/html.c:3770 +msgid "nested forms\n" +msgstr "" + +#: src/html.c:3817 +msgid "FORM lacks a Submit button\n" +msgstr "" + +#: src/html.c:3819 +msgid " (added a submit button internally)\n" +msgstr "" + +#: src/html.c:3923 +msgid "META elements must be inside the HEAD section\n" +msgstr "" + +#: src/html.c:3975 +#, c-format +msgid "" +"The NON-STANDARD meta refresh tag. The HTML 4.01 SPEC (sec 7.4.4) recommends " +"explicitly to avoid it. The author wanted you to go <%s>\n" +msgstr "" + +#: src/html.c:4345 +msgid "Html_submit_form: Method unknown\n" +msgstr "" + +#: src/html.c:4427 +msgid "Html_input_image: unable to create image submit.\n" +msgstr "" + +#: src/html.c:4449 +msgid "input camp outside <form>\n" +msgstr "" + +#: src/html.c:4529 +msgid "submit" +msgstr "æ交" + +#: src/html.c:4536 config/dillocfg.c:79 +msgid "Reset" +msgstr "é‡è¨­" + +#: src/html.c:4546 +msgid "Submit" +msgstr "æ交" + +#: src/html.c:4563 +msgid "An input of the type \"file\" wasn't rendered!\n" +msgstr "" + +#: src/html.c:4737 +msgid "<textarea> outside <form>\n" +msgstr "" + +#: src/html.c:4742 +msgid "nested <textarea>\n" +msgstr "" + +#: src/html.c:4814 +msgid "<select> outside <form>\n" +msgstr "" + +#: src/html.c:4818 +msgid "nested <select>\n" +msgstr "" + +#: src/html.c:5042 +msgid "base URI is relative (it MUST be absolute)\n" +msgstr "" + +#: src/html.c:5049 +msgid "the BASE element must appear in the HEAD section\n" +msgstr "" + +#: src/html.c:5400 +#, c-format +msgid "<%1$s> is not allowed to contain <%2$s>. -- closing <%3$s>\n" +msgstr "" + +#: src/html.c:5515 +#, c-format +msgid "<pre> is not allowed to contain <%s>\n" +msgstr "" + +#: src/html.c:5537 +msgid "'id' and 'name' attribute of <a> tag differ\n" +msgstr "" + +#: src/html.c:5764 +msgid "Html_write_raw : bufsize is negative!\n" +msgstr "" + +#: src/html.c:5842 +msgid "attribute lacks closing quote\n" +msgstr "" + +#: src/html.c:5850 +#, c-format +msgid "<%s> element lacks its closing '>'\n" +msgstr "" + +#: src/html.c:6144 +msgid "could not allocate character encoding converter" +msgstr "" + +#: src/misc.c:455 +msgid "Untitled" +msgstr "未命å" + +#: src/interface.c:249 +msgid "Selection retrieval failed\n" +msgstr "é¸æ“‡å›žæ”¶å¤±æ•—\n" + +#: src/interface.c:363 +msgid "Clear the URL box (middle-click to paste an URL)." +msgstr "清空ä½å€æ¬„(點擊中éµ)." + +#: src/interface.c:385 +msgid "Search the Web" +msgstr "æœå°‹ç¶²é " + +#: src/interface.c:417 src/menu.c:231 src/menu.c:280 +msgid "Back" +msgstr "返回" + +#: src/interface.c:421 +msgid "Go to previous page (right-click for menu)." +msgstr "回到上一é (å³æ“Šé¸å–®)." + +#: src/interface.c:450 src/menu.c:233 src/menu.c:282 +msgid "Forward" +msgstr "å¾€å‰" + +#: src/interface.c:454 +msgid "Go to next page (right-click for menu)." +msgstr "移至下一é (å³æ“Šé¸å–®)." + +#: src/interface.c:481 +msgid "Home" +msgstr "首é " + +#: src/interface.c:485 +msgid "Go to the Home page" +msgstr "移至首é " + +#: src/interface.c:499 config/dillocfg.c:80 +msgid "Reload" +msgstr "é‡è¼‰" + +#: src/interface.c:500 +msgid "Reload this page" +msgstr "é‡æ–°è¼‰å…¥" + +#: src/interface.c:512 config/dillocfg.c:81 +msgid "Save" +msgstr "儲存" + +#: src/interface.c:513 +msgid "Save this page" +msgstr "儲存網é " + +#: src/interface.c:520 src/menu.c:235 src/menu.c:284 +msgid "Stop" +msgstr "åœæ­¢" + +#: src/interface.c:521 +msgid "Stop the current transfer" +msgstr "åœæ­¢ç•¶å‰çš„傳é€" + +#: src/interface.c:534 +msgid "Book" +msgstr "書籤" + +#: src/interface.c:538 +msgid "View bookmarks" +msgstr "檢視書籤" + +#: src/interface.c:655 src/interface.c:826 +msgid "Hide Controls" +msgstr "éš±è—控制欄" + +#: src/interface.c:655 src/interface.c:826 +msgid "Show Controls" +msgstr "顯示控制欄" + +#: src/interface.c:929 +msgid "Show HTML bugs (right-click for menu)." +msgstr "顯示 HTML 錯誤(å³æ“Šé¸å–®)." + +#: src/interface.c:1231 +#, c-format +msgid "Warning: search_url ends with '%%'\n" +msgstr "警告: search_url çµå°¾ç‚º '%%'\n" + +#: src/interface.c:1233 +#, c-format +msgid "Warning: illegal specifier '%%%c' in search_url\n" +msgstr "警告: 在 search_url 中,有éžæ³•çš„指定符 '%%%c'\n" + +#: src/interface.c:1298 +msgid "Dillo: Open File" +msgstr "Dillo: 開啟檔案" + +#: src/interface.c:1374 +msgid "Clear" +msgstr "清除" + +#: src/interface.c:1382 src/interface.c:1536 src/nav.c:453 +msgid "Cancel" +msgstr "å–消" + +#: src/interface.c:1513 +msgid "User Name:" +msgstr "用戶å稱:" + +#: src/interface.c:1520 +msgid "Password:" +msgstr "密碼:" + +#: src/interface.c:1529 src/interface.c:1604 src/interface.c:2073 +#: src/nav.c:453 +msgid "OK" +msgstr "確定" + +#: src/interface.c:1566 +msgid "Dillo: Enter Authentication" +msgstr "Dillo: 進入驗証" + +#: src/interface.c:1586 +msgid "Dillo: Question" +msgstr "Dillo: å•é¡Œ" + +#: src/interface.c:1602 +msgid "Dillo: Open URL" +msgstr "Dillo: 開啟網é " + +#: src/interface.c:1626 +#, c-format +msgid "File saved (%d Bytes)" +msgstr "檔案已存入(%d Bytes)" + +#: src/interface.c:1708 +#, c-format +msgid "Error trying to save: %s\n" +msgstr "錯誤於儲存: %s\n" + +#: src/interface.c:1761 +msgid "Dillo: Save URL as File..." +msgstr "Dillo: 儲存網é ç‚º..." + +#: src/interface.c:1788 +msgid "Dillo: Save link as File..." +msgstr "Dillo: 儲存連çµç‚º..." + +#: src/interface.c:1843 src/interface.c:1857 +msgid "Dillo: Find text" +msgstr "Dillo: 找尋字串" + +#: src/interface.c:1844 src/interface.c:1850 +#, c-format +msgid "Cannot find \"%s\"." +msgstr "找ä¸åˆ° \"%s\"." + +#: src/interface.c:1858 +#, c-format +msgid "No further occurence of \"%s\". Restarting from the beginning." +msgstr "找ä¸åˆ°æ›´å¤šç¬¦åˆ \"%s\". é‡é–‹ç«¯å†æ‰¾å°‹" + +#: src/interface.c:1866 +#, c-format +msgid "(Find) \"%s\": restart from beginning" +msgstr "(找尋) \"%s\": é‡é–‹ç«¯å†æ‰¾å°‹ " + +#: src/interface.c:1879 +#, c-format +msgid "(Find) \"%s\"" +msgstr "(找尋) \"%s\"" + +#: src/interface.c:1885 +msgid "Unexpected return from a_Dw_gtk_scrolled_window_search()\n" +msgstr "æ„外回傳從 a_Dw_gtk_scrolled_window_search()\n" + +#: src/interface.c:1937 +msgid "press <Enter> to (repeat) search, <Esc> to close search" +msgstr "按 <Enter> é‡æ–°æœå°‹, <Esc> 退出" + +#: src/interface.c:1938 src/interface.c:2031 +msgid "Search" +msgstr "æœå°‹" + +#: src/interface.c:1940 src/interface.c:1941 src/interface.c:1977 +msgid "Case sensitive" +msgstr "å€åˆ†å¤§å°å¯«" + +#: src/interface.c:1975 +msgid "Dillo: Find text in page" +msgstr "Dillo: 在é é¢ä¸­æ‰¾å°‹æ–‡å­—" + +#: src/interface.c:1978 +msgid "Find" +msgstr "找尋" + +#: src/interface.c:2029 +msgid "Dillo" +msgstr "Dillo" + +#: src/interface.c:2029 +msgid "Dillo: Search the Web" +msgstr "Dillo: æœå°‹ç¶²é " + +#: src/interface.c:2066 +#, c-format +msgid "Dillo: Enter proxy password for '%s'" +msgstr "Dillo: 輸入 '%s' 的伺æœå™¨å¯†ç¢¼" + +#: src/interface.c:2151 +msgid "Close" +msgstr "關閉" + +#: src/interface.c:2226 +msgid "close" +msgstr "關閉" + +#: src/nav.c:383 +#, c-format +msgid "Unhandled switch type %d in a_Nav_jump_callback in src/nav.c\n" +msgstr "" + +#: src/nav.c:452 +msgid "Repost form data?" +msgstr "å†åˆ—出表單資料?" + +#: src/menu.c:173 +msgid "_File" +msgstr "檔案(_F)" + +#: src/menu.c:174 +msgid "_New Window" +msgstr "新窗å£(_N)" + +#: src/menu.c:177 +msgid "New _Tab" +msgstr "新分é (_T)" + +#: src/menu.c:181 +msgid "_Open File..." +msgstr "開啟檔案(_O)..." + +#: src/menu.c:183 +msgid "Open _URL..." +msgstr "é–‹å•Ÿä½å€(_U)..." + +#: src/menu.c:189 +msgid "Close Window" +msgstr "關閉窗å£" + +#: src/menu.c:192 src/menu.c:359 +msgid "Close Tab" +msgstr "關閉分é " + +#: src/menu.c:196 +msgid "Exit Dillo" +msgstr "關閉 Dillo" + +#: src/menu.c:200 +msgid "_View" +msgstr "檢視(_V)" + +#: src/menu.c:202 +msgid "Previous tab" +msgstr "上一分é " + +#: src/menu.c:204 +msgid "Next tab" +msgstr "下一分é " + +#: src/menu.c:208 +msgid "_Options..." +msgstr "é¸é …(_O)..." + +#: src/menu.c:228 +msgid "PAGE OPTIONS" +msgstr "é é¢é¸é …" + +#: src/menu.c:237 src/menu.c:286 +msgid "_Reload" +msgstr "é‡è¼‰(_R)" + +#: src/menu.c:241 +msgid "View page So_urce" +msgstr "檢視æºå§‹æª”(_S)" + +#: src/menu.c:243 +msgid "View page Bugs" +msgstr "檢視é é¢éŒ¯èª¤" + +#: src/menu.c:244 +msgid "_Bookmark this Page" +msgstr "加進書籤(_B)" + +#: src/menu.c:247 +msgid "Duplicate this Page" +msgstr "複製至新窗å£" + +#: src/menu.c:250 +msgid "Duplicate this tab" +msgstr "複製至新分é " + +#: src/menu.c:254 +msgid "_Find Text" +msgstr "找尋文字(_F)" + +#: src/menu.c:257 +msgid "Jump to..." +msgstr "跳至..." + +#: src/menu.c:258 +msgid "This Frame..." +msgstr "此框架..." + +#: src/menu.c:259 +msgid "This Frameset..." +msgstr "此框架佈局..." + +#: src/menu.c:262 +msgid "Save Page As..." +msgstr "儲存為..." + +#: src/menu.c:277 +msgid "FRAME OPTIONS" +msgstr "框架é¸é …" + +#: src/menu.c:290 +msgid "View frame Source" +msgstr "檢視框架æºå§‹æª”" + +#: src/menu.c:292 +msgid "Bookmark this Frame" +msgstr "框架加進書籤" + +#: src/menu.c:294 +msgid "Reload this Frame" +msgstr "é‡æ–°è¼‰å…¥" + +#: src/menu.c:297 +msgid "Show only this Frame" +msgstr "åªé¡¯ç¤ºæ­¤æ¡†æž¶" + +#: src/menu.c:299 +msgid "Open Frame in new Window" +msgstr "在新窗å£é–‹å•Ÿæ¡†æž¶" + +#: src/menu.c:302 +msgid "Open Frame in new Tab" +msgstr "在新分é é–‹å•Ÿæ¡†æž¶" + +#: src/menu.c:306 +msgid "_Find Text in this Frame..." +msgstr "於框架找尋字串(_F)..." + +#: src/menu.c:309 src/menu.c:340 +msgid "Save Frame As..." +msgstr "儲存框架為..." + +#: src/menu.c:325 +msgid "FRAMESET OPTIONS" +msgstr "框架佈局é¸é …" + +#: src/menu.c:327 +msgid "View Frameset Source" +msgstr "檢視æºå§‹æª”" + +#: src/menu.c:329 +msgid "Bookmark this Frameset" +msgstr "加進書籤" + +#: src/menu.c:331 +msgid "Reload this Frameset" +msgstr "é‡æ–°è¼‰å…¥" + +#: src/menu.c:334 +msgid "Show only this Frameset" +msgstr "åªé¡¯ç¤ºæ­¤æ¡†æž¶" + +#: src/menu.c:337 +msgid "_Find Text in this Frameset..." +msgstr "找尋字串(_F)..." + +#: src/menu.c:357 +msgid "TAB OPTIONS" +msgstr "分é é¸é …" + +#: src/menu.c:361 +msgid "New Tab" +msgstr "新分é " + +#: src/menu.c:363 +msgid "Reload Tab" +msgstr "é‡è¼‰åˆ†é " + +#: src/menu.c:460 +msgid "FOLLOWING PAGES" +msgstr "下一é " + +#: src/menu.c:463 +msgid "PREVIOUS PAGES" +msgstr "上一é " + +#: src/menu.c:531 +msgid "LINK OPTIONS" +msgstr "連çµé¸é …" + +#: src/menu.c:533 +msgid "Open Link in New Window" +msgstr "在新窗å£é–‹å•Ÿé€£çµ" + +#: src/menu.c:536 +msgid "Open Link in New Tab" +msgstr "在新分é é–‹å•Ÿé€£çµ" + +#: src/menu.c:539 +msgid "Open Link" +msgstr "開啟連çµ" + +#: src/menu.c:542 +msgid "Bookmark this Link" +msgstr "連çµåŠ é€²æ›¸ç±¤" + +#: src/menu.c:544 +msgid "Copy Link location" +msgstr "複製連çµä½å€" + +#: src/menu.c:549 +msgid "Save Link As..." +msgstr "儲存連çµç‚º..." + +#: src/menu.c:553 +msgid "Image Menu..." +msgstr "å½±åƒé¸å–®.." + +#: src/menu.c:571 +msgid "IMAGE OPTIONS" +msgstr "å½±åƒé¸é …" + +#: src/menu.c:573 +msgid "Isolate Image" +msgstr "檢視影åƒ" + +#: src/menu.c:575 +msgid "Open Image in New Window" +msgstr "在新窗å£é–‹å•Ÿå½±åƒ" + +#: src/menu.c:578 +msgid "Open Image in New Tab" +msgstr "在新分é é–‹å•Ÿå½±åƒ" + +#: src/menu.c:581 +msgid "Open Image" +msgstr "é–‹å•Ÿå½±åƒ" + +#: src/menu.c:584 +msgid "Bookmark this Image" +msgstr "將影åƒåŠ å…¥æ›¸ç±¤" + +#: src/menu.c:586 +msgid "Copy Image location" +msgstr "複製影åƒä½å€" + +#: src/menu.c:591 +msgid "Save Image As..." +msgstr "儲存影åƒç‚º..." + +#: src/menu.c:605 +msgid "BUG METER OPTIONS" +msgstr "錯誤åµæ¸¬é¸é …" + +#: src/menu.c:607 +msgid "Validate URL with W3C" +msgstr "以 W3C 錯誤åµæ¸¬" + +#: src/menu.c:609 +msgid "Validate URL with WDG" +msgstr "以 WDG 錯誤åµæ¸¬" + +#: src/menu.c:612 +msgid "About Bug Meter..." +msgstr "關於錯誤åµæ¸¬..." + +#: src/prefs.c:431 +msgid "Error: Can't open specified config file. default file is used.\n" +msgstr "" + +#: src/i18n.c:359 +msgid "charset detect may mistake...\n" +msgstr "文字檢測å¯èƒ½éŒ¯èª¤...\n" + +#: src/i18n.c:447 +msgid "<meta> outside of <head>!\n" +msgstr "" + +#: src/i18n.c:493 +msgid "all ascii code\n" +msgstr "全為 ASCII 編碼\n" + +#: src/i18n.c:526 +msgid "unable to fully convert between character encodings\n" +msgstr "未能完全轉æ›æ–‡å­—間的編碼\n" + +#: src/i18n.c:565 +msgid "no support enc\n" +msgstr "ä¸æ”¯æ´çš„編碼\n" + +#: src/tab.c:293 src/tab.c:425 dpi/bookmarks.c:1653 +msgid "(Untitled)" +msgstr "(ç„¡é¡Œ)" + +#: src/IO/https.c:168 +msgid "--Error detected\n" +msgstr "--錯誤檢測\n" + +#: src/IO/https.c:173 src/IO/https.c:204 src/IO/http.c:294 +msgid "ERROR: unable to connect to remote host" +msgstr "錯誤: 未能連接é ç«¯ä¸»æ©Ÿ" + +#: src/IO/https.c:179 src/IO/http.c:309 +msgid "--Connection established\n" +msgstr "--連線已建立\n" + +#: src/IO/https.c:280 src/IO/http.c:417 +#, c-format +msgid "Sending query to %s..." +msgstr "æ­£é€å‡ºè«‹æ±‚至 %s..." + +#: src/IO/https.c:333 src/IO/http.c:486 +#, c-format +msgid "DNS solving %s" +msgstr "DNS 正查釋域å %s" + +#: src/IO/https.c:363 +msgid " HTTPS: new abort handler! #2\n" +msgstr "" + +#: src/IO/https.c:365 src/IO/https.c:387 src/IO/http.c:301 src/IO/http.c:520 +#: src/IO/http.c:551 +#, c-format +msgid "ERROR: %s" +msgstr "錯誤: %s" + +#: src/IO/https.c:386 +msgid " HTTP: new abort handler! #1\n" +msgstr "" + +#: src/IO/https.c:400 src/IO/http.c:564 +#, c-format +msgid "ERROR: Dns can't solve %s" +msgstr "錯誤: Dns 未能查釋域å %s" + +#: src/IO/https.c:421 src/IO/http.c:591 +msgid "Query sent, waiting for reply..." +msgstr "請求已é€å‡º, 正等侯回覆中..." + +#: src/IO/http.c:190 +#, c-format +msgid "Getting %1$s, referer %2$s\n" +msgstr "æå– %1$s 中, 因應 %2$s\n" + +#: src/IO/http.c:259 +#, c-format +msgid "" +"Query:\n" +"%s" +msgstr "" +"查詢: \n" +"%s" + +#: src/IO/http.c:286 +msgid "--Connection broken\n" +msgstr "--連線被中斷 \n" + +#: src/IO/http.c:342 +#, c-format +msgid "Http_connect_socket ERROR: %s\n" +msgstr "é€£æŽ¥ç«¯å£ éŒ¯èª¤: %s\n" + +#: src/IO/http.c:363 src/IO/http.c:377 +#, c-format +msgid "Connecting to %s\n" +msgstr "正在連接 %s\n" + +#: src/IO/http.c:396 +msgid "Contacting host..." +msgstr "正在è¯ç³»ä¸»æ©Ÿ..." + +#: src/IO/http.c:529 +msgid "Http: OpAbort [1B]\n" +msgstr "Http: OpAbort [1B]\n" + +#: src/IO/dpi.c:188 +msgid "ERROR: [Dpi_get_token] Can't find token start\n" +msgstr "" + +#: src/IO/dpi.c:221 +msgid "ERROR: [Dpi_get_token] *** NULL code here ***\n" +msgstr "" + +#: src/IO/dpi.c:312 +msgid "Dpi: [Dpi_process_io] IOClose\n" +msgstr "" + +#: src/IO/dpi.c:338 +#, c-format +msgid "Dpi_start_dpid (child): %s\n" +msgstr "" + +#: src/IO/dpi.c:348 src/IO/dpi.c:363 +#, c-format +msgid "Dpi_start_dpid: %s\n" +msgstr "" + +#: src/IO/dpi.c:359 +#, c-format +msgid "Dpi_start_dpid: n = %d\n" +msgstr "" + +#: src/IO/dpi.c:386 +#, c-format +msgid "Dpi_check_uds: %1$s %2$s\n" +msgstr "" + +#: src/IO/dpi.c:673 +msgid "dpi.c: ERROR, can't start dpi daemon\n" +msgstr "" + +#: src/IO/dpi.c:686 +msgid "a_Dpi_ccc: OpAbort[2B], Not implemented\n" +msgstr "" + +#: src/IO/dpi.c:790 src/IO/dpi.c:794 +#, c-format +msgid "a_Dpi_bye_dpid: %s\n" +msgstr "" + +#: dpid/dpi_socket_dir.c:106 +#, c-format +msgid "The dpi_socket_dir file does not exist\n" +msgstr "dpi_socket_dir 檔案並ä¸å­˜åœ¨\n" + +#: dpid/dpi_socket_dir.c:110 dpid/dpi_socket_dir.c:114 +#, c-format +msgid "debug_msg - init_sockdir: The socket directory " +msgstr "" + +#: dpid/dpi_socket_dir.c:111 +#, c-format +msgid "%s exists and is OK\n" +msgstr "%s 存在並å¯æ­£å¸¸ä½¿ç”¨\n" + +#: dpid/dpi_socket_dir.c:115 +#, c-format +msgid "%s does not exist or is not a directory\n" +msgstr "%s ä¸å­˜åœ¨ä¸”ä¸æ˜¯ä¸€å€‹ç›®éŒ„\n" + +#: dpid/dpi_socket_dir.c:124 +#, c-format +msgid " - Failed to create dpi socket directory\n" +msgstr "" + +#: dpid/dpi_socket_dir.c:127 +#, c-format +msgid " - failed to save %s\n" +msgstr "" + +#: dpid/main.c:59 dpid/main.c:66 dpid/main.c:77 dpid/main.c:85 dpid/main.c:99 +#: dpid/main.c:104 dpid/main.c:109 +#, c-format +msgid "ERROR in child proc for %s\n" +msgstr "" + +#: dpid/main.c:166 +#, c-format +msgid ": dpid failed to parse cmd in %s\n" +msgstr "" + +#: dpid/main.c:265 +#, c-format +msgid "Failed to create socket directory\n" +msgstr "" + +#: dpid/main.c:275 +#, c-format +msgid "dpid refuses to start, possibly because:\n" +msgstr "" + +#: dpid/main.c:276 +#, c-format +msgid "\t1) An instance of dpid is already running.\n" +msgstr "" + +#: dpid/main.c:277 +#, c-format +msgid "\t2) A previous dpid didn't clean up on exit.\n" +msgstr "" + +#: dpid/main.c:280 +msgid "init_srs_sockets failed\n" +msgstr "" + +#: dpid/main.c:294 +#, c-format +msgid "dpid started\n" +msgstr "" + +#: dpid/main.c:340 +#, c-format +msgid "accept on srs socket failed\n" +msgstr "" + +#: dpid/main.c:341 +#, c-format +msgid "service pending connections, and continue\n" +msgstr "" + +#: dpi/bookmarks.c:96 +#, fuzzy +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>Bookmarks</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr>\n" +" <td>&nbsp;Bookmarks::</td>\n" +" <td width='100%' align='right'>\n" +" [<a href='dpi:/bm/modify'>modify</a>]\n" +" </td></tr>\n" +" </table></td></tr>\n" +"</table>\n" +"<br>\n" +msgstr "" +"<html>\n" +"<head>\n" +"<title>書籤</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr>\n" +" <td><pre>&nbsp;書籤::</pre></td>\n" +" <td width='100%' align='right'>\n" +" <pre>[<a href='dpi:/bm/modify'>編輯</a>]</pre>\n" +" </td></tr>\n" +" </table></td></tr>\n" +"</table>\n" +"<br>\n" + +#: dpi/bookmarks.c:115 +#, fuzzy +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>Bookmarks</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr>\n" +" <td>&nbsp;Bookmarks :: modify</td></tr>\n" +" </table></td></tr> \n" +"</table> \n" +"\n" +"<form>\n" +"<table width='100%' border='1' cellpadding='0'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td><b>Select&nbsp;an&nbsp;operation&nbsp;</b></td>\n" +" <td><select name='operation'>\n" +" <option value='none' selected>--\n" +" <option value='delete'>Delete\n" +" <option value='move'>Move\n" +" <option value='modify'>Modify\n" +" <option value='add_sec'>Add Section\n" +" <option value='add_url'>Add URL\n" +" </select></td>\n" +" <td><b>,&nbsp;mark&nbsp;its&nbsp;operands,&nbsp;and&nbsp;</b></td>\n" +" <td><input type='submit' name='submit' value='submit.'></td>\n" +" <td width='100%'></td>\n" +" </tr>\n" +" </table></td></tr>\n" +"</table>\n" +msgstr "" +"<html>\n" +"<head>\n" +"<title>書籤</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr>\n" +" <td><pre>&nbsp;書籤 :: 編輯</pre></td></tr>\n" +" </table></td></tr> \n" +"</table> \n" +"\n" +"<form>\n" +"<table width='100%' border='1' cellpadding='0'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td><pre><b>é¸æ“‡å‹•ä½œ&nbsp;</b></pre></td>\n" +" <td><select name='operation'>\n" +" <option value='none' selected>--\n" +" <option value='delete'>刪除\n" +" <option value='move'>移動\n" +" <option value='modify'>修改\n" +" <option value='add_sec'>加入目錄\n" +" <option value='add_url'>加入 URL\n" +" </select></td>\n" +" <td><pre><b>套用已é¸å‹•ä½œ</b></pre></td>\n" +" <td><input type='submit' name='submit' value='套用.'></td>\n" +" <td width='100%'></td>\n" +" </tr>\n" +" </table></td></tr>\n" +"</table>\n" + +#: dpi/bookmarks.c:151 +msgid "" +"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n" +" <tr valign='top'>\n" +" <td>\n" +" <table bgcolor='#b4b4b4' border='2' cellpadding='4' cellspacing='1'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n" +msgstr "" +"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n" +" <tr valign='top'>\n" +" <td>\n" +" <table bgcolor='#b4b4b4' border='2' cellpadding='4' cellspacing='1'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr><td><pre>é …ç›®:</pre></td></tr></table></td></tr>\n" + +#: dpi/bookmarks.c:160 +msgid "" +"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n" +" <tr valign='top'>\n" +" <td>\n" +" <table bgcolor='#b4b4b4' border='1'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr><td><small>Sections:</small></td></tr></table></td></tr>\n" +msgstr "" +"<table border='1' cellpadding='0' cellspacing='20' width='100%'>\n" +" <tr valign='top'>\n" +" <td>\n" +" <table bgcolor='#b4b4b4' border='1'>\n" +" <tr><td>\n" +" <table width='100%' bgcolor='#b4b4b4'>\n" +" <tr><td><pre>é …ç›®:</pre></td></tr></table></td></tr>\n" + +#: dpi/bookmarks.c:243 +#, fuzzy +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>Bookmarks</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: add section\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +" <input type='hidden' name='operation' value='add_section'>\n" +"<table border='1' width='100%'>\n" +" <tr>\n" +" <td bgcolor='olive'><b>New&nbsp;section:</b></td>\n" +" <td bgcolor='white' width='100%'></td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='10'>\n" +"<tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td>Title:</td>\n" +" <td><input type='text' name='title' size='64'></td></tr>\n" +" </table>\n" +" </td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='submit.'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" +"\n" +msgstr "" +"<html>\n" +"<head>\n" +"<title>書籤</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'><pre>&nbsp;編輯書籤:: 加入項目</pre>\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +" <input type='hidden' name='operation' value='add_section'>\n" +"<table border='1' width='100%'>\n" +" <tr>\n" +" <td bgcolor='olive'><pre><b>新加入項目:</b></pre></td>\n" +" <td bgcolor='white' width='100%'></td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='10'>\n" +"<tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td><pre>標題:</pre></td>\n" +" <td><input type='text' name='title' size='64'></td></tr>\n" +" </table>\n" +" </td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='套用.'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" +"\n" + +#: dpi/bookmarks.c:283 +#, fuzzy +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>Bookmarks</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: update\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +"<input type='hidden' name='operation' value='modify2'>\n" +msgstr "" +"<html>\n" +"<head>\n" +"<title>書籤</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'><pre>&nbsp;編輯書籤:: æ›´æ–°</pre>\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +"<input type='hidden' name='operation' value='modify2'>\n" + +#: dpi/bookmarks.c:310 +#, c-format +msgid "" +"<tr><td>\n" +" <table width='100%%' bgcolor='teal'>\n" +" <tr>\n" +" <td>Title:</td>\n" +" <td><input type='text' name='title%d' size='64'\n" +" value='%s'></td></tr>\n" +" <tr>\n" +" <td>URL:</td>\n" +" <td>%s</td></tr>\n" +" </table>\n" +" </td></tr>\n" +msgstr "" +"<tr><td>\n" +" <table width='100%%' bgcolor='teal'>\n" +" <tr>\n" +" <td><pre>標題:</pre></td>\n" +" <td><input type='text' name='title%d' size='64'\n" +" value='%s'></td></tr>\n" +" <tr>\n" +" <td>URL:</td>\n" +" <td>%s</td></tr>\n" +" </table>\n" +" </td></tr>\n" + +#: dpi/bookmarks.c:323 +#, c-format +msgid "" +"<tr><td>\n" +" <table width='100%%' bgcolor='teal'>\n" +" <tr>\n" +" <td>Title:</td>\n" +" <td><input type='text' name='s%d' size='64'\n" +" value='%s'></td></tr>\n" +" </table>\n" +" </td></tr>\n" +msgstr "" +"<tr><td>\n" +" <table width='100%%' bgcolor='teal'>\n" +" <tr>\n" +" <td><pre>標題:</pre></td>\n" +" <td><input type='text' name='s%d' size='64'\n" +" value='%s'></td></tr>\n" +" </table>\n" +" </td></tr>\n" + +#: dpi/bookmarks.c:336 +#, c-format +msgid "" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='submit.'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" +msgstr "" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='套用.'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" + +#: dpi/bookmarks.c:346 +#, fuzzy +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<html>\n" +"<head>\n" +"<title>Bookmarks</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'>&nbsp;Modify bookmarks:: add url\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +"<input type='hidden' name='operation' value='add_url2'>\n" +"<table border='1' width='100%'>\n" +" <tr>\n" +" <td bgcolor='olive'><b>Add&nbsp;url:</b></td>\n" +" <td bgcolor='white' width='100%'></td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='10'>\n" +"<tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td>Title:</td>\n" +" <td><input type='text' name='title' size='64'></td></tr>\n" +" <tr>\n" +" <td>URL:</td>\n" +" <td><input type='text' name='url' size='64'></td></tr>\n" +" </table>\n" +" </td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='submit.'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" +msgstr "" +"<html>\n" +"<head>\n" +"<title>書籤</title>\n" +"</head>\n" +"<body bgcolor='#778899' link='black' vlink='brown'>\n" +"<table border='1' cellpadding='0' width='100%'>\n" +" <tr><td colspan='2'>\n" +" <table bgcolor='#b4b4b4' width='100%'>\n" +" <tr><td bgcolor='#b4b4b4'><pre>&nbsp;編輯書籤:: 加入網é </pre>\n" +" </td></tr></table></td></tr>\n" +"</table>\n" +"<br>\n" +"<form>\n" +"<input type='hidden' name='operation' value='add_url2'>\n" +"<table border='1' width='100%'>\n" +" <tr>\n" +" <td bgcolor='olive'><pre><b>加入網é l:</b></pre></td>\n" +" <td bgcolor='white' width='100%'></td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='10'>\n" +"<tr><td>\n" +" <table width='100%' bgcolor='teal'>\n" +" <tr>\n" +" <td><pre>標題:</pre></td>\n" +" <td><input type='text' name='title' size='64'></td></tr>\n" +" <tr>\n" +" <td>URL:</td>\n" +" <td><input type='text' name='url' size='64'></td></tr>\n" +" </table>\n" +" </td></tr>\n" +"</table>\n" +"<table width='100%' cellpadding='4' border='0'>\n" +"<tr><td bgcolor='#a0a0a0'>\n" +" <input type='submit' name='submit' value='套用.'></td></tr>\n" +"</table>\n" +"</form>\n" +"</body>\n" +"</html>\n" + +#: dpi/bookmarks.c:691 +msgid "Unclassified" +msgstr "未經分類" + +#: dpi/bookmarks.c:724 +#, c-format +msgid "echo \":s0: Unclassified\" > %s" +msgstr "echo \":s0: 未經分類\" > %s" + +#: dpi/bookmarks.c:786 +#, c-format +msgid "" +"Syntax error in bookmarks file:\n" +" %s" +msgstr "" +"語法錯誤於書籤檔:\n" +" %s" + +#: dpi/bookmarks.c:898 +msgid "Added bookmark!" +msgstr "加進書籤!" + +#: dpi/bookmarks.c:1087 +msgid "Update&nbsp;sections:" +msgstr "<pre>æ›´æ–°é …ç›®:</pre>" + +#: dpi/bookmarks.c:1107 +msgid "Update&nbsp;titles:" +msgstr "<pre>更新標題:</pre>" + +#: dpi/bookmarks.c:1404 +msgid "Delete: you must mark what to delete!" +msgstr "刪除: è«‹å…ˆé¸æ“‡é …ç›®!" + +#: dpi/bookmarks.c:1410 +msgid "Move: you must mark a target section!" +msgstr "移動: è«‹å…ˆé¸æ“‡é …ç›®!" + +#: dpi/bookmarks.c:1412 +msgid "Move: can not move a section (yet)." +msgstr "移動: 移動項目失敗!" + +#: dpi/bookmarks.c:1414 +msgid "Move: you must mark some urls, and a target section!" +msgstr "移動: è«‹å…ˆé¸æ“‡ç¶²é åŠé …ç›®!" + +#: dpi/bookmarks.c:1419 +msgid "Modify: you must mark what to update!" +msgstr "修改: è«‹å…ˆé¸æ“‡è¦æ›´æ–°çš„é …ç›®!" + +#: dpi/bookmarks.c:1436 +msgid "Add url: only one target section is allowed!" +msgstr "加入網é : åªå¯é¸æ“‡ä¸€å€‹é …ç›®!" + +#: dpi/bookmarks.c:1443 +msgid "No operation, just do nothing!" +msgstr "沒有指示,æ“作無效!" + +#: dpi/bookmarks.c:1446 +msgid "Sorry, not implemented yet." +msgstr "æ“作尚未完æˆ." + +#: dpi/bookmarks.c:1614 +msgid "Haven't got a full tag!\n" +msgstr "找ä¸åˆ°å®Œæ•´æ¨™ç±¤!\n" + +#: dpi/bookmarks.c:1690 +#, fuzzy +msgid "" +"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n" +"<HTML><body> Error on the bookmarks server...</body></html>" +msgstr "<HTML><body> 書籤系統錯誤...</body></html>" + +#: config/dillocfg.c:82 +msgid "Quit" +msgstr "退出" + +#: config/dillocfg.c:84 config/dillocfg.c:90 +msgid "Dillo Preferences" +msgstr "å好設定" + +#: config/dillocfg.c:113 +msgid "Interface" +msgstr "介é¢" + +#: config/dillocfg.c:114 +msgid " Font " +msgstr " å­—åž‹ " + +#: config/dillocfg.c:115 +msgid " Color " +msgstr " é¡è‰² " + +#: config/dillocfg.c:116 +msgid " Network " +msgstr " 網絡 " + +#: config/dillocfg.c:118 +msgid " Tab " +msgstr " åˆ†é  " + +#: config/dillocfg.c:121 +msgid " Other " +msgstr " 其他 " + +#: config/dillocfg.c:329 +msgid "Add" +msgstr "加入" + +#: config/dillocfg.c:330 +msgid "Delete" +msgstr "刪除" + +#: config/dillocfg.c:336 +msgid "Address" +msgstr "ä½å€" + +#: config/dillocfg.c:337 +msgid "Rule" +msgstr "è¦å‰‡" + +#: config/dillocfg.c:363 config/dillocfg.c:369 +#, c-format +msgid "Read failed <%s>\n" +msgstr "éŒ¯èª¤è®€å– <%s>\n" + +#: config/dillocfg.c:450 config/dillocfg.c:458 +#, c-format +msgid "can't write <%s>\n" +msgstr "ä¸èƒ½å¯«å…¥ <%s>\n" + +#: config/dillocfg_token.c:60 +msgid "Window Size" +msgstr "窗å£å¤§å°" + +#: config/dillocfg_token.c:68 +msgid "HTTP Proxy" +msgstr "代ç†ä¼ºæœå™¨" + +#: config/dillocfg_token.c:76 +msgid "HTTP Proxy User" +msgstr "伺æœå™¨ç”¨æˆ¶" + +#: config/dillocfg_token.c:84 +msgid "NO Proxy" +msgstr "沒有伺æœå™¨" + +#: config/dillocfg_token.c:92 +msgid "User-Agent" +msgstr "ç€è¦½å™¨-相容識別" + +#: config/dillocfg_token.c:100 +msgid "Send referer header" +msgstr "" + +#: config/dillocfg_token.c:108 +msgid "Link color" +msgstr "連çµ" + +#: config/dillocfg_token.c:116 +msgid "Visited color" +msgstr "已到網é " + +#: config/dillocfg_token.c:124 +msgid "BackGround color" +msgstr "背景" + +#: config/dillocfg_token.c:132 +msgid "Allow white bg" +msgstr "空白背景" + +#: config/dillocfg_token.c:140 +msgid "Force my colors" +msgstr "使用自é¸é¡è‰²" + +#: config/dillocfg_token.c:148 +msgid "Contrast visited color" +msgstr "加亮已到網é é¡è‰²" + +#: config/dillocfg_token.c:156 +msgid "Text color" +msgstr "文字é¡è‰²" + +#: config/dillocfg_token.c:164 +msgid "Use oblique" +msgstr "兼容斜體" + +#: config/dillocfg_token.c:172 +msgid "Start Page" +msgstr "起始é " + +#: config/dillocfg_token.c:180 +msgid "HOMEPAGE" +msgstr "首é " + +#: config/dillocfg_token.c:188 +msgid "Search-engine's URL" +msgstr "æœå°‹å¼•æ“Žç¶²å€" + +#: config/dillocfg_token.c:196 +msgid "Search-engine's charset" +msgstr "æœå°‹å¼•æ“Žå­—é«”" + +#: config/dillocfg_token.c:204 +msgid "Show Tooltip" +msgstr "顯示æ示" + +#: config/dillocfg_token.c:212 +msgid "Panel Size" +msgstr "æ¿é¢å¤§å°" + +#: config/dillocfg_token.c:220 +msgid "Small icons" +msgstr "å°åž‹åœ–示" + +#: config/dillocfg_token.c:228 +msgid "Limit text width" +msgstr "é™åˆ¶æ–‡å­—寬度" + +#: config/dillocfg_token.c:236 +msgid "Limit font decoration" +msgstr "é™åˆ¶æ–‡å­—è£é£¾" + +#: config/dillocfg_token.c:244 +msgid "Font factor" +msgstr "文字系數" + +#: config/dillocfg_token.c:252 +msgid "Font Sizes" +msgstr "文字大å°" + +#: config/dillocfg_token.c:260 +msgid "W3C+heuristics" +msgstr "W3C+試探程åº" + +#: config/dillocfg_token.c:268 +msgid "Use dicache" +msgstr "使用ç£ç¢Ÿç·©å­˜" + +#: config/dillocfg_token.c:276 +msgid "Show Back" +msgstr "顯示返回" + +#: config/dillocfg_token.c:284 +msgid "Show Forw" +msgstr "顯示往å‰" + +#: config/dillocfg_token.c:292 +msgid "Show Home" +msgstr "顯示首é " + +#: config/dillocfg_token.c:300 +msgid "Show Reload" +msgstr "顯示é‡è¼‰" + +#: config/dillocfg_token.c:308 +msgid "Show Save" +msgstr "顯示儲存" + +#: config/dillocfg_token.c:316 +msgid "Show Stop" +msgstr "顯示åœæ­¢" + +#: config/dillocfg_token.c:324 +msgid "Show Bookmarks" +msgstr "顯示書籤" + +#: config/dillocfg_token.c:332 +msgid "Show Menubar" +msgstr "顯示é¸å–®æ””" + +#: config/dillocfg_token.c:340 +msgid "Show ClearURL" +msgstr "顯示清空ä½å€" + +#: config/dillocfg_token.c:348 +msgid "Show URL box" +msgstr "顯示ä½å€æ¬„" + +#: config/dillocfg_token.c:356 +msgid "Show Web Search" +msgstr "顯示æœå°‹æ¡†" + +#: config/dillocfg_token.c:364 +msgid "Show Progress box" +msgstr "顯示進度框" + +#: config/dillocfg_token.c:372 +msgid "Show Popup navigation" +msgstr "顯示彈出ç€è¦½" + +#: config/dillocfg_token.c:380 +msgid "Fullwindow start" +msgstr "全螢幕開始" + +#: config/dillocfg_token.c:388 +msgid "Transient dialogs" +msgstr "短暫å°è©±æ¡†" + +#: config/dillocfg_token.c:396 +msgid "Popup dialogs" +msgstr "彈出å°è©±æ¡†" + +#: config/dillocfg_token.c:404 +msgid "vw_aafontname" +msgstr "一般字體(平滑化)" + +#: config/dillocfg_token.c:412 +msgid "fw_aafontname" +msgstr "固定字體(平滑化)" + +#: config/dillocfg_token.c:420 +msgid "vw_fontname" +msgstr "一般字體" + +#: config/dillocfg_token.c:428 +msgid "fw_fontname" +msgstr "固定字體" + +#: config/dillocfg_token.c:436 +msgid "Generate submit" +msgstr "發放æ交" + +#: config/dillocfg_token.c:444 +msgid "Enterpress forces submit" +msgstr "按 Enter éµæ交" + +#: config/dillocfg_token.c:452 +msgid "Show debugging messsages" +msgstr "顯示除錯訊æ¯" + +#: config/dillocfg_token.c:460 +msgid "Show Extra Warnings" +msgstr "顯示é‡å¤§è­¦å‘Šè¨Šæ¯" + +#: config/dillocfg_token.c:468 +msgid "Focus location on new" +msgstr "èšç„¦ä½å€æ–¼æ–°çª—å£" + +#: config/dillocfg_token.c:476 config/dillocfg_token.c:484 +msgid "Accept Language" +msgstr "接å—語言" + +#: config/dillocfg_token.c:493 +msgid "Tab load in background" +msgstr "在背景開啟分é " + +#: config/dillocfg_token.c:501 +msgid "Tab close middle click" +msgstr "以中éµé—œé–‰åˆ†é " + +#: config/dillocfg_token.c:509 +msgid "Tab instead of window" +msgstr "以分é æ›¿ä»£çª—å£" + +#: config/dillocfg_token.c:517 +msgid "Tab bar show fullscreen" +msgstr "分é æ¨™é¡Œæ¬„顯示全螢幕" + +#: config/dillocfg_token.c:525 +msgid "Tab bar show single tab" +msgstr "分é æ¨™é¡Œæ¬„åªé¡¯ç¤ºå–®ä¸€åˆ†é " + +#: config/dillocfg_token.c:533 +msgid "Tab bar scroller" +msgstr "顯示分é æ¨™é¡Œæ¬„å·è»¸" + +#: config/dillocfg_token.c:541 +msgid "Tab bar homogeneous" +msgstr "分é æ¨™é¡Œæ¬„å¹³å‡åŒ–" + +#: config/dillocfg_token.c:549 +msgid "Tab title compress" +msgstr "簡化分é æ¨™é¡Œ" + +#: config/dillocfg_token.c:557 +msgid "Compress vowels" +msgstr "壓縮æ¯éŸ³å­—å…ƒ" + +#: config/dillocfg_token.c:565 +msgid "Compress_common_prefixes" +msgstr "壓縮標頭文字" + +#: config/dillocfg_token.c:574 +msgid "Default" +msgstr "é è¨­" diff -pruN dillo-0.8.6/src/IO/DBIO.c dillo-0.8.6-i18n-misc-20060709/src/IO/DBIO.c --- dillo-0.8.6/src/IO/DBIO.c 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/IO/DBIO.c 2006-05-16 01:21:09.000000000 +0900 @@ -0,0 +1,290 @@ +/* + * File: DBIO.c + * + * Copyright (C) 2000, 2001 Jorge Arellano Cid <jcid@inf.utfsm.cl> + * Copyright (C) 2002 Jonathan P Springer <jonathan.springer@verizon.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * In addition, as a special exception, Jorge Arellano Cid and Jonathan + * Springer give permission to link the code of this program with the OpenSSL + * library (or modified versions of OpenSSL that use the same license as + * OpenSSL), and distribute linked combinations including the two. You must + * obey the GNU General Public License in all respects for all of the code + * used other than OpenSSL. If you modify this file, you may extend this + * exception to your version of the file, but you are not obligated to do so. + * If you do not wish to do so, delete this exception from your version. + * + */ + +/* + * Dillo's signal driven BIO engine + */ + +#include <config.h> + +#ifdef DILLO_SSL + +#include <stdio.h> +#include <errno.h> +#include <fcntl.h> +#include <unistd.h> +#include <sys/stat.h> +#include <sys/uio.h> +#include <sys/socket.h> +#include <glib.h> +#include <gdk/gdk.h> +#include "../chain.h" +#include "DBIO.h" + +#include <openssl/bio.h> +#include <openssl/err.h> + +//#define DEBUG_LEVEL 3 +#include "../debug.h" + + +/* + * Symbolic defines for shutdown() function + * (Not defined in the same header file, for all distros --Jcid) + */ +#define IO_StopRd 0 +#define IO_StopWr 1 +#define IO_StopRdWr 2 + +extern void IO_submit(IOData_t *r_io); +extern void IO_del(IOData_t *io); +extern void IO_ins(IOData_t *io); +extern IOData_t *IO_get(gint Key); + +/* + * IO-module data + */ + + +/* + * Return a newly created, and initialized, 'io' struct + */ +IOData_t *a_DBIO_new(BIO *bioin) +{ + IOData_t *io = g_new0(IOData_t, 1); + io->GioCh = NULL; + io->FD = -1; + io->Flags = 0; + io->bio = bioin; + return io; +} + +/* + * Free an 'io' struct + */ +void DBIO_free(IOData_t *io) +{ + if (io->Flags & IOFlag_FreeIOBuf) g_free(io->Buf); + g_free(io); +} + +/* + * Close an open BIO, and remove io controls. + * (This function can be used for Close and Abort operations) + */ +void DBIO_close_fd(IOData_t *io, gint CloseCode) +{ + if (io->bio) BIO_free_all(io->bio); + + IO_del(io); +} + +/* + * Abort an open FD. + * This function is called to abort a BIO connection due to an IO error + * or just because the connection is not required anymore. + */ +gboolean DBIO_abort(IOData_t *io) +{ + /* Close and finish this FD's activity */ + DBIO_close_fd(io, IO_StopRdWr); + + return FALSE; +} + +/* + * Read data from a BIO into a specific buffer + */ +gboolean DBIO_Callback_Read(gpointer data) +{ + ssize_t St; + gboolean ret; + IOData_t *io = (IOData_t *) data; + + DEBUG_MSG(3, " IO_read2\n"); + + /* Sometimes glib delivers events on already aborted FDs --Jcid */ + if ( IO_get(io->Key) == NULL ) return FALSE; + + St = BIO_read(io->bio, io->Buf, io->BufSize); + + if ( St < 0 ) { + if (BIO_should_retry(io->bio)) { + ret = TRUE; + } else { + io->Status = ERR_get_error(); + ret = FALSE; + } + } else if ( St == 0 ) { + if (BIO_should_retry(io->bio)) { + ret = TRUE; + } else { + a_DBIO_ccc(OpEnd, 2,0, io->Info, io, NULL); + ret = FALSE; + } + } else { + io->Status = St; /* Status is used for length */ + a_DBIO_ccc(OpSend, 2,0, io->Info, io, NULL); + ret = TRUE; + } + + return ret; +} + +/* + * Write data, from a specific buffer, into a file descriptor + * (** Write operations MUST NOT free the buffer because the buffer + * start is modified.) + * todo: Implement IOWrites, remove the constraint stated above. + */ +gboolean DBIO_Callback_Write(gpointer data) +{ + ssize_t St; + gboolean ret = FALSE; + IOData_t *io = (IOData_t *) data; + + DEBUG_MSG(3, " IO_write\n"); + + /* Sometimes glib delivers events on already aborted FDs --Jcid */ + if ( IO_get(io->Key) == NULL ) return FALSE; + + St = BIO_write(io->bio, io->Buf, io->BufSize); + io->Status = St; + + DEBUG_MSG(3, " IO_write: %s [errno %d] [St %d]\n", + g_strerror(errno), errno, St); + + if ( St <= 0 ) { + if (BIO_should_retry(io->bio)) { + ret = TRUE; + } else { + io->Status = ERR_get_error(); + ret = FALSE; + } + } else if ( St < (ssize_t)io->BufSize ){ + // Not all data written + io->BufSize -= St; + io->Buf = ((gchar *)io->Buf) + St; + ret = TRUE; + } else { + // All data in buffer written + if ( io->Op == IOWrite ) { + /* Single write */ + a_DBIO_ccc(OpEnd, 1,0, io->Info, io, NULL); + ret = FALSE; + } else if ( io->Op == IOWrites ) { + /* todo: Writing in small chunks (not implemented) */ + } + } + + return ret; +} + +/* + * Receive an IO request (IORead | IOWrite | IOWrites), + */ +void DBIO_submit(IOData_t *r_io) +{ + if ( r_io->Op == IORead ) { + g_idle_add(DBIO_Callback_Read, (gpointer) r_io); + } else if (r_io->Op == IOWrite || r_io->Op == IOWrites ) { + g_idle_add(DBIO_Callback_Write, (gpointer) r_io); + } + + /* Add a reference pointer to this request */ + IO_ins(r_io); +} + +/* + * CCC function for the IO module + * ( Data = IOData_t* ; ExtraData = NULL ) + */ +void a_DBIO_ccc(int Op, int Branch,int Dir, ChainLink *Info, void *Data, void *ExtraData) +{ + IOData_t *io = Data; + + if ( Branch == 1 ) { + /* Send query */ + switch (Op) { + case OpStart: + io->Info = Info; + Info->LocalKey = io; + DBIO_submit(io); + break; + case OpEnd: + a_Chain_fcb(OpEnd, Info, io, NULL); + DBIO_free(io); + break; + case OpAbort: + a_Chain_fcb(OpAbort, Info, NULL, NULL); + DBIO_free(io); + break; + } + + } else if ( Branch == 2 ) { + /* Receive answer */ + switch (Op) { + case OpStart: + io->Info = Info; + Info->LocalKey = io; + a_Chain_link_new(Info, a_DBIO_ccc, FWD, a_Cache_ccc,2,2); + a_Chain_fcb(OpStart, Info, io, io->ExtData); + DBIO_submit(io); + break; + case OpSend: + a_Chain_fcb(OpSend, Info, io, NULL); + break; + case OpEnd: + a_Chain_fcb(OpEnd, Info, io, NULL); + DBIO_free(io); + break; + case OpAbort: + a_Chain_fcb(OpAbort, Info, io, NULL); + DBIO_free(io); + break; + } + + } else if ( Branch == -1 ) { + /* Backwards call */ + switch (Op) { + case OpAbort: + DEBUG_MSG(3, "IO : OpAbort [-1]\n"); + io = Info->LocalKey; + DBIO_abort(io); + DBIO_free(io); + g_free(Info); + break; + } + } +} + +#endif + diff -pruN dillo-0.8.6/src/IO/DBIO.h dillo-0.8.6-i18n-misc-20060709/src/IO/DBIO.h --- dillo-0.8.6/src/IO/DBIO.h 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/IO/DBIO.h 2006-05-16 01:21:09.000000000 +0900 @@ -0,0 +1,22 @@ +#ifndef __DBIO_h +#define __DBIO_h + +#include <config.h> + +#ifdef DILLO_SSL + +#include <openssl/bio.h> + +#include "IO.h" + +/* + * Exported functions + */ +IOData_t* a_DBIO_new(BIO *bio); +void a_DBIO_ccc(int Op, int Br,int Dir, ChainLink *Info, void *Data, void *ExtraData); + +#endif /* DILLO_SSL */ + +#endif /* __DBIO_h */ + + diff -pruN dillo-0.8.6/src/IO/IO.c dillo-0.8.6-i18n-misc-20060709/src/IO/IO.c --- dillo-0.8.6/src/IO/IO.c 2006-01-03 03:21:56.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/IO/IO.c 2006-05-16 01:21:09.000000000 +0900 @@ -15,6 +15,7 @@ #include <pthread.h> +#include <config.h> #include <stdio.h> #include <string.h> #include <errno.h> @@ -86,6 +87,9 @@ IOData_t *a_IO_new(gint op, gint fd) io->GioCh = g_io_channel_unix_new(fd); io->Flags = 0; io->Key = 0; +#ifdef DILLO_SSL + io->bio = NULL; +#endif return io; } @@ -376,7 +380,7 @@ void a_IO_write_chunk(gint FD, void *Key /* * Register an IO in ValidIOs */ -static void IO_ins(IOData_t *io) +void IO_ins(IOData_t *io) { io->Key = a_Klist_insert(&ValidIOs, (gpointer)io); } @@ -384,7 +388,7 @@ static void IO_ins(IOData_t *io) /* * Remove an IO from ValidIOs */ -static void IO_del(IOData_t *io) +void IO_del(IOData_t *io) { a_Klist_remove(ValidIOs, io->Key); } @@ -392,7 +396,7 @@ static void IO_del(IOData_t *io) /* * Return a io by its Key (NULL if not found) */ -static IOData_t *IO_get(gint Key) +IOData_t *IO_get(gint Key) { return a_Klist_get_data(ValidIOs, Key); } @@ -403,7 +407,7 @@ static IOData_t *IO_get(gint Key) static void IO_free(IOData_t *io) { g_return_if_fail(IO_get(io->Key) == NULL); - + if (io->Flags & IOFlag_FreeIOBuf) a_IO_set_buf(io, NULL, 0); g_free(io); @@ -597,7 +601,7 @@ static gboolean IO_callback(GIOChannel * * Receive an IO request (IORead | IOWrite | IOWrites), * Set the GIOChannel and let it flow! */ -static void IO_submit(IOData_t *r_io) +void IO_submit(IOData_t *r_io) { /* Insert this IO in ValidIOs */ IO_ins(r_io); diff -pruN dillo-0.8.6/src/IO/IO.h dillo-0.8.6-i18n-misc-20060709/src/IO/IO.h --- dillo-0.8.6/src/IO/IO.h 2005-10-28 01:20:22.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/IO/IO.h 2006-05-16 01:21:09.000000000 +0900 @@ -1,10 +1,16 @@ #ifndef __IO_H__ #define __IO_H__ +#include<config.h> + #include<unistd.h> #include<sys/uio.h> #include <glib.h> +#ifdef DILLO_SSL +#include <openssl/bio.h> +#endif + #include "../chain.h" /* @@ -31,6 +37,7 @@ #define IOBufLen_File 4096 #define IOBufLen_Proto 4096 #define IOBufLen_About 4096 +#define IOBufLen_Matrix 4096 typedef struct { @@ -46,6 +53,9 @@ typedef struct { void *ExtData; /* External data reference (not used by IO.c) */ void *Info; /* CCC Info structure for this IO */ +#ifdef DILLO_SSL + BIO *bio; +#endif GIOChannel *GioCh; /* IO channel */ guint watch_id; /* glib's event source id */ } IOData_t; diff -pruN dillo-0.8.6/src/IO/Makefile.am dillo-0.8.6-i18n-misc-20060709/src/IO/Makefile.am --- dillo-0.8.6/src/IO/Makefile.am 2004-08-04 22:58:25.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/IO/Makefile.am 2006-05-16 01:21:09.000000000 +0900 @@ -4,6 +4,9 @@ AM_LIBS = @GTK_LIBS@ noinst_LIBRARIES = libDio.a libDio_a_SOURCES = \ + https.c \ + DBIO.h \ + DBIO.c \ mime.c \ mime.h \ about.c \ diff -pruN dillo-0.8.6/src/IO/Makefile.in dillo-0.8.6-i18n-misc-20060709/src/IO/Makefile.in --- dillo-0.8.6/src/IO/Makefile.in 2006-04-27 01:07:22.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/IO/Makefile.in 2006-05-16 01:21:09.000000000 +0900 @@ -1,8 +1,8 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.7.9 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -14,8 +14,6 @@ @SET_MAKE@ -SOURCES = $(libDio_a_SOURCES) - srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ @@ -23,6 +21,7 @@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../.. + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 @@ -39,35 +38,6 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -subdir = src/IO -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -LIBRARIES = $(noinst_LIBRARIES) -AR = ar -ARFLAGS = cru -libDio_a_AR = $(AR) $(ARFLAGS) -libDio_a_LIBADD = -am_libDio_a_OBJECTS = mime.$(OBJEXT) about.$(OBJEXT) Url.$(OBJEXT) \ - proto.$(OBJEXT) http.$(OBJEXT) dpi.$(OBJEXT) IO.$(OBJEXT) -libDio_a_OBJECTS = $(am_libDio_a_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(libDio_a_SOURCES) -DIST_SOURCES = $(libDio_a_SOURCES) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ @@ -97,6 +67,7 @@ EXEEXT = @EXEEXT@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_CONFIG = @GLIB_CONFIG@ GLIB_LIBS = @GLIB_LIBS@ +GMSGFMT = @GMSGFMT@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_CONFIG = @GTK_CONFIG@ GTK_LIBS = @GTK_LIBS@ @@ -104,9 +75,12 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ LDFLAGS = @LDFLAGS@ LIBFLTK_CXXFLAGS = @LIBFLTK_CXXFLAGS@ LIBFLTK_LIBS = @LIBFLTK_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ LIBJPEG_CPPFLAGS = @LIBJPEG_CPPFLAGS@ LIBJPEG_LDFLAGS = @LIBJPEG_LDFLAGS@ LIBJPEG_LIBS = @LIBJPEG_LIBS@ @@ -118,8 +92,13 @@ LIBPTHREAD_LIBS = @LIBPTHREAD_LIBS@ LIBS = @LIBS@ LIBSSL_LIBS = @LIBSSL_LIBS@ LIBZ_LIBS = @LIBZ_LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ @@ -128,11 +107,16 @@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +POSUB = @POSUB@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +USE_NLS = @USE_NLS@ VERSION = @VERSION@ +XFT_CONFIG = @XFT_CONFIG@ +XGETTEXT = @XGETTEXT@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_RANLIB = @ac_ct_RANLIB@ @@ -144,8 +128,6 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TR am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -164,9 +146,9 @@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ +localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ -mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ @@ -180,8 +162,13 @@ target_os = @target_os@ target_vendor = @target_vendor@ AM_CFLAGS = @GTK_CFLAGS@ AM_LIBS = @GTK_LIBS@ + noinst_LIBRARIES = libDio.a + libDio_a_SOURCES = \ + https.c \ + DBIO.h \ + DBIO.c \ mime.c \ mime.h \ about.c \ @@ -193,39 +180,47 @@ libDio_a_SOURCES = \ IO.c \ IO.h +subdir = src/IO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +LIBRARIES = $(noinst_LIBRARIES) + +libDio_a_AR = $(AR) cru +libDio_a_LIBADD = +am_libDio_a_OBJECTS = https.$(OBJEXT) DBIO.$(OBJEXT) mime.$(OBJEXT) \ + about.$(OBJEXT) Url.$(OBJEXT) proto.$(OBJEXT) http.$(OBJEXT) \ + dpi.$(OBJEXT) IO.$(OBJEXT) +libDio_a_OBJECTS = $(am_libDio_a_OBJECTS) + +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/DBIO.Po ./$(DEPDIR)/IO.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/Url.Po ./$(DEPDIR)/about.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dpi.Po ./$(DEPDIR)/http.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/https.Po ./$(DEPDIR)/mime.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/proto.Po +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = $(libDio_a_SOURCES) +DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +SOURCES = $(libDio_a_SOURCES) + all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/IO/Makefile'; \ +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/IO/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +AR = ar clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) @@ -235,34 +230,52 @@ libDio.a: $(libDio_a_OBJECTS) $(libDio_a $(RANLIB) libDio.a mostlyclean-compile: - -rm -f *.$(OBJEXT) + -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DBIO.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IO.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Url.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/about.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dpi.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/https.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mime.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proto.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` uninstall-info-am: +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ @@ -271,7 +284,6 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique -tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) @@ -283,11 +295,10 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEP done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) @@ -310,6 +321,10 @@ GTAGS: distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ @@ -323,7 +338,7 @@ distdir: $(DISTFILES) dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ @@ -341,6 +356,7 @@ distdir: $(DISTFILES) check-am: all-am check: check-am all-am: Makefile $(LIBRARIES) + installdirs: install: install-am install-exec: install-exec-am @@ -361,7 +377,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -380,8 +396,6 @@ dvi: dvi-am dvi-am: -html: html-am - info: info-am info-am: @@ -417,14 +431,13 @@ uninstall-am: uninstall-info-am .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-noinstLIBRARIES ctags distclean distclean-compile \ - distclean-generic distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-exec install-exec-am install-info \ - install-info-am install-man install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-info-am + distclean-generic distclean-tags distdir dvi dvi-am info \ + info-am install install-am install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-man install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ + ps ps-am tags uninstall uninstall-am uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -pruN dillo-0.8.6/src/IO/Url.c dillo-0.8.6-i18n-misc-20060709/src/IO/Url.c --- dillo-0.8.6/src/IO/Url.c 2006-01-04 04:44:32.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/IO/Url.c 2006-05-16 01:21:09.000000000 +0900 @@ -16,6 +16,7 @@ * This module selects the apropriate CCC-function for a given URL. */ +#include <config.h> #include <glib.h> #include <stdlib.h> @@ -87,7 +88,11 @@ ChainFunction_t a_Url_get_ccc_funct(cons {"about", a_About_ccc}, {"dpi" , a_Dpi_ccc}, {"ftp" , a_Dpi_ccc}, +#ifdef DILLO_SSL + {"https", a_Https_ccc}, +#else {"https" , a_Dpi_ccc}, +#endif {"data" , a_Dpi_ccc} }; #define LSIZE (sizeof(cccList) / sizeof(cccList[0])) diff -pruN dillo-0.8.6/src/IO/Url.h dillo-0.8.6-i18n-misc-20060709/src/IO/Url.h --- dillo-0.8.6/src/IO/Url.h 2005-10-28 01:20:22.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/IO/Url.h 2006-05-16 01:21:09.000000000 +0900 @@ -38,6 +38,11 @@ void a_Dpi_ccc (int Op, int Branch, int char *a_Dpi_send_blocking_cmd(const gchar *server_name, const gchar *cmd); void a_Dpi_bye_dpid(void); +#ifdef DILLO_SSL +void a_Https_ccc(int Op, int Branch, int Dir, ChainLink *Info, + void *Data1, void *Data2); +void a_Https_freeall(void); +#endif #ifdef __cplusplus diff -pruN dillo-0.8.6/src/IO/about.c dillo-0.8.6-i18n-misc-20060709/src/IO/about.c --- dillo-0.8.6/src/IO/about.c 2006-04-27 01:17:48.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/IO/about.c 2006-05-16 01:21:09.000000000 +0900 @@ -11,6 +11,7 @@ */ #include <config.h> +#include "../intl.h" #include "IO.h" #include "Url.h" #include "../nav.h" @@ -27,6 +28,9 @@ struct _SplashInfo { /* * HTML text for startup screen */ +static char *Blank= +"Content-type: text/html\n" +"\n"; static char *Splash= "Content-type: text/html\n" "\n" @@ -222,6 +226,24 @@ static char *Splash= "\n" "\n" "<!-- Main Part of the page -->\n" +"<table border='0' cellpadding='0' cellspacing='0' align='center' bgcolor='#000000' width='100%'><tr><td>\n" +"<table border='0' cellpadding='5' cellspacing='1' width='100%'>\n" +"<tr>\n" +" <td bgcolor='#CCCCCC'>\n" +" <h4>This is Unofficial Version</h4>\n" +"<tr>\n" +" <td bgcolor='#FFFFFF'>\n" +" <table border='0' cellspacing='0' cellpadding='5'><tr><td>\n" +" This is Unofficial Version.<br>\n" +" <font color='RED'>Please do not ask the dillo team for help.</font><br>\n" +" Report problems to Kiyo&lt;webmaster@teki.jpn.ph&gt;.<br>\n" +" Latest version can be downloaded from \n" +" <a href=\"http://teki.jpn.ph/pc/software/index-e.shtml\">http://teki.jpn.ph/pc/software/index-e.shtml</a>\n" +" </table>\n" +"</table>\n" +"</table>\n" +"\n" +"<br>\n" "\n" "<table border='0' cellpadding='0' cellspacing='0' align='center' bgcolor='#000000' width='100%'><tr><td>\n" "<table border='0' cellpadding='5' cellspacing='1' width='100%'>\n" @@ -393,7 +415,7 @@ static char *Splash= /* * Send the splash screen through the IO using a pipe. */ -static gint About_send_splash(ChainLink *Info, DilloUrl *Url) +static gint About_send_page(ChainLink *Info, DilloUrl *Url, char *Data) { gint SplashPipe[2]; IOData_t *io1; @@ -409,7 +431,7 @@ static gint About_send_splash(ChainLink /* send splash */ io1 = a_IO_new(IOWrite, SpInfo->FD_Write); - a_IO_set_buf(io1, Splash, strlen(Splash)); + a_IO_set_buf(io1, Data, strlen(Data)); io1->Flags |= (IOFlag_ForceClose + IOFlag_SingleWrite); a_Chain_link_new(Info, a_About_ccc, BCK, a_IO_ccc, 1, 1); a_Chain_bcb(OpStart, Info, io1, NULL); @@ -439,7 +461,11 @@ static gint About_get(ChainLink *Info, v tail = URL_PATH(Url); if (!strcmp(tail, "splash")) { - return About_send_splash(Info, Url); + return About_send_page(Info, Url, _(Splash)); + } + + if (!strcmp(tail, "blank")) { + return About_send_page(Info, Url, Blank); } if (!strcmp(tail, "jwz")) @@ -458,7 +484,7 @@ static gint About_get(ChainLink *Info, v loc = "http://www.google.com/"; LocUrl = a_Url_new(loc, NULL, 0, 0, 0); - a_Nav_push(web->bw, LocUrl); + a_Nav_push(web->dd, LocUrl); a_Url_free(LocUrl); return -1; } diff -pruN dillo-0.8.6/src/IO/dpi.c dillo-0.8.6-i18n-misc-20060709/src/IO/dpi.c --- dillo-0.8.6/src/IO/dpi.c 2006-03-16 00:50:04.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/IO/dpi.c 2006-05-16 01:21:09.000000000 +0900 @@ -19,6 +19,7 @@ */ +#include <config.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> @@ -35,6 +36,7 @@ #include <arpa/inet.h> #include <netdb.h> +#include "../intl.h" #include "../msg.h" #include "IO.h" #include "Url.h" @@ -171,9 +173,9 @@ static gint Dpi_get_token(conn_data_t *c /* search for start of tag */ /* gchar *pbuf=NULL; -MSG("conn->BufIdx = %d; conn->BufSize = %d\n", conn->BufIdx,conn->BufSize); +MSG(_("conn->BufIdx = %d; conn->BufSize = %d\n"), conn->BufIdx,conn->BufSize); pbuf = g_strndup(buf, conn->BufSize - conn->BufIdx); -MSG("buf: [%s]\n", pbuf); +MSG(_("buf: [%s]\n"), pbuf); g_free(pbuf); */ while (conn->BufIdx < conn->BufSize && buf[conn->BufIdx] != '<') @@ -183,7 +185,7 @@ g_free(pbuf); conn->InTag = 1; conn->TokIdx = conn->BufIdx; } else { - MSG("ERROR: [Dpi_get_token] Can't find token start\n"); + MSG(_("ERROR: [Dpi_get_token] Can't find token start\n")); conn->FreeBuf = 1; return Dpi_get_token(conn); } @@ -216,7 +218,7 @@ g_free(pbuf); resp = 0; } else { /* srch end of data */ - MSG("ERROR: [Dpi_get_token] *** NULL code here ***\n"); + MSG(_("ERROR: [Dpi_get_token] *** NULL code here ***\n")); while (conn->BufIdx < conn->BufSize) ++conn->BufIdx; resp = -1; @@ -243,7 +245,7 @@ static void Dpi_parse_token(conn_data_t } tag = g_strndup(conn->Buf + conn->TokIdx, (guint)conn->TokSize); - MSG("Dpi_parse_token: {%s}\n", tag); + _MSG("Dpi_parse_token: {%s}\n", tag); cmd = a_Dpip_get_attr(conn->Buf + conn->TokIdx, conn->TokSize, "cmd"); if (strcmp(cmd, "send_status_message") == 0) { @@ -307,7 +309,7 @@ static void Dpi_process_io(int Op, void } } else if (Op == IOClose) { - MSG("Dpi: [Dpi_process_io] IOClose\n"); + DEBUG_MSG(3, _("Dpi: [Dpi_process_io] IOClose\n")); } } @@ -333,7 +335,7 @@ static gint Dpi_start_dpid(void) if (execl(path1, "dpid", NULL) == -1) { g_free(path1); if (execlp("dpid", "dpid", NULL) == -1) { - DEBUG_MSG(4, "Dpi_start_dpid (child): %s\n", g_strerror(errno)); + DEBUG_MSG(4, _("Dpi_start_dpid (child): %s\n"), g_strerror(errno)); do n = write(st_pipe[1], "ERROR", 5); while (n == -1 && errno == EINTR); @@ -343,7 +345,7 @@ static gint Dpi_start_dpid(void) } } else if (pid < 0) { /* The fork failed. Report failure. */ - DEBUG_MSG(4, "Dpi_start_dpid: %s\n", g_strerror(errno)); + DEBUG_MSG(4, _("Dpi_start_dpid: %s\n"), g_strerror(errno)); /* close the unused pipe */ Dpi_close_fd(st_pipe[0]); Dpi_close_fd(st_pipe[1]); @@ -354,11 +356,11 @@ static gint Dpi_start_dpid(void) do n = read(st_pipe[0], buf, 16); while (n == -1 && errno == EINTR); - DEBUG_MSG(2, "Dpi_start_dpid: n = %d\n", n); + DEBUG_MSG(2, _("Dpi_start_dpid: n = %d\n"), n); if (n != 5) ret = 0; else - DEBUG_MSG(4, "Dpi_start_dpid: %s\n", g_strerror(errno)); + DEBUG_MSG(4, _("Dpi_start_dpid: %s\n"), g_strerror(errno)); } return ret; @@ -381,7 +383,7 @@ static gint Dpi_check_uds(gchar *uds_nam if ((SockFD = socket(AF_LOCAL, SOCK_STREAM, 0)) == -1 || connect(SockFD, (void*)&pun, D_SUN_LEN(&pun)) == -1) { - DEBUG_MSG(4, "Dpi_check_uds: %s %s\n", g_strerror(errno), uds_name); + DEBUG_MSG(4, _("Dpi_check_uds: %1$s %2$s\n"), g_strerror(errno), uds_name); } else { Dpi_close_fd(SockFD); ret = 0; @@ -668,7 +670,7 @@ void a_Dpi_ccc(int Op, int Branch, int D else if (st == 1) a_Chain_fcb(OpSend, Info, NULL, (void*)"DpidEAGAIN"); else { - DEBUG_MSG(4, "dpi.c: ERROR, can't start dpi daemon\n"); + DEBUG_MSG(4, _("dpi.c: ERROR, can't start dpi daemon\n")); a_Dpi_ccc(OpAbort, 2, FWD, Info, "ERR_dpid", NULL); } break; @@ -681,7 +683,7 @@ void a_Dpi_ccc(int Op, int Branch, int D g_free(Info); break; case OpAbort: - MSG("a_Dpi_ccc: OpAbort[2B], Not implemented\n"); + MSG(_("a_Dpi_ccc: OpAbort[2B], Not implemented\n")); g_free(Info->LocalKey); g_free(Info); break; @@ -715,7 +717,7 @@ void a_Dpi_ccc(int Op, int Branch, int D a_Chain_fcb(OpEnd, Info, NULL, NULL); break; case OpAbort: - MSG(" Not implemented\n"); + MSG(_(" Not implemented\n")); break; } } else { /* BCK */ @@ -755,7 +757,7 @@ void a_Dpi_ccc(int Op, int Branch, int D } break; case OpAbort: - MSG(" Not implemented\n"); + MSG(_(" Not implemented\n")); break; } } @@ -785,11 +787,11 @@ void a_Dpi_bye_dpid() sa.sun_family = AF_LOCAL; if ((new_socket = socket(AF_LOCAL, SOCK_STREAM, 0)) == -1) { - DEBUG_MSG(4, "a_Dpi_bye_dpid: %s\n", g_strerror(errno)); + DEBUG_MSG(4, _("a_Dpi_bye_dpid: %s\n"), g_strerror(errno)); } strncpy(sa.sun_path, srs_name, sizeof (sa.sun_path)); if (connect(new_socket, (struct sockaddr *) &sa, addr_len) == -1) { - DEBUG_MSG(4, "a_Dpi_bye_dpid: %s\n", g_strerror(errno)); + DEBUG_MSG(4, _("a_Dpi_bye_dpid: %s\n"), g_strerror(errno)); fprintf(stderr, "%s\n", sa.sun_path); } DpiBye_cmd = a_Dpip_build_cmd("cmd=%s", "DpiBye"); diff -pruN dillo-0.8.6/src/IO/http.c dillo-0.8.6-i18n-misc-20060709/src/IO/http.c --- dillo-0.8.6/src/IO/http.c 2005-10-28 01:20:22.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/IO/http.c 2006-06-19 03:03:03.000000000 +0900 @@ -27,8 +27,10 @@ #include <netinet/in.h> /* for ntohl and stuff */ #include <arpa/inet.h> /* for inet_ntop */ +#include "../intl.h" #include "IO.h" #include "Url.h" +#include "../i18n.h" #include "../klist.h" #include "../dns.h" #include "../cache.h" @@ -36,13 +38,15 @@ #include "../interface.h" #include "../cookies.h" #include "../prefs.h" +#include "../auth.h" + #include "../misc.h" /* Used to send a message to the bw's status bar */ #define BW_MSG(web, root, fmt...) \ G_STMT_START { \ if (a_Web_valid((web)) && (!(root) || (web)->flags & WEB_RootUrl)) \ - a_Interface_msg((web)->bw, fmt); \ + a_Interface_msg((web)->dd->bw, fmt); \ } G_STMT_END #define DEBUG_LEVEL 5 @@ -72,6 +76,7 @@ static Klist_t *ValidSocks = NULL; /* Ac * SocketData_t structures. */ static DilloUrl *HTTP_Proxy = NULL; + static gchar *HTTP_Proxy_Auth_base64 = NULL; /* @@ -153,8 +158,10 @@ gchar *a_Http_make_query_str(const Dillo gchar *str, *ptr, *cookies; GString *s_port = g_string_new(""), *query = g_string_new(""), + *referer = g_string_new(""), *full_path = g_string_new(""), - *proxy_auth = g_string_new(""); + *proxy_auth = g_string_new(""), + *auth = g_string_new(""); /* Sending the default port in the query may cause a 302-answer. --Jcid */ if (URL_PORT(url) && URL_PORT(url) != DILLO_URL_HTTP_PORT) @@ -177,6 +184,16 @@ gchar *a_Http_make_query_str(const Dillo (URL_PATH_(url) || URL_QUERY_(url)) ? "" : "/"); } + if (prefs.send_referer && url->referer) { + g_string_sprintfa(referer, "Referer: %s\r\n", url->referer); + } + DEBUG_MSG(4,_("Getting %1$s, referer %2$s\n"), URL_STR(url), referer->str); + + if (a_Auth_byurl((DilloUrl *) url)) { + g_string_sprintfa(auth, "Authorization: %s\r\n", + a_Auth_byurl((DilloUrl *) url)->str); + } + cookies = a_Cookies_get(url); if ( URL_FLAGS(url) & URL_Post ){ g_string_sprintfa( @@ -184,16 +201,22 @@ gchar *a_Http_make_query_str(const Dillo "POST %s HTTP/1.0\r\n" "Host: %s%s\r\n" "%s" - "User-Agent: Dillo/%s\r\n" + "User-Agent: %s\r\n" "Cookie2: $Version=\"1\"\r\n" "%s" + "%s" "Content-type: application/x-www-form-urlencoded\r\n" "Content-length: %ld\r\n" + "%s" "\r\n" "%s", - full_path->str, URL_HOST(url), s_port->str, - proxy_auth->str, VERSION, cookies, + full_path->str, + URL_HOST(url), s_port->str, proxy_auth->str, + (prefs.user_agent)? prefs.user_agent : "Dillo/" VERSION, + cookies, + auth->str, (glong)strlen(URL_DATA(url)), + referer->str, URL_DATA(url)); } else { @@ -203,26 +226,37 @@ gchar *a_Http_make_query_str(const Dillo "%s" "Host: %s%s\r\n" "%s" - "User-Agent: Dillo/%s\r\n" + "User-Agent: %s\r\n" + "Accept-Language: %s\r\n" + "Accept-Encoding:gzip\r\n" + "Accept-Charset:utf-8,%s\r\n" + "%s" "Cookie2: $Version=\"1\"\r\n" "%s" + "%s" "\r\n", full_path->str, (URL_FLAGS(url) & URL_E2EReload) ? "Cache-Control: no-cache\r\nPragma: no-cache\r\n" : "", URL_HOST(url), s_port->str, proxy_auth->str, - VERSION, - cookies); + (prefs.user_agent)? prefs.user_agent : "Dillo/" VERSION, + prefs.accept_language, + DW_CHARSET, + referer->str, + cookies, + auth->str + ); } g_free(cookies); str = query->str; g_string_free(query, FALSE); g_string_free(s_port, TRUE); + g_string_free(referer, TRUE); g_string_free(full_path, TRUE); g_string_free(proxy_auth, TRUE); - DEBUG_MSG(4, "Query:\n%s", str); + DEBUG_MSG(4, _("Query:\n%s"), str); return str; } @@ -237,6 +271,7 @@ static gboolean ChainLink *Info; SocketData_t *S; gint SKey = GPOINTER_TO_INT(data); + gchar *msg_enc; DEBUG_MSG(3, "Http_use_socket: %s [errno %d] [GIOcond %d]\n", g_strerror(errno), errno, cond); @@ -248,25 +283,30 @@ static gboolean Info = S->Info; if ( cond & G_IO_HUP ) { - DEBUG_MSG(3, "--Connection broken\n"); + DEBUG_MSG(3, _("--Connection broken\n")); /* get rid of S->GioCh */ g_io_channel_close(S->GioCh); g_io_channel_unref(S->GioCh); S->GioCh = NULL; S->addr_list_iter = S->addr_list_iter->next; if (!S->addr_list_iter || Http_connect_socket(Info) < 0) { - BW_MSG(S->web, 0, "ERROR: unable to connect to remote host"); + msg_enc = a_I18n_locale_to_DILLO_CHARSET( + _("ERROR: unable to connect to remote host")); + BW_MSG(S->web, 0, msg_enc); + g_free(msg_enc); Http_socket_free(SKey); a_Chain_fcb(OpAbort, Info, NULL, NULL); } } else if ( S->Err ) { - BW_MSG(S->web, 0, "ERROR: %s", g_strerror(S->Err)); + msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("ERROR: %s")); + BW_MSG(S->web, 0, msg_enc, g_strerror(S->Err)); + g_free(msg_enc); DEBUG_MSG(3, "Http_use_socket ERROR: %s\n", g_strerror(S->Err)); a_Chain_fcb(OpAbort, Info, NULL, NULL); g_io_channel_close(S->GioCh); Http_socket_free(SKey); } else if ( cond & G_IO_OUT ) { - DEBUG_MSG(3, "--Connection established\n"); + DEBUG_MSG(3, _("--Connection established\n")); g_io_channel_unref(S->GioCh); S->GioCh = NULL; Http_send_query(Info, S); @@ -291,6 +331,7 @@ static int Http_connect_socket(ChainLink SocketData_t *S; DilloHost *dh; socklen_t socket_len = 0; + gchar *msg_enc; S = a_Klist_get_data(ValidSocks, GPOINTER_TO_INT(Info->LocalKey)); @@ -298,7 +339,7 @@ static int Http_connect_socket(ChainLink if ( (S->SockFD = socket(dh->af, SOCK_STREAM, IPPROTO_TCP)) < 0 ) { S->Err = errno; - DEBUG_MSG(5, "Http_connect_socket ERROR: %s\n", g_strerror(errno)); + DEBUG_MSG(5, _("Http_connect_socket ERROR: %s\n"), g_strerror(errno)); return -1; } /* set NONBLOCKING and close on exec. */ @@ -319,7 +360,7 @@ static int Http_connect_socket(ChainLink sin->sin_port = S->port ? htons(S->port) : htons(DILLO_URL_HTTP_PORT); memcpy(&sin->sin_addr, dh->data, (size_t)dh->alen); if (a_Web_valid(S->web) && (S->web->flags & WEB_RootUrl)) - DEBUG_MSG(5, "Connecting to %s\n", inet_ntoa(sin->sin_addr)); + DEBUG_MSG(4, _("Connecting to %s\n"), inet_ntoa(sin->sin_addr)); break; } #ifdef ENABLE_IPV6 @@ -333,7 +374,7 @@ static int Http_connect_socket(ChainLink memcpy(&sin6->sin6_addr, dh->data, dh->alen); inet_ntop(dh->af, dh->data, buf, sizeof(buf)); if (a_Web_valid(S->web) && (S->web->flags & WEB_RootUrl)) - DEBUG_MSG(5, "Connecting to %s\n", buf); + DEBUG_MSG(5, _("Connecting to %s\n"), buf); break; } #endif @@ -351,8 +392,10 @@ static int Http_connect_socket(ChainLink S->Err = errno; return -1; } - - BW_MSG(S->web, 1, "Contacting host..."); + + msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("Contacting host...")); + BW_MSG(S->web, 1, msg_enc); + g_free(msg_enc); return 0; /* Success */ } @@ -364,14 +407,16 @@ static int Http_connect_socket(ChainLink static void Http_send_query(ChainLink *Info, SocketData_t *S) { IOData_t *io; - gchar *query; + gchar *query, *msg_enc; void *link; /* Create the query */ query = a_Http_make_query_str(S->Url, S->use_proxy); /* send query */ - BW_MSG(S->web, 1, "Sending query to %s...", URL_HOST_(S->Url)); + msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("Sending query to %s...")); + BW_MSG(S->web, 1, msg_enc, URL_HOST_(S->Url)); + g_free(msg_enc); io = a_IO_new(IOWrite, S->SockFD); a_IO_set_buf(io, query, strlen(query)); io->Flags |= IOFlag_FreeIOBuf; @@ -414,7 +459,7 @@ static gint Http_get(ChainLink *Info, vo void *link; const DilloUrl *Url = Data1; SocketData_t *S; - gchar *hostname; + gchar *hostname, *msg_enc; S = a_Klist_get_data(ValidSocks, GPOINTER_TO_INT(Info->LocalKey)); @@ -438,7 +483,9 @@ static gint Http_get(ChainLink *Info, vo S->Url = Url; /* Let the user know what we'll do */ - BW_MSG(S->web, 1, "DNS solving %s", URL_HOST_(S->Url)); + msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("DNS solving %s")); + BW_MSG(S->web, 1, msg_enc, URL_HOST_(S->Url)); + g_free(msg_enc); /* Let the DNS engine solve the hostname, and when done, * we'll try to connect the socket */ @@ -457,6 +504,7 @@ void a_Http_ccc(int Op, int Branch, int { gint SKey = GPOINTER_TO_INT(Info->LocalKey); SocketData_t *S = a_Klist_get_data(ValidSocks, SKey); + gchar *msg_enc; a_Chain_debug_msg("a_Http_ccc", Op, Branch, Dir); @@ -469,14 +517,16 @@ void a_Http_ccc(int Op, int Branch, int Info->LocalKey = GINT_TO_POINTER(SKey); if (Http_get(Info, Data1, Data2) < 0) { S = a_Klist_get_data(ValidSocks, SKey); - BW_MSG(S->web, 1, "ERROR: %s", g_strerror(S->Err)); + msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("ERROR: %s")); + BW_MSG(S->web, 1, msg_enc, g_strerror(S->Err)); + g_free(msg_enc); Http_socket_free(SKey); a_Chain_fcb(OpAbort, Info, NULL, NULL); } break; case OpAbort: /* something bad happened... */ - DEBUG_MSG(2, "Http: OpAbort [1B]\n"); + DEBUG_MSG(2, _("Http: OpAbort [1B]\n")); Http_socket_free(SKey); a_Chain_bcb(OpAbort, Info, NULL, NULL); g_free(Info); @@ -498,7 +548,9 @@ void a_Http_ccc(int Op, int Branch, int a_Chain_del_link(Info, BCK); /* start connecting the socket */ if (Http_connect_socket(Info) < 0) { - BW_MSG(S->web, 1, "ERROR: %s", g_strerror(S->Err)); + msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("ERROR: %s")); + BW_MSG(S->web, 1, msg_enc, g_strerror(S->Err)); + g_free(msg_enc); Http_socket_free(SKey); a_Chain_fcb(OpAbort, Info, NULL, NULL); } @@ -509,8 +561,10 @@ void a_Http_ccc(int Op, int Branch, int if (S) { /* Unlink DNS_Info */ a_Chain_del_link(Info, BCK); - BW_MSG(S->web, 0, "ERROR: Dns can't solve %s", + msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("ERROR: Dns can't solve %s")); + BW_MSG(S->web, 0, msg_enc, (S->use_proxy) ? URL_HOST_(HTTP_Proxy) : URL_HOST_(S->Url)); + g_free(msg_enc); Http_socket_free(SKey); /* send abort message to higher-level functions */ a_Chain_fcb(OpAbort, Info, NULL, NULL); @@ -534,7 +588,9 @@ void a_Http_ccc(int Op, int Branch, int if (S) { a_Chain_del_link(Info, BCK); a_Chain_fcb(OpEnd, Info, &S->SockFD, (void *)S->Url); - BW_MSG(S->web, 1, "Query sent, waiting for reply..."); + msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("Query sent, waiting for reply...")); + BW_MSG(S->web, 1, msg_enc); + g_free(msg_enc); Http_socket_free(SKey); } break; @@ -560,6 +616,7 @@ void a_Http_ccc(int Op, int Branch, int */ void a_Http_freeall(void) { + a_Auth_freeall(); a_Klist_free(&ValidSocks); a_Url_free(HTTP_Proxy); g_free(HTTP_Proxy_Auth_base64); diff -pruN dillo-0.8.6/src/IO/https.c dillo-0.8.6-i18n-misc-20060709/src/IO/https.c --- dillo-0.8.6/src/IO/https.c 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/IO/https.c 2006-05-16 01:21:09.000000000 +0900 @@ -0,0 +1,466 @@ +/* + * File: https.c + * + * Copyright (C) 2000, 2001 Jorge Arellano Cid <jcid@inf.utfsm.cl> + * Copyright (C) 2002 Jonathan P Springer <jonathan.springer@verizon.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., 59 + * Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * In addition, as a special exception, Jorge Arellano Cid and Jonathan + * Springer give permission to link the code of this program with the OpenSSL + * library (or modified versions of OpenSSL that use the same license as + * OpenSSL), and distribute linked combinations including the two. You must + * obey the GNU General Public License in all respects for all of the code + * used other than OpenSSL. If you modify this file, you may extend this + * exception to your version of the file, but you are not obligated to do so. + * If you do not wish to do so, delete this exception from your version. + * + */ + +/* + * This program exploits code originally published under the OpenSSL demos/bio + * directory. I am uncertain as to the copyright status of this code, as no + * notice was included. If you own the copyright on this code and object to + * its use in this GPL program, please contact me. -- JPS + */ + +/* + * HTTPS connect functions + */ + +#include <config.h> + +#ifdef DILLO_SSL + +#include <unistd.h> +#include <errno.h> /* for errno */ +#include <string.h> /* for strstr */ +#include <stdlib.h> +#include <signal.h> +#include <fcntl.h> +#include <sys/wait.h> +#include <sys/socket.h> /* for lots of socket stuff */ +#include <netinet/in.h> /* for ntohl and stuff */ +#include <openssl/ssl.h> +#include <openssl/err.h> + +#include <glib.h> + +#include "../intl.h" +#include "../i18n.h" +#include "Url.h" +#include "DBIO.h" +#include "../klist.h" +#include "../dns.h" +#include "../cache.h" +#include "../web.h" +#include "../interface.h" +extern char *Http_query(const DilloUrl *url, gboolean use_proxy); + + +/* Used to send a message to the bw's status bar */ +#define BW_MSG(web, root, fmt...) \ + (a_Web_valid(web) && (!(root) || (web)->flags & WEB_RootUrl)) ? \ + a_Interface_msg((web)->dd->bw, fmt) : (root) + +#define DEBUG_LEVEL 5 +#include "../debug.h" + + +/* 'Url' and 'web' are just references (no need to deallocate them here). */ +typedef struct { + BIO* bio; + SSL* ssl; + const DilloUrl *Url; /* reference to original URL */ + DilloWeb *web; /* reference to client's web structure */ + guint32 ip_addr; /* Holds the DNS answer */ + gint Err; /* Holds the errno of the connect() call */ + ChainLink *Info; /* Used for CCC asynchronous operations */ +} SSLData_t; + + +/* + * Local data + */ +static Klist_t *ValidSSLs = NULL; /* Active sockets list. It holds pointers to + * SSLData_t structures. */ + +static gboolean Https_init = FALSE; + +static SSL_CTX* ssl_ctx; + +/* + * Forward declarations + */ +static void Https_send_query(ChainLink *Info, SSLData_t *S); +static void Https_expect_answer(SSLData_t *S); + +/* + * If it hasn't been initialized already, initialize + * the SSL-specific stuff. + */ +void Https_SSL_init(void) +{ + if (!Https_init) { + SSL_load_error_strings(); + OpenSSL_add_ssl_algorithms(); + ssl_ctx = SSL_CTX_new(SSLv23_client_method()); + Https_init = TRUE; + } +} + +/* + * Create and init a new SSLData_t struct, insert into ValidSSLs, + * and return a primary key for it. + */ +gint Https_SSL_new(void) +{ + SSLData_t *S = g_new0(SSLData_t, 1); + return a_Klist_insert(&ValidSSLs, (gpointer)S); +} + +/* + * Free SSLData_t struct + */ +void Https_SSL_free(gint SKey) +{ + SSLData_t *S; + + if ((S = a_Klist_get_data(ValidSSLs, SKey))) { + a_Klist_remove(ValidSSLs, SKey); + if (S->bio) BIO_free_all(S->bio); + g_free(S); + } +} + +/* + * This function is called after the socket has been successfuly connected, + * or upon an error condition on the connecting process. + * Task: use the socket to send the HTTP-query and expect its answer + */ +static gboolean Https_Callback_Use(gpointer data) +{ + ChainLink *Info; + SSLData_t *S; + gint SKey = (gint) data; + gchar *msg_enc; + + DEBUG_MSG(3, "Https_Callback_Use\n"); + + /* This check is required because glib may asynchronously + * call this function with data that's no longer used --Jcid */ + if ( !(S = a_Klist_get_data(ValidSSLs, SKey)) ) return FALSE; + + Info = S->Info; + if ( S->Err ) { + DEBUG_MSG(3, _("--Error detected\n")); + DEBUG_MSG(3, "%d:%s:%s:%s\n", S->Err, + ERR_lib_error_string(S->Err), + ERR_func_error_string(S->Err), + ERR_reason_error_string(S->Err)); + msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("ERROR: unable to connect to remote host")); + BW_MSG(S->web, 0, msg_enc); + g_free(msg_enc); + a_Chain_fcb(OpAbort, Info, NULL, NULL); + Https_SSL_free(SKey); + } else { + DEBUG_MSG(3, _("--Connection established\n")); + Https_send_query(Info, S); + Https_expect_answer(S); + } + return FALSE; +} + +gboolean Https_Callback_Connect(gpointer data) { + + gint SKey = (gint) data; + SSLData_t *S; + gchar *msg_enc; + + /* This check is required because glib may asynchronously + * call this function with data that's no longer used --Jcid */ + if ( !(S = a_Klist_get_data(ValidSSLs, SKey)) ) return FALSE; + + S->Err = 0; + if (BIO_do_connect(S->bio) != 1) { + if (BIO_should_retry(S->bio)) return TRUE; + S->Err = ERR_get_error(); + DEBUG_MSG(3, "%d:%s:%s:%s\n", S->Err, + ERR_lib_error_string(S->Err), + ERR_func_error_string(S->Err), + ERR_reason_error_string(S->Err)); + msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("ERROR: unable to connect to remote host")); + BW_MSG(S->web, 0, msg_enc); + g_free(msg_enc); + return FALSE; + } + g_idle_add(Https_Callback_Use, data); + return FALSE; +} + +/* + * This function gets called after the DNS succeeds solving a hostname. + * Task: Finish socket setup and start connecting the socket. + * Return value: 0 on success; -1 on error. +*/ +static int Https_connect_SSL(ChainLink *Info) +{ + SSLData_t *S = a_Klist_get_data(ValidSSLs, (gint)Info->LocalKey); + + BIO *ssl_bio; + union { + guint32 i; + guchar c[4]; + } U; + gchar *tmp_str; + int port = DILLO_URL_HTTPS_PORT; + + /* TODO - Better error checking */ + + /* Initialize some SSL stuff if this is our first connection */ + Https_SSL_init(); + + /* Create an SSL structure */ + S->ssl = SSL_new(ssl_ctx); + SSL_set_connect_state(S->ssl); + + /* Create a BIO structure */ + ssl_bio = BIO_new(BIO_f_ssl()); + BIO_set_ssl(ssl_bio, S->ssl, BIO_CLOSE); + + /* Create and configure the connection BIO */ + S->bio = BIO_new(BIO_s_connect()); + +#if 0 + U.i = htonl(S->ip_addr); +#else + U.i = S->ip_addr; /* should already be in the right order */ +#endif + tmp_str = g_strdup_printf("%u.%u.%u.%u", U.c[0], U.c[1], U.c[2], U.c[3]); + BIO_set_conn_hostname(S->bio, tmp_str); + g_free(tmp_str); + BIO_set_conn_int_port(S->bio, &port); + + BIO_set_nbio(S->bio, 1); /* non-blocking ON */ + + /* Chain the socket & SSL BIOs together */ + S->bio = BIO_push(ssl_bio, S->bio); /* chain this with the SSL BIO */ + + /* And set up a looping idle event to connect it... */ + g_idle_add(Https_Callback_Connect, (gpointer) Info->LocalKey); + + return 0; /* Success */ +} + +/* + * Create and submit the HTTP query to the IO engine + */ +static void Https_send_query(ChainLink *Info, SSLData_t *S) +{ + IOData_t *io; + gchar *query, *msg_enc; + void *link; + + /* Create the query */ + query = a_Http_make_query_str(S->Url, FALSE); + + /* send query */ + msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("Sending query to %s...")); + BW_MSG(S->web, 1, msg_enc, URL_HOST(S->Url)); + g_free(msg_enc); + io = a_DBIO_new(S->bio); + io->Op = IOWrite; + a_IO_set_buf(io, query, strlen(query)); + io->Flags |= IOFlag_FreeIOBuf; + io->ExtData = NULL; + link = a_Chain_link_new(Info, a_Https_ccc, BCK, a_DBIO_ccc,2,2); + a_DBIO_ccc(OpStart, 1,0, link, io, NULL); +} + +/* + * Expect the HTTP query's answer + */ +static void Https_expect_answer(SSLData_t *S) +{ + IOData_t *io2; + + /* receive answer */ + io2 = a_DBIO_new(S->bio); + io2->Op = IORead; + a_IO_set_buf(io2,g_malloc(IOBufLen_Http),IOBufLen_Http); + io2->Flags |= IOFlag_FreeIOBuf; + io2->ExtData = (void *) S->Url; + a_DBIO_ccc(OpStart, 2, 0,a_Chain_new(), io2, NULL); +} + +/* + * Asynchronously create a new http connection for 'Url' + * We'll set some socket parameters; the rest will be set later + * when the IP is known. + * ( Data = Requested Url; ExtraData = Web structure ) + * Return value: 0 on success, -1 otherwise + */ +gint Https_get(ChainLink *Info, void *Data1, void *Data2) +{ + void *link; + const DilloUrl *Url = Data1; + SSLData_t *S = a_Klist_get_data(ValidSSLs, (gint)Info->LocalKey); + gchar hostname[256], *Host = hostname, *msg_enc; + + /* Reference Info data */ + S->Info = Info; + /* Reference Web data */ + S->web = Data2; + + Host = (gchar *)URL_HOST(Url); + + /* Set more socket parameters */ + S->Url = Url; + + /* Let the user know what we'll do */ + msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("DNS solving %s")); + BW_MSG(S->web, 1, msg_enc, URL_HOST(S->Url)); + g_free(msg_enc); + + /* Let the DNS engine solve the hostname, and when done, + * we'll try to connect the socket */ + link = a_Chain_link_new(Info, a_Https_ccc, BCK, a_Dns_ccc, 1, 1); + a_Chain_bcb(OpStart,Info, Host,NULL); + + return 0; +} + +/* + * CCC function for the HTTP module + */ +void +a_Https_ccc(int Op, int Branch, int Dir, ChainLink *Info, + void *Data1, void *Data2) +{ + gint SKey = (gint)Info->LocalKey; + SSLData_t *S = a_Klist_get_data(ValidSSLs, SKey); + gchar *msg_enc; + + if ( Branch == 1 ) { + /* DNS query branch */ + switch (Op) { + case OpStart: + SKey = Https_SSL_new(); + Info->LocalKey = (void *) SKey; + if (Https_get(Info, Data1, Data2) < 0) { + DEBUG_MSG(2, _(" HTTPS: new abort handler! #2\n")); + S = a_Klist_get_data(ValidSSLs, SKey); + msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("ERROR: %s")); + BW_MSG(S->web, 1, msg_enc, g_strerror(S->Err)); + g_free(msg_enc); + Https_SSL_free(SKey); + a_Chain_fcb(OpAbort, Info, NULL, NULL); + } + break; + case OpSend: + /* Successful DNS answer; save the IP */ + if (S) + { + DilloHost *dh=(DilloHost *)(((GSList *)Data1)->data); + S->ip_addr = *(int *)dh->data; + } + break; + case OpEnd: + if (S) { + /* Unlink DNS_Info */ + a_Chain_del_link(Info, BCK); + /* start connecting the socket */ + if (Https_connect_SSL(Info) < 0) { + DEBUG_MSG(2, _(" HTTP: new abort handler! #1\n")); + msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("ERROR: %s")); + BW_MSG(S->web, 1, msg_enc, g_strerror(S->Err)); + g_free(msg_enc); + Https_SSL_free(SKey); + a_Chain_fcb(OpAbort, Info, NULL, NULL); + } + } + break; + case OpAbort: + /* DNS wasn't able to resolve the hostname */ + if (S) { + /* Unlink DNS_Info */ + a_Chain_del_link(Info, BCK); + msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("ERROR: Dns can't solve %s")); + BW_MSG(S->web, 0, msg_enc, URL_HOST(S->Url)); + g_free(msg_enc); + BIO_free_all(S->bio); + Https_SSL_free(SKey); + /* send abort message to higher-level functions */ + a_Chain_fcb(OpAbort, Info, NULL, NULL); + } + break; + + } + + } else if ( Branch == 2 ) { + /* IO send-query branch */ + switch (Op) { + case OpStart: + /* LocalKey was set by branch 1 */ + break; + case OpEnd: + /* finished sending the HTTP query */ + if (S) { + msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("Query sent, waiting for reply...")); + BW_MSG(S->web, 1, msg_enc); + g_free(msg_enc); + a_Chain_del_link(Info, BCK); + a_Chain_fcb(OpEnd, Info, NULL, NULL); + } + break; + case OpAbort: + /* something bad happened... */ + /* unlink IO_Info */ + if (S) { + a_Chain_del_link(Info, BCK); + a_Chain_fcb(OpAbort, Info, NULL, NULL); + Https_SSL_free(SKey); + } + break; + } + + } else if ( Branch == -1 ) { + /* Backwards abort */ + switch (Op) { + case OpAbort: + /* something bad happened... */ + DEBUG_MSG(2, "Http: OpAbort [-1]\n"); + Https_SSL_free(SKey); + a_Chain_bcb(OpAbort, Info, NULL, NULL); + g_free(Info); + break; + } + } +} + + + +/* + * Deallocate memory used by http module + * (Call this one at exit time) + */ +void a_Https_freeall(void) +{ + if (ssl_ctx) SSL_CTX_free(ssl_ctx); + a_Klist_free(&ValidSSLs); +} + +#endif + diff -pruN dillo-0.8.6/src/IO/mime.c dillo-0.8.6-i18n-misc-20060709/src/IO/mime.c --- dillo-0.8.6/src/IO/mime.c 2006-03-30 03:30:01.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/IO/mime.c 2006-05-16 01:21:09.000000000 +0900 @@ -9,6 +9,8 @@ * (at your option) any later version. */ +#include <config.h> +#include "../intl.h" #include "mime.h" #include "../msg.h" #include "../list.h" diff -pruN dillo-0.8.6/src/Makefile.am dillo-0.8.6-i18n-misc-20060709/src/Makefile.am --- dillo-0.8.6/src/Makefile.am 2005-05-08 05:19:59.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/Makefile.am 2006-05-16 01:21:08.000000000 +0900 @@ -1,4 +1,4 @@ -AM_CPPFLAGS=-DDILLORC_SYS='"$(sysconfdir)/dillorc"' @LIBJPEG_CPPFLAGS@ +AM_CPPFLAGS=-DDILLORC_SYS='"$(sysconfdir)/dillorc"' @LIBJPEG_CPPFLAGS@ -DLOCALEDIR='"$(localedir)"' -D__NO_STRING_INLINES AM_CFLAGS = @GTK_CFLAGS@ @LIBPNG_CFLAGS@ SUBDIRS = IO @@ -11,17 +11,38 @@ dillo_LDFLAGS = @LIBJPEG_LDFLAGS@ @LIBPT dillo_SOURCES = \ msg.h \ acconfig.h \ - chain.h \ - chain.c \ - commands.c \ - commands.h \ + adblock.c \ + adblock.h \ + auth.c \ + auth.h \ + bitvec.c \ + bitvec.h \ + bookmark.c \ + bookmark.h \ + browser.h \ cache.c \ cache.h \ capi.c \ capi.h \ + chain.c \ + chain.h \ + colors.c \ + colors.h \ + commands.c \ + commands.h \ + cookies.c \ + cookies.h \ debug.h \ - dw.h \ + dicache.c \ + dicache.h \ + dillo.c \ + dillo.h \ + dns.c \ + dns.h \ + doc.c \ + doc.h \ dw.c \ + dw.h \ dw_aligned_page.c \ dw_aligned_page.h \ dw_bullet.c \ @@ -32,8 +53,8 @@ dillo_SOURCES = \ dw_container.h \ dw_embed_gtk.c \ dw_embed_gtk.h \ - dw_ext_iterator.h \ dw_ext_iterator.c \ + dw_ext_iterator.h \ dw_gtk_scrolled_frame.c \ dw_gtk_scrolled_frame.h \ dw_gtk_scrolled_window.c \ @@ -70,15 +91,6 @@ dillo_SOURCES = \ web.h \ progressbar.c \ progressbar.h \ - dillo.c \ - dillo.h \ - bookmark.c \ - bookmark.h \ - browser.h \ - dicache.c \ - dicache.h \ - dns.c \ - dns.h \ gtk_ext_button.c \ gtk_ext_button.h \ gtk_ext_menu.c \ @@ -107,22 +119,25 @@ dillo_SOURCES = \ menu.h \ prefs.c \ prefs.h \ - colors.c \ - colors.h \ - bitvec.c \ - bitvec.h \ klist.c \ klist.h \ strbuf.c \ strbuf.h \ url.c \ url.h \ - cookies.c \ - cookies.h \ list.h \ binaryconst.h \ pixmaps.h \ dpiapi.c \ - dpiapi.h + dpiapi.h \ + i18n.c \ + i18n.h \ + i18n_gtk.c \ + i18n_gtk.h \ + gtkframeset.c \ + gtkframeset.h \ + intl.h \ + tab.c \ + tab.h EXTRA_DIST = chg srch diff -pruN dillo-0.8.6/src/Makefile.in dillo-0.8.6-i18n-misc-20060709/src/Makefile.in --- dillo-0.8.6/src/Makefile.in 2006-04-27 01:07:25.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/Makefile.in 2006-05-16 01:21:08.000000000 +0900 @@ -1,8 +1,8 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.7.9 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -14,8 +14,6 @@ @SET_MAKE@ -SOURCES = $(dillo_SOURCES) - srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ @@ -23,6 +21,7 @@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 @@ -39,61 +38,6 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -bin_PROGRAMS = dillo$(EXEEXT) -subdir = src -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -am__installdirs = "$(DESTDIR)$(bindir)" -binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -PROGRAMS = $(bin_PROGRAMS) -am_dillo_OBJECTS = chain.$(OBJEXT) commands.$(OBJEXT) cache.$(OBJEXT) \ - capi.$(OBJEXT) dw.$(OBJEXT) dw_aligned_page.$(OBJEXT) \ - dw_bullet.$(OBJEXT) dw_button.$(OBJEXT) dw_container.$(OBJEXT) \ - dw_embed_gtk.$(OBJEXT) dw_ext_iterator.$(OBJEXT) \ - dw_gtk_scrolled_frame.$(OBJEXT) \ - dw_gtk_scrolled_window.$(OBJEXT) dw_gtk_statuslabel.$(OBJEXT) \ - dw_gtk_viewport.$(OBJEXT) dw_hruler.$(OBJEXT) \ - dw_image.$(OBJEXT) dw_list_item.$(OBJEXT) dw_marshal.$(OBJEXT) \ - dw_page.$(OBJEXT) dw_style.$(OBJEXT) dw_table.$(OBJEXT) \ - dw_table_cell.$(OBJEXT) dw_tooltip.$(OBJEXT) \ - dw_widget.$(OBJEXT) findtext.$(OBJEXT) selection.$(OBJEXT) \ - web.$(OBJEXT) progressbar.$(OBJEXT) dillo.$(OBJEXT) \ - bookmark.$(OBJEXT) dicache.$(OBJEXT) dns.$(OBJEXT) \ - gtk_ext_button.$(OBJEXT) gtk_ext_menu.$(OBJEXT) \ - gtk_ext_menu_item.$(OBJEXT) gtk_menu_title.$(OBJEXT) \ - gif.$(OBJEXT) jpeg.$(OBJEXT) png.$(OBJEXT) html.$(OBJEXT) \ - image.$(OBJEXT) misc.$(OBJEXT) interface.$(OBJEXT) \ - history.$(OBJEXT) nav.$(OBJEXT) plain.$(OBJEXT) menu.$(OBJEXT) \ - prefs.$(OBJEXT) colors.$(OBJEXT) bitvec.$(OBJEXT) \ - klist.$(OBJEXT) strbuf.$(OBJEXT) url.$(OBJEXT) \ - cookies.$(OBJEXT) dpiapi.$(OBJEXT) -dillo_OBJECTS = $(am_dillo_OBJECTS) -dillo_DEPENDENCIES = ../dpip/libDpip.a IO/libDio.a -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(dillo_SOURCES) -DIST_SOURCES = $(dillo_SOURCES) -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ @@ -123,6 +67,7 @@ EXEEXT = @EXEEXT@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_CONFIG = @GLIB_CONFIG@ GLIB_LIBS = @GLIB_LIBS@ +GMSGFMT = @GMSGFMT@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_CONFIG = @GTK_CONFIG@ GTK_LIBS = @GTK_LIBS@ @@ -130,9 +75,12 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ LDFLAGS = @LDFLAGS@ LIBFLTK_CXXFLAGS = @LIBFLTK_CXXFLAGS@ LIBFLTK_LIBS = @LIBFLTK_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ LIBJPEG_CPPFLAGS = @LIBJPEG_CPPFLAGS@ LIBJPEG_LDFLAGS = @LIBJPEG_LDFLAGS@ LIBJPEG_LIBS = @LIBJPEG_LIBS@ @@ -144,8 +92,13 @@ LIBPTHREAD_LIBS = @LIBPTHREAD_LIBS@ LIBS = @LIBS@ LIBSSL_LIBS = @LIBSSL_LIBS@ LIBZ_LIBS = @LIBZ_LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ @@ -154,11 +107,16 @@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +POSUB = @POSUB@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +USE_NLS = @USE_NLS@ VERSION = @VERSION@ +XFT_CONFIG = @XFT_CONFIG@ +XGETTEXT = @XGETTEXT@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_RANLIB = @ac_ct_RANLIB@ @@ -170,8 +128,6 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TR am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -190,9 +146,9 @@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ +localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ -mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ @@ -204,25 +160,51 @@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ -AM_CPPFLAGS = -DDILLORC_SYS='"$(sysconfdir)/dillorc"' @LIBJPEG_CPPFLAGS@ +AM_CPPFLAGS = -DDILLORC_SYS='"$(sysconfdir)/dillorc"' @LIBJPEG_CPPFLAGS@ -DLOCALEDIR='"$(localedir)"' -D__NO_STRING_INLINES AM_CFLAGS = @GTK_CFLAGS@ @LIBPNG_CFLAGS@ + SUBDIRS = IO + +bin_PROGRAMS = dillo + dillo_LDADD = ../dpip/libDpip.a IO/libDio.a @LIBJPEG_LIBS@ @LIBPNG_LIBS@ @GTK_LIBS@ @LIBZ_LIBS@ @LIBPTHREAD_LIBS@ dillo_LDFLAGS = @LIBJPEG_LDFLAGS@ @LIBPTHREAD_LDFLAGS@ + dillo_SOURCES = \ msg.h \ acconfig.h \ - chain.h \ - chain.c \ - commands.c \ - commands.h \ + adblock.c \ + adblock.h \ + auth.c \ + auth.h \ + bitvec.c \ + bitvec.h \ + bookmark.c \ + bookmark.h \ + browser.h \ cache.c \ cache.h \ capi.c \ capi.h \ + chain.c \ + chain.h \ + colors.c \ + colors.h \ + commands.c \ + commands.h \ + cookies.c \ + cookies.h \ debug.h \ - dw.h \ + dicache.c \ + dicache.h \ + dillo.c \ + dillo.h \ + dns.c \ + dns.h \ + doc.c \ + doc.h \ dw.c \ + dw.h \ dw_aligned_page.c \ dw_aligned_page.h \ dw_bullet.c \ @@ -233,8 +215,8 @@ dillo_SOURCES = \ dw_container.h \ dw_embed_gtk.c \ dw_embed_gtk.h \ - dw_ext_iterator.h \ dw_ext_iterator.c \ + dw_ext_iterator.h \ dw_gtk_scrolled_frame.c \ dw_gtk_scrolled_frame.h \ dw_gtk_scrolled_window.c \ @@ -271,15 +253,6 @@ dillo_SOURCES = \ web.h \ progressbar.c \ progressbar.h \ - dillo.c \ - dillo.h \ - bookmark.c \ - bookmark.h \ - browser.h \ - dicache.c \ - dicache.h \ - dns.c \ - dns.h \ gtk_ext_button.c \ gtk_ext_button.h \ gtk_ext_menu.c \ @@ -308,68 +281,140 @@ dillo_SOURCES = \ menu.h \ prefs.c \ prefs.h \ - colors.c \ - colors.h \ - bitvec.c \ - bitvec.h \ klist.c \ klist.h \ strbuf.c \ strbuf.h \ url.c \ url.h \ - cookies.c \ - cookies.h \ list.h \ binaryconst.h \ pixmaps.h \ dpiapi.c \ - dpiapi.h + dpiapi.h \ + i18n.c \ + i18n.h \ + i18n_gtk.c \ + i18n_gtk.h \ + gtkframeset.c \ + gtkframeset.h \ + intl.h \ + tab.c \ + tab.h + EXTRA_DIST = chg srch +subdir = src +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +bin_PROGRAMS = dillo$(EXEEXT) +PROGRAMS = $(bin_PROGRAMS) + +am_dillo_OBJECTS = adblock.$(OBJEXT) auth.$(OBJEXT) bitvec.$(OBJEXT) \ + bookmark.$(OBJEXT) cache.$(OBJEXT) capi.$(OBJEXT) \ + chain.$(OBJEXT) colors.$(OBJEXT) commands.$(OBJEXT) \ + cookies.$(OBJEXT) dicache.$(OBJEXT) dillo.$(OBJEXT) \ + dns.$(OBJEXT) doc.$(OBJEXT) dw.$(OBJEXT) \ + dw_aligned_page.$(OBJEXT) dw_bullet.$(OBJEXT) \ + dw_button.$(OBJEXT) dw_container.$(OBJEXT) \ + dw_embed_gtk.$(OBJEXT) dw_ext_iterator.$(OBJEXT) \ + dw_gtk_scrolled_frame.$(OBJEXT) \ + dw_gtk_scrolled_window.$(OBJEXT) dw_gtk_statuslabel.$(OBJEXT) \ + dw_gtk_viewport.$(OBJEXT) dw_hruler.$(OBJEXT) \ + dw_image.$(OBJEXT) dw_list_item.$(OBJEXT) dw_marshal.$(OBJEXT) \ + dw_page.$(OBJEXT) dw_style.$(OBJEXT) dw_table.$(OBJEXT) \ + dw_table_cell.$(OBJEXT) dw_tooltip.$(OBJEXT) \ + dw_widget.$(OBJEXT) findtext.$(OBJEXT) selection.$(OBJEXT) \ + web.$(OBJEXT) progressbar.$(OBJEXT) gtk_ext_button.$(OBJEXT) \ + gtk_ext_menu.$(OBJEXT) gtk_ext_menu_item.$(OBJEXT) \ + gtk_menu_title.$(OBJEXT) gif.$(OBJEXT) jpeg.$(OBJEXT) \ + png.$(OBJEXT) html.$(OBJEXT) image.$(OBJEXT) misc.$(OBJEXT) \ + interface.$(OBJEXT) history.$(OBJEXT) nav.$(OBJEXT) \ + plain.$(OBJEXT) menu.$(OBJEXT) prefs.$(OBJEXT) klist.$(OBJEXT) \ + strbuf.$(OBJEXT) url.$(OBJEXT) dpiapi.$(OBJEXT) i18n.$(OBJEXT) \ + i18n_gtk.$(OBJEXT) gtkframeset.$(OBJEXT) tab.$(OBJEXT) +dillo_OBJECTS = $(am_dillo_OBJECTS) +dillo_DEPENDENCIES = ../dpip/libDpip.a IO/libDio.a + +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/adblock.Po ./$(DEPDIR)/auth.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/bitvec.Po ./$(DEPDIR)/bookmark.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/cache.Po ./$(DEPDIR)/capi.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/chain.Po ./$(DEPDIR)/colors.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/commands.Po ./$(DEPDIR)/cookies.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dicache.Po ./$(DEPDIR)/dillo.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dns.Po ./$(DEPDIR)/doc.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dpiapi.Po ./$(DEPDIR)/dw.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dw_aligned_page.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dw_bullet.Po ./$(DEPDIR)/dw_button.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dw_container.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dw_embed_gtk.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dw_ext_iterator.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dw_gtk_scrolled_frame.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dw_gtk_scrolled_window.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dw_gtk_statuslabel.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dw_gtk_viewport.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dw_hruler.Po ./$(DEPDIR)/dw_image.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dw_list_item.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dw_marshal.Po ./$(DEPDIR)/dw_page.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dw_style.Po ./$(DEPDIR)/dw_table.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dw_table_cell.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dw_tooltip.Po ./$(DEPDIR)/dw_widget.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/findtext.Po ./$(DEPDIR)/gif.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/gtk_ext_button.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/gtk_ext_menu.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/gtk_ext_menu_item.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/gtk_menu_title.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/gtkframeset.Po ./$(DEPDIR)/history.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/html.Po ./$(DEPDIR)/i18n.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/i18n_gtk.Po ./$(DEPDIR)/image.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/interface.Po ./$(DEPDIR)/jpeg.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/klist.Po ./$(DEPDIR)/menu.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/misc.Po ./$(DEPDIR)/nav.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/plain.Po ./$(DEPDIR)/png.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/prefs.Po ./$(DEPDIR)/progressbar.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/selection.Po ./$(DEPDIR)/strbuf.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/tab.Po ./$(DEPDIR)/url.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/web.Po +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = $(dillo_SOURCES) + +RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ + ps-recursive install-info-recursive uninstall-info-recursive \ + all-recursive install-data-recursive install-exec-recursive \ + installdirs-recursive install-recursive uninstall-recursive \ + check-recursive installcheck-recursive +DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +DIST_SUBDIRS = $(SUBDIRS) +SOURCES = $(dillo_SOURCES) + all: all-recursive .SUFFIXES: .SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" + $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ - $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ + $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \ else :; fi; \ done @@ -377,8 +422,8 @@ uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ - rm -f "$(DESTDIR)$(bindir)/$$f"; \ + echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ + rm -f $(DESTDIR)$(bindir)/$$f; \ done clean-binPROGRAMS: @@ -388,11 +433,13 @@ dillo$(EXEEXT): $(dillo_OBJECTS) $(dillo $(LINK) $(dillo_LDFLAGS) $(dillo_OBJECTS) $(dillo_LDADD) $(LIBS) mostlyclean-compile: - -rm -f *.$(OBJEXT) + -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/adblock.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/auth.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitvec.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bookmark.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cache.Po@am__quote@ @@ -404,6 +451,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dicache.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dillo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dns.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/doc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dpiapi.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dw.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dw_aligned_page.Po@am__quote@ @@ -432,8 +480,11 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtk_ext_menu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtk_ext_menu_item.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtk_menu_title.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkframeset.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/history.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/html.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i18n.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i18n_gtk.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/image.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interface.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jpeg.Po@am__quote@ @@ -447,22 +498,31 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progressbar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/selection.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strbuf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tab.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/url.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/web.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd @@ -472,13 +532,7 @@ uninstall-info-am: # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ + @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ @@ -490,7 +544,7 @@ $(RECURSIVE_TARGETS): local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ @@ -498,13 +552,7 @@ $(RECURSIVE_TARGETS): mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ + @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ @@ -525,7 +573,7 @@ maintainer-clean-recursive: local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ @@ -536,6 +584,14 @@ ctags-recursive: test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ @@ -544,22 +600,19 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique -tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + if (etags --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ - empty_fix=.; \ else \ include_option=--include; \ - empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ + test -f $$subdir/TAGS && \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ @@ -569,11 +622,10 @@ TAGS: tags-recursive $(HEADERS) $(SOURCE done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) @@ -596,6 +648,10 @@ GTAGS: distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ @@ -609,7 +665,7 @@ distdir: $(DISTFILES) dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ @@ -624,17 +680,15 @@ distdir: $(DISTFILES) || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ distdir) \ || exit 1; \ fi; \ @@ -644,9 +698,8 @@ check: check-recursive all-am: Makefile $(PROGRAMS) installdirs: installdirs-recursive installdirs-am: - for dir in "$(DESTDIR)$(bindir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ - done + $(mkinstalldirs) $(DESTDIR)$(bindir) + install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive @@ -666,7 +719,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -685,8 +738,6 @@ dvi: dvi-recursive dvi-am: -html: html-recursive - info: info-recursive info-am: @@ -722,19 +773,22 @@ uninstall-am: uninstall-binPROGRAMS unin uninstall-info: uninstall-info-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-binPROGRAMS clean-generic clean-recursive ctags \ +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ + clean-binPROGRAMS clean-generic clean-recursive ctags \ ctags-recursive distclean distclean-compile distclean-generic \ - distclean-recursive distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-binPROGRAMS \ - install-data install-data-am install-exec install-exec-am \ - install-info install-info-am install-man install-strip \ - installcheck installcheck-am installdirs installdirs-am \ - maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am \ - uninstall-binPROGRAMS uninstall-info-am + distclean-recursive distclean-tags distdir dvi dvi-am \ + dvi-recursive info info-am info-recursive install install-am \ + install-binPROGRAMS install-data install-data-am \ + install-data-recursive install-exec install-exec-am \ + install-exec-recursive install-info install-info-am \ + install-info-recursive install-man install-recursive \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am installdirs-recursive maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-recursive \ + pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \ + tags-recursive uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-info-am uninstall-info-recursive uninstall-recursive # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -pruN dillo-0.8.6/src/adblock.c dillo-0.8.6-i18n-misc-20060709/src/adblock.c --- dillo-0.8.6/src/adblock.c 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/adblock.c 2006-05-16 01:21:08.000000000 +0900 @@ -0,0 +1,143 @@ +/* + * File: adblock.c + * + * Copyright 2005 Rudolf Polzer <atfield-dt@durchnull.de> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +/* Adblock implementation. + * This implementation uses a simple file ~/.dillo/adblock.txt which contains a + * list of wildcard expressions to be matched. To be compatible with Firefox, + * lines starting with [ will be ignored. + */ + +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/file.h> +#include <fcntl.h> +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> +#include <fnmatch.h> + +#include <glib.h> + +#include "debug.h" +#include "misc.h" +#include "url.h" + +#include "adblock.h" + +#define DEBUG_LEVEL 1 + +#define LINE_MAXLEN 4096 +static gboolean disabled; +static GPtrArray *blocked; + +static FILE *Adblock_fopen(const char *file, gchar *init_str); + +/* + * Return a file pointer. If the file doesn't exist, try to create it, + * with the optional 'init_str' as its content. + */ +static FILE *Adblock_fopen(const char *filename, gchar *init_str) +{ + FILE *F_in; + int fd; + + if ((F_in = fopen(filename, "r+")) == NULL) { + /* Create the file */ + fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR); + if (fd != -1) { + if (init_str) + write(fd, init_str, strlen(init_str)); + close(fd); + + DEBUG_MSG(10, "Adblock: Created file: %s\n", filename); + F_in = Adblock_fopen(filename, NULL); + } else { + DEBUG_MSG(10, "Adblock: Could not create file: %s!\n", filename); + } + } + + /* set close on exec */ + fcntl(fileno(F_in), F_SETFD, FD_CLOEXEC | fcntl(fileno(F_in), F_GETFD)); + + return F_in; +} + +void a_Adblock_init() +{ + char *filename; + char line[LINE_MAXLEN]; + FILE *file_stream; + guint urls; + + disabled = TRUE; + + filename = a_Misc_prepend_user_home(".dillo/adblock.txt"); + file_stream = Adblock_fopen(filename, "[Adblock]\n"); + g_free(filename); + + if (!file_stream) { + DEBUG_MSG(10, "ERROR: Can't open ~/.dillo/adblock.txt, disabling adblock\n"); + return; + } + + blocked = g_ptr_array_new(); + + urls = 0; + DEBUG_MSG(10, "Loading Adblock list...\n"); + while (!feof(file_stream)) { + line[0] = '\0'; + fgets(line, LINE_MAXLEN, file_stream); + g_strstrip(line); + if(line[0] == '\0') + continue; + if(line[0] == '[') + continue; + g_ptr_array_add(blocked, g_strdup(line)); + ++urls; + } + DEBUG_MSG(10, "loaded %u adblock entries.\n", urls); + + disabled = FALSE; +} + +void a_Adblock_freeall( void ) +{ + guint i; + if(disabled) + return; + for(i = 0; i != blocked->len; ++i) + g_free(g_ptr_array_index(blocked, i)); + g_ptr_array_free(blocked, TRUE); +} + +gboolean a_Adblock_isblocked(const DilloUrl *request_url) +{ + guint i; + DEBUG_MSG(10, "running adblock on %s\n", URL_STR(request_url)); +// g_print("running adblock on %s\n", URL_STR(request_url)); + if(disabled) + return FALSE; + if(request_url == NULL) + return FALSE; + else + { + const char *url = URL_STR(request_url); + for(i = 0; i != blocked->len; ++i) + { + const char *pattern = (const char *) g_ptr_array_index(blocked, i); + if(!fnmatch(pattern, url, 0)) + return TRUE; + } + return FALSE; + } +} + +// vim: sw=3 et ts=3 diff -pruN dillo-0.8.6/src/adblock.h dillo-0.8.6-i18n-misc-20060709/src/adblock.h --- dillo-0.8.6/src/adblock.h 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/adblock.h 2006-05-16 01:21:08.000000000 +0900 @@ -0,0 +1,10 @@ +#ifndef __ADBLOCK_H__ +#define __ADBLOCK_H__ + +#include "url.h" + +void a_Adblock_init( void ); +gboolean a_Adblock_isblocked(const DilloUrl *request_url); +void a_Adblock_freeall( void ); + +#endif diff -pruN dillo-0.8.6/src/auth.c dillo-0.8.6-i18n-misc-20060709/src/auth.c --- dillo-0.8.6/src/auth.c 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/auth.c 2006-05-16 01:21:08.000000000 +0900 @@ -0,0 +1,134 @@ +#include <config.h> +#include "auth.h" +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include "msg.h" +#include "intl.h" +#include "klist.h" +#include "list.h" +#include "cache.h" +#include "web.h" +#include "interface.h" +#include "nav.h" +#include "history.h" +#include "misc.h" + +void Auth_confirmed(DilloDoc *dd); +void Auth_refused(DilloDoc *dd); +void Auth_load_authenticated(DilloDoc *dd, DilloUrl *url); + +typedef struct _Realm Realm; + +struct _Realm { + DilloUrl *base_url; + GString *auth; +}; + +static Realm *realms = NULL; +static gint num_realms; +static gint realms_max = 16; + +void a_Auth_byrealm(GString *auth_realm, DilloUrl *NewUrl, DilloDoc *dd) +{ + /* we already have a password dialogue open */ + if (dd->auth_await_url) + return; + + dd->auth_await_url = a_Url_dup(NewUrl); + auth_realm = g_string_append(auth_realm, "\n"); + a_Interface_passwd_dialog(dd->bw, auth_realm->str, + Auth_confirmed, dd, + Auth_refused, dd); +} + +GString *a_Auth_byurl(DilloUrl *n) +{ + gchar *offset; + int i, longest = -1, len = 0, longlen = 0; + gchar *ptr; + + if (!n) + return NULL; + + for (i = 0; i < num_realms; i++) { + ptr = URL_STR(realms[i].base_url); + offset = strrchr(ptr, '/'); + if (!offset) + offset = ptr + strlen(ptr); + if (strncmp(URL_STR(n), ptr, (char*) offset - (char*) ptr) == 0) { + len = (gchar *) offset - (gchar *) ptr; + if (longlen <= len) { + longlen=len; + longest=i; + } + } + } + return longest == -1 ? NULL : realms[longest].auth; +} + +void Auth_confirmed(DilloDoc *dd) +{ + DilloUrl *NewUrl; + GString *new_auth; + GtkEntry *uentry,*pentry; + GString *up = g_string_new(""); + gchar *encoded; + + if (!dd->auth_await_url) + return; + + NewUrl = dd->auth_await_url; + + /* are we still trying to browse the url that wants authentication? */ + + if (a_Nav_stack_size(dd) != 0 + && a_Url_cmp(a_History_get_url(NAV_TOP(dd)), NewUrl) != 0) { + MSG(_("Browser Url has changed\n")); + /* free the url here, maybe ? */ + a_Url_free(NewUrl); + dd->auth_await_url = NULL; + return; + } + + /* fetch and encode authorization */ + uentry = GTK_ENTRY(dd->bw->passwd_dialog_uentry); + pentry = GTK_ENTRY(dd->bw->passwd_dialog_pentry); + /* ... */ + g_string_sprintfa(up, "%s:%s", gtk_entry_get_text(uentry), + gtk_entry_get_text(pentry)); + new_auth = g_string_new(""); + encoded = a_Misc_encode_base64(up->str); + g_string_sprintfa(new_auth, "Basic %s", encoded); + g_free(encoded); + a_List_add(realms, num_realms, realms_max); + realms[num_realms].base_url = a_Url_dup(NewUrl); + realms[num_realms].auth = new_auth; + num_realms++; + Auth_load_authenticated(dd, NewUrl); + dd->auth_await_url = NULL; +} + +void Auth_refused(DilloDoc *dd) +{ + DilloUrl *NewUrl; + + if (!dd->auth_await_url) + return; + NewUrl = dd->auth_await_url; + g_return_if_fail(NewUrl); + a_Url_free(NewUrl); + dd->auth_await_url = NULL; +} + +void Auth_load_authenticated(DilloDoc *dd, DilloUrl *NewUrl) +{ + a_Url_set_flags(NewUrl, URL_FLAGS(NewUrl) | URL_E2EReload | URL_RealmAccess); + a_Nav_push(dd, NewUrl); + a_Url_free(NewUrl); +} + +void a_Auth_freeall(void) +{ +} + diff -pruN dillo-0.8.6/src/auth.h dillo-0.8.6-i18n-misc-20060709/src/auth.h --- dillo-0.8.6/src/auth.h 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/auth.h 2006-05-16 01:21:08.000000000 +0900 @@ -0,0 +1,14 @@ +#ifndef __AUTH_H__ +#define __AUTH_H__ + +#include <glib.h> +#include <gtk/gtk.h> +#include "url.h" +#include "doc.h" + +void a_Auth_byrealm(GString *auth_realm,DilloUrl *NewUrl, DilloDoc *dd); +GString *a_Auth_byurl(DilloUrl *url); +void a_Auth_freeall(void); + +#endif /* AUTH_H */ + diff -pruN dillo-0.8.6/src/bookmark.c dillo-0.8.6-i18n-misc-20060709/src/bookmark.c --- dillo-0.8.6/src/bookmark.c 2005-10-28 01:20:06.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/bookmark.c 2006-07-08 21:00:09.000000000 +0900 @@ -14,6 +14,7 @@ #include <stdlib.h> #include <string.h> +#include "i18n.h" #include "msg.h" #include "browser.h" #include "history.h" @@ -39,10 +40,10 @@ void a_Bookmarks_init(void) * and finally ask it to add a new bookmark. * (this is an example of dpi chat) */ -void a_Bookmarks_chat_add(BrowserWindow *Bw, char *Cmd, char *answer) +void a_Bookmarks_chat_add(DilloDoc *Dd, char *Cmd, char *answer) { static char *cmd1 = NULL, *cmd2 = NULL, *cmd3 = NULL, *cmd4 = NULL; - static BrowserWindow *bw = NULL; + static DilloDoc *dd = NULL; if (!cmd1) { cmd1 = a_Dpip_build_cmd("cmd=%s msg=%s", "chat", "Hi server"); @@ -53,26 +54,26 @@ void a_Bookmarks_chat_add(BrowserWindow _MSG("a_Bookmarks_chat_add\n answer=%s\n", answer ? answer : "(null)"); - if (Bw) - bw = Bw; + if (Dd) + dd = Dd; if (!cmd4 && Cmd) cmd4 = g_strdup(Cmd); if (!answer) { - a_Capi_dpi_send_cmd(NULL, bw, cmd1, "bookmarks", 1); + a_Capi_dpi_send_cmd(NULL, dd, cmd1, "bookmarks", 1); } else { /* we have an answer */ if (answer) { if (*answer == 'H') { /* "Hi browser" */ - a_Capi_dpi_send_cmd(NULL, bw, cmd2, "bookmarks", 0); + a_Capi_dpi_send_cmd(NULL, dd, cmd2, "bookmarks", 0); } else if (*answer == 'I') { /* "Is it worth?" */ - a_Capi_dpi_send_cmd(NULL, bw, cmd3, "bookmarks", 0); + a_Capi_dpi_send_cmd(NULL, dd, cmd3, "bookmarks", 0); } else if (*answer == 'O') { /* "OK, send it!" */ - a_Capi_dpi_send_cmd(NULL, bw, cmd4, "bookmarks", 0); + a_Capi_dpi_send_cmd(NULL, dd, cmd4, "bookmarks", 0); g_free(cmd4); cmd4 = NULL; } @@ -83,34 +84,31 @@ void a_Bookmarks_chat_add(BrowserWindow /* * Add the new bookmark through the bookmarks server */ -void a_Bookmarks_add(GtkWidget *widget, gpointer client_data) +void a_Bookmarks_add(DilloDoc *dd, DilloUrl *url) { - BrowserWindow *bw = (BrowserWindow *)client_data; - DilloUrl *url; const gchar *title; gchar *cmd; - url = a_Menu_popup_get_url(bw); - g_return_if_fail(url != NULL); + g_return_if_fail(url != NULL && dd != NULL); /* if the page has no title, we'll use the url string */ title = a_History_get_title_by_url(url, 1); cmd = a_Dpip_build_cmd("cmd=%s url=%s title=%s", "add_bookmark", URL_STR(url), title); - a_Bookmarks_chat_add(bw, cmd, NULL); + a_Bookmarks_chat_add(dd, cmd, NULL); g_free(cmd); } /* * Request the server to show the bookmarks */ -void a_Bookmarks_show(BrowserWindow *bw) +void a_Bookmarks_show(DilloDoc *dd) { DilloUrl *url; url = a_Url_new("dpi:/bm/", NULL, 0, 0, 0); - a_Nav_push(bw, url); + a_Nav_push(dd, url); a_Url_free(url); } diff -pruN dillo-0.8.6/src/bookmark.h dillo-0.8.6-i18n-misc-20060709/src/bookmark.h --- dillo-0.8.6/src/bookmark.h 2005-10-28 01:20:06.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/bookmark.h 2006-05-16 01:21:08.000000000 +0900 @@ -5,10 +5,11 @@ void a_Bookmarks_init(void); -void a_Bookmarks_add(GtkWidget *widget, gpointer client_data); -void a_Bookmarks_show(BrowserWindow *bw); +//void a_Bookmarks_add(GtkWidget *widget, gpointer client_data); +void a_Bookmarks_add(DilloDoc *dd, DilloUrl *url); +void a_Bookmarks_show(DilloDoc *dd); /* todo: this is for testing purposes */ -void a_Bookmarks_chat_add(BrowserWindow *Bw, char *Cmd, char *answer); +void a_Bookmarks_chat_add(DilloDoc *Dd, char *Cmd, char *answer); #endif /* __BOOKMARK_H__ */ diff -pruN dillo-0.8.6/src/browser.h dillo-0.8.6-i18n-misc-20060709/src/browser.h --- dillo-0.8.6/src/browser.h 2005-10-28 01:20:06.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/browser.h 2006-05-16 01:21:08.000000000 +0900 @@ -4,17 +4,17 @@ #include <sys/types.h> #include <gdk/gdk.h> #include <gtk/gtk.h> - -#include "url.h" /* for DilloUrl */ - +#include "url.h" /* for DilloUrl */ +#include "dw_style.h" /* for DwStyle */ typedef struct _BrowserWindow BrowserWindow; typedef struct _DilloMenuPopup DilloMenuPopup; +typedef struct _DilloDoc DilloDoc; typedef struct { DilloUrl *Url; /* URL-key for this cache connection */ gint Flags; /* {WEB_RootUrl, WEB_Image, WEB_Download} */ -} BwUrls; +} DdUrls; /* The popup menus so that we can call them. */ struct _DilloMenuPopup @@ -25,12 +25,16 @@ struct _DilloMenuPopup GtkWidget *over_back; GtkWidget *over_forw; GtkWidget *over_bug; + GtkWidget *over_frame; +#ifndef DISABLE_TABS + GtkWidget *over_tab; +#endif /* !DISABLE_TABS */ DilloUrl *url; DilloUrl *url2; GtkWidget *ol_oi_submenu; }; -/* browser_window contains all widgets to create a single window */ +/* browser_window contains everything related to a window */ struct _BrowserWindow { /* Control-Panel handleboxes --used for hiding */ @@ -38,6 +42,9 @@ struct _BrowserWindow /* Flag: TRUE when control-panel is hidden */ gboolean fullwindow; + /* The tag for the idle function that sets button sensitivity. */ + guint sens_idle_tag; + /* widgets for the main window */ GtkWidget *main_window; GtkWidget *back_button; @@ -59,23 +66,111 @@ struct _BrowserWindow GtkWidget *imgprogress; GtkWidget *progress; + /* popup menu navigation widgets */ + GtkWidget *back_op_menu_button; + GtkWidget *forw_op_menu_button; + GtkWidget *stop_op_menu_button; + /* the keyboard accelerator table */ GtkAccelGroup *accel_group; + /* the tooltips group */ + GtkTooltips *tooltips; + /* Popup menu for this BrowserWindow */ DilloMenuPopup menu_popup; - /* The "Headings" and "Anchors" menus */ + /* The Pagemark menu_item (points to individual document's pagemark menus */ GtkWidget *pagemarks_menuitem; - GtkWidget *pagemarks_menu; - GtkWidget *pagemarks_last; /* "View page Bugs" menuitem so we can set its sensitivity */ GtkWidget *viewbugs_menuitem; + /* The Frame menu_item (points to individual frame menus */ + GtkWidget *frame_menuitem; + + /* The Frameset menu_item (points to nested frameset menus */ + GtkWidget *frameset_menuitem; + + /* widgets for dialog boxes off main window */ + GtkWidget *open_dialog_window; + GtkWidget *open_dialog_entry; + GtkWidget *openfile_dialog_window; + GtkWidget *quit_dialog_window; + GtkWidget *save_dialog_window; + GtkWidget *save_link_dialog_window; + GtkWidget *findtext_dialog; + GtkWidget *findtext_dialog_check; + GtkWidget *findtext_dialog_entry; + GtkWidget *search_dialog_window; + GtkWidget *search_dialog_entry; + GtkWidget *proxy_passwd_dialog_window; + GtkWidget *proxy_passwd_dialog_entry; + GtkWidget *question_dialog_window; + gpointer question_dialog_data; + gpointer question_dialog_answer; + GtkWidget *passwd_dialog_window; + GtkWidget *passwd_dialog_uentry; + GtkWidget *passwd_dialog_pentry; + GtkWidget *viewsource_window; + GtkWidget *pagebugs_window; + GtkWidget *full_screen_off_button; + + /* the container widget, this contains either the tabbrowser + * or the docwin + */ + GtkContainer *container; + + /* tab width adjustment magic. Yes, it is magic. In essence, + * this contains the average width of a character in a string + * in the current display context and with the current language. + * This is used to calculate the expected width of tab labels + * + * the value is calculated when the tabbrowser is loaded + */ + gfloat tab_label_average_character_width; + + /* the currently displayed document */ + DilloDoc *dd; + + /* the findtext state (TRUE if search string has been found + * in the document or any of its children + */ + gboolean found; + + /* the list of documents to search through in findtext */ + GList *dd_list; + /* the current index for dd_list */ + guint dd_list_index; + /* The id for the idle function that sets button sensitivity. */ + guint sens_idle_id; +}; + +/* dillo_doc contains all data pertaining to a single document */ +struct _DilloDoc +{ + /* the BrowserWindow this document is currently part of */ + BrowserWindow *bw; + /* This is the main document widget. (HTML rendering or whatever) */ GtkWidget *docwin; + /* The initial style for the widget */ + DwStyle *style; + + /* for nested documents, points to parent document */ + DilloDoc *parent; + + /* This is the frameset widget. */ + GtkWidget *frameset; + + /* document name (as used in 'target=window_or_frame_name' attribute */ + gchar *name; + + /* The "Headings" and "Anchors" menus */ + GtkWidget *pagemarks_menu; + GtkWidget *pagemarks_last; + /* Current cursor type */ GdkCursorType CursorType; @@ -92,33 +187,16 @@ struct _BrowserWindow gint NumImages; /* Number of different images already loaded */ gint NumImagesGot; + /* the current document progress */ + gfloat progress; + /* 'ready' is true when the root document has finished loading */ + gboolean ready; /* List of all Urls requested by this page (and its types) */ - BwUrls *PageUrls; + DdUrls *PageUrls; gint NumPageUrls; gint MaxPageUrls; - /* widgets for dialog boxes off main window */ - GtkWidget *open_dialog_window; - GtkWidget *open_dialog_entry; - GtkWidget *openfile_dialog_window; - GtkWidget *quit_dialog_window; - GtkWidget *save_dialog_window; - GtkWidget *save_link_dialog_window; - GtkWidget *findtext_dialog_window; - GtkWidget *findtext_dialog_check; - GtkWidget *findtext_dialog_entry; - GtkWidget *search_dialog_window; - GtkWidget *search_dialog_entry; - GtkWidget *proxy_passwd_dialog_window; - GtkWidget *proxy_passwd_dialog_entry; - GtkWidget *question_dialog_window; - gpointer question_dialog_data; - gpointer question_dialog_answer; - GtkWidget *viewsource_window; - GtkWidget *pagebugs_window; - GtkWidget *full_screen_off_button; - /* Dillo navigation stack (holds indexes to history list) */ gint *nav_stack; gint nav_stack_size; /* [1 based] */ @@ -137,11 +215,8 @@ struct _BrowserWindow * redirection loops (accounts for WEB_RootUrl only) */ gint redirect_level; - /* The id for the idle function that sets button sensitivity. */ - guint sens_idle_id; + DilloUrl *auth_await_url; }; - - #endif /* __BROWSER_H__ */ diff -pruN dillo-0.8.6/src/cache.c dillo-0.8.6-i18n-misc-20060709/src/cache.c --- dillo-0.8.6/src/cache.c 2006-04-08 21:15:11.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/cache.c 2006-05-16 01:21:08.000000000 +0900 @@ -13,25 +13,34 @@ * Dillo's cache module */ +#include <config.h> #include <ctype.h> /* for tolower */ #include <sys/types.h> #include <sys/stat.h> +#include <time.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <unistd.h> +#include "intl.h" #include "msg.h" #include "list.h" #include "IO/Url.h" #include "IO/IO.h" +#include <zlib.h> + +#include "i18n.h" #include "web.h" +#include "doc.h" #include "dicache.h" #include "interface.h" #include "nav.h" +#include "auth.h" #include "cookies.h" #include "misc.h" +#include "prefs.h" #define NULLKey 0 @@ -46,7 +55,9 @@ typedef struct { const DilloUrl *Url; /* Cached Url. Url is used as a primary Key */ char *TypeDet; /* MIME type string (detected from data) */ char *TypeHdr; /* MIME type string as from the HTTP Header */ + const char *Encoding; /* Data encoding */ GString *Header; /* HTTP header */ + GString *AuthRealm; /* Authentication realm */ const DilloUrl *Location; /* New URI for redirects */ void *Data; /* Pointer to raw data */ size_t ValidSize, /* Actually size of valid range */ @@ -56,6 +67,7 @@ typedef struct { IOData_t *io; /* Pointer to IO data */ ChainLink *CCCQuery; /* CCC link for querying branch */ ChainLink *CCCAnswer; /* CCC link for answering branch */ + time_t Expires; /* when this data should be reloaded */ } CacheData_t; @@ -206,16 +218,19 @@ static void Cache_entry_init(CacheData_t NewEntry->Url = a_Url_dup(Url); NewEntry->TypeDet = NULL; NewEntry->TypeHdr = NULL; + NewEntry->Encoding = NULL; NewEntry->Header = g_string_new(""); NewEntry->Location = NULL; NewEntry->Data = NULL; NewEntry->ValidSize = 0; NewEntry->TotalSize = 0; NewEntry->BuffSize = 4096; - NewEntry->Flags = 0; + NewEntry->Flags = URL_FLAGS_(Url) & URL_Post ? CA_Expires : 0; NewEntry->io = NULL; NewEntry->CCCQuery = a_Chain_new(); NewEntry->CCCAnswer = NULL; + NewEntry->AuthRealm = NULL; + NewEntry->Expires = 0; } /* @@ -235,7 +250,7 @@ static CacheData_t *Cache_entry_add(cons CacheData_t *new_entry = g_new(CacheData_t, 1); if (Cache_entry_search(Url)) - DEBUG_MSG(5, "WARNING: Cache_entry_add, leaking an entry.\n"); + DEBUG_MSG(5, _("WARNING: Cache_entry_add, leaking an entry.\n")); Cache_entry_init(new_entry, Url); /* Set safe values */ g_hash_table_insert(CacheHash, (gpointer)new_entry->Url, new_entry); @@ -251,6 +266,7 @@ static void Cache_entry_free(CacheData_t g_free(entry->TypeDet); g_free(entry->TypeHdr); g_string_free(entry->Header, TRUE); + g_free((gchar *)entry->Encoding); a_Url_free((DilloUrl *)entry->Location); g_free(entry->Data); g_free(entry); @@ -297,13 +313,13 @@ static void Cache_entry_remove(CacheData InfoAnswer = entry->CCCAnswer; if (InfoQuery) { - DEBUG_MSG(2, "## Aborting CCCQuery\n"); + DEBUG_MSG(2, _("## Aborting CCCQuery\n")); a_Cache_ccc(OpAbort, 1, BCK, InfoQuery, NULL, NULL); } else if (InfoAnswer) { - DEBUG_MSG(2, "## Aborting CCCAnswer\n"); + DEBUG_MSG(2, _("## Aborting CCCAnswer\n")); a_Cache_ccc(OpAbort, 2, BCK, InfoAnswer, NULL, NULL); } else { - DEBUG_MSG(2, "## Aborting raw2\n"); + DEBUG_MSG(2, _("## Aborting raw2\n")); Cache_entry_remove_raw(entry, NULL); } } @@ -346,11 +362,11 @@ static gint Cache_prepare_reload(DilloUr if (!g_slist_find_custom(ClientQueue, url, Cache_client_url_cmp)) { /* There're no clients for this entry */ - DEBUG_MSG(2, "## No more clients for this entry\n"); + DEBUG_MSG(2, _("## No more clients for this entry\n")); Cache_entry_remove(NULL, url); return 1; } else { - MSG("Cache_prepare_reload: ERROR, entry still has clients\n"); + MSG(_("Cache_prepare_reload: ERROR, entry still has clients\n")); } return 0; @@ -364,18 +380,28 @@ static gint Cache_prepare_reload(DilloUr static gint Cache_open_url(DilloWeb *Web, CA_Callback_t Call, void *CbData) { void *link; - gint ClientKey; + gint ClientKey, imgOnOtherHost; ChainFunction_t cccFunct; DilloUrl *Url = Web->url; CacheData_t *entry = Cache_entry_search(Url); _MSG("Cache_open_url: %s %sFOUND\n", URL_STR(Url), entry ? "" : "NOT "); + imgOnOtherHost = ((URL_FLAGS(Url) & (URL_IsImage | URL_OnOtherHost)) + != (URL_IsImage | URL_OnOtherHost)); + if (entry && (entry->Flags & CA_Expires) && + (!entry->Expires || entry->Expires <= time(NULL)) && + !(URL_FLAGS(Url) & URL_MustCache) && imgOnOtherHost && + !g_slist_find_custom(ClientQueue, Url, Cache_client_url_cmp)) { + Cache_entry_remove(entry, Url); + entry = NULL; + MSG_HTTP(_("Reloading >%s< because it shouldn't be cached\n"), + URL_STR(Url)); + } if ( entry ) { /* URL is cached: feed our client with cached data */ ClientKey = Cache_client_enqueue(entry->Url, Web, Call, CbData); Cache_delayed_process_queue(entry); - } else { /* URL not cached: create an entry, send our client to the queue, * and open a new connection */ @@ -388,7 +414,10 @@ static gint Cache_open_url(DilloWeb *Web a_Cache_ccc, BCK, cccFunct, 1, 1); a_Chain_bcb(OpStart, entry->CCCQuery, (void *)entry->Url, Web); } else { - a_Interface_msg(Web->bw, "ERROR: unsupported protocol"); + gchar *msg_enc = a_I18n_locale_to_DILLO_CHARSET( + _("ERROR: unsupported protocol")); + a_Interface_msg(Web->dd->bw, msg_enc); + g_free(msg_enc); a_Cache_ccc(OpAbort, 1, FWD, entry->CCCQuery, NULL, NULL); ClientKey = 0; /* aborted */ } @@ -456,11 +485,12 @@ gint a_Cache_get_buf(const DilloUrl *Url /* Test for a redirection loop */ if (entry->Flags & CA_RedirectLoop) { - g_warning ("Redirect loop for URL: >%s<\n", URL_STR_(Url)); + g_warning (_("Redirect loop for URL: >%s<\n"), URL_STR_(Url)); break; } /* Test for a working redirection */ - if (entry && entry->Flags & CA_Redirect && entry->Location) { + if (entry && entry->Flags & CA_Redirect && entry->Location + && !entry->AuthRealm) { Url = entry->Location; } else break; @@ -542,6 +572,32 @@ static GList *Cache_parse_multiple_field } #endif /* !DISABLE_COOKIES */ +static void Cache_force_min_expire(CacheData_t *entry, int min, guint stdExp) { + time_t t; + + if (!(entry->Flags & CA_Expires) || (URL_FLAGS_(entry->Url) & URL_Post)) + return; + if (min < 0) { + entry->Flags &= ~CA_Expires; + entry->Expires = 0; + return; + } + t = time(0); + if (entry->Expires && t > entry->Expires + 1000) { + if (!stdExp) + entry->Flags &= ~CA_Expires; + entry->Expires = 0; + MSG_HTTP(_("Bad clocks, ignore expire on >%s<\n"), URL_STR(entry->Url)); + return; + } + if (min && (t += min) > entry->Expires) { + _MSG_HTTP(_("Forcing min expire %d on >%s< instead %ld\n"), min, + URL_STR(entry->Url), entry->Expires ? + entry->Expires - (t - min) : 0); + entry->Expires = t; + } +} + /* * Scan, allocate, and set things according to header info. * (This function needs the whole header to work) @@ -549,10 +605,13 @@ static GList *Cache_parse_multiple_field static void Cache_parse_header(CacheData_t *entry, IOData_t *io, gint HdrLen) { gchar *header = entry->Header->str; - gchar *Length, *Type, *location_str; + gchar *Length, *Type, *CacheControl, *Date, *CC_ptr, *location_str; + guint expFlag; + gchar *Encoding; #ifndef DISABLE_COOKIES GList *Cookies; #endif + gchar *auth_type_realm; if ( HdrLen < 12 ) { /* Not enough info. */ @@ -564,15 +623,29 @@ static void Cache_parse_header(CacheData entry->Flags |= CA_ForceRedirect; /* 301 Moved Permanently */ else if ( header[11] == '2' ) entry->Flags |= CA_TempRedirect; /* 302 Temporal Redirect */ - + else if ( header[11] == '3' ) + entry->Flags |= CA_Expires; /* 303 See Other */ + else if ( header[11] == '7' ) + entry->Flags |= CA_Expires; /* 307 Moved Temporarely */ + /* TODO: should be here a_Url_free(entry->Location) ? */ + location_str = Cache_parse_field(header, "Location"); entry->Location = a_Url_new(location_str, URL_STR_(entry->Url), 0, 0, 0); g_free(location_str); } else if ( strncmp(header + 9, "404", 3) == 0 ) { entry->Flags |= CA_NotFound; + } else if ( strncmp(header + 9, "401", 3) == 0 ) { + auth_type_realm = Cache_parse_field(header,"WWW-Authenticate"); + entry->Flags |= CA_Redirect; + if (entry->Location) + a_Url_free((DilloUrl*) entry->Location); + entry->Location = a_Url_dup(entry->Url); + entry->AuthRealm = g_string_new(auth_type_realm); } + expFlag = entry->Flags & CA_Expires; + entry->ValidSize = io->Status - HdrLen; if ( (Length = Cache_parse_field(header, "Content-Length")) != NULL ) { entry->Flags |= CA_GotLength; @@ -582,6 +655,41 @@ static void Cache_parse_header(CacheData entry->TotalSize = 0; } + if ( (CacheControl = Cache_parse_field(header, "Expires")) != NULL ) { + entry->Flags |= CA_Expires; + entry->Expires = a_Cookies_create_timestamp(CacheControl); + g_free(CacheControl); + } + + if ( (CacheControl = Cache_parse_field(header, "Cache-Control")) != NULL ) { + CC_ptr = CacheControl; + do { + while (*CC_ptr == ' ') + ++CC_ptr; + if ( !g_strncasecmp(CacheControl, "no-cache", 8) ) { + entry->Flags |= CA_Expires; + entry->Expires = 0; + break; + } else if ( !g_strncasecmp(CacheControl, "max-age=", 8) ) { + char *e; + long n; + + if ( !(Date = Cache_parse_field(header, "Date")) ) { + MSG_HTTP(_("'Cache-Control: max-age=' without 'Date: ' header")); + break; + } + n = strtoul(CacheControl + 8, &e, 10); + if (e > CacheControl + 8 && n >= 0) { + entry->Flags |= CA_Expires; + entry->Expires = n + a_Cookies_create_timestamp(Date); + } + g_free(Date); + break; + } + } while ( (CC_ptr = strchr(CC_ptr, ',')) && *++CC_ptr ); + g_free(CacheControl); + } + #ifndef DISABLE_COOKIES /* BUG: If a server feels like mixing Set-Cookie2 and Set-Cookie * responses which aren't identical, then we have a problem. I don't @@ -611,13 +719,32 @@ static void Cache_parse_header(CacheData /* Get Content-Type */ if ( (Type = Cache_parse_field(header, "Content-Type")) == NULL ) { - MSG_HTTP("Server didn't send Content-Type in header.\n"); + MSG_HTTP(_("Server didn't send Content-Type in header.\n")); } else { entry->TypeHdr = Type; /* This Content-Type is not trusted. It's checked against real data * in Cache_process_queue(); only then CA_GotContentType becomes true. */ } + /* Get Content-Encoding */ + if ( (Encoding = Cache_parse_field(header, "Content-Encoding")) == NULL ) { + //MSG_HTTP(_("Server didn't send Content-Encoding in header.\n")); + Encoding = NULL; + } + entry->Encoding = Encoding; + + if (URL_FLAGS(entry->Url) & URL_IsImage || (Type && !strncmp(Type, "image/", 5))) { + Cache_force_min_expire(entry, prefs.min_image_expire_time, expFlag); + } else if (!(entry->Flags & CA_Expires) && + (entry->Location ? entry->Location->query : entry->Url->query) && + prefs.query_expire_time >= 0 && (Type && !strncmp(Type, "text/", 5))) { + entry->Flags |= CA_Expires; + entry->Expires = time(NULL) + prefs.query_expire_time; + MSG(_("Forcing default expire to query url >%s<\n"), + URL_STR(entry->Url)); + } else { + Cache_force_min_expire(entry, prefs.min_page_expire_time, expFlag); + } } /* @@ -650,6 +777,134 @@ static gint Cache_get_header(IOData_t *i } /* + * CONTENT-ENCODING: Process any encoded data + * + * Unfortunately we need to provide a private uncompress function as + * the one in zlib assumes that a zlib header will appear in the compressed + * block -- gzip doesn't provide one so inflateInit2 must be called with + * negative MAX_WBITS to get the library to cope. + */ + +static int +dillo_uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen) +{ + z_stream stream; + int err; + + stream.next_in = (Bytef*)source; + stream.avail_in = (uInt)sourceLen; + /* Check for source > 64K on 16-bit machine: */ + if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR; + + stream.next_out = dest; + stream.avail_out = (uInt)*destLen; + if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; + + stream.zalloc = (alloc_func)0; + stream.zfree = (free_func)0; + + err = inflateInit2(&stream, -MAX_WBITS); + if (err != Z_OK) return err; + + err = inflate(&stream, Z_FINISH); + if (err != Z_STREAM_END) { + inflateEnd(&stream); + return err == Z_OK ? Z_BUF_ERROR : err; + } + *destLen = stream.total_out; + + err = inflateEnd(&stream); + return err; +} + + +static void Cache_decode_data(CacheData_t *entry) +{ + void *new_Data = NULL; + int rc; + unsigned char *p; + int method; + int flags; + int expand = 2; + uLongf destLen; + + DEBUG_MSG(4, _("Cache_decode_data: got all data -- decodinging %s\n"), entry->Encoding); + if( strcmp(entry->Encoding, "x-gzip") == 0 + || strcmp(entry->Encoding, "gzip") == 0) { + + /* entry->Data holds the data to expand */ + /* entry->TotalSize is length of data */ + + p = entry->Data; + if ( (*p++ != 0x1f) || (*p++ != 0x8b) ) { + DEBUG_MSG(5, _("Cache_decode_data: not gzip data!\n")); + goto exit; + } + method = *p++; + flags = *p++; + if ( (method != Z_DEFLATED) || (flags & 0xE0) ) { + DEBUG_MSG(5, _("Cache_decode_data: invalid gzip data!\n")); + goto exit; + } + + /* skip some headers */ + p += 6; + if( (flags & 0x04) != 0 ) { + /* skip extra field */ + int i = (*p++); + i += ((*p++)<<8); + p += i; + } + if( (flags & 0x08) != 0 ) { + /* skip name */ + while( *p != 0 ) + p++; + p++; + } + if( (flags & 0x10) != 0 ) { + /* skip comment */ + while( *p != 0 ) + p++; + p++; + } + if( (flags & 0x02) != 0 ) { + /* skip CRC */ + p += 2; + } + + /* finished with header, rest is compressed data without zlib header */ + rc = Z_BUF_ERROR; /* just to get started */ + while( rc == Z_BUF_ERROR ) { + /* FIXME -- should limit times round loop? */ + expand++; /* start with 300% expansion */ + destLen = expand * entry->TotalSize; + new_Data = g_realloc(new_Data, destLen); + rc = dillo_uncompress((Bytef *)new_Data, &destLen, (Bytef *)p, (uLong)entry->TotalSize); + } + if( rc == Z_OK ) { + DEBUG_MSG(4, "Cache_decode_data: %.2fKB -> %.2f KB (%ld%%)\n", + (float)entry->TotalSize/1024, (float)destLen/1024, destLen * 100 /entry->TotalSize); + g_free(entry->Data); + entry->Data = g_realloc(new_Data, destLen); + entry->TotalSize = destLen; + entry->ValidSize = destLen; + entry->BuffSize = destLen; + } + else { + g_free(new_Data); + } + + }else{ + MSG(_("not x-gzip\n")); + } + +exit:; + g_free((void *)entry->Encoding); + entry->Encoding = NULL; +} + + +/* * Receive new data, update the reception buffer (for next read), update the * cache, and service the client queue. * @@ -673,20 +928,26 @@ static void Cache_process_io(int Op, voi if ( Op == IOClose ) { if (entry->Flags & CA_GotLength && entry->TotalSize != entry->ValidSize){ - MSG_HTTP("Content-Length does NOT match message body,\n" - " at: %s\n", URL_STR_(entry->Url)); + MSG_HTTP(_("Content-Length does NOT match message body,\n" + " at: %s\n"), URL_STR_(entry->Url)); } entry->Flags |= CA_GotData; entry->Flags &= ~CA_Stopped; /* it may catch up! */ entry->TotalSize = entry->ValidSize; entry->io = NULL; entry->CCCAnswer = NULL; + /* CONTENT-ENCODING -- + if encoded then translate and clear client block */ + if ( entry->Encoding != NULL ) { + Cache_decode_data(entry); + } + Cache_process_queue(entry); return; } else if ( Op == IOAbort ) { /* todo: implement Abort * (eliminate cache entry and anything related) */ - DEBUG_MSG(5, "Cache_process_io Op = IOAbort; not implemented yet\n"); + DEBUG_MSG(5, _("Cache_process_io Op = IOAbort; not implemented yet\n")); entry->io = NULL; entry->CCCAnswer = NULL; return; @@ -729,19 +990,21 @@ static void Cache_process_io(int Op, voi * Process redirections (HTTP 30x answers) * (This is a work in progress --not finished yet) */ -static gint Cache_redirect(CacheData_t *entry, gint Flags, BrowserWindow *bw) +static gint Cache_redirect(CacheData_t *entry, gint Flags, DilloDoc *dd) { DilloUrl *NewUrl; _MSG(" Cache_redirect: redirect_level = %d\n", bw->redirect_level); /* if there's a redirect loop, stop now */ - if (bw->redirect_level >= 5) + if (dd->redirect_level >= 5) entry->Flags |= CA_RedirectLoop; if (entry->Flags & CA_RedirectLoop) { - a_Interface_msg(bw, "ERROR: redirect loop for: %s", URL_STR_(entry->Url)); - bw->redirect_level = 0; + gchar *msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("ERROR: redirect loop for: %s")); + a_Interface_msg(dd->bw, msg_enc, URL_STR_(entry->Url)); + g_free(msg_enc); + dd->redirect_level = 0; return 0; } @@ -749,7 +1012,7 @@ static gint Cache_redirect(CacheData_t * (entry->Flags & CA_ForceRedirect || entry->Flags & CA_TempRedirect || !entry->ValidSize || entry->ValidSize < 1024 )) { - _MSG(">>>Redirect from: %s\n to %s\n", + _MSG(_(">>>Redirect from: %s\n to %s\n"), URL_STR_(entry->Url), URL_STR_(entry->Location)); _MSG("%s", entry->Header->str); @@ -759,14 +1022,19 @@ static gint Cache_redirect(CacheData_t * 0, 0, 0); if (entry->Flags & CA_TempRedirect) a_Url_set_flags(NewUrl, URL_FLAGS(NewUrl) | URL_E2EReload); - a_Nav_push(bw, NewUrl); + if (entry->AuthRealm) { + a_Auth_byrealm(entry->AuthRealm, NewUrl, dd); + return 0; + } + a_Nav_remove_top_url(dd); + a_Nav_push(dd, NewUrl); a_Url_free(NewUrl); } else { /* Sub entity redirection (most probably an image) */ if ( !entry->ValidSize ) { - DEBUG_MSG(3,">>>Image redirection without entity-content<<<\n"); + DEBUG_MSG(3, _(">>>Image redirection without entity-content<<<\n")); } else { - DEBUG_MSG(3, ">>>Image redirection with entity-content<<<\n"); + DEBUG_MSG(3, _(">>>Image redirection with entity-content<<<\n")); } } } @@ -799,7 +1067,7 @@ void a_Cache_null_client(int Op, CacheCl if (Op == CA_Close) { if (Web->flags & WEB_RootUrl) { /* Remove this client from our active list */ - a_Interface_close_client(Web->bw, Client->Key); + a_Doc_close_client(Web->dd, Client->Key); } } @@ -825,14 +1093,14 @@ static void Cache_process_queue(CacheDat const gchar *Type; CacheClient_t *Client; DilloWeb *ClientWeb; - BrowserWindow *Client_bw = NULL; + DilloDoc *Client_dd = NULL; static gboolean Busy = FALSE; gboolean AbortEntry = FALSE; gboolean OfferDownload = FALSE; gboolean TypeMismatch = FALSE; if ( Busy ) - DEBUG_MSG(5, "FATAL!:*** >>>> Cache_process_queue Caught busy!!!\n"); + DEBUG_MSG(5, _("FATAL!:*** >>>> Cache_process_queue Caught busy!!!\n")); if (!(entry->Flags & CA_GotHeader)) return; if (!(entry->Flags & CA_GotContentType)) { @@ -840,7 +1108,7 @@ static void Cache_process_queue(CacheDat entry->Data, entry->ValidSize, &Type); if (st == 0 || entry->Flags & CA_GotData) { if (a_Misc_content_type_check(entry->TypeHdr, Type) < 0) { - MSG_HTTP("Content-Type '%s' doesn't match the real data.\n", + MSG_HTTP(_("Content-Type '%s' doesn't match the real data.\n"), entry->TypeHdr); TypeMismatch = TRUE; } @@ -849,29 +1117,35 @@ static void Cache_process_queue(CacheDat } else return; /* i.e., wait for more data */ } + + /* CONTENT-ENCODING -- don't let clients process data yet */ + if ( entry->Encoding != NULL ) { + Busy = FALSE; + return; + } Busy = TRUE; for ( i = 0; (Client = g_slist_nth_data(ClientQueue, i)); ++i ) { if ( Client->Url == entry->Url ) { ClientWeb = Client->Web; /* It was a (void*) */ - Client_bw = ClientWeb->bw; /* 'bw' in a local var */ + Client_dd = ClientWeb->dd; /* 'd' in a local var */ if (ClientWeb->flags & WEB_RootUrl) { if (!(entry->Flags & CA_MsgErased)) { /* clear the "expecting for reply..." message */ - a_Interface_msg(Client_bw, ""); + a_Interface_msg(Client_dd->bw, ""); entry->Flags |= CA_MsgErased; } if (TypeMismatch) - a_Interface_msg(Client_bw,"HTTP warning: Content-Type '%s' " - "doesn't match the real data.", entry->TypeHdr); - if (entry->Flags & CA_Redirect) { + a_Interface_msg(Client_dd->bw,_("HTTP warning: Content-Type '%s' " + "doesn't match the real data."), entry->TypeHdr); + if (entry->Flags & CA_Redirect && !entry->AuthRealm) { if (!Client->Callback) { Client->Callback = a_Cache_null_client; - Client_bw->redirect_level++; + Client_dd->redirect_level++; } } else { - Client_bw->redirect_level = 0; + Client_dd->redirect_level = 0; } } else { /* For non root URLs, ignore redirections and 404 answers */ @@ -900,13 +1174,13 @@ static void Cache_process_queue(CacheDat * Not aborted to avoid multiple connections on the same * resource. A better idea is to abort the connection and * to keep a failed-resource flag in the cache entry. */ - MSG_HTTP("Unhandled MIME type: <%s>\n", + MSG_HTTP(_("Unhandled MIME type: <%s>\n"), entry->TypeHdr ? entry->TypeHdr:entry->TypeDet); } } } if (AbortEntry) { - a_Interface_remove_client(Client_bw, Client->Key); + a_Doc_remove_client(Client_dd, Client->Key); Cache_client_dequeue(Client, NULLKey); --i; /* Keep the index value in the next iteration */ continue; @@ -925,7 +1199,7 @@ static void Cache_process_queue(CacheDat gint flags = ClientWeb->flags; /* We finished sending data, let the client know */ if (!Client->Callback) - DEBUG_MSG(3, "Client Callback is NULL"); + DEBUG_MSG(3, _("Client Callback is NULL")); else (Client->Callback)(CA_Close, Client); Cache_client_dequeue(Client, NULLKey); @@ -933,10 +1207,10 @@ static void Cache_process_queue(CacheDat /* call Cache_redirect() from this 'if' to assert one call only. */ if ( entry->Flags & CA_Redirect ) - Cache_redirect(entry, flags, Client_bw); + Cache_redirect(entry, flags, Client_dd); _MSG("Cache_process_queue: NumRootClients=%d sens_idle_id = %d\n", - Client_bw->NumRootClients, Client_bw->sens_idle_id); + Client_dd->bw->NumRootClients, Client_dd->bw->sens_idle_id); } } } /* for */ @@ -945,7 +1219,7 @@ static void Cache_process_queue(CacheDat /* Abort the entry, remove it from cache, and maybe offer download. * (the dialog is made before 'entry' is freed) */ if (OfferDownload && Cache_download_enabled(entry->Url)) - a_Interface_offer_link_download(Client_bw, entry->Url); + a_Interface_offer_link_download(Client_dd->bw, entry->Url); Cache_entry_remove(entry, NULL); } @@ -1008,7 +1282,7 @@ static void Cache_remove_interface_clien for ( i = 0; (Client = g_slist_nth_data(ClientQueue, i)); ++i ) { if ( Client->Url == Url ) { Web = Client->Web; - a_Interface_remove_client(Web->bw, Client->Key); + a_Doc_remove_client(Web->dd, Client->Key); } } } @@ -1026,7 +1300,7 @@ static void Cache_stop_client(gint Key, if (!(List = g_slist_find_custom(ClientQueue, GINT_TO_POINTER(Key), Cache_client_key_cmp))){ - _MSG("WARNING: Cache_stop_client, inexistent client\n"); + _MSG(_("WARNING: Cache_stop_client, inexistent client\n")); return; } @@ -1168,7 +1442,7 @@ void a_Cache_ccc(int Op, int Branch, int break; } case OpStop: - MSG(" Not implemented\n"); + MSG(_(" Not implemented\n")); break; case OpAbort: Cache_entry_remove_raw(NULL, Info->LocalKey); diff -pruN dillo-0.8.6/src/cache.h dillo-0.8.6-i18n-misc-20060709/src/cache.h --- dillo-0.8.6/src/cache.h 2005-10-28 01:20:06.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/cache.h 2006-05-16 01:21:08.000000000 +0900 @@ -27,6 +27,7 @@ #define CA_Stopped (512) /* True if the entry has been stopped */ #define CA_MsgErased (1024) /* Used to erase the bw's status bar */ #define CA_RedirectLoop (2048) /* Redirect loop */ +#define CA_Expires (4096) /* Should be reloaded, when expired */ /* * Callback type for cache clients diff -pruN dillo-0.8.6/src/capi.c dillo-0.8.6-i18n-misc-20060709/src/capi.c --- dillo-0.8.6/src/capi.c 2006-01-04 04:39:31.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/capi.c 2006-07-08 21:49:11.000000000 +0900 @@ -15,12 +15,16 @@ * to get the requests served. Kind of a broker. */ +#include <config.h> #include <string.h> #include <unistd.h> /* for pipe */ +#include "i18n.h" +#include "intl.h" #include "msg.h" #include "capi.h" #include "IO/Url.h" +#include "web.h" #include "chain.h" #include "list.h" #include "interface.h" @@ -39,7 +43,7 @@ typedef struct { DilloWeb *web; DilloUrl *url; /* local copy of web->url. Used when the latter is freed */ - void *bw; + DilloDoc *dd; gchar *server; gchar *datastr; gint SockFD; @@ -83,14 +87,15 @@ void a_Capi_ccc(int Op, int Branch, int * Create a new connection data structure */ static dpi_conn_t * - Capi_dpi_conn_new(DilloWeb *web, void *bw, char *server, gchar *datastr) +Capi_dpi_conn_new(DilloWeb *web, DilloDoc *dd, char *server, gchar *datastr) { dpi_conn_t *conn; conn = g_new(dpi_conn_t, 1); conn->web = web; conn->url = (web) ? a_Url_dup(web->url) : NULL; - conn->bw = bw; + conn->dd = dd; + conn->server = server; conn->server = g_strdup(server); conn->datastr = g_strdup(datastr); conn->SockFD = -1; @@ -211,8 +216,8 @@ static gint Capi_verify_dpi_url_request( /* test POST and GET */ if (strchr(URL_STR(web->url), '?') || URL_DATA_(web->url)) { /* safety measure: only allow dpi requests from dpi-generated urls */ - if (a_Nav_stack_size(web->bw)) { - referer = a_History_get_url(NAV_TOP(web->bw)); + if (a_Nav_stack_size(web->dd)) { + referer = a_History_get_url(NAV_TOP(web->dd)); if (g_strncasecmp(URL_STR(referer), "dpi:/", 5) == 0) allow = TRUE; } @@ -221,7 +226,7 @@ static gint Capi_verify_dpi_url_request( } if (!allow) { - MSG("Capi_verify_dpi_url_request: Permission Denied!\n"); + MSG(_("Capi_verify_dpi_url_request: Permission Denied!\n")); MSG(" URL_STR : %s\n", URL_STR(web->url)); if (URL_DATA_(web->url)) MSG(" URL_DATA: %s\n", URL_DATA(web->url)); @@ -250,9 +255,10 @@ gint a_Capi_url_uses_dpi(gchar *url_str, } else if (g_strncasecmp(url_str, "ftp:/", 5) == 0) { server = g_strdup("ftp"); - +#ifndef DILLO_SSL } else if (g_strncasecmp(url_str, "https:/", 7) == 0) { server = g_strdup("https"); +#endif } else if (g_strncasecmp(url_str, "file:", 5) == 0) { server = g_strdup("file"); } else if (g_strncasecmp(url_str, "data:", 5) == 0) { @@ -315,13 +321,13 @@ gint a_Capi_open_url(DilloWeb *web, CA_C safe = 1; } - _MSG(" reload=%d URL_E2EReload=%d\n", reload, + _MSG(_(" reload=%d URL_E2EReload=%d\n"), reload, (URL_FLAGS(web->url) & URL_E2EReload)); if (safe && reload) { /* Send dpip command */ cmd = Capi_dpi_build_cmd(web->url, server); - a_Capi_dpi_send_cmd(web, web->bw, cmd, server, 1); + a_Capi_dpi_send_cmd(web, web->dd, cmd, server, 1); g_free(cmd); /* test the new dpi-cache connection! */ @@ -357,7 +363,7 @@ gint a_Capi_get_buf(const DilloUrl *Url, * Send a dpi cmd. * (For instance: add_bookmark, open_url, send_preferences, ...) */ -gint a_Capi_dpi_send_cmd(DilloWeb *web, void *bw, char *cmd, char *server, +gint a_Capi_dpi_send_cmd(DilloWeb *web, void *dd, char *cmd, char *server, gint flags) { dpi_conn_t *conn; @@ -367,7 +373,7 @@ gint a_Capi_dpi_send_cmd(DilloWeb *web, /* open a new connection to server */ /* Create a new connection data struct and add it to the list */ - conn = Capi_dpi_conn_new(web, bw, server, cmd); + conn = Capi_dpi_conn_new(web, dd, server, cmd); /* start the CCC operations */ a_Capi_ccc(OpStart, 1, BCK, conn->InfoSend, conn, server); @@ -380,7 +386,7 @@ gint a_Capi_dpi_send_cmd(DilloWeb *web, a_Capi_ccc(OpSend, 1, BCK, conn->InfoSend, dbuf, NULL); g_free(dbuf); } else { - MSG(" ERROR: [a_Capi_dpi_send_cmd] No open connection found\n"); + MSG(_(" ERROR: [a_Capi_dpi_send_cmd] No open connection found\n")); } } @@ -419,7 +425,7 @@ void a_Capi_ccc(int Op, int Branch, int break; case OpStop: case OpAbort: - MSG(" Not implemented\n"); + MSG(_(" Not implemented\n")); break; } } else { /* FWD */ @@ -448,7 +454,7 @@ void a_Capi_ccc(int Op, int Branch, int case OpAbort: conn = Info->LocalKey; if (Data1 && !strcmp(Data1, "ERR_dpid")) - a_Interface_msg(conn->bw, "ERROR: can't start dpid daemon!"); + a_Interface_msg(conn->dd->bw, _("ERROR: can't start dpid daemon!")); Capi_dpi_conn_unref(conn); g_free(Info); break; @@ -472,7 +478,7 @@ void a_Capi_ccc(int Op, int Branch, int case OpStop: case OpAbort: Capi_dpi_conn_unref(Info->LocalKey); - MSG(" Not implemented\n"); + MSG(_(" Not implemented\n")); break; } } else { /* FWD */ @@ -483,7 +489,7 @@ void a_Capi_ccc(int Op, int Branch, int if (conn->Flags & ABORTED || (conn->web && !a_Web_valid(conn->web))) { /* there's no client for this transfer!*/ - _MSG(" ** Capi 2F catched an invalid 'web' structure\n"); + _MSG(_(" ** Capi 2F catched an invalid 'web' structure\n")); /* this flag is used just in case the same memory address * is reused for a new 'web' and the test passes */ conn->Flags &= ABORTED; @@ -491,12 +497,12 @@ void a_Capi_ccc(int Op, int Branch, int a_Chain_bcb(OpStop, Info, conn->url, NULL); } else if (strcmp(Data2, "send_status_message") == 0) { - a_Interface_msg(conn->bw, "%s", Data1); + a_Interface_msg(conn->dd->bw, "%s", Data1); } else if (strcmp(Data2, "chat") == 0) { - a_Interface_msg(conn->bw, "%s", Data1); + a_Interface_msg(conn->dd->bw, "%s", Data1); a_Bookmarks_chat_add(NULL, NULL, Data1); } else if (strcmp(Data2, "dialog") == 0) { - a_Dpiapi_dialog(conn->bw, conn->server, Data1); + a_Dpiapi_dialog(conn->dd, conn->server, Data1); } else if (strcmp(Data2, "start_send_page") == 0) { /* start the pipe-writing chain */ a_Capi_ccc(OpStart, 3, BCK, a_Chain_new(), Info->LocalKey,NULL); @@ -505,7 +511,7 @@ void a_Capi_ccc(int Op, int Branch, int } else if (strcmp(Data2, "send_page_2eof") == 0) { a_Capi_ccc(OpSend, 3, BCK, conn->InfoPipe, Data1, NULL); } else if (strcmp(Data2, "reload_request") == 0) { - a_Nav_reload(conn->bw); + a_Nav_reload(conn->dd); } break; case OpEnd: @@ -527,7 +533,7 @@ void a_Capi_ccc(int Op, int Branch, int } case OpStop: case OpAbort: - MSG(" Not implemented\n"); + MSG(_(" Not implemented\n")); break; } } @@ -543,7 +549,7 @@ void a_Capi_ccc(int Op, int Branch, int Capi_dpi_conn_ref(conn); conn->InfoPipe = Info; if (pipe(conn->DpiPipe)) { - MSG(" Error with pipe\n"); + MSG(_(" Error with pipe\n")); return; } a_Chain_link_new(Info, a_Capi_ccc, BCK, a_IO_ccc, 3, 3); @@ -561,7 +567,7 @@ void a_Capi_ccc(int Op, int Branch, int case OpStop: case OpAbort: Capi_dpi_conn_unref(Info->LocalKey); - MSG(" Not implemented\n"); + MSG(_(" Not implemented\n")); break; } } else { /* FWD */ diff -pruN dillo-0.8.6/src/capi.h dillo-0.8.6-i18n-misc-20060709/src/capi.h --- dillo-0.8.6/src/capi.h 2005-10-28 01:20:06.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/capi.h 2006-05-16 01:21:08.000000000 +0900 @@ -10,7 +10,7 @@ */ gint a_Capi_open_url(DilloWeb *web, CA_Callback_t Call, void *CbData); gint a_Capi_get_buf(const DilloUrl *Url, gchar **PBuf, gint *BufSize); -gint a_Capi_dpi_send_cmd(DilloWeb *web, void *bw, char *cmd, char *server, +gint a_Capi_dpi_send_cmd(DilloWeb *web, void *dd, char *cmd, char *server, gint flags); gint a_Capi_url_uses_dpi(gchar *url_str, gchar **server_ptr); diff -pruN dillo-0.8.6/src/colors.c dillo-0.8.6-i18n-misc-20060709/src/colors.c --- dillo-0.8.6/src/colors.c 2005-10-28 01:20:07.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/colors.c 2006-05-16 01:21:08.000000000 +0900 @@ -308,7 +308,7 @@ static int Color_distance3(long c1, long /* * Return a suitable "visited link" color - * Return value: + * Return value: * if candidate has good contrast with C_txt, C_lnk and C_bg -> candidate * else another color (from the internal list) */ diff -pruN dillo-0.8.6/src/commands.c dillo-0.8.6-i18n-misc-20060709/src/commands.c --- dillo-0.8.6/src/commands.c 2005-10-28 01:20:07.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/commands.c 2006-05-16 01:21:08.000000000 +0900 @@ -10,17 +10,23 @@ * (at your option) any later version. */ +#include <config.h> #include <gtk/gtk.h> #include <stdio.h> /* for sprintf */ #include <sys/time.h> /* for gettimeofday (testing gorp only) */ #include <unistd.h> #include <string.h> /* for strcat() */ +#include "intl.h" #include "msg.h" #include "bookmark.h" #include "interface.h" +#ifndef DISABLE_TABS +#include "tab.h" +#endif /* !DISABLE_TABS */ #include "history.h" #include "nav.h" +#include "doc.h" #include "misc.h" #include "commands.h" #include "prefs.h" @@ -28,6 +34,9 @@ #include "capi.h" #include "selection.h" +#include <gdk/gdkkeysyms.h> +#include "i18n.h" + /* FILE MENU */ /* @@ -43,6 +52,17 @@ void a_Commands_new_callback(GtkWidget * gtk_widget_grab_focus(nbw->location); } +#ifndef DISABLE_TABS +/* + * Create a new browser tab + */ +void a_Commands_new_tab_callback(GtkWidget *widget, gpointer client_data) +{ + BrowserWindow *bw = (BrowserWindow *) client_data; + a_Tab_new(bw); +} + +#endif /* * Create and show the "Open file" dialog */ @@ -55,18 +75,26 @@ void a_Commands_openfile_callback(GtkWid /* * Create and show the "Open Url" dialog window + * OR (when prefs.popup_dialogs = FALSE) + * focus location bar and select contents */ void a_Commands_openurl_callback(GtkWidget *widget, gpointer client_data) { BrowserWindow *bw = (BrowserWindow *) client_data; - a_Interface_open_dialog(widget, bw); + if (prefs.popup_dialogs) + a_Interface_open_dialog(widget, bw); + else + gtk_widget_grab_focus(bw->location); } /* - * ? + * Show Configurarion Script */ void a_Commands_prefs_callback(GtkWidget *widget, gpointer client_data) { + gchar *cmd = g_strdup_printf("dillocfg&\n"); + system(cmd); + g_free(cmd); } /* @@ -75,9 +103,34 @@ void a_Commands_prefs_callback(GtkWidget void a_Commands_close_callback(GtkWidget *widget, gpointer client_data) { BrowserWindow *bw = (BrowserWindow *)client_data; + a_Interface_findtext_dialog_close(); gtk_widget_destroy(bw->main_window); } +#ifndef DISABLE_TABS +/* + * Close current browser tab, and exit dillo if it's the last one. + */ +void a_Commands_close_current_tab_callback(GtkWidget *widget, gpointer client_data) +{ + BrowserWindow *bw = (BrowserWindow *)client_data; + a_Tab_close(bw->dd); +} + +/* + * Close a browser tab, and exit dillo if it's the last one. + * + * The difference with a_Commands_close_current_tab_callback is that this + * callback is called with a specific dd as parameter, while the former is + * called with only a bw + */ +void a_Commands_close_tab_callback(GtkWidget *widget, gpointer client_data) +{ + DilloDoc *dd = (DilloDoc *)client_data; + a_Tab_close(dd); +} + +#endif /* DISABLE_TABS */ /* * Free memory and quit dillo */ @@ -90,21 +143,32 @@ void a_Commands_exit_callback(GtkWidget /* PAGE MENU */ /* - * Show current page's source code. + * Show current root document's source */ -void a_Commands_viewsource_callback (GtkWidget *widget, gpointer client_data) +void a_Commands_viewsource_callback(GtkWidget *widget, gpointer client_data) { - BrowserWindow *bw = (BrowserWindow *)client_data; - gchar *buf; - gint buf_size; + BrowserWindow *bw = (BrowserWindow *) client_data; + a_Commands_viewsource_doc_callback(widget, (gpointer) bw->dd); +} +/* + * Show document's source code. + */ +void a_Commands_viewsource_doc_callback (GtkWidget *widget, gpointer client_data) +{ + DilloDoc *dd = (DilloDoc *)client_data; + gchar *title, *buf; + gint buf_size; + /* Get page source data */ - a_Capi_get_buf(a_History_get_url(NAV_TOP(bw)), &buf, &buf_size); + a_Capi_get_buf(a_History_get_url(NAV_TOP(dd)), &buf, &buf_size); /* Show it */ - a_Interface_text_window (&bw->viewsource_window, - "View Source", "view_source", + title = a_I18n_locale_to_DILLO_CHARSET(_("View Source")); + a_Interface_text_window (&dd->bw->viewsource_window, + title, "view_source", buf, buf_size, 530, 500); + g_free(title); } /* @@ -114,12 +178,15 @@ void a_Commands_view_page_bugs_callback gpointer client_data) { DilloHtmlLB *html_lb = client_data; + gchar *title; - a_Interface_text_window (&html_lb->bw->pagebugs_window, - "Detected HTML errors", "page_bugs", + title = a_I18n_locale_to_DILLO_CHARSET(_("Detected HTML errors")); + a_Interface_text_window (&html_lb->dd->bw->pagebugs_window, + title, "page_bugs", html_lb->page_bugs->str, html_lb->page_bugs->len, 530, 500); + g_free(title); } /* @@ -130,7 +197,7 @@ void a_Commands_selectall_callback(GtkWi } /* - * Create and show the "Find Text" dialog window + * Create and show the "Find Text" dialog window for this page */ void a_Commands_findtext_callback(GtkWidget *widget, gpointer client_data) { @@ -148,20 +215,56 @@ void a_Commands_print_callback(GtkWidget { } +/* DOCUMENT (FRAME/IFRAME) MENU */ +/* + * Create and show the "Find Text" dialog window for this document + */ +void a_Commands_findtext_doc_callback(GtkWidget *widget, gpointer client_data) +{ + DilloDoc *dd = (DilloDoc *) client_data; -/* TOOLBAR MENU */ + /* set search list to this document's visible children */ + dd->bw->dd_list = a_Doc_get_visible_children(dd); + a_Interface_findtext_dialog( dd->bw ); +} /* + * Bring up the save doc dialog + */ +void a_Commands_save_doc_callback(GtkWidget *widget, gpointer client_data) +{ + DilloDoc *dd = (DilloDoc *) client_data; + + a_Menu_popup_set_url(dd->bw, a_History_get_url(NAV_TOP(dd))); + a_Interface_save_link_dialog(widget, dd->bw); +} + +/* + * Show only this doc in the page + */ +void a_Commands_showonly_doc_callback(GtkWidget *widget, gpointer client_data) +{ + DilloDoc *dd = (DilloDoc *) client_data; + + a_Nav_push(dd->bw->dd, a_History_get_url(NAV_TOP(dd))); +} + +/* TOOLBAR MENU */ +/* * Abort all active connections for this page * (Downloads MUST keep flowing) */ void a_Commands_stop_callback(GtkWidget *widget, gpointer client_data) { BrowserWindow *bw = client_data; - a_Nav_cancel_expect(bw); - a_Interface_stop(bw); + gchar *msg_enc; + + a_Nav_cancel_expect(bw->dd); + a_Doc_stop(bw->dd); a_Interface_set_button_sens(bw); - a_Interface_msg(bw, "Stopped"); + msg_enc= a_I18n_locale_to_DILLO_CHARSET(_("Stopped")); + a_Interface_msg(bw, msg_enc); + g_free(msg_enc); } /* @@ -171,7 +274,7 @@ void a_Commands_back_callback(GtkWidget { BrowserWindow *bw = (BrowserWindow *) client_data; - a_Nav_back(bw); + a_Nav_back(bw->dd); } /* @@ -211,7 +314,7 @@ void a_Commands_history_callback_same_bw { BrowserWindow *bw = client_data; - a_Nav_jump_callback(widget, bw, 0); + a_Nav_jump_callback(widget, bw->dd, 0); } /* @@ -223,7 +326,19 @@ void a_Commands_history_callback_new_bw( { BrowserWindow *bw = client_data; - a_Nav_jump_callback(widget, bw, 1); + a_Nav_jump_callback(widget, bw->dd, 1); +} + +/* + * Handler for menu entries in the history menus. This one is called, when + * the link should be opened in a new tab. + */ +void a_Commands_history_callback_new_tab(GtkWidget *widget, + gpointer client_data) +{ + BrowserWindow *bw = client_data; + + a_Nav_jump_callback(widget, bw->dd, 2); } /* @@ -233,17 +348,28 @@ void a_Commands_forw_callback(GtkWidget { BrowserWindow *bw = (BrowserWindow *) client_data; - a_Nav_forw(bw); + a_Nav_forw(bw->dd); } /* - * Start the reload process + * Start the reload process for a document + */ +void a_Commands_reload_doc_callback(GtkWidget *widget, gpointer client_data) +{ + DilloDoc *dd = (DilloDoc *)client_data; + + a_Nav_reload(dd); +} + +/* + * Start the reload process for the page */ void a_Commands_reload_callback(GtkWidget *widget, gpointer client_data) { BrowserWindow *bw = (BrowserWindow *) client_data; - a_Nav_reload(bw); + a_Interface_findtext_dialog_close(); + a_Nav_reload(bw->dd); } /* @@ -253,7 +379,36 @@ void a_Commands_home_callback(GtkWidget { BrowserWindow *bw = (BrowserWindow *) client_data; - a_Nav_home(bw); + a_Nav_home(bw->dd); +} + +/* + * Open home with new window/tab + */ +void a_Commands_home_nw_callback(GtkWidget *widget, gpointer client_data) +{ + BrowserWindow *bw = (BrowserWindow *) client_data; + DilloDoc *newdd; + +#ifndef DISABLE_TABS + if (prefs.tab_instead_of_window) { + newdd = a_Doc_new(); + a_Tab_add(bw, newdd); + a_Tab_switch(newdd); + a_Nav_home(newdd); + return; + } +#endif + { + gint width, height; + BrowserWindow *newbw; + + gdk_window_get_size (bw->main_window->window, + &width, &height); + newbw = a_Interface_browser_window_new(width, height, 0); + newdd = newbw->dd; + a_Nav_home(newdd); + } } /* @@ -261,11 +416,12 @@ void a_Commands_home_callback(GtkWidget */ void a_Commands_save_callback(GtkWidget *widget, gpointer client_data) { - BrowserWindow *bw = (BrowserWindow *) client_data; + BrowserWindow *bw = (BrowserWindow *) client_data; a_Interface_save_dialog(widget, bw); } + /* * Bring up the save link dialog */ @@ -276,15 +432,47 @@ void a_Commands_save_link_callback(GtkWi a_Interface_save_link_dialog(widget, bw); } +#ifndef DISABLE_TABS +/* VIEW MENU */ +void a_Commands_tab_prev_callback(GtkWidget *widget, gpointer client_data) +{ + BrowserWindow *bw = (BrowserWindow *) client_data; + gtk_notebook_prev_page(GTK_NOTEBOOK(bw->container)); +} -/* BOOKMARKS MENU */ +void a_Commands_tab_next_callback(GtkWidget *widget, gpointer client_data) +{ + BrowserWindow *bw = (BrowserWindow *) client_data; + gtk_notebook_next_page(GTK_NOTEBOOK(bw->container)); +} +#endif +/* BOOKMARKS MENU */ /* - * Add a bookmark to the current bookmark widget. + * Add a bookmark for the current doc to the current bookmark widget. */ void a_Commands_addbm_callback(GtkWidget *widget, gpointer client_data) { - a_Bookmarks_add(widget, client_data); + BrowserWindow *bw = (BrowserWindow *) client_data; + + a_Bookmarks_add(bw->dd, a_History_get_url(NAV_TOP(bw->dd))); +} + +void a_Commands_addbm_doc_callback(GtkWidget *widget, gpointer client_data) +{ + DilloDoc *dd = (DilloDoc *) client_data; + + a_Bookmarks_add(dd, a_History_get_url(NAV_TOP(dd))); +} + +/* + * add a bookmark for the current link + */ +void a_Commands_addbm_link_callback(GtkWidget *widget, gpointer client_data) +{ + BrowserWindow *bw = (BrowserWindow *) client_data; + + a_Bookmarks_add(bw->dd, a_Menu_popup_get_url(bw)); } /* @@ -294,7 +482,36 @@ void a_Commands_viewbm_callback(GtkWidge { BrowserWindow *bw = (BrowserWindow *) client_data; - a_Bookmarks_show(bw); + a_Bookmarks_show(bw->dd); +} + +/* + * Open bookmarks with new window/tab + */ +void a_Commands_viewbm_nw_callback(GtkWidget *widget, gpointer client_data) +{ + BrowserWindow *bw = (BrowserWindow *) client_data; + DilloDoc *newdd; + +#ifndef DISABLE_TABS + if (prefs.tab_instead_of_window) { + newdd = a_Doc_new(); + a_Tab_add(bw, newdd); + a_Tab_switch(newdd); + a_Bookmarks_show(newdd); + return; + } +#endif + { + gint width, height; + BrowserWindow *newbw; + + gdk_window_get_size (bw->main_window->window, + &width, &height); + newbw = a_Interface_browser_window_new(width, height, 0); + newdd = newbw->dd; + a_Bookmarks_show(newdd); + } } @@ -309,7 +526,7 @@ void a_Commands_helphome_callback(GtkWid BrowserWindow *bw = (BrowserWindow *) client_data; DilloUrl *url = a_Url_new(DILLO_HOME, NULL, 0, 0, 0); - a_Nav_push(bw, url); + a_Nav_push(bw->dd, url); a_Url_free(url); } @@ -323,7 +540,7 @@ void a_Commands_open_link_callback(GtkWi { BrowserWindow *bw = (BrowserWindow *)client_data; - a_Nav_push(bw, a_Menu_popup_get_url(bw)); + a_Nav_push(bw->dd, a_Menu_popup_get_url(bw)); } /* @@ -337,10 +554,59 @@ void a_Commands_open_link_nw_callback(Gt gdk_window_get_size (bw->main_window->window, &width, &height); newbw = a_Interface_browser_window_new(width, height, 0); - a_Nav_push(newbw, a_Menu_popup_get_url(bw)); + a_Nav_push(newbw->dd, a_Menu_popup_get_url(bw)); } /* + * Duplicate current page in a new window + */ +void a_Commands_duplicate_callback(GtkWidget *widget, gpointer client_data) +{ + BrowserWindow *bw = (BrowserWindow *)client_data; + if(bw->dd->nav_stack == NULL) { + a_Commands_new_callback(widget, client_data); + return; + } + + a_Menu_popup_set_url(bw, a_History_get_url(NAV_TOP(bw->dd))); + a_Commands_open_link_nw_callback(widget, client_data); +} + +#ifndef DISABLE_TABS +/* + * Open link in another tab + */ +void a_Commands_open_link_nw_tab_callback(GtkWidget *widget, gpointer client_data) +{ + BrowserWindow *bw = (BrowserWindow *)client_data; + DilloDoc *newdd; + + newdd = a_Doc_new(); + a_Tab_add(bw, newdd); + + if (!prefs.tab_load_in_background) + a_Tab_switch(newdd); + + a_Nav_push(newdd, a_Menu_popup_get_url(bw)); +} + +/* + * Duplicate current page in a new tab + */ +void a_Commands_duplicate_tab_callback(GtkWidget *widget, gpointer client_data) +{ + BrowserWindow *bw = (BrowserWindow *)client_data; + if(bw->dd->nav_stack == NULL) { + a_Commands_new_tab_callback(widget, client_data); + return; + } + + a_Menu_popup_set_url(bw, a_History_get_url(NAV_TOP(bw->dd))); + a_Commands_open_link_nw_tab_callback(widget, client_data); +} +#endif + +/* * Called when the user wants the popup's URL for pasting. */ void a_Commands_select_popup_url_callback(GtkWidget *widget, gpointer data) @@ -349,7 +615,6 @@ void a_Commands_select_popup_url_callbac a_Selection_set_selection(widget, URL_STR(a_Menu_popup_get_url(bw))); } - /* BUG METER POP-UP MENU */ /* @@ -362,7 +627,7 @@ static void Commands_ob_validate_page(Br DilloUrl *url; /* prepare the validation request URI */ - o_url = URL_STR(a_History_get_url(NAV_TOP(bw))); + o_url = URL_STR(a_History_get_url(NAV_TOP(bw->dd))); e_url = a_Misc_escape_chars(o_url, ":/?"); n_url = e_url ? e_url : o_url; g_string_sprintf(gstr, fmt, n_url); @@ -371,7 +636,7 @@ static void Commands_ob_validate_page(Br url = a_Url_new(gstr->str, NULL, 0, 0, 0); g_string_free(gstr, TRUE); - a_Nav_push(bw, url); + a_Nav_push(bw->dd, url); a_Url_free(url); } @@ -407,7 +672,58 @@ void a_Commands_ob_info_callback(GtkWidg const gchar *info_str = "http://www.dillo.org/help/bug_meter.html"; DilloUrl *url = a_Url_new(info_str, NULL, 0, 0, 0); - a_Nav_push(bw, url); + /* here we should un-highlight the selected text */ + a_Nav_push(bw->dd, url); a_Url_free(url); } +/* MAIN WINDOW */ + +/* + * callback for full screen toggle + */ +void a_Commands_full_screen_callback (gpointer client_data) +{ + BrowserWindow *bw = (BrowserWindow *) client_data; + a_Interface_toggle_panel(bw, TRUE); +} + +/* + * Handler for double-mouse-clicks that don't belong to the viewport. + */ +gint a_Commands_click_callback(gpointer client_data, GdkEventButton *event) +{ + BrowserWindow *bw = (BrowserWindow *) client_data; + if (event->type == GDK_2BUTTON_PRESS && event->button == 1) + a_Interface_toggle_panel(bw, TRUE); + return TRUE; +} + +/* + * Handler for key presses that don't belong to the viewport. + * (Used to customize the interface a bit) + */ +void a_Commands_key_press_handler(GtkWidget *widget, + GdkEventKey *event, + gpointer client_data) +{ + BrowserWindow *bw = client_data; + switch (event->keyval) { + case GDK_BackSpace: + /* This key is handled here because GTK accel group ignores it */ + if (event->state & GDK_SHIFT_MASK) + a_Commands_forw_callback(NULL, bw); + else + a_Commands_back_callback(NULL, bw); + break; + case GDK_slash: + /* This key is handled here because GTK accel group ignores it */ + a_Commands_findtext_callback(NULL, bw); + break; + case GDK_Escape: + a_Interface_findtext_dialog_close(); + default: + /* g_print(">> Key pressed!\n"); */ + break; + } +} diff -pruN dillo-0.8.6/src/commands.h dillo-0.8.6-i18n-misc-20060709/src/commands.h --- dillo-0.8.6/src/commands.h 2005-10-28 01:20:07.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/commands.h 2006-05-16 01:21:08.000000000 +0900 @@ -11,10 +11,13 @@ void a_Commands_close_callback(GtkWidget void a_Commands_exit_callback (GtkWidget *widget, gpointer client_data); void a_Commands_viewsource_callback (GtkWidget *widget, gpointer client_data); +void a_Commands_viewsource_doc_callback (GtkWidget *widget, gpointer client_data); void a_Commands_view_page_bugs_callback (GtkWidget *button, gpointer client_data); void a_Commands_selectall_callback (GtkWidget *widget, gpointer client_data); void a_Commands_findtext_callback (GtkWidget *widget, gpointer client_data); +void a_Commands_findtext_doc_callback (GtkWidget *widget, gpointer client_data); +void a_Commands_showonly_doc_callback(GtkWidget *widget, gpointer client_data); void a_Commands_print_callback (GtkWidget *widget, gpointer client_data); GtkMenu *a_Commands_forw_button_menu_creator_callback(GtkExtButton *button, @@ -29,22 +32,42 @@ void a_Commands_history_callback_new_bw( void a_Commands_back_callback (GtkWidget *widget, gpointer client_data); void a_Commands_forw_callback (GtkWidget *widget, gpointer client_data); void a_Commands_reload_callback (GtkWidget *widget, gpointer client_data); +void a_Commands_reload_doc_callback (GtkWidget *widget, gpointer client_data); void a_Commands_stop_callback (GtkWidget *widget, gpointer client_data); void a_Commands_home_callback (GtkWidget *widget, gpointer client_data); +void a_Commands_home_nw_callback(GtkWidget *widget, gpointer client_data); void a_Commands_save_callback (GtkWidget *widget, gpointer client_data); +void a_Commands_save_doc_callback (GtkWidget *widget, gpointer client_data); void a_Commands_save_link_callback (GtkWidget *widget, gpointer client_data); - void a_Commands_addbm_callback (GtkWidget *widget, gpointer client_data); +void a_Commands_addbm_doc_callback (GtkWidget *widget, gpointer client_data); +void a_Commands_addbm_link_callback (GtkWidget *widget, gpointer client_data); void a_Commands_viewbm_callback (GtkWidget *widget, gpointer client_data); +void a_Commands_viewbm_nw_callback(GtkWidget *widget, gpointer client_data); void a_Commands_helphome_callback (GtkWidget *widget, gpointer client_data); void a_Commands_open_link_callback(GtkWidget *widget, gpointer client_data); void a_Commands_open_link_nw_callback(GtkWidget *widget, gpointer client_data); void a_Commands_select_popup_url_callback(GtkWidget *widget, gpointer data); +void a_Commands_duplicate_callback(GtkWidget *widget, gpointer client_data); void a_Commands_ob_w3c_callback(GtkWidget *widget, gpointer client_data); void a_Commands_ob_wdg_callback(GtkWidget *widget, gpointer client_data); void a_Commands_ob_info_callback(GtkWidget *widget, gpointer client_data); +void a_Commands_full_screen_callback(gpointer client_data); +gint a_Commands_click_callback(gpointer client_data, GdkEventButton *event); +void a_Commands_key_press_handler(GtkWidget *widget, + GdkEventKey *event, gpointer client_data); + +#ifndef DISABLE_TABS +void a_Commands_new_tab_callback(GtkWidget *widget, gpointer client_data); +void a_Commands_close_current_tab_callback(GtkWidget *widget, gpointer client_data); +void a_Commands_close_tab_callback(GtkWidget *widget, gpointer client_data); +void a_Commands_tab_prev_callback (GtkWidget *widget, gpointer client_data); +void a_Commands_tab_next_callback (GtkWidget *widget, gpointer client_data); +void a_Commands_open_link_nw_tab_callback(GtkWidget *widget, gpointer client_data); +void a_Commands_duplicate_tab_callback(GtkWidget *widget, gpointer client_data); +#endif #endif /* __COMMANDS_H__ */ diff -pruN dillo-0.8.6/src/cookies.c dillo-0.8.6-i18n-misc-20060709/src/cookies.c --- dillo-0.8.6/src/cookies.c 2006-03-30 03:48:13.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/cookies.c 2006-05-16 01:21:08.000000000 +0900 @@ -15,7 +15,7 @@ * http://www.cis.ohio-state.edu/cs/Services/rfc/rfc-text/rfc2965.txt */ -#define DEBUG_LEVEL 10 +#define DEBUG_LEVEL 0 #include "debug.h" @@ -78,6 +78,109 @@ static CookieControlAction Cookies_contr static CookieControlAction Cookies_control_check_domain(const char *domain); static int Cookie_control_init(void); +static char *months[] = +{ "", + "Jan", "Feb", "Mar", + "Apr", "May", "Jun", + "Jul", "Aug", "Sep", + "Oct", "Nov", "Dec" +}; + +/* + * Take a months name and return a number between 1-12. + * E.g. 'April' -> 4 + */ +static int Cookies_get_month(const char *month_name) +{ + int i; + + for (i = 1; i <= 12; i++) { + if (!g_strncasecmp(months[i], month_name, 3)) + return i; + } + return 0; +} + +/* + * Return a local timestamp from a GMT date string + * Accept: RFC-1123 | RFC-850 | ANSI asctime | Old Netscape format. + * + * Wdy, DD-Mon-YY HH:MM:SS GMT + * Wdy, DD-Mon-YYYY HH:MM:SS GMT + * Weekday, DD-Mon-YY HH:MM:SS GMT + * Weekday, DD-Mon-YYYY HH:MM:SS GMT + * Tue May 21 13:46:22 1991\n + * Tue May 21 13:46:22 1991 + * + * (return 0 on malformed date string syntax) + */ +time_t a_Cookies_create_timestamp(const char *expires) +{ + time_t ret; + int day, month, year, hour, minutes, seconds; + gchar *cp; + gchar *E_msg = + "Expire date is malformed!\n" + " (should be RFC-1123 | RFC-850 | ANSI asctime)\n" + " Ignoring cookie: "; + + cp = strchr(expires, ','); + if (!cp && (strlen(expires) == 24 || strlen(expires) == 25)) { + /* Looks like ANSI asctime format... */ + cp = (gchar *)expires; + day = strtol(cp + 8, NULL, 10); /* day */ + month = Cookies_get_month(cp + 4); /* month */ + year = strtol(cp + 20, NULL, 10); /* year */ + hour = strtol(cp + 11, NULL, 10); /* hour */ + minutes = strtol(cp + 14, NULL, 10); /* minutes */ + seconds = strtol(cp + 17, NULL, 10); /* seconds */ + + } else if (cp && (cp - expires == 3 || cp - expires > 5) && + (strlen(cp) == 24 || strlen(cp) == 26)) { + /* RFC-1123 | RFC-850 format | Old Netscape format */ + day = strtol(cp + 2, NULL, 10); + month = Cookies_get_month(cp + 5); + year = strtol(cp + 9, &cp, 10); + /* todo: tricky, because two digits for year IS ambiguous! */ + year += (year < 70) ? 2000 : ((year < 100) ? 1900 : 0); + hour = strtol(cp + 1, NULL, 10); + minutes = strtol(cp + 4, NULL, 10); + seconds = strtol(cp + 7, NULL, 10); + + } else { + MSG("%s%s\n", E_msg, expires); + return (time_t) 0; + } + + /* Error checks --this may be overkill */ + if (!(day > 0 && day < 32 && month > 0 && month < 13 && year > 1970 && + hour >= 0 && hour < 24 && minutes >= 0 && minutes < 60 && + seconds >= 0 && seconds < 60)) { + MSG("%s%s\n", E_msg, expires); + return (time_t) 0; + } + + /* Calculate local timestamp. + * [stolen from Lynx... (http://lynx.browser.org)] */ + month -= 3; + if (month < 0) { + month += 12; + year--; + } + + day += (year - 1968) * 1461 / 4; + day += ((((month * 153) + 2) / 5) - 672); + ret = (time_t)((day * 60 * 60 * 24) + + (hour * 60 * 60) + + (minutes * 60) + + seconds); + + MSG("Expires in %ld seconds, at %s", + (long)ret - time(NULL), ctime(&ret)); + + return ret; +} + /* * Return a file pointer. If the file doesn't exist, try to create it, * with the optional 'init_str' as its content. @@ -230,7 +333,7 @@ static int Cookie_control_init(void) /* Get a file pointer */ filename = a_Misc_prepend_user_home(".dillo/cookiesrc"); - stream = Cookies_fopen(filename, "DEFAULT DENY\n"); + stream = Cookies_fopen(filename, "DEFAULT ACCEPT\n"); g_free(filename); if (!stream) diff -pruN dillo-0.8.6/src/cookies.h dillo-0.8.6-i18n-misc-20060709/src/cookies.h --- dillo-0.8.6/src/cookies.h 2005-10-28 01:20:07.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/cookies.h 2006-05-16 01:21:08.000000000 +0900 @@ -4,12 +4,13 @@ #ifdef DISABLE_COOKIES # define a_Cookies_get(url) g_strdup("") # define a_Cookies_freeall() ; - void a_Cookies_init( void ); #else char *a_Cookies_get(const DilloUrl *request_url); void a_Cookies_set(GList *cookie_string, const DilloUrl *set_url); void a_Cookies_init( void ); void a_Cookies_freeall( void ); + void a_Cookies_init( void ); + time_t a_Cookies_create_timestamp(const char *expires); #endif #endif /* !__COOKIES_H__ */ diff -pruN dillo-0.8.6/src/dicache.c dillo-0.8.6-i18n-misc-20060709/src/dicache.c --- dillo-0.8.6/src/dicache.c 2005-10-28 01:20:07.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/dicache.c 2006-05-16 01:21:08.000000000 +0900 @@ -18,6 +18,7 @@ #include "image.h" #include "web.h" +#include "doc.h" #include "dicache.h" #include "cache.h" #include "interface.h" @@ -261,7 +262,7 @@ void a_Dicache_callback(int Op, CacheCli } } else if ( Op == CA_Close || Op == CA_Abort ) { a_Image_close(Web->Image); - a_Interface_close_client(Web->bw, Client->Key); + a_Doc_close_client(Web->dd, Client->Key); } } @@ -366,7 +367,7 @@ void a_Dicache_close(DilloUrl *url, gint DicEntry->cmap = NULL; } a_Image_close(Web->Image); - a_Interface_close_client(Web->bw, Client->Key); + a_Doc_close_client(Web->dd, Client->Key); } /* ------------------------------------------------------------------------- */ diff -pruN dillo-0.8.6/src/dillo.c dillo-0.8.6-i18n-misc-20060709/src/dillo.c --- dillo-0.8.6/src/dillo.c 2006-01-03 03:20:08.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/dillo.c 2006-05-16 01:21:08.000000000 +0900 @@ -19,6 +19,8 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include <config.h> + #include <stdio.h> #include <gtk/gtk.h> @@ -35,10 +37,13 @@ #include <locale.h> #include <config.h> +#include "intl.h" +#include "i18n.h" #include "msg.h" #include "dillo.h" #include "misc.h" #include "nav.h" +#include "doc.h" #include "history.h" #include "bookmark.h" #include "dicache.h" @@ -47,8 +52,12 @@ #include "IO/Url.h" #include "prefs.h" #include "interface.h" +#ifndef DISABLE_TABS +#include "tab.h" +#endif /* !DISABLE_TABS */ #include "dw.h" #include "cookies.h" +#include "adblock.h" /* @@ -70,6 +79,7 @@ enum { DILLO_CLI_LOCAL = 1 << 5, DILLO_CLI_GEOMETRY = 1 << 6, DILLO_CLI_DBG_RENDERING = 1 << 7, + DILLO_CLI_RCFILE = 1 << 8, DILLO_CLI_ERROR = 1 << 15 }; @@ -96,27 +106,31 @@ static void Dillo_print_version(void); */ static CLI_options Options[] = { {"-x", "--xid", 1, DILLO_CLI_XID, - " -x, --xid XID Open first Dillo window in an existing\n" - " GtkSocket which window ID is XID (decimal)."}, + N_(" -x, --xid XID Open first Dillo window in an existing\n" + " GtkSocket which window ID is XID (decimal).")}, {"-v", "--version", 0, DILLO_CLI_VERSION, - " -v, --version Display version info and exit."}, + N_(" -v, --version Display version info and exit.")}, {"-h", "--help", 0, DILLO_CLI_HELP, - " -h, --help Display this help text and exit."}, + N_(" -h, --help Display this help text and exit.")}, {"-f", "--fullwindow", 0, DILLO_CLI_FULLWINDOW, - " -f, --fullwindow Start in full window mode: hide address bar,\n" - " navigation buttons, menu, and status bar."}, + N_(" -f, --fullwindow Start in full window mode: hide address bar,\n" + " navigation buttons, menu, and status bar.")}, {"-l", "--local", 0, DILLO_CLI_LOCAL, - " -l, --local Don't follow links for this URL(s)."}, + N_(" -l, --local Don't follow links for this URL(s).")}, {"-g", "-geometry", 1, DILLO_CLI_GEOMETRY, - " -g, -geometry GEO Set initial window position where GEO is\n" - " <width>x<height>{+-}<x>{+-}<y>"}, + N_(" -g, -geometry GEO Set initial window position where GEO is\n" + " <width>x<height>{+-}<x>{+-}<y>")}, {"-D", "--debug-rendering", 0, DILLO_CLI_DBG_RENDERING, - " -D, --debug-rendering Draw additionaly several lines in a web page,\n" - " representing its structure. For debugging. "}, + N_(" -D, --debug-rendering Draw additionaly several lines in a web page,\n" + " representing its structure. For debugging. ")}, + {"-R", "--rcfile", + 1, DILLO_CLI_RCFILE, + N_(" -R, --rcfile FILE Use alternative rcfile.")}, {NULL, NULL, 0, 0, NULL} }; + /* * Return the maximum number of option arguments */ @@ -187,7 +201,7 @@ static void Dillo_sigchld_handler(int si while (1) { pid = waitpid (-1, &status, WNOHANG); if (pid < 0) { - perror ("waitpid"); + //perror ("waitpid"); break; } if (pid == 0) @@ -206,6 +220,7 @@ gint main(int argc, char *argv[]) gchar *dir, *curr_locale; DilloUrl *start_url; BrowserWindow *bw; + DilloDoc *dd; guint32 xid = 0; guint options_got = 0; gint idx = 0; @@ -214,10 +229,18 @@ gint main(int argc, char *argv[]) char **opt_argv = NULL; gint xpos = D_GEOMETRY_DEFAULT_XPOS, ypos = D_GEOMETRY_DEFAULT_YPOS; gint width = D_GEOMETRY_DEFAULT_WIDTH, height = D_GEOMETRY_DEFAULT_HEIGHT; + char *rcfile = NULL; /* set locale */ curr_locale = g_strdup(setlocale(LC_ALL, NULL)); gtk_set_locale(); +#ifdef ENABLE_NLS + /* Initialize Gettext */ + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); +#endif + /* get locale */ + a_I18n_detect_DW_locale(); /* Initialize GUI and parse GTK related args */ gtk_init(&argc, &argv); gdk_rgb_init(); @@ -240,8 +263,8 @@ gint main(int argc, char *argv[]) if (opt_argv[0][0] >= '0' && opt_argv[0][0] <= '9') { xid = strtol(opt_argv[0], NULL, 10); } else { - g_printerr("Error: the XID must be an unsigned decimal numerical " - "value.\nThe offending value was: %s\n", opt_argv[0]); + g_printerr(_("Error: the XID must be an unsigned decimal numerical " + "value.\nThe offending value was: %s\n"), opt_argv[0]); return -1; } break; @@ -254,15 +277,18 @@ gint main(int argc, char *argv[]) case DILLO_CLI_GEOMETRY: if (a_Misc_parse_geometry(opt_argv[0], &xpos, &ypos, &width, &height)) break; + case DILLO_CLI_RCFILE: + rcfile = opt_argv[0]; + break; default: - g_printerr("Error in command line options.\n"); + g_printerr(_("Error in command line options.\n")); return -1; break; } } /* Send a delayed locale-related message */ - MSG("Setting locale to %s...\n", curr_locale); + MSG(_("Setting gtk charset to %s...\n"), DW_CHARSET); g_free(curr_locale); /* This lets threads in the file module end peacefully when aborted @@ -278,7 +304,7 @@ gint main(int argc, char *argv[]) Dillo_check_home_dir(dir); g_free(dir); - a_Prefs_init(); + a_Prefs_init(rcfile); a_Dns_init(); a_Http_init(); a_Mime_init(); @@ -287,6 +313,8 @@ gint main(int argc, char *argv[]) a_Interface_init(); a_Dw_init(); a_Cookies_init(); + a_Adblock_init(); + a_Doc_init(); /* -f overrides dillorc */ if (options_got & DILLO_CLI_FULLWINDOW) @@ -308,18 +336,32 @@ gint main(int argc, char *argv[]) a_Bookmarks_init(); + dd = bw->dd; /* Send dillo's startup screen */ - a_Nav_push(bw, prefs.start_page); + if (idx >= argc) a_Nav_push(dd, prefs.start_page); for (i = idx; i < argc; i++) { - /* If more than one URL/FILE, open in new window */ - if (i > idx) - bw = a_Interface_browser_window_new(prefs.width, prefs.height, 0); + /* If more than one URL/FILE, open in new window/tab */ + if (i > idx) { +#ifndef DISABLE_TABS + if (prefs.tab_instead_of_window) { + dd = a_Doc_new(); + a_Tab_add(bw, dd); + if (!prefs.tab_load_in_background) + a_Tab_switch(dd); + } else { +#endif /* !DISABLE_TABS */ + bw = a_Interface_browser_window_new(prefs.width, prefs.height, 0); + dd = bw->dd; +#ifndef DISABLE_TABS + } +#endif /* !DISABLE_TABS */ + } start_url = Dillo_make_start_url(argv[i]); if (options_got & DILLO_CLI_LOCAL) a_Url_set_flags(start_url, URL_FLAGS(start_url) | URL_SpamSafe); - a_Nav_push(bw, start_url); + a_Nav_push(dd, start_url); a_Url_free(start_url); } @@ -334,17 +376,23 @@ gint main(int argc, char *argv[]) * (This can be left to the OS, but we'll do it, with a view to test * and fix our memory management) */ + a_Adblock_freeall(); a_Cookies_freeall(); a_Cache_freeall(); a_Dicache_freeall(); a_Http_freeall(); +#ifdef DILLO_SSL + a_Https_freeall(); +#endif a_Dns_freeall(); a_Prefs_freeall(); a_Dw_freeall(); a_History_free(); - +#ifdef DEBUG + g_mem_profile(); +#endif /* a_Dpi_bye_dpid(); */ - MSG("Dillo: normal exit!\n"); + _MSG(_("Dillo: normal exit!\n")); return 0; } @@ -358,10 +406,10 @@ static void Dillo_check_home_dir(char *d if ( stat(dir, &st) == -1 ) { if ( errno == ENOENT && mkdir(dir, 0700) < 0 ) { - MSG("Dillo: error creating directory %s: %s\n", - dir, g_strerror(errno)); + MSG(_("Dillo: error creating directory %s: %s\n"), + dir, strerror(errno)); } else - MSG("Dillo: error reading %s: %s\n", dir, g_strerror(errno)); + MSG(_("Dillo: error reading %s: %s\n"), dir, strerror(errno)); } } @@ -410,8 +458,8 @@ Dillo_get_opt(CLI_options *options, int /* Optional arguments have opt_argc < 0 */ if (i < n_arg) { - g_printerr("Option %s requires %d argument(s)\n", - argv[idx - i - 1], n_arg); + g_printerr(_("Option %s requires %d argument(s)\n"), + argv[idx - i - 1], n_arg); state = O_ERROR; } else state = O_OK; @@ -445,18 +493,18 @@ Dillo_get_opt(CLI_options *options, int */ static void Dillo_print_help(CLI_options *options) { - g_print("\nUsage: dillo [OPTIONS] [URL|FILE]...\n" - "Options:\n"); + g_print(_("\nUsage: dillo [OPTIONS] [URL|FILE]...\n" + "Options:\n")); for (; options && options->sh_opt; options++) { if (options->help) - g_print("%s\n", options->help); + g_print("%s\n", _(options->help)); else - g_print(" %s, %s *Undocumented*\n", options->sh_opt, + g_print(_(" %s, %s *Undocumented*\n"), options->sh_opt, options->lg_opt); } - g_print(" URL URL to browse.\n" - " FILE Local FILE to view.\n"); + g_print(_(" URL URL to browse.\n" + " FILE Local FILE to view.\n")); g_print("\n"); } diff -pruN dillo-0.8.6/src/dns.c dillo-0.8.6-i18n-misc-20060709/src/dns.c --- dillo-0.8.6/src/dns.c 2006-03-16 02:01:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/dns.c 2006-05-16 01:21:08.000000000 +0900 @@ -31,7 +31,8 @@ #include "dns.h" #include "list.h" -#define DEBUG_LEVEL 5 +#define DEBUG_LEVEL 0 +//#define DEBUG_LEVEL 5 #include "debug.h" diff -pruN dillo-0.8.6/src/doc.c dillo-0.8.6-i18n-misc-20060709/src/doc.c --- dillo-0.8.6/src/doc.c 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/doc.c 2006-05-16 01:21:08.000000000 +0900 @@ -0,0 +1,656 @@ +/* + * + * Copyright (C) 2003 Frank de Lange + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#include "dw_widget.h" +#include "dw_gtk_scrolled_window.h" +#include "dw_gtk_viewport.h" +#include "dw_container.h" +#include "doc.h" +#include "list.h" +#include "debug.h" +#include "cache.h" +#include "nav.h" +#include "menu.h" +#include "interface.h" +#include "commands.h" +#include <math.h> /* for rint() */ +#ifndef DISABLE_TABS +/* for a_Tab_title_set */ +#include "tab.h" +#endif /* !DISABLE_TABS */ +#include "progressbar.h" +#include "prefs.h" + +#define DEBUG_EVENT 0 +#define DEBUG_SIZE 10 +#define DEBUG_ALLOC 10 + +/* #define DEBUG_LEVEL 0 */ +#include "debug.h" + +/* + * Local Data + */ + +/* DilloDoc holds everything pertaining to a single document */ +static DilloDoc **dillo_doc; +static gint num_dd, num_dd_max; + +/* + * Initialize global data + */ +void a_Doc_init(void) +{ + num_dd = 0; + num_dd_max = 16; + dillo_doc = NULL; +} + +/* callbacks */ + +/* + * callback for docwin delete + * + * this will call a_Doc_destroy for the associated DilloDoc + */ +void +Doc_docwin_destroy_callback(GtkWidget *widget, + gpointer user_data) +{ + DilloDoc *dd = (DilloDoc *) user_data; + /* aargh... get GTK to be quit about the non-existing gadget... */ + if (GTK_DW_SCROLLED_WINDOW(widget)->gadget) + GTK_DW_SCROLLED_WINDOW(widget)->gadget = NULL; + + a_Doc_destroy(dd); +} + +/* public functions */ + +/* + * Stop all active connections for the document (except downloads) + */ +void a_Doc_stop(DilloDoc *dd) +{ + g_return_if_fail ( dd != NULL ); + DEBUG_MSG(3, "a_Doc_stop: hi!\n"); + + /* Remove root clients */ + while ( dd->NumRootClients ) { + a_Cache_stop_client(dd->RootClients[0]); + a_List_remove(dd->RootClients, 0, dd->NumRootClients); + } + /* Remove image clients */ + while ( dd->NumImageClients ) { + a_Cache_stop_client(dd->ImageClients[0]); + a_List_remove(dd->ImageClients, 0, dd->NumImageClients); + } +} + +/* + * Empty RootClients, ImageClients and PageUrls lists and + * reset progress bar data. + */ +void a_Doc_clean(DilloDoc *dd) +{ + g_return_if_fail ( dd != NULL ); + + while ( dd->NumRootClients ) + a_List_remove(dd->RootClients, 0, dd->NumRootClients); + + while ( dd->NumImageClients ) + a_List_remove(dd->ImageClients, 0, dd->NumImageClients); + + while ( dd->NumPageUrls ) { + a_Url_free(dd->PageUrls[0].Url); + a_List_remove(dd->PageUrls, 0, dd->NumPageUrls); + } + + /* Zero image-progressbar data */ + dd->NumImages = 0; + dd->NumImagesGot = 0; + + /* Zero progressbar data and ready state */ + dd->progress = 0.0; + dd->ready = TRUE; +} + +/* + * Remove the cache-client from the dd list + * (client can be a image or a html page) + */ +void a_Doc_remove_client(DilloDoc *dd, gint ClientKey) +{ + gint i; + gboolean Found = FALSE; + + g_return_if_fail ( dd != NULL ); + + for ( i = 0; !Found && i < dd->NumRootClients; ++i) + if ( dd->RootClients[i] == ClientKey ) { + a_List_remove(dd->RootClients, i, dd->NumRootClients); + Found = TRUE; + } + + for ( i = 0; !Found && i < dd->NumImageClients; ++i) + if ( dd->ImageClients[i] == ClientKey ) { + a_List_remove(dd->ImageClients, i, dd->NumImageClients); + dd->NumImagesGot++; + Found = TRUE; + } + + a_Interface_set_button_sens(dd->bw); +} + + +/* + * Remove the cache-client from the dd list + * (client can be a image or a html page) + */ +void a_Doc_close_client(DilloDoc *dd, gint ClientKey) +{ + g_return_if_fail ( dd != NULL ); + + a_Doc_remove_client(dd, ClientKey); + a_Doc_progress_update(dd); +} + +/* + * update progress bar, set button sensitivity + */ +void +a_Doc_progress_update(DilloDoc *dd) +{ + gchar progress[PBAR_L]; + + g_return_if_fail ( dd != NULL ); + + if(dd->bw->dd == dd) { + a_Interface_set_button_sens(dd->bw); + g_snprintf(progress, PBAR_L, "%s%d of %d", + PBAR_ISTR(prefs.panel_size == 1), + dd->NumImagesGot, dd->NumImages); + a_Progressbar_update(dd->bw->imgprogress, progress, + (dd->NumImagesGot == dd->NumImages) ? 0 : 1 ); + g_snprintf(progress, PBAR_L, "%s%.1f Kb", + PBAR_PSTR(prefs.panel_size == 1), + (float)dd->progress); + a_Progressbar_update(dd->bw->progress, progress, (dd->ready) ? 0 : 1 ); + } +} + + +/* + * Add a reference to the cache-client in the document's list. + * This helps us keep track of which are active in the document so that it's + * possible to abort them. + * (Root: Flag, whether a Root URL or not) + */ +void a_Doc_add_client(DilloDoc *dd, gint Key, gint Root) +{ + gint nc; + + g_return_if_fail ( dd != NULL ); + + if ( Root ) { + nc = dd->NumRootClients; + a_List_add(dd->RootClients, nc, dd->MaxRootClients); + dd->RootClients[nc] = Key; + dd->NumRootClients++; + } else { + nc = dd->NumImageClients; + a_List_add(dd->ImageClients, nc, dd->MaxImageClients); + dd->ImageClients[nc] = Key; + dd->NumImageClients++; + dd->NumImages++; + } + a_Doc_progress_update(dd); +} + +/* + * Add an URL to the document's list. + * This helps us keep track of page requested URLs so that it's + * possible to stop, abort and reload them.) + * Flags: Chosen from {DD_Root, DD_Image, DD_Download} + */ +void a_Doc_add_url(DilloDoc *dd, const DilloUrl *Url, gint Flags) +{ + gint nu, i; + gboolean found = FALSE; + + g_return_if_fail ( dd != NULL && Url != NULL ); + + nu = dd->NumPageUrls; + for ( i = 0; i < nu; i++ ) { + if ( !a_Url_cmp(Url, dd->PageUrls[i].Url) ) { + found = TRUE; + break; + } + } + if ( !found ) { + a_List_add(dd->PageUrls, nu, dd->MaxPageUrls); + dd->PageUrls[nu].Url = a_Url_dup(Url); + dd->PageUrls[nu].Flags = Flags; + dd->NumPageUrls++; + } +} + +/* + * set document title + * + * this will propagate to the current interface element + * + * currently just forwards to a_Tab_title_set (when tabs + * are compiled in) or a_Interface_set_page_title (when + * compiled without tab support) + */ +void +a_Doc_title_set(DilloDoc *dd, gchar *title) +{ + g_return_if_fail ( dd != NULL && title != NULL ); + + /* only set title for top level document */ + if(dd->parent == NULL) +#ifndef DISABLE_TABS + a_Tab_title_set(dd, title); +#else + a_Interface_set_page_title(dd->bw, title); +#endif +} + +/* + * set document location + * + * this will propagate to the current interface element + * + * currently just forwards to a_Interface_set_location_text + */ +void +a_Doc_location_set(DilloDoc *dd, gchar *location) +{ + g_return_if_fail ( dd != NULL && location != NULL ); + + /* only set location text if this is the current tab */ + if((dd->parent == NULL) && dd->bw->dd == dd) { + a_Interface_set_location_text(dd->bw, location); + } +} + +/* + * destroy a document + */ +void a_Doc_destroy(DilloDoc *dd) +{ + gint i; + + g_return_if_fail ( dd != NULL ); + + /* stop/abort open connections. */ + a_Doc_stop(dd); + + for (i = 0; i < num_dd; i++) + if (dillo_doc[i] == dd) { + dillo_doc[i] = dillo_doc[--num_dd]; + break; + } + + /* free nav_stack and nav_expect stuff */ + a_Nav_free(dd); + + /* unref the style */ + if(dd->style) + a_Dw_style_unref(dd->style); + + /* destroy pagemark menu */ + a_Menu_pagemarks_destroy(dd); + + g_free(dd->RootClients); + g_free(dd->ImageClients); + + if(dd->name) + g_free(dd->name); + + for (i = 0; i < dd->NumPageUrls; i++) + a_Url_free(dd->PageUrls[i].Url); + g_free(dd->PageUrls); + g_free(dd); +} + +/* + * set the dd's cursor type, and update the docwin if it is + * mapped. + */ +void a_Doc_set_cursor(DilloDoc *dd, GdkCursorType CursorType) +{ + GdkCursor *cursor; + + g_return_if_fail ( dd != NULL ); + + if ( dd->CursorType != CursorType ) { + if(GTK_WIDGET_MAPPED(dd->docwin)) { + cursor = gdk_cursor_new(CursorType); + gdk_window_set_cursor(dd->docwin->window, cursor); + gdk_cursor_destroy(cursor); + } + dd->CursorType = CursorType; + } +} + +/* + * Get the DilloDoc which contains *docwin + * returns NULL if dd not found + */ +DilloDoc * +a_Doc_get_by_docwin(GtkWidget *docwin) +{ + gint i; + + g_return_val_if_fail ( docwin != NULL, NULL ); + + for (i = 0; i < num_dd; i++) + if (dillo_doc[i]->docwin == docwin) + return dillo_doc[i]; + + return NULL; +} + +/* + * set the dd's name (used for targeted links) + */ +void a_Doc_set_name(DilloDoc *dd, gchar *name) +{ + g_return_if_fail((dd != NULL) && (name != NULL)); + + if (dd && name) { + if (dd->name) + g_free((gchar *)dd->name); + dd->name = g_strdup(name); + } +} + +/* + * Get a named DilloDoc + * + * First checks if name is one of the reserved names + * ("_blank", "_self", "_parent" and "_top") and acts + * accordingly if so. If not, it searches for a document + * with the same root as the document which initiated the + * search. If still not found, it searches for the first + * document with the given name. + * + * returns NULL if no matching document found + */ +DilloDoc * +a_Doc_get_by_name(DilloDoc *dd, gchar *name) +{ + gint i, n; + DilloDoc *parent, *document; + gint width, height; + BrowserWindow *newbw; + + g_return_val_if_fail((dd != NULL) && (name != NULL), NULL); + + parent = a_Doc_get_root(dd); + document = NULL; + + /* first see if the target name is one of the reserved names, + * if so act appropriately */ + if(!g_strcasecmp(name, "_blank")) { + +#ifndef DISABLE_TABS + if(prefs.tab_instead_of_window) + { + document = a_Doc_new(); + a_Tab_add(parent->bw, document); + } + else +#endif /* !DISABLE_TABS */ + { + gdk_window_get_size(parent->bw->main_window->window, &width, &height); + newbw = a_Interface_browser_window_new(width, height, 0); + document = newbw->dd; + } + } + else if(!g_strcasecmp(name, "_self")) + document = dd; + else if(!g_strcasecmp(name, "_parent")) + document = a_Doc_get_parent(dd); + else if(!g_strcasecmp(name, "_top")) + document = a_Doc_get_root(dd); + + /* if previous search did not match, first try to find document with same parent, + * if not found try to find first matching named document + */ + if(!document) + for (n = 1; n >= 0; n--) { + for (i = 0; i < num_dd; i++) + if (dillo_doc[i]->name && + (!g_strcasecmp(name, dillo_doc[i]->name)) && + (n ? (a_Doc_get_root(dillo_doc[i]) == parent) : TRUE)) { + document = dillo_doc[i]; + break; + } + if(document) + break; + } + + return document; +} + +/* + * Get the parent document + * For unparented documents it just returns the document itself + */ +DilloDoc * +a_Doc_get_parent(DilloDoc *dd) +{ + DilloDoc *parent; + + g_return_val_if_fail(dd != NULL, NULL); + + parent = dd; + if(parent->parent) + parent = parent->parent; + + return parent; +} + +/* + * Get the root document + * For unparented documents it just returns the document itself. + */ +DilloDoc * +a_Doc_get_root(DilloDoc *dd) +{ + DilloDoc *parent; + + g_return_val_if_fail(dd != NULL, NULL); + + parent = dd; + while(parent->parent) + parent = parent->parent; + + return parent; +} + +/* + * get all visible children (nested documents) for this document + * + * returns: pointer to GList containing all visible descendants of + * the document (including the document itself as the first + * item if it is visible. Frameset documents are not visible, + * so they are not included in the list). + * + * returned GList must be g_list_free()'d by caller + */ +GList * +a_Doc_get_visible_children(DilloDoc *dd) +{ + gint i; + GList *children; + + g_return_val_if_fail(dd != NULL, NULL); + + children = NULL; + + /* first add 'self' to list */ + if(GTK_WIDGET_VISIBLE(dd->docwin)) + children = g_list_append(children, dd); + for (i = 0; i < num_dd; i++) + if (dillo_doc[i]->parent == dd) + children = g_list_concat(children, + a_Doc_get_visible_children(dillo_doc[i])); + + return children; +} + +/* + * Set parent + */ +void +a_Doc_set_parent(DilloDoc *dd, DilloDoc *parent) +{ + g_return_if_fail (dd != NULL && parent != NULL); + + dd->parent = parent; + a_Doc_set_browserwindow(dd, parent->bw); +} + +/* + * set browserwindow + */ +void +a_Doc_set_browserwindow(DilloDoc *dd, BrowserWindow *bw) +{ + DwStyle style_attrs; + DwStyleFont font; + + g_return_if_fail (dd != NULL && bw != NULL); + + /* set dd's current window */ + dd->bw = bw; + + /* Catch key_press event */ + gtk_signal_connect(GTK_OBJECT(GTK_BIN(dd->docwin)->child), + "key_press_event", + GTK_SIGNAL_FUNC(a_Commands_key_press_handler), + bw); + + /* Full screen mode via double click is done in two ways: First, + * a feature of the selection is used, since in complex pages, + * getting events back to the viewport is quite difficult. Second, + * a simple callback, called e.g. when viewing image resources. + */ + a_Selection_set_dclick_callback( + GTK_DW_VIEWPORT(GTK_BIN(GTK_BIN(dd->docwin)->child)->child)->selection, + (void(*)(gpointer))a_Commands_full_screen_callback, + bw); + /* Selection requires an owner widget */ + a_Selection_set_owner( + GTK_DW_VIEWPORT(GTK_BIN(GTK_BIN(dd->docwin)->child)->child)->selection, + GTK_BIN(dd->docwin)->child); + +#if 0 + /* deselect location bar contents when the scrolled_frame gets focus */ + gtk_signal_connect_object(GTK_OBJECT(GTK_BIN(dd->docwin)->child), + "grab-focus", + a_Interface_content_focus_callback, + (gpointer) bw); +#endif + + gtk_signal_connect_object_after(GTK_OBJECT(GTK_BIN(dd->docwin)->child), + "button_press_event", + GTK_SIGNAL_FUNC(a_Commands_click_callback), + (gpointer) bw); + + /* create style for Dw */ + font.name = prefs.vw_fontname; /* must be defined */ + font.size = rint(DOC_DEFAULT_FONT_SIZE * prefs.font_factor); + font.weight = 400; + font.style = DW_STYLE_FONT_STYLE_NORMAL; + + a_Dw_style_init_values (&style_attrs, dd->bw->main_window->window); + a_Dw_style_box_set_val (&style_attrs.margin, DOC_DEFAULT_MARGIN); + style_attrs.font = a_Dw_style_font_new (&font); + style_attrs.color = + a_Dw_style_color_new (prefs.text_color, dd->bw->main_window->window); + style_attrs.background_color = + a_Dw_style_color_new (prefs.bg_color, dd->bw->main_window->window); + dd->style = a_Dw_style_new (&style_attrs, dd->bw->main_window->window); +} + +/* + * Create a new DilloDoc + * (the new document is stored in dillo_doc) + */ +DilloDoc * +a_Doc_new(void) +{ + DilloDoc *dd; + dd = g_new0(DilloDoc, 1); + a_List_add(dillo_doc, num_dd, num_dd_max); + dillo_doc[num_dd++] = dd; + + a_Nav_init(dd); + + dd->docwin = a_Dw_gtk_scrolled_window_new(); + dd->style = NULL; + dd->parent = NULL; + + dd->frameset = NULL; + dd->name = NULL; + + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(dd->docwin), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + + /* this callback NULLs the docwin->gadget (to keep GTK from + * complaining when it tries to destroy a non-existing widget - there + * should be a check in dw_gtk_scrolled_window to see if scrolled->gadget + * really points at a GTK widget... + * + * it also destroys the DilloDoc by the way... + */ + gtk_signal_connect(GTK_OBJECT(dd->docwin), + "destroy", + GTK_SIGNAL_FUNC(Doc_docwin_destroy_callback), + (gpointer) dd); + + gtk_widget_show(dd->docwin); + + /* initialize the rest of the bt's data. */ + dd->redirect_level = 0; + dd->RootClients = NULL; + dd->NumRootClients = 0; + dd->MaxRootClients = 8; + + dd->ImageClients = NULL; + dd->NumImageClients = 0; + dd->MaxImageClients = 8; + dd->NumImages = 0; + dd->NumImagesGot = 0; + + dd->PageUrls = NULL; + dd->NumPageUrls = 0; + dd->MaxPageUrls = 8; + + dd->auth_await_url = NULL; + + dd->pagemarks_menu = NULL; + dd->pagemarks_last = NULL; + + dd->CursorType = -1; + + dd->progress = 0.0; + dd->ready = TRUE; + + return dd; +} + + diff -pruN dillo-0.8.6/src/doc.h dillo-0.8.6-i18n-misc-20060709/src/doc.h --- dillo-0.8.6/src/doc.h 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/doc.h 2006-05-16 01:21:08.000000000 +0900 @@ -0,0 +1,35 @@ +#ifndef __DOC_H__ +#define __DOC_H__ + +#include "browser.h" /* for DilloDoc */ + +/* used to set default margin for documents */ +#define DOC_DEFAULT_MARGIN 5 +#define DOC_DEFAULT_FONT_SIZE 12.0 + +/* macros for documents */ +#define DD_HAS_FOCUS(dd,bw) bw->dd == dd + +void a_Doc_init(void); +void a_Doc_stop(DilloDoc *dd); +void a_Doc_clean(DilloDoc *dd); +void a_Doc_title_set(DilloDoc *dd, gchar *title); +void a_Doc_location_set(DilloDoc *dd, gchar *location); +void a_Doc_remove_client(DilloDoc *dd, gint ClientKey); +void a_Doc_close_client(DilloDoc *dd, gint ClientKey); +void a_Doc_add_client(DilloDoc *dd, gint Key, gint Root); +void a_Doc_add_url(DilloDoc *dd, const DilloUrl *Url, gint Flags); +void a_Doc_destroy(DilloDoc *dd); +void a_Doc_set_cursor(DilloDoc *dd, GdkCursorType CursorType); +void a_Doc_set_name(DilloDoc *dd, gchar *name); +DilloDoc * a_Doc_get_by_name(DilloDoc *dd, gchar *name); +void a_Doc_set_parent(DilloDoc *dd, DilloDoc *parent); +void a_Doc_set_browserwindow(DilloDoc *dd, BrowserWindow *bw); +void a_Doc_progress_update(DilloDoc *dd); +GList * a_Doc_get_visible_children(DilloDoc *dd); +DilloDoc * a_Doc_get_by_docwin(GtkWidget *docwin); +DilloDoc * a_Doc_get_parent(DilloDoc *dd); +DilloDoc * a_Doc_get_root(DilloDoc *dd); +DilloDoc * a_Doc_new(void); + +#endif /* __DOC_H__ */ diff -pruN dillo-0.8.6/src/dpiapi.c dillo-0.8.6-i18n-misc-20060709/src/dpiapi.c --- dillo-0.8.6/src/dpiapi.c 2006-01-12 21:19:02.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/dpiapi.c 2006-05-16 01:21:09.000000000 +0900 @@ -30,9 +30,9 @@ static char *dialog_server = NULL; /* * Generic callback function for dpip dialogs. */ -static void Dpiapi_dialog_answer_cb(BrowserWindow *bw) +static void Dpiapi_dialog_answer_cb(DilloDoc *dd) { - DialogAnswer *answer = bw->question_dialog_answer; + DialogAnswer *answer = dd->bw->question_dialog_answer; char *cmd, numstr[16]; /* make dpip tag with the answer */ @@ -41,18 +41,18 @@ static void Dpiapi_dialog_answer_cb(Brow "answer", "dialog", numstr); /* Send answer */ - a_Capi_dpi_send_cmd(NULL, bw, cmd, dialog_server, 0); + a_Capi_dpi_send_cmd(NULL, dd, cmd, dialog_server, 0); /* cleanup */ - bw->question_dialog_data = NULL; + dd->bw->question_dialog_data = NULL; g_free(answer->this); - bw->question_dialog_answer = NULL; + dd->bw->question_dialog_answer = NULL; } /* * Process a dpip "dialog" command from any dpi. */ -void a_Dpiapi_dialog(BrowserWindow *bw, char *server, char *dpip_tag) +void a_Dpiapi_dialog(DilloDoc *dd, char *server, char *dpip_tag) { char *question, *alt1, *alt2, *alt3, *alt4, *alt5; size_t dpip_tag_len; @@ -73,7 +73,7 @@ void a_Dpiapi_dialog(BrowserWindow *bw, alt5 = a_Dpip_get_attr(dpip_tag, dpip_tag_len, "alt5"); a_Interface_question_dialog( - bw, question, TRUE, + dd, question, TRUE, alt1, alt2, alt3, alt4, alt5, (GtkSignalFunc) Dpiapi_dialog_answer_cb); diff -pruN dillo-0.8.6/src/dpiapi.h dillo-0.8.6-i18n-misc-20060709/src/dpiapi.h --- dillo-0.8.6/src/dpiapi.h 2005-10-28 01:20:07.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/dpiapi.h 2006-05-16 01:21:09.000000000 +0900 @@ -1,3 +1,3 @@ -void a_Dpiapi_dialog(BrowserWindow *bw, char *server, char *dpip_tag); +void a_Dpiapi_dialog(DilloDoc *dd, char *server, char *dpip_tag); diff -pruN dillo-0.8.6/src/dw_gtk_scrolled_frame.c dillo-0.8.6-i18n-misc-20060709/src/dw_gtk_scrolled_frame.c --- dillo-0.8.6/src/dw_gtk_scrolled_frame.c 2006-01-03 03:18:34.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/dw_gtk_scrolled_frame.c 2006-05-16 01:21:08.000000000 +0900 @@ -451,25 +451,29 @@ static gint Dw_gtk_scrolled_frame_key_pr case GDK_Up: case GDK_KP_Up: Dw_gtk_scrolled_frame_move_by (frame, 0, - - frame->vadjustment->step_increment); + - frame->vadjustment->step_increment + * ((event->state & GDK_SHIFT_MASK)?12:2)); return TRUE; case GDK_Down: case GDK_KP_Down: Dw_gtk_scrolled_frame_move_by (frame, 0, - + frame->vadjustment->step_increment); + + frame->vadjustment->step_increment + * ((event->state & GDK_SHIFT_MASK)?12:2)); return TRUE; case GDK_Left: case GDK_KP_Left: Dw_gtk_scrolled_frame_move_by (frame, - - frame->hadjustment->step_increment, 0); + - frame->hadjustment->step_increment + * ((event->state & GDK_SHIFT_MASK)?12:2), 0); return TRUE; case GDK_Right: case GDK_KP_Right: Dw_gtk_scrolled_frame_move_by (frame, - + frame->hadjustment->step_increment, 0); + + frame->hadjustment->step_increment + * ((event->state & GDK_SHIFT_MASK)?12:2), 0); return TRUE; case GDK_Tab: diff -pruN dillo-0.8.6/src/dw_gtk_scrolled_window.c dillo-0.8.6-i18n-misc-20060709/src/dw_gtk_scrolled_window.c --- dillo-0.8.6/src/dw_gtk_scrolled_window.c 2005-10-28 01:20:09.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/dw_gtk_scrolled_window.c 2006-05-16 01:21:08.000000000 +0900 @@ -15,6 +15,7 @@ #include "dw_gtk_scrolled_frame.h" #include "dw_gtk_viewport.h" #include "findtext.h" +#include "dw_tooltip.h" #include <gtk/gtk.h> #include "debug.h" @@ -242,6 +243,7 @@ static void Dw_gtk_scrolled_window_size_ GtkWidget *hscrollbar, *vscrollbar; gint gx, gy; + a_Dw_tooltip_count_reset(); GTK_WIDGET_CLASS(parent_class)->size_allocate (widget, allocation); widget->allocation = *allocation; @@ -465,7 +467,7 @@ gboolean a_Dw_gtk_scrolled_window_search void a_Dw_gtk_scrolled_window_reset_search (GtkDwScrolledWindow *scrolled) { GtkWidget *viewport; - + //g_print("%d\n",(int)gtk_type_check_object_cast ((GtkTypeObject*) scrolled, gtk_bin_get_type ())); viewport = GTK_BIN(GTK_BIN(scrolled)->child)->child; a_Findtext_reset_search (GTK_DW_VIEWPORT(viewport)->findtext_state); } diff -pruN dillo-0.8.6/src/dw_gtk_viewport.c dillo-0.8.6-i18n-misc-20060709/src/dw_gtk_viewport.c --- dillo-0.8.6/src/dw_gtk_viewport.c 2005-10-28 01:20:09.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/dw_gtk_viewport.c 2006-05-16 01:21:08.000000000 +0900 @@ -12,6 +12,7 @@ #include <gtk/gtk.h> #include "msg.h" #include "dw_gtk_viewport.h" +#include "dw_tooltip.h" #include "dw_container.h" #include "list.h" @@ -454,6 +455,7 @@ static gint Dw_gtk_viewport_enter_notify static gint Dw_gtk_viewport_leave_notify (GtkWidget *widget, GdkEventCrossing *event) { + a_Dw_tooltip_count_reset(); /* There will anyway be no Dw widget, thus this simple call */ return Dw_widget_mouse_event (NULL, widget, 0, 0, NULL); } @@ -478,7 +480,8 @@ void Dw_gtk_viewport_update_background ( /* The toplevel widget should always have a defined background color, * except at the beginning. Searching a defined background is not * necessary. */ - if (viewport->child && viewport->child->style && + if (GTK_LAYOUT(viewport)->bin_window && + viewport->child && viewport->child->style && viewport->child->style->background_color) gdk_window_set_background (GTK_LAYOUT(viewport)->bin_window, &viewport->child->style->background_color @@ -831,10 +834,10 @@ gchar* p_Dw_gtk_viewport_add_anchor (DwW anchor->name = g_strdup (name); anchor->widget = widget; anchor->y = y; - + g_hash_table_insert (viewport->anchors_table, anchor->name, anchor); Dw_gtk_viewport_update_anchor (viewport); - + return anchor->name; } } @@ -888,14 +891,14 @@ void p_Dw_gtk_viewport_remove_anchor (Dw g_return_if_fail (widget->viewport != NULL); viewport = GTK_DW_VIEWPORT (widget->viewport); - exists = + exists = g_hash_table_lookup_extended (viewport->anchors_table, name, NULL, &tmp_anchor); g_return_if_fail(exists); anchor = tmp_anchor; g_return_if_fail(anchor->widget == widget); - + g_hash_table_remove (viewport->anchors_table, name); g_free (anchor->name); g_free (anchor); diff -pruN dillo-0.8.6/src/dw_image.c dillo-0.8.6-i18n-misc-20060709/src/dw_image.c --- dillo-0.8.6/src/dw_image.c 2005-10-28 01:20:10.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/dw_image.c 2006-05-16 01:21:08.000000000 +0900 @@ -10,9 +10,16 @@ * (at your option) any later version. */ +#include "i18n_gtk.h" #include "msg.h" #include "dw_image.h" #include "dw_gtk_viewport.h" +#ifndef DISABLE_ANTI_ALIAS + #include <X11/Xlib.h> + #include <X11/Xft/Xft.h> + #undef Status + #include <gdk/gdkx.h> +#endif #include "prefs.h" #include "dw_marshal.h" #include "list.h" @@ -87,11 +94,15 @@ enum LINK_PRESSED, LINK_RELEASED, LINK_CLICKED, + IMAGE_PRESSED, LAST_SIGNAL }; static guint image_signals[LAST_SIGNAL] = { 0 }; static DwWidgetClass *parent_class; +#ifndef DISABLE_ANTI_ALIAS +static XftDraw *xftdraw = NULL; +#endif /* @@ -205,6 +216,14 @@ static void Dw_image_class_init (DwImage GTK_TYPE_BOOL, 4, GTK_TYPE_INT, GTK_TYPE_INT, GTK_TYPE_INT, GTK_TYPE_GDK_EVENT); + image_signals[IMAGE_PRESSED] = + gtk_signal_new ("image_pressed", + GTK_RUN_FIRST, + object_class->type, + GTK_SIGNAL_OFFSET (DwImageClass, image_pressed), + gtk_marshal_NONE__POINTER, + GTK_TYPE_NONE, + 1, GTK_TYPE_GDK_EVENT); gtk_object_class_add_signals (object_class, image_signals, LAST_SIGNAL); widget_class = (DwWidgetClass*)klass; @@ -245,6 +264,9 @@ static void Dw_image_size_request (DwWid DwRequisition *requisition) { DwImage *image; +#ifndef DISABLE_ANTI_ALIAS + XGlyphInfo info; +#endif image = DW_IMAGE (widget); @@ -255,8 +277,14 @@ static void Dw_image_size_request (DwWid requisition->descent = 0; } else { if (image->alt_text_width == -1) +#ifndef DISABLE_ANTI_ALIAS + XftTextExtentsUtf8(GDK_DISPLAY(), widget->style->font->font, + image->alt_text, strlen(image->alt_text), &info); + image->alt_text_width = info.xOff; +#else image->alt_text_width = gdk_string_width (widget->style->font->font, image->alt_text); +#endif requisition->width = image->alt_text_width; requisition->ascent = widget->style->font->font->ascent; @@ -306,6 +334,11 @@ static void Dw_image_draw (DwWidget *wid guchar *buffer, *bstart; int i; gboolean selected = FALSE; +#ifndef DISABLE_ANTI_ALIAS + XGlyphInfo info; + XftColor xftcolor; + GdkWindow *window; +#endif if (image->buffer) { p_Dw_widget_draw_widget_box (widget, area, FALSE); @@ -339,8 +372,14 @@ static void Dw_image_draw (DwWidget *wid } else { if (image->alt_text && image->alt_text[0]) { if (image->alt_text_width == -1) +#ifndef DISABLE_ANTI_ALIAS + XftTextExtentsUtf8(GDK_DISPLAY(), widget->style->font->font, + image->alt_text, strlen(image->alt_text), &info); + image->alt_text_width = info.xOff; +#else image->alt_text_width = gdk_string_width (widget->style->font->font, image->alt_text); +#endif if (widget->allocation.width < image->alt_text_width || widget->allocation.ascent + widget->allocation.descent @@ -349,13 +388,43 @@ static void Dw_image_draw (DwWidget *wid p_Dw_widget_will_clip (widget); p_Dw_widget_draw_widget_box (widget, area, FALSE); - gdk_draw_string +#ifndef DISABLE_ANTI_ALIAS + if (!xftdraw) { + window = DW_WIDGET_WINDOW (widget); + xftdraw = XftDrawCreate(GDK_DISPLAY(), + GDK_WINDOW_XWINDOW(window), + DefaultVisual(GDK_DISPLAY(), DefaultScreen(GDK_DISPLAY())), + DefaultColormap(GDK_DISPLAY(), DefaultScreen(GDK_DISPLAY()))); +#ifdef XFT_VERSION + if (XftDrawDrawable(xftdraw) != GDK_WINDOW_XWINDOW(window)) { +#else + if (xftdraw->drawable != GDK_WINDOW_XWINDOW(window)) { +#endif + XftDrawChange(xftdraw, GDK_WINDOW_XWINDOW(window)); + } + } + xftcolor.pixel = widget->style->color->color.pixel; + xftcolor.color.red = widget->style->color->color.red; + xftcolor.color.green = widget->style->color->color.green; + xftcolor.color.blue = widget->style->color->color.blue; + xftcolor.color.alpha = 0xffff; + XftDrawStringUtf8(xftdraw, + &xftcolor, + widget->style->font->font, + p_Dw_widget_x_world_to_viewport (widget, widget->allocation.x), + p_Dw_widget_y_world_to_viewport (widget, widget->allocation.y) + + widget->style->font->font->ascent, + image->alt_text, + strlen(image->alt_text)); +#else + a_I18n_gdk_draw_string (DW_WIDGET_WINDOW (widget), widget->style->font->font, widget->style->color->gc, p_Dw_widget_x_world_to_viewport (widget, widget->allocation.x), p_Dw_widget_y_world_to_viewport (widget, widget->allocation.y) + widget->style->font->font->ascent, image->alt_text); +#endif } } @@ -387,6 +456,7 @@ static gboolean Dw_image_leave_notify (D DwImage *image = DW_IMAGE (widget); gboolean return_val = FALSE; + a_Dw_tooltip_count_reset(); if (image->hover_link != -1) { image->hover_link = -1; gtk_signal_emit (GTK_OBJECT (widget), image_signals[LINK_ENTERED], @@ -416,6 +486,14 @@ static gboolean Dw_image_button_press (D gtk_signal_emit (GTK_OBJECT (widget), image_signals[LINK_PRESSED], image->pressed_link, link_x, link_y, event, &return_val); + +#if 0 + if (DW_WIDGET(widget)->button_sensitive) { + gtk_signal_emit (GTK_OBJECT (widget), image_signals[IMAGE_PRESSED], event); + return TRUE; + } else + return FALSE; +#endif return return_val; } diff -pruN dillo-0.8.6/src/dw_image.h dillo-0.8.6-i18n-misc-20060709/src/dw_image.h --- dillo-0.8.6/src/dw_image.h 2005-10-28 01:20:10.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/dw_image.h 2006-05-16 01:21:08.000000000 +0900 @@ -69,6 +69,10 @@ struct _DwImageClass gboolean (*link_clicked) (DwImage *page, gint link, gint x, gint y, GdkEventButton *event); +#if 1 + void (*image_pressed) (DwImage *page, + GdkEventButton *event); +#endif }; diff -pruN dillo-0.8.6/src/dw_page.c dillo-0.8.6-i18n-misc-20060709/src/dw_page.c --- dillo-0.8.6/src/dw_page.c 2006-01-03 03:17:52.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/dw_page.c 2006-05-16 01:21:08.000000000 +0900 @@ -19,8 +19,10 @@ #include <ctype.h> #include <string.h> #include <stdio.h> +#include <errno.h> +#include <iconv.h> -#include <gtk/gtk.h> +#include "i18n_gtk.h" #include "msg.h" #include "list.h" @@ -29,6 +31,7 @@ #include "dw_gtk_viewport.h" #include "prefs.h" +#include "i18n.h" #define DEBUG_REWRAP_LEVEL 0 #define DEBUG_SIZE_LEVEL 10 @@ -203,6 +206,12 @@ static void Dw_page_init (DwPage *page) { DW_WIDGET_SET_FLAGS (page, DW_USES_HINTS); +#ifndef DISABLE_ANTI_ALIAS + page->xftdraw = NULL; +#endif + if (strcmp(RENDER_CHARSET, DILLO_CHARSET) == 0) + page->it = (iconv_t)-1; + else page->it = iconv_open(RENDER_CHARSET, DILLO_CHARSET); page->list_item = FALSE; page->inner_padding = 0; page->line1_offset = 0; @@ -361,6 +370,11 @@ static void Dw_page_destroy (GtkObject * parent_class->destroy. */ page->num_words = 0; page->num_lines = 0; +#ifndef DISABLE_ANTI_ALIAS + if (page->xftdraw) + XftDrawDestroy(page->xftdraw); +#endif + if (page->it != (iconv_t)-1) iconv_close(page->it); DBG_OBJ_SET_NUM(page, "num_lines", page->num_lines); @@ -626,7 +640,7 @@ static void Dw_page_size_allocate (DwWid p_Dw_widget_size_allocate (word->content.data.widget, &child_allocation); break; - + case DW_CONTENT_ANCHOR: p_Dw_gtk_viewport_change_anchor (widget, word->content.data.anchor, @@ -1316,6 +1330,10 @@ static void Dw_page_draw_line (DwPage *p GdkWindow *window; GdkGC *gc, *hl_gc; DwStyleColor *page_bg_color, *word_bg_color; +#ifndef DISABLE_ANTI_ALIAS + XftColor xftcolor; + XGlyphInfo info; +#endif /* Here's an idea on how to optimize this routine to minimize the number * of calls to gdk_draw_string: @@ -1328,7 +1346,7 @@ static void Dw_page_draw_line (DwPage *p widget = DW_WIDGET (page); window = DW_WIDGET_WINDOW (widget); page_bg_color = p_Dw_widget_get_bg_color (widget); - + x_widget = Dw_page_line_total_x_offset(page,line); x_viewport = p_Dw_widget_x_world_to_viewport (widget, @@ -1338,6 +1356,21 @@ static void Dw_page_draw_line (DwPage *p p_Dw_widget_y_world_to_viewport (widget, widget->allocation.y + y_widget); y_viewport_base = y_viewport + line->ascent; +#ifndef DISABLE_ANTI_ALIAS + if (page->xftdraw == 0) { + page->xftdraw = XftDrawCreate(GDK_DISPLAY(), + GDK_WINDOW_XWINDOW(window), + DefaultVisual(GDK_DISPLAY(), DefaultScreen(GDK_DISPLAY())), + DefaultColormap(GDK_DISPLAY(), DefaultScreen(GDK_DISPLAY()))); + } + #ifdef XFT_VERSION + if (XftDrawDrawable(page->xftdraw) != GDK_WINDOW_XWINDOW(window)) { + #else + if (page->xftdraw->drawable != GDK_WINDOW_XWINDOW(window)) { + #endif + XftDrawChange(page->xftdraw, GDK_WINDOW_XWINDOW(window)); + } +#endif for (word_index = line->first_word; word_index < line->last_word; word_index++) { @@ -1352,7 +1385,12 @@ static void Dw_page_draw_line (DwPage *p y_widget); switch (word->content.type) { - case DW_CONTENT_TEXT: + case DW_CONTENT_TEXT: { + /* Change from internal charset to render charset. */ + gchar *word_str = word->content.data.text; + if (page->it != (iconv_t)-1) + word->content.data.text = a_I18n_convert_raw(&page->it, + word->content.data.text, strlen(word->content.data.text)); if (word->style->background_color) word_bg_color = word->style->background_color; else @@ -1388,9 +1426,24 @@ static void Dw_page_draw_line (DwPage *p word->size.ascent + word->size.descent, FALSE); +#ifndef DISABLE_ANTI_ALIAS + /* draw string using Xft */ + xftcolor.pixel = word->style->color->color.pixel; + xftcolor.color.red = word->style->color->color.red; + xftcolor.color.green = word->style->color->color.green; + xftcolor.color.blue = word->style->color->color.blue; + xftcolor.color.alpha = 0xffff; + XftDrawStringUtf8(page->xftdraw, + &xftcolor, + word->style->font->font, + x_viewport, y_viewport_base + diff, + word->content.data.text, + strlen(word->content.data.text)); +#else gdk_draw_string (window, word->style->font->font, gc, x_viewport, y_viewport_base + diff, word->content.data.text); +#endif /* underline */ if (word->style->text_decoration & DW_STYLE_TEXT_DECORATION_UNDERLINE) @@ -1428,6 +1481,20 @@ static void Dw_page_draw_line (DwPage *p if (word->hl_start[layer] != -1) { word_len = strlen (word->content.data.text); eff_hl_end = MIN (word_len, word->hl_end[layer]); +#ifndef DISABLE_ANTI_ALIAS + XftTextExtentsUtf8(GDK_DISPLAY(), + word->style->font->font, + word->content.data.text, + word->hl_start[layer], + &info); + start_hl = x_viewport + info.xOff; + XftTextExtentsUtf8(GDK_DISPLAY(), + word->style->font->font, + word->content.data.text + word->hl_start[layer], + eff_hl_end - word->hl_start[layer], + &info); + width_hl = info.xOff; +#else start_hl = x_viewport + gdk_text_width (word->style->font->font, word->content.data.text, @@ -1437,6 +1504,7 @@ static void Dw_page_draw_line (DwPage *p word->content.data.text + word->hl_start[layer], eff_hl_end - word->hl_start[layer]); +#endif /* If the space after this word highlighted, and this word * is not the last one in this line, highlight also the @@ -1459,11 +1527,24 @@ static void Dw_page_draw_line (DwPage *p /* Highlight the text. */ hl_gc = word->style->color->inverse_gc; +#ifndef DISABLE_ANTI_ALIAS + xftcolor.pixel = word->style->color->inverse_color.pixel; + xftcolor.color.red = word->style->color->inverse_color.red; + xftcolor.color.green = word->style->color->inverse_color.green; + xftcolor.color.blue = word->style->color->inverse_color.blue; + xftcolor.color.alpha = 0xffff; + XftDrawStringUtf8(page->xftdraw, + &xftcolor, + word->style->font->font, + start_hl, y_viewport_base + diff, + word->content.data.text + word->hl_start[layer], + eff_hl_end - word->hl_start[layer]); +#else gdk_draw_text (window, word->style->font->font, hl_gc, - start_hl, y_viewport_base + diff, - word->content.data.text - + word->hl_start[layer], - eff_hl_end - word->hl_start[layer]); + start_hl, y_viewport_base + diff, + word->content.data.text + word->hl_start[layer], + eff_hl_end - word->hl_start[layer]); +#endif /* underline and strike-through */ if (word->style->text_decoration @@ -1484,8 +1565,12 @@ static void Dw_page_draw_line (DwPage *p } } } + if (page->it != (iconv_t)-1) { + g_free(word->content.data.text); + word->content.data.text = word_str; + } break; - + } case DW_CONTENT_WIDGET: child = word->content.data.widget; if (p_Dw_widget_intersect (child, area, &child_area)) @@ -1668,11 +1753,14 @@ static gboolean Dw_page_send_selection_e { DwIterator *it; DwPageLine *line, *last_line; - gint32 next_word_start_x, word_start_x, word_x, next_word_x, yfirst, ylast; + gint32 next_word_start_x, word_start_x, word_x, next_word_x = 0, yfirst, ylast; gint char_pos = 0, word_index, line_index, link; DwPageWord *word; gboolean found; gboolean within_content; +#ifndef DISABLE_ANTI_ALIAS + XGlyphInfo info; +#endif DEBUG_MSG (DEBUG_EVENT_LEVEL, "Dw_page_send_selection_event: x = %d, y = %d\n", x, y); @@ -1747,20 +1835,40 @@ static gboolean Dw_page_send_selection_e if (word->content.type == DW_CONTENT_TEXT) { /* Search the character the mouse pointer is in. * next_word_x is the right side of this character. */ + int len = strlen(word->content.data.text); char_pos = 0; - while ((next_word_x = word_start_x + - gdk_text_width(word->style->font->font, +#ifndef DISABLE_ANTI_ALIAS + while (char_pos < len){ + XftTextExtentsUtf8(GDK_DISPLAY(), + word->style->font->font, + word->content.data.text, + char_pos, + &info); + if(!((next_word_x = word_start_x + info.xOff) <= x)) + break; + char_pos++; + } + /* The left side of this character. */ + XftTextExtentsUtf8(GDK_DISPLAY(), + word->style->font->font, + word->content.data.text, + char_pos - 1, + &info); + word_x = word_start_x + info.xOff; +#else + while (((next_word_x = word_start_x + + a_I18n_gdk_text_width(word->style->font->font, word->content.data.text, char_pos)) - <= x) - char_pos++; - + <= x) && char_pos < len) + char_pos++; /* The left side of this character. */ word_x = - word_start_x + gdk_text_width (word->style->font->font, + word_start_x + a_I18n_gdk_text_width (word->style->font->font, word->content.data.text, char_pos - 1); +#endif /* If the mouse pointer is left from the middle, use the left * position, otherwise, use the right one. */ if (x <= (word_x + next_word_x) / 2) @@ -1860,6 +1968,7 @@ static gboolean Dw_page_motion_notify (D if (word_index == -1) { page->hover_link = -1; page->hover_tooltip = NULL; + a_Dw_tooltip_count_reset(); } else { page->hover_link = page->words[word_index].style->x_link; page->hover_tooltip = page->words[word_index].style->x_tooltip; @@ -1965,7 +2074,25 @@ static DwPageWord *Dw_page_add_word (DwP static void Dw_page_calc_text_size (DwPage *page, char *text, DwStyle *style, DwRequisition *size) { - size->width = gdk_string_width (style->font->font, text); +#ifndef DISABLE_ANTI_ALIAS + XGlyphInfo info; +#endif + gchar *render_str = text; + + /* Change from internal charset to render charset. */ + if (page->it != (iconv_t)-1) { + render_str = a_I18n_convert_raw(&page->it, text, strlen(text)); + } + +#ifndef DISABLE_ANTI_ALIAS + XftTextExtentsUtf8(GDK_DISPLAY(), + style->font->font, render_str, strlen(render_str), &info); + size->width = info.xOff; +#else + size->width = gdk_string_width (style->font->font, render_str); +#endif + if (page->it != (iconv_t)-1) g_free(render_str); + size->ascent = style->font->font->ascent; size->descent = style->font->font->descent; @@ -2060,7 +2187,7 @@ gboolean a_Dw_page_add_anchor (DwPage *p y = Dw_page_line_total_y_offset_i (page, page->num_lines - 1); /* - * Since an anchor does not take any space, it is safe to call + * Since an anchor does not take any space, it is safe to call * p_Dw_gtk_viewport_add_anchor already here. */ if ((copy = p_Dw_gtk_viewport_add_anchor(DW_WIDGET(page), name, y)) == NULL) @@ -2070,7 +2197,7 @@ gboolean a_Dw_page_add_anchor (DwPage *p word->content.type = DW_CONTENT_ANCHOR; word->content.data.anchor = copy; Dw_page_word_wrap (page, page->num_words - 1); - + DBG_OBJ_ARRSET_STR (page, "words.%d.content.anchor", page->num_words - 1, word->content.data.anchor); @@ -2485,6 +2612,9 @@ static void Dw_page_iterator_get_allocat DwPageLine *line; gint wi, l; gint32 diff; +#ifndef DISABLE_ANTI_ALIAS + XGlyphInfo info; +#endif line = &page->lines[Dw_page_find_line_of_word (page, ii->pos)]; word = &page->words[ii->pos]; @@ -2493,10 +2623,19 @@ static void Dw_page_iterator_get_allocat if (start == 0) diff = 0; else { - if (word->content.type == DW_CONTENT_TEXT) - diff = gdk_text_width (word->style->font->font, + if (word->content.type == DW_CONTENT_TEXT) { +#ifndef DISABLE_ANTI_ALIAS + XftTextExtentsUtf8(GDK_DISPLAY(), + word->style->font->font, + word->content.data.text, + start, + &info); + diff = info.xOff; +#else + diff = a_I18n_gdk_text_width (word->style->font->font, word->content.data.text, start); - else +#endif + } else diff = word->size.width; } @@ -2520,9 +2659,19 @@ static void Dw_page_iterator_get_allocat allocation->width = word->size.width; else if (end >= l) allocation->width = word->size.width + word->eff_space; - else - allocation->width = gdk_text_width (word->style->font->font, + else { +#ifndef DISABLE_ANTI_ALIAS + XftTextExtentsUtf8(GDK_DISPLAY(), + word->style->font->font, + word->content.data.text, + end, + &info); + allocation->width = info.xOff; +#else + allocation->width = a_I18n_gdk_text_width (word->style->font->font, word->content.data.text, end); +#endif + } } else { if (end == 1) allocation->width = word->size.width; diff -pruN dillo-0.8.6/src/dw_page.h dillo-0.8.6-i18n-misc-20060709/src/dw_page.h --- dillo-0.8.6/src/dw_page.h 2005-10-28 01:20:10.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/dw_page.h 2006-05-16 01:21:08.000000000 +0900 @@ -5,6 +5,7 @@ #define __DW_PAGE_H__ #include <gdk/gdk.h> +#include <iconv.h> #include "dw_container.h" #include "url.h" @@ -72,7 +73,10 @@ struct _DwPageWord { struct _DwPage { DwContainer container; - +#ifndef DISABLE_ANTI_ALIAS + XftDraw *xftdraw; +#endif + iconv_t it; /* These fields provide some ad-hoc-functionality, used by sub-classes. */ gboolean list_item; /* If TRUE, the first word of the page is treated specially (search in source). */ diff -pruN dillo-0.8.6/src/dw_style.c dillo-0.8.6-i18n-misc-20060709/src/dw_style.c --- dillo-0.8.6/src/dw_style.c 2006-01-29 22:42:35.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/dw_style.c 2006-05-16 01:21:08.000000000 +0900 @@ -11,6 +11,8 @@ #include "dw_style.h" #include "dw_widget.h" +#include "prefs.h" +#include "i18n.h" #include <gdk/gdk.h> #include <stdio.h> @@ -298,6 +300,26 @@ style_char_1 = "o"; style_char_2 = "i"; break; + if (font->weight >= 500 && font->style != DW_STYLE_FONT_STYLE_NORMAL) + sprintf(fontname, "%s:style=Bold%s,Semibold%s:size=%d%s%s", + font->name, style_char_1, style_char_1, font->size, + strlen(font->lang) > 1 ? ":lang=" : "", + strlen(font->lang) > 1 ? font->lang : ""); + else if (font->style != DW_STYLE_FONT_STYLE_NORMAL) + sprintf(fontname, "%s:style=%s,Medium%s:size=%d%s%s", + font->name, style_char_1, style_char_1, font->size, + strlen(font->lang) > 1 ? ":lang=" : "", + strlen(font->lang) > 1 ? font->lang : ""); + else if (font->weight >= 500) + sprintf(fontname, "%s:style=Bold,Semibold:size=%d%s%s", + font->name, font->size, + strlen(font->lang) > 1 ? ":lang=" : "", + strlen(font->lang) > 1 ? font->lang : ""); + else + sprintf(fontname, "%s:style=Roman,Regular,Medium:size=%d%s%s", + font->name, font->size, + strlen(font->lang) > 1 ? ":lang=" : "", + strlen(font->lang) > 1 ? font->lang : ""); } sprintf (fontname, "-*-%s-%s-%s-*-*-%d-*-75-75-*-*-iso8859-1", @@ -330,6 +352,12 @@ } if (font->font == NULL) { + /* Try another platform-font that should be available. (fam83) */ + font->font = + gdk_font_load + ("-misc-fixed-medium-r-semicondensed--13-100-100-100-c-60-iso8859-1"); + } + if (font->font == NULL) { /* Can't load any suitable font! */ g_warning ("Can't load any ISO8859-1 font!?! :("); font->font = @@ -354,6 +382,7 @@ return (font1->size == font2->size && font1->weight == font2->weight && font1->style == font2->style && + strncmp (font1->lang, font2->lang, 5) == 0 && strcmp (font1->name, font2->name) == 0); } @@ -365,11 +394,15 @@ { const DwStyleFont *font = (DwStyleFont*) key; guint h; + gchar *lang; h = g_str_hash (font->name); h = (h << 5) - h + font->size; h = (h << 5) - h + font->weight; h = (h << 5) - h + font->style; + lang = g_strndup(font->lang, 5); + h = h + g_str_hash (lang); + g_free(lang); return h; } @@ -398,6 +431,7 @@ font->weight = font_attrs->weight; font->style = font_attrs->style; font->name = g_strdup (font_attrs->name); + strncpy(font->lang, font_attrs->lang, 6); font->ref_count = 0; Dw_style_font_realize (font, try_all); diff -pruN dillo-0.8.6/src/dw_style.h dillo-0.8.6-i18n-misc-20060709/src/dw_style.h --- dillo-0.8.6/src/dw_style.h 2005-10-28 01:20:10.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/dw_style.h 2006-05-16 01:21:08.000000000 +0900 @@ -3,6 +3,13 @@ #include <gdk/gdktypes.h> #include "dw_tooltip.h" +#ifndef DISABLE_ANTI_ALIAS + #include <X11/Xlib.h> + #include <X11/Xft/Xft.h> + #undef Status + #include <gdk/gdkx.h> +#endif + #define DW_STYLE_ALIGN_LEFT 1 #define DW_STYLE_ALIGN_RIGHT 2 @@ -146,6 +153,35 @@ typedef gint DwStyleLength; #define DW_STYLE_LENGTH_AUTO 0 +#ifndef DISABLE_ANTI_ALIAS + #ifndef XFT_VERSION + #ifndef XFT_DRAW_N_SRC + #define XFT_DRAW_N_SRC 2 + #endif +struct _XftDraw { + Display *dpy; + Drawable drawable; + Visual *visual; /* NULL for bitmaps */ + Colormap colormap; + Region clip; + Bool core_set; + Bool render_set; + Bool render_able; + struct { + Picture pict; + struct { + Picture pict; + XRenderColor color; + } src[XFT_DRAW_N_SRC]; + } render; + struct { + GC draw_gc; + unsigned long fg; + Font font; + } core; +}; + #endif +#endif struct _DwStyleBox { @@ -189,13 +225,18 @@ struct _DwStyleFont gint weight; DwStyleFontStyle style; -#ifdef USE_TYPE1 - gint t1fontid; +#ifndef DISABLE_ANTI_ALIAS + XftFont *font; #else - GdkFont *font; + #ifdef USE_TYPE1 + gint t1fontid; + #else + GdkFont *font; + #endif #endif gint space_width; gint x_height; + gchar lang[6]; }; diff -pruN dillo-0.8.6/src/dw_table.c dillo-0.8.6-i18n-misc-20060709/src/dw_table.c --- dillo-0.8.6/src/dw_table.c 2005-10-28 01:20:11.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/dw_table.c 2006-05-16 01:21:08.000000000 +0900 @@ -1559,7 +1559,7 @@ static void Dw_table_sub_calc_col_widths num_nf_cols = num_cols; } - diff_spacing = + diff_spacing = (sub->end_col - sub->start_col - 1) * DW_WIDGET(sub->table)->style->border_spacing; diff -pruN dillo-0.8.6/src/dw_table_cell.c dillo-0.8.6-i18n-misc-20060709/src/dw_table_cell.c --- dillo-0.8.6/src/dw_table_cell.c 2005-10-28 01:20:11.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/dw_table_cell.c 2006-05-16 01:21:08.000000000 +0900 @@ -22,6 +22,7 @@ */ #include "dw_table_cell.h" +#include "i18n_gtk.h" /*#define DEBUG_LEVEL 1*/ #include "debug.h" @@ -147,6 +148,9 @@ static gint32 Dw_table_cell_get_value (D DwTableCell *cell = DW_TABLE_CELL (aligned_page); DwPage *page = DW_PAGE (aligned_page); DwPageWord *word; +#ifndef DISABLE_ANTI_ALIAS + XGlyphInfo info; +#endif int i, word_index; gint32 w; @@ -168,8 +172,17 @@ static gint32 Dw_table_cell_get_value (D } } else { word = &page->words[cell->char_word_index]; - w += gdk_text_width (word->style->font->font, word->content.data.text, +#ifndef DISABLE_ANTI_ALIAS + XftTextExtentsUtf8(GDK_DISPLAY(), + word->style->font->font, + word->content.data.text, + cell->char_word_pos, + &info); + w += info.xOff; +#else + w += a_I18n_gdk_text_width (word->style->font->font, word->content.data.text, cell->char_word_pos); +#endif } return w; diff -pruN dillo-0.8.6/src/dw_tooltip.c dillo-0.8.6-i18n-misc-20060709/src/dw_tooltip.c --- dillo-0.8.6/src/dw_tooltip.c 2005-10-28 01:20:11.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/dw_tooltip.c 2006-05-16 01:21:08.000000000 +0900 @@ -14,6 +14,7 @@ #include <gtk/gtk.h> #include "dw_tooltip.h" +#include "i18n.h" /* The amount of space around the text, including the border. */ #define PADDING 4 @@ -22,17 +23,20 @@ * tooltip. */ #define DIFF 10 -static gboolean Dw_tooltip_draw (DwTooltip *tooltip); +static gint pop_count = 0; +static gboolean Dw_tooltip_draw (DwTooltip *tooltip); static DwTooltip *Dw_tooltip_new0 (const char *text, gint ref_count) { DwTooltip *tooltip; + pop_count = 0; + tooltip = g_new (DwTooltip, 1); tooltip->ref_count = ref_count; tooltip->window = NULL; tooltip->timeout_id = 0; - tooltip->text = g_strdup (text); + tooltip->text = a_I18n_DW_CHARSET_from_DILLO_CHARSET(text, -1); return tooltip; } @@ -70,11 +74,14 @@ void Dw_tooltip_destroy (DwTooltip *tool void a_Dw_tooltip_on_enter (DwTooltip *tooltip) { a_Dw_tooltip_on_leave (tooltip); - tooltip->timeout_id = gtk_timeout_add (500, (GtkFunction)Dw_tooltip_draw, + + /* Since it is called by switch without knowing why, + * 2 times of the beginning ignore. + */ + tooltip->timeout_id = gtk_timeout_add (500, (GtkFunction)Dw_tooltip_draw, tooltip); } - /* * Call this function if the pointer has left the widget/word. */ @@ -91,12 +98,17 @@ void a_Dw_tooltip_on_leave (DwTooltip *t } } +void a_Dw_tooltip_count_reset () +{ + pop_count = 0; +} /* * Call this function if the pointer has moved within the widget/word. */ void a_Dw_tooltip_on_motion (DwTooltip *tooltip) { + pop_count++; a_Dw_tooltip_on_enter (tooltip); } @@ -112,6 +124,8 @@ static gboolean Dw_tooltip_draw (DwToolt x = px + DIFF; y = py + DIFF; + if (pop_count == 0) + return FALSE; tooltip->window = gtk_window_new (GTK_WINDOW_POPUP); gtk_widget_set_app_paintable (tooltip->window, TRUE); gtk_widget_set_name (tooltip->window, "gtk-tooltips"); @@ -161,5 +175,3 @@ static gboolean Dw_tooltip_draw (DwToolt return FALSE; } - - diff -pruN dillo-0.8.6/src/dw_tooltip.h dillo-0.8.6-i18n-misc-20060709/src/dw_tooltip.h --- dillo-0.8.6/src/dw_tooltip.h 2005-10-28 01:20:11.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/dw_tooltip.h 2006-05-16 01:21:08.000000000 +0900 @@ -19,12 +19,14 @@ DwTooltip* a_Dw_tooltip_new_no_ref (cons void a_Dw_tooltip_on_enter (DwTooltip *tooltip); void a_Dw_tooltip_on_leave (DwTooltip *tooltip); void a_Dw_tooltip_on_motion (DwTooltip *tooltip); +void a_Dw_tooltip_count_reset(); #define a_Dw_tooltip_ref(tooltip) ((tooltip)->ref_count++) #define a_Dw_tooltip_unref(tooltip) if (--((tooltip)->ref_count) == 0) \ Dw_tooltip_destroy (tooltip) - + /* Don't use this function directly! */ void Dw_tooltip_destroy (DwTooltip *tooltip); + #endif /* __DW_TOOLTIP_H__ */ diff -pruN dillo-0.8.6/src/findtext.c dillo-0.8.6-i18n-misc-20060709/src/findtext.c --- dillo-0.8.6/src/findtext.c 2005-10-28 01:20:11.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/findtext.c 2006-05-16 01:21:09.000000000 +0900 @@ -55,6 +55,7 @@ #include "debug.h" #include <string.h> #include <ctype.h> +#include "i18n.h" /* * Searches needle in haystack, according to type: @@ -297,8 +298,6 @@ static gboolean Findtext_search0 (Findte return FALSE; } - - FindtextResult a_Findtext_search (FindtextState *state, gchar *str, gboolean case_sens) @@ -306,6 +305,7 @@ FindtextResult a_Findtext_search (Findte int i; gboolean new_key = FALSE, was_highlighted = FALSE, first_trial; FindtextResult result2; + char *encStr; if (state->widget == NULL) return FINDTEXT_NOT_FOUND; @@ -324,19 +324,21 @@ FindtextResult a_Findtext_search (Findte state->hl_iterator = NULL; } + encStr = a_Misc_add_space(str); + /* If the key (or the widget) changes (including case sensitivity), the search is started from the beginning. */ if (state->keystr == NULL || state->case_sens != case_sens || - strcmp(state->keystr, str) != 0) { + strcmp(state->keystr, encStr) != 0) { new_key = TRUE; g_free (state->keystr); - state->keystr = g_strdup (str); + state->keystr = g_strdup (encStr); state->case_sens = case_sens; if (state->key != NULL) Findtext_key_destroy (state->key); - state->key = Findtext_key_new (str, case_sens); + state->key = Findtext_key_new (encStr, case_sens); if (state->iterator) a_Dw_word_iterator_free (state->iterator); @@ -413,6 +415,7 @@ FindtextResult a_Findtext_search (Findte g_assert (result2 == FINDTEXT_SUCCESS); return FINDTEXT_RESTART; } + g_free(encStr); } /* @@ -437,3 +440,5 @@ void a_Findtext_reset_search (FindtextSt state->hl_iterator = NULL; } } + +/* vim: set ts=3 sw=3 sts=3 expandtab:*/ diff -pruN dillo-0.8.6/src/gtk_ext_button.c dillo-0.8.6-i18n-misc-20060709/src/gtk_ext_button.c --- dillo-0.8.6/src/gtk_ext_button.c 2005-10-28 01:20:12.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/gtk_ext_button.c 2006-05-16 01:21:09.000000000 +0900 @@ -68,14 +68,14 @@ GtkWidget *a_Gtk_ext_button_new_with_lab { GtkWidget *button; GtkWidget *label_widget; - + button = a_Gtk_ext_button_new (); label_widget = gtk_label_new (label); gtk_misc_set_alignment (GTK_MISC (label_widget), 0.5, 0.5); - + gtk_container_add (GTK_CONTAINER (button), label_widget); gtk_widget_show (label_widget); - + return button; } @@ -166,7 +166,7 @@ static void Gtk_ext_button_init(GtkExtBu static void Gtk_ext_button_destroy (GtkObject *object) { GtkExtButton *button; - + button = GTK_EXT_BUTTON (object); if (button->menu_signal_id != -1) gtk_signal_disconnect (GTK_OBJECT (button->active_menu), @@ -213,10 +213,10 @@ static gint Gtk_ext_button_button_press GtkExtButton *ext_button; GtkStateType new_state; GtkMenu *menu; - + button = GTK_BUTTON (widget); ext_button = GTK_EXT_BUTTON (widget); - + if (ext_button->pressed_button) { /* Already a button pressed. */ return FALSE; @@ -224,11 +224,11 @@ static gint Gtk_ext_button_button_press ext_button->action[event->button - 1] != GTK_EXT_BUTTON_INACTIVE) { ext_button->pressed_button = event->button; - + gtk_grab_add (widget); button->button_down = TRUE; new_state = (button->in_button ? GTK_STATE_ACTIVE : GTK_STATE_NORMAL); - + if (GTK_WIDGET_STATE (button) != new_state) { gtk_widget_set_state (GTK_WIDGET (button), new_state); gtk_widget_queue_draw (GTK_WIDGET (button)); @@ -248,7 +248,7 @@ static gint Gtk_ext_button_button_press case GTK_EXT_BUTTON_MENU: menu = ext_button->action_data[event->button - 1].menu; break; - + case GTK_EXT_BUTTON_MENU_CREATOR: menu = ext_button->action_data[event->button - 1].creator.func ( @@ -256,7 +256,7 @@ static gint Gtk_ext_button_button_press ext_button->action_data[event->button - 1].creator.data); break; } - + if (menu) { ext_button->active_menu = menu; gtk_menu_popup (menu, NULL, widget, Gtk_ext_button_position_menu, @@ -267,7 +267,7 @@ static gint Gtk_ext_button_button_press Gtk_ext_button_menu_hidden), (gpointer) button); } - + return TRUE; } else return FALSE; @@ -322,10 +322,10 @@ static gint Gtk_ext_button_enter_notify GtkButton *button; GtkWidget *event_widget; GtkStateType new_state; - + button = GTK_BUTTON (widget); event_widget = gtk_get_event_widget ((GdkEvent*) event); - + if ((event_widget == widget) && (event->detail != GDK_NOTIFY_INFERIOR)) { button->in_button = TRUE; new_state = @@ -350,10 +350,10 @@ static gint Gtk_ext_button_leave_notify GtkButton *button; GtkExtButton *ext_button; GtkWidget *event_widget; - + button = GTK_BUTTON (widget); event_widget = gtk_get_event_widget ((GdkEvent*) event); - + if ((event_widget == widget) && (event->detail != GDK_NOTIFY_INFERIOR)) { button->in_button = FALSE; @@ -392,12 +392,12 @@ static void Gtk_ext_button_menu_hidden ( ext_button->active_menu = NULL; gtk_grab_remove (GTK_WIDGET (ext_button)); - + button = GTK_BUTTON (ext_button); button->in_button = FALSE; button->button_down = FALSE; ext_button->pressed_button = 0; - + gtk_widget_set_state (GTK_WIDGET (button), GTK_STATE_NORMAL); gtk_widget_queue_draw (GTK_WIDGET (button)); } diff -pruN dillo-0.8.6/src/gtk_ext_button.h dillo-0.8.6-i18n-misc-20060709/src/gtk_ext_button.h --- dillo-0.8.6/src/gtk_ext_button.h 2005-10-28 01:20:12.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/gtk_ext_button.h 2006-05-16 01:21:09.000000000 +0900 @@ -21,7 +21,7 @@ extern "C" { typedef struct _GtkExtButton GtkExtButton; typedef struct _GtkExtButtonClass GtkExtButtonClass; - + typedef GtkMenu* (GtkExtButtonMenuCreator)(GtkExtButton *button, gpointer data); diff -pruN dillo-0.8.6/src/gtk_ext_menu.c dillo-0.8.6-i18n-misc-20060709/src/gtk_ext_menu.c --- dillo-0.8.6/src/gtk_ext_menu.c 2005-10-28 01:20:12.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/gtk_ext_menu.c 2006-05-16 01:21:09.000000000 +0900 @@ -25,7 +25,7 @@ * * GtkExtMenu changes dealing with release events a bit: if the affected * menu item is a GtkExtMenuItem, it is told to handle this event specially. - * The GtkExtMenuItem will simply change its activate signal temporally. + * The GtkExtMenuItem will simply change its activate signal temporally. * * (This is a bit ugly, but still cleaner than listening to the low-level * events, like "button-release-event".) @@ -64,10 +64,10 @@ GtkType a_Gtk_ext_menu_get_type (void) (GtkArgGetFunc) NULL, (GtkClassInitFunc)NULL }; - + type = gtk_type_unique (gtk_menu_get_type (), &info); } - + return type; } @@ -78,9 +78,9 @@ GtkType a_Gtk_ext_menu_get_type (void) static void Gtk_ext_menu_class_init (GtkExtMenuClass *klass) { GtkWidgetClass *gtk_widget_class; - + parent_class = gtk_type_class (gtk_menu_get_type ()); - + gtk_widget_class = (GtkWidgetClass*) klass; gtk_widget_class->button_release_event = Gtk_ext_menu_button_release; } @@ -115,7 +115,7 @@ static gint Gtk_ext_menu_is_item (GtkMen g_return_val_if_fail (menu_shell != NULL, FALSE); g_return_val_if_fail (GTK_IS_MENU_SHELL (menu_shell), FALSE); g_return_val_if_fail (child != NULL, FALSE); - + parent = child->parent; while (parent && GTK_IS_MENU_SHELL (parent)) { if (parent == (GtkWidget*) menu_shell) @@ -134,12 +134,12 @@ static GtkWidget* Gtk_ext_menu_get_item GdkEvent *event) { GtkWidget *menu_item; - + menu_item = gtk_get_event_widget ((GdkEvent*) event); - + while (menu_item && !GTK_IS_MENU_ITEM (menu_item)) menu_item = menu_item->parent; - + if (menu_item && Gtk_ext_menu_is_item (menu_shell, menu_item)) return menu_item; else diff -pruN dillo-0.8.6/src/gtk_ext_menu_item.h dillo-0.8.6-i18n-misc-20060709/src/gtk_ext_menu_item.h --- dillo-0.8.6/src/gtk_ext_menu_item.h 2005-10-28 01:20:12.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/gtk_ext_menu_item.h 2006-05-16 01:21:09.000000000 +0900 @@ -28,7 +28,7 @@ struct _GtkExtMenuItem struct _GtkExtMenuItemClass { GtkMenuItemClass parent_class; - + void (*activate1) (GtkExtMenuItem *menu_item); void (*activate2) (GtkExtMenuItem *menu_item); void (*activate3) (GtkExtMenuItem *menu_item); diff -pruN dillo-0.8.6/src/gtk_menu_title.c dillo-0.8.6-i18n-misc-20060709/src/gtk_menu_title.c --- dillo-0.8.6/src/gtk_menu_title.c 2005-10-28 01:20:12.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/gtk_menu_title.c 2006-05-16 01:21:09.000000000 +0900 @@ -137,7 +137,7 @@ static void Gtk_menu_title_size_request BORDER_SPACING); requisition->height = 2 * (GTK_CONTAINER (widget)->border_width + widget->style->klass->ythickness); - + if (menu_title->label) { requisition->width += gdk_string_width (widget->style->font, GTK_MENU_TITLE(widget)->label); diff -pruN dillo-0.8.6/src/gtkframeset.c dillo-0.8.6-i18n-misc-20060709/src/gtkframeset.c --- dillo-0.8.6/src/gtkframeset.c 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/gtkframeset.c 2006-05-16 01:21:09.000000000 +0900 @@ -0,0 +1,1305 @@ +/* + * File: gtkframeset.c + * Copyright (C) 2003 Frank de Lange <frank@unternet.org> + * + * a frameset widget for GTK - The GIMP Toolkit + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include "gtkframeset.h" +#include <string.h> /* for strpbrk() */ +#include <locale.h> /* for setlocale */ + +#define DEBUG_ALLOC 10 +#define DEBUG_EVENT 10 +/* #define DEBUG_LEVEL 10 */ +#include "debug.h" + +/* child args */ +enum +{ + CHILD_ARG_0, + CHILD_ARG_ROW_ATTACH, + CHILD_ARG_COL_ATTACH, + CHILD_ARG_X_PADDING, + CHILD_ARG_Y_PADDING, + CHILD_ARG_BORDER, + CHILD_ARG_NORESIZE +}; + +/* declarations */ +static void gtk_frameset_class_init (GtkFramesetClass *klass); +static void gtk_frameset_init (GtkFrameset *frameset); +static void gtk_frameset_finalize (GtkObject *object); +static void gtk_frameset_size_allocate (GtkWidget *widget, + GtkAllocation *allocation); +static void gtk_frameset_map (GtkWidget *widget); +static void gtk_frameset_unmap (GtkWidget *widget); +static void gtk_frameset_draw (GtkWidget *widget, + GdkRectangle *area); +static gint gtk_frameset_expose (GtkWidget *widget, + GdkEventExpose *event); +static void gtk_frameset_set_child_arg (GtkContainer *container, + GtkWidget *child, + GtkArg *arg, + guint arg_id); +static void gtk_frameset_get_child_arg (GtkContainer *container, + GtkWidget *child, + GtkArg *arg, + guint arg_id); +static GtkType gtk_frameset_child_type (GtkContainer *container); +static void gtk_frameset_add (GtkContainer *container, + GtkWidget *widget); +static void gtk_frameset_remove (GtkContainer *container, + GtkWidget *widget); +static void gtk_frameset_forall (GtkContainer *container, + gboolean include_internals, + GtkCallback callback, + gpointer callback_data); +static void gtk_frameset_realize (GtkWidget *widget); +static void gtk_frameset_unrealize (GtkWidget *widget); +static gint gtk_frameset_button_press (GtkWidget *widget, + GdkEventButton *event); +static gint gtk_frameset_button_release (GtkWidget *widget, + GdkEventButton *event); +static gint gtk_frameset_motion (GtkWidget *widget, + GdkEventMotion *event); +static gint gtk_frameset_enter (GtkWidget *widget, + GdkEventCrossing *event); +static gint gtk_frameset_leave (GtkWidget *widget, + GdkEventCrossing *event); + +/* private functions */ +static void gtk_frameset_size_allocate_init (GtkFrameset *frameset); +static void gtk_frameset_size_allocate_pass1(GtkFrameset *frameset); +static GSList *gtk_frameset_get_multi_length(const gchar *attr); +static void gtk_frameset_calculate_lengths (GtkFrameset *frameset); +static gint gtk_frameset_set_resize_rowcol (GtkWidget *widget, + gint x, + gint y); + +static GtkContainerClass *parent_class = NULL; + +/* standard GTK function */ +GtkType +gtk_frameset_get_type (void) +{ + static GtkType frameset_type = 0; + + if (!frameset_type) + { + static const GtkTypeInfo frameset_info = + { + "GtkFrameset", + sizeof (GtkFrameset), + sizeof (GtkFramesetClass), + (GtkClassInitFunc) gtk_frameset_class_init, + (GtkObjectInitFunc) gtk_frameset_init, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL, + }; + + frameset_type = gtk_type_unique (gtk_container_get_type (), &frameset_info); + } + + return frameset_type; +} + +/* standard GTK function */ +static void +gtk_frameset_class_init (GtkFramesetClass *class) +{ + GtkObjectClass *object_class; + GtkWidgetClass *widget_class; + GtkContainerClass *container_class; + + object_class = (GtkObjectClass*) class; + widget_class = (GtkWidgetClass*) class; + container_class = (GtkContainerClass*) class; + + parent_class = gtk_type_class (gtk_container_get_type ()); + + gtk_container_add_child_arg_type ("GtkFrameset::row_attach", GTK_TYPE_UINT, GTK_ARG_READWRITE, CHILD_ARG_ROW_ATTACH); + gtk_container_add_child_arg_type ("GtkFrameset::col_attach", GTK_TYPE_UINT, GTK_ARG_READWRITE, CHILD_ARG_COL_ATTACH); + gtk_container_add_child_arg_type ("GtkFrameset::x_padding", GTK_TYPE_UINT, GTK_ARG_READWRITE, CHILD_ARG_X_PADDING); + gtk_container_add_child_arg_type ("GtkFrameset::y_padding", GTK_TYPE_UINT, GTK_ARG_READWRITE, CHILD_ARG_Y_PADDING); + gtk_container_add_child_arg_type ("GtkFrameset::border", GTK_TYPE_BOOL, GTK_ARG_READWRITE, CHILD_ARG_BORDER); + gtk_container_add_child_arg_type ("GtkFrameset::noresize", GTK_TYPE_BOOL, GTK_ARG_READWRITE, CHILD_ARG_NORESIZE); + + object_class->finalize = gtk_frameset_finalize; + + widget_class->size_allocate = gtk_frameset_size_allocate; + widget_class->map = gtk_frameset_map; + widget_class->unmap = gtk_frameset_unmap; + widget_class->draw = gtk_frameset_draw; + widget_class->expose_event = gtk_frameset_expose; + widget_class->realize = gtk_frameset_realize; + widget_class->unrealize = gtk_frameset_unrealize; + widget_class->button_press_event = gtk_frameset_button_press; + widget_class->button_release_event = gtk_frameset_button_release; + widget_class->motion_notify_event = gtk_frameset_motion; + widget_class->enter_notify_event = gtk_frameset_enter; + widget_class->leave_notify_event = gtk_frameset_leave; + + container_class->add = gtk_frameset_add; + container_class->remove = gtk_frameset_remove; + container_class->forall = gtk_frameset_forall; + container_class->child_type = gtk_frameset_child_type; + container_class->set_child_arg = gtk_frameset_set_child_arg; + container_class->get_child_arg = gtk_frameset_get_child_arg; +} + +/* standard GTK function */ +static GtkType +gtk_frameset_child_type (GtkContainer *container) +{ + return GTK_TYPE_WIDGET; +} + +/* standard GTK function */ +static void +gtk_frameset_set_child_arg (GtkContainer *container, + GtkWidget *child, + GtkArg *arg, + guint arg_id) +{ + GtkFrameset *frameset; + GtkFramesetChild *frameset_child; + GList *list; + + frameset = GTK_FRAMESET (container); + frameset_child = NULL; + for (list = frameset->children; list; list = list->next) + { + frameset_child = list->data; + + if (frameset_child->widget == child) + break; + } + if (!list) + return; + + switch (arg_id) + { + case CHILD_ARG_ROW_ATTACH: + frameset_child->row_attach = GTK_VALUE_UINT (*arg); + break; + case CHILD_ARG_COL_ATTACH: + frameset_child->col_attach = GTK_VALUE_UINT (*arg); + break; + case CHILD_ARG_X_PADDING: + frameset_child->xpadding = GTK_VALUE_UINT (*arg); + break; + case CHILD_ARG_Y_PADDING: + frameset_child->ypadding = GTK_VALUE_UINT (*arg); + break; + case CHILD_ARG_BORDER: + frameset_child->border = GTK_VALUE_BOOL (*arg); + /* only SET this value (it is set to FALSE by default), otherwise + * border frames followed by noborder frames will lose their border + * + * This feature can also be provided by manipulating the child widget's + * border directly. I have tested this and it works. I might use it in a later + * version of GtkFrameset */ + if(GTK_VALUE_BOOL(*arg)) { + if(frameset_child->row_attach > 0) + /* set top border */ + frameset->rows[frameset_child->row_attach - 1].border = GTK_VALUE_BOOL (*arg); + frameset->rows[frameset_child->row_attach].border = GTK_VALUE_BOOL (*arg); + if(frameset_child->col_attach > 0) + /* set left border */ + frameset->cols[frameset_child->col_attach - 1].border = GTK_VALUE_BOOL (*arg); + frameset->cols[frameset_child->col_attach].border = GTK_VALUE_BOOL (*arg); + } + break; + case CHILD_ARG_NORESIZE: + frameset_child->noresize = GTK_VALUE_BOOL (*arg); + /* only SET this value (it is set to FALSE by default), otherwise + * noresize frames followed by resizable frames will be resizable as + * well through the resizable frames' left/top edge */ + if(GTK_VALUE_BOOL(*arg)) { + if(frameset_child->row_attach + 1 < frameset->nrows) + /* make lower edge unresizable */ + frameset->rows[frameset_child->row_attach + 1].noresize = GTK_VALUE_BOOL (*arg); + frameset->rows[frameset_child->row_attach].noresize = GTK_VALUE_BOOL (*arg); + if(frameset_child->col_attach + 1 < frameset->ncols) + /* make right edge unresizable */ + frameset->cols[frameset_child->col_attach + 1].noresize = GTK_VALUE_BOOL (*arg); + frameset->cols[frameset_child->col_attach].noresize = GTK_VALUE_BOOL (*arg); + } + break; + default: + break; + } + if (GTK_WIDGET_VISIBLE (child) && GTK_WIDGET_VISIBLE (frameset)) + gtk_widget_queue_resize (child); +} + +/* standard GTK function */ +static void +gtk_frameset_get_child_arg (GtkContainer *container, + GtkWidget *child, + GtkArg *arg, + guint arg_id) +{ + GtkFrameset *frameset; + GtkFramesetChild *frameset_child; + GList *list; + + frameset = GTK_FRAMESET (container); + frameset_child = NULL; + for (list = frameset->children; list; list = list->next) + { + frameset_child = list->data; + + if (frameset_child->widget == child) + break; + } + if (!list) + return; + + switch (arg_id) + { + case CHILD_ARG_ROW_ATTACH: + GTK_VALUE_UINT (*arg) = frameset_child->row_attach; + break; + case CHILD_ARG_COL_ATTACH: + GTK_VALUE_UINT (*arg) = frameset_child->col_attach; + break; + case CHILD_ARG_X_PADDING: + GTK_VALUE_UINT (*arg) = frameset_child->xpadding; + break; + case CHILD_ARG_Y_PADDING: + GTK_VALUE_UINT (*arg) = frameset_child->ypadding; + break; + case CHILD_ARG_BORDER: + GTK_VALUE_BOOL (*arg) = frameset_child->border; + break; + case CHILD_ARG_NORESIZE: + GTK_VALUE_BOOL (*arg) = frameset_child->noresize; + break; + default: + arg->type = GTK_TYPE_INVALID; + break; + } +} + +/* + * Standard GTK function + */ +static void +gtk_frameset_realize (GtkWidget *widget) +{ + GtkFrameset *frameset = GTK_FRAMESET(widget); + GdkWindowAttr attributes; + gint attributes_mask; + + GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED); + + attributes.x = widget->allocation.x; + attributes.y = widget->allocation.y; + attributes.width = widget->allocation.width; + attributes.height = widget->allocation.height; + attributes.window_type = GDK_WINDOW_CHILD; + attributes.wclass = GDK_INPUT_OUTPUT; + attributes.visual = gtk_widget_get_visual (widget); + attributes.colormap = gtk_widget_get_colormap (widget); + attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK; + attributes_mask = (GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP); + attributes.event_mask |= (GDK_BUTTON_PRESS_MASK | + GDK_BUTTON_RELEASE_MASK | + GDK_POINTER_MOTION_MASK | + GDK_POINTER_MOTION_HINT_MASK | + GDK_ENTER_NOTIFY_MASK | + GDK_LEAVE_NOTIFY_MASK); + + widget->window = gdk_window_new (gtk_widget_get_parent_window (widget), + &attributes, attributes_mask); + + frameset->cursor_rowcol = gdk_cursor_new(GDK_FLEUR); + frameset->cursor_row = gdk_cursor_new(GDK_SB_V_DOUBLE_ARROW); + frameset->cursor_col = gdk_cursor_new(GDK_SB_H_DOUBLE_ARROW); + + gdk_window_set_user_data (widget->window, frameset); + widget->style = gtk_style_attach (widget->style, widget->window); + gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL); + gdk_window_set_back_pixmap (widget->window, NULL, TRUE); +} + +/* + * standard GTK function + */ +static void +gtk_frameset_unrealize (GtkWidget *widget) +{ + GtkFrameset *frameset = GTK_FRAMESET(widget); + + gdk_cursor_destroy(frameset->cursor_rowcol); + gdk_cursor_destroy(frameset->cursor_row); + gdk_cursor_destroy(frameset->cursor_col); + + GTK_WIDGET_CLASS(parent_class)->unrealize (widget); +} + +/* standard GTK function */ +static void +gtk_frameset_init (GtkFrameset *frameset) +{ + GTK_WIDGET_UNSET_FLAGS (frameset, GTK_NO_WINDOW); + + frameset->children = NULL; + frameset->rows = NULL; + frameset->cols = NULL; + frameset->nrows = 0; + frameset->ncols = 0; + frameset->resize_row = RESIZE_NONE; + frameset->resize_col = RESIZE_NONE; + frameset->in_drag = FALSE; + frameset->cursor_rowcol = NULL; + frameset->cursor_row = NULL; + frameset->cursor_col = NULL; + + gtk_frameset_resize (frameset, "*", "*"); +} + +/* + * standard GTK function + * + * resize frameset. It is only possible to enlarge the + * frameset (or change dimensions while keeping the same + * size) as reducing the size could orphan children. + */ +void +gtk_frameset_resize (GtkFrameset *frameset, + gchar *row_multilengths, + gchar *col_multilengths) +{ + gint n_rows, n_cols, n; + GSList *rows, *cols; + gfloat total_percentage, total_relative; + gfloat row_per_relative, row_per_percent; + gfloat col_per_relative, col_per_percent; + + g_return_if_fail (frameset != NULL); + g_return_if_fail (GTK_IS_FRAMESET(frameset)); + g_return_if_fail (row_multilengths || col_multilengths); + + DEBUG_MSG(DEBUG_EVENT, "gtk_frameset_resize(%d, %s, %s)\n", (gint) frameset, row_multilengths, col_multilengths); + + rows = gtk_frameset_get_multi_length(row_multilengths); + cols = gtk_frameset_get_multi_length(col_multilengths); + + /* (older versions of) compiler happiness */ + row_per_relative = 0; + row_per_percent = 0; + col_per_relative = 0; + col_per_percent = 0; + + n_rows = g_slist_length(rows); + n_cols = g_slist_length(cols); + + /* calculate row and column dimensions. These calculations are slightly hairy... + * The theory goes as follows: + * + * Starting point is the frameset width and height. + * First come frames with absolute dimensions. No frame can be bigger than the frameset, + * so checks are performed to make sure that absolute frame dimensions do not + * exceed frameset dimensions. When the total number of frames with absolute dimensions + * exceeds the frameset dimensions, the available space is divided by ratio to those frames. + * In case there are only absolute dimensioned frames, available space is divided by ratio to + * these frames and the absolute dimensions are transformed into percentual dimensions. + * + * Next come frames with percentual dimensions. They get to divide the remaining space after + * all absolute dimensions have been allocated. If the total of all percentual dimensions adds + * up to more than 100, the calculation is normalised to 100%. + * + * Last come frames with relative dimensions. They get to divide the remaining space after + * all absolute and percentual dimensions have been allocated. All available space is divided + * by ratio to relative weights and allocated to frames. In the second stage, relative dimensions + * are transformed into percentual dimensions so the frameset ends up having only absolute (pixel) + * and percentual dimensions. + * + * The calculations are performed in two stages. In the first (aggregation) stage, the total weight of + * absolute, percentual and relative dimensions is calculated. In the second (normalisation) stage, relative + * dimensions are transformed into percentual dimensions. The actual calculation of pixel dimensions + * is performed in the callback function as it depends on information about the current size of the + * frameset widget. + * + * Can this be optimised? Sure, but... later... + */ + + if(n_rows >= frameset->nrows) + { + frameset->nrows = n_rows; + frameset->rows = g_realloc (frameset->rows, frameset->nrows * sizeof (GtkFramesetRowCol)); + + frameset->row_total_absolute = 0; + total_percentage = 0; + total_relative = 0; + + for(n = 0; n < frameset->nrows; n++) { + frameset->rows[n].length = GPOINTER_TO_INT(g_slist_nth_data(rows, n)); + frameset->rows[n].noresize = FALSE; + frameset->rows[n].border = FALSE; + if(LENGTH_IS_RELATIVE(frameset->rows[n].length)) + (LENGTH_GET_RELATIVE(frameset->rows[n].length) ? + total_relative += LENGTH_GET_RELATIVE(frameset->rows[n].length) : + total_relative++); + else if(LENGTH_IS_PERCENTAGE(frameset->rows[n].length)) + total_percentage += LENGTH_GET_PERCENTAGE(frameset->rows[n].length); + else if(LENGTH_IS_ABSOLUTE(frameset->rows[n].length)) { + frameset->row_total_absolute += LENGTH_GET_ABSOLUTE(frameset->rows[n].length); + } + } + + if((total_percentage == 0) && (total_relative == 0)) { + for(n = 0; n < frameset->nrows; n++) + if(LENGTH_IS_ABSOLUTE(frameset->rows[n].length)) + frameset->rows[n].length = + LENGTH_CREATE_PERCENTAGE((gfloat) LENGTH_GET_ABSOLUTE(frameset->rows[n].length) / + frameset->row_total_absolute); + frameset->row_total_absolute = 0; + row_per_percent = 1; + } else if(total_percentage < 1) { + row_per_relative = (gfloat) (1 - total_percentage) / total_relative; + row_per_percent = (gfloat) (total_relative > 0 ? 1 : 1.0 / total_percentage); + } else { + row_per_percent = (gfloat) (1 / total_percentage); + row_per_relative = 0; + } + } + + if(n_cols >= frameset->ncols) + { + frameset->ncols = n_cols; + frameset->cols = g_realloc (frameset->cols, frameset->ncols * sizeof (GtkFramesetRowCol)); + + frameset->col_total_absolute = 0; + total_percentage = 0; + total_relative = 0; + + for(n = 0; n < frameset->ncols; n++) { + frameset->cols[n].length = GPOINTER_TO_INT(g_slist_nth_data(cols, n)); + frameset->cols[n].noresize = FALSE; + frameset->cols[n].border = FALSE; + if(LENGTH_IS_RELATIVE(frameset->cols[n].length)) + (LENGTH_GET_RELATIVE(frameset->cols[n].length) ? + total_relative += LENGTH_GET_RELATIVE(frameset->cols[n].length) : + total_relative++); + else if(LENGTH_IS_PERCENTAGE(frameset->cols[n].length)) + total_percentage += LENGTH_GET_PERCENTAGE(frameset->cols[n].length); + else if(LENGTH_IS_ABSOLUTE(frameset->cols[n].length)) { + frameset->col_total_absolute += LENGTH_GET_ABSOLUTE(frameset->cols[n].length); + } + } + + /* normalize values */ + if((total_percentage == 0) && (total_relative == 0)) { + for(n = 0; n < frameset->ncols; n++) + if(LENGTH_IS_ABSOLUTE(frameset->cols[n].length)) + frameset->cols[n].length = + LENGTH_CREATE_PERCENTAGE((gfloat) LENGTH_GET_ABSOLUTE(frameset->cols[n].length) / + frameset->col_total_absolute); + frameset->col_total_absolute = 0; + col_per_percent = 1; + col_per_relative = 0; + } else if(total_percentage < 1) { + col_per_relative = (gfloat) (1 - total_percentage) / total_relative; + col_per_percent = (gfloat) (total_relative > 0 ? 1 : 1.0 / total_percentage); + } else { + col_per_percent = (gfloat) (1 / total_percentage); + col_per_relative = 0; + } + } + + /* now, calculate actual width/height distribution */ + if(frameset->nrows > 1) { + for(n_rows = 0; n_rows < frameset->nrows; n_rows++) { + if(LENGTH_IS_RELATIVE(frameset->rows[n_rows].length)) + frameset->rows[n_rows].length = + LENGTH_CREATE_PERCENTAGE((LENGTH_GET_RELATIVE(frameset->rows[n_rows].length) ? + (LENGTH_GET_RELATIVE(frameset->rows[n_rows].length) * row_per_relative) : + row_per_relative)); + else if(LENGTH_IS_PERCENTAGE(frameset->rows[n_rows].length)) + frameset->rows[n_rows].length = + LENGTH_CREATE_PERCENTAGE((LENGTH_GET_PERCENTAGE(frameset->rows[n_rows].length) * row_per_percent)); + } + } else + frameset->rows[0].length = LENGTH_CREATE_PERCENTAGE(1); + + if(frameset->ncols > 1) { + for(n_cols = 0; n_cols < frameset->ncols; n_cols++) { + if(LENGTH_IS_RELATIVE(frameset->cols[n_cols].length)) + frameset->cols[n_cols].length = + LENGTH_CREATE_PERCENTAGE((LENGTH_GET_RELATIVE(frameset->cols[n_cols].length) ? + (LENGTH_GET_RELATIVE(frameset->cols[n_cols].length) * col_per_relative) : + col_per_relative)); + else if(LENGTH_IS_PERCENTAGE(frameset->cols[n_cols].length)) + frameset->cols[n_cols].length = + LENGTH_CREATE_PERCENTAGE(LENGTH_GET_PERCENTAGE(frameset->cols[n_cols].length) * col_per_percent); + } + } else + frameset->cols[0].length = LENGTH_CREATE_PERCENTAGE(1); + + g_slist_free(rows); + g_slist_free(cols); +} + +/* standard GTK function */ +GtkWidget* +gtk_frameset_new (gchar *row_multilengths, + gchar *col_multilengths) +{ + GtkFrameset *frameset; + + if (!row_multilengths) + row_multilengths = "*"; + if (!col_multilengths) + col_multilengths = "*"; + + frameset = gtk_type_new (gtk_frameset_get_type ()); + + DEBUG_MSG(DEBUG_EVENT, "/*\n"); + + gtk_frameset_resize(frameset, row_multilengths, col_multilengths); + + DEBUG_MSG(DEBUG_EVENT, " * NEW frameset: %d\n", (gint) frameset); + DEBUG_MSG(DEBUG_EVENT, " * %d rows, %d cols\n", frameset->nrows, frameset->ncols); + DEBUG_MSG(DEBUG_EVENT, " */\n"); + + return GTK_WIDGET (frameset); +} + +/* standard GTK function */ +void +gtk_frameset_attach (GtkFrameset *frameset, + GtkWidget *child, + guint row_attach, + guint col_attach, + guint xpadding, + guint ypadding, + gboolean border, + gboolean noresize) +{ + GtkFramesetChild *frameset_child; + + g_return_if_fail (frameset != NULL); + g_return_if_fail (GTK_IS_FRAMESET (frameset)); + g_return_if_fail (child != NULL); + g_return_if_fail (GTK_IS_WIDGET (child)); + g_return_if_fail (child->parent == NULL); + g_return_if_fail (col_attach < frameset->ncols); + g_return_if_fail (row_attach < frameset->nrows); + + DEBUG_MSG(DEBUG_EVENT, "gtk_frameset_attach(%d, %d, %d, %d, %d, %d, %d, %d)\n", + (gint) frameset, (gint) child, row_attach, col_attach, + xpadding, ypadding, border, noresize); + + frameset_child = g_new (GtkFramesetChild, 1); + frameset_child->widget = child; + frameset_child->row_attach = row_attach; + frameset_child->col_attach = col_attach; + frameset_child->xpadding = xpadding; + frameset_child->ypadding = ypadding; + frameset_child->border = border; + frameset_child->noresize = noresize; + + frameset->children = g_list_prepend (frameset->children, frameset_child); + + gtk_widget_set_parent (child, GTK_WIDGET (frameset)); + + if (GTK_WIDGET_REALIZED (child->parent)) + gtk_widget_realize (child); + + if (GTK_WIDGET_VISIBLE (child->parent) && GTK_WIDGET_VISIBLE (child)) + { + if (GTK_WIDGET_MAPPED (child->parent)) + gtk_widget_map (child); + + gtk_widget_queue_resize (child); + } +} + +/* + * Standard GTK function + * + * add a widget (frame) to the frameset. The widget + * will be put in the current_frame (which will + * be increased in the process) + */ +static void +gtk_frameset_add (GtkContainer *frameset, + GtkWidget *widget) +{ + guint row, col; + + /* is there space left in the frameset for this frame? */ + if (GTK_FRAMESET(frameset)->current_frame >= + (GTK_FRAMESET(frameset)->nrows * GTK_FRAMESET(frameset)->ncols)) { + DEBUG_MSG(DEBUG_EVENT, "No space in frameset for frame\n"); + return; + } + + /* calculate row and column for frame */ + col = GTK_FRAMESET(frameset)->current_frame % GTK_FRAMESET(frameset)->ncols; + row = GTK_FRAMESET(frameset)->current_frame / GTK_FRAMESET(frameset)->ncols; + + DEBUG_MSG(DEBUG_EVENT, "NEW FRAME in frameset %d\n", (gint) frameset); + DEBUG_MSG(DEBUG_EVENT, " ROW %d COL %d\n", row, col); + + gtk_frameset_attach(GTK_FRAMESET(frameset), /* the frameset widget */ + widget, /* the child widget */ + row, /* row to attach to */ + col, /* column to attach to */ + 0, /* marginwidth */ + 0, /* marginheight */ + FALSE, /* border */ + FALSE); /* noresize */ + + (GTK_FRAMESET(frameset)->current_frame)++; +} + +/* standard GTK function */ +static void +gtk_frameset_remove (GtkContainer *container, + GtkWidget *widget) +{ + GtkFrameset *frameset; + GtkFramesetChild *child; + GList *children; + + g_return_if_fail (container != NULL); + g_return_if_fail (GTK_IS_FRAMESET (container)); + g_return_if_fail (widget != NULL); + + frameset = GTK_FRAMESET (container); + children = frameset->children; + + while (children) + { + child = children->data; + children = children->next; + + if (child->widget == widget) + { + gboolean was_visible = GTK_WIDGET_VISIBLE (widget); + + gtk_widget_unparent (widget); + + frameset->children = g_list_remove (frameset->children, child); + g_free (child); + + if (was_visible && GTK_WIDGET_VISIBLE (container)) + gtk_widget_queue_resize (GTK_WIDGET (container)); + break; + } + } +} + +/* standard GTK function */ +static void +gtk_frameset_forall (GtkContainer *container, + gboolean include_internals, + GtkCallback callback, + gpointer callback_data) +{ + GtkFrameset *frameset; + GtkFramesetChild *child; + GList *children; + + g_return_if_fail (container != NULL); + g_return_if_fail (GTK_IS_FRAMESET (container)); + g_return_if_fail (callback != NULL); + + frameset = GTK_FRAMESET (container); + children = frameset->children; + + while (children) + { + child = children->data; + children = children->next; + + (* callback) (child->widget, callback_data); + } +} + +/* standard GTK function */ +static void +gtk_frameset_finalize (GtkObject *object) +{ + GtkFrameset *frameset; + + g_return_if_fail (object != NULL); + g_return_if_fail (GTK_IS_FRAMESET (object)); + + frameset = GTK_FRAMESET (object); + + g_free (frameset->rows); + g_free (frameset->cols); + + (* GTK_OBJECT_CLASS (parent_class)->finalize) (object); +} + +/* standard GTK function */ +static void +gtk_frameset_map (GtkWidget *widget) +{ + GtkFrameset *frameset; + GtkFramesetChild *child; + GList *children; + + g_return_if_fail (widget != NULL); + g_return_if_fail (GTK_IS_FRAMESET (widget)); + + frameset = GTK_FRAMESET (widget); + GTK_WIDGET_SET_FLAGS (frameset, GTK_MAPPED); + + children = frameset->children; + while (children) + { + child = children->data; + children = children->next; + + if (GTK_WIDGET_VISIBLE (child->widget) && + !GTK_WIDGET_MAPPED (child->widget)) + gtk_widget_map (child->widget); + } + + gdk_window_show(widget->window); +} + +/* standard GTK function */ +static void +gtk_frameset_unmap (GtkWidget *widget) +{ + GtkFrameset *frameset; + GtkFramesetChild *child; + GList *children; + + g_return_if_fail (widget != NULL); + g_return_if_fail (GTK_IS_FRAMESET (widget)); + + frameset = GTK_FRAMESET (widget); + GTK_WIDGET_UNSET_FLAGS (frameset, GTK_MAPPED); + + children = frameset->children; + while (children) + { + child = children->data; + children = children->next; + + if (GTK_WIDGET_VISIBLE (child->widget) && + GTK_WIDGET_MAPPED (child->widget)) + gtk_widget_unmap (child->widget); + } + + gdk_window_hide(widget->window); +} + +/* standard GTK function */ +static void +gtk_frameset_draw (GtkWidget *widget, + GdkRectangle *area) +{ + GtkFrameset *frameset; + GtkFramesetChild *child; + GList *children; + GdkRectangle child_area; + + g_return_if_fail (widget != NULL); + g_return_if_fail (GTK_IS_FRAMESET (widget)); + + if (GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_MAPPED (widget)) + { + frameset = GTK_FRAMESET (widget); + children = frameset->children; + while (children) + { + child = children->data; + children = children->next; + + if (gtk_widget_intersect (child->widget, area, &child_area)) + gtk_widget_draw (child->widget, &child_area); + } + } +} + +/* standard GTK function */ +static gint +gtk_frameset_expose (GtkWidget *widget, + GdkEventExpose *event) +{ + GtkFrameset *frameset; + GtkFramesetChild *child; + GList *children; + GdkEventExpose child_event; + + g_return_val_if_fail (widget != NULL, FALSE); + g_return_val_if_fail (GTK_IS_FRAMESET (widget), FALSE); + + if (GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_MAPPED (widget)) + { + frameset = GTK_FRAMESET (widget); + + child_event = *event; + + children = frameset->children; + while (children) + { + child = children->data; + children = children->next; + + if (GTK_WIDGET_NO_WINDOW (child->widget) && + gtk_widget_intersect (child->widget, &event->area, &child_event.area)) + gtk_widget_event (child->widget, (GdkEvent*) &child_event); + } + } + + return FALSE; +} + +/* standard GTK function */ +static void +gtk_frameset_size_allocate (GtkWidget *widget, + GtkAllocation *allocation) +{ + GtkFrameset *frameset; + + g_return_if_fail (widget != NULL); + g_return_if_fail (GTK_IS_FRAMESET (widget)); + g_return_if_fail (allocation != NULL); + + DEBUG_MSG(DEBUG_EVENT, "gtk_frameset_size_allocate(%d, {w:%d, h:%d, x:%d, y:%d})\n", + (gint) widget, allocation->width, allocation->height, allocation->x, allocation->y); + + widget->allocation = *allocation; + frameset = GTK_FRAMESET (widget); + + if (GTK_WIDGET_REALIZED (widget)) + gdk_window_move_resize (widget->window, + allocation->x, allocation->y, + allocation->width, allocation->height); + + gtk_frameset_size_allocate_init (frameset); + gtk_frameset_size_allocate_pass1 (frameset); +} + +/* + * Calculate child dimensions relative to those of frameset, + * based on row and column length specifications + */ +void +gtk_frameset_size_allocate_init(GtkFrameset *frameset) +{ + gint n_rows, n_cols; + gfloat per_percent; + guint real_width, real_height; + guint row_borderspace, col_borderspace; + guint location; + + /* calculate total amount of border space used */ + row_borderspace = 0; + col_borderspace = 0; + + for(n_rows = 0; n_rows < frameset->nrows - 1; n_rows++) + row_borderspace += (frameset->rows[n_rows].border ? GTKFRAMESET_DEFAULT_BORDER_SIZE : 0); + for(n_cols = 0; n_cols < frameset->ncols - 1; n_cols++) + col_borderspace += (frameset->cols[n_cols].border ? GTKFRAMESET_DEFAULT_BORDER_SIZE : 0); + + real_width = + (col_borderspace < GTK_WIDGET(frameset)->allocation.width ? + GTK_WIDGET(frameset)->allocation.width - col_borderspace : 0); + real_height = + (row_borderspace < GTK_WIDGET(frameset)->allocation.height ? + GTK_WIDGET(frameset)->allocation.height - row_borderspace : 0); + + location = 0; + if(frameset->nrows > 1) { + /* calculate number of pixels to dole out per percent */ + per_percent = (gfloat) (real_height > frameset->row_total_absolute ? + ((real_height - frameset->row_total_absolute) / 100.0) : 0); + for(n_rows = 0; n_rows < frameset->nrows; n_rows++) { + if(LENGTH_IS_PERCENTAGE(frameset->rows[n_rows].length)) + frameset->rows[n_rows].allocation = + (gint) (per_percent * 100 * LENGTH_GET_PERCENTAGE(frameset->rows[n_rows].length)); + else if(LENGTH_IS_ABSOLUTE(frameset->rows[n_rows].length)) + frameset->rows[n_rows].allocation = + (gint) LENGTH_GET_ABSOLUTE(frameset->rows[n_rows].length); + + frameset->rows[n_rows].location = location; + location += frameset->rows[n_rows].allocation + + (frameset->rows[n_rows].border ? GTKFRAMESET_DEFAULT_BORDER_SIZE : 0); + } + } else { + frameset->rows[0].allocation = real_height; + frameset->rows[0].location = 0; + } + + location = 0; + if(frameset->ncols > 1) { + /* calculate number of pixels to dole out per percent */ + per_percent = (gfloat) (real_width > frameset->col_total_absolute ? + ((real_width - frameset->col_total_absolute) / 100.0) : 0); + for(n_cols = 0; n_cols < frameset->ncols; n_cols++) { + if(LENGTH_IS_PERCENTAGE(frameset->cols[n_cols].length)) + frameset->cols[n_cols].allocation = + (gint) (per_percent * 100 * LENGTH_GET_PERCENTAGE(frameset->cols[n_cols].length)); + else if(LENGTH_IS_ABSOLUTE(frameset->cols[n_cols].length)) + frameset->cols[n_cols].allocation = + (gint) LENGTH_GET_ABSOLUTE(frameset->cols[n_cols].length); + + frameset->cols[n_cols].location = location; + location += frameset->cols[n_cols].allocation + + (frameset->cols[n_cols].border ? GTKFRAMESET_DEFAULT_BORDER_SIZE : 0); + } + } else { + frameset->cols[0].allocation = real_width; + frameset->cols[0].location = 0; + } +} + +/* + * allocate children according to their placement in frameset + */ +static void +gtk_frameset_size_allocate_pass1(GtkFrameset *frameset) +{ + GtkFramesetChild *child; + GList *children; + GtkAllocation *alloc; + + alloc = g_new0(GtkAllocation, 1); + + children = frameset->children; + while(children) + { + child = children->data; + children = children->next; + + if(GTK_WIDGET_VISIBLE(child->widget)) { + alloc->width = (frameset->cols[child->col_attach].allocation < (2 * child->xpadding) ? + 0 : frameset->cols[child->col_attach].allocation - (2 * child->xpadding)); + + alloc->height = (frameset->rows[child->row_attach].allocation < (2 * child->ypadding) ? + 0 : frameset->rows[child->row_attach].allocation - (2 * child->ypadding)); + alloc->x = frameset->cols[child->col_attach].location + child->xpadding; + alloc->y = frameset->rows[child->row_attach].location + child->ypadding; + gtk_widget_size_allocate(GTK_WIDGET(child->widget), alloc); + + DEBUG_MSG(DEBUG_ALLOC, "widget %d (row %d, col %d) allocated (w:%d, h:%d, x:%d, y:%d)\n", + (gint) child->widget, child->row_attach, child->col_attach, + alloc->width, alloc->height, + frameset->cols[child->col_attach].location, + frameset->rows[child->row_attach].location); + } + } + + g_free(alloc); +} + +/* + * Parse a comma-separated list of %MultiLengths, and returns a GSList + * of lenghts. The caller has to free the GSList. + */ +static GSList* +gtk_frameset_get_multi_length (const gchar *attr) +{ + GSList *list; + gdouble value; + gchar *end, *locale; + Length length; + + g_return_val_if_fail(attr != NULL, NULL); + + /* Set 'C' locale to avoid parsing problems with float numbers */ + locale = g_strdup (setlocale (LC_NUMERIC, NULL)); + setlocale (LC_NUMERIC, "C"); + + list = NULL; + + while(TRUE) { + value = g_strtod (attr, &end); + switch (*end) { + case '%': + length = LENGTH_CREATE_PERCENTAGE (value / 100); + break; + + case '*': + length = LENGTH_CREATE_RELATIVE (value); + break; + + default: + length = LENGTH_CREATE_ABSOLUTE ((gint) value); + break; + } + + list = g_slist_append(list, GINT_TO_POINTER(length)); + + /* there MUST be a comma between values */ + if(!(end = strchr(end, ','))) + break; + /* valid %MultiLength characters: 0123456789%* */ + if(!(attr = strpbrk(end, "0123456789%*"))) + break; + } + + setlocale (LC_NUMERIC, locale); + g_free (locale); + + return list; +} + +/* + * given the current location and allocation values, calculate + * row/col length values. The results are used in size_allocate + */ +static void +gtk_frameset_calculate_lengths(GtkFrameset *frameset) +{ + gint n; + guint total_percentage; + + total_percentage = 0; + frameset->col_total_absolute = 0; + for(n = 0; n < frameset->ncols; n++) + if(LENGTH_IS_ABSOLUTE(frameset->cols[n].length)) { + frameset->cols[n].length = LENGTH_CREATE_ABSOLUTE(frameset->cols[n].allocation); + frameset->col_total_absolute += frameset->cols[n].allocation; + } else + total_percentage += frameset->cols[n].allocation; + + for(n = 0; n < frameset->ncols; n++) { + if(!(LENGTH_IS_ABSOLUTE(frameset->cols[n].length))) + frameset->cols[n].length = + LENGTH_CREATE_PERCENTAGE(((gfloat) frameset->cols[n].allocation) / total_percentage); + } + + total_percentage = 0; + frameset->row_total_absolute = 0; + for(n = 0; n < frameset->nrows; n++) + if(LENGTH_IS_ABSOLUTE(frameset->rows[n].length)) { + frameset->rows[n].length = LENGTH_CREATE_ABSOLUTE(frameset->rows[n].allocation); + frameset->row_total_absolute += frameset->rows[n].allocation; + } else + total_percentage += frameset->rows[n].allocation; + + for(n = 0; n < frameset->nrows; n++) { + if(!(LENGTH_IS_ABSOLUTE(frameset->rows[n].length))) + frameset->rows[n].length = + LENGTH_CREATE_PERCENTAGE(((gfloat) frameset->rows[n].allocation) / total_percentage); + } +} + +/* + * set the resize_row and resize_col attributes and set resize cursor (if any) + */ +static gint +gtk_frameset_set_resize_rowcol(GtkWidget *widget, gint x, gint y) +{ + GtkFrameset *frameset = GTK_FRAMESET(widget); + guint n; + + g_return_val_if_fail (widget != NULL,FALSE); + g_return_val_if_fail (GTK_IS_FRAMESET (widget),FALSE); + + frameset->resize_row = RESIZE_NONE; + frameset->resize_col = RESIZE_NONE; + + for(n=1; n < frameset->ncols; n++) { + if(frameset->cols[n - 1].allocation + frameset->cols[n - 1].location - GTKFRAMESET_DEFAULT_BORDER_SIZE <= x && + frameset->cols[n].location + GTKFRAMESET_DEFAULT_BORDER_SIZE >= x && + !frameset->cols[n].noresize) { + frameset->resize_col = n - 1; + break; + } + } + + for(n=1; n < frameset->nrows; n++) { + if(frameset->rows[n - 1].allocation + frameset->rows[n - 1].location - GTKFRAMESET_DEFAULT_BORDER_SIZE <= y && + frameset->rows[n].location + GTKFRAMESET_DEFAULT_BORDER_SIZE >= y && + !frameset->rows[n].noresize) { + frameset->resize_row = n - 1; + break; + } + } + + if((frameset->resize_row != RESIZE_NONE) && (frameset->resize_col != RESIZE_NONE)) + gdk_window_set_cursor(widget->window, frameset->cursor_rowcol); + else if(frameset->resize_row != RESIZE_NONE) + gdk_window_set_cursor(widget->window, frameset->cursor_row); + else if(frameset->resize_col != RESIZE_NONE) + gdk_window_set_cursor(widget->window, frameset->cursor_col); + else + gdk_window_set_cursor(widget->window, NULL); + + return TRUE; +} + +/* + * standard GTK function + * + * enter drag mode on button_1_press over frame border + */ +static gint +gtk_frameset_button_press (GtkWidget *widget, GdkEventButton *event) +{ + GtkFrameset *frameset = GTK_FRAMESET(widget); + + g_return_val_if_fail (widget != NULL,FALSE); + g_return_val_if_fail (GTK_IS_FRAMESET (widget),FALSE); + + if(!frameset->in_drag && + (event->button == 1) && + (frameset->resize_row != RESIZE_NONE || frameset->resize_col != RESIZE_NONE)) + { + frameset->in_drag = TRUE; + gdk_pointer_grab (widget->window, FALSE, + GDK_POINTER_MOTION_HINT_MASK + | GDK_BUTTON1_MOTION_MASK + | GDK_BUTTON_RELEASE_MASK, + NULL, NULL, event->time); + } + + return TRUE; +} + +/* + * standard GTK function + */ +static gint +gtk_frameset_button_release (GtkWidget *widget, GdkEventButton *event) +{ + GtkFrameset *frameset = GTK_FRAMESET(widget); + + g_return_val_if_fail (widget != NULL,FALSE); + g_return_val_if_fail (GTK_IS_FRAMESET (widget),FALSE); + + if(frameset->in_drag && (event->button == 1)) + { + frameset->in_drag = FALSE; + gdk_pointer_ungrab (event->time); + gtk_widget_queue_resize(GTK_WIDGET(frameset)); + } + + return TRUE; +} + +/* + * standard GTK function + * + * determine row/col to resize (from x, y and noresize attribute), + * set appropriate cursor (row resize, col resize or both) + */ +static gint +gtk_frameset_enter (GtkWidget *widget, GdkEventCrossing *event) +{ + g_return_val_if_fail (widget != NULL,FALSE); + g_return_val_if_fail (GTK_IS_FRAMESET (widget),FALSE); + + return gtk_frameset_set_resize_rowcol(widget, event->x, event->y); +} + +/* + * standard GTK function + * + * unset resize cursor and resize_row/resize_col + */ +static gint +gtk_frameset_leave (GtkWidget *widget, GdkEventCrossing *event) +{ + GtkFrameset *frameset = GTK_FRAMESET(widget); + + g_return_val_if_fail (widget != NULL,FALSE); + g_return_val_if_fail (GTK_IS_FRAMESET (widget),FALSE); + + frameset->resize_row = RESIZE_NONE; + frameset->resize_col = RESIZE_NONE; + gdk_window_set_cursor(widget->window, NULL); + + return TRUE; +} + +/* + * standard GTK function + * + * resize row and/or column when in_drag is true + * otherwise + * if resize_row or resize_col is set + * set resize_row/resize_col and cursor + * + * This way, motion events without prior enter events will not set the + * cursor + */ +static gint +gtk_frameset_motion (GtkWidget *widget, GdkEventMotion *event) +{ + GtkFrameset *frameset = GTK_FRAMESET(widget); + guint x, y; + gint diff; + gboolean return_val; + + g_return_val_if_fail (widget != NULL, FALSE); + g_return_val_if_fail (GTK_IS_FRAMESET (widget), FALSE); + + if (event->is_hint) + gtk_widget_get_pointer(widget, &x, &y); + else { + x = event->x; + y = event->y; + } + + if (frameset->in_drag) + { + if(frameset->resize_row >= 0) { + diff = (y - frameset->rows[frameset->resize_row].location) - + frameset->rows[frameset->resize_row].allocation; + if(frameset->rows[frameset->resize_row].allocation + diff > 0 && + frameset->rows[frameset->resize_row + 1].allocation - diff > 0) { + frameset->rows[frameset->resize_row].allocation += diff; + frameset->rows[frameset->resize_row + 1].location += diff; + frameset->rows[frameset->resize_row + 1].allocation -= diff; + } + } + + if(frameset->resize_col >= 0) { + diff = (x - frameset->cols[frameset->resize_col].location) - + frameset->cols[frameset->resize_col].allocation; + if(frameset->cols[frameset->resize_col].allocation + diff > 0 && + frameset->cols[frameset->resize_col + 1].allocation - diff > 0) { + frameset->cols[frameset->resize_col].allocation += diff; + frameset->cols[frameset->resize_col + 1].location += diff; + frameset->cols[frameset->resize_col + 1].allocation -= diff; + } + } + + gtk_frameset_calculate_lengths(frameset); + gtk_widget_queue_resize(GTK_WIDGET(frameset)); + return_val = TRUE; + } else + /* only adjust resize_row/resize_col if either of these is already set, + * this way the cursor will not be changed by motion events without prior + * enter event */ + if(frameset->resize_row != RESIZE_NONE || + frameset->resize_col != RESIZE_NONE) + return_val = gtk_frameset_set_resize_rowcol(widget, x, y); + else + return_val = TRUE; + + return return_val; +} + diff -pruN dillo-0.8.6/src/gtkframeset.h dillo-0.8.6-i18n-misc-20060709/src/gtkframeset.h --- dillo-0.8.6/src/gtkframeset.h 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/gtkframeset.h 2006-05-16 01:21:09.000000000 +0900 @@ -0,0 +1,133 @@ +/* + * File: gtkframeset.h + * Copyright (C) 2003 Frank de Lange <frank@unternet.org> + * + * a frameset widget for GTK - The GIMP Toolkit + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GTK_FRAMESET_H__ +#define __GTK_FRAMESET_H__ + +#include <gdk/gdk.h> +#include <gtk/gtkcontainer.h> + + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + + +#define GTK_FRAMESET(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_FRAMESET, GtkFrameset)) +#define GTK_TYPE_FRAMESET (gtk_frameset_get_type ()) +#define GTK_FRAMESET_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_FRAMESET, GtkFramesetClass)) +#define GTK_IS_FRAMESET(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_FRAMESET)) +#define GTK_IS_FRAMESET_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_FRAMESET)) + + +typedef struct _GtkFrameset GtkFrameset; +typedef struct _GtkFramesetClass GtkFramesetClass; +typedef struct _GtkFramesetChild GtkFramesetChild; +typedef struct _GtkFramesetRowCol GtkFramesetRowCol; +typedef gint32 Length; + +/* (adapted from dw_style.h) Lengths */ +#define LENGTH_CREATE_ABSOLUTE(n) (((n) << 2) | 1) +#define LENGTH_CREATE_PERCENTAGE(n) ((LENGTH_FLOAT_TO_REAL (n) << 3) | 2) +#define LENGTH_CREATE_RELATIVE(n) ((LENGTH_FLOAT_TO_REAL (n) << 3) | 6) +#define LENGTH_UNDEF_LENGTH 0 + +#define LENGTH_IS_ABSOLUTE(l) ((l) & 1) +#define LENGTH_IS_PERCENTAGE(l) (((l) & 7) == 2) +#define LENGTH_IS_RELATIVE(l) (((l) & 7) == 6) + +#define LENGTH_GET_ABSOLUTE(l) ((l) >> 2) +#define LENGTH_GET_PERCENTAGE(l) LENGTH_REAL_TO_FLOAT ((l) >> 3) +#define LENGTH_GET_RELATIVE(l) LENGTH_REAL_TO_FLOAT ((l) >> 3) + +#define LENGTH_REAL_TO_FLOAT(v) ((gfloat)(v) / 0x10000) +#define LENGTH_FLOAT_TO_REAL(v) ((gint)((v) * 0x10000)) + +/* used in frame resize */ +#define RESIZE_NONE -1 + +/* default border size */ +#define GTKFRAMESET_DEFAULT_BORDER_SIZE 2 + +struct _GtkFrameset +{ + GtkContainer container; + + GList *children; + GtkFramesetRowCol *rows; + GtkFramesetRowCol *cols; + guint row_total_absolute, col_total_absolute; + guint16 nrows; + guint16 ncols; + guint16 current_frame; + gboolean in_drag : 1; + gint16 resize_row, resize_col; + GdkCursor *cursor_rowcol, *cursor_row, *cursor_col; +}; + +struct _GtkFramesetClass +{ + GtkContainerClass parent_class; +}; + +struct _GtkFramesetChild +{ + GtkWidget *widget; + guint16 row_attach; + guint16 col_attach; + guint16 xpadding; + guint16 ypadding; + gboolean border : 1; + gboolean noresize : 1; +}; + +struct _GtkFramesetRowCol +{ + guint16 location; + guint16 allocation; + gboolean noresize : 1; + gboolean border: 1; + Length length; + guint16 spacing; +}; + + +GtkType gtk_frameset_get_type (void); +GtkWidget* gtk_frameset_new (gchar *rows, + gchar *columns); +void gtk_frameset_resize (GtkFrameset *frameset, + gchar *rows, + gchar *columns); +void gtk_frameset_attach (GtkFrameset *frameset, + GtkWidget *child, + guint row_attach, + guint col_attach, + guint xpadding, + guint ypadding, + gboolean border, + gboolean noresize); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __GTK_FRAMESET_H__ */ diff -pruN dillo-0.8.6/src/html.c dillo-0.8.6-i18n-misc-20060709/src/html.c --- dillo-0.8.6/src/html.c 2006-04-13 00:50:35.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/html.c 2006-06-25 10:04:43.000000000 +0900 @@ -17,31 +17,41 @@ /* Undefine if you want to unroll tables. For instance for PDAs */ #define USE_TABLES - /* Define to 1 to ignore white space immediately after an open tag, * and immediately before a close tag. */ #define SGML_SPCDEL 0 +#ifndef ENABLE_META_REFRESH + #define SEND_HTML_MSG /* meta-refresh */ +#endif +//#define USE_OLD_PARSER + +#include <config.h> #include <ctype.h> /* for isspace and tolower */ #include <string.h> /* for memcpy and memmove */ #include <stdlib.h> #include <stdio.h> /* for sprintf */ -#include <math.h> /* for rint */ -#include <errno.h> +#include <math.h> /* for rint */ +#include <errno.h> /* for iconv error codes */ +#include <time.h> /* for nanosleep */ -#include <gtk/gtk.h> +#include "i18n_gtk.h" +#include "intl.h" #include "msg.h" +#include "adblock.h" #include "list.h" #include "binaryconst.h" #include "colors.h" #include "dillo.h" #include "history.h" #include "nav.h" +#include "doc.h" #include "menu.h" #include "commands.h" #include "dw.h" /* for Dw_cursor_hand */ +#include "dw_gtk_scrolled_window.h" /* for a_Dw_gtk_scrolled_window_get_dw */ #include "dw_gtk_viewport.h" #include "dw_gtk_scrolled_window.h" @@ -56,11 +66,17 @@ #include "dw_list_item.h" #include "dw_style.h" #include "interface.h" -#include "progressbar.h" #include "prefs.h" #include "misc.h" #include "capi.h" #include "html.h" +#include "i18n.h" + +#include "gtkframeset.h" + +#define DEBUG_EVENT 10 +#define DEBUG_SIZE 10 +#define DEBUG_ALLOC 10 #define DEBUG_LEVEL 10 #include "debug.h" @@ -94,7 +110,7 @@ static gint Html_write_raw(DilloHtml *ht static void Html_write(DilloHtml *html, char *Buf, gint BufSize, gint Eof); static void Html_close(DilloHtml *html, gint ClientKey); static void Html_callback(int Op, CacheClient_t *Client); -static DilloHtml *Html_new(BrowserWindow *bw, const DilloUrl *url); +static DilloHtml *Html_new(DilloDoc *dd, const DilloUrl *url); static void Html_tag_open_input(DilloHtml *html, char *tag, gint tagsize); static void Html_add_input(DilloHtmlForm *form, DilloHtmlInputType type, @@ -107,6 +123,9 @@ static void Html_submit_form(GtkWidget * gint click_x, gint click_y); static void Html_reset_form(GtkWidget *reset, DilloHtmlLB *html_lb); static gint Html_tag_index(char *tag); +static void Html_translate(DilloTrans *trans, char *buf, gint bufsize); +static DilloTrans *Html_translation_new(char *source, char *dest); +static void Html_translation_free(DilloTrans *trans, gboolean keepbuf); /* exported function */ DwWidget *a_Html_text(const char *Type, void *P, CA_Callback_t *Call, @@ -117,9 +136,6 @@ DwWidget *a_Html_text(const char *Type, * Local Data */ -/* The following array of font sizes has to be _strictly_ crescent */ -static const gint FontSizes[] = {8, 10, 12, 14, 18, 24}; -static const gint FontSizesNum = 6; static const gint FontSizesBase = 2; /* Parsing table structure */ @@ -141,9 +157,11 @@ static gint Html_get_line_number(DilloHt gint i, ofs, line; const char *p = html->Start_Buf; + ofs = (html->Buf_Size < html->CurrTagOfs) + ? html->Buf_Size : html->CurrTagOfs; + g_return_val_if_fail(p != NULL, -1); - ofs = html->CurrTagOfs; line = html->OldTagLine; for (i = html->OldTagOfs; i < ofs; ++i) if (p[i] == '\n') @@ -161,14 +179,14 @@ static void Html_msg(DilloHtml *html, co va_list argp; gchar buf[512]; - g_snprintf(buf, 512, "HTML warning: line %d, ", + g_snprintf(buf, 512, _("HTML warning: line %d, "), Html_get_line_number(html)); g_string_append(html->linkblock->page_bugs, buf); va_start(argp, format); g_vsnprintf(buf, 512, format, argp); va_end(argp); g_string_append(html->linkblock->page_bugs, buf); - a_Interface_bug_meter_update(html->bw, + a_Interface_bug_meter_update(html->dd->bw, ++html->linkblock->num_page_bugs); } @@ -192,14 +210,14 @@ static DilloUrl *Html_url_new(DilloHtml const char *suffix = (n_ic) > 1 ? "s" : ""; n_ic_spc = URL_ILLEGAL_CHARS_SPC(url); if (n_ic == n_ic_spc) { - MSG_HTML("URL has %d illegal character%s [%d space%s]\n", + MSG_HTML(_("URL has %d illegal character%s [%d space%s]\n"), n_ic, suffix, n_ic_spc, suffix); } else if (n_ic_spc == 0) { - MSG_HTML("URL has %d illegal character%s [%d in (00-1F or 7F)]\n", + MSG_HTML(_("URL has %d illegal character%s [%d in (00-1F or 7F)]\n"), n_ic, suffix, n_ic); } else { - MSG_HTML("URL has %d illegal character%s " - "[%d space%s and %d in (00-1F or 7F)]\n", + MSG_HTML(_("URL has %d illegal character%s " + "[%d space%s and %d in (00-1F or 7F)]\n"), n_ic, suffix, n_ic_spc, n_ic_spc ? "s" : "", n_ic-n_ic_spc); } } @@ -213,7 +231,15 @@ DwWidget *a_Html_text(const char *Type, void **Data) { DilloWeb *web = P; - DilloHtml *html = Html_new(web->bw, web->url); + DilloHtml *html = Html_new(web->dd, web->url); + + /* Actual, HTTP header charset is almost reliable in Japan + * at least... however, the HTML 4.01 SPEC recommends + * to giving top priority to this. */ + if ((html->server_charset = strstr(Type, "charset=")) + && html->server_charset + 8) + html->server_charset + = a_I18n_fix_charset(g_strdup(html->server_charset + 8)); *Data = (void *) html; *Call = (CA_Callback_t) Html_callback; @@ -224,11 +250,11 @@ DwWidget *a_Html_text(const char *Type, /* * We'll make the linkblock first to get it out of the way. */ -static DilloHtmlLB *Html_lb_new(BrowserWindow *bw, const DilloUrl *url) +static DilloHtmlLB *Html_lb_new(DilloDoc *dd, const DilloUrl *url) { DilloHtmlLB *html_lb = g_new(DilloHtmlLB, 1); - html_lb->bw = bw; + html_lb->dd = dd; html_lb->base_url = a_Url_dup(url); html_lb->num_forms_max = 1; html_lb->num_forms = 0; @@ -242,6 +268,14 @@ static DilloHtmlLB *Html_lb_new(BrowserW html_lb->link_color = prefs.link_color; html_lb->visited_color = prefs.visited_color; + html_lb->charset = NULL; + html_lb->usingMetaCharset = FALSE; + html_lb->lang[0] = 0; + +#ifdef ENABLE_META_REFRESH + html_lb->meta_refresh = NULL; +#endif + html_lb->num_page_bugs = 0; html_lb->page_bugs = g_string_new(""); @@ -258,12 +292,17 @@ static void Html_lb_free(void *lb) DilloHtmlLB *html_lb = lb; DEBUG_MSG(3, "Html_lb_free\n"); - +#ifdef ENABLE_META_REFRESH + if (html_lb->meta_refresh) { + *html_lb->meta_refresh = 1; + } +#endif a_Url_free(html_lb->base_url); for (i = 0; i < html_lb->num_forms; i++) { form = &html_lb->forms[i]; a_Url_free(form->action); + g_free(form->charset); for (j = 0; j < form->num_inputs; j++) { g_free(form->inputs[j].name); g_free(form->inputs[j].init_str); @@ -286,6 +325,8 @@ static void Html_lb_free(void *lb) a_Url_free(html_lb->links[i]); g_free(html_lb->links); + g_free(html_lb->charset); + a_Dw_image_map_list_free(&html_lb->maps); g_string_free(html_lb->page_bugs, TRUE); @@ -319,15 +360,19 @@ static void Html_handle_status(DwWidget url = (link == -1) ? NULL : lb->links[link]; if (url) { + gchar *url_str = NULL; + if(URL_STR_(url)) + url_str = a_I18n_convert(lb->charset, DILLO_CHARSET, + URL_STR_(url), -1); Html_set_link_coordinates(lb, link, x, y); - a_Interface_msg(lb->bw, "%s", - URL_ALT_(url) ? URL_ALT_(url) : URL_STR_(url)); + a_Interface_msg(lb->dd->bw, "%s", + URL_ALT_(url) ? URL_ALT_(url) : url_str); + g_free(url_str); a_Dw_widget_set_cursor (widget, Dw_cursor_hand); - lb->bw->status_is_link = 1; - + lb->dd->bw->status_is_link = 1; } else { - if (lb->bw->status_is_link) - a_Interface_msg(lb->bw, ""); + if (lb->dd->bw->status_is_link) + a_Interface_msg(lb->dd->bw, ""); a_Dw_widget_set_cursor (widget, NULL); } } @@ -343,26 +388,26 @@ static gboolean Html_link_menu(DwWidget if (event->button == 3) { Html_set_link_coordinates(lb, link, x, y); - a_Menu_popup_set_url(lb->bw, lb->links[link]); + a_Menu_popup_set_url(lb->dd->bw, lb->links[link]); /* if we've got an image, prepare the image popup */ widget_at_cursor = a_Dw_gtk_scrolled_window_widget_at_viewport_point( - GTK_DW_SCROLLED_WINDOW (lb->bw->docwin), event->x, event->y); + GTK_DW_SCROLLED_WINDOW (lb->dd->docwin), event->x, event->y); if (widget_at_cursor && DW_IS_IMAGE (widget_at_cursor)) { DwImage *image = DW_IMAGE (widget_at_cursor); /* test image->url (it may have not started to arrive yet!) */ if (image->url) { /* use the second URL for this popup */ - gtk_object_set_data(GTK_OBJECT (lb->bw->menu_popup.over_image), + gtk_object_set_data(GTK_OBJECT (lb->dd->bw->menu_popup.over_image), "url2", GINT_TO_POINTER(2)); - a_Menu_popup_set_url2(lb->bw, image->url); + a_Menu_popup_set_url2(lb->dd->bw, image->url); show_oi = TRUE; } } - a_Menu_popup_ol_show_oi(lb->bw, show_oi); + a_Menu_popup_ol_show_oi(lb->dd->bw, show_oi); - gtk_menu_popup(GTK_MENU(lb->bw->menu_popup.over_link), NULL, NULL, + gtk_menu_popup(GTK_MENU(lb->dd->bw->menu_popup.over_link), NULL, NULL, NULL, NULL, event->button, event->time); return TRUE; } @@ -375,21 +420,60 @@ static gboolean Html_link_menu(DwWidget * Activate a link ("link_clicked" callback of the page) */ static gboolean Html_link_clicked(DwWidget *widget, gint link, gint x, gint y, - GdkEventButton *event, DilloHtmlLB *lb) + GdkEventButton *event, DilloHtmlLB *lb) { + DilloDoc *named_dd; + gchar *target; + gboolean return_val; + + return_val = FALSE; + Html_set_link_coordinates(lb, link, x, y); - if (event->button == 1) - a_Nav_push(lb->bw, lb->links[link]); - else if (event->button == 2) { - a_Nav_push_nw(lb->bw, lb->links[link]); - } else { - return FALSE; + + switch (event->button) { + case 1: + if (event->state & GDK_SHIFT_MASK) { + /* shift-click: open in new window */ + a_Menu_popup_set_url(lb->dd->bw, lb->links[link]); + a_Commands_open_link_nw_callback(NULL, lb->dd->bw); +#ifndef DISABLE_TABS + } else if (event->state & GDK_CONTROL_MASK) { + /* control-click: open in new tab */ + a_Menu_popup_set_url(lb->dd->bw, lb->links[link]); + a_Commands_open_link_nw_tab_callback(NULL, lb->dd->bw); +#endif /* !DISABLE_TABS */ + } else { + if((target = (gchar *) URL_TARGET_(lb->links[link]))) + /* targeted link or base target, open in either existing + * named document or new document */ + if ((named_dd = a_Doc_get_by_name(lb->dd, (gchar *) target))) + a_Nav_push(named_dd, lb->links[link]); + else { + a_Menu_popup_set_url(lb->dd->bw, lb->links[link]); + a_Commands_open_link_nw_callback(NULL, lb->dd->bw); + } + else + a_Nav_push(lb->dd, lb->links[link]); + } + return_val = TRUE; + break; + case 2: + a_Menu_popup_set_url(lb->dd->bw, lb->links[link]); +#ifndef DISABLE_TABS + if(prefs.tab_instead_of_window) + a_Commands_open_link_nw_tab_callback(NULL, lb->dd->bw); + else +#endif /* !DISABLE_TABS */ + a_Commands_open_link_nw_callback(NULL, lb->dd->bw); + return_val = TRUE; + break; + default: + break; } if (DW_IS_PAGE (widget)) a_Dw_page_change_link_color (DW_PAGE (widget), link, lb->visited_color); - - return TRUE; + return return_val; } /* @@ -397,14 +481,14 @@ static gboolean Html_link_clicked(DwWidg */ static gboolean Html_image_menu(DwWidget *widget, gint32 x, gint32 y, GdkEventButton *event, - BrowserWindow *bw) + DilloDoc *dd) { DwImage *image = DW_IMAGE (widget); if (event->button == 3 && image->url) { - a_Menu_popup_set_url(bw, image->url); - a_Menu_popup_clear_url2(bw->menu_popup.over_image); + a_Menu_popup_set_url(dd->bw, image->url); + a_Menu_popup_clear_url2(dd->bw->menu_popup.over_image); - gtk_menu_popup(GTK_MENU(bw->menu_popup.over_image), NULL, NULL, + gtk_menu_popup(GTK_MENU(dd->bw->menu_popup.over_image), NULL, NULL, NULL, NULL, event->button, event->time); return TRUE; } @@ -416,19 +500,62 @@ static gboolean Html_image_menu(DwWidget * Popup the page menu ("button_press_event" callback of the viewport) */ static int Html_page_menu(GtkWidget *viewport, GdkEventButton *event, - BrowserWindow *bw) + DilloDoc *dd) { gpointer bug_pix; - if (event->button == 3) { /* set the working URL */ - a_Menu_popup_set_url(bw, a_History_get_url(NAV_TOP(bw))); + a_Menu_popup_set_url(dd->bw, a_History_get_url(NAV_TOP(dd))); + if(dd->pagemarks_menu) { + /* this dd has a pagemarks menu, hook it up to the window's menu */ + gtk_menu_item_set_submenu(GTK_MENU_ITEM(dd->bw->pagemarks_menuitem), + dd->pagemarks_menu); + gtk_widget_set_sensitive(dd->bw->pagemarks_menuitem, TRUE); + } else { + /* remove pagemarks submenu from window's menu */ + gtk_widget_set_sensitive(dd->bw->pagemarks_menuitem, FALSE); + } + if(dd->parent) { + /* this is a frame or an iframe, create frame menu */ + if(dd->bw->menu_popup.over_frame) { + gtk_widget_destroy(dd->bw->menu_popup.over_frame); + dd->bw->menu_popup.over_frame = NULL; + } + dd->bw->menu_popup.over_frame = a_Menu_popup_of_new(dd); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(dd->bw->frame_menuitem), + dd->bw->menu_popup.over_frame); + gtk_widget_set_sensitive(dd->bw->frame_menuitem, TRUE); + if((dd->parent)->parent) { + /* this is a nested frame, show frameset menu + * TODO: currently the frameset menu also shows for nested + * iframes. It does not do harm, but it is not that useful... */ + gtk_menu_item_set_submenu(GTK_MENU_ITEM(dd->bw->frameset_menuitem), + a_Menu_popup_ofs_new(dd)); + gtk_widget_set_sensitive(dd->bw->frameset_menuitem, TRUE); + gtk_widget_show(dd->bw->frameset_menuitem); + } else { + gtk_widget_set_sensitive(dd->bw->frameset_menuitem, FALSE); + gtk_widget_hide(dd->bw->frameset_menuitem); + } + gtk_widget_show(dd->bw->frame_menuitem); + } else { + /* this is an unparented document, disable/destroy frame menu */ + if(dd->bw->menu_popup.over_frame) { + gtk_widget_destroy(dd->bw->menu_popup.over_frame); + dd->bw->menu_popup.over_frame = NULL; + } + gtk_widget_set_sensitive(dd->bw->frame_menuitem, FALSE); + gtk_widget_hide(dd->bw->frame_menuitem); + gtk_widget_set_sensitive(dd->bw->frameset_menuitem, FALSE); + gtk_widget_hide(dd->bw->frameset_menuitem); + } + /* set "View page Bugs" sensitivity */ - bug_pix = gtk_object_get_data(GTK_OBJECT(bw->status_bug_meter), "bug"); - gtk_widget_set_sensitive(bw->viewbugs_menuitem, + bug_pix = gtk_object_get_data(GTK_OBJECT(dd->bw->status_bug_meter), "bug"); + gtk_widget_set_sensitive(dd->bw->viewbugs_menuitem, GTK_WIDGET_VISIBLE(GTK_WIDGET(bug_pix))); - gtk_menu_popup(GTK_MENU(bw->menu_popup.over_page), NULL, NULL, - NULL, NULL, event->button, event->time); + gtk_menu_popup(GTK_MENU(dd->bw->menu_popup.over_page), NULL, NULL, + NULL, NULL, event->button, event->time); return TRUE; } else return FALSE; @@ -458,6 +585,7 @@ static gint Html_set_new_link(DilloHtml { gint nl; + a_Url_set_referer(*url, html->linkblock->base_url); nl = html->linkblock->num_links; a_List_add(html->linkblock->links, nl, html->linkblock->num_links_max); html->linkblock->links[nl] = (*url) ? *url : NULL; @@ -480,7 +608,7 @@ static int Html_check_int(int n, int min static gint Html_form_new(DilloHtmlLB *html_lb, DilloHtmlMethod method, const DilloUrl *action, - DilloHtmlEnc enc) + gchar *encoding) { gint nf; @@ -489,7 +617,7 @@ static gint Html_form_new(DilloHtmlLB *h nf = html_lb->num_forms; html_lb->forms[nf].method = method; html_lb->forms[nf].action = a_Url_dup(action); - html_lb->forms[nf].enc = enc; + html_lb->forms[nf].charset = g_strdup(encoding); html_lb->forms[nf].num_inputs = 0; html_lb->forms[nf].num_inputs_max = 4; html_lb->forms[nf].inputs = NULL; @@ -514,7 +642,7 @@ static gint Html_form_new(DilloHtmlLB *h style_attrs = *old_style; \ style_attrs.var = (val); \ (html)->stack[(html)->stack_top].style = \ - a_Dw_style_new (&style_attrs, (html)->bw->main_window->window); \ + a_Dw_style_new (&style_attrs, (html)->dd->bw->main_window->window); \ a_Dw_style_unref (old_style); \ } while (FALSE) @@ -539,6 +667,7 @@ static void Html_set_top_font(DilloHtml (prefs.use_oblique ? DW_STYLE_FONT_STYLE_OBLIQUE : DW_STYLE_FONT_STYLE_ITALIC) : DW_STYLE_FONT_STYLE_NORMAL; + strncpy(font_attrs.lang, html->linkblock->lang, 6); HTML_SET_TOP_ATTR (html, font, a_Dw_style_font_new (&font_attrs)); } @@ -625,13 +754,13 @@ static void Html_add_indented_widget(Dil a_Dw_style_box_set_border_color (&style_attrs, a_Dw_style_shaded_color_new(style_attrs.color->color_val, - html->bw->main_window->window)); + html->dd->bw->main_window->window)); a_Dw_style_box_set_border_style(&style_attrs, DW_STYLE_BORDER_DASHED); #endif style_attrs.margin.left = left; style_attrs.margin.right = right; - style = a_Dw_style_new (&style_attrs, html->bw->main_window->window); + style = a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window); a_Dw_page_add_parbreak (DW_PAGE (html->dw), space, style); a_Dw_page_add_widget (DW_PAGE (html->dw), page, style); @@ -661,11 +790,11 @@ static gint Html_fontsize_to_level(gint { gint i, level; gdouble normalized_size = fontsize / prefs.font_factor, - approximation = FontSizes[FontSizesNum-1] + 1; + approximation = prefs.font_sizes[D_FONT_SIZE_NUM-1] + 1; - for (i = level = 0; i < FontSizesNum; i++) - if (approximation >= fabs(normalized_size - FontSizes[i])) { - approximation = fabs(normalized_size - FontSizes[i]); + for (i = level = 0; i < D_FONT_SIZE_NUM; i++) + if (approximation >= fabs(normalized_size - prefs.font_sizes[i])) { + approximation = fabs(normalized_size - prefs.font_sizes[i]); level = i; } else { break; @@ -680,9 +809,9 @@ static gint Html_fontsize_to_level(gint static gint Html_level_to_fontsize(gint level) { level = MAX(0, level); - level = MIN(FontSizesNum - 1, level); + level = MIN(D_FONT_SIZE_NUM - 1, level); - return rint(FontSizes[level]*prefs.font_factor); + return rint(prefs.font_sizes[level]*prefs.font_factor); } /* @@ -706,13 +835,14 @@ static void Html_set_dwpage(DilloHtml *h font.size = Html_level_to_fontsize(FontSizesBase); font.weight = 400; font.style = DW_STYLE_FONT_STYLE_NORMAL; + strncpy(font.lang, html->linkblock->lang, 6); - a_Dw_style_init_values (&style_attrs, html->bw->main_window->window); + a_Dw_style_init_values (&style_attrs, html->dd->bw->main_window->window); style_attrs.font = a_Dw_style_font_new (&font); style_attrs.color = a_Dw_style_color_new (prefs.text_color, - html->bw->main_window->window); + html->dd->bw->main_window->window); html->stack[0].style = a_Dw_style_new (&style_attrs, - html->bw->main_window->window); + html->dd->bw->main_window->window); html->stack[0].table_cell_style = NULL; @@ -720,21 +850,21 @@ static void Html_set_dwpage(DilloHtml *h Html_connect_signals(html, GTK_OBJECT(widget)); gtk_signal_connect_while_alive ( - GTK_OBJECT(GTK_BIN(html->bw->docwin)->child), "button_press_event", - GTK_SIGNAL_FUNC(Html_page_menu), (gpointer)html->bw, GTK_OBJECT (page)); + GTK_OBJECT(GTK_BIN(html->dd->docwin)->child), "button_press_event", + GTK_SIGNAL_FUNC(Html_page_menu), (gpointer)html->dd, GTK_OBJECT (page)); /* Connect the "bug meter" button-press to the linkblock */ gtk_signal_connect_while_alive( - GTK_OBJECT (html->bw->status_bug_meter), "clicked", + GTK_OBJECT (html->dd->bw->status_bug_meter), "clicked", GTK_SIGNAL_FUNC (a_Commands_view_page_bugs_callback), (gpointer)html->linkblock, GTK_OBJECT (page)); gtk_signal_connect_while_alive( - GTK_OBJECT (html->bw->status_bug_meter), "clicked1", + GTK_OBJECT (html->dd->bw->status_bug_meter), "clicked1", GTK_SIGNAL_FUNC (a_Commands_view_page_bugs_callback), (gpointer)html->linkblock, GTK_OBJECT (page)); /* also connect with the "View page Bugs" menuitem */ gtk_signal_connect_while_alive( - GTK_OBJECT (html->bw->viewbugs_menuitem), "activate", + GTK_OBJECT (html->dd->bw->viewbugs_menuitem), "activate", GTK_SIGNAL_FUNC (a_Commands_view_page_bugs_callback), (gpointer)html->linkblock, GTK_OBJECT (page)); @@ -747,7 +877,7 @@ static void Html_set_dwpage(DilloHtml *h /* * Create and initialize a new DilloHtml structure */ -static DilloHtml *Html_new(BrowserWindow *bw, const DilloUrl *url) +static DilloHtml *Html_new(DilloDoc *dd, const DilloUrl *url) { DilloHtml *html; @@ -755,6 +885,7 @@ static DilloHtml *Html_new(BrowserWindow html->Start_Buf = NULL; html->Start_Ofs = 0; + html->Buf_Size = 0; html->CurrTagOfs = 0; html->OldTagOfs = 0; html->OldTagLine = 1; @@ -763,8 +894,8 @@ static DilloHtml *Html_new(BrowserWindow html->DocTypeVersion = 0.0f; html->dw = NULL; - html->bw = bw; - html->linkblock = Html_lb_new(bw, url); + html->dd = dd; + html->linkblock = Html_lb_new(dd, url); html->stack_max = 16; html->stack_top = 0; @@ -774,6 +905,8 @@ static DilloHtml *Html_new(BrowserWindow html->stack[0].table_cell_style = NULL; html->stack[0].parse_mode = DILLO_HTML_PARSE_MODE_INIT; html->stack[0].table_mode = DILLO_HTML_TABLE_MODE_NONE; + html->stack[0].frame_mode = DILLO_HTML_FRAME_MODE_NONE; + html->stack[0].frameset = NULL; html->stack[0].cell_text_align_set = FALSE; html->stack[0].list_type = HTML_LIST_NONE; /* no <ul> or <ol> open */ html->stack[0].list_number = 0; @@ -806,6 +939,10 @@ static DilloHtml *Html_new(BrowserWindow html->attr_data = g_string_sized_new(1024); + html->trans = NULL; /* no conversion yet */ + html->server_charset = NULL; + html->lang = NULL; + Html_set_dwpage(html); return html; @@ -823,11 +960,11 @@ static void Html_stash_init(DilloHtml *h /* Entities list from the HTML 4.01 DTD */ typedef struct { - char *entity; - int isocode; + gchar *entity; + guint isocode; } Ent_t; -#define NumEnt 252 +#define NumEnt 253 static const Ent_t Entities[NumEnt] = { {"AElig",0306}, {"Aacute",0301}, {"Acirc",0302}, {"Agrave",0300}, {"Alpha",01621},{"Aring",0305}, {"Atilde",0303}, {"Auml",0304}, @@ -846,7 +983,7 @@ static const Ent_t Entities[NumEnt] = { {"Yacute",0335},{"Yuml",0570}, {"Zeta",01626}, {"aacute",0341}, {"acirc",0342}, {"acute",0264}, {"aelig",0346}, {"agrave",0340}, {"alefsym",020465},{"alpha",01661},{"amp",38}, {"and",021047}, - {"ang",021040}, {"aring",0345}, {"asymp",021110},{"atilde",0343}, + {"ang",021040},{"apos",34},{"aring",0345},{"asymp",021110},{"atilde",0343}, {"auml",0344}, {"bdquo",020036},{"beta",01662}, {"brvbar",0246}, {"bull",020042},{"cap",021051}, {"ccedil",0347}, {"cedil",0270}, {"cent",0242}, {"chi",01707}, {"circ",01306}, {"clubs",023143}, @@ -894,6 +1031,41 @@ static const Ent_t Entities[NumEnt] = { {"yuml",0377}, {"zeta",01666}, {"zwj",020015}, {"zwnj",020014} }; +/* A table for numbered entities. For Latin-1 text this is a 1-1 mapping. + * It is more complicated for other character encodings. */ +static char *NumberedEnts[256] = { + "?","\001","\002","\003","\004","\005","\006","\007", + "\010","\011","\012","\013","\014","\015","\016","\017", + "\020","\021","\022","\023","\024","\025","\026","\027", + "\030","\031","\032","\033","\034","\035","\036","\037", + "\040","!","\042","#","\044","\045","&","\047", + "(",")","*","+",",","-",".","/", + "0","1","2","3","4","5","6","7", + "8","9",":",";","<","=",">","?", + "@","A","B","C","D","E","F","G", + "H","I","J","K","L","M","N","O", + "P","Q","R","S","T","U","V","W", + "X","Y","Z","\133","\134","\135","^","_", + "\140","a","b","c","d","e","f","g", + "h","i","j","k","l","m","n","o", + "p","q","r","s","t","u","v","w", + "x","y","z","{","\174","}","~","\177", + "\200","\201","\202","\203","\204","\205","\206","\207", + "\210","\211","\212","\213","\214","\215","\216","\217", + "\220","\221","\222","\223","\224","\225","\226","\227", + "\230","\231","\232","\233","\234","\235","\236","\237", + " ","!", NULL, NULL, "?", NULL, "|", NULL, + NULL, "(c)", "a", "<<", NULL, "-", "(R)", + NULL, NULL, NULL, "^2", "^3", NULL, + "\xcc\xa6", NULL, NULL, ",", "^1", NULL, ">>", "1/4", + "1/2", "3/4", "?", "A`", "A'", "A^", "A~", "A\"", "A", "AE", "C", "E`", + "E'", "E^", "E\"", "I`", "I'", "I^", "I\"", "D", "N~", "O`", "O'", "O^", + "O~", "O\"", NULL, "O/", "U`", "U'", "U^", "U\"", "Y'", "?", "ss", + "a`", "a'", "a^", "a~", "a\"", "a", "ae", "c", "e`", "e'", "e^", "e\"", + "i`", "i'", "i^", "i\"", "?", "n~", "o`", "o'", "o^", "o~", "o\"", + NULL, "o/", "u`", "u'", "u^", "u\"", "y'", "Io", "y\"" +}; + /* * Comparison function for binary search @@ -917,6 +1089,7 @@ static int Html_entity_search(char *key) return -1; } +#if 0 /* no use on i18n */ /* * Switch a few UCS encodings to latin1. */ @@ -933,7 +1106,7 @@ static gint Html_try_ucs2latin1(gint iso case 0x2039: ret = '<'; break; case 0x203a: ret = '>'; break; case 0x2022: ret = 176; break; - default: ret = -1; break; + default: ret = isocode; break; } return ret; } @@ -956,6 +1129,61 @@ static gint Html_try_ascii2latin1(gint i } return ret; } +#endif + +/* Change from UCS2 to Dillo internal code. */ +static gchar *Html_ucs2utf8(DilloHtml *html, gint isocode) { + gchar *ret = NULL; + + /* Try substitute ascii string. this is a temporary step. */ + if (!a_I18n_has_latin1_charset(html->linkblock->lang)) { + if (isocode > 0 && isocode <= 255) { + ret = NumberedEnts[isocode]; + } else switch (isocode) { + case 338: ret = "OE"; break; + case 339: ret = "oe"; break; + case 352: ret = "S^"; break; + case 353: ret = "s^"; break; + case 376: ret = "Y\""; break; + case 402: ret = "f"; break; + case 710: ret = "^"; break; + case 732: ret = "~"; break; + case 8226: ret = "\xe3\x83\xbb"; break; + case 8482: ret = "TM"; break; + case 8544: ret = "I"; break; + case 8545: ret = "II"; break; + case 8546: ret = "III"; break; + case 8547: ret = "IV"; break; + case 8548: ret = "V"; break; + case 8549: ret = "VI"; break; + case 8550: ret = "VII"; break; + case 8551: ret = "VIII"; break; + case 8552: ret = "IX"; break; + case 8553: ret = "X"; break; + case 8554: ret = "XI"; break; + case 8555: ret = "XII"; break; + case 8722: ret = "-"; break; + default: + if (isocode >= 8194 && isocode <= 8207) ret = " "; + } + } + switch (isocode) { + case 8656: ret = "<="; break; + case 8727: ret = "*"; break; + case 8764: ret = "~"; break; + case 8901: ret = "."; break; + case 9001: ret = "<"; break; + case 9002: ret = ">"; break; + default: break; + } + if (ret) return g_strdup(ret); + + { + /* ISO-10646/UCS2 or ISO-10646-UCS-2 */ + gchar wc[3] = {(gchar)isocode, (gchar)(isocode>>8), 0}; + return a_I18n_convert("UCS-2LE", DILLO_CHARSET, wc, 2); + } +} /* * Given an entity, return the ISO-Latin1 character code. @@ -984,7 +1212,7 @@ static gint Html_parse_entity(DilloHtml /* strtol with base 16 accepts leading "0x" - we don't */ if (*s == '0' && s[1] == 'x') { s++; - isocode = 0; + isocode = 0; } else { isocode = strtol(s, &s, 16); } @@ -995,7 +1223,7 @@ static gint Html_parse_entity(DilloHtml if (!isocode || errno || isocode > 0x7fffffffL) { /* this catches null bytes, errors and codes >=2^31 */ - MSG_HTML("numeric character reference out of range\n"); + MSG_HTML(_("numeric character reference out of range\n")); isocode = -2; } @@ -1003,19 +1231,19 @@ static gint Html_parse_entity(DilloHtml if (*s == ';') s++; else if (prefs.show_extra_warnings) - MSG_HTML("numeric character reference without trailing ';'\n"); + MSG_HTML(_("numeric character reference without trailing ';'\n")); } } else if (isalpha(*s)) { /* character entity reference */ - while (isalnum(*++s) || strchr(":_.-", *s)); + while (*++s && (isalnum(*s) || strchr(":_.-", *s))); c = *s; *s = 0; if (c != ';' || (i = Html_entity_search(tok)) == -1) { if ((html->DocType == DT_HTML && html->DocTypeVersion == 4.01f) || html->DocType == DT_XHTML) - MSG_HTML("undefined character entity '%s'\n", tok); + MSG_HTML(_("undefined character entity '%s'\n"), tok); isocode = -3; } else isocode = Entities[i].isocode; @@ -1023,20 +1251,23 @@ static gint Html_parse_entity(DilloHtml if (c == ';') s++; else if (prefs.show_extra_warnings) - MSG_HTML("character entity reference without trailing ';'\n"); + MSG_HTML(_("character entity reference without trailing ';'\n")); } *entsize = s-tok+1; g_free(tok); +#if 0 /* no use on i18n */ if (isocode >= 128 && isocode <= 159) { - MSG_HTML("code positions 128-159 are not defined for ISO Latin-1\n"); + MSG_HTML(_("code positions 128-159 are not defined for ISO Latin-1\n")); isocode = Html_try_ascii2latin1(isocode); } else if (isocode > 255) /* Try a few UCS translations to Latin1 */ isocode = Html_try_ucs2latin1(isocode); - else if (isocode == -1 && prefs.show_extra_warnings) - MSG_HTML("literal '&'\n"); + else +#endif + if (isocode == -1 && prefs.show_extra_warnings) + MSG_HTML(_("literal '&'\n")); return isocode; } @@ -1049,7 +1280,7 @@ static char * Html_parse_entities(DilloHtml *html, gchar *token, gint toksize) { gchar *esc_set = "&\xE2\xC2"; - gchar *new_str; + gchar *new_str, *subst, *subst_start; gint i, j, isocode, entsize; new_str = g_strndup(token, toksize); @@ -1060,9 +1291,14 @@ static char * if (token[i] == '&' && (isocode = Html_parse_entity(html, token+i, toksize-i, &entsize)) >= 0) { - new_str[j++] = (gchar) isocode; + subst = subst_start = Html_ucs2utf8(html, isocode); + while (*subst != '\0') { /* insert the actual character */ + new_str[j++] = *subst; + subst++; + } + g_free(subst_start); i += entsize-1; - +#if 0 /* no use on i18n */ } else if (token[i] == '\xE2' && token[i+1] == '\x80' && i+2 < toksize){ /* Hack: for parsing some UTF-8 characters into latin1 */ switch (token[i+2]) { @@ -1093,6 +1329,7 @@ static char * new_str[j++] = ' '; ++i; +#endif } else { new_str[j++] = token[i]; } @@ -1139,7 +1376,7 @@ static void Html_process_space(DilloHtml break; case '\t': if (prefs.show_extra_warnings) - MSG_HTML("TAB character inside <PRE>\n"); + MSG_HTML(_("TAB character inside <PRE>\n")); offset = TAB_SIZE - html->pre_column % TAB_SIZE; a_Dw_page_add_text(DW_PAGE (html->dw), g_strnfill(offset, ' '), @@ -1375,7 +1612,7 @@ static void Html_tag_cleanup_at_close(Di /* Warn when we decide to close an open tag (for !w3c_mode) */ if (html->stack_top > stack_idx && Tags[toptag_idx].EndTag != 'O') - MSG_HTML(" - forcing close of open tag: <%s>\n", + MSG_HTML(_(" - forcing close of open tag: <%s>\n"), Tags[toptag_idx].name); /* Close this and only this tag */ @@ -1384,7 +1621,7 @@ static void Html_tag_cleanup_at_close(Di } } else { - MSG_HTML("unexpected closing tag: </%s>. -- expected </%s>\n", + MSG_HTML(_("unexpected closing tag: </%1$s>. -- expected </%2$s>\n"), Tags[new_idx].name, html->stack[stack_idx].tag_name); } } @@ -1429,6 +1666,7 @@ static DwStyleLength Html_parse_length_o end += 2; */ default: + v = (v > G_MAXSHORT*2) ? DW_STYLE_LENGTH_AUTO : v; l = DW_STYLE_CREATE_ABS_LENGTH ((gint)v); break; } @@ -1455,7 +1693,7 @@ static DwStyleLength Html_parse_length ( else { /* allow only whitespaces */ if (*end && !isspace (*end)) { - MSG_HTML("Garbage after length: %s\n", attr); + MSG_HTML(_("Garbage after length: %s\n"), attr); return DW_STYLE_LENGTH_AUTO; } } @@ -1474,7 +1712,7 @@ static gint32 gint32 color = a_Color_parse(subtag, default_color, &err); if (err) { - MSG_HTML("color is not in \"#RRGGBB\" format\n"); + MSG_HTML(_("color is not in \"#RRGGBB\" format\n")); } return color; } @@ -1494,8 +1732,8 @@ static gint break; if (val[i] || !isalpha(val[0])) - MSG_HTML("'%s' value is not of the form " - "[A-Za-z][A-Za-z0-9:_.-]*\n", attrname); + MSG_HTML(_("'%s' value is not of the form " + "[A-Za-z][A-Za-z0-9:_.-]*\n"), attrname); return !(val[i]); } @@ -1591,12 +1829,18 @@ static void Html_parse_doctype(DilloHtml */ static void Html_tag_open_html(DilloHtml *html, char *tag, gint tagsize) { + const char *attrbuf; + if (!(html->InFlags & IN_HTML)) html->InFlags |= IN_HTML; ++html->Num_HTML; if (html->Num_HTML > 1) { - MSG_HTML("HTML element was already open\n"); + MSG_HTML(_("HTML element was already open\n")); + } + + if ((attrbuf = Html_get_attr(html, tag, tagsize, "lang"))) { + strncpy(html->linkblock->lang, attrbuf, 6); } } @@ -1619,7 +1863,7 @@ static void Html_tag_close_html(DilloHtm static void Html_tag_open_head(DilloHtml *html, char *tag, gint tagsize) { if (html->InFlags & IN_BODY) { - MSG_HTML("HEAD element must go before the BODY section\n"); + MSG_HTML(_("HEAD element must go before the BODY section\n")); html->ReqTagClose = TRUE; return; } @@ -1629,7 +1873,7 @@ static void Html_tag_open_head(DilloHtml ++html->Num_HEAD; if (html->Num_HEAD > 1) { - MSG_HTML("HEAD element was already open\n"); + MSG_HTML(_("HEAD element was already open\n")); } } @@ -1642,8 +1886,8 @@ static void Html_tag_close_head(DilloHtm { if (html->InFlags & IN_HEAD) { if (html->Num_TITLE == 0) - MSG_HTML("HEAD section lacks the TITLE element\n"); - + MSG_HTML(_("HEAD section lacks the TITLE element\n")); + html->InFlags &= ~IN_HEAD; } Html_pop_tag(html, TagIdx); @@ -1667,10 +1911,10 @@ static void Html_tag_close_title(DilloHt { if (html->InFlags & IN_HEAD) { /* title is only valid inside HEAD */ - a_Interface_set_page_title(html->linkblock->bw, html->Stash->str); - a_History_set_title(NAV_TOP(html->linkblock->bw), html->Stash->str); + a_Doc_title_set(html->linkblock->dd, html->Stash->str); + a_History_set_title(NAV_TOP(html->linkblock->dd), html->Stash->str); } else { - MSG_HTML("the TITLE element must be inside the HEAD section\n"); + MSG_HTML(_("the TITLE element must be inside the HEAD section\n")); } Html_pop_tag(html, TagIdx); } @@ -1725,17 +1969,26 @@ static void Html_tag_open_body(DilloHtml DwStyle style_attrs, *style; gint32 color; + /* if document contains frameset, ignore body */ + if (html->InFlags & IN_FRAMESET) return; + /* in body, so hide/remove frameset and show docwin */ + if (html->dd->frameset && GTK_IS_WIDGET(html->dd->frameset)) { + gtk_widget_destroy(html->dd->frameset); + html->dd->frameset = NULL; + gtk_widget_show(GTK_WIDGET(html->dd->docwin)); + } + if (!(html->InFlags & IN_BODY)) html->InFlags |= IN_BODY; ++html->Num_BODY; if (html->Num_BODY > 1) { - MSG_HTML("BODY element was already open\n"); + MSG_HTML(_("BODY element was already open\n")); return; } if (html->InFlags & IN_HEAD) { /* if we're here, it's bad XHTML, no need to recover */ - MSG_HTML("unclosed HEAD element\n"); + MSG_HTML(_("unclosed HEAD element\n")); } page = DW_PAGE (html->dw); @@ -1749,8 +2002,8 @@ static void Html_tag_open_body(DilloHtml style_attrs = *html->dw->style; style_attrs.background_color = - a_Dw_style_color_new (color, html->bw->main_window->window); - style = a_Dw_style_new (&style_attrs, html->bw->main_window->window); + a_Dw_style_color_new (color, html->dd->bw->main_window->window); + style = a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window); a_Dw_widget_set_style (html->dw, style); a_Dw_style_unref (style); html->stack[html->stack_top].current_bg_color = color; @@ -1760,7 +2013,7 @@ static void Html_tag_open_body(DilloHtml color = Html_color_parse(html, attrbuf, prefs.text_color); HTML_SET_TOP_ATTR (html, color, - a_Dw_style_color_new (color, html->bw->main_window->window)); + a_Dw_style_color_new (color, html->dd->bw->main_window->window)); } if ((attrbuf = Html_get_attr(html, tag, tagsize, "link"))) @@ -1845,7 +2098,7 @@ static void Html_tag_open_table(DilloHtm (&style_attrs, a_Dw_style_shaded_color_new ( html->stack[html->stack_top].current_bg_color, - html->bw->main_window->window)); + html->dd->bw->main_window->window)); a_Dw_style_box_set_border_style (&style_attrs, DW_STYLE_BORDER_OUTSET); style_attrs.border_spacing = cellspacing; @@ -1879,11 +2132,11 @@ static void Html_tag_open_table(DilloHtm bgcolor = prefs.bg_color; html->stack[html->stack_top].current_bg_color = bgcolor; style_attrs.background_color = - a_Dw_style_color_new (bgcolor, html->bw->main_window->window); + a_Dw_style_color_new (bgcolor, html->dd->bw->main_window->window); } } - tstyle = a_Dw_style_new (&style_attrs, html->bw->main_window->window); + tstyle = a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window); /* The style for the cells */ style_attrs = *html->stack[html->stack_top].style; @@ -1900,7 +2153,7 @@ static void Html_tag_open_table(DilloHtm old_style = html->stack[html->stack_top].table_cell_style; html->stack[html->stack_top].table_cell_style = - a_Dw_style_new (&style_attrs, html->bw->main_window->window); + a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window); if (old_style) a_Dw_style_unref (old_style); @@ -1931,11 +2184,11 @@ static void Html_tag_open_table_cell(Dil switch (html->stack[html->stack_top].table_mode) { case DILLO_HTML_TABLE_MODE_NONE: - MSG_HTML("<td> or <th> outside <table>\n"); + MSG_HTML(_("<td> or <th> outside <table>\n")); return; case DILLO_HTML_TABLE_MODE_TOP: - MSG_HTML("<td> or <th> outside <tr>\n"); + MSG_HTML(_("<td> or <th> outside <tr>\n")); /* a_Dw_table_add_cell takes care that dillo does not crash. */ /* continues */ case DILLO_HTML_TABLE_MODE_TR: @@ -1957,7 +2210,7 @@ static void Html_tag_open_table_cell(Dil style_attrs.white_space = DW_STYLE_WHITE_SPACE_NORMAL; html->stack[html->stack_top].style = - a_Dw_style_new (&style_attrs, html->bw->main_window->window); + a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window); a_Dw_style_unref (old_style); Html_tag_set_align_attr (html, tag, tagsize); @@ -1982,7 +2235,7 @@ static void Html_tag_open_table_cell(Dil new_style = TRUE; style_attrs.background_color = - a_Dw_style_color_new (bgcolor, html->bw->main_window->window); + a_Dw_style_color_new (bgcolor, html->dd->bw->main_window->window); html->stack[html->stack_top].current_bg_color = bgcolor; } } @@ -1996,7 +2249,7 @@ static void Html_tag_open_table_cell(Dil col_page = a_Dw_page_new (); if (new_style) { - style = a_Dw_style_new (&style_attrs, html->bw->main_window->window); + style = a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window); a_Dw_widget_set_style (col_page, style); a_Dw_style_unref (style); } else @@ -2026,6 +2279,7 @@ static void Html_tag_open_table_cell(Dil */ static void Html_tag_open_td(DilloHtml *html, char *tag, gint tagsize) { + Html_set_top_font(html, NULL, 0, 0, 0); Html_tag_open_table_cell (html, tag, tagsize, DW_STYLE_TEXT_ALIGN_LEFT); } @@ -2052,7 +2306,7 @@ static void Html_tag_open_tr(DilloHtml * #ifdef USE_TABLES switch (html->stack[html->stack_top].table_mode) { case DILLO_HTML_TABLE_MODE_NONE: - _MSG("Invalid HTML syntax: <tr> outside <table>\n"); + _MSG(_("Invalid HTML syntax: <tr> outside <table>\n")); return; case DILLO_HTML_TABLE_MODE_TOP: @@ -2069,9 +2323,9 @@ static void Html_tag_open_tr(DilloHtml * style_attrs = *html->stack[html->stack_top].style; style_attrs.background_color = - a_Dw_style_color_new (bgcolor, html->bw->main_window->window); + a_Dw_style_color_new (bgcolor, html->dd->bw->main_window->window); style = - a_Dw_style_new (&style_attrs, html->bw->main_window->window); + a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window); html->stack[html->stack_top].current_bg_color = bgcolor; } } @@ -2090,7 +2344,7 @@ static void Html_tag_open_tr(DilloHtml * if (Html_tag_set_valign_attr (html, tag, tagsize, &style_attrs)) { old_style = html->stack[html->stack_top].table_cell_style; html->stack[html->stack_top].table_cell_style = - a_Dw_style_new (&style_attrs, html->bw->main_window->window); + a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window); a_Dw_style_unref (old_style); } else @@ -2107,87 +2361,320 @@ static void Html_tag_open_tr(DilloHtml * #endif } -/* - * <FRAME>, <IFRAME> - * todo: This is just a temporary fix while real frame support - * isn't finished. Imitates lynx/w3m's frames. +static void Html_tag_open_noframes (DilloHtml *html, gchar *tag, gint tagsize) +{ + if (html->stack[html->stack_top].frame_mode == DILLO_HTML_FRAME_MODE_NONE) + MSG_HTML(_("<noframes> outside of <frameset>!!!\n")); + /* This code will allow the misuse of <noframes> which often exists. */ + html->stack[html->stack_top].frame_mode = DILLO_HTML_FRAME_MODE_NOFRAMES; +} + +/* Warning : this is illegal tag not existing! */ +static void Html_tag_open_noframe (DilloHtml *html, gchar *tag, gint tagsize) +{ + MSG_HTML(_("<noframe> is illegal tag !!! use <noframes>.\n")); + Html_tag_open_noframes (html, tag, tagsize); +} + +/* + * <IFRAME> */ -static void Html_tag_open_frame (DilloHtml *html, gchar *tag, gint tagsize) +static void Html_tag_open_iframe (DilloHtml *html, gchar *tag, gint tagsize) { const char *attrbuf; - gchar *src, *buf; DilloUrl *url; + GtkWidget *box; + DwWidget *embed; + DilloDoc *dd; DwPage *page; - DwStyle style_attrs, *link_style; - DwWidget *bullet; - gint buf_size; - - page = DW_PAGE(html->dw); + // DwStyle style_attrs, *estyle, *fstyle; /* estyle is for embedding widget, fstyle for iframe */ + DwStyle style_attrs, *estyle; + gchar *width_ptr, *height_ptr; + gboolean frameborder; + guint marginwidth, marginheight; + GtkPolicyType scrolling; + gchar *attrbuf_enc; + + Html_tag_set_align_attr(html, tag, tagsize); + /* ignore the rest of the text inside the tag + *(it is the equivalent of a <noframes> block) */ + html->stack[html->stack_top].parse_mode = DILLO_HTML_PARSE_MODE_VERBATIM; + html->stack[html->stack_top].frame_mode = DILLO_HTML_FRAME_MODE_IFRAME; - if ( !(attrbuf = Html_get_attr(html, tag, tagsize, "src")) ) + /* no link == return */ + if ( !(attrbuf = Html_get_attr(html, tag, tagsize, "src"))) + return; + if (strlen(attrbuf) == 0) + return; + attrbuf_enc = a_I18n_convert(DILLO_CHARSET, html->linkblock->charset, + attrbuf, -1); + if (!(url = Html_url_new(html, attrbuf_enc, NULL, 0, 0, 0, 0))) { + g_free(attrbuf_enc); return; + } + g_free(attrbuf_enc); - if (!(url = Html_url_new(html, attrbuf, NULL, 0, 0, 0, 0))) + /* block ads */ + if(a_Adblock_isblocked(url)) + { + a_Url_free(url); return; + } + + page = DW_PAGE (html->dw); + style_attrs = *html->stack[html->stack_top].style; - src = g_strdup(attrbuf); + /* use default for width (300) and height (150) if not specified */ + if ((attrbuf = Html_get_attr(html, tag, tagsize, "width"))) + width_ptr = g_strdup(attrbuf); + else + width_ptr = g_strdup("300"); - style_attrs = *(html->stack[html->stack_top].style); + if ((attrbuf = Html_get_attr(html, tag, tagsize, "height"))) + height_ptr = g_strdup(attrbuf); + else + height_ptr = g_strdup("150"); - if (a_Capi_get_buf(url, &buf, &buf_size)) /* visited frame */ - style_attrs.color = a_Dw_style_color_new - (html->linkblock->visited_color, html->bw->main_window->window); - else /* unvisited frame */ - style_attrs.color = a_Dw_style_color_new - (html->linkblock->link_color, html->bw->main_window->window); + if ((attrbuf = Html_get_attr(html, tag, tagsize, "frameborder"))) + frameborder = (strtol (attrbuf, NULL, 10) == 0 ? FALSE : TRUE); + else + frameborder = TRUE; - style_attrs.text_decoration |= DW_STYLE_TEXT_DECORATION_UNDERLINE; - style_attrs.x_link = Html_set_new_link(html, &url); - link_style = a_Dw_style_new (&style_attrs, - html->bw->main_window->window); - - a_Dw_page_add_parbreak(page, 5, html->stack[(html)->stack_top].style); - - /* The bullet will be assigned the current list style, which should - * be "disc" by default, but may in very weird pages be different. - * Anyway, there should be no harm. */ - bullet = a_Dw_bullet_new(); - a_Dw_page_add_widget(page, bullet, html->stack[html->stack_top].style); - a_Dw_page_add_space(page, html->stack[html->stack_top].style); - - if (tolower(tag[1]) == 'i') { - /* IFRAME usually comes with very long advertising/spying URLS, - * to not break rendering we will force name="IFRAME" */ - a_Dw_page_add_text(page, g_strdup("IFRAME"), link_style); + if ((attrbuf = Html_get_attr(html, tag, tagsize, "marginwidth"))) + marginwidth = strtol (attrbuf, NULL, 10); + else + marginwidth = 0; - } else { - /* FRAME: - * If 'name' tag is present use it, if not use 'src' value */ - if ( !(attrbuf = Html_get_attr(html, tag, tagsize, "name")) ) { - a_Dw_page_add_text(page, g_strdup(src), link_style); - } else { - a_Dw_page_add_text(page, g_strdup(attrbuf), link_style); - } + if ((attrbuf = Html_get_attr(html, tag, tagsize, "marginheight"))) + marginheight = strtol (attrbuf, NULL, 10); + else + marginheight = 0; + + if ((attrbuf = Html_get_attr(html, tag, tagsize, "scrolling"))) + scrolling = (!g_strcasecmp(attrbuf, "no") ? GTK_POLICY_NEVER : + (!g_strcasecmp(attrbuf, "yes") ? GTK_POLICY_ALWAYS : GTK_POLICY_AUTOMATIC)); + else + scrolling = GTK_POLICY_AUTOMATIC; + + dd = a_Doc_new(); + a_Doc_set_parent(dd, (html)->dd); + /* set margins */ + (dd->style)->margin.left = (dd->style)->margin.right = marginwidth; + (dd->style)->margin.top = (dd->style)->margin.bottom = marginheight; + /* set border */ + if(!frameborder) + a_Dw_style_box_set_val(&((dd->style)->border_width), frameborder); + + box = gtk_hbox_new(TRUE, 0); + gtk_container_set_border_width(GTK_CONTAINER(dd->docwin), 0); + gtk_container_set_border_width(GTK_CONTAINER(box), 0); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(dd->docwin), scrolling, scrolling); + gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(dd->docwin), TRUE, TRUE, 0); + gtk_widget_show(GTK_WIDGET(box)); + + /* style for the embedding widget */ + a_Dw_style_box_set_border_style(&style_attrs, DW_STYLE_BORDER_NONE); + a_Dw_style_box_set_val(&style_attrs.margin, 0); + a_Dw_style_box_set_val(&style_attrs.border_width, 0); + estyle = a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window); + + embed = a_Dw_embed_gtk_new(); + a_Dw_embed_gtk_add_gtk(DW_EMBED_GTK(embed), GTK_WIDGET(box)); + Html_add_widget(html, (DwWidget *) embed, width_ptr, height_ptr, estyle); + + a_Dw_style_unref(estyle); + g_free(width_ptr); + g_free(height_ptr); + + /* set iframe name if specified */ + if((attrbuf = Html_get_attr(html, tag, tagsize, "name"))) + a_Doc_set_name(dd, (gchar *) attrbuf); + + a_Url_set_referer(url, html->linkblock->base_url); + a_Nav_push(dd, url); +} + +/* + * <FRAME> + */ +static void Html_tag_open_frame (DilloHtml *html, gchar *tag, gint tagsize) +{ + const char *attrbuf; + DilloUrl *url; + GtkWidget *box; + DilloDoc *dd; + gboolean frameborder, noresize; + guint marginwidth, marginheight; + GtkPolicyType scrolling; + gchar *attrbuf_enc; + + + /* no link == return */ + if ( !(attrbuf = Html_get_attr(html, tag, tagsize, "src"))) + return; + if (strlen(attrbuf) == 0) + return; + attrbuf_enc = a_I18n_convert(DILLO_CHARSET, html->linkblock->charset, + attrbuf, -1); + _MSG(" URL %s\n", (attrbuf_enc) ? attrbuf_enc : "(null)"); + if (!(url = Html_url_new(html, attrbuf_enc, NULL, 0, 0, 0, 0))) { + g_free(attrbuf_enc); + return; + } + g_free(attrbuf_enc); + + /* block ads */ + if(a_Adblock_isblocked(url)) + { + a_Url_free(url); + url = Html_url_new(html, "about:blank", NULL, 0, 0, 0, 0); } - a_Dw_page_add_parbreak(page, 5, html->stack[(html)->stack_top].style); + if ((attrbuf = Html_get_attr(html, tag, tagsize, "frameborder"))) + frameborder = (strtol (attrbuf, NULL, 10) == 0 ? FALSE : TRUE); + else + frameborder = TRUE; + + if ((attrbuf = Html_get_attr(html, tag, tagsize, "noresize"))) + noresize = TRUE; + else + noresize = FALSE; + + /* if margins have not been set explicitly, use defaults */ + if ((attrbuf = Html_get_attr(html, tag, tagsize, "marginwidth"))) + marginwidth = strtol (attrbuf, NULL, 10); + else + marginwidth = DOC_DEFAULT_MARGIN; + + if ((attrbuf = Html_get_attr(html, tag, tagsize, "marginheight"))) + marginheight = strtol (attrbuf, NULL, 10); + else + marginheight = DOC_DEFAULT_MARGIN; - a_Dw_style_unref(link_style); - g_free(src); + if ((attrbuf = Html_get_attr(html, tag, tagsize, "scrolling"))) + scrolling = (!g_strcasecmp(attrbuf, "no") ? GTK_POLICY_NEVER : + (!g_strcasecmp(attrbuf, "yes") ? GTK_POLICY_ALWAYS : GTK_POLICY_AUTOMATIC)); + else + scrolling = GTK_POLICY_AUTOMATIC; + + switch(html->stack[html->stack_top].frame_mode) { + case DILLO_HTML_FRAME_MODE_NONE: + MSG_HTML(_("<frame> outside of <frameset>\n")); + return; + case DILLO_HTML_FRAME_MODE_NOFRAMES: + MSG_HTML(_("<frame> inside of <noframes>\n")); + return; + case DILLO_HTML_FRAME_MODE_IFRAME: + MSG_HTML(_("<frame> inside of <iframe>\n")); + return; + case DILLO_HTML_FRAME_MODE_FRAMESET: + dd = a_Doc_new(); + a_Doc_set_parent(dd, (html)->dd); + /* set marginwidth & height */ + (dd->style)->margin.left = (dd->style)->margin.right = marginwidth; + (dd->style)->margin.top = (dd->style)->margin.bottom = marginheight; + if(!frameborder) { + a_Dw_style_box_set_val(&((dd->style)->border_width), 0); + a_Dw_style_box_set_border_style(dd->style, DW_STYLE_BORDER_NONE); + } + box = gtk_hbox_new(TRUE, 0); + gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(dd->docwin), TRUE, TRUE, 0); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(dd->docwin), scrolling, scrolling); + gtk_container_set_border_width(GTK_CONTAINER(dd->docwin), 0); + gtk_container_set_border_width(GTK_CONTAINER(box), 0); + gtk_widget_show(GTK_WIDGET(box)); + gtk_container_add_with_args(GTK_CONTAINER(html->stack[html->stack_top].frameset), + GTK_WIDGET(box), + "GtkFrameset::x_padding", 0, + "GtkFrameset::y_padding", 0, + "GtkFrameset::noresize", noresize, + "GtkFrameset::border", frameborder, + NULL); + a_Url_set_referer(url, html->linkblock->base_url); + a_Nav_push(dd, url); + + /* set frame name if specified */ + if((attrbuf = Html_get_attr(html, tag, tagsize, "name"))) + a_Doc_set_name(dd, (gchar *) attrbuf); + break; + + default: + return; + } } /* * <FRAMESET> - * todo: This is just a temporary fix while real frame support - * isn't finished. Imitates lynx/w3m's frames. */ static void Html_tag_open_frameset (DilloHtml *html, gchar *tag, gint tagsize) { - a_Dw_page_add_parbreak(DW_PAGE (html->dw), 9, - html->stack[(html)->stack_top].style); - a_Dw_page_add_text(DW_PAGE(html->dw), g_strdup("--FRAME--"), - html->stack[html->stack_top].style); - Html_add_indented(html, 40, 0, 5); + const char *attrbuf; + GtkWidget *frameset; + gchar *rows, *cols; + + /* (older versions of) compiler happiness */ + frameset = NULL; + + /* first, see if this frameset tag is in the right place... */ + if(html->stack[html->stack_top].parse_mode != DILLO_HTML_PARSE_MODE_INIT) { + MSG_HTML(_("incorrectly placed <frameset>\n")); + return; + } + + /* get frameset attributes */ + if ((attrbuf = Html_get_attr(html, tag, tagsize, "rows"))) + rows = g_strdup(attrbuf); + else + rows = NULL; + if ((attrbuf = Html_get_attr(html, tag, tagsize, "cols"))) + cols = g_strdup(attrbuf); + else + cols = NULL; + + switch(html->stack[html->stack_top].frame_mode) { + case DILLO_HTML_FRAME_MODE_NOFRAMES: + MSG_HTML(_("<frameset> inside of <noframes>\n")); + g_free(rows); + g_free(cols); + return; + case DILLO_HTML_FRAME_MODE_IFRAME: + MSG_HTML(_("<frameset> inside of <iframe>\n")); + g_free(rows); + g_free(cols); + return; + case DILLO_HTML_FRAME_MODE_NONE: + /* 'root' frameset, so add the frameset to the dd */ + if(html->dd->frameset) + gtk_widget_destroy(html->dd->frameset); + frameset = gtk_frameset_new(rows, cols); + html->dd->frameset = frameset; + gtk_container_add(GTK_CONTAINER(GTK_WIDGET(html->dd->docwin)->parent), + GTK_WIDGET(frameset)); + /* hide the docwin, show the frameset */ + gtk_widget_hide(GTK_WIDGET(html->dd->docwin)); + gtk_widget_show(GTK_WIDGET(html->dd->frameset)); + break; + case DILLO_HTML_FRAME_MODE_FRAMESET: + /* nested frameset */ + frameset = gtk_frameset_new(rows, cols); + gtk_container_add(GTK_CONTAINER(html->stack[html->stack_top].frameset), GTK_WIDGET(frameset)); + gtk_widget_show(GTK_WIDGET(frameset)); + break; + default: + break; + } + + g_free(rows); + g_free(cols); + + + /* once set, this flag does not get reset, even when the frameset tag + * is closed. This is intentional. */ + html->InFlags |= IN_FRAMESET; + + /* put the current frameset state on the stack */ + html->stack[html->stack_top].frame_mode = DILLO_HTML_FRAME_MODE_FRAMESET; + html->stack[html->stack_top].frameset = frameset; } /* @@ -2200,13 +2687,13 @@ static void Html_tag_open_h(DilloHtml *h /* todo: combining these two would be slightly faster */ Html_set_top_font(html, prefs.vw_fontname, - Html_level_to_fontsize(FontSizesNum - (tag[2] - '0')), + Html_level_to_fontsize(D_FONT_SIZE_NUM - (tag[2] - '0')), 1, 3); Html_tag_set_align_attr (html, tag, tagsize); /* First finalize unclosed H tags (we test if already named anyway) */ - a_Menu_pagemarks_set_text(html->bw, html->Stash->str); - a_Menu_pagemarks_add(html->bw, DW_PAGE (html->dw), + a_Menu_pagemarks_set_text(html->dd, html->Stash->str); + a_Menu_pagemarks_add(html->dd, DW_PAGE (html->dw), html->stack[html->stack_top].style, (tag[2] - '0')); Html_stash_init(html); html->stack[html->stack_top].parse_mode = @@ -2218,10 +2705,10 @@ static void Html_tag_open_h(DilloHtml *h */ static void Html_tag_close_h(DilloHtml *html, gint TagIdx) { - a_Menu_pagemarks_set_text(html->bw, html->Stash->str); + a_Menu_pagemarks_set_text(html->dd, html->Stash->str); + Html_pop_tag(html, TagIdx); a_Dw_page_add_parbreak(DW_PAGE (html->dw), 9, html->stack[(html)->stack_top].style); - Html_pop_tag(html, TagIdx); } /* @@ -2268,7 +2755,7 @@ static void Html_tag_open_button(DilloHt a_Dw_style_box_set_val(&style_attrs.margin, 0); a_Dw_style_box_set_val(&style_attrs.border_width, 0); a_Dw_style_box_set_val(&style_attrs.padding, 0); - style = a_Dw_style_new (&style_attrs, html->bw->main_window->window); + style = a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window); button = a_Dw_button_new (DW_USES_HINTS, TRUE); /* The new button is not set button-insensitive, since nested buttons @@ -2282,7 +2769,7 @@ static void Html_tag_open_button(DilloHt a_Dw_style_unref (style); a_Dw_style_box_set_val(&style_attrs.margin, 5); - style = a_Dw_style_new (&style_attrs, html->bw->main_window->window); + style = a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window); page = a_Dw_page_new (); a_Dw_widget_set_style (page, style); a_Dw_style_unref (style); @@ -2344,12 +2831,12 @@ static void Html_tag_open_font(DilloHtml if ((attrbuf = Html_get_attr(html, tag, tagsize, "color"))) { if (prefs.contrast_visited_color && html->InVisitedLink) { color = html->linkblock->visited_color; - } else { + } else { /* use the tag-specified color */ color = Html_color_parse( html, attrbuf, style_attrs.color->color_val); style_attrs.color = a_Dw_style_color_new - (color, html->bw->main_window->window); + (color, html->dd->bw->main_window->window); } } @@ -2362,7 +2849,7 @@ static void Html_tag_open_font(DilloHtml #endif html->stack[html->stack_top].style = - a_Dw_style_new (&style_attrs, html->bw->main_window->window); + a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window); a_Dw_style_unref (old_style); } @@ -2534,15 +3021,19 @@ static void Html_load_image(DilloHtml *h { DilloWeb *Web; gint ClientKey; + a_Url_set_referer(url, html->linkblock->base_url); /* Fill a Web structure for the cache query */ + if (URL_FLAGS(html->linkblock->base_url) && URL_MustCache) + URL_FLAGS(url) |= URL_MustCache; /* cache page, cache images */ + URL_FLAGS(url) |= URL_IsImage; Web = a_Web_new(url); - Web->bw = html->bw; + Web->dd = html->dd; Web->Image = Image; Web->flags |= WEB_Image; /* Request image data from the cache */ if ((ClientKey = a_Capi_open_url(Web, NULL, NULL)) != 0) { - a_Interface_add_client(html->bw, ClientKey, 0); - a_Interface_add_url(html->bw, url, WEB_Image); + a_Doc_add_client(html->dd, ClientKey, 0); + a_Doc_add_url(html->dd, url, WEB_Image); } } @@ -2558,23 +3049,38 @@ static void Html_tag_open_img(DilloHtml DwPage *page; DwStyle style_attrs; const char *attrbuf; + gchar *attrbuf_enc; gint border; /* This avoids loading images. Useful for viewing suspicious HTML email. */ if (URL_FLAGS(html->linkblock->base_url) & URL_SpamSafe) return; - if (!(attrbuf = Html_get_attr(html, tag, tagsize, "src")) || - !(url = Html_url_new(html, attrbuf, NULL, 0, 0, 0, 0))) + if (!(attrbuf = Html_get_attr(html, tag, tagsize, "src"))) + return; + attrbuf_enc = a_I18n_convert(DILLO_CHARSET, html->linkblock->charset, + attrbuf, -1); + url = Html_url_new(html, attrbuf_enc, NULL, 0, 0, 0, 0); + g_free(attrbuf_enc); + if(!url) return; + + /* block ads */ + if(a_Adblock_isblocked(url)) + { + a_Url_free(url); return; + } page = DW_PAGE (html->dw); - usemap_url = NULL; - if ((attrbuf = Html_get_attr(html, tag, tagsize, "usemap"))) + if ((attrbuf = Html_get_attr(html, tag, tagsize, "usemap"))) { + attrbuf_enc = a_I18n_convert(DILLO_CHARSET, html->linkblock->charset, + attrbuf, -1); /* todo: usemap URLs outside of the document are not used. */ - usemap_url = Html_url_new(html, attrbuf, NULL, 0, 0, 0, 0); + usemap_url = Html_url_new(html, attrbuf_enc, NULL, 0, 0, 0, 0); + g_free(attrbuf_enc); + } style_attrs = *html->stack[html->stack_top].style; @@ -2590,21 +3096,23 @@ static void Html_tag_open_img(DilloHtml a_Dw_style_box_set_border_color (&style_attrs, a_Dw_style_shaded_color_new (style_attrs.color->color_val, - html->bw->main_window->window)); + html->dd->bw->main_window->window)); else a_Dw_style_box_set_border_color (&style_attrs, a_Dw_style_shaded_color_new (html->linkblock->link_color, - html->bw->main_window->window)); + html->dd->bw->main_window->window)); a_Dw_style_box_set_border_style (&style_attrs, DW_STYLE_BORDER_SOLID); a_Dw_style_box_set_val (&style_attrs.border_width, border); } Image = Html_add_new_image(html, tag, tagsize, &style_attrs, TRUE); + if (html->stack[html->stack_top].style->x_link != -1) + a_Dw_widget_set_button_sensitive(DW_WIDGET(Image->dw), FALSE); Html_connect_signals(html, GTK_OBJECT(Image->dw)); gtk_signal_connect_after(GTK_OBJECT(Image->dw), "button_press_event", - GTK_SIGNAL_FUNC(Html_image_menu), html->bw); + GTK_SIGNAL_FUNC(Html_image_menu), html->dd); /* Image maps */ if (Html_get_attr(html, tag, tagsize, "ismap")) { @@ -2612,7 +3120,7 @@ static void Html_tag_open_img(DilloHtml * being separated with a word, only the first one is ISMAPed */ a_Dw_image_set_ismap (Image->dw); - _MSG(" Html_tag_open_img: server-side map (ISMAP)\n"); + _MSG(_(" Html_tag_open_img: server-side map (ISMAP)\n")); } else if (html->stack[html->stack_top].style->x_link != -1 && usemap_url == NULL) /* For simple links, we have to suppress the "image_pressed" signal. @@ -2634,14 +3142,17 @@ static void Html_tag_open_img(DilloHtml static void Html_tag_open_map(DilloHtml *html, char *tag, gint tagsize) { char *hash_name; - const char *attrbuf; + char *attrbuf_enc; DilloUrl *url; if (html->InFlags & IN_MAP) { - MSG_HTML("nested <map>\n"); + MSG_HTML(_("nested <map>\n")); } else { - if ((attrbuf = Html_get_attr(html, tag, tagsize, "name"))) { - hash_name = g_strdup_printf("#%s", attrbuf); + if ((attrbuf_enc = a_I18n_convert(DILLO_CHARSET, + html->linkblock->charset, + Html_get_attr(html, tag, tagsize, "name"), -1))) { + hash_name = g_strdup_printf("#%s", attrbuf_enc); + g_free(attrbuf_enc); url = Html_url_new(html, hash_name, NULL, 0, 0, 0, 0); a_Dw_image_map_list_add_map (&html->linkblock->maps, url); a_Url_free (url); @@ -2687,7 +3198,7 @@ static int Html_read_coords(DilloHtml *h pending = 0; } else { if (*newtail != ',') { - MSG_HTML("usemap coords MUST be separated with ','\n"); + MSG_HTML(_("usemap coords MUST be separated with ','\n")); } tail = newtail + 1; } @@ -2705,6 +3216,7 @@ static void Html_tag_open_area(DilloHtml GdkPoint point[1024]; DilloUrl* url; const char *attrbuf; + gchar *attrbuf_enc; gint type = DW_IMAGE_MAP_SHAPE_RECT; gint nbpoints, link = -1; @@ -2730,14 +3242,21 @@ static void Html_tag_open_area(DilloHtml if ( Html_get_attr(html, tag, tagsize, "nohref") ) { link = -1; - _MSG("nohref"); + _MSG(_("nohref")); } if ((attrbuf = Html_get_attr(html, tag, tagsize, "href"))) { - url = Html_url_new(html, attrbuf, NULL, 0, 0, 0, 0); + attrbuf_enc = a_I18n_convert(DILLO_CHARSET, html->linkblock->charset, + attrbuf, -1); + url = Html_url_new(html, attrbuf_enc, NULL, 0, 0, 0, 0); + g_free(attrbuf_enc); g_return_if_fail ( url != NULL ); if ((attrbuf = Html_get_attr(html, tag, tagsize, "alt"))) a_Url_set_alt(url, attrbuf); + if ((attrbuf = Html_get_attr(html, tag, tagsize, "target"))) + a_Url_set_target(url, attrbuf); + else if (URL_TARGET_(html->linkblock->base_url)) + a_Url_set_target(url, URL_TARGET_(html->linkblock->base_url)); link = Html_set_new_link(html, &url); } @@ -2762,7 +3281,7 @@ static const char* Html_get_javascript_l if ((ch == '"' || ch == '\'') && (p2 = strchr(Buf->str + i + 1 , ch))) { p1 = Buf->str + i; - MSG_HTML("link depends on javascript()\n"); + MSG_HTML(_("link depends on javascript()\n")); g_string_truncate(Buf, p2 - Buf->str); g_string_erase(Buf, 0, p1 - Buf->str + 1); } @@ -2775,10 +3294,15 @@ static const char* Html_get_javascript_l */ static void Html_add_anchor(DilloHtml *html, const char *name) { - _MSG("Registering ANCHOR: %s\n", name); + gchar *name_enc; + + name_enc = a_I18n_DW_CHARSET_from_DILLO_CHARSET(name, -1); + _MSG(_("Registering ANCHOR: %s\n"), + a_I18n_DW_CHARSET_from_DILLO_CHARSET(name_enc, -1)); + g_free(name_enc); if (!a_Dw_page_add_anchor(DW_PAGE(html->dw), name, html->stack[html->stack_top].style)) - MSG_HTML("Anchor names must be unique within the document\n"); + MSG_HTML(_("Anchor names must be unique within the document\n")); /* According to Sec. 12.2.1 of the HTML 4.01 spec, "anchor names that * differ only in case may not appear in the same document", but * "comparisons between fragment identifiers and anchor names must be @@ -2795,7 +3319,7 @@ static void Html_tag_open_a(DilloHtml *h DwStyle style_attrs, *old_style; DilloUrl *url; const char *attrbuf; - gchar *buf; + gchar *buf, *attrbuf_enc; gint buf_size; /* todo: add support for MAP with A HREF */ @@ -2806,9 +3330,20 @@ static void Html_tag_open_a(DilloHtml *h if (tolower(attrbuf[0]) == 'j') attrbuf = Html_get_javascript_link(html); - url = Html_url_new(html, attrbuf, NULL, 0, 0, 0, 0); + attrbuf_enc = a_I18n_convert(DILLO_CHARSET, html->linkblock->charset, + attrbuf, -1); + url = Html_url_new(html, attrbuf_enc, NULL, 0, 0, 0, 0); + g_free(attrbuf_enc); g_return_if_fail ( url != NULL ); + if ((attrbuf = Html_get_attr(html, tag, tagsize, "target"))) { + attrbuf_enc = a_I18n_convert(DILLO_CHARSET, html->linkblock->charset, + attrbuf, -1); + a_Url_set_target(url, attrbuf_enc); + g_free(attrbuf_enc); + } else if (URL_TARGET_(html->linkblock->base_url)) + a_Url_set_target(url, URL_TARGET_(html->linkblock->base_url)); + old_style = html->stack[html->stack_top].style; style_attrs = *old_style; @@ -2822,20 +3357,21 @@ static void Html_tag_open_a(DilloHtml *h html->linkblock->link_color, html->stack[html->stack_top].current_bg_color), */ - html->bw->main_window->window); + html->dd->bw->main_window->window); } else { style_attrs.color = a_Dw_style_color_new - (html->linkblock->link_color, html->bw->main_window->window); + (html->linkblock->link_color, html->dd->bw->main_window->window); } - if ((attrbuf = Html_get_attr(html, tag, tagsize, "title"))) + if ((attrbuf = Html_get_attr(html, tag, tagsize, "title"))) { style_attrs.x_tooltip = a_Dw_tooltip_new_no_ref(attrbuf); + } style_attrs.text_decoration |= DW_STYLE_TEXT_DECORATION_UNDERLINE; style_attrs.x_link = Html_set_new_link(html, &url); html->stack[html->stack_top].style = - a_Dw_style_new (&style_attrs, html->bw->main_window->window); + a_Dw_style_new (&style_attrs, html->dd->bw->main_window->window); a_Dw_style_unref (old_style); } @@ -2843,7 +3379,10 @@ static void Html_tag_open_a(DilloHtml *h if (prefs.show_extra_warnings) Html_check_name_val(html, attrbuf, "name"); /* html->NameVal is freed in Html_process_tag */ - html->NameVal = a_Url_decode_hex_str(attrbuf); + attrbuf_enc = a_Url_decode_hex_str(attrbuf); + html->NameVal = a_I18n_convert(DILLO_CHARSET, html->linkblock->charset, + attrbuf_enc, -1); + g_free(attrbuf_enc); Html_add_anchor(html, html->NameVal); } } @@ -2869,7 +3408,7 @@ static void Html_tag_open_u(DilloHtml *h style_attrs = *style; style_attrs.text_decoration |= DW_STYLE_TEXT_DECORATION_UNDERLINE; html->stack[html->stack_top].style = - a_Dw_style_new(&style_attrs, html->bw->main_window->window); + a_Dw_style_new(&style_attrs, html->dd->bw->main_window->window); a_Dw_style_unref(style); } @@ -2885,7 +3424,7 @@ static void Html_tag_open_strike(DilloHt style_attrs = *style; style_attrs.text_decoration |= DW_STYLE_TEXT_DECORATION_LINE_THROUGH; html->stack[html->stack_top].style = - a_Dw_style_new(&style_attrs, html->bw->main_window->window); + a_Dw_style_new(&style_attrs, html->dd->bw->main_window->window); a_Dw_style_unref(style); } @@ -2970,7 +3509,7 @@ static void Html_tag_open_menu(DilloHtml html->stack[html->stack_top].ref_list_item = NULL; if (prefs.show_extra_warnings) - MSG_HTML("it is strongly recommended using <UL> instead of <MENU>\n"); + MSG_HTML(_("it is strongly recommended using <UL> instead of <MENU>\n")); } /* @@ -3032,7 +3571,7 @@ static void Html_tag_open_li(DilloHtml * switch (html->stack[html->stack_top].list_type) { case HTML_LIST_NONE: - MSG_HTML("<li> outside <ul> or <ol>\n"); + MSG_HTML(_("<li> outside <ul> or <ol>\n")); list_item = a_Dw_list_item_new(NULL); Html_add_indented_widget(html, list_item, 0, 0, 0 /* or 1 */); bullet = a_Dw_bullet_new(); @@ -3107,7 +3646,7 @@ static void Html_tag_open_hr(DilloHtml * a_Dw_style_box_set_border_color (&style_attrs, a_Dw_style_shaded_color_new (style_attrs.color->color_val, - html->bw->main_window->window)); + html->dd->bw->main_window->window)); if (size < 1) size = 1; } else { @@ -3116,7 +3655,7 @@ static void Html_tag_open_hr(DilloHtml * (&style_attrs, a_Dw_style_shaded_color_new (html->stack[html->stack_top].current_bg_color, - html->bw->main_window->window)); + html->dd->bw->main_window->window)); if (size < 2) size = 2; } @@ -3221,14 +3760,14 @@ static void Html_tag_open_form(DilloHtml { DilloUrl *action; DilloHtmlMethod method; - DilloHtmlEnc enc; + gchar *accept_charset = NULL, *attrbuf_enc; const char *attrbuf; a_Dw_page_add_parbreak(DW_PAGE (html->dw), 9, html->stack[(html)->stack_top].style); if (html->InFlags & IN_FORM) { - MSG_HTML("nested forms\n"); + MSG_HTML(_("nested forms\n")); return; } html->InFlags |= IN_FORM; @@ -3239,15 +3778,25 @@ static void Html_tag_open_form(DilloHtml method = DILLO_HTML_METHOD_POST; /* todo: maybe deal with unknown methods? */ } - if ((attrbuf = Html_get_attr(html, tag, tagsize, "action"))) - action = Html_url_new(html, attrbuf, NULL, 0, 0, 0, 0); - else + if ((attrbuf = Html_get_attr(html, tag, tagsize, "action"))) { + attrbuf_enc = a_I18n_convert(DILLO_CHARSET, html->linkblock->charset, + attrbuf, -1); + action = Html_url_new(html, attrbuf_enc, NULL, 0, 0, 0, 0); + g_free(attrbuf_enc); + } else action = a_Url_dup(html->linkblock->base_url); - enc = DILLO_HTML_ENC_URLENCODING; - if ( (attrbuf = Html_get_attr(html, tag, tagsize, "encoding")) ) { - /* todo: maybe deal with unknown encodings? */ + + if ((attrbuf = Html_get_attr(html, tag, tagsize, "target"))) + a_Url_set_target(action, attrbuf); + else if (URL_TARGET_(html->linkblock->base_url)) + a_Url_set_target(action, URL_TARGET_(html->linkblock->base_url)); + + if(Html_get_attr(html, tag, tagsize, "accept-charset")) { + accept_charset = a_I18n_fix_charset(g_strdup( + Html_get_attr(html, tag, tagsize, "accept-charset"))); } - Html_form_new(html->linkblock, method, action, enc); + Html_form_new(html->linkblock, method, action, accept_charset); + g_free(accept_charset); a_Url_free(action); } @@ -3265,9 +3814,9 @@ static void Html_tag_close_form(DilloHtm let's add a custom one */ if (form->num_submit_buttons == 0) { if (prefs.show_extra_warnings || form->num_entry_fields != 1) - MSG_HTML("FORM lacks a Submit button\n"); + MSG_HTML(_("FORM lacks a Submit button\n")); if (prefs.generate_submit) { - MSG_HTML(" (added a submit button internally)\n"); + MSG_HTML(_(" (added a submit button internally)\n")); Html_tag_open_input(html, SubmitTag, strlen(SubmitTag)); form->num_submit_buttons = 0; } @@ -3294,6 +3843,27 @@ static void Html_tag_close_form(DilloHtm Html_pop_tag(html, TagIdx); } +#ifdef ENABLE_META_REFRESH +/* + * Helper function for meta refresh tag. + */ +static gboolean Html_tag_meta_refresh(gpointer data) +{ + DilloHtmlMetaRefreshData *rdata = (DilloHtmlMetaRefreshData *)data; + + if (!rdata->html_dead) { + rdata->lb->meta_refresh = NULL; + if ( rdata->url ) { + a_Nav_remove_top_url(rdata->lb->dd); + a_Nav_push(rdata->lb->dd, rdata->url); + } + } + a_Url_free(rdata->url); + g_free(rdata); + return FALSE; +} +#endif + /* * Handle <META> * We do not support http-equiv=refresh because it's non standard, @@ -3309,6 +3879,32 @@ static void Html_tag_close_form(DilloHtm */ static void Html_tag_open_meta(DilloHtml *html, char *tag, gint tagsize) { +#ifdef ENABLE_META_REFRESH + const gchar *attrbuf; + + if (!(html->InFlags & IN_HEAD) && html->linkblock->meta_refresh) { + return; + } + attrbuf = Html_get_attr(html, tag, tagsize, "http-equiv"); + + /* Is this a refresh? */ + if (attrbuf && !g_strcasecmp(attrbuf, "refresh")) { + DilloHtmlMetaRefreshData *data; + gint delay; + gchar *content; + #ifdef SEND_HTML_MSG + gchar *html_msg, *url; + #endif + + /* check for content */ + if (!(attrbuf = Html_get_attr(html, tag, tagsize, "content"))) + return; + + /* check for delay */ + delay = strtol(attrbuf, &content, 0); +#else + const gchar *equiv, *content; + #ifdef SEND_HTML_MSG const gchar *meta_template = "<table width='100%%'><tr><td bgcolor='#ee0000'>Warning:</td>\n" " <td bgcolor='#8899aa' width='100%%'>\n" @@ -3317,13 +3913,14 @@ static void Html_tag_open_meta(DilloHtml " <tr><td bgcolor='#a0a0a0' colspan='2'>The author wanted you to go\n" " <a href='%s'>here</a>%s</td></tr></table><br>\n"; - const gchar *equiv, *content; - gchar *html_msg, delay_str[64]; + gchar *html_msg; + #endif + gchar delay_str[64]; gint delay; /* only valid inside HEAD */ if (!(html->InFlags & IN_HEAD)) { - MSG_HTML("META elements must be inside the HEAD section\n"); + MSG_HTML(_("META elements must be inside the HEAD section\n")); return; } @@ -3337,13 +3934,49 @@ static void Html_tag_open_meta(DilloHtml delay, (delay > 1) ? "s" : ""); else sprintf(delay_str, "."); - +#endif /* Skip to anything after "URL=" */ while (*content && *(content++) != '='); - +#ifdef ENABLE_META_REFRESH + data = g_new(DilloHtmlMetaRefreshData, 1); + data->lb = html->linkblock; + data->html_dead = 0; + + if (data->lb->meta_refresh) { + *data->lb->meta_refresh = 1; + } + + data->lb->meta_refresh = &data->html_dead; + data->url = Html_url_new(html, *content ? content : + URL_STR(a_History_get_url(NAV_TOP(data->lb->dd))), + NULL, 0, 0, 0, 0); + a_Url_set_flags(data->url, URL_FLAGS(data->url) | URL_E2EReload); + + if (!*content && delay < 7) /* don't refresh itself to often... */ + delay = 7; + + /* Add a timeout which will load the new location */ + g_timeout_add(delay ? delay * 1000 : 300, Html_tag_meta_refresh, + (gpointer)data); + #ifdef SEND_HTML_MSG + url = URL_STR( data->url ); + html_msg = g_strdup_printf( + "<p><font color=\"red\">META REFRESH (%d sec): " + "<a href=\"%s\">%s</a></p>", + delay, url, url); + #endif +#else + #ifdef SEND_HTML_MSG /* Send a custom HTML message * todo: this is a hairy hack, It'd be much better to build a widget. */ html_msg = g_strdup_printf(meta_template, content, delay_str); + #endif +#endif + MSG_HTML(_("The NON-STANDARD meta refresh tag." + " The HTML 4.01 SPEC (sec 7.4.4) recommends explicitly to avoid it." + " The author wanted you to go <%s>\n"), content); + + #ifdef SEND_HTML_MSG { DilloHtmlProcessingState SaveFlags = html->InFlags; html->InFlags = IN_BODY; @@ -3353,6 +3986,7 @@ static void Html_tag_open_meta(DilloHtml html->InFlags = SaveFlags; } g_free(html_msg); + #endif } } @@ -3381,7 +4015,7 @@ static void Html_reset_input(DilloHtmlIn switch (input->type) { case DILLO_HTML_INPUT_TEXT: case DILLO_HTML_INPUT_PASSWORD: - gtk_entry_set_text(GTK_ENTRY(input->widget), input->init_str); + a_I18n_gtk_entry_set_text(GTK_ENTRY(input->widget), input->init_str); break; case DILLO_HTML_INPUT_CHECKBOX: gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(input->widget), @@ -3425,8 +4059,10 @@ static void Html_reset_input(DilloHtmlIn if (input->init_str != NULL) { int pos = 0; gtk_editable_delete_text(GTK_EDITABLE(input->widget), 0, -1); - gtk_editable_insert_text(GTK_EDITABLE(input->widget), input->init_str, - strlen(input->init_str), &pos); + a_I18n_gtk_editable_insert_text(GTK_EDITABLE(input->widget), + input->init_str, + strlen(input->init_str), + &pos); } break; default: @@ -3522,17 +4158,34 @@ static void Html_urlencode_append(GStrin g_free(enc_val); } -/* +/* * Append a name-value pair to an existing url. * (name and value are urlencoded before appending them) + * This also translates the value to the server character encoding or + * Accept_charset, if necessary. */ -static void - Html_append_input(GString *url, const char *name, const char *value) +static void Html_append_input(DilloHtmlLB *lb, GString *url, + const char *name, char *value, GtkWidget *submit) { - if (name != NULL) { + if(name != NULL) { Html_urlencode_append(url, name); g_string_append_c(url, '='); - Html_urlencode_append(url, value); + if (value != NULL) { + int form_index; + char *charset, *convValue; + /* Search the form that generated the submit event */ + if ((form_index = Html_find_form(submit, lb)) == -1 ) { + charset = lb->charset; + } else { + DilloHtmlForm *form = &lb->forms[form_index]; + charset = (form->charset)? form->charset : lb->charset; + } + convValue = a_I18n_convert(DILLO_CHARSET, + charset, value, -1); + _MSG("append charset%s\n", charset); + Html_urlencode_append(url, convValue); + g_free(convValue); + } g_string_append_c(url, '&'); } } @@ -3566,6 +4219,9 @@ static void Html_submit_form(GtkWidget * DilloHtmlInput *input; DilloUrl *new_url; gchar *url_str, *action_str, *p, *text; + DilloDoc *name_dd; + + name_dd = NULL; /* Search the form that generated the submit event */ if ( (i = Html_find_form(submit, html_lb)) == -1 ) @@ -3579,29 +4235,33 @@ static void Html_submit_form(GtkWidget * DEBUG_MSG(3,"Html_submit_form form->action=%s\n",URL_STR_(form->action)); for (input_index = 0; input_index < form->num_inputs; input_index++) { + gchar *enc_buf; input = &(form->inputs[input_index]); switch (input->type) { case DILLO_HTML_INPUT_TEXT: case DILLO_HTML_INPUT_PASSWORD: - Html_append_input(DataStr, input->name, - gtk_entry_get_text(GTK_ENTRY(input->widget))); + enc_buf = a_I18n_gtk_entry_get_text(GTK_ENTRY(input->widget)); + Html_append_input(html_lb, DataStr, input->name, enc_buf, submit); + g_free(enc_buf); break; case DILLO_HTML_INPUT_CHECKBOX: case DILLO_HTML_INPUT_RADIO: if (GTK_TOGGLE_BUTTON(input->widget)->active && input->name != NULL && input->init_str != NULL) { - Html_append_input(DataStr, input->name, input->init_str); + Html_append_input(html_lb, DataStr, input->name, + input->init_str, submit); } break; case DILLO_HTML_INPUT_HIDDEN: - Html_append_input(DataStr, input->name, input->init_str); + Html_append_input(html_lb, DataStr, input->name, + input->init_str, submit); break; case DILLO_HTML_INPUT_SELECT: for (i = 0; i < input->select->num_options; i++) { if (GTK_CHECK_MENU_ITEM(input->select->options[i].menuitem)-> active) { - Html_append_input(DataStr, input->name, - input->select->options[i].value); + Html_append_input(html_lb, DataStr, input->name, + input->select->options[i].value, submit); break; } } @@ -3610,23 +4270,26 @@ static void Html_submit_form(GtkWidget * for (i = 0; i < input->select->num_options; i++) { if (input->select->options[i].menuitem->state == GTK_STATE_SELECTED) { - Html_append_input(DataStr, input->name, - input->select->options[i].value); + Html_append_input(html_lb, DataStr, input->name, + input->select->options[i].value, submit); } } break; case DILLO_HTML_INPUT_TEXTAREA: - text = gtk_editable_get_chars(GTK_EDITABLE (input->widget),0,-1); - Html_append_input(DataStr, input->name, text); + text = a_I18n_gtk_editable_get_chars(GTK_EDITABLE (input->widget), + 0,-1); + Html_append_input(html_lb, DataStr, input->name, text, submit); g_free(text); break; case DILLO_HTML_INPUT_INDEX: - Html_urlencode_append(DataStr, - gtk_entry_get_text(GTK_ENTRY(input->widget))); + enc_buf = a_I18n_gtk_entry_get_text(GTK_ENTRY(input->widget)); + Html_urlencode_append(DataStr, enc_buf); + g_free(enc_buf); break; case DILLO_HTML_INPUT_IMAGE: if (input->widget == submit) { - Html_append_input(DataStr, input->name, input->init_str); + Html_append_input(html_lb, DataStr, input->name, + input->init_str, submit); Html_append_clickpos(DataStr, input->name, click_x, click_y); } break; @@ -3634,7 +4297,8 @@ static void Html_submit_form(GtkWidget * case DILLO_HTML_INPUT_BUTTON_SUBMIT: /* Only the button that triggered the submit. */ if (input->widget == submit && form->num_submit_buttons > 0) - Html_append_input(DataStr, input->name, input->init_str); + Html_append_input(html_lb, DataStr, input->name, + input->init_str, submit); break; default: break; @@ -3664,16 +4328,25 @@ static void Html_submit_form(GtkWidget * g_free(url_str); } - a_Nav_push(html_lb->bw, new_url); + a_Url_set_referer(new_url, html_lb->base_url); + if (URL_TARGET_(form->action)) { + a_Url_set_target(new_url, (gchar *) URL_TARGET_(form->action)); + name_dd = a_Doc_get_by_name(html_lb->dd, (gchar *) URL_TARGET_(new_url)); + } + + if (name_dd) + a_Nav_push(name_dd, new_url); + else + a_Nav_push(html_lb->dd, new_url); g_free(action_str); g_string_free(DataStr, TRUE); a_Url_free(new_url); } else { - MSG("Html_submit_form: Method unknown\n"); + MSG(_("Html_submit_form: Method unknown\n")); } /* now, make the rendered area have its focus back */ - gtk_widget_grab_focus(GTK_BIN(html_lb->bw->docwin)->child); + gtk_widget_grab_focus(GTK_BIN(html_lb->dd->docwin)->child); } @@ -3719,7 +4392,15 @@ static DwWidget *Html_input_image(DilloH const char *attrbuf; if ((attrbuf = Html_get_attr(html, tag, tagsize, "src")) && - (url = Html_url_new(html, attrbuf, NULL, 0, 0, 0, 0))) { + (url = Html_url_new(html, attrbuf, NULL, 0, 0, 0, 0))) { + + /* block ads */ + if(a_Adblock_isblocked(url)) + { + a_Url_free(url); + return NULL; + } + button = a_Dw_button_new (0, FALSE); a_Dw_page_add_widget (DW_PAGE (html->dw), button, html->stack[html->stack_top].style); @@ -3743,7 +4424,7 @@ static DwWidget *Html_input_image(DilloH } } - DEBUG_MSG(10, "Html_input_image: unable to create image submit.\n"); + DEBUG_MSG(10, _("Html_input_image: unable to create image submit.\n")); a_Url_free(url); return NULL; } @@ -3765,7 +4446,7 @@ static void Html_tag_open_input(DilloHtm gint input_index; if (!(html->InFlags & IN_FORM)) { - MSG_HTML("input camp outside <form>\n"); + MSG_HTML(_("input camp outside <form>\n")); return; } @@ -3782,8 +4463,9 @@ static void Html_tag_open_input(DilloHtm inp_type = DILLO_HTML_INPUT_PASSWORD; widget = gtk_entry_new(); gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE); - if (value) - init_str = g_strdup(Html_get_attr(html, tag, tagsize, "value")); + if (value) { + init_str = value;//g_strdup(Html_get_attr(html, tag, tagsize, "value")); + } } else if (!g_strcasecmp(type, "checkbox")) { inp_type = DILLO_HTML_INPUT_CHECKBOX; widget = gtk_check_button_new(); @@ -3808,19 +4490,51 @@ static void Html_tag_open_input(DilloHtm init_str = (value) ? value : NULL; } else if (!g_strcasecmp(type, "hidden")) { inp_type = DILLO_HTML_INPUT_HIDDEN; - if (value) - init_str = g_strdup(Html_get_attr(html, tag, tagsize, "value")); + if (value) { + /* adhock fix: keep \n */ + int i; + gboolean found_value; + gchar *buf1, *buf2, *bufu; + gchar delimiter[3] = " >"; + + buf1 = g_strndup(tag, tagsize); + bufu = g_strndup(tag, tagsize); + g_strup(bufu); + found_value = (strstr(bufu, "VALUE=") != NULL); + buf2 = buf1 + (strstr(bufu, "VALUE=") - bufu + 6); + g_free(bufu); + if (found_value) { + GString *buf3; + delimiter[0] = (buf2[0] == '"' || buf2[0] == '\'') ? buf2[0] : ' '; + if (delimiter[0] != ' ') buf2++; + if (strpbrk(buf2, delimiter)) strpbrk(buf2, delimiter)[0] = '\0'; + buf3 = g_string_new(buf2); + for (i = 0; i < buf3->len; ++i) { + if (buf3->str[i] == '\r') { + if (buf3->str[i + 1] == '\n') + g_string_erase(buf3, i, 1); + else + buf3->str[i] = '\n'; + } + } + init_str = buf3->str; + g_string_free(buf3, FALSE); + } else { + init_str = g_strdup(Html_get_attr(html, tag, tagsize, "value")); + } + g_free(buf1); + } } else if (!g_strcasecmp(type, "submit")) { inp_type = DILLO_HTML_INPUT_SUBMIT; - init_str = (value) ? value : g_strdup("submit"); - widget = gtk_button_new_with_label(init_str); + init_str = (value) ? value : g_strdup(_("submit")); + widget = a_I18n_gtk_button_new_with_label(init_str); gtk_widget_set_sensitive(widget, FALSE); /* Until end of FORM! */ gtk_signal_connect(GTK_OBJECT(widget), "clicked", GTK_SIGNAL_FUNC(Html_submit_form), html_lb); } else if (!g_strcasecmp(type, "reset")) { inp_type = DILLO_HTML_INPUT_RESET; - init_str = (value) ? value : g_strdup("Reset"); - widget = gtk_button_new_with_label(init_str); + init_str = (value) ? value : g_strdup(_("Reset")); + widget = a_I18n_gtk_button_new_with_label(init_str); gtk_widget_set_sensitive(widget, FALSE); /* Until end of FORM! */ gtk_signal_connect(GTK_OBJECT(widget), "clicked", GTK_SIGNAL_FUNC(Html_reset_form), html_lb); @@ -3829,9 +4543,9 @@ static void Html_tag_open_input(DilloHtm /* Don't request the image, make a text submit button instead */ inp_type = DILLO_HTML_INPUT_SUBMIT; attrbuf = Html_get_attr(html, tag, tagsize, "alt"); - label = attrbuf ? attrbuf : value ? value : name ? name : "Submit"; + label = attrbuf ? attrbuf : value ? value : name ? name : _("Submit"); init_str = g_strdup(label); - widget = gtk_button_new_with_label(init_str); + widget = a_I18n_gtk_button_new_with_label(init_str); gtk_widget_set_sensitive(widget, FALSE); /* Until end of FORM! */ gtk_signal_connect(GTK_OBJECT(widget), "clicked", GTK_SIGNAL_FUNC(Html_submit_form), html_lb); @@ -3846,12 +4560,12 @@ static void Html_tag_open_input(DilloHtm /* todo: implement it! */ inp_type = DILLO_HTML_INPUT_FILE; init_str = (value) ? value : NULL; - MSG("An input of the type \"file\" wasn't rendered!\n"); + MSG(_("An input of the type \"file\" wasn't rendered!\n")); } else if (!g_strcasecmp(type, "button")) { inp_type = DILLO_HTML_INPUT_BUTTON; if (value) { init_str = value; - widget = gtk_button_new_with_label(init_str); + widget = a_I18n_gtk_button_new_with_label(init_str); } } else { /* Text input, which also is the default */ @@ -3930,7 +4644,7 @@ static void Html_tag_open_isindex(DilloH action = a_Url_dup(html->linkblock->base_url); Html_form_new(html->linkblock, DILLO_HTML_METHOD_GET, action, - DILLO_HTML_ENC_URLENCODING); + NULL); form = &(html_lb->forms[html_lb->num_forms - 1]); @@ -3978,7 +4692,7 @@ static void Html_tag_close_textarea(Dill html->Stash = g_string_erase(html->Stash, 0, 1); if (html->Stash->str[0] == '\n') html->Stash = g_string_erase(html->Stash, 0, 1); - + /* As the spec recommends to canonicalize line endings, it is safe * to replace '\r' with '\n'. It will be canonicalized anyway! */ for (i = 0; i < html->Stash->len; ++i) { @@ -3989,15 +4703,15 @@ static void Html_tag_close_textarea(Dill html->Stash->str[i] = '\n'; } } - + /* The HTML3.2 spec says it can have "text and character entities". */ str = Html_parse_entities(html, html->Stash->str, html->Stash->len); - + form = &(html_lb->forms[html_lb->num_forms - 1]); form->inputs[form->num_inputs - 1].init_str = str; - gtk_text_insert(GTK_TEXT(form->inputs[form->num_inputs - 1].widget), + a_I18n_gtk_text_insert(GTK_TEXT(form->inputs[form->num_inputs - 1].widget), NULL, NULL, NULL, str, -1); - + html->InFlags &= ~IN_TEXTAREA; } Html_pop_tag(html, TagIdx); @@ -4020,12 +4734,12 @@ static void Html_tag_open_textarea(Dillo /* We can't push a new <FORM> because the 'action' URL is unknown */ if (!(html->InFlags & IN_FORM)) { - MSG_HTML("<textarea> outside <form>\n"); + MSG_HTML(_("<textarea> outside <form>\n")); html->ReqTagClose = TRUE; return; } if (html->InFlags & IN_TEXTAREA) { - MSG_HTML("nested <textarea>\n"); + MSG_HTML(_("nested <textarea>\n")); html->ReqTagClose = TRUE; return; } @@ -4033,6 +4747,7 @@ static void Html_tag_open_textarea(Dillo html->InFlags |= IN_TEXTAREA; html_lb = html->linkblock; form = &(html_lb->forms[html_lb->num_forms - 1]); + Html_stash_init(html); html->stack[html->stack_top].parse_mode = DILLO_HTML_PARSE_MODE_VERBATIM; @@ -4096,11 +4811,11 @@ static void Html_tag_open_select(DilloHt gint size, type, multi; if (!(html->InFlags & IN_FORM)) { - MSG_HTML("<select> outside <form>\n"); + MSG_HTML(_("<select> outside <form>\n")); return; } if (html->InFlags & IN_SELECT) { - MSG_HTML("nested <select>\n"); + MSG_HTML(_("nested <select>\n")); return; } html->InFlags |= IN_SELECT; @@ -4153,7 +4868,7 @@ static void Html_option_finish(DilloHtml GtkWidget *menuitem; GSList *group; DilloHtmlSelect *select; - + if (!(html->InFlags & IN_FORM)) return; @@ -4169,7 +4884,8 @@ static void Html_option_finish(DilloHtml else group = gtk_radio_menu_item_group(GTK_RADIO_MENU_ITEM (select->options[0].menuitem)); - menuitem = gtk_radio_menu_item_new_with_label(group, html->Stash->str); + menuitem = a_I18n_gtk_radio_menu_item_new_with_label(group, + html->Stash->str); select->options[select->num_options - 1].menuitem = menuitem; if ( select->options[select->num_options - 1].value == NULL ) select->options[select->num_options - 1].value = @@ -4182,7 +4898,7 @@ static void Html_option_finish(DilloHtml GTK_SIGNAL_FUNC (a_Interface_scroll_popup), NULL); } else if ( input->type == DILLO_HTML_INPUT_SEL_LIST ) { - menuitem = gtk_list_item_new_with_label(html->Stash->str); + menuitem = a_I18n_gtk_list_item_new_with_label(html->Stash->str); select->options[select->num_options - 1].menuitem = menuitem; if (select->options[select->num_options - 1].value == NULL) select->options[select->num_options - 1].value = @@ -4241,14 +4957,14 @@ static void Html_tag_close_select(DilloH if (html->InFlags & IN_SELECT) { html->InFlags &= ~IN_SELECT; - + html_lb = html->linkblock; - + form = &(html_lb->forms[html_lb->num_forms - 1]); input = &(form->inputs[form->num_inputs - 1]); if (input->type == DILLO_HTML_INPUT_SELECT) { Html_option_finish(html); - + gtk_option_menu_set_menu(GTK_OPTION_MENU(input->widget), input->select->menu); Html_select_set_history(input); @@ -4256,14 +4972,14 @@ static void Html_tag_close_select(DilloH /* gtk_option_menu_set_history(GTK_OPTION_MENU(input->widget), 1); */ gtk_widget_show(input->widget); - + embed_gtk = a_Dw_embed_gtk_new (); a_Dw_embed_gtk_add_gtk (DW_EMBED_GTK (embed_gtk), input->widget); a_Dw_page_add_widget(DW_PAGE (html->dw), embed_gtk, html->stack[html->stack_top].style); } else if (input->type == DILLO_HTML_INPUT_SEL_LIST) { Html_option_finish(html); - + if (input->select->size < input->select->num_options) { scrolledwindow = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow), @@ -4272,23 +4988,23 @@ static void Html_tag_close_select(DilloH gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW (scrolledwindow), input->widget); - + gtk_container_set_focus_vadjustment (GTK_CONTAINER (input->widget), gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW(scrolledwindow))); - + /* Calculate the height of the scrolled window */ gtk_widget_size_request(input->select->options[0].menuitem, &req); height = input->select->size * req.height + 2 * scrolledwindow->style->klass->ythickness; gtk_widget_set_usize(scrolledwindow, -1, height); - + gtk_widget_show(input->widget); input->widget = scrolledwindow; } gtk_widget_show(input->widget); - + /* note: In this next call, scrolledwindows get a g_warning from * gdkwindow.c:422. I'm not really going to sweat it now - the * embedded widget stuff is going to get massively redone anyway. */ @@ -4307,11 +5023,15 @@ static void Html_tag_close_select(DilloH static void Html_tag_open_base(DilloHtml *html, char *tag, gint tagsize) { const char *attrbuf; + gchar *attrbuf_enc; DilloUrl *BaseUrl; if (html->InFlags & IN_HEAD) { if ((attrbuf = Html_get_attr(html, tag, tagsize, "href"))) { - BaseUrl = Html_url_new(html, attrbuf, "", 0, 0, 0, 1); + attrbuf_enc = a_I18n_convert(DILLO_CHARSET, html->linkblock->charset, + attrbuf, -1); + BaseUrl = Html_url_new(html, attrbuf_enc, "", 0, 0, 0, 1); + g_free(attrbuf_enc); if (URL_SCHEME_(BaseUrl)) { /* Pass the URL_SpamSafe flag to the new base url */ a_Url_set_flags( @@ -4319,12 +5039,14 @@ static void Html_tag_open_base(DilloHtml a_Url_free(html->linkblock->base_url); html->linkblock->base_url = BaseUrl; } else { - MSG_HTML("base URI is relative (it MUST be absolute)\n"); + MSG_HTML(_("base URI is relative (it MUST be absolute)\n")); a_Url_free(BaseUrl); } } + if ((attrbuf = Html_get_attr(html, tag, tagsize, "target"))) + a_Url_set_target(html->linkblock->base_url, attrbuf); } else { - MSG_HTML("the BASE element must appear in the HEAD section\n"); + MSG_HTML(_("the BASE element must appear in the HEAD section\n")); } } @@ -4467,7 +5189,6 @@ static const TagInfo Tags[] = { {"body", B8(011110),'O',1, Html_tag_open_body, Html_tag_close_body}, {"br", B8(010001),'F',0, Html_tag_open_br, Html_tag_close_default}, {"button", B8(011101),'R',2, Html_tag_open_button, Html_tag_close_default}, - /* caption */ {"center", B8(011110),'R',2, Html_tag_open_center, Html_tag_close_div}, {"cite", B8(010101),'R',2, Html_tag_open_cite, Html_tag_close_default}, {"code", B8(010101),'R',2, Html_tag_open_code, Html_tag_close_default}, @@ -4484,9 +5205,9 @@ static const TagInfo Tags[] = { {"em", B8(010101),'R',2, Html_tag_open_em, Html_tag_close_default}, /* fieldset */ {"font", B8(010101),'R',2, Html_tag_open_font, Html_tag_close_default}, - {"form", B8(011110),'R',2, Html_tag_open_form, Html_tag_close_form}, - {"frame", B8(010010),'F',0, Html_tag_open_frame, Html_tag_close_default}, - {"frameset", B8(011110),'R',2,Html_tag_open_frameset, Html_tag_close_default}, + {"form", B8(011110),'R',5, Html_tag_open_form, Html_tag_close_form}, + {"frame", B8(000010),'F',0, Html_tag_open_frame, Html_tag_close_default}, + {"frameset", B8(001110),'R',2,Html_tag_open_frameset, Html_tag_close_default}, {"h1", B8(010110),'R',2, Html_tag_open_h, Html_tag_close_h}, {"h2", B8(010110),'R',2, Html_tag_open_h, Html_tag_close_h}, {"h3", B8(010110),'R',2, Html_tag_open_h, Html_tag_close_h}, @@ -4497,7 +5218,7 @@ static const TagInfo Tags[] = { {"hr", B8(010010),'F',0, Html_tag_open_hr, Html_tag_close_default}, {"html", B8(001110),'O',1, Html_tag_open_html, Html_tag_close_html}, {"i", B8(010101),'R',2, Html_tag_open_i, Html_tag_close_default}, - {"iframe", B8(011110),'R',2, Html_tag_open_frame, Html_tag_close_default}, + {"iframe", B8(011110),'R',2, Html_tag_open_iframe, Html_tag_close_default}, {"img", B8(010001),'F',0, Html_tag_open_img, Html_tag_close_default}, {"input", B8(010001),'F',0, Html_tag_open_input, Html_tag_close_default}, /* ins */ @@ -4511,7 +5232,8 @@ static const TagInfo Tags[] = { /* menu 1010 -- todo: not exactly 1010, it can contain LI and inline */ {"menu", B8(011010),'R',2, Html_tag_open_menu, Html_tag_close_par}, {"meta", B8(100001),'F',0, Html_tag_open_meta, Html_tag_close_default}, - /* noframes 1011 */ + {"noframe", B8(001011),'R',2, Html_tag_open_noframe, Html_tag_close_default}, /* Illegal tag */ + {"noframes", B8(001011),'R',2, Html_tag_open_noframes, Html_tag_close_default}, /* noscript 1011 */ /* object 11xxxx */ {"ol", B8(011010),'R',2, Html_tag_open_ol, Html_tag_close_par}, @@ -4675,7 +5397,7 @@ static void Html_stack_cleanup_at_open(D /* we have an inline (or empty) container... */ if (Tags[oldtag_idx].EndTag == 'R') { - MSG_HTML("<%s> is not allowed to contain <%s>. -- closing <%s>\n", + MSG_HTML(_("<%1$s> is not allowed to contain <%2$s>. -- closing <%3$s>\n"), Tags[oldtag_idx].name, Tags[new_idx].name, Tags[oldtag_idx].name); } @@ -4684,7 +5406,6 @@ static void Html_stack_cleanup_at_open(D if ((html->InFlags & IN_PRE) && strcmp(Tags[new_idx].name, "hr") == 0) break; - /* This call closes the top tag only. */ Html_tag_cleanup_at_close(html, oldtag_idx); } @@ -4791,7 +5512,7 @@ static void Html_process_tag(DilloHtml * /* todo: this is only raising a warning, take some defined action. * Note: apache uses IMG inside PRE (we could use its "alt"). */ if ((html->InFlags & IN_PRE) && Html_tag_pre_excludes(ni)) - MSG_HTML("<pre> is not allowed to contain <%s>\n", Tags[ni].name); + MSG_HTML(_("<pre> is not allowed to contain <%s>\n"), Tags[ni].name); /* Push the tag into the stack */ Html_push_tag(html, ni); @@ -4813,7 +5534,7 @@ static void Html_process_tag(DilloHtml * /* We compare the "id" value with the url-decoded "name" value */ if (!html->NameVal || strcmp(html->NameVal, attrbuf)) { if (html->NameVal) - MSG_HTML("'id' and 'name' attribute of <a> tag differ\n"); + MSG_HTML(_("'id' and 'name' attribute of <a> tag differ\n")); Html_add_anchor(html, attrbuf); } } @@ -4869,6 +5590,7 @@ static const char *Html_get_attr2(DilloH DilloHtmlTagParsingFlags flags) { gint i, isocode, entsize, Found = 0, delimiter = 0, attr_pos = 0; + gchar *subst; GString *Buf = html->attr_data; DilloHtmlTagParsingState state = SEEK_ATTR_START; @@ -4922,7 +5644,9 @@ static const char *Html_get_attr2(DilloH } else if (tag[i] == '&' && (flags & HTML_ParseEntities)) { if ((isocode = Html_parse_entity(html, tag+i, tagsize-i, &entsize)) >= 0) { - g_string_append_c(Buf, (gchar) isocode); + subst = Html_ucs2utf8(html, isocode); + g_string_append(Buf, subst); + g_free(subst); i += entsize-1; } else { g_string_append_c(Buf, tag[i]); @@ -4996,7 +5720,12 @@ static void Html_add_widget(DilloHtml *h Html_parse_length (html, width_str) : DW_STYLE_LENGTH_AUTO; new_style_attrs.height = height_str ? Html_parse_length (html, height_str) : DW_STYLE_LENGTH_AUTO; - style = a_Dw_style_new (&new_style_attrs, (html)->bw->main_window->window); + if ((gulong)new_style_attrs.width*new_style_attrs.height + > (gulong)(G_MAXLONG >> 1)) { + new_style_attrs.width = DW_STYLE_LENGTH_AUTO; + new_style_attrs.height = DW_STYLE_LENGTH_AUTO; + } + style = a_Dw_style_new (&new_style_attrs, (html)->dd->bw->main_window->window); a_Dw_page_add_widget(DW_PAGE (html->dw), widget, style); a_Dw_style_unref (style); } @@ -5030,6 +5759,11 @@ static gint Html_write_raw(DilloHtml *ht gint token_start, buf_index; g_return_val_if_fail ((page = DW_PAGE (html->dw)) != NULL, 0); + + if(bufsize < 0){ + _MSG(_("Html_write_raw : bufsize is negative!\n")); + bufsize = strlen(buf); + } buf = g_strndup(buf, bufsize); @@ -5105,7 +5839,7 @@ static gint Html_write_raw(DilloHtml *ht if (buf[offset] == ch || !buf[offset]) { buf_index = offset; } else { - MSG_HTML("attribute lacks closing quote\n"); + MSG_HTML(_("attribute lacks closing quote\n")); break; } } @@ -5113,7 +5847,7 @@ static gint Html_write_raw(DilloHtml *ht /* unterminated tag detected */ p = g_strndup(buf+token_start+1, strcspn(buf+token_start+1, " <")); - MSG_HTML("<%s> element lacks its closing '>'\n", p); + MSG_HTML(_("<%s> element lacks its closing '>'\n"), p); g_free(p); --buf_index; break; @@ -5127,19 +5861,62 @@ static gint Html_write_raw(DilloHtml *ht } } } else { - /* A Word: search for whitespace or tag open */ - while (++buf_index < bufsize) { - buf_index += strcspn(buf + buf_index, " <\n\r\t\f\v"); - if ( buf[buf_index] == '<' && (ch = buf[buf_index + 1]) && - !isalpha(ch) && !strchr("/!?", ch)) - continue; - break; - } - if (buf_index < bufsize || Eof) { - /* successfully found end of token */ - Html_process_word(html, buf + token_start, - buf_index - token_start); - token_start = buf_index; + /* A Word */ + if (a_I18n_use_CJK_charset(html->linkblock->lang)) { + if (!IS_ASCII_CHAR(buf[buf_index])) { + /* Deal with multibyte characters, treat each character as a word. */ + int wordnum = a_I18n_mblen(&buf[buf_index]); + if (wordnum != 0) { + buf_index += wordnum; + if (buf_index < bufsize || Eof) { + Html_process_word(html, buf + token_start, + buf_index - token_start); + token_start = buf_index; + } + } else { + /* ignore it, unless it is a multibyte character that has not + * completely arrived yet */ + buf_index++; + if (buf_index < bufsize || Eof) + token_start = buf_index; + } + } else { + /* search for whitespace or tag open or multibyte character*/ + /* otherwise, fall back to ASCII */ + while (++buf_index < bufsize) { + while (buf_index < bufsize + && IS_ASCII_CHAR(buf[buf_index]) + && !memchr(" <\n\r\t\f\v&", buf[buf_index], 8)) + buf_index++; + if (buf[buf_index] == '<' + && buf[buf_index + 1] + && !isalpha(buf[buf_index + 1]) + && !strchr("/!?", buf[buf_index + 1])) + continue; /* found a tag. */ + break; + } + if (buf_index < bufsize || Eof) { + /* successfully found end of token */ + Html_process_word(html, buf + token_start, + buf_index - token_start); + token_start = buf_index; + } + } + } else { + /* search for whitespace or tag open or multibyte character*/ + while (++buf_index < bufsize) { + buf_index += strcspn(buf + buf_index, " <\n\r\t\f\v"); + if ( buf[buf_index] == '<' && (ch = buf[buf_index + 1]) && + !isalpha(ch) && !strchr("/!?", ch)) + continue; + break; + } + if (buf_index < bufsize || Eof) { + /* successfully found end of token */ + Html_process_word(html, buf + token_start, + buf_index - token_start); + token_start = buf_index; + } } } }/*while*/ @@ -5150,6 +5927,60 @@ static gint Html_write_raw(DilloHtml *ht return token_start; } +/* wait for </head> or <body> tag. if waiting, return TRUE*/ +static gboolean Html_wait(char *Buf, gint BufSize, gint Eof) +{ + char *head, *body; + struct timespec t = {0, 10000000L}; // 10ms + + if (Eof == 1) return FALSE; + + head = a_Misc_stristr(Buf, "</head>"); + if (head && (BufSize - (head - Buf)) > 0) return FALSE; + body = a_Misc_stristr(Buf, "<body"); + if (body && (BufSize - (body - Buf)) > 0) return FALSE; + + _MSG("wait..\n"); + nanosleep(&t, NULL); + return TRUE; +} + +/* guess charset */ +static void +Html_guess_charset(DilloHtml *html, char *Buf, gint BufSize) +{ + if (html->Start_Ofs != 0 && html->linkblock->usingMetaCharset) + return; + + g_free(html->linkblock->charset); + /* 1. Server Charset */ + if (html->server_charset) { + html->linkblock->charset = g_strdup(html->server_charset); + return; + } + + /* 2. Meta Tag Charset */ + html->linkblock->charset = a_I18n_get_charset_from_meta_tag(Buf, BufSize); + if (html->linkblock->charset) { +#if 0 + /* for rare case - page has many entities. */ + gchar *charset; + if (g_strcasecmp(html->linkblock->charset, "ISO-8859-1") == 0) { + Buf = Html_parse_entities(html, Buf, BufSize); + charset = a_I18n_get_encoding(Buf, -1); + if (!html->lang) html->lang = a_I18n_get_lang_from_charset(charset); + g_free(charset); + g_free(Buf); + } +#endif + html->linkblock->usingMetaCharset = TRUE; + return; + } + + /* 3. Guess from document */ + html->linkblock->charset = a_I18n_get_encoding(Buf, BufSize); +} + /* * Process the newly arrived html and put it into the page structure. * (This function is called by Html_callback whenever there's new data) @@ -5157,23 +5988,51 @@ static gint Html_write_raw(DilloHtml *ht static void Html_write(DilloHtml *html, char *Buf, gint BufSize, gint Eof) { DwPage *page; - char completestr[32]; gint token_start; - char *buf = Buf + html->Start_Ofs; - gint bufsize = BufSize - html->Start_Ofs; g_return_if_fail ( (page = DW_PAGE (html->dw)) != NULL ); - + if (BufSize == 0) return; html->Start_Buf = Buf; - token_start = Html_write_raw(html, buf, bufsize, Eof); + html->Buf_Size = BufSize; + + if (!html->trans) { + /* wait <meta> tag. */ + if (html->Start_Ofs == 0 && Html_wait(Buf, BufSize, Eof)) + return; + /* guess charset */ + Html_guess_charset(html, Buf, BufSize); + if (html->linkblock->charset) { + html->trans = Html_translation_new(html->linkblock->charset, + DILLO_CHARSET); + if (!html->lang) + html->lang = a_I18n_get_lang_from_charset(html->linkblock->charset); + strncpy(html->linkblock->lang, html->lang, 6); + Html_set_top_font(html, NULL, 0, 0, 0); + } + } + + if (html->trans) { + int bufsize; + + // translation needed and available + Html_translate(html->trans, Buf, BufSize); + // note trans->bufsize includes the null byte + bufsize = html->trans->bufsize - html->Start_Ofs; + if (bufsize == 0) token_start = 0; + else + token_start = Html_write_raw(html, + html->trans->buffer + html->Start_Ofs, bufsize, Eof); + } else { + // translation not needed, or not available + token_start = Html_write_raw(html, Buf + html->Start_Ofs, + BufSize - html->Start_Ofs, Eof); + } html->Start_Ofs += token_start; - if ( html->bw ) { - g_snprintf( - completestr, 32, "%s%.1f Kb", - PBAR_PSTR(prefs.panel_size == 1), - (float)html->Start_Ofs/1024); - a_Progressbar_update(html->bw->progress, completestr, 1); + if ( html->dd ) { + html->dd->progress = html->Start_Ofs/1024; + html->dd->ready = FALSE; + a_Doc_progress_update(html->dd); } } @@ -5207,12 +6066,97 @@ static void Html_close(DilloHtml *html, g_string_free(html->attr_data, TRUE); /* Remove this client from our active list */ - a_Interface_close_client(html->bw, ClientKey); - - /* Set progress bar insensitive */ - a_Progressbar_update(html->bw->progress, NULL, 0); + a_Doc_close_client(html->dd, ClientKey); + /* update progress */ + html->dd->ready = TRUE; + a_Doc_progress_update(html->dd); + + /* close the character encoding converter, if present */ + Html_translation_free(html->trans, FALSE); + g_free(html->server_charset); + g_free(html->lang); + g_free(html); } +/* + * This translates between character encodings. The results are put into + * `trans'. This call can be used repeatedly as new data arrives. + */ +static void Html_translate(DilloTrans *trans, char *buf, gint bufsize) { + char *source, *dest, *temp; + size_t s_left, d_left; + int bytesneeded; + + g_return_if_fail(trans && buf); + + /* is there nothing new? */ + if (bufsize == trans->converted) { + if (bufsize == 0 && !trans->buffer) { + trans->buffer = g_new0(char,1); /* allocate if given empty input */ + trans->bufsize = 0; + } + return; /* no new data */ + } + + /* allocate a string, leaving enough space for worst-case growth */ + + /* now the proper translation */ + source = buf + trans->converted; + s_left = bufsize - trans->converted; + d_left = bufsize * D_CHAR_GROWTH; + temp = g_malloc(d_left + 1); + dest = temp; + a_I18n_iconv(trans->conversion, + &source, &s_left, + &dest, &d_left); + trans->converted = bufsize - s_left; /* note how far into the source */ + + /* now do the proper allocation */ + bytesneeded = bufsize * D_CHAR_GROWTH - d_left; + if (!trans->buffer) { + trans->buffer = g_realloc(temp, bytesneeded + 1); /* cut to size */ + trans->bufsize = bytesneeded; + } else { + trans->buffer = g_realloc(trans->buffer, trans->bufsize + bytesneeded + 1); + memcpy(trans->buffer + trans->bufsize, temp, bytesneeded + 1); + trans->bufsize += bytesneeded; + g_free(temp); + } +} + +/* + * This sets up character encoding translation. It should be done once + * for each document that has to be translated. + * The inputs are iconv-style encoding names. + * This can return NULL if there is an error. + */ +static DilloTrans *Html_translation_new(char *source, char *dest) { + DilloTrans *trans; + + g_return_val_if_fail(source && dest, NULL); + if (strncmp(source, "ASCII", 5) == 0) return NULL; + + trans = g_new0(DilloTrans, 1); + trans->conversion = iconv_open(dest, source); + if (trans->conversion == (iconv_t)-1) { + g_warning (_("could not allocate character encoding converter")); + g_free(trans); + return NULL; + } + return trans; +} + +/* + * This shuts down character encoding translation. + * Set the second parameter to true if you want to keep the translated buffer. + */ +static void Html_translation_free(DilloTrans *trans, gboolean keepbuf) { + if (!trans) return; + iconv_close(trans->conversion); + if (!keepbuf) g_free(trans->buffer); + g_free(trans); +} +/* vim: set ts=3 sw=3 sts=3 expandtab:*/ diff -pruN dillo-0.8.6/src/html.h dillo-0.8.6-i18n-misc-20060709/src/html.h --- dillo-0.8.6/src/html.h 2006-01-14 01:05:20.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/html.h 2006-05-16 01:21:09.000000000 +0900 @@ -1,10 +1,11 @@ #ifndef __HTML_H__ #define __HTML_H__ +#include <iconv.h> #include <gdk/gdk.h> #include <gtk/gtkcontainer.h> -#include "browser.h" /* for BrowserWindow */ +#include "browser.h" /* for DilloDoc */ #include "dw_widget.h" /* for DwWidget */ #include "dw_image.h" /* for DwImageMapList */ @@ -18,6 +19,9 @@ extern "C" { likely that imagemaps will go here. */ typedef struct _DilloHtmlLB DilloHtmlLB; +#ifdef ENABLE_META_REFRESH +typedef struct _DilloHtmlMetaRefreshData DilloHtmlMetaRefreshData; +#endif typedef struct _DilloHtml DilloHtml; typedef struct _DilloHtmlClass DilloHtmlClass; @@ -26,10 +30,11 @@ typedef struct _DilloHtmlForm DilloHt typedef struct _DilloHtmlOption DilloHtmlOption; typedef struct _DilloHtmlSelect DilloHtmlSelect; typedef struct _DilloHtmlInput DilloHtmlInput; +typedef struct _DilloTrans DilloTrans; struct _DilloHtmlLB { - BrowserWindow *bw; + DilloDoc *dd; DilloUrl *base_url; DilloHtmlForm *forms; @@ -47,8 +52,22 @@ struct _DilloHtmlLB { gint num_page_bugs; GString *page_bugs; + + gchar *charset; + gboolean usingMetaCharset; + gchar lang[6]; +#ifdef ENABLE_META_REFRESH + gint *meta_refresh; +#endif }; +#ifdef ENABLE_META_REFRESH +struct _DilloHtmlMetaRefreshData { + DilloHtmlLB *lb; + int html_dead; + DilloUrl *url; +}; +#endif typedef enum { DT_NONE, @@ -88,6 +107,12 @@ typedef enum { DILLO_HTML_TABLE_MODE_TD /* inside of <td> */ } DilloHtmlTableMode; +typedef enum { + DILLO_HTML_FRAME_MODE_NONE, /* no frameset at all */ + DILLO_HTML_FRAME_MODE_IFRAME, /* inside of <iframe> */ + DILLO_HTML_FRAME_MODE_FRAMESET, /* inside of <frameset> */ + DILLO_HTML_FRAME_MODE_NOFRAMES /* inside of <noframes> */ +} DilloHtmlFrameMode; typedef enum { IN_HTML = 1 << 0, @@ -98,7 +123,8 @@ typedef enum { IN_TEXTAREA = 1 << 5, IN_MAP = 1 << 6, IN_PRE = 1 << 7, - IN_BUTTON = 1 << 8 + IN_BUTTON = 1 << 8, + IN_FRAMESET = 1 << 9 } DilloHtmlProcessingState; @@ -107,6 +133,8 @@ struct _DilloHtmlState { DwStyle *style, *table_cell_style; DilloHtmlParseMode parse_mode; DilloHtmlTableMode table_mode; + DilloHtmlFrameMode frame_mode; + GtkWidget *frameset; gboolean cell_text_align_set; enum { HTML_LIST_NONE, HTML_LIST_UNORDERED, HTML_LIST_ORDERED } list_type; gint list_number; @@ -135,14 +163,10 @@ typedef enum { DILLO_HTML_METHOD_POST } DilloHtmlMethod; -typedef enum { - DILLO_HTML_ENC_URLENCODING -} DilloHtmlEnc; - struct _DilloHtmlForm { DilloHtmlMethod method; DilloUrl *action; - DilloHtmlEnc enc; + gchar *charset; DilloHtmlInput *inputs; gint num_inputs; @@ -196,12 +220,24 @@ struct _DilloHtmlInput { gboolean init_val; /* only meaningful for buttons */ }; +/* This is used when converting from one character encoding to another */ +struct _DilloTrans { + iconv_t conversion; /* iconv conversion handler */ + char *buffer; /* The converted string. This moves about!! */ + int bufsize; /* Current length of the buffer, excluding NULL. */ + int converted; /* number of input bytes converted */ +}; + struct _DilloHtml { DwWidget *dw; /* this is duplicated in the stack (page) */ + DilloTrans *trans; /* handle for character set conversion */ + gchar *server_charset; + gchar *lang; DilloHtmlLB *linkblock; gchar *Start_Buf; size_t Start_Ofs; + size_t Buf_Size; size_t CurrTagOfs; size_t OldTagOfs, OldTagLine; @@ -235,7 +271,7 @@ struct _DilloHtml { GString *attr_data; - BrowserWindow *bw; + DilloDoc *dd; }; #ifdef __cplusplus diff -pruN dillo-0.8.6/src/i18n.c dillo-0.8.6-i18n-misc-20060709/src/i18n.c --- dillo-0.8.6/src/i18n.c 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/i18n.c 2006-05-16 01:21:09.000000000 +0900 @@ -0,0 +1,662 @@ +/* + * File: i18n.c + * + * Copyright (C) 2003 Kiyo <kiyo@teki.jpn.ph> + * This code referred to Mr. Robert Thomson's code. and created it. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +/* + * guess encoding charset and convert + */ + +#include <config.h> +#include <ctype.h> +#include <string.h> +#include <glib.h> +#include <errno.h> /* for iconv error codes */ +#include <iconv.h> + +#include "intl.h" +#include "misc.h" +#include "msg.h" +#include "i18n.h" + +//#define DEBUG_LEVEL 10 +#include "debug.h" + +#define MIN_HEADER_LENGTH (gint)(sizeof("<head><meta http-equiv=\"content-type\"" \ + " content=\"text/html\"; charset=></head>") - 1) +#define MAX_HEADER_LENGTH 10240 + +typedef enum { + AD_NONE, + AD_CHINESE, + AD_KOREAN, + AD_JAPANESE, + AD_ALL +} I18nAutoDetectionType; + +static gchar *default_lang; +static gchar *dw_charset; +static I18nAutoDetectionType detect_type; +static gboolean use_CJK_charset; + +typedef struct { + gchar *lang; + gchar *charset; +} lang_charset; + +#define LANG_TBL_N 59 +static lang_charset lang_tbl[LANG_TBL_N] = { + {"ZH_TW", "BIG5"}, + {"ZH_HK", "BIG5HKSCS"}, + {"ZH_CN", "GBK"}, + {"YI", "CP1255"}, + {"VI", "TCVN"}, + {"UR", "CP1256"}, + {"UK", "KOI8-U"}, + {"TURKISH", "ISO8859-9"}, + {"TT", "TATAR-CYR"}, + {"TR", "ISO8859-9"}, + {"TG", "KOI8-C"}, + {"TA", "TSCII-0"}, + {"SR_SP", "ISO8859-2"}, + {"SR", "ISO8859-5"}, + {"SQ", "ISO8859-2"}, + {"SP", "ISO8859-5"}, + {"SL", "ISO8859-2"}, + {"SK", "ISO8859-2"}, + {"SH", "ISO8859-2"}, + {"SE_NO", "UTF-8"}, + {"SERBOCROATIAN", "ISO8859-2"}, + {"RU_UA", "KOI8-U"}, + {"RU_RU", "KOI8-R"}, + {"RUSSIAN", "ISO8859-5"}, + {"RUMANIAN", "ISO8859-2"}, + {"RU", "KOI8-R"}, + {"RO", "ISO8859-2"}, + {"POSIX", "C"}, + {"POLISH", "ISO8859-2"}, + {"PL", "ISO8859-2"}, + {"MT", "ISO8859-3"}, + {"MK", "ISO8859-5"}, + {"LO", "MULELAO-1"}, + {"KO", "EUCKR"}, + {"KA", "GEORGIAN-ACADEMY"}, + {"JP_JP", "EUCJP"}, + {"JA", "EUCJP"}, + {"IW", "ISO8859-8"}, + {"IU", "NUNACOM-8"}, + {"HY", "ARMSCII-8"}, + {"HU", "ISO8859-2"}, + {"HR", "ISO8859-2"}, + {"HI", "ISCII-DEV"}, + {"HE", "ISO8859-8"}, + {"GREEK", "ISO8859-7"}, + {"FA", "UTF-8"}, + {"EO", "ISO8859-3"}, + {"EL", "ISO8859-7"}, + {"EE", "ISO8859-4"}, + {"CZ", "ISO8859-2"}, + {"CS", "ISO8859-2"}, + {"CROATIAN", "ISO8859-2"}, + {"CHINESE-T", "EUCTW"}, + {"CHINESE-S", "EUCCN"}, + {"BE", "CP1251"}, + {"AZ", "ISO8859-9E"}, + {"AR", "ISO8859-6"}, + {"AM", "UTF-8"}, + {"A3", "KOI8-C"}, +}; + +static gchar *I18n_get_charset_from_lang(const gchar *lang) +{ + gint i; + gchar u_lang[64]; + + strncpy(u_lang, lang, 64); + g_strup(u_lang); + if (strstr(u_lang, "EURO")) return g_strdup("ISO8859-15"); + for (i = 0; i < LANG_TBL_N; i++) { + if (strncmp(u_lang, lang_tbl[i].lang, strlen(lang_tbl[i].lang)) == 0) + return g_strdup(lang_tbl[i].charset); + } + return g_strdup("ISO8859-1"); +} + +void a_I18n_detect_DW_locale() +{ + char *lang; + + lang = getenv("LC_CTYPE"); + if (!lang || !*lang) lang = getenv("LC_ALL"); + if (!lang || !*lang) lang = getenv("LANG"); + + detect_type = AD_NONE; + use_CJK_charset = FALSE; + if (!lang) { + dw_charset = g_strdup("ISO8859-1"); + default_lang = g_strdup("en"); + return; + } + if (g_strncasecmp(lang, "ZH", 2) == 0) { + detect_type = AD_CHINESE; + use_CJK_charset = TRUE; + } else if (g_strncasecmp(lang, "KO", 2) == 0) { + detect_type = AD_KOREAN; + use_CJK_charset = TRUE; + } else if (g_strncasecmp(lang, "JA", 2) == 0) { + detect_type = AD_JAPANESE; + use_CJK_charset = TRUE; + } + if (strchr(lang, '.')) { + default_lang = g_strdup(lang); + strchr(default_lang, '.')[0] = 0; + } else { + default_lang = g_strdup(lang); + } + if (strchr(default_lang, '_')) { + strchr(default_lang, '_')[0] = '-'; + } + + dw_charset = (strchr(lang, '.')) + ? a_I18n_fix_charset(g_strdup(strchr(lang, '.') + 1)) + : I18n_get_charset_from_lang(lang); + if (!dw_charset) dw_charset = g_strdup(DILLO_CHARSET); +} + +const gchar *a_I18n_get_DW_charset() +{ + return dw_charset; +} + +/* If charset has latin1, return TRUE. */ +gboolean a_I18n_has_latin1_charset(gchar *lang) +{ + return (g_strncasecmp(lang, "ja", 2) != 0); +} + +gchar *a_I18n_get_lang_from_charset(const gchar *charset) +{ + gchar *buf, *lang; + if (!charset) return NULL; + + buf = g_strdup(charset); + g_strup(buf); + if (strcmp(buf, "ISO-8859-1") == 0 || + strcmp(buf, "WINDOWS-1252") == 0) { + lang ="en"; /* af,sq,eu,ca,da,nl,fo,fi,fr,gl,de,is,ga,it */ + } else if (strncmp(buf, "BIG", 3) == 0 || + strcmp(buf, "EUC-TW") == 0) { + lang ="zh-TW"; /* Traditional */ + } else if (strncmp(buf, "GB", 2) == 0 || + strcmp(buf, "EUC-CN") == 0) { + lang ="zh-CN"; /* Simplified */ + } else if (strcmp(buf, "SJIS") == 0 || + strncmp(buf, "SHIFT", 5) == 0 || + strcmp(buf, "EUC-JP") == 0 || + strcmp(buf, "ISO-2022-JP") == 0) { + lang ="ja"; + } else if (strcmp(buf, "EUC-KR") == 0 || + strcmp(buf, "ISO-2022-KR") == 0) { + lang ="ko"; + } else if (strcmp(buf, "ISO-8859-2") == 0 || + strcmp(buf, "WINDOWS-1250") == 0) { + lang ="hr"; /* sl */ + } else if (strcmp(buf, "ISO-8859-3") == 0) { + lang ="eo"; /* mt */ + } else if (strcmp(buf, "WINDOWS-874") == 0) { + lang ="th"; + } else if (strcmp(buf, "WINDOWS-1251") == 0 || + strcmp(buf, "KOI8-R") == 0) { + lang ="ru"; + } else if (strcmp(buf, "ISO-8859-5") == 0 || + strcmp(buf, "KOI8-U") == 0) { + lang ="uk"; + } else if (strcmp(buf, "ISO-8859-6") == 0 || + strcmp(buf, "WINDOWS-1256") == 0) { + lang ="ar"; + } else if (strcmp(buf, "ISO-8859-7") == 0) { + lang ="el"; + } else if (strcmp(buf, "ISO-8859-8") == 0) { + lang ="he"; + } else if (strcmp(buf, "ISO-8859-9") == 0 || + strcmp(buf, "WINDOWS-1254") == 0) { + lang ="tr"; + } else if (strcmp(buf, "ISO-8859-13") == 0 || + strcmp(buf, "WINDOWS-1257") == 0) { + lang ="lt"; /* lv */ + } else if (strcmp(buf, "ISO-8859-15") == 0) { + lang = "et"; +/* eo es la ms ... + } else if (strncmp(buf, "", 1) == 0) { + lang = ""; +*/ + } else { + lang = default_lang; + } + g_free(buf); + + return g_strdup(lang);; +} + +gboolean a_I18n_use_CJK_charset(gchar *lang) +{ + return (g_strncasecmp(lang, "zh", 2) == 0 || + g_strncasecmp(lang, "ko", 2) == 0 || + g_strncasecmp(lang, "ja", 2) == 0); +} + +/* fix name Html_charset to iconv_charset. for example "x-sjis" to "SJIS"... */ +/* TODO: remake this code! */ +gchar *a_I18n_fix_charset(gchar *charset) +{ + iconv_t it; + + if (!charset) return NULL; + g_strup(charset); + if (strchr(charset, '@')) + strchr(charset, '@')[0] = '\0'; + if (strncmp(charset, "X-", 2) == 0) { + gchar *old_charset = charset; + charset = g_strdup(charset + 2); + g_free(old_charset); + } + /* Japan Only */ + if (strcmp(charset, "SHIFTJIS") == 0) { + g_free(charset); + return g_strdup("SJIS"); + } + /* Korea Only */ + if (strcmp(charset, "KS_C_5601-1987") == 0) { + g_free(charset); + return g_strdup("EUC-KR"); + } + if (strcmp(charset, "UNICODE-1-1-UTF-8") == 0) { + g_free(charset); + return g_strdup("UTF-8"); + } + if (strchr(charset, '_')) { + strchr(charset, '_')[0] = '-'; + } + if ((it = iconv_open(charset, charset)) == (iconv_t)-1) { + g_free(charset); + return NULL; + } + iconv_close(it); + return charset; +} + +/* auto detect Chinese charset. -- GB2312,GBK,GB18030,HZ,ISO-2022-CN, + * Big5,Big5-HKSCS,EUC-CN,EUC-TW*/ +gchar *I18n_detect_chinese_charset(const gchar *buf, gint bufsize) +{ + /* TODO: implement this! */ + return g_strdup(DW_CHARSET); +} + +/* auto detect Korean charset. -- EUC-KR,UHC,JOHAB,ISO-2022-KR */ +gchar *I18n_detect_korean_charset(const gchar *buf, gint bufsize) +{ + /* TODO: implement this! */ + return g_strdup(DW_CHARSET); +} + +/* auto detect Japanese charset. -- Shift_JIS,EUC-JP,ISO-2022-JP */ +gchar *I18n_detect_japanese_charset(const gchar *buf, gint bufsize) +{ + gint i, got_sjis = 0, got_euc = 0, got_jis = 0; + if (!buf || bufsize == 0) + return g_strdup("SJIS"); + + /* check CR code. */ + if (strstr(buf, "\r")) + got_sjis += 2; + + for (i = 0; i < bufsize; i++) { + if (got_sjis > got_euc && got_sjis >= 40) + return g_strdup("SJIS"); + else if (got_euc > got_sjis && got_euc >= 40) + return g_strdup("EUC-JP"); + else if (got_jis > 3) + return g_strdup("ISO-2022-JP"); + if (buf[i] == 0x1b) { + if (buf[i+1] == '$' || buf[i+1] == '(') + got_jis++; + else + got_jis--; + } else if (IS_ASCII_CHAR(buf[i])) continue; + _MSG("e=%d s=%d j=%d %d\n", got_euc, got_sjis, got_jis, i); + if (IS_SJIS_CHAR1(buf[i])) { + if(IS_SJIS_CHAR2(buf[i+1])) { + i++; + got_sjis += 2; + continue; + } else + got_euc += 2; + } + if (IS_EUC_CHAR(buf[i])) { + if (IS_EUC_CHAR(buf[i+1])) { + got_euc += 2; + i++; + } else got_sjis += 2; + } + if (i >= 1) + if (IS_HANKANA_CHAR(buf[i - 2]) + && IS_HANKANA_CHAR(buf[i - 1]) + && IS_HANKANA_CHAR(buf[i])) { + got_sjis++; + if (IS_HANKANA_CHAR(buf[i+1])) + got_sjis++; + } + } + + _MSG(_("charset detect may mistake...\n")); + if (got_jis > 1) + return g_strdup("ISO-2022-JP"); + if (got_sjis > got_euc) + return g_strdup("SJIS"); + if (got_euc >= 1) + return g_strdup("EUC-JP"); + + /* check CR code again... */ + if (strstr(buf, "\r")) + return g_strdup("SJIS"); + else + return g_strdup("EUC-JP"); +} + +static gchar *I18n_detect_utf8(const gchar *buf, gint bufsize) +{ + gint i, utf_count; + + utf_count = 0; + for (i = 0; i < bufsize; i++) { + if (IS_UTF8_FIRST_CHAR(buf[i])) { + if (IS_ASCII_CHAR(buf[i + 1])) { + utf_count -= 8; + } else if (IS_UTF8_2BYTE_FIRST_CHAR(buf[i])) { + if (IS_UTF8_NON_FIRST_CHAR(buf[i + 1]) + && (IS_UTF8_FIRST_CHAR(buf[i + 2]) + || IS_ASCII_CHAR(buf[i + 2]))) + utf_count++; + else + utf_count -= 8; + } else if (IS_UTF8_3BYTE_FIRST_CHAR(buf[i])) { + if (IS_UTF8_NON_FIRST_CHAR(buf[i + 1]) + && IS_UTF8_NON_FIRST_CHAR(buf[i + 2]) + && (IS_UTF8_FIRST_CHAR(buf[i + 3]) + || IS_ASCII_CHAR(buf[i + 3]))) + utf_count += 2; + else + utf_count -= 8; + } else if (IS_UTF8_4BYTE_FIRST_CHAR(buf[i]) + && IS_UTF8_NON_FIRST_CHAR(buf[i + 1]) + && IS_UTF8_NON_FIRST_CHAR(buf[i + 2]) + && IS_UTF8_NON_FIRST_CHAR(buf[i + 3]) + && (IS_UTF8_FIRST_CHAR(buf[i + 4]) + || IS_ASCII_CHAR(buf[i + 4]))) + utf_count += 3; + else + utf_count -= 8; + if (utf_count <= -16 || utf_count >= 16) + break; + } + } + if (utf_count >= 9) + return g_strdup("UTF-8"); + return NULL; +} + +gchar *a_I18n_get_charset_from_meta_tag( + const gchar *buf, gint bufsize) +{ + gchar *meta_buf, *meta_tag, *head_end, *meta_charset, *charset = NULL; + gint meta_buf_size, charset_len; + + if (!buf || bufsize < MIN_HEADER_LENGTH) + return NULL; + + /* crate upper string */ + if (bufsize > MAX_HEADER_LENGTH) + meta_buf_size = MAX_HEADER_LENGTH; + else + meta_buf_size = bufsize; + meta_buf = g_strndup(buf, meta_buf_size); + meta_buf[meta_buf_size - 1] = '\0'; + g_strup(meta_buf); + + /* find meta-charset */ + if (!((meta_tag = strstr(meta_buf, "<META ")) + && (meta_tag += sizeof("<META ") - 1) + && (meta_charset = strstr(meta_tag, "CHARSET=")) + && (strstr(meta_tag, "HTTP-EQUIV=\"CONTENT-TYPE") + || strstr(meta_tag, "HTTP-EQUIV=CONTENT-TYPE")))) { + g_free(meta_buf); + return NULL; + } + head_end = strstr(meta_tag, "</HEAD>"); + + /* check HTML code. */ + if (meta_charset > head_end) { + MSG(_("<meta> outside of <head>!\n")); + //g_free(meta_buf); + //return NULL; + } + + meta_charset += sizeof("CHARSET=") - 1; + if (meta_charset[0] == '"' || meta_charset[0] == '\'') + meta_charset++; + charset_len = strpbrk(meta_charset, "\"'/> ") - meta_charset; + if (charset_len > 0) + charset = g_strndup(meta_charset, charset_len); + g_free(meta_buf); + if (charset) + charset = a_I18n_fix_charset(charset); + if (charset && strncmp(charset, "UTF", 3) == 0 + && (strncmp(charset, "UTF16", 5) == 0 + || strncmp(charset, "UTF-16", 6) == 0 + || strncmp(charset, "UTF32", 5) == 0 + || strncmp(charset, "UTF-32", 6) == 0)) + return NULL; + return charset; +} + +/** get encoding charset. + * buf : check target buffer. + * bufsize : buf's size. + * return : charset + */ +gchar *a_I18n_get_encoding(const gchar *buf, gint bufsize) +{ + gchar *charset; + + if (!buf) return NULL; + if (bufsize == 0) return g_strdup(""); + + /* skip ascii char */ + { + gint i, old_bufsize = bufsize; + for (i = 0; i < old_bufsize; i++) { + if (IS_ASCII_CHAR(buf[0]) + && buf[0] != 0x1b) { //for ISO-2022-* detect + buf++; + bufsize--; + } else break; + } + if (bufsize == 0) { + _MSG(_("all ascii code\n")); + return g_strdup("ASCII"); + } + } + + /* Check UTF-8 code. */ + charset = I18n_detect_utf8(buf, bufsize); + if (charset) return charset; + + switch (detect_type) { + case AD_ALL: + /* TODO: implement this! */ + case AD_CHINESE: + return I18n_detect_chinese_charset(buf, bufsize); + case AD_KOREAN: + return I18n_detect_korean_charset(buf, bufsize); + case AD_JAPANESE: + return I18n_detect_japanese_charset(buf, bufsize); + case AD_NONE: + default: + return g_strdup(DW_CHARSET); + } +} + +/* [hack] iconv with error recovery */ +size_t a_I18n_iconv(iconv_t cd, + char **inbuf, size_t *inbytesleft, + char **outbuf, size_t *outbytesleft) +{ + size_t error_count = 0; + + if (iconv(cd, inbuf, inbytesleft, outbuf, outbytesleft) + == (size_t)-1 && errno != EINVAL) { + _MSG(_("unable to fully convert between character encodings\n")); + /* + * This just skips past unconvertable characters, putting white square + * in the output, then retries the conversion. + */ + while ((int)*inbytesleft > 0 && (int)*outbytesleft > 0 + && errno == EILSEQ) { + error_count++; + (*outbuf)[0] = '['; /* white square */ + (*outbuf)[1] = ']'; + *outbuf += 2; + *outbytesleft -= 2; + *inbuf += 2; + *inbytesleft -= 2; + if ((int)*inbytesleft > 0 && (int)*outbytesleft > 0) + iconv(cd, inbuf, inbytesleft, outbuf, outbytesleft); + } + } + *outbuf[0] = '\0'; + return error_count; +} + + +/* Charset Transrate. for the part which gives priority to speed.*/ +gchar *a_I18n_convert_raw(iconv_t *it, const gchar* buf, size_t bufsize) +{ + size_t outLeft, outSize; + gchar *outStart, *in, *out; + + outLeft = bufsize * D_CHAR_GROWTH; + outSize = outLeft + 1; + if (!buf) return NULL; + if (bufsize == 0) return g_strdup(""); + + outStart = (gchar *)g_malloc(outSize); + in = (gchar *)buf; + out = outStart; + + if (!*it || *it==(iconv_t)-1) { + g_warning(_("no support enc\n")); + *it = iconv_open("ASCII", DILLO_CHARSET); + } + a_I18n_iconv(*it, &in, &bufsize, &out, &outLeft); + _MSG("free %d bytes.\n", outSize - outLeft); + return outStart = g_realloc(outStart, outSize - outLeft); +} + +/* Charset Transrate. for simple text or string. + * if buf is nul-terminated, can set bufsize -1 */ +gchar *a_I18n_convert( + const gchar* from, const gchar* to, + const gchar* buf, gint bufsize) +{ + iconv_t it; + gchar *outBuf; + gint len; + + if (!buf) return NULL; + if (bufsize == 0) return g_strdup(""); + g_return_val_if_fail(from && to, g_strndup(buf, bufsize)); + len = (bufsize == -1) ? (gint)strlen(buf) : bufsize; + if (len < 0) { + MSG("a_I18n_convert: bufsize < 0\n"); + return g_strdup(buf); + } + it = iconv_open(to, from); + outBuf = a_I18n_convert_raw(&it, buf, len); + iconv_close(it); + return outBuf; +} + +/* Convert to Toolkit's charset. */ +gchar *a_I18n_DW_CHARSET_from_DILLO_CHARSET(const gchar* buf, gint bufsize) +{ + return a_I18n_convert(DILLO_CHARSET, DW_CHARSET, buf, bufsize); +} + +/* Convert to internal charset. */ +gchar *a_I18n_DW_CHARSET_to_DILLO_CHARSET(const gchar* buf, gint bufsize) +{ + return a_I18n_convert(DW_CHARSET, DILLO_CHARSET, buf, bufsize); +} + +/* For gettext string. */ +gchar *a_I18n_locale_to_DILLO_CHARSET(const gchar* buf) +{ + return a_I18n_convert(LOCALE_CHARSET, DILLO_CHARSET, buf, -1); +} + +/* mblen() only for UTF-8 stream. + * return multibyte char size. */ +gint a_I18n_mblen(gchar *str) +{ + if (IS_UTF8_3BYTE_FIRST_CHAR(str[0])) { + if (IS_UTF8_NON_FIRST_CHAR(str[1])) + if (IS_UTF8_NON_FIRST_CHAR(str[2])) + return 3; + } else if(IS_UTF8_2BYTE_FIRST_CHAR(str[0])) { + if (IS_UTF8_NON_FIRST_CHAR(str[1])) + return 2; + } else if(IS_UTF8_4BYTE_FIRST_CHAR(str[0])) { + if (IS_UTF8_NON_FIRST_CHAR(str[1])) + if (IS_UTF8_NON_FIRST_CHAR(str[2])) + if (IS_UTF8_NON_FIRST_CHAR(str[3])) + return 4; + } + return 0; +} + +/* + * check invalid string, and repair. + */ +gchar *a_I18n_string_check(const gchar *input, const gchar *charset) +{ + gint i, len; + gchar *ret, *str; + GString *out = g_string_new(""); + + /* convert to same charset. + * invalid chars will be replaced to white square. */ + str = a_I18n_convert(charset, charset, input, -1); + len = (str) ? strlen(str) : 0; + + /* skip white square. */ + for(i = 0; i < len; i++) { + if ((guchar)str[i] == '[' && (guchar)str[i+1] == ']') + i++; + else + g_string_append_c(out, str[i]); + } + g_free(str); + ret = out->str; + g_string_free(out, FALSE); + return ret; +} + +/* vim: set ts=3 sw=3 sts=3 expandtab:*/ diff -pruN dillo-0.8.6/src/i18n.h dillo-0.8.6-i18n-misc-20060709/src/i18n.h --- dillo-0.8.6/src/i18n.h 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/i18n.h 2006-05-16 01:21:09.000000000 +0900 @@ -0,0 +1,71 @@ +#ifndef __I18N_H__ +#define __I18N_H__ + +#include <gtk/gtk.h> +#include <stdlib.h> /* for getenv() */ +#include <iconv.h> + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#define IS_ASCII_CHAR(c) (!(((unsigned char)(c)) & 0x80)) + +#define IS_UTF8_FIRST_CHAR(c) ((((unsigned char)(c)) >> 6) == 0x03) +#define IS_UTF8_NON_FIRST_CHAR(c) ((((unsigned char)(c)) >> 6) == 0x02) +#define IS_UTF8_2BYTE_FIRST_CHAR(c) ((((unsigned char)(c)) >> 5) == 0x06) +#define IS_UTF8_3BYTE_FIRST_CHAR(c) ((((unsigned char)(c)) >> 4) == 0x0E) +#define IS_UTF8_4BYTE_FIRST_CHAR(c) ((((unsigned char)(c)) >> 3) == 0x1E) + +#define IS_HANKANA_CHAR(c) \ + (((unsigned char)(c))>=0xa1 && ((unsigned char)(c))<=0xdf) + +#define IS_EUC_CHAR(c) \ +((((unsigned char)(c))>=0xa0 && ((unsigned char)(c))<=0xfe) \ + || ((unsigned char)(c) == 0x8E)) //half width katakana + +#define IS_SJIS_CHAR1(c) \ + ((((unsigned char)(c))>=0x81 && ((unsigned char)(c))<=0x9f) \ + || (((unsigned char)(c))>=0xe0 && ((unsigned char)(c))<=0xef)) +#define IS_SJIS_CHAR2(c) \ + (((unsigned char)(c))>=0x40 && ((unsigned char)(c))<=0xfc) + +#define DILLO_CHARSET "UTF-8" +#define D_CHAR_GROWTH 3 +#define LOCALE_CHARSET (a_I18n_get_DW_charset()) +#define DW_CHARSET LOCALE_CHARSET +#ifndef DISABLE_ANTI_ALIAS + #define RENDER_CHARSET "UTF-8" +#else + #define RENDER_CHARSET DW_CHARSET +#endif + +void a_I18n_detect_DW_locale(); +const gchar *a_I18n_get_DW_charset(); +gboolean a_I18n_has_latin1_charset(gchar *lang); +gboolean a_I18n_use_CJK_charset(gchar *lang); +gchar *a_I18n_get_lang_from_charset(const gchar *charset); +gchar *a_I18n_fix_charset(gchar *charset); +gchar *a_I18n_get_charset_from_meta_tag(const gchar *buf, gint bufsize); +gchar *a_I18n_get_encoding(const gchar *buf, gint bufsize); +size_t a_I18n_iconv(iconv_t cd, + char **inbuf, size_t *inbytesleft, + char **outbuf, size_t *outbytesleft); +gchar *a_I18n_convert_raw(iconv_t *it, const gchar* buf, size_t bufsize); +gchar *a_I18n_convert(const gchar* from, const gchar* to, const gchar* buf, gint bufsize); +gint a_I18n_mblen(gchar *str); +gchar *a_I18n_string_check(const gchar *input, const gchar *charset); +gchar *a_I18n_DW_CHARSET_from_DILLO_CHARSET(const gchar* buf, gint bufsize); +gchar *a_I18n_DW_CHARSET_to_DILLO_CHARSET(const gchar* buf, gint bufsize); +gchar *a_I18n_locale_to_DILLO_CHARSET(const gchar* buf); +#define a_I18n_locale_from_DILLO_CHARSET \ + a_I18n_DW_CHARSET_from_DILLO_CHARSET + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + + +#endif /* __I18N_H__ */ + +/* vim: set ts=3 sw=3 sts=3 expandtab:*/ diff -pruN dillo-0.8.6/src/i18n_gtk.c dillo-0.8.6-i18n-misc-20060709/src/i18n_gtk.c --- dillo-0.8.6/src/i18n_gtk.c 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/i18n_gtk.c 2006-05-16 01:21:09.000000000 +0900 @@ -0,0 +1,128 @@ +/* + * File: i18n_gtk.c + * + * Copyright (C) 2003 Kiyo <kiyo@teki.jpn.ph> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ +/* gtk+ UTF-8 wrapper. */ +#include <string.h> +#include <gtk/gtk.h> +#include "i18n_gtk.h" +#include "i18n.h" + +#ifndef DISABLE_I18N +GtkWidget* a_I18n_gtk_label_new (const gchar *str) { + gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(str, -1); + GtkWidget* widget = gtk_label_new(locale_str); + g_free(locale_str); + return widget; +} + +void a_I18n_gtk_label_set_text(GtkLabel *label, const gchar *str) { + gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(str, -1); + gtk_label_set_text(label, locale_str); + g_free(locale_str); +} + +void a_I18n_gtk_window_set_title(GtkWindow *window, const gchar *title) { + gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(title, -1); + gtk_window_set_title(window, locale_str); + g_free(locale_str); +} + +gchar* a_I18n_gtk_editable_get_chars(GtkEditable *editable, + gint start_pos, gint end_pos) { + gchar *locale_str = gtk_editable_get_chars(editable, start_pos, end_pos); + gchar *utf8_str = a_I18n_locale_to_DILLO_CHARSET(locale_str); + g_free(locale_str); + return utf8_str; +} + +void a_I18n_gtk_editable_insert_text(GtkEditable *editable, + const gchar *new_text, gint new_text_length, + gint *position) { + gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(new_text, + new_text_length); + gtk_editable_insert_text(editable, + locale_str, (!locale_str) ? 0 : strlen(locale_str), position); + g_free(locale_str); +} + +GtkWidget* a_I18n_gtk_radio_menu_item_new_with_label(GSList *group, + const gchar *label) { + gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(label, -1); + GtkWidget* widget = gtk_radio_menu_item_new_with_label(group, locale_str); + g_free(locale_str); + return widget; +} + +GtkWidget* a_I18n_gtk_list_item_new_with_label(const gchar *label) { + gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(label, -1); + GtkWidget* widget = gtk_list_item_new_with_label(locale_str); + g_free(locale_str); + return widget; +} + +void a_I18n_gtk_text_insert(GtkText *text, GdkFont *font, + GdkColor *fore, GdkColor *back, + const char *chars, gint length) { + gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(chars, length); + gtk_text_insert(text, font, fore, back, locale_str, + (!locale_str) ? 0 : strlen(locale_str)); + g_free(locale_str); +} + +GtkWidget* a_I18n_gtk_button_new_with_label(const gchar *label) { + gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(label, -1); + GtkWidget* widget = gtk_button_new_with_label(locale_str); + g_free(locale_str); + return widget; +} + +void a_I18n_gtk_entry_set_text(GtkEntry *entry, const gchar *text) { + gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(text, -1); + gtk_entry_set_text(entry, (locale_str)? locale_str : ""); + g_free(locale_str); +} + +gchar* a_I18n_gtk_entry_get_text(GtkEntry *entry) { + gchar *locale_str = gtk_entry_get_text(entry); + gchar *utf8_str = a_I18n_locale_to_DILLO_CHARSET(locale_str); + return utf8_str; +} + +GtkWidget* a_I18n_gtk_menu_item_new_with_label(const gchar *label) { + gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(label, -1); + GtkWidget* widget = gtk_menu_item_new_with_label(locale_str); + g_free(locale_str); + return widget; +} + +void a_I18n_gdk_draw_string (GdkDrawable *drawable, + GdkFont *font, + GdkGC *gc, + gint x, + gint y, + const gchar *string) { + gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(string, -1); + gdk_draw_string (drawable, font, gc, x, y, locale_str); + g_free(locale_str); +} + +gint a_I18n_gdk_text_width (GdkFont *font, + const gchar *text, gint text_length) { + gchar *locale_str = a_I18n_locale_from_DILLO_CHARSET(text, + text_length); + gint len; + if (!locale_str) return 0; + len = gdk_text_width(font, locale_str, strlen(locale_str)); + g_free(locale_str); + return len; +} + +#endif /* DISABLE_I18n */ + diff -pruN dillo-0.8.6/src/i18n_gtk.h dillo-0.8.6-i18n-misc-20060709/src/i18n_gtk.h --- dillo-0.8.6/src/i18n_gtk.h 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/i18n_gtk.h 2006-05-16 01:21:09.000000000 +0900 @@ -0,0 +1,67 @@ +#ifndef __GTK_I18N__ +#define __GTK_I18N__ + +#include <gtk/gtk.h> + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +//#define DISABLE_I18N +#ifndef DISABLE_I18N + +/* GTK */ +GtkWidget* a_I18n_gtk_label_new (const gchar *str); +void a_I18n_gtk_label_set_text (GtkLabel *label, const gchar *str); +void a_I18n_gtk_window_set_title (GtkWindow *window, const gchar *title); +gchar* a_I18n_gtk_editable_get_chars (GtkEditable *editable, + gint start_pos, gint end_pos); +void a_I18n_gtk_editable_insert_text (GtkEditable *editable, + const gchar *new_text, gint new_text_length, + gint *position); +GtkWidget* a_I18n_gtk_radio_menu_item_new_with_label (GSList *group, + const gchar *label); +GtkWidget* a_I18n_gtk_list_item_new_with_label (const gchar *label); +void a_I18n_gtk_text_insert (GtkText *text, GdkFont *font, + GdkColor *fore, GdkColor *back, + const char *chars, gint length); +GtkWidget* a_I18n_gtk_button_new_with_label (const gchar *label); +void a_I18n_gtk_entry_set_text (GtkEntry *entry, const gchar *text); +gchar* a_I18n_gtk_entry_get_text (GtkEntry *entry); +GtkWidget* a_I18n_gtk_menu_item_new_with_label (const gchar *label); + +/* GDK */ +void a_I18n_gdk_draw_string (GdkDrawable *drawable, + GdkFont *font, + GdkGC *gc, + gint x, + gint y, + const gchar *string); +gint a_I18n_gdk_text_width (GdkFont *font, + const gchar *text, gint text_length); + +#else +#define a_I18n_gtk_label_new gtk_label_new +#define a_I18n_gtk_label_set_text gtk_label_set_text +#define a_I18n_gtk_window_set_title gtk_window_set_title +#define a_I18n_gtk_editable_get_chars gtk_editable_get_chars +#define a_I18n_gtk_editable_insert_text gtk_editable_insert_text +#define a_I18n_gtk_radio_menu_item_new_with_label \ + gtk_radio_menu_item_new_with_label +#define a_I18n_gtk_list_item_new_with_label gtk_list_item_new_with_label +#define a_I18n_gtk_text_insert gtk_text_insert +#define a_I18n_gtk_button_new_with_label gtk_button_new_with_label +#define a_I18n_gtk_entry_set_text gtk_entry_set_text +#define a_I18n_gtk_entry_get_text gtk_entry_get_text +#define a_I18n_gtk_menu_item_new_with_label gtk_menu_item_new_with_label +#define a_I18n_gdk_draw_string gdk_draw_string +#define a_I18n_gdk_text_width gdk_text_width +#endif /* DISABLE_I18n */ + +#define a_I18n_gtk_label_set a_I18n_gtk_label_set_text + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __GTK_I18N__ */ diff -pruN dillo-0.8.6/src/image.c dillo-0.8.6-i18n-misc-20060709/src/image.c --- dillo-0.8.6/src/image.c 2005-10-28 01:20:13.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/image.c 2006-05-16 01:21:09.000000000 +0900 @@ -51,7 +51,7 @@ DilloImage *a_Image_new(gint width, Image->State = IMG_Empty; Image->RefCount = 1; - + return Image; } diff -pruN dillo-0.8.6/src/interface.c dillo-0.8.6-i18n-misc-20060709/src/interface.c --- dillo-0.8.6/src/interface.c 2005-12-02 21:40:44.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/interface.c 2006-07-09 00:46:26.000000000 +0900 @@ -20,18 +20,24 @@ #include <sys/time.h> #include <fcntl.h> +#include "intl.h" #include "msg.h" #include "list.h" #include "misc.h" +#include "i18n.h" +#include "i18n_gtk.h" #include "dillo.h" #include "history.h" #include "nav.h" +#include "doc.h" #include "IO/Url.h" #include "IO/IO.h" #include "interface.h" +#ifndef DISABLE_TABS +#include "tab.h" +#endif /* !DISABLE_TABS */ #include "commands.h" #include "menu.h" -#include "bookmark.h" #include "prefs.h" #include "url.h" #include "capi.h" @@ -52,6 +58,7 @@ #include "debug.h" +void Interface_add_search_dialog(BrowserWindow *bw); /* * Local Data */ @@ -69,6 +76,8 @@ static gchar *open_dialog_last_dirname = /* save dialog last dir */ static gchar *save_dialog_last_dirname = NULL; +/* Keep to close find_text_dialog. */ +static GtkWidget *find_text_window; /* * Initialize global data @@ -83,93 +92,8 @@ void a_Interface_init(void) save_dialog_last_dirname = NULL; } -/* - * Stop all active connections in the browser window (except downloads) - */ -void a_Interface_stop(BrowserWindow *bw) -{ - DEBUG_MSG(3, "a_Interface_stop: hi!\n"); - - /* Remove root clients */ - while ( bw->NumRootClients ) { - a_Cache_stop_client(bw->RootClients[0]); - a_List_remove(bw->RootClients, 0, bw->NumRootClients); - } - /* Remove image clients */ - while ( bw->NumImageClients ) { - a_Cache_stop_client(bw->ImageClients[0]); - a_List_remove(bw->ImageClients, 0, bw->NumImageClients); - } -} - -/* - * Empty RootClients, ImageClients and PageUrls lists and - * reset progress bar data. - */ -void a_Interface_clean(BrowserWindow *bw) -{ - g_return_if_fail ( bw != NULL ); - - while ( bw->NumRootClients ) - a_List_remove(bw->RootClients, 0, bw->NumRootClients); - - while ( bw->NumImageClients ) - a_List_remove(bw->ImageClients, 0, bw->NumImageClients); - - while ( bw->NumPageUrls ) { - a_Url_free(bw->PageUrls[0].Url); - a_List_remove(bw->PageUrls, 0, bw->NumPageUrls); - } - - /* Zero image-progressbar data */ - bw->NumImages = 0; - bw->NumImagesGot = 0; -} - /*=== Browser Window Interface Updating =====================================*/ /* - * Remove the cache-client from the bw list - * (client can be a image or a html page) - */ -void a_Interface_remove_client(BrowserWindow *bw, gint ClientKey) -{ - gint i; - gboolean Found = FALSE; - - for ( i = 0; !Found && i < bw->NumRootClients; ++i) - if ( bw->RootClients[i] == ClientKey ) { - a_List_remove(bw->RootClients, i, bw->NumRootClients); - Found = TRUE; - } - - for ( i = 0; !Found && i < bw->NumImageClients; ++i) - if ( bw->ImageClients[i] == ClientKey ) { - a_List_remove(bw->ImageClients, i, bw->NumImageClients); - bw->NumImagesGot++; - Found = TRUE; - } - - a_Interface_set_button_sens(bw); -} - -/* - * Remove the cache-client from the bw list - * (client can be a image or a html page) - */ -void a_Interface_close_client(BrowserWindow *bw, gint ClientKey) -{ - gchar numstr[32]; - - a_Interface_remove_client(bw, ClientKey); - - /* --Progress bars stuff-- */ - g_snprintf(numstr, 32, "%s%d of %d", PBAR_ISTR(prefs.panel_size == 1), - bw->NumImagesGot, bw->NumImages); - a_Progressbar_update(bw->imgprogress, numstr, - (bw->NumImagesGot == bw->NumImages) ? 0 : 1 ); -} - -/* * Set the sensitivity on back/forw buttons and menu entries. */ static gint Interface_sens_idle_func(BrowserWindow *bw) @@ -177,16 +101,27 @@ static gint Interface_sens_idle_func(Bro gboolean back_sensitive, forw_sensitive, stop_sensitive; /* Stop button */ - stop_sensitive = (bw->NumRootClients > 0); + stop_sensitive = (bw->dd->NumRootClients > 0); gtk_widget_set_sensitive(bw->stop_button, stop_sensitive); + /* Back and Forward buttons */ - back_sensitive = a_Nav_stack_ptr(bw) > 0; + back_sensitive = a_Nav_stack_ptr(bw->dd) > 0; gtk_widget_set_sensitive(bw->back_button, back_sensitive); - forw_sensitive = (a_Nav_stack_ptr(bw) < a_Nav_stack_size(bw) - 1 && - !bw->nav_expecting); + forw_sensitive = (a_Nav_stack_ptr(bw->dd) < a_Nav_stack_size(bw->dd) - 1 && + !bw->dd->nav_expecting); gtk_widget_set_sensitive(bw->forw_button, forw_sensitive); + if(prefs.show_popup_navigation) { + /* adjust popup menu buttons */ + if (GTK_IS_WIDGET(bw->stop_op_menu_button)) + gtk_widget_set_sensitive(bw->stop_op_menu_button, stop_sensitive); + if (GTK_IS_WIDGET(bw->back_op_menu_button)) + gtk_widget_set_sensitive(bw->back_op_menu_button, back_sensitive); + if (GTK_IS_WIDGET(bw->forw_op_menu_button)) + gtk_widget_set_sensitive(bw->forw_op_menu_button, forw_sensitive); + } + bw->sens_idle_id = 0; return FALSE; } @@ -202,85 +137,18 @@ void a_Interface_set_button_sens(Browser } /* - * Add a reference to the cache-client in the browser window's list. - * This helps us keep track of which are active in the window so that it's - * possible to abort them. - * (Root: Flag, whether a Root URL or not) - */ -void a_Interface_add_client(BrowserWindow *bw, gint Key, gint Root) -{ - gint nc; - char numstr[32]; - - g_return_if_fail ( bw != NULL ); - - if ( Root ) { - nc = bw->NumRootClients; - a_List_add(bw->RootClients, nc, bw->MaxRootClients); - bw->RootClients[nc] = Key; - bw->NumRootClients++; - a_Interface_set_button_sens(bw); - } else { - nc = bw->NumImageClients; - a_List_add(bw->ImageClients, nc, bw->MaxImageClients); - bw->ImageClients[nc] = Key; - bw->NumImageClients++; - bw->NumImages++; - a_Interface_set_button_sens(bw); - - /* --Progress bar stuff-- */ - g_snprintf(numstr, 32, "%s%d of %d", PBAR_ISTR(prefs.panel_size == 1), - bw->NumImagesGot, bw->NumImages); - a_Progressbar_update(bw->imgprogress, numstr, 1); - } -} - -/* - * Add an URL to the browser window's list. - * This helps us keep track of page requested URLs so that it's - * possible to stop, abort and reload them.) - * Flags: Chosen from {BW_Root, BW_Image, BW_Download} - */ -void a_Interface_add_url(BrowserWindow *bw, const DilloUrl *Url, gint Flags) -{ - gint nu, i; - gboolean found = FALSE; - - g_return_if_fail ( bw != NULL && Url != NULL ); - - nu = bw->NumPageUrls; - for ( i = 0; i < nu; i++ ) { - if ( !a_Url_cmp(Url, bw->PageUrls[i].Url) ) { - found = TRUE; - break; - } - } - if ( !found ) { - a_List_add(bw->PageUrls, nu, bw->MaxPageUrls); - bw->PageUrls[nu].Url = a_Url_dup(Url); - bw->PageUrls[nu].Flags = Flags; - bw->NumPageUrls++; - } - - /* test: - MSG("Urls:\n"); - for (i = 0; i < bw->NumPageUrls; i++) - MSG("%s\n", bw->PageUrls[i].Url); - MSG("---\n"); - */ -} - -/* - * Remove a single browser window. This includes all its open childs, + * Remove a single browser window. This includes all its open documents, * freeing all resources associated with them, and exiting gtk * if no browser windows are left. */ static gboolean Interface_quit(GtkWidget *widget, BrowserWindow *bw) { gint i; - - /* stop/abort open connections. */ - a_Interface_stop(bw); + a_Interface_findtext_dialog_close(); + /* destroy the container. It should take all its contents with + * it, relying on callbacks to destroy non-widget data + */ + gtk_widget_destroy(GTK_WIDGET(bw->container)); g_slist_free(bw->PanelHandles); @@ -290,14 +158,16 @@ static gboolean Interface_quit(GtkWidget gtk_widget_destroy(bw->openfile_dialog_window); if (bw->quit_dialog_window != NULL) gtk_widget_destroy(bw->quit_dialog_window); - if (bw->findtext_dialog_window != NULL) - gtk_widget_destroy(bw->findtext_dialog_window); + if (bw->findtext_dialog != NULL) + gtk_widget_destroy(bw->findtext_dialog); if (bw->search_dialog_window != NULL) gtk_widget_destroy(bw->search_dialog_window); if (bw->proxy_passwd_dialog_window != NULL) gtk_widget_destroy(bw->proxy_passwd_dialog_window); if (bw->question_dialog_window != NULL) gtk_widget_destroy(bw->question_dialog_window); + if (bw->passwd_dialog_window != NULL) + gtk_widget_destroy(bw->passwd_dialog_window); if (bw->menu_popup.over_page) gtk_widget_destroy(bw->menu_popup.over_page); @@ -310,29 +180,25 @@ static gboolean Interface_quit(GtkWidget gtk_widget_destroy(bw->menu_popup.over_forw); if (bw->menu_popup.over_bug) gtk_widget_destroy(bw->menu_popup.over_bug); +#ifndef DISABLE_TABS + if (bw->menu_popup.over_tab) + gtk_widget_destroy(bw->menu_popup.over_tab); +#endif /* !DISABLE_TABS */ if (bw->menu_popup.url) a_Url_free(bw->menu_popup.url); if (bw->menu_popup.url2) a_Url_free(bw->menu_popup.url2); - + if (bw->sens_idle_id) gtk_idle_remove(bw->sens_idle_id); + for (i = 0; i < num_bw; i++) if (browser_window[i] == bw) { browser_window[i] = browser_window[--num_bw]; break; } - /* free nav_stack and nav_expect stuff */ - a_Nav_free(bw); - - g_free(bw->RootClients); - g_free(bw->ImageClients); - - for (i = 0; i < bw->NumPageUrls; i++) - a_Url_free(bw->PageUrls[i].Url); - g_free(bw->PageUrls); g_free(bw); if (num_bw == 0) @@ -349,7 +215,7 @@ static gboolean Interface_quit(GtkWidget */ static void Interface_entry_clear(GtkEntry *entry) { - gtk_entry_set_text(entry, ""); + a_I18n_gtk_entry_set_text(entry, ""); gtk_widget_grab_focus(GTK_WIDGET(entry)); } @@ -380,13 +246,14 @@ static void Interface_cub_selection_rece _MSG("Interface_cub_selection_received:\n"); if (selection_data->length < 0) { - DEBUG_MSG (1, "Selection retrieval failed\n"); + DEBUG_MSG (1, _("Selection retrieval failed\n")); return; } - - damn_string = g_strndup((gchar *)selection_data->data, + + damn_string = a_I18n_locale_from_DILLO_CHARSET( + (gchar *)selection_data->data, selection_data->length); - gtk_entry_set_text(GTK_ENTRY(bw->location), damn_string); + a_I18n_gtk_entry_set_text(GTK_ENTRY(bw->location), damn_string); gtk_widget_activate(GTK_WIDGET(bw->location)); g_free(damn_string); @@ -453,21 +320,6 @@ static GtkWidget *Interface_toolbox_ext_ } /* - * Set the bw's cursor type - */ -void a_Interface_set_cursor(BrowserWindow *bw, GdkCursorType CursorType) -{ - GdkCursor *cursor; - - if ( bw->CursorType != CursorType ) { - cursor = gdk_cursor_new(CursorType); - gdk_window_set_cursor(bw->docwin->window, cursor); - gdk_cursor_destroy(cursor); - bw->CursorType = CursorType; - } -} - -/* * Connect button's "clicked" event with (key, key_mod) pair. */ static void Interface_set_button_accel(GtkButton *button, @@ -508,8 +360,8 @@ static GtkWidget *Interface_locbar_new(B a_Gtk_ext_button_set_command(GTK_EXT_BUTTON(bw->clear_url_button), 2); gtk_toolbar_append_widget(GTK_TOOLBAR(toolbar_l), bw->clear_url_button, - "Clear the URL box (middle-click to paste an " - "URL).", "Toolbar/Clear"); + _("Clear the URL box (middle-click to paste an " + "URL)."), "Toolbar/Clear"); gtk_signal_connect_object(GTK_OBJECT(bw->clear_url_button), "clicked", GTK_SIGNAL_FUNC (Interface_entry_clear), GTK_OBJECT(bw->location)); @@ -530,7 +382,7 @@ static GtkWidget *Interface_locbar_new(B bw->search_button = gtk_toolbar_append_item( GTK_TOOLBAR(toolbar_r), - NULL, "Search the Web", "Toolbar/New", + NULL, _("Search the Web"), "Toolbar/New", Interface_pixmap_new(bw->main_window, search_xpm), GTK_SIGNAL_FUNC(a_Interface_search_dialog), bw); @@ -562,11 +414,11 @@ static GtkWidget *Interface_toolbar_new( /* back button */ bw->back_button = - Interface_toolbox_ext_button_new(bw->main_window, label ? "Back" : NULL, + Interface_toolbox_ext_button_new(bw->main_window, label ? _("Back") : NULL, s ? s_left_xpm : left_xpm, &label_widget, &icon_widget); gtk_toolbar_append_widget(GTK_TOOLBAR(toolbar), bw->back_button, - "Go to previous page (right-click for menu).", + _("Go to previous page (right-click for menu)."), "Toolbar/Back"); gtk_widget_set_sensitive(bw->back_button, FALSE); Interface_set_button_accel(GTK_BUTTON(bw->back_button), GDK_comma, @@ -595,11 +447,11 @@ static GtkWidget *Interface_toolbar_new( /* forward button */ bw->forw_button = Interface_toolbox_ext_button_new(bw->main_window, - label ? "Forward" : NULL, + label ? _("Forward") : NULL, s ? s_right_xpm : right_xpm, &label_widget, &icon_widget); gtk_toolbar_append_widget(GTK_TOOLBAR(toolbar), bw->forw_button, - "Go to next page (right-click for menu).", + _("Go to next page (right-click for menu)."), "Toolbar/Forward"); gtk_widget_set_sensitive(bw->forw_button, FALSE); Interface_set_button_accel(GTK_BUTTON(bw->forw_button), GDK_period, @@ -624,67 +476,81 @@ static GtkWidget *Interface_toolbar_new( toolbar_child->label = label_widget; /* home button */ - bw->home_button = gtk_toolbar_append_item( - GTK_TOOLBAR(toolbar), - label ? "Home" : NULL, - "Go to the Home page", "Toolbar/Home", - Interface_pixmap_new(bw->main_window, - s ? s_home_xpm : home_xpm), - (GtkSignalFunc) a_Commands_home_callback, bw); - /* - * SG: This had never any effect, was it there for future extensions? - * gtk_signal_connect(GTK_OBJECT(bw->home_button), "button-press-event", - * GTK_SIGNAL_FUNC(a_Commands_navpress_callback), bw); - */ + bw->home_button = + Interface_toolbox_ext_button_new(bw->main_window, + label ? _("Home") : NULL, + s ? s_home_xpm : home_xpm, + &label_widget, &icon_widget); + gtk_toolbar_append_widget(GTK_TOOLBAR(toolbar), bw->home_button, + _("Go to the Home page"), + "Toolbar/Home"); + a_Gtk_ext_button_set_command(GTK_EXT_BUTTON(bw->home_button), 1); + a_Gtk_ext_button_set_command(GTK_EXT_BUTTON(bw->home_button), 2); + gtk_signal_connect(GTK_OBJECT(bw->home_button), "clicked", + GTK_SIGNAL_FUNC(a_Commands_home_callback), (gpointer)bw); + gtk_signal_connect(GTK_OBJECT(bw->home_button), "clicked1", + GTK_SIGNAL_FUNC(a_Commands_home_callback), (gpointer)bw); + gtk_signal_connect(GTK_OBJECT(bw->home_button), "clicked2", + GTK_SIGNAL_FUNC(a_Commands_home_nw_callback), (gpointer)bw); /* reload button */ bw->reload_button = gtk_toolbar_append_item( GTK_TOOLBAR(toolbar), - label ? "Reload" : NULL, - "Reload this page", "Toolbar/Reload", + label ? _("Reload") : NULL, + _("Reload this page"), "Toolbar/Reload", Interface_pixmap_new(bw->main_window, s ? s_reload_xpm : reload_xpm), (GtkSignalFunc) a_Commands_reload_callback, bw); Interface_set_button_accel(GTK_BUTTON(bw->reload_button), GDK_r, GDK_CONTROL_MASK, bw->accel_group); + Interface_set_button_accel(GTK_BUTTON(bw->reload_button), GDK_F5, + 0, bw->accel_group); /* save button */ bw->save_button = gtk_toolbar_append_item( GTK_TOOLBAR(toolbar), - label ? "Save" : NULL, - "Save this page", "Toolbar/Save", + label ? _("Save") : NULL, + _("Save this page"), "Toolbar/Save", Interface_pixmap_new(bw->main_window, s ? s_save_xpm : save_xpm), (GtkSignalFunc) a_Commands_save_callback, bw); /* stop button */ bw->stop_button = gtk_toolbar_append_item( GTK_TOOLBAR(toolbar), - label ? "Stop" : NULL, - "Stop the current transfer", "Toolbar/Stop", + label ? _("Stop") : NULL, + _("Stop the current transfer"), "Toolbar/Stop", Interface_pixmap_new(bw->main_window, s ? s_stop_xpm : stop_xpm), (GtkSignalFunc) a_Commands_stop_callback, bw); gtk_widget_set_sensitive(bw->stop_button, FALSE); + /* + Interface_set_button_accel(GTK_BUTTON(bw->stop_button), GDK_Escape, + 0, bw->accel_group); + */ /* bookmarks button */ - bw->bookmarks_button = gtk_toolbar_append_item( - GTK_TOOLBAR(toolbar), - label ? "Book" : NULL, - "View bookmarks", "Toolbar/Bookmarks", - Interface_pixmap_new(bw->main_window, - s ? s_bm_xpm : bm_xpm), - (GtkSignalFunc) a_Commands_viewbm_callback, bw); + bw->bookmarks_button = + Interface_toolbox_ext_button_new(bw->main_window, + label ? _("Book") : NULL, + s ? s_bm_xpm : bm_xpm, + &label_widget, &icon_widget); + gtk_toolbar_append_widget(GTK_TOOLBAR(toolbar), bw->bookmarks_button, + _("View bookmarks"), + "Toolbar/Bookmarks"); gtk_widget_set_sensitive(bw->bookmarks_button, TRUE); Interface_set_button_accel(GTK_BUTTON(bw->bookmarks_button), GDK_semicolon, 0, bw->accel_group); Interface_set_button_accel(GTK_BUTTON(bw->bookmarks_button), GDK_b, GDK_CONTROL_MASK, bw->accel_group); - /* - * SG: This had never any effect, was it there for future extensions? - * gtk_signal_connect(GTK_OBJECT(bw->bookmarks_button), - * "button-press-event", - * GTK_SIGNAL_FUNC(a_Commands_navpress_callback), bw); - */ + a_Gtk_ext_button_set_command(GTK_EXT_BUTTON(bw->bookmarks_button), 1); + a_Gtk_ext_button_set_command(GTK_EXT_BUTTON(bw->bookmarks_button), 2); + gtk_signal_connect(GTK_OBJECT(bw->bookmarks_button), "clicked", + GTK_SIGNAL_FUNC(a_Commands_viewbm_callback), (gpointer)bw); + gtk_signal_connect(GTK_OBJECT(bw->bookmarks_button), "clicked1", + GTK_SIGNAL_FUNC(a_Commands_viewbm_callback), (gpointer)bw); + gtk_signal_connect(GTK_OBJECT(bw->bookmarks_button), "clicked2", + GTK_SIGNAL_FUNC(a_Commands_viewbm_nw_callback), + (gpointer)bw); gtk_widget_show(toolbar); return toolbar; @@ -712,7 +578,7 @@ static GtkWidget *Interface_progressbox_ * Hide/Unhide this bw's control panels. * toggle: Flag [toggle or set]. */ -static void Interface_toggle_panel(BrowserWindow *bw, gint toggle) +void a_Interface_toggle_panel(BrowserWindow *bw, gint toggle) { if (toggle) bw->fullwindow = !bw->fullwindow; @@ -721,12 +587,16 @@ static void Interface_toggle_panel(Brows g_slist_foreach(bw->PanelHandles, (GFunc)gtk_widget_hide, NULL); gtk_widget_hide(bw->status_box); gtk_widget_show (bw->full_screen_off_button); - gtk_widget_grab_focus(GTK_BIN(bw->docwin)->child); + gtk_widget_grab_focus(GTK_BIN(bw->dd->docwin)->child); } else { g_slist_foreach(bw->PanelHandles, (GFunc)gtk_widget_show, NULL); gtk_widget_show(bw->status_box); gtk_widget_hide (bw->full_screen_off_button); } +#ifndef DISABLE_TABS + a_Tab_visibility_update(bw); +#endif /* !DISABLE_TABS */ + } /* @@ -760,50 +630,7 @@ static void Interface_browser_window_cus gtk_widget_hide(bw->progress_box); bw->fullwindow = prefs.fullwindow_start; - Interface_toggle_panel(bw, FALSE); -} - -static void Interface_full_screen_callback (BrowserWindow *bw) -{ - Interface_toggle_panel(bw, TRUE); -} - -/* - * Handler for double-mouse-clicks that don't belong to the viewport. - */ -static gint Interface_click_callback(BrowserWindow *bw, GdkEventButton *event) -{ - if (event->type == GDK_2BUTTON_PRESS && event->button == 1) - Interface_toggle_panel(bw, TRUE); - return TRUE; -} - -/* - * Handler for key presses that don't belong to the viewport. - * (Used to customize the interface a bit) - */ -static void Interface_key_press_handler(GtkWidget *widget, - GdkEventKey *event, - gpointer client_data) -{ - BrowserWindow *bw = client_data; - - switch (event->keyval) { - case GDK_BackSpace: - /* This key is handled here because GTK accel group ignores it */ - if (event->state & GDK_SHIFT_MASK) - a_Commands_forw_callback(NULL, bw); - else - a_Commands_back_callback(NULL, bw); - break; - case GDK_slash: - /* This key is handled here because GTK accel group ignores it */ - a_Commands_findtext_callback(NULL, bw); - break; - default: - _MSG(">> Key pressed!\n"); - break; - } + a_Interface_toggle_panel(bw, FALSE); } /* @@ -825,7 +652,7 @@ static void Interface_add_full_screen_bu gtk_widget_show (dummy); button = gtk_button_new (); - gtk_tooltips_set_tip (tooltips, button, "Hide Controls", "Show Controls"); + gtk_tooltips_set_tip (tooltips, button, _("Hide Controls"), _("Show Controls")); GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); gtk_widget_show (button); @@ -836,9 +663,13 @@ static void Interface_add_full_screen_bu gtk_signal_connect_object (GTK_OBJECT (button), "clicked", - GTK_SIGNAL_FUNC (Interface_full_screen_callback), (gpointer)bw); + GTK_SIGNAL_FUNC (a_Commands_full_screen_callback), (gpointer)bw); } +/******************* + * browser windows * + *******************/ + /* * Create a new browser window and return it. * (the new window is stored in browser_window[]) @@ -848,6 +679,9 @@ a_Interface_browser_window_new(gint widt { GtkWidget *box1, *hbox, *button, *label, *progbox, *toolbar, *handlebox, *menubar, *locbox, *pixmap; +#ifdef DISABLE_TABS + GtkWidget *box2; +#endif /* DISABLE_TABS */ BrowserWindow *bw; char buf[64]; @@ -856,14 +690,17 @@ a_Interface_browser_window_new(gint widt a_List_add(browser_window, num_bw, num_bw_max); browser_window[num_bw++] = bw; - /* initialize nav_stack struct in browser_window struct */ - a_Nav_init(bw); - if (!xid) bw->main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); else bw->main_window = gtk_plug_new(xid); + /* set tooltips. + * TODO: this is a global, change to browser-window local? + */ + bw->tooltips = tooltips; + gtk_tooltips_enable(bw->tooltips); + gtk_window_set_policy(GTK_WINDOW(bw->main_window), TRUE, TRUE, FALSE); gtk_signal_connect(GTK_OBJECT(bw->main_window), "delete_event", GTK_SIGNAL_FUNC(gtk_object_destroy), bw); @@ -873,6 +710,8 @@ a_Interface_browser_window_new(gint widt gtk_window_set_wmclass(GTK_WINDOW(bw->main_window), "dillo", "Dillo"); + gtk_widget_set_usize(bw->main_window, width, height); + /* -RL :: I must realize the window to see it correctly */ gtk_widget_realize(bw->main_window); @@ -880,10 +719,6 @@ a_Interface_browser_window_new(gint widt bw->accel_group = gtk_accel_group_new(); gtk_window_add_accel_group(GTK_WINDOW(bw->main_window), bw->accel_group); - /* set window title */ - g_snprintf(buf, 64, "Version %s", VERSION); - a_Interface_set_page_title(bw, buf); - box1 = gtk_vbox_new(FALSE, 0); /* setup the control panel */ @@ -912,7 +747,6 @@ a_Interface_browser_window_new(gint widt gtk_widget_show(hbox); gtk_box_pack_start(GTK_BOX(box1), handlebox, FALSE, FALSE, 0); gtk_widget_show(handlebox); - } else if (prefs.panel_size == 2 || prefs.panel_size == 3) { handlebox = gtk_handle_box_new(); bw->PanelHandles = g_slist_append(bw->PanelHandles, handlebox); @@ -969,9 +803,12 @@ a_Interface_browser_window_new(gint widt handlebox = gtk_handle_box_new(); bw->PanelHandles = g_slist_append(bw->PanelHandles, handlebox); + hbox = gtk_hbox_new(FALSE, 0); locbox = Interface_locbar_new(bw); - gtk_container_add(GTK_CONTAINER(handlebox), locbox); + gtk_box_pack_start(GTK_BOX(hbox), locbox, TRUE, TRUE, 0); gtk_widget_show(locbox); + gtk_container_add(GTK_CONTAINER(handlebox), hbox); + gtk_widget_show(hbox); gtk_box_pack_start(GTK_BOX(box1), handlebox, FALSE, FALSE, 0); gtk_widget_show(handlebox); } @@ -979,58 +816,87 @@ a_Interface_browser_window_new(gint widt /* Add box1 */ gtk_container_add(GTK_CONTAINER(bw->main_window), box1); - /* Now the main document window */ - bw->docwin = a_Dw_gtk_scrolled_window_new(); - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(bw->docwin), - GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_box_pack_start(GTK_BOX(box1), bw->docwin, TRUE, TRUE, 0); - gtk_widget_show(bw->docwin); + /* Create the full_screen_off_button. This button is shared between all + * documents in a tabbed browser. On switching tabs it is reparented + * to the new current tab */ + bw->full_screen_off_button = gtk_button_new (); + gtk_button_set_relief (GTK_BUTTON (bw->full_screen_off_button), + GTK_RELIEF_NONE); + gtk_tooltips_set_tip (tooltips, bw->full_screen_off_button, + _("Show Controls"), _("Hide Controls")); + GTK_WIDGET_UNSET_FLAGS (bw->full_screen_off_button, GTK_CAN_FOCUS); + + pixmap = Interface_pixmap_new(bw->main_window, full_screen_off_xpm); + gtk_container_add (GTK_CONTAINER (bw->full_screen_off_button), pixmap); + gtk_widget_show (pixmap); + + gtk_signal_connect_object + (GTK_OBJECT (bw->full_screen_off_button), "clicked", + GTK_SIGNAL_FUNC (a_Commands_full_screen_callback), (gpointer)bw); + +#ifndef DISABLE_TABS + /* add tab browser */ + bw->container = a_Tab_browser_new(bw); + /* Add initial tab*/ + a_Tab_new(bw); +#else + /* add document container */ + bw->dd = a_Doc_new(); + a_Doc_set_browserwindow(bw->dd, bw); + /* add box2, which will contain the docwin and the frameset. + * Usually, only one of these is visible at any time */ + box2 = gtk_hbox_new(TRUE, 0); + gtk_container_set_border_width(GTK_CONTAINER(box2), 0); + gtk_box_pack_start(GTK_BOX(box2), GTK_WIDGET(bw->dd->docwin), TRUE, TRUE, 0); + /* as this is a new document, the frameset will be empty so there + * is no need to pack it in the box */ + gtk_widget_show(box2); + + /* point bw->container at the box containing dd's docwin. + * This ensures that the docwin (and, through its callback, + * the associated DilloDoc) is destroyed when the window is closed */ + bw->container = GTK_CONTAINER(box2); /* todo (GTK2): this call is a bit of a workaround to missing focus * between the location box and the docwin. It's fixed in GTK2: * http://mail.gnome.org/archives/gtk-list/2003-June/msg00307.html */ - gtk_widget_grab_focus(GTK_BIN(bw->docwin)->child); + gtk_widget_grab_focus(GTK_BIN(bw->dd->docwin)->child); +#if 0 /* Full screen mode via double click is done in two ways: First, * a feature of the selection is used, since in complex pages, * getting events back to the viewport is quite difficult. Second, * a simple callback, called e.g. when viewing image resources. */ a_Selection_set_dclick_callback( - GTK_DW_VIEWPORT(GTK_BIN(GTK_BIN(bw->docwin)->child)->child)->selection, - (void(*)(gpointer))Interface_full_screen_callback, bw); + GTK_DW_VIEWPORT(GTK_BIN(GTK_BIN(bw->dd->docwin)->child)->child)->selection, + (void(*)(gpointer))a_Commands_full_screen_callback, bw); /* Selection requires an owner widget */ a_Selection_set_owner( - GTK_DW_VIEWPORT(GTK_BIN(GTK_BIN(bw->docwin)->child)->child)->selection, - GTK_BIN(bw->docwin)->child); + GTK_DW_VIEWPORT(GTK_BIN(GTK_BIN(bw->dd->docwin)->child)->child)->selection, + GTK_BIN(bw->dd->docwin)->child); +#endif - gtk_signal_connect_object_after(GTK_OBJECT(GTK_BIN(bw->docwin)->child), +#if 0 + gtk_signal_connect_object_after(GTK_OBJECT(GTK_BIN(bw->dd->docwin)->child), "button_press_event", - GTK_SIGNAL_FUNC(Interface_click_callback), + GTK_SIGNAL_FUNC(a_Commands_click_callback), (gpointer)bw); +#endif /* full screen button: actually there're two buttons, one in the scrolled * window (fs off) and one in the status bar (fs on). They look as one. */ - bw->full_screen_off_button = gtk_button_new (); - gtk_tooltips_set_tip (tooltips, bw->full_screen_off_button, - "Show Controls", "Hide Controls"); - GTK_WIDGET_UNSET_FLAGS (bw->full_screen_off_button, GTK_CAN_FOCUS); - a_Dw_gtk_scrolled_window_add_gadget (GTK_DW_SCROLLED_WINDOW (bw->docwin), - bw->full_screen_off_button); - pixmap = Interface_pixmap_new(bw->main_window, full_screen_off_xpm); - gtk_container_add (GTK_CONTAINER (bw->full_screen_off_button), pixmap); - gtk_widget_show (pixmap); - gtk_signal_connect_object - (GTK_OBJECT (bw->full_screen_off_button), "clicked", - GTK_SIGNAL_FUNC (Interface_full_screen_callback), (gpointer)bw); + a_Dw_gtk_scrolled_window_add_gadget(GTK_DW_SCROLLED_WINDOW (bw->dd->docwin), + bw->full_screen_off_button); Interface_set_button_accel(GTK_BUTTON(bw->full_screen_off_button), GDK_h, GDK_CONTROL_MASK, bw->accel_group); /* Catch key_press event */ - gtk_signal_connect(GTK_OBJECT(GTK_BIN(bw->docwin)->child), + gtk_signal_connect(GTK_OBJECT(GTK_BIN(bw->dd->docwin)->child), "key_press_event", - GTK_SIGNAL_FUNC(Interface_key_press_handler), bw); - - gtk_widget_set_usize(bw->main_window, width, height); + GTK_SIGNAL_FUNC(a_Commands_key_press_handler), bw); +#endif /* !DISABLE_TABS */ + gtk_box_pack_start(GTK_BOX(box1), GTK_WIDGET(bw->container), TRUE, TRUE, 0); + gtk_widget_show(GTK_WIDGET(bw->container)); /* status widget */ /* create the over-bug-meter menu */ @@ -1060,11 +926,12 @@ a_Interface_browser_window_new(gint widt gtk_container_add (GTK_CONTAINER (button), hbox); gtk_widget_show(hbox); gtk_tooltips_set_tip (tooltips, button, - "Show HTML bugs (right-click for menu).", ""); + _("Show HTML bugs (right-click for menu)."), ""); bw->status_box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(bw->status_box), bw->status, TRUE, TRUE, 2); gtk_widget_show(bw->status); + Interface_add_search_dialog(bw); gtk_box_pack_start(GTK_BOX(bw->status_box), button, FALSE, FALSE, 0); gtk_widget_show(button); @@ -1076,47 +943,15 @@ a_Interface_browser_window_new(gint widt gtk_widget_show(bw->main_window); gtk_widget_show(box1); +#if 0 //already initialize by g_new0(). /* initialize the rest of the bw's data. */ - bw->pagemarks_menuitem = NULL; - bw->pagemarks_menu = NULL; - bw->pagemarks_last = NULL; - bw->viewbugs_menuitem = NULL; - - /* the image menu is created first because it is used by the link menu */ - bw->menu_popup.over_image = a_Menu_popup_oi_new(bw); - bw->menu_popup.over_link = a_Menu_popup_ol_new(bw); - bw->menu_popup.over_page = a_Menu_popup_op_new(bw); - bw->menu_popup.over_back = NULL; - bw->menu_popup.over_forw = NULL; - bw->menu_popup.url = NULL; - bw->menu_popup.url2 = NULL; - - bw->redirect_level = 0; - bw->sens_idle_id = 0; - - bw->CursorType = -1; - - bw->RootClients = NULL; - bw->NumRootClients = 0; - bw->MaxRootClients = 8; - - bw->ImageClients = NULL; - bw->NumImageClients = 0; - bw->MaxImageClients = 8; - bw->NumImages = 0; - bw->NumImagesGot = 0; - - bw->PageUrls = NULL; - bw->NumPageUrls = 0; - bw->MaxPageUrls = 8; - bw->open_dialog_window = NULL; bw->open_dialog_entry = NULL; bw->openfile_dialog_window = NULL; bw->quit_dialog_window = NULL; bw->save_dialog_window = NULL; bw->save_link_dialog_window = NULL; - bw->findtext_dialog_window = NULL; + bw->findtext_dialog = NULL; bw->findtext_dialog_check = NULL; bw->findtext_dialog_entry = NULL; bw->search_dialog_window = NULL; @@ -1125,15 +960,61 @@ a_Interface_browser_window_new(gint widt bw->proxy_passwd_dialog_entry = NULL; bw->question_dialog_window = NULL; bw->question_dialog_data = NULL; + bw->passwd_dialog_window = NULL; + bw->passwd_dialog_uentry = NULL; + bw->passwd_dialog_pentry = NULL; bw->viewsource_window = NULL; bw->pagebugs_window = NULL; + bw->pagemarks_menuitem = NULL; + bw->viewbugs_menuitem = NULL; + bw->frame_menuitem = NULL; + bw->frameset_menuitem = NULL; + bw->menu_popup.over_frame = NULL; + bw->back_op_menu_button = NULL; + bw->forw_op_menu_button = NULL; + bw->stop_op_menu_button = NULL; +#endif + /* the image menu is created first because it is used by the link menu */ + bw->menu_popup.over_image = a_Menu_popup_oi_new(bw); + bw->menu_popup.over_page = a_Menu_popup_op_new(bw); + bw->menu_popup.over_link = a_Menu_popup_ol_new(bw); +#if 0 //already initialize by g_new0(). + bw->menu_popup.over_back = NULL; + bw->menu_popup.over_forw = NULL; + +#ifndef DISABLE_TABS + bw->menu_popup.over_tab = NULL; +#endif /* !DISABLE_TABS */ + bw->menu_popup.url = NULL; + bw->menu_popup.url2 = NULL; +#endif + + + bw->found = FALSE; + bw->dd_list = NULL; + bw->dd_list_index = 0; + + bw->sens_idle_id = 0; + + /* set focus to location bar */ + if(prefs.focus_location_on_new) + gtk_widget_grab_focus(bw->location); + else + gtk_widget_grab_focus(GTK_BIN(bw->dd->docwin)->child); + + /* set document (and window) title */ + g_snprintf(buf, 64, "Version %s", VERSION); + a_Doc_title_set(bw->dd, buf); + /* now that the bw is made, let's customize it.. */ Interface_browser_window_customize(bw); return bw; } + + /* * Set the title of the browser window to start with "Dillo: " * prepended to it. @@ -1146,7 +1027,7 @@ void a_Interface_set_page_title(BrowserW buf = g_string_new(""); g_string_sprintfa(buf, "Dillo: %s", title); - gtk_window_set_title(GTK_WINDOW(bw->main_window), buf->str); + a_I18n_gtk_window_set_title(GTK_WINDOW(bw->main_window), buf->str); g_string_free(buf, TRUE); } @@ -1155,7 +1036,7 @@ void a_Interface_set_page_title(BrowserW */ void a_Interface_set_location_text(BrowserWindow *bw, char *text) { - gtk_entry_set_text(GTK_ENTRY(bw->location), text); + a_I18n_gtk_entry_set_text(GTK_ENTRY(bw->location), text); } /* @@ -1163,7 +1044,7 @@ void a_Interface_set_location_text(Brows */ gchar *a_Interface_get_location_text(BrowserWindow *bw) { - return gtk_entry_get_text(GTK_ENTRY(bw->location)); + return a_I18n_gtk_entry_get_text(GTK_ENTRY(bw->location)); } /* @@ -1181,13 +1062,16 @@ void a_Interface_reset_progress_bars(Bro void a_Interface_msg(BrowserWindow *bw, const char *format, ... ) { static char msg[1024]; + char *msg_fix; va_list argp; if ( bw ) { va_start(argp, format); g_vsnprintf(msg, 1024, format, argp); va_end(argp); - gtk_label_set_text(GTK_LABEL(bw->status), msg); + msg_fix = a_I18n_string_check(msg, DILLO_CHARSET); + a_I18n_gtk_label_set_text(GTK_LABEL(bw->status), msg_fix); + g_free(msg_fix); bw->status_is_link = 0; } } @@ -1255,7 +1139,7 @@ void a_Interface_quit_all(void) gtk_widget_destroy(bws[i]->main_window); g_free(bws); - + g_free(open_dialog_last_dirname); g_free(save_dialog_last_dirname); } @@ -1312,7 +1196,7 @@ static void Cfn = (s = a_Misc_escape_chars(fn, "% ")) ? s : fn; g_string_sprintf(UrlStr, "file:%s", Cfn); url = a_Url_new(UrlStr->str, NULL, 0, 0, 0); - a_Nav_push(bw, url); + a_Nav_push(bw->dd, url); a_Url_free(url); g_string_free(UrlStr, TRUE); g_free(s); @@ -1330,10 +1214,12 @@ static void */ static gchar *Interface_make_search_url(const gchar *str) { - gchar *keys = a_Url_encode_hex_str(str), *c = prefs.search_url; + gchar *enc_str = a_I18n_convert(DILLO_CHARSET, prefs.search_charset, str, -1); + gchar *keys = a_Url_encode_hex_str(enc_str), *c = prefs.search_url; GString *newstr = g_string_sized_new(strlen(c)+strlen(keys)); gchar *search_url; + g_free(enc_str); for (; *c; c++) if (*c == '%') switch(*++c) { @@ -1342,9 +1228,9 @@ static gchar *Interface_make_search_url( case '%': g_string_append_c(newstr, '%'); break;; case 0: - MSG("Warning: search_url ends with '%%'\n"); c--; break;; + MSG(_("Warning: search_url ends with '%%'\n")); c--; break;; default: - MSG("Warning: illegal specifier '%%%c' in search_url\n", *c); + MSG(_("Warning: illegal specifier '%%%c' in search_url\n"), *c); } else g_string_append_c(newstr, *c); @@ -1372,14 +1258,14 @@ static void Interface_open_url_string(gc url = a_Url_new(new_text, NULL, 0, 0, 0); if (url) { - a_Nav_push(bw, url); + a_Nav_push(bw->dd, url); a_Url_free(url); } g_free(new_text); } /* let the rendered area have focus */ - gtk_widget_grab_focus(GTK_BIN(bw->docwin)->child); + gtk_widget_grab_focus(GTK_BIN(bw->dd->docwin)->child); } /* @@ -1409,7 +1295,7 @@ void a_Interface_openfile_dialog(Browser if (!bw->openfile_dialog_window) { Interface_make_choose_file_dialog( &(bw->openfile_dialog_window), - "openfile_dialog", "Dillo", "Dillo: Open File", + "openfile_dialog", "Dillo", _("Dillo: Open File"), (GtkSignalFunc) Interface_openfile_ok_callback, (void *)bw); } @@ -1485,7 +1371,7 @@ static void (GtkSignalFunc) gtk_widget_grab_default, GTK_OBJECT(button)); - button = gtk_button_new_with_label("Clear"); + button = gtk_button_new_with_label(_("Clear")); gtk_signal_connect_object(GTK_OBJECT(button), "clicked", (GtkSignalFunc) Interface_entry_clear, GTK_OBJECT(entry)); @@ -1493,7 +1379,7 @@ static void gtk_box_pack_start(GTK_BOX(box2), button, FALSE, TRUE, 0); gtk_widget_show(button); - button = gtk_button_new_with_label("Cancel"); + button = gtk_button_new_with_label(_("Cancel")); gtk_signal_connect_object(GTK_OBJECT(button), "clicked", (GtkSignalFunc) gtk_widget_destroy, GTK_OBJECT(*DialogWindow)); @@ -1522,7 +1408,7 @@ static void Interface_question_dialog_se * (0 means the window was cancelled, and 1 to 5 the respective alternatives) */ static void Interface_make_question_dialog( - BrowserWindow *bw, + DilloDoc *dd, GtkWidget **DialogWindow, char *WmName, char *WmClass, char *WTitle, char *Question, gint modal_flag, char *alt1, char *alt2, char *alt3, char *alt4, char *alt5, @@ -1540,7 +1426,7 @@ static void Interface_make_question_dial gtk_window_set_modal(GTK_WINDOW(*DialogWindow), modal_flag); /* attach AnswerCallback to "destroy" so appropriate actions can be taken */ gtk_signal_connect_object(GTK_OBJECT(*DialogWindow), "destroy", - (GtkSignalFunc) AnswerCallback, (gpointer)bw); + (GtkSignalFunc) AnswerCallback, (gpointer)dd); gtk_signal_connect(GTK_OBJECT(*DialogWindow), "destroy", (GtkSignalFunc) Interface_destroy_window, DialogWindow); @@ -1559,7 +1445,7 @@ static void Interface_make_question_dial * (it looks clumsy, but provides a handy interface for the caller) */ answer = g_new(DialogAnswer, 6); for (i = 0; i < 6; ++i) { - answer[i].bw = bw; + answer[i].bw = dd->bw; answer[i].alt_num = i; answer[i].this = answer; } @@ -1567,7 +1453,7 @@ static void Interface_make_question_dial answer[2].alt_str = alt2; answer[3].alt_str = alt3; answer[4].alt_str = alt4; answer[5].alt_str = alt5; /* Set the default answer */ - bw->question_dialog_answer = &answer[0]; + dd->bw->question_dialog_answer = &answer[0]; /* pack the alternatives */ box2 = gtk_hbox_new(TRUE, 5); @@ -1592,23 +1478,117 @@ static void Interface_make_question_dial } /* + * Make a password-dialog with two entries, OK and Cancel. + */ +void Interface_make_passwd_dialog( + GtkWidget **DialogWindow, char *WmName, char *WmClass, + char *WTitle, char *Context, + GtkWidget **passwd_dialog_uentry, + GtkWidget **passwd_dialog_pentry, + GtkSignalFunc OkCallback, void *OkCbData, + GtkSignalFunc CancelCallback, void *CancelCbData) +{ + GtkWidget *label, + *label_user, + *label_pass, + *button, + *box_l, + *box_u, + *box_p, + *box_b; + + *DialogWindow = gtk_window_new(GTK_WINDOW_DIALOG); + gtk_window_set_wmclass(GTK_WINDOW(*DialogWindow), WmName, WmClass); + gtk_window_set_title(GTK_WINDOW(*DialogWindow), WTitle); + gtk_container_border_width(GTK_CONTAINER(*DialogWindow), 10); + gtk_signal_connect(GTK_OBJECT(*DialogWindow), "destroy", + (GtkSignalFunc) Interface_destroy_window, DialogWindow); + + box_l = gtk_vbox_new(FALSE, 5); + label = gtk_label_new(Context); + gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_FILL); + gtk_box_pack_start(GTK_BOX(box_l), label, FALSE, FALSE, 0); + gtk_widget_show(label); + box_u = gtk_hbox_new(FALSE, 5); + label_user = gtk_label_new(_("User Name:")); + gtk_box_pack_start(GTK_BOX(box_u), label_user, FALSE, FALSE, 0); + gtk_widget_show(label_user); + *passwd_dialog_uentry=gtk_entry_new(); + gtk_box_pack_start(GTK_BOX(box_u),*passwd_dialog_uentry, TRUE, TRUE, 0); + gtk_widget_show(*passwd_dialog_uentry); + box_p = gtk_hbox_new(FALSE, 5); + label_pass = gtk_label_new(_("Password:")); + gtk_box_pack_start(GTK_BOX(box_p), label_pass, FALSE, FALSE, 0); + gtk_widget_show(label_pass); + *passwd_dialog_pentry=gtk_entry_new(); + gtk_entry_set_visibility(GTK_ENTRY(*passwd_dialog_pentry), FALSE); + gtk_box_pack_start(GTK_BOX(box_p),*passwd_dialog_pentry, TRUE, TRUE, 0); + gtk_widget_show(*passwd_dialog_pentry); + + box_b = gtk_hbox_new(TRUE, 5); + button = gtk_button_new_with_label(_("OK")); + gtk_signal_connect_object(GTK_OBJECT(button), "clicked", + OkCallback, OkCbData); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) Interface_destroy_window, DialogWindow); + gtk_widget_show(button); + gtk_box_pack_start(GTK_BOX(box_b), button, FALSE, TRUE, 0); + button = gtk_button_new_with_label(_("Cancel")); + gtk_signal_connect_object(GTK_OBJECT(button), "clicked", + CancelCallback, CancelCbData); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) Interface_destroy_window, DialogWindow); + gtk_widget_show(button); + gtk_box_pack_start(GTK_BOX(box_b), button, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(box_l), box_u, TRUE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(box_l), box_p, TRUE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(box_l), box_b, TRUE, FALSE, 0); + gtk_container_add(GTK_CONTAINER(*DialogWindow), box_l); + + gtk_widget_show(box_b); + gtk_widget_show(box_p); + gtk_widget_show(box_u); + gtk_widget_show(box_l); + gtk_widget_grab_focus(GTK_WIDGET(*passwd_dialog_uentry)); + gtk_widget_show(*DialogWindow); +} + +/* + * Create and show a user/passwd dialog + */ +void a_Interface_passwd_dialog( + BrowserWindow *bw, gchar *Context, + GtkSignalFunc OkCallback, void *OkCbData, + GtkSignalFunc CancelCallback, void *CancelCbData) +{ + if (!bw->passwd_dialog_window) { + Interface_make_passwd_dialog(&(bw->passwd_dialog_window), + "passwd_dialog", "Dillo", _("Dillo: Enter Authentication"), Context, + &(bw->passwd_dialog_uentry), &(bw->passwd_dialog_pentry), + OkCallback, OkCbData, CancelCallback, CancelCbData); + } else { + gtk_widget_destroy(bw->passwd_dialog_window); + } +} + +/* * Create and show an [OK|Cancel] question dialog */ void a_Interface_question_dialog( - BrowserWindow *bw, gchar *QuestionTxt, gint modal_flag, + DilloDoc *dd, gchar *QuestionTxt, gint modal_flag, char *alt1, char *alt2, char *alt3, char *alt4, char *alt5, GtkSignalFunc AnswerCallback) { - if (!bw->question_dialog_window) { + if (!dd->bw->question_dialog_window) { Interface_make_question_dialog( - bw, - &(bw->question_dialog_window), "question_dialog", "Dillo", - "Dillo: Question", QuestionTxt, modal_flag, + dd, + &(dd->bw->question_dialog_window), "question_dialog", "Dillo", + _("Dillo: Question"), QuestionTxt, modal_flag, alt1, alt2, alt3, alt4, alt5, AnswerCallback); } else { /* should not reach here */ - gtk_widget_destroy(bw->question_dialog_window); + gtk_widget_destroy(dd->bw->question_dialog_window); } } @@ -1619,9 +1599,9 @@ void a_Interface_open_dialog(GtkWidget * { if (!bw->open_dialog_window) { Interface_make_dialog(&(bw->open_dialog_window), - "open_dialog", "Dillo", "Dillo: Open URL", + "open_dialog", "Dillo", _("Dillo: Open URL"), &(bw->open_dialog_entry), "", 1, NULL, NULL, - "OK", (GtkSignalFunc) a_Interface_entry_open_url, (void *)bw); + _("OK"), (GtkSignalFunc) a_Interface_entry_open_url, (void *)bw); if (prefs.transient_dialogs) gtk_window_set_transient_for(GTK_WINDOW(bw->open_dialog_window), GTK_WINDOW(bw->main_window)); @@ -1643,11 +1623,13 @@ static void Interface_save_callback(int if ( Op ){ struct stat st; + gchar *msg_enc = a_I18n_locale_to_DILLO_CHARSET(_("File saved (%d Bytes)")); fflush(Web->stream); fstat(fileno(Web->stream), &st); fclose(Web->stream); - a_Interface_msg(Web->bw, "File saved (%d Bytes)", st.st_size); + a_Interface_msg(Web->dd->bw, msg_enc, st.st_size); + g_free(msg_enc); } else { if ( (Bytes = Client->BufSize - Web->SavedBytes) > 0 ) { Bytes = fwrite(Client->Buf + Web->SavedBytes, 1, Bytes, Web->stream); @@ -1670,11 +1652,11 @@ static void Interface_file_save_url(GtkW choosefile = GTK_FILE_SELECTION(bw->save_dialog_window); entry_url = GTK_ENTRY(bw->location); name = gtk_file_selection_get_filename(choosefile); - url = a_Url_dup(a_History_get_url(NAV_TOP(bw))); + url = a_Url_dup(a_History_get_url(NAV_TOP(bw->dd))); if ( strlen(name) && (out = fopen(name, "w")) != NULL ) { DilloWeb *Web = a_Web_new(url); - Web->bw = bw; + Web->dd = bw->dd; Web->stream = out; Web->flags |= WEB_Download; /* todo: keep track of this client */ @@ -1710,20 +1692,20 @@ static void Interface_file_save_link(Gtk /* Not cached, ask the downloads server to get it */ cmd = a_Dpip_build_cmd("cmd=%s url=%s destination=%s", "download", URL_STR(url), name); - a_Capi_dpi_send_cmd(NULL, bw, cmd, "downloads", 1); + a_Capi_dpi_send_cmd(NULL, bw->dd, cmd, "downloads", 1); g_free(cmd); } else { /* Cached! Save from the cache */ if ( strlen(name) && (out = fopen(name, "w")) != NULL ) { DilloWeb *Web = a_Web_new(url); - Web->bw = bw; + Web->dd = bw->dd; Web->stream = out; Web->flags |= WEB_Download; /* todo: keep track of this client */ a_Capi_open_url(Web, Interface_save_callback, Web); } else - g_printerr("Error trying to save: %s\n", name); + g_printerr(_("Error trying to save: %s\n"), name); } gtk_widget_destroy(bw->save_link_dialog_window); @@ -1776,7 +1758,7 @@ void a_Interface_save_dialog(GtkWidget * if (!bw->save_dialog_window) { Interface_make_choose_file_dialog( &bw->save_dialog_window, - "save_dialog", "Dillo", "Dillo: Save URL as File...", + "save_dialog", "Dillo", _("Dillo: Save URL as File..."), (GtkSignalFunc) Interface_file_save_url, (void *)bw ); } url = a_Url_new(a_Interface_get_location_text(bw), NULL, 0, 0, 0); @@ -1803,7 +1785,7 @@ void a_Interface_save_link_dialog(GtkWid Interface_make_choose_file_dialog( &bw->save_link_dialog_window, "save_link_dialog", "Dillo", - "Dillo: Save link as File...", + _("Dillo: Save link as File..."), (GtkSignalFunc) Interface_file_save_link, (void *)bw); } @@ -1834,55 +1816,189 @@ static void Interface_entry_search(GtkWi { char *string; gboolean case_sens; + DilloDoc *dd; - string = gtk_editable_get_chars(GTK_EDITABLE(bw->findtext_dialog_entry), - 0, -1); + string = a_I18n_gtk_editable_get_chars(GTK_EDITABLE(bw->findtext_dialog_entry), + 0, -1); + if (!string || strlen(string) == 0) return; case_sens = gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON(bw->findtext_dialog_check)); - switch(a_Dw_gtk_scrolled_window_search(GTK_DW_SCROLLED_WINDOW(bw->docwin), - string, case_sens)) { + (GTK_TOGGLE_BUTTON(bw->findtext_dialog_check)); + + /* get the document to search from dd_list */ + dd = g_list_nth_data(bw->dd_list, bw->dd_list_index); + if (!dd) return; + + switch(a_Dw_gtk_scrolled_window_search(GTK_DW_SCROLLED_WINDOW(dd->docwin), + string, case_sens)) { case FINDTEXT_RESTART: - a_Interface_message_window("Dillo: Find text", - "No further occurence of \"%s\". " - "Restarting from the beginning.", string); - break; case FINDTEXT_NOT_FOUND: - a_Interface_message_window("Dillo: Find text", - "Cannot find \"%s\".", string); - break; + a_Dw_gtk_scrolled_window_reset_search((void *) dd->docwin); + if(++(bw->dd_list_index) < g_list_length(bw->dd_list)) { + /* recursively repeat search in next document */ + Interface_entry_search(widget, bw); + } else { + if (!bw->found) { + if (prefs.popup_dialogs) { + gchar *title, *msg; + title = a_I18n_locale_to_DILLO_CHARSET(_("Dillo: Find text")); + msg = a_I18n_locale_to_DILLO_CHARSET(_("Cannot find \"%s\".")); + a_Interface_message_window(title, msg, string); + g_free(title); + g_free(msg); + } else { + gchar *format; + format = a_I18n_locale_to_DILLO_CHARSET(_("Cannot find \"%s\".")); + a_Interface_msg(bw, format, string); + g_free(format); + } + } else { + if (prefs.popup_dialogs) { + gchar *title, *msg; + title = a_I18n_locale_to_DILLO_CHARSET(_("Dillo: Find text")); + msg = a_I18n_locale_to_DILLO_CHARSET(_("No further occurence of \"%s\". " + "Restarting from the beginning.")); + a_Interface_message_window(title, msg, string); + g_free(title); + g_free(msg); + } else { + gchar *format; + format = a_I18n_locale_to_DILLO_CHARSET( + _("(Find) \"%s\": restart from beginning")); + a_Interface_msg(bw, format, string); + g_free(format); + } + } + bw->found = FALSE; + bw->dd_list_index = 0; + } + break; + case FINDTEXT_SUCCESS: + bw->found = TRUE; + if (!prefs.popup_dialogs) { + gchar *format; + format = a_I18n_locale_to_DILLO_CHARSET(_("(Find) \"%s\"")); + a_Interface_msg(bw, format, string); + g_free(format); + } + break; + default: + _MSG(_("Unexpected return from a_Dw_gtk_scrolled_window_search()\n")); + break; } + g_free(string); } /* + * Callback for findtext destroy, resets search and destroys dd_list + */ +void a_Interface_findtext_dialog_destroy(BrowserWindow *bw) +{ + DilloDoc *dd = NULL; + + if (!find_text_window) return; + dd = g_list_nth_data(bw->dd_list, bw->dd_list_index); + /* reset the search */ + a_Dw_gtk_scrolled_window_reset_search((void *) dd->docwin); + /* destroy the list */ + g_list_free(bw->dd_list); + bw->dd_list = NULL; + bw->dd_list_index = 0; + bw->found = FALSE; + find_text_window = NULL; + if (!prefs.popup_dialogs) + a_Interface_msg(bw, ""); + gtk_widget_grab_focus(GTK_WIDGET(GTK_BIN(bw->dd->docwin)->child)); +} + +/* + * Close the dialog interface for finding text in a page + */ +void a_Interface_findtext_dialog_close(){ + if (!find_text_window) return; + if (prefs.popup_dialogs) + gtk_widget_destroy(find_text_window); + else { + gtk_widget_hide(find_text_window); + } +} + +void Interface_add_search_dialog(BrowserWindow *bw) +{ + if (prefs.popup_dialogs) return; + if (bw->findtext_dialog) return; + bw->findtext_dialog = gtk_hbox_new(FALSE, 0); + bw->findtext_dialog_entry = gtk_entry_new(); + bw->findtext_dialog_check = gtk_check_button_new_with_label("aA"); + gtk_widget_set_usize(bw->findtext_dialog, 100, 0); + gtk_widget_show(bw->findtext_dialog_entry); + gtk_widget_show(bw->findtext_dialog_check); + gtk_tooltips_set_tip(tooltips, bw->findtext_dialog_entry, + _("press <Enter> to (repeat) search, <Esc> to close search"), + _("Search")); + gtk_tooltips_set_tip(tooltips, bw->findtext_dialog_check, + _("Case sensitive"), + _("Case sensitive")); + gtk_box_pack_start(GTK_BOX(bw->findtext_dialog), + bw->findtext_dialog_check, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(bw->findtext_dialog), + bw->findtext_dialog_entry, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(bw->status_box), + bw->findtext_dialog, TRUE, TRUE, 2); + gtk_signal_connect(GTK_OBJECT(bw->findtext_dialog_entry), "activate", + Interface_entry_search, (void *) bw); + gtk_signal_connect_object + (GTK_OBJECT(bw->findtext_dialog), "hide", + (GtkSignalFunc) a_Interface_findtext_dialog_destroy, + (void*) bw); + gtk_widget_add_accelerator(bw->findtext_dialog, "hide", + bw->accel_group, GDK_Escape, 0, 0); +} + +/* * Show the dialog interface for finding text in a page */ void a_Interface_findtext_dialog(BrowserWindow *bw) { - if (!bw->findtext_dialog_window) { - Interface_make_dialog(&(bw->findtext_dialog_window), - "findtext_dialog", "Dillo", "Dillo: Find text in page", - &(bw->findtext_dialog_entry), "", 1, - &(bw->findtext_dialog_check), "Case sensitive", - "Find", (GtkSignalFunc) Interface_entry_search, (void *)bw); - if (prefs.transient_dialogs) - gtk_window_set_transient_for(GTK_WINDOW(bw->findtext_dialog_window), - GTK_WINDOW(bw->main_window)); - gtk_signal_connect_object - (GTK_OBJECT(bw->findtext_dialog_window), "destroy", - (GtkSignalFunc) a_Dw_gtk_scrolled_window_reset_search, - (void*)bw->docwin); - gtk_window_set_position(GTK_WINDOW(bw->findtext_dialog_window), - GTK_WIN_POS_NONE); - } + /* make search list if it has not been defined yet */ + if(bw->dd_list == NULL) + bw->dd_list = a_Doc_get_visible_children(bw->dd); + bw->dd_list_index = 0; + /* reset found state */ + bw->found = FALSE; + + /* does the user want popup windows? */ + if (prefs.popup_dialogs) { + /* YES: create search dialog popup */ + if (!bw->findtext_dialog) { + Interface_make_dialog(&(bw->findtext_dialog), + "findtext_dialog", "Dillo", _("Dillo: Find text in page"), + &(bw->findtext_dialog_entry), "", 1, + &(bw->findtext_dialog_check), _("Case sensitive"), + _("Find"), (GtkSignalFunc) Interface_entry_search, (void *)bw); + if (prefs.transient_dialogs) + gtk_window_set_transient_for(GTK_WINDOW(bw->findtext_dialog), + GTK_WINDOW(bw->main_window)); + gtk_signal_connect_object + (GTK_OBJECT(bw->findtext_dialog), "destroy", + (GtkSignalFunc) a_Interface_findtext_dialog_destroy, + (void*) bw); + gtk_window_set_position(GTK_WINDOW(bw->findtext_dialog), + GTK_WIN_POS_NONE); + } - a_Interface_set_nice_window_pos(bw->findtext_dialog_window, - bw->main_window); + a_Interface_set_nice_window_pos(bw->findtext_dialog, + bw->main_window); - if (!GTK_WIDGET_VISIBLE(bw->findtext_dialog_window)) - gtk_widget_show(bw->findtext_dialog_window); - else - gdk_window_raise(bw->findtext_dialog_window->window); + if (!GTK_WIDGET_VISIBLE(bw->findtext_dialog)) + gtk_widget_show(bw->findtext_dialog); + else + gdk_window_raise(bw->findtext_dialog->window); + } else { + gtk_widget_show(bw->findtext_dialog); + gtk_widget_grab_focus(bw->findtext_dialog_entry); + } + find_text_window = bw->findtext_dialog; } /* @@ -1892,7 +2008,7 @@ static void Interface_search_callback(Gt { gchar *keyw, *url_str; - keyw = gtk_editable_get_chars(GTK_EDITABLE(bw->search_dialog_entry), 0, -1); + keyw = a_I18n_gtk_editable_get_chars(GTK_EDITABLE(bw->search_dialog_entry), 0, -1); if (keyw) { url_str = Interface_make_search_url(keyw); Interface_open_url_string(url_str, bw); @@ -1910,9 +2026,9 @@ void a_Interface_search_dialog(GtkWidget { if (!bw->search_dialog_window) { Interface_make_dialog(&(bw->search_dialog_window), - "search_dialog", "Dillo", "Dillo: Search the Web", + "search_dialog", _("Dillo"), _("Dillo: Search the Web"), &(bw->search_dialog_entry), "", 1, NULL, NULL, - "Search", (GtkSignalFunc)Interface_search_callback, (void *)bw); + _("Search"), (GtkSignalFunc)Interface_search_callback, (void *)bw); if (prefs.transient_dialogs) gtk_window_set_transient_for(GTK_WINDOW(bw->search_dialog_window), GTK_WINDOW(bw->main_window)); @@ -1931,7 +2047,7 @@ static void Interface_entry_proxy_passwd { gchar *text; - text = gtk_editable_get_chars(GTK_EDITABLE(bw->proxy_passwd_dialog_entry), + text = a_I18n_gtk_editable_get_chars(GTK_EDITABLE(bw->proxy_passwd_dialog_entry), 0, -1); a_Http_set_proxy_passwd(text); g_free(text); @@ -1947,14 +2063,14 @@ void a_Interface_proxy_passwd_dialog(Bro { GString *buf = g_string_new(""); - g_string_sprintf(buf, "Dillo: Enter proxy password for '%s'", + g_string_sprintf(buf, _("Dillo: Enter proxy password for '%s'"), prefs.http_proxyuser); if (!bw->proxy_passwd_dialog_window) { Interface_make_dialog(&(bw->proxy_passwd_dialog_window), "proxy_passwd_dialog", "Dillo", buf->str, &(bw->proxy_passwd_dialog_entry), "", 0, NULL, NULL, - "OK", (GtkSignalFunc)Interface_entry_proxy_passwd, (void *)bw); + _("OK"), (GtkSignalFunc)Interface_entry_proxy_passwd, (void *)bw); if (prefs.transient_dialogs) gtk_window_set_transient_for( GTK_WINDOW(bw->proxy_passwd_dialog_window), @@ -2011,7 +2127,7 @@ void a_Interface_message_window(const ch window = gtk_window_new(GTK_WINDOW_DIALOG); gtk_window_set_wmclass(GTK_WINDOW(window), "question_dialog", "dillo"); - gtk_window_set_title(GTK_WINDOW(window), title); + a_I18n_gtk_window_set_title(GTK_WINDOW(window), title); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_container_border_width(GTK_CONTAINER(window), 10); gtk_signal_connect_object(GTK_OBJECT(window), "delete_event", @@ -2024,7 +2140,7 @@ void a_Interface_message_window(const ch box = gtk_vbox_new(FALSE, 5); frame = gtk_frame_new(NULL); gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); - label = gtk_label_new(msg); + label = a_I18n_gtk_label_new(msg); gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_FILL); gtk_misc_set_padding(GTK_MISC(label), 20, 20); gtk_container_add(GTK_CONTAINER(frame), label); @@ -2032,7 +2148,7 @@ void a_Interface_message_window(const ch gtk_widget_show(frame); gtk_box_pack_start(GTK_BOX(box), frame, TRUE, TRUE, 0); - button = gtk_button_new_with_label("Close"); + button = gtk_button_new_with_label(_("Close")); gtk_signal_connect_object(GTK_OBJECT(button), "clicked", (GtkSignalFunc)gtk_widget_destroy, (void*)window); gtk_widget_add_accelerator(button, "clicked", @@ -2057,6 +2173,7 @@ void a_Interface_text_window (GtkWidget { gint xsize, ysize; GtkWidget *window, *box1, *button, *scrolled_window, *text; + char *enc_buf, *charset; if (*text_widget) gtk_widget_destroy (*text_widget); @@ -2075,7 +2192,7 @@ void a_Interface_text_window (GtkWidget GTK_SIGNAL_FUNC(gtk_widget_destroyed), text_widget); - gtk_window_set_title (GTK_WINDOW (window), title); + a_I18n_gtk_window_set_title (GTK_WINDOW (window), title); gtk_container_border_width (GTK_CONTAINER (window), 0); box1 = gtk_vbox_new (FALSE, 0); @@ -2095,10 +2212,18 @@ void a_Interface_text_window (GtkWidget gtk_widget_show (text); gtk_text_freeze (GTK_TEXT (text)); - gtk_text_insert (GTK_TEXT (text), NULL, NULL, NULL, buf, buf_size); + + charset = a_I18n_get_charset_from_meta_tag(buf, buf_size); + if (!charset) charset = a_I18n_get_encoding(buf, buf_size); + enc_buf = a_I18n_convert(charset, DW_CHARSET, buf, buf_size); + g_free(charset); + + if (enc_buf) + gtk_text_insert (GTK_TEXT (text), + NULL, NULL, NULL, enc_buf, strlen(enc_buf)); gtk_text_thaw (GTK_TEXT (text)); - button = gtk_button_new_with_label ("close"); + button = gtk_button_new_with_label (_("close")); gtk_signal_connect_object (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT (window)); @@ -2156,3 +2281,5 @@ void a_Interface_set_nice_window_pos(Gtk gtk_widget_set_uposition(win1, (sh - h1) / 2, 0); } } + +/* vim: set ts=3 sw=3 sts=3 expandtab:*/ diff -pruN dillo-0.8.6/src/interface.h dillo-0.8.6-i18n-misc-20060709/src/interface.h --- dillo-0.8.6/src/interface.h 2005-10-28 01:20:13.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/interface.h 2006-05-16 01:21:09.000000000 +0900 @@ -6,7 +6,7 @@ /* * This struct is used with custom dialogs. * It can be extended to provide extra widgets (e.g. check buttons). - * + * */ typedef struct _DialogAnswer DialogAnswer; struct _DialogAnswer { @@ -18,14 +18,8 @@ struct _DialogAnswer { void a_Interface_init(void); -void a_Interface_stop(BrowserWindow *bw); -void a_Interface_clean(BrowserWindow *bw); -void a_Interface_quit_all(void); -void a_Interface_add_client(BrowserWindow *bw, gint Key, gint Root); -void a_Interface_remove_client(BrowserWindow *bw, gint ClientKey); -void a_Interface_add_url(BrowserWindow *bw, const DilloUrl *Url, gint Flags); -void a_Interface_close_client(BrowserWindow *bw, gint ClientKey); +void a_Interface_quit_all(void); void a_Interface_msg(BrowserWindow *bw, const char *format, ... ); void a_Interface_bug_meter_update(BrowserWindow *bw, gint num_err); @@ -36,6 +30,8 @@ void a_Interface_save_dialog(GtkWidget * void a_Interface_save_link_dialog(GtkWidget *widget, BrowserWindow *bw); void a_Interface_offer_link_download(BrowserWindow *bw, const DilloUrl *url); void a_Interface_search_dialog(GtkWidget *widget, BrowserWindow *bw); +void Interface_findtext_dialog_destroy(BrowserWindow *bw); +void a_Interface_findtext_dialog_close(); void a_Interface_findtext_dialog(BrowserWindow *bw); void a_Interface_proxy_passwd_dialog(BrowserWindow *bw); void a_Interface_quit_dialog(BrowserWindow *bw); @@ -45,7 +41,12 @@ void a_Interface_set_location_text(Brows gchar *a_Interface_get_location_text(BrowserWindow *bw); void a_Interface_reset_progress_bars(BrowserWindow *bw); void a_Interface_entry_open_url(GtkWidget *widget, BrowserWindow *bw); -void a_Interface_set_cursor(BrowserWindow *bw, GdkCursorType CursorType); + +void a_Interface_toggle_panel(BrowserWindow *bw, gboolean toggle); + +/* content (scrolled_frame and everything in it) focus callback */ +void a_Interface_content_focus_callback(BrowserWindow *bw); + BrowserWindow * a_Interface_browser_window_new(gint width, gint height, guint32 xid); @@ -54,7 +55,7 @@ void a_Interface_set_button_sens(Browser void a_Interface_scroll_popup(GtkWidget *widget); void a_Interface_question_dialog( - BrowserWindow *bw, gchar *QuestionTxt, gint modal_flag, + DilloDoc *dd, gchar *QuestionTxt, gint modal_flag, char *alt1, char *alt2, char *alt3, char *alt4, char *alt5, GtkSignalFunc AnswerCallback); void a_Interface_message_window(const char *title, const char *format, ... ); @@ -65,5 +66,10 @@ void a_Interface_text_window (GtkWidget void a_Interface_set_nice_window_pos(GtkWidget *win1, GtkWidget *win2); +void a_Interface_passwd_dialog(BrowserWindow *bw, + gchar *Context, + GtkSignalFunc OkCallback, void *OkCbData, + GtkSignalFunc CancelCallback, void *CancelCbData); + #endif /* __INTERFACE_H__ */ diff -pruN dillo-0.8.6/src/intl.h dillo-0.8.6-i18n-misc-20060709/src/intl.h --- dillo-0.8.6/src/intl.h 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/intl.h 2006-05-16 01:21:09.000000000 +0900 @@ -0,0 +1,24 @@ +#ifndef __INTL_H__ +#define __INTL_H__ + +#ifdef ENABLE_NLS +# include <libintl.h> +# include <locale.h> +# define _(String) dgettext(PACKAGE,String) +# ifdef gettext_noop +# define N_(String) gettext_noop(String) +# else +# define N_(String) (String) +# endif /* gettext_noop */ +#else +# define _(String) (String) +# define N_(String) (String) +# define textdomain(String) (String) +# define gettext(String) (String) +# define dgettext(Domain,String) (String) +# define dcgettext(Domain,String,Type) (String) +# define bindtextdomain(Domain,Directory) (Domain) +# define bind_textdomain_codeset(Domain,Codeset) (Domain) +#endif /* ENABLE_NLS */ + +#endif /* __INTL_H__ */ diff -pruN dillo-0.8.6/src/menu.c dillo-0.8.6-i18n-misc-20060709/src/menu.c --- dillo-0.8.6/src/menu.c 2005-10-28 01:20:13.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/menu.c 2006-05-16 01:21:09.000000000 +0900 @@ -20,11 +20,16 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include <config.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <gtk/gtk.h> #include <gdk/gdkkeysyms.h> +#include "intl.h" +#include "i18n.h" +#include "i18n_gtk.h" +#include "prefs.h" #include "history.h" #include "nav.h" #include "commands.h" @@ -38,6 +43,8 @@ #include "gtk_ext_menu_item.h" #include "gtk_menu_title.h" +/* NOTE: default charset is DW_CHARSET */ + /* * Forward declarations */ @@ -156,31 +163,54 @@ GtkWidget *a_Menu_mainbar_new(BrowserWin { GtkWidget *menubar; GtkWidget *file_menu; + GtkWidget *view_menu; + /* GtkWidget *help_menu; */ bw->menubar = menubar = gtk_menu_bar_new(); /* FILE MENU */ - file_menu = Menu_new(menubar, tiny ? "_F" : "_File", FALSE, bw); - Menu_add(file_menu, "_New Browser", "<ctrl>N", bw, + file_menu = Menu_new(menubar, tiny ? "_F" : _("_File"), FALSE, bw); + Menu_add(file_menu, _("_New Window"), "<ctrl>N", bw, a_Commands_new_callback, bw); - Menu_add(file_menu, "_Open File...", "<ctrl>O", bw, +#ifndef DISABLE_TABS + Menu_add(file_menu, _("New _Tab"), "<ctrl>T", bw, + a_Commands_new_tab_callback, bw); + Menu_sep(file_menu); +#endif /* !DISABLE_TABS */ + Menu_add(file_menu, _("_Open File..."), "<ctrl>O", bw, a_Commands_openfile_callback, bw); - Menu_add(file_menu, "Open _URL...", "<ctrl>L", bw, + Menu_add(file_menu, _("Open _URL..."), "<ctrl>L", bw, a_Commands_openurl_callback, bw); /* - Menu_add(file_menu, "_Preferences", "<ctrl>E", bw, + Menu_add(file_menu, _("_Preferences"), "<ctrl>E", bw, a_Commands_prefs_callback, bw); */ - Menu_add(file_menu, "Close Window", "<ctrl>Q", bw, + Menu_add(file_menu, _("Close Window"), "<ctrl>Q", bw, a_Commands_close_callback, bw); +#ifndef DISABLE_TABS + Menu_add(file_menu, _("Close Tab"), "<ctrl>W", bw, + a_Commands_close_current_tab_callback, bw); +#endif /* !DISABLE_TABS */ Menu_sep(file_menu); - Menu_add(file_menu, "Exit Dillo", "<alt>Q", bw, + Menu_add(file_menu, _("Exit Dillo"), "<alt>Q", bw, a_Commands_exit_callback, bw); + /* VIEW MENU */ + view_menu = Menu_new(menubar, tiny? "_V" : _("_View"), FALSE, bw); +#ifndef DISABLE_TABS + Menu_add(view_menu, _("Previous tab"), "<ctrl>comma", bw, + a_Commands_tab_prev_callback, bw); + Menu_add(view_menu, _("Next tab"), "<ctrl>period", bw, + a_Commands_tab_next_callback, bw); + Menu_sep(view_menu); +#endif /* !DISABLE_TABS */ + Menu_add(view_menu, _("_Options..."), NULL, bw, + a_Commands_prefs_callback, bw); + /* HELP MENU - help_menu = Menu_new(menubar, "_Help", TRUE, bw); - Menu_add(help_menu, "Dillo _Home", NULL, bw, + help_menu = Menu_new(menubar, _("_Help"), TRUE, bw); + Menu_add(help_menu, _("Dillo _Home"), NULL, bw, a_Commands_helphome_callback, bw); */ return menubar; @@ -195,28 +225,149 @@ GtkWidget *a_Menu_popup_op_new(BrowserWi menu = gtk_menu_new(); Menu_sep(menu); - Menu_add_title(menu, "PAGE OPTIONS"); + Menu_add_title(menu, _("PAGE OPTIONS")); Menu_sep(menu); - Menu_add(menu, "View page Source", NULL, bw, + if(prefs.show_popup_navigation) { + bw->back_op_menu_button = Menu_add(menu, _("Back"), NULL, bw, + a_Commands_back_callback, bw); + bw->forw_op_menu_button = Menu_add(menu, _("Forward"), NULL, bw, + a_Commands_forw_callback, bw); + bw->stop_op_menu_button = Menu_add(menu, _("Stop"), NULL, bw, + a_Commands_stop_callback, bw); + Menu_add(menu, _("_Reload"), "<ctrl>r", bw, + a_Commands_reload_callback, bw); + Menu_sep(menu); + } + Menu_add(menu, _("View page So_urce"), NULL, bw, a_Commands_viewsource_callback, bw); - bw->viewbugs_menuitem = Menu_add(menu, "View page Bugs", NULL,bw, NULL,bw); - - Menu_add(menu, "Bookmark this page", NULL, bw, + bw->viewbugs_menuitem = Menu_add(menu, _("View page Bugs"), NULL,bw, NULL,bw); + Menu_add(menu, _("_Bookmark this Page"), NULL, bw, a_Commands_addbm_callback, bw); Menu_sep(menu); - Menu_add(menu, "_Find Text", "<ctrl>F", bw, + Menu_add(menu, _("Duplicate this Page"), "<alt>n", bw, + a_Commands_duplicate_callback, bw); +#ifndef DISABLE_TABS + Menu_add(menu, _("Duplicate this tab"), "<alt>t", bw, + a_Commands_duplicate_tab_callback, bw); +#endif /* !DISABLE_TABS */ + Menu_sep(menu); + Menu_add(menu, _("_Find Text"), "<ctrl>F", bw, a_Commands_findtext_callback, bw); - bw->pagemarks_menuitem = Menu_add(menu, "Jump to...", NULL, bw, NULL, bw); + bw->pagemarks_menuitem = Menu_add(menu, _("Jump to..."), NULL, bw, NULL, NULL); + bw->frame_menuitem = Menu_add(menu, _("This Frame..."), NULL, bw, NULL, NULL); + bw->frameset_menuitem = Menu_add(menu, _("This Frameset..."), NULL, bw, NULL, NULL); Menu_sep(menu); - Menu_add(menu, "Save page As...", NULL, bw, + Menu_add(menu, _("Save Page As..."), "<ctrl>s", bw, a_Commands_save_callback, bw); return menu; } /* + * Make a new frame menu and return it + */ +GtkWidget *a_Menu_popup_of_new(DilloDoc *dd) +{ + GtkWidget *menu; + + menu = gtk_menu_new(); + Menu_sep(menu); + Menu_add_title(menu, _("FRAME OPTIONS")); + Menu_sep(menu); + if (prefs.show_popup_navigation) { + dd->bw->back_op_menu_button = Menu_add(menu, _("Back"), NULL, dd->bw, + a_Commands_back_callback, dd->bw); + dd->bw->forw_op_menu_button = Menu_add(menu, _("Forward"), NULL, dd->bw, + a_Commands_forw_callback, dd->bw); + dd->bw->stop_op_menu_button = Menu_add(menu, _("Stop"), NULL, dd->bw, + a_Commands_stop_callback, dd->bw); + Menu_add(menu, _("_Reload"), NULL, dd->bw, + a_Commands_reload_callback, dd->bw); + Menu_sep(menu); + } + Menu_add(menu, _("View frame Source"), NULL, dd->bw, + a_Commands_viewsource_doc_callback, dd); + Menu_add(menu, _("Bookmark this Frame"), NULL, dd->bw, + a_Commands_addbm_doc_callback, dd); + Menu_add(menu, _("Reload this Frame"), NULL, dd->bw, + a_Commands_reload_doc_callback, dd); + Menu_sep(menu); + Menu_add(menu, _("Show only this Frame"), NULL, dd->bw, + a_Commands_showonly_doc_callback, dd); + Menu_add(menu, _("Open Frame in new Window"), NULL, dd->bw, + a_Commands_open_link_nw_callback, dd->bw); +#ifndef DISABLE_TABS + Menu_add(menu, _("Open Frame in new Tab"), NULL, dd->bw, + a_Commands_open_link_nw_tab_callback, dd->bw); +#endif /* !DISABLE_TABS */ + Menu_sep(menu); + Menu_add(menu, _("_Find Text in this Frame..."), NULL, dd->bw, + a_Commands_findtext_doc_callback, dd); + Menu_sep(menu); + Menu_add(menu, _("Save Frame As..."), NULL, dd->bw, + a_Commands_save_doc_callback, dd); + + return menu; +} + +/* + * Make a new frameset menu and return it + * + */ +GtkWidget *a_Menu_popup_ofs_new(DilloDoc *dd) +{ + GtkWidget *frameset_menu; + + frameset_menu = gtk_menu_new(); + Menu_sep(frameset_menu); + Menu_add_title(frameset_menu, _("FRAMESET OPTIONS")); + Menu_sep(frameset_menu); + Menu_add(frameset_menu, _("View Frameset Source"), NULL, dd->bw, + a_Commands_viewsource_doc_callback, dd->parent); + Menu_add(frameset_menu, _("Bookmark this Frameset"), NULL, dd->bw, + a_Commands_addbm_doc_callback, dd->parent); + Menu_add(frameset_menu, _("Reload this Frameset"), NULL, dd->bw, + a_Commands_reload_doc_callback, dd->parent); + Menu_sep(frameset_menu); + Menu_add(frameset_menu, _("Show only this Frameset"), NULL, dd->bw, + a_Commands_showonly_doc_callback, dd->parent); + Menu_sep(frameset_menu); + Menu_add(frameset_menu, _("_Find Text in this Frameset..."), NULL, dd->bw, + a_Commands_findtext_doc_callback, dd->parent); + Menu_sep(frameset_menu); + Menu_add(frameset_menu, _("Save Frame As..."), NULL, dd->bw, + a_Commands_save_doc_callback, dd->parent); + + return frameset_menu; +} + + +#ifndef DISABLE_TABS +/* + * Make a new popup menu for when the mouse is over a tab + */ +GtkWidget *a_Menu_popup_tab_new(DilloDoc *dd) +{ + GtkWidget *menu; + + menu = gtk_menu_new(); + Menu_sep(menu); + Menu_add_title(menu, _("TAB OPTIONS")); + Menu_sep(menu); + Menu_add(menu, _("Close Tab"), NULL, dd->bw, + a_Commands_close_tab_callback, dd); + Menu_add(menu, _("New Tab"), NULL, dd->bw, + a_Commands_new_tab_callback, dd->bw); + Menu_add(menu, _("Reload Tab"), NULL, dd->bw, + a_Commands_reload_doc_callback, dd); + return menu; +} + +#endif /* !DISABLE_TABS */ + +/* * Set the popup's primary DilloUrl */ void a_Menu_popup_set_url(BrowserWindow *bw, const DilloUrl *url) @@ -267,8 +418,8 @@ Menu_popup_history_select_callback(GtkWi BrowserWindow *bw = data; idx = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT (widget), "nav_idx")); - if (idx >= 0 && idx < a_Nav_stack_size(bw)) { - a_Interface_msg(bw, "%s", URL_STR_(a_History_get_url(NAV_IDX(bw,idx)))); + if (idx >= 0 && idx < a_Nav_stack_size(bw->dd)) { + a_Interface_msg(bw, "%s", URL_STR_(a_History_get_url(NAV_IDX(bw->dd,idx)))); bw->status_is_link = 1; } } @@ -284,6 +435,15 @@ Menu_popup_history_deselect_callback(Gtk } /* + * Called when the user selects "Copy Link Location" in the link menu. + */ +void a_Menu_popup_select_url_callback(GtkWidget *widget, gpointer client_data) +{ + BrowserWindow *bw = (BrowserWindow *)client_data; + a_Selection_set_selection(widget, URL_STR(a_Menu_popup_get_url(bw))); +} + +/* * Make a new popup menu for history browsing * direction: {backward = -1, forward = 1} */ @@ -292,31 +452,39 @@ GtkWidget *a_Menu_popup_history_new(Brow int i; GtkWidget *menu, *menu_item; GString *text = g_string_sized_new(128); + gchar *text_enc; menu = a_Gtk_ext_menu_new(); Menu_sep(menu); if (direction>0) { - Menu_add_title(menu, "FOLLOWING PAGES"); - i = a_Nav_stack_ptr(bw) + 1; + Menu_add_title(menu, _("FOLLOWING PAGES")); + i = a_Nav_stack_ptr(bw->dd) + 1; } else { - Menu_add_title(menu, "PREVIOUS PAGES"); - i = a_Nav_stack_ptr(bw) - 1; + Menu_add_title(menu, _("PREVIOUS PAGES")); + i = a_Nav_stack_ptr(bw->dd) - 1; } Menu_sep(menu); - for ( ; i >= 0 && i < a_Nav_stack_size(bw); i+=direction ) { - if (a_History_get_title(NAV_IDX(bw,i))) { - g_string_assign(text, a_History_get_title(NAV_IDX(bw,i))); + for ( ; i >= 0 && i < a_Nav_stack_size(bw->dd); i+=direction ) { + if (a_History_get_title(NAV_IDX(bw->dd,i))) { + g_string_assign(text, a_History_get_title(NAV_IDX(bw->dd,i))); } else { - g_string_assign(text, URL_STR(a_History_get_url(NAV_IDX(bw,i)))); + g_string_assign(text, URL_STR(a_History_get_url(NAV_IDX(bw->dd,i)))); } if ( text->len > 64 ) { - g_string_truncate(text, 64); + int max_len = 64; + while (IS_UTF8_NON_FIRST_CHAR(text->str[max_len - 1])) + max_len--; + if (IS_UTF8_FIRST_CHAR(text->str[max_len - 1])) + max_len--; + g_string_truncate(text, max_len); g_string_append(text, "..."); } - menu_item = a_Gtk_ext_menu_item_new_with_label(text->str); + text_enc = a_I18n_DW_CHARSET_from_DILLO_CHARSET(text->str, text->len); + menu_item = a_Gtk_ext_menu_item_new_with_label(text_enc); gtk_menu_append(GTK_MENU(menu), menu_item); gtk_widget_show(menu_item); + g_free(text_enc); /* attach the nav_stack index to the menu item */ gtk_object_set_data(GTK_OBJECT (menu_item), "nav_idx", GINT_TO_POINTER(i)); @@ -360,23 +528,29 @@ GtkWidget *a_Menu_popup_ol_new(BrowserWi menu = gtk_menu_new(); Menu_sep(menu); - Menu_add_title(menu, "LINK OPTIONS"); + Menu_add_title(menu, _("LINK OPTIONS")); Menu_sep(menu); - Menu_add(menu, "Open Link in New Window", NULL, bw, + Menu_add(menu, _("Open Link in New Window"), NULL, bw, a_Commands_open_link_nw_callback, bw); - Menu_add(menu, "Bookmark this Link", NULL, bw, - a_Commands_addbm_callback, bw); - - copy = Menu_add(menu, "Copy Link location", NULL, bw, - a_Commands_select_popup_url_callback, bw); +#ifndef DISABLE_TABS + Menu_add(menu, _("Open Link in New Tab"), NULL, bw, + a_Commands_open_link_nw_tab_callback, bw); +#endif /* !DISABLE_TABS */ + Menu_add(menu, _("Open Link"), NULL, bw, + a_Commands_open_link_callback, bw); + Menu_sep(menu); + Menu_add(menu, _("Bookmark this Link"), NULL, bw, + a_Commands_addbm_link_callback, bw); + copy = Menu_add(menu, _("Copy Link location"), NULL, bw, + a_Menu_popup_select_url_callback, bw); a_Selection_init_selection(copy); Menu_sep(menu); - Menu_add(menu, "Save Link As...", NULL, bw, + Menu_add(menu, _("Save Link As..."), NULL, bw, a_Commands_save_link_callback, bw); Menu_sep(menu); - menuitem = Menu_add(menu, "Image Menu...", NULL, bw, NULL, bw); + menuitem = Menu_add(menu, _("Image Menu..."), NULL, bw, NULL, bw); gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), bw->menu_popup.over_image); bw->menu_popup.ol_oi_submenu = menuitem; @@ -394,20 +568,27 @@ GtkWidget *a_Menu_popup_oi_new (BrowserW menu = gtk_menu_new(); Menu_sep(menu); - Menu_add_title(menu, "IMAGE OPTIONS"); + Menu_add_title(menu, _("IMAGE OPTIONS")); Menu_sep(menu); - Menu_add(menu, "Isolate Image", NULL, bw, + Menu_add(menu, _("Isolate Image"), NULL, bw, a_Commands_open_link_callback, bw); - Menu_add(menu, "Open Image in New Window", NULL, bw, + Menu_add(menu, _("Open Image in New Window"), NULL, bw, a_Commands_open_link_nw_callback, bw); - Menu_add(menu, "Bookmark this Image", NULL, bw, - a_Commands_addbm_callback, bw); - copy = Menu_add(menu, "Copy Image location", NULL, bw, - a_Commands_select_popup_url_callback, bw); +#ifndef DISABLE_TABS + Menu_add(menu, _("Open Image in New Tab"), NULL, bw, + a_Commands_open_link_nw_tab_callback, bw); +#endif /* !DISABLE_TABS */ + Menu_add(menu, _("Open Image"), NULL, bw, + a_Commands_open_link_callback, bw); + Menu_sep(menu); + Menu_add(menu, _("Bookmark this Image"), NULL, bw, + a_Commands_addbm_link_callback, bw); + copy = Menu_add(menu, _("Copy Image location"), NULL, bw, + a_Menu_popup_select_url_callback, bw); a_Selection_init_selection(copy); Menu_sep(menu); - Menu_add(menu, "Save Image As...", NULL, bw, + Menu_add(menu, _("Save Image As..."), NULL, bw, a_Commands_save_link_callback, bw); return menu; } @@ -421,14 +602,14 @@ GtkWidget *a_Menu_popup_ob_new (BrowserW menu = gtk_menu_new(); Menu_sep(menu); - Menu_add_title(menu, "BUG METER OPTIONS"); + Menu_add_title(menu, _("BUG METER OPTIONS")); Menu_sep(menu); - Menu_add(menu, "Validate URL with W3C", NULL, bw, + Menu_add(menu, _("Validate URL with W3C"), NULL, bw, a_Commands_ob_w3c_callback, bw); - Menu_add(menu, "Validate URL with WDG", NULL, bw, + Menu_add(menu, _("Validate URL with WDG"), NULL, bw, a_Commands_ob_wdg_callback, bw); Menu_sep(menu); - Menu_add(menu, "About Bug Meter...", NULL, bw, + Menu_add(menu, _("About Bug Meter..."), NULL, bw, a_Commands_ob_info_callback, bw); return menu; } @@ -455,28 +636,46 @@ void a_Menu_popup_ol_show_oi(BrowserWind static void Menu_pagemarks_goto_pagemark(GtkWidget *widget, gpointer client_data) { - BrowserWindow *bw = (BrowserWindow *) client_data; + DilloDoc *dd = (DilloDoc *) client_data; char anchor[32]; g_snprintf (anchor, 32, "#%ld", (long int)widget); - a_Dw_gtk_scrolled_window_set_anchor(GTK_DW_SCROLLED_WINDOW(bw->docwin), + a_Dw_gtk_scrolled_window_set_anchor(GTK_DW_SCROLLED_WINDOW(dd->docwin), anchor); } /* - * Deallocate the memory used by a pagemarks menu and create a new one + * Deallocate memory used by a pagemark menu */ -void a_Menu_pagemarks_new(BrowserWindow *bw) +void a_Menu_pagemarks_destroy(DilloDoc *dd) { - gtk_widget_set_sensitive(bw->pagemarks_menuitem, FALSE); - - if (bw->pagemarks_menu) - gtk_widget_destroy(bw->pagemarks_menu); - bw->pagemarks_menu = gtk_menu_new(); - bw->pagemarks_last = NULL; + /* set pagemarks menu insensitive if this is the current tab */ + if(dd->bw->dd == dd) + gtk_widget_set_sensitive(dd->bw->pagemarks_menuitem, FALSE); + if (GTK_IS_WIDGET(dd->pagemarks_menu)) + { + gtk_object_unref(GTK_OBJECT(dd->pagemarks_menu)); + dd->pagemarks_menu = NULL; + dd->pagemarks_last = NULL; + } +} - gtk_menu_item_set_submenu(GTK_MENU_ITEM(bw->pagemarks_menuitem), - bw->pagemarks_menu); +/* + * Deallocate the memory used by a pagemarks menu and create a new one + */ +void a_Menu_pagemarks_new(DilloDoc *dd) +{ + a_Menu_pagemarks_destroy(dd); + dd->pagemarks_menu = gtk_menu_new(); + /* add a reference to the object, otherwise it will be destroyed + * when the document (tab) is switched */ + gtk_object_ref(GTK_OBJECT(dd->pagemarks_menu)); + dd->pagemarks_last = NULL; + + /* add to bw's menu only if this is the current tab */ + if(dd->bw->dd == dd) + gtk_menu_item_set_submenu(GTK_MENU_ITEM(dd->bw->pagemarks_menuitem), + dd->pagemarks_menu); } /* @@ -484,43 +683,61 @@ void a_Menu_pagemarks_new(BrowserWindow * The text can be set only at the closing H tag. * level is the level of the heading (1-6). */ -void a_Menu_pagemarks_add(BrowserWindow *bw, void *page, void *style, +void a_Menu_pagemarks_add(DilloDoc *dd, void *page, void *style, gint level) { char anchor[32], spaces[32], name[32]; - gtk_widget_set_sensitive(bw->pagemarks_menuitem, TRUE); + /* set pagemarks menu sensitive if this is the current tab */ + if(dd->bw->dd == dd) + gtk_widget_set_sensitive(dd->bw->pagemarks_menuitem, TRUE); g_snprintf(spaces, 32, "%*s", 3 * (level - 1), ""); - bw->pagemarks_last = Menu_add(bw->pagemarks_menu, spaces, NULL, bw, - Menu_pagemarks_goto_pagemark, bw); - g_snprintf(anchor, 32, "#%ld", (glong)(bw->pagemarks_last)); + dd->pagemarks_last = gtk_menu_item_new_with_label(spaces); + gtk_menu_append(GTK_MENU(dd->pagemarks_menu),dd->pagemarks_last); + gtk_widget_show(dd->pagemarks_last); + gtk_signal_connect(GTK_OBJECT(dd->pagemarks_last), "activate", + (GtkSignalFunc) Menu_pagemarks_goto_pagemark, dd); + /* was: + * Menu_add(dd->pagemarks_menu, spaces, NULL, dd, + * Pagemark_goto_pagemark, dd); + * but Menu_add is a private function for menu.c so... */ + g_snprintf(anchor, 32, "#%ld", (glong)(dd->pagemarks_last)); a_Dw_page_add_anchor(page, anchor, style); - gtk_signal_connect (GTK_OBJECT (bw->pagemarks_last), "select", + gtk_signal_connect (GTK_OBJECT (dd->pagemarks_last), "select", GTK_SIGNAL_FUNC (a_Interface_scroll_popup), NULL); g_snprintf(name, 32, "dilloHeading%d", level); - gtk_widget_set_name(bw->pagemarks_last, name); + gtk_widget_set_name(dd->pagemarks_last, name); } /* * Set the text for the last created pagemark. */ -void a_Menu_pagemarks_set_text(BrowserWindow *bw, const char *str) +void a_Menu_pagemarks_set_text(DilloDoc *dd, const char *str) { GString *text; GtkWidget *child; + char *label_text; /* Avoid problems with lonely closing tags and nested headings */ - if ( bw->pagemarks_last && - (child = GTK_BIN (bw->pagemarks_last)->child) && + if ( dd->pagemarks_last && + (child = GTK_BIN (dd->pagemarks_last)->child) && GTK_IS_LABEL (child) ) { text = g_string_new(GTK_LABEL(child)->label); g_string_append(text, str); if ( text->len > 64 ) { - g_string_truncate(text, 64); + int max_len = 64; + while (IS_UTF8_NON_FIRST_CHAR(text->str[max_len - 1])) + max_len--; + if (IS_UTF8_FIRST_CHAR(text->str[max_len - 1])) + max_len--; + g_string_truncate(text, max_len); g_string_append(text, "..."); } - gtk_label_set_text(GTK_LABEL (child), text->str); + label_text = a_I18n_string_check(text->str, DILLO_CHARSET); + a_I18n_gtk_label_set_text(GTK_LABEL (child), label_text); + g_free(label_text); g_string_free(text, 1); - bw->pagemarks_last = NULL; + dd->pagemarks_last = NULL; } } + diff -pruN dillo-0.8.6/src/menu.h dillo-0.8.6-i18n-misc-20060709/src/menu.h --- dillo-0.8.6/src/menu.h 2005-10-28 01:20:13.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/menu.h 2006-05-16 01:21:09.000000000 +0900 @@ -8,7 +8,12 @@ GtkWidget *a_Menu_popup_op_new (BrowserW GtkWidget *a_Menu_popup_ol_new (BrowserWindow *bw); GtkWidget *a_Menu_popup_oi_new (BrowserWindow *bw); GtkWidget *a_Menu_popup_ob_new (BrowserWindow *bw); +GtkWidget *a_Menu_popup_of_new (DilloDoc *dd); +GtkWidget *a_Menu_popup_ofs_new (DilloDoc *dd); GtkWidget *a_Menu_popup_history_new(BrowserWindow *bw, gint direction); +#ifndef DISABLE_TABS +GtkWidget *a_Menu_popup_tab_new(DilloDoc *dd); +#endif void a_Menu_popup_ol_show_oi(BrowserWindow *bw, gboolean show); void a_Menu_popup_set_url(BrowserWindow *bw, const DilloUrl *url); void a_Menu_popup_set_url2(BrowserWindow *bw, const DilloUrl *url); @@ -16,10 +21,10 @@ void a_Menu_popup_clear_url2(GtkWidget * DilloUrl *a_Menu_popup_get_url(BrowserWindow *bw); -void a_Menu_pagemarks_new (BrowserWindow *bw); -void a_Menu_pagemarks_destroy (BrowserWindow *bw); -void a_Menu_pagemarks_add(BrowserWindow *bw, void *page, void *style, +void a_Menu_pagemarks_new (DilloDoc *dd); +void a_Menu_pagemarks_destroy (DilloDoc *dd); +void a_Menu_pagemarks_add(DilloDoc *dd, void *page, void *style, gint level); -void a_Menu_pagemarks_set_text(BrowserWindow *bw, const char *str); +void a_Menu_pagemarks_set_text(DilloDoc *dd, const char *str); #endif /* MENU_H */ diff -pruN dillo-0.8.6/src/misc.c dillo-0.8.6-i18n-misc-20060709/src/misc.c --- dillo-0.8.6/src/misc.c 2006-04-06 05:57:18.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/misc.c 2006-05-16 01:21:09.000000000 +0900 @@ -10,6 +10,7 @@ * (at your option) any later version. */ +#include <config.h> #include <glib.h> #include <stdio.h> @@ -18,8 +19,12 @@ #include <string.h> #include <ctype.h> +#include "intl.h" #include "msg.h" #include "misc.h" +#include "prefs.h" +#include "i18n.h" + /* * Prepend the users home-dir to 'file' string i.e, @@ -116,7 +121,7 @@ gchar *a_Misc_expand_tabs(const char *st int len, i, j, pos, old_pos; char *val; - if ( (len = strlen(str)) ) { + if (str && (len = strlen(str)) ) { for (pos = 0, i = 0; i < len; i++) { if (str[i] == '\t') { /* Fill with whitespaces until the next tab. */ @@ -385,3 +390,184 @@ gchar *a_Misc_encode_base64(const gchar out[i] = '\0'; return out; } + +/* insert a space between multibyte chars. */ +gchar *a_Misc_add_space(gchar *str){ + char *encStr, *parseStr; + int buf_index = 0; + int parse_index = 0; + int wordnum = 0; + int len = strlen(str); + if(len == 0) + return NULL; + //g_print("SOURCE[%3d]: %s\n",len, str); + parseStr = g_malloc0(len * 2); + while(buf_index < len){ + if ((wordnum = a_I18n_mblen(&str[buf_index])) == 0){ + while(isprint(str[buf_index + wordnum])) + wordnum++; + } + if(wordnum == 0){ + g_warning("Findtext_add_space() invalid char.\n"); + //parseStr[parse_index] = str[buf_index]; + buf_index++; + } else { + strncpy(&parseStr[parse_index], &str[buf_index], wordnum); + parse_index += wordnum; + buf_index += wordnum; + parseStr[parse_index] = ' '; + } + parse_index++; + } + parseStr[parse_index - ((wordnum == 0)?0:1)] = 0; + encStr = g_strndup(parseStr,strlen(parseStr)); + //g_print("PARSE[%3d]: %s\n",strlen(parseStr), parseStr); + g_free(parseStr); + return encStr; +} + +#ifndef DISABLE_TABS + +/* + * (adapted from Galeon's misc_string_shorten_name()) + * try to shorten a string to target_length or less + * this is quite language-specific, ie. it will not work + * with non indo-european languages + * + * minimum returned string length is 1, even if target_length + * is set to a lower value + * + * caller has to free the returned string + */ +gchar * +a_Misc_string_compress(const gchar *input, gint target_length) +{ + gint i, j, length; + gchar *name, **common_prefixes = prefs.compress_common_prefixes_vec; + gchar *shortened_name; + char c; + + /* it does not make sense to compress a string into nothing... */ + if (target_length < 1) + target_length = 1; + + if (input == NULL) + return (a_Misc_string_shorten(g_strdup(_("Untitled")),target_length)); + + /* copy and clean name */ + name = g_strdup (input); + g_strstrip (name); + length = strlen (name); + + /* remove common prefixes from string */ + if (common_prefixes) + for(i=0; common_prefixes[i]; ++i) + if(strncasecmp(name, common_prefixes[i],strlen(common_prefixes[i])) == 0) { + length -= strlen(common_prefixes[i]); + memmove(name, name + strlen(common_prefixes[i]), length + 1); + } + + /* remove trailing whitespace, if any */ + g_strchug(name); + + /* remove vowels from string */ + for (i = length - 1, j = length - 1; i >= 0; i--) { + c = name[i]; + /* keep the letter if the string is short enough + * already, if the letter is at the beginning of a + * word, or if it's not a lowercase vowel */ + if (length <= target_length || i == 0 || + (i > 0 && name[i - 1] == ' ') || + /* prefs.compress_vowels contains those characters + that can be skipped without making a word totally + irrecognizable. In most languages, those are the + vowels (with and without accents) */ + !strchr (prefs.compress_vowels, c)) + { + name[j] = c; + j--; + } + else + { + length--; + } + } + /* shift */ + memmove(name, name + j + 1, length + 1); + + /* short enough yet? */ + if (length <= target_length) + { + return name; + } + + /* no - try chopping out whole words */ + for (i = target_length; i > 0; i--) { + if (ispunct((int) name[i]) || isspace((int) name[i])) + { + while (ispunct((int) name[i]) || isspace((int) name[i])) + { + i--; + } + /* this will do */ + name[i + 1] = '\0'; + g_strchomp (name); + return name; + } + } + + /* still too long - use shortening on the compressed string */ + shortened_name = a_Misc_string_shorten(name, target_length); + g_free(name); + return shortened_name; +} + +/* + * shorten a string to no more than target_length characters + * by replacing part of the middle of the string by + * three ellipsis ('...'). + * + * minimum returned string length is 3, even if target_length + * is set to a lower value. + * + * caller must free returned string + */ +gchar * +a_Misc_string_shorten(const gchar *input, gint target_length) +{ + gchar *output; + gint actual_length, first_length, second_length; + + if (!input) return NULL; + + /* target length can not be smaller than 3 */ + if (target_length < 3) + target_length = 3; + + actual_length = strlen (input); + + /* if the string is already short enough, or if it's too short for + * us to shorten it, return a new copy */ + if (actual_length <= target_length || + actual_length <= 3) + return g_strdup (input); + + /* allocate new string */ + output = g_new (gchar, target_length + 1); + + /* calc lengths to take from beginning and ending of input */ + second_length = (target_length - 3) / 2; + if(second_length%2 != 0) second_length++; + first_length = target_length - 3 - second_length; + + /* create string */ + strncpy (output, input, first_length); + strncpy (output + first_length, "...", 3); + strncpy (output + first_length + 3, + input + actual_length - second_length, second_length); + output[target_length] = '\0'; + + return output; +} + +#endif /* !DISABLE_TABS */ diff -pruN dillo-0.8.6/src/misc.h dillo-0.8.6-i18n-misc-20060709/src/misc.h --- dillo-0.8.6/src/misc.h 2006-04-05 04:51:06.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/misc.h 2006-05-16 01:21:09.000000000 +0900 @@ -15,6 +15,11 @@ gint a_Misc_get_content_type_from_data(v int a_Misc_content_type_check(const char *EntryType, const char *DetectedType); gint a_Misc_parse_geometry(gchar *geom, gint *x, gint *y, gint *w, gint *h); gchar *a_Misc_encode_base64(const gchar *in); +gchar *a_Misc_add_space(gchar *str); +#ifndef DISABLE_TABS +gchar *a_Misc_string_compress(const gchar *input, gint target_length); +gchar *a_Misc_string_shorten(const gchar *input, gint target_length); +#endif /* !DISABLE_TABS */ /* Return a NULL-terminated string containing the characters from p1 to p2. */ #define a_Misc_strpdup(s, p1, p2) g_strndup((s) + (p1), (p2) - (p1)) diff -pruN dillo-0.8.6/src/msg.h dillo-0.8.6-i18n-misc-20060709/src/msg.h --- dillo-0.8.6/src/msg.h 2005-10-28 01:20:13.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/msg.h 2006-05-16 01:21:08.000000000 +0900 @@ -22,6 +22,10 @@ Html_msg(html, fmt); \ } G_STMT_END -#define MSG_HTTP(fmt...) g_print("HTTP warning: " fmt) +#define MSG_HTTP(fmt...) \ + G_STMT_START { \ + g_print(_("HTTP warning: ")); \ + g_print(fmt); \ + } G_STMT_END #endif /* __MSG_H__ */ diff -pruN dillo-0.8.6/src/nav.c dillo-0.8.6-i18n-misc-20060709/src/nav.c --- dillo-0.8.6/src/nav.c 2006-01-03 03:17:23.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/nav.c 2006-05-16 01:21:09.000000000 +0900 @@ -12,17 +12,21 @@ /* Support for a navigation stack */ +#include <config.h> #include <stdio.h> #include <gtk/gtk.h> +#include "intl.h" #include "msg.h" #include "list.h" #include "nav.h" #include "history.h" #include "web.h" +#include "doc.h" #include "menu.h" #include "interface.h" #include "dw_gtk_scrolled_window.h" #include "prefs.h" +#include "commands.h" #include "capi.h" /* #define DEBUG_LEVEL 3 */ @@ -31,29 +35,29 @@ /* * Forward declarations */ -static void Nav_reload(BrowserWindow *bw); +static void Nav_reload(DilloDoc *dd); /* * Initialize the navigation structure with safe values */ -void a_Nav_init(BrowserWindow *bw) +void a_Nav_init(DilloDoc *dd) { - bw->nav_stack_size = 0; - bw->nav_stack_size_max = 16; - bw->nav_stack = NULL; - bw->nav_stack_ptr = -1; - bw->nav_expecting = FALSE; - bw->nav_expect_url = NULL; + dd->nav_stack_size = 0; + dd->nav_stack_size_max = 16; + dd->nav_stack = NULL; + dd->nav_stack_ptr = -1; + dd->nav_expecting = FALSE; + dd->nav_expect_url = NULL; } /* * Free memory used by this module */ -void a_Nav_free(BrowserWindow *bw) +void a_Nav_free(DilloDoc *dd) { - a_Nav_cancel_expect(bw); - g_free(bw->nav_stack); + a_Nav_cancel_expect(dd); + g_free(dd->nav_stack); } @@ -62,79 +66,79 @@ void a_Nav_free(BrowserWindow *bw) /* * Return current nav_stack pointer [0 based; -1 = empty] */ -gint a_Nav_stack_ptr(BrowserWindow *bw) +gint a_Nav_stack_ptr(DilloDoc *dd) { - return bw->nav_stack_ptr; + return dd->nav_stack_ptr; } /* * Move the nav_stack pointer */ -static void Nav_stack_move_ptr(BrowserWindow *bw, gint offset) +static void Nav_stack_move_ptr(DilloDoc *dd, gint offset) { gint nptr; - g_return_if_fail (bw != NULL); + g_return_if_fail (dd != NULL); if (offset != 0) { - nptr = bw->nav_stack_ptr + offset; - g_return_if_fail (nptr >= 0 && nptr < bw->nav_stack_size); - bw->nav_stack_ptr = nptr; + nptr = dd->nav_stack_ptr + offset; + g_return_if_fail (nptr >= 0 && nptr < dd->nav_stack_size); + dd->nav_stack_ptr = nptr; } } /* * Return size of nav_stack [1 based] */ -gint a_Nav_stack_size(BrowserWindow *bw) +gint a_Nav_stack_size(DilloDoc *dd) { - return bw->nav_stack_size; + return dd->nav_stack_size; } /* * Add an URL-index in the navigation stack. */ -static void Nav_stack_add(BrowserWindow *bw, gint idx) +static void Nav_stack_add(DilloDoc *dd, gint idx) { - g_return_if_fail (bw != NULL); + g_return_if_fail (dd != NULL); - ++bw->nav_stack_ptr; - if ( bw->nav_stack_ptr == bw->nav_stack_size) { - a_List_add(bw->nav_stack, bw->nav_stack_size, bw->nav_stack_size_max); - ++bw->nav_stack_size; + ++dd->nav_stack_ptr; + if ( dd->nav_stack_ptr == dd->nav_stack_size) { + a_List_add(dd->nav_stack, dd->nav_stack_size, dd->nav_stack_size_max); + ++dd->nav_stack_size; } else { - bw->nav_stack_size = bw->nav_stack_ptr + 1; + dd->nav_stack_size = dd->nav_stack_ptr + 1; } - bw->nav_stack[bw->nav_stack_ptr] = idx; + dd->nav_stack[dd->nav_stack_ptr] = idx; } /* * Remove an URL-index from the navigation stack. */ -static void Nav_stack_remove(BrowserWindow *bw, gint idx) +static void Nav_stack_remove(DilloDoc *dd, gint idx) { - gint sz = a_Nav_stack_size(bw); + gint sz = a_Nav_stack_size(dd); - g_return_if_fail (bw != NULL && idx >=0 && idx < sz); + g_return_if_fail (dd != NULL && idx >=0 && idx < sz); for ( ; idx < sz - 1; ++idx) - bw->nav_stack[idx] = bw->nav_stack[idx + 1]; - if ( bw->nav_stack_ptr == --bw->nav_stack_size ) - --bw->nav_stack_ptr; + dd->nav_stack[idx] = dd->nav_stack[idx + 1]; + if ( dd->nav_stack_ptr == --dd->nav_stack_size ) + --dd->nav_stack_ptr; } /* - * Remove equal adyacent URLs at the top of the stack. + * Remove equal adjacent URLs at the top of the stack. * (It may happen with redirections) */ -static void Nav_stack_clean(BrowserWindow *bw) +static void Nav_stack_clean(DilloDoc *dd) { gint i; - g_return_if_fail (bw != NULL); + g_return_if_fail (dd != NULL); - if ((i = a_Nav_stack_size(bw)) >= 2 && - bw->nav_stack[i-2] == bw->nav_stack[i-1]) - Nav_stack_remove(bw, i - 1); + if ((i = a_Nav_stack_size(dd)) >= 2 && + dd->nav_stack[i-2] == dd->nav_stack[i-1]) + Nav_stack_remove(dd, i - 1); } @@ -146,7 +150,7 @@ static void Nav_stack_clean(BrowserWindo * This function requests the page's root-URL; images and related stuff * are fetched directly by the HTML module. */ -static void Nav_open_url(BrowserWindow *bw, const DilloUrl *url, gint offset) +static void Nav_open_url(DilloDoc *dd, const DilloUrl *url, gint offset) { DilloUrl *old_url = NULL; gboolean MustLoad; @@ -154,48 +158,49 @@ static void Nav_open_url(BrowserWindow * DilloWeb *Web; gboolean ForceReload = (URL_FLAGS(url) & URL_E2EReload); - MSG("Nav_open_url: Url=>%s<\n", URL_STR_(url)); + _MSG("Nav_open_url: Url=>%s<\n", URL_STR_(url)); /* Get the url of the current page */ - if ( a_Nav_stack_ptr(bw) != -1 ) - old_url = a_History_get_url(NAV_TOP(bw)); + if ( a_Nav_stack_ptr(dd) != -1 ) + old_url = a_History_get_url(NAV_TOP(dd)); /* Record current scrolling position * (the strcmp check is necessary because of redirections) */ if (old_url && - !strcmp(URL_STR(old_url), a_Interface_get_location_text(bw))) { + !strcmp(URL_STR(old_url), a_Interface_get_location_text(dd->bw))) { old_url->scrolling_position_x = a_Dw_gtk_scrolled_window_get_scrolling_position_x( - GTK_DW_SCROLLED_WINDOW(bw->docwin)); + GTK_DW_SCROLLED_WINDOW(dd->docwin)); old_url->scrolling_position_y = a_Dw_gtk_scrolled_window_get_scrolling_position_y( - GTK_DW_SCROLLED_WINDOW(bw->docwin)); + GTK_DW_SCROLLED_WINDOW(dd->docwin)); } /* Update navigation-stack-pointer (offset may be zero) */ - Nav_stack_move_ptr(bw, offset); + Nav_stack_move_ptr(dd, offset); /* Page must be reloaded, if old and new url (without anchor) differ */ MustLoad = ForceReload || !old_url; if (old_url){ MustLoad |= a_Url_cmp(old_url, url); - MustLoad |= strcmp(URL_STR(old_url), a_Interface_get_location_text(bw)); + /* TODO: possible issue with background/(i)frame load, see above */ + MustLoad |= strcmp(URL_STR(old_url), a_Interface_get_location_text(dd->bw)); } if ( MustLoad ) { - a_Interface_stop(bw); - a_Interface_clean(bw); + a_Doc_stop(dd); + a_Doc_clean(dd); - a_Menu_pagemarks_new(bw); + a_Menu_pagemarks_new(dd); Web = a_Web_new(url); - Web->bw = bw; + Web->dd = dd; Web->flags |= WEB_RootUrl; if ((ClientKey = a_Capi_open_url(Web, NULL, NULL)) != 0) { - a_Interface_add_client(bw, ClientKey, 1); - a_Interface_add_url(bw, url, WEB_RootUrl); + a_Doc_add_client(dd, ClientKey, 1); + a_Doc_add_url(dd, url, WEB_RootUrl); } - a_Interface_set_cursor(bw, GDK_LEFT_PTR); + a_Doc_set_cursor(dd, GDK_LEFT_PTR); } /* Jump to #anchor position */ @@ -203,7 +208,7 @@ static void Nav_open_url(BrowserWindow * /* todo: push on stack */ gchar *pf = a_Url_decode_hex_str(URL_FRAGMENT_(url)); a_Dw_gtk_scrolled_window_set_anchor( - GTK_DW_SCROLLED_WINDOW(bw->docwin), pf); + GTK_DW_SCROLLED_WINDOW(dd->docwin), pf); g_free(pf); } } @@ -212,155 +217,191 @@ static void Nav_open_url(BrowserWindow * * Cancel the last expected url if present. The responsibility * for actually aborting the data stream remains with the caller. */ -void a_Nav_cancel_expect(BrowserWindow *bw) +void a_Nav_cancel_expect(DilloDoc *dd) { - if (bw->nav_expecting) { - if (bw->nav_expect_url) { - a_Url_free(bw->nav_expect_url); - bw->nav_expect_url = NULL; + if (dd->nav_expecting) { + if (dd->nav_expect_url) { + a_Url_free(dd->nav_expect_url); + dd->nav_expect_url = NULL; } - bw->nav_expecting = FALSE; + dd->nav_expecting = FALSE; } } /* * We have an answer! Set things accordingly. */ -void a_Nav_expect_done(BrowserWindow *bw) +void a_Nav_expect_done(DilloDoc *dd) { gint idx; DilloUrl *url; - g_return_if_fail(bw != NULL); + g_return_if_fail(dd != NULL); - if (bw->nav_expecting) { - url = bw->nav_expect_url; + if (dd->nav_expecting) { + url = dd->nav_expect_url; /* unset E2EReload before adding this url to history */ - a_Url_set_flags(url, URL_FLAGS(url) & ~URL_E2EReload); + a_Url_set_flags(url, (URL_FLAGS(url) & ~URL_E2EReload) | URL_MustCache); idx = a_History_add_url(url); - Nav_stack_add(bw, idx); + Nav_stack_add(dd, idx); a_Url_free(url); - bw->nav_expect_url = NULL; - bw->nav_expecting = FALSE; + dd->nav_expect_url = NULL; + dd->nav_expecting = FALSE; } - Nav_stack_clean(bw); - a_Interface_set_button_sens(bw); + Nav_stack_clean(dd); + a_Doc_progress_update(dd); +} + +/* + * Remove top-URL from the navigation stack. + * (Used to remove URLs that force redirection) + */ +void a_Nav_remove_top_url(DilloDoc *dd) +{ + g_return_if_fail (dd != NULL); + + /* Deallocate the URL a the top of the stack */ + Nav_stack_remove(dd, a_Nav_stack_size(dd) - 1); } /* * Make 'url' the current browsed page (upon data arrival) - * - Set bw to expect the URL data + * - Set dd to expect the URL data * - Ask the cache to feed back the requested URL (via Nav_open_url) */ -void a_Nav_push(BrowserWindow *bw, const DilloUrl *url) +void a_Nav_push(DilloDoc *dd, const DilloUrl *url) { - g_return_if_fail (bw != NULL); + g_return_if_fail (dd != NULL); - if (bw->nav_expecting && a_Url_cmp(bw->nav_expect_url, url) == 0 && - URL_STRCAMP_EQ(URL_FRAGMENT_(bw->nav_expect_url), URL_FRAGMENT_(url))) { + if (dd->nav_expecting && a_Url_cmp(dd->nav_expect_url, url) == 0 && + URL_STRCAMP_EQ(URL_FRAGMENT_(dd->nav_expect_url), URL_FRAGMENT_(url)) + && !(URL_FLAGS(url) & URL_RealmAccess)) { //except BASIC Realm /* we're already expecting that url (most probably a double-click) */ return; } - a_Nav_cancel_expect(bw); - bw->nav_expect_url = a_Url_dup(url); - bw->nav_expecting = TRUE; - Nav_open_url(bw, url, 0); + a_Nav_cancel_expect(dd); + dd->nav_expect_url = a_Url_dup(url); + dd->nav_expecting = TRUE; + /* is this is a targeted URL, (re)name the document after it */ + if(URL_TARGET_(url)) + a_Doc_set_name(dd, (gchar *) URL_TARGET_(url)); + Nav_open_url(dd, url, 0); } /* * Same as a_Nav_push() but in a new window. */ -void a_Nav_push_nw(BrowserWindow *bw, const DilloUrl *url) +void a_Nav_push_nw(DilloDoc *dd, const DilloUrl *url) { gint width, height; BrowserWindow *newbw; - gdk_window_get_size (bw->main_window->window, &width, &height); + gdk_window_get_size (dd->bw->main_window->window, &width, &height); newbw = a_Interface_browser_window_new(width, height, 0); - a_Nav_push(newbw, url); + a_Nav_push(newbw->dd, url); } /* * Wraps a_Nav_push to match 'DwPage->link' function type */ -void a_Nav_vpush(void *vbw, const DilloUrl *url) +void a_Nav_vpush(void *vdd, const DilloUrl *url) { - a_Nav_push(vbw, url); + a_Nav_push(vdd, url); } /* * Send the browser back to previous page */ -void a_Nav_back(BrowserWindow *bw) +void a_Nav_back(DilloDoc *dd) { - gint idx = a_Nav_stack_ptr(bw); + gint idx = a_Nav_stack_ptr(dd); - a_Nav_cancel_expect(bw); + a_Nav_cancel_expect(dd); if ( --idx >= 0 ){ - a_Interface_msg(bw, ""); - Nav_open_url(bw, a_History_get_url(NAV_IDX(bw,idx)), -1); + a_Interface_msg(dd->bw, ""); + Nav_open_url(dd, a_History_get_url(NAV_IDX(dd,idx)), -1); } } /* * Send the browser to next page in the history list */ -void a_Nav_forw(BrowserWindow *bw) +void a_Nav_forw(DilloDoc *dd) { - gint idx = a_Nav_stack_ptr(bw); + gint idx = a_Nav_stack_ptr(dd); - a_Nav_cancel_expect(bw); - if (++idx < a_Nav_stack_size(bw)) { - a_Interface_msg(bw, ""); - Nav_open_url(bw, a_History_get_url(NAV_IDX(bw,idx)), +1); + a_Nav_cancel_expect(dd); + if (++idx < a_Nav_stack_size(dd)) { + a_Interface_msg(dd->bw, ""); + Nav_open_url(dd, a_History_get_url(NAV_IDX(dd,idx)), +1); } } /* * Redirect the browser to the HOME page! */ -void a_Nav_home(BrowserWindow *bw) +void a_Nav_home(DilloDoc *dd) { - a_Nav_push(bw, prefs.home); + a_Nav_push(dd, prefs.home); } /* * Jump to an URL within the stack history - * NewBw: {0 = same window, 1 = new window} +#ifndef DISABLE_TABS + * NewDd: {0 = same window, 1 = new window, 2 = new tab} +#else + * NewDd: {0 = same window, 1 = new window} +#endif */ -void a_Nav_jump_callback(GtkWidget *widget, gpointer client_data, gint NewBw) +void a_Nav_jump_callback(GtkWidget *widget, gpointer client_data, gint NewDd) { int idx; - BrowserWindow *bw = client_data; + DilloDoc *dd = client_data; idx = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT (widget), "nav_idx")); - if (idx >= 0 && idx < a_Nav_stack_size(bw)) { - if (NewBw == 1) { - a_Nav_push_nw(bw, a_History_get_url(NAV_IDX(bw,idx))); - } else { - Nav_open_url(bw, a_History_get_url(NAV_IDX(bw,idx)), - idx - a_Nav_stack_ptr(bw)); - } + if (idx >= 0 && idx < a_Nav_stack_size(dd)) { + switch (NewDd) { + case 0: + /* Open link in same bw */ + Nav_open_url(dd, a_History_get_url(NAV_IDX(dd,idx)), + idx - a_Nav_stack_ptr(dd)); + break; + case 1: + /* Open link in a new bw */ + a_Menu_popup_set_url(dd->bw, a_History_get_url(NAV_IDX(dd,idx))); + a_Commands_open_link_nw_callback(widget, dd->bw); + break; +#ifndef DISABLE_TABS + case 2: + /* Open link in a new tab */ + a_Menu_popup_set_url(dd->bw, a_History_get_url(NAV_IDX(dd,idx))); + a_Commands_open_link_nw_tab_callback(widget, dd->bw); + break; +#endif + default: + g_error(_("Unhandled switch type %d in a_Nav_jump_callback in src/nav.c\n"), NewDd); + } } } /* * Callback for reload confirmation */ -static void Nav_reload_confirmation_cb(BrowserWindow *bw) +static void Nav_reload_confirmation_cb(DilloDoc *dd) { - DialogAnswer *answer = bw->question_dialog_answer; + DialogAnswer *answer = dd->bw->question_dialog_answer; _MSG("Nav_reload_confirmation_cb %p\n", bw->question_dialog_window); + if (!answer) return; if (answer->alt_num == 1) { /* "OK" */ DEBUG_MSG(3, "Nav_reload_confirmed\n"); - if ( a_Nav_stack_size(bw) && - bw->question_dialog_data == a_History_get_url(NAV_TOP(bw)) ) { + if ( a_Nav_stack_size(dd) && + dd->bw->question_dialog_data == a_History_get_url(NAV_TOP(dd)) ) { /* a genuine confirmation! */ DEBUG_MSG(3, "Nav_reload_confirmed test: OK\n"); - Nav_reload(bw); + Nav_reload(dd); } } else { /* window closed or cancel button */ @@ -368,27 +409,27 @@ static void Nav_reload_confirmation_cb(B } /* cleanup */ - bw->question_dialog_data = NULL; + dd->bw->question_dialog_data = NULL; g_free(answer->this); - bw->question_dialog_answer = NULL; + dd->bw->question_dialog_answer = NULL; } /* * This one does a_Nav_reload's job! */ -static void Nav_reload(BrowserWindow *bw) +static void Nav_reload(DilloDoc *dd) { DilloUrl *url, *ReqURL; - a_Nav_cancel_expect(bw); - if ( a_Nav_stack_size(bw) ) { - url = a_History_get_url(NAV_TOP(bw)); - ReqURL = a_Url_dup(a_History_get_url(NAV_TOP(bw))); + a_Nav_cancel_expect(dd); + if ( a_Nav_stack_size(dd) ) { + url = a_History_get_url(NAV_TOP(dd)); + ReqURL = a_Url_dup(a_History_get_url(NAV_TOP(dd))); /* Let's make reload be end-to-end */ a_Url_set_flags(ReqURL, URL_FLAGS(ReqURL) | URL_E2EReload); /* This is an explicit reload, so clear the SpamSafe flag */ a_Url_set_flags(ReqURL, URL_FLAGS(ReqURL) & ~URL_SpamSafe); - Nav_open_url(bw, ReqURL, 0); + Nav_open_url(dd, ReqURL, 0); a_Url_free(ReqURL); } } @@ -397,23 +438,23 @@ static void Nav_reload(BrowserWindow *bw * Implement the RELOAD button functionality. * (We haven't defined it yet ;) */ -void a_Nav_reload(BrowserWindow *bw) +void a_Nav_reload(DilloDoc *dd) { DilloUrl *url; - a_Nav_cancel_expect(bw); - if ( a_Nav_stack_size(bw) ) { - url = a_History_get_url(NAV_TOP(bw)); + a_Nav_cancel_expect(dd); + if ( a_Nav_stack_size(dd) ) { + url = a_History_get_url(NAV_TOP(dd)); if (URL_FLAGS(url) & URL_Post) { /* Attempt to repost data, let's confirm... */ - bw->question_dialog_data = (gpointer)url; + dd->bw->question_dialog_data = (gpointer)url; a_Interface_question_dialog( - bw, "Repost form data?", TRUE, - "OK", "Cancel", NULL, NULL, NULL, + dd, _("Repost form data?"), TRUE, + _("OK"), _("Cancel"), NULL, NULL, NULL, (GtkSignalFunc) Nav_reload_confirmation_cb); } else { - Nav_reload(bw); + Nav_reload(dd); } } } diff -pruN dillo-0.8.6/src/nav.h dillo-0.8.6-i18n-misc-20060709/src/nav.h --- dillo-0.8.6/src/nav.h 2005-10-28 01:20:14.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/nav.h 2006-05-16 01:21:09.000000000 +0900 @@ -6,28 +6,29 @@ /* useful macros for the navigation stack */ -#define NAV_IDX(bw, i) (bw)->nav_stack[i] -#define NAV_TOP(bw) (bw)->nav_stack[(bw)->nav_stack_ptr] +#define NAV_IDX(dd, i) (dd)->nav_stack[i] +#define NAV_TOP(dd) (dd)->nav_stack[(dd)->nav_stack_ptr] #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ -void a_Nav_push(BrowserWindow *bw, const DilloUrl *url); -void a_Nav_push_nw(BrowserWindow *bw, const DilloUrl *url); -void a_Nav_vpush(void *vbw, const DilloUrl *url); -void a_Nav_back(BrowserWindow *bw); -void a_Nav_forw(BrowserWindow *bw); -void a_Nav_home(BrowserWindow *bw); -void a_Nav_reload(BrowserWindow *bw); -void a_Nav_init(BrowserWindow *bw); -void a_Nav_free(BrowserWindow *bw); -void a_Nav_cancel_expect (BrowserWindow *bw); -void a_Nav_expect_done(BrowserWindow *bw); -void a_Nav_jump_callback(GtkWidget *widget, gpointer client_data, gint NewBw); -gint a_Nav_stack_ptr(BrowserWindow *bw); -gint a_Nav_stack_size(BrowserWindow *bw); +void a_Nav_push(DilloDoc *dd, const DilloUrl *url); +void a_Nav_push_nw(DilloDoc *dd, const DilloUrl *url); +void a_Nav_vpush(void *vdd, const DilloUrl *url); +void a_Nav_back(DilloDoc *dd); +void a_Nav_forw(DilloDoc *dd); +void a_Nav_home(DilloDoc *dd); +void a_Nav_reload(DilloDoc *dd); +void a_Nav_init(DilloDoc *dd); +void a_Nav_free(DilloDoc *dd); +void a_Nav_cancel_expect (DilloDoc *dd); +void a_Nav_expect_done(DilloDoc *dd); +void a_Nav_remove_top_url(DilloDoc *dd); +void a_Nav_jump_callback(GtkWidget *widget, gpointer client_data, gint NewDd); +gint a_Nav_stack_ptr(DilloDoc *dd); +gint a_Nav_stack_size(DilloDoc *dd); #ifdef __cplusplus diff -pruN dillo-0.8.6/src/plain.c dillo-0.8.6-i18n-misc-20060709/src/plain.c --- dillo-0.8.6/src/plain.c 2006-01-03 03:16:58.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/plain.c 2006-05-16 01:21:09.000000000 +0900 @@ -18,13 +18,13 @@ #include <math.h> /* for rint() */ #include <gtk/gtk.h> +#include "i18n.h" #include "prefs.h" #include "dw_page.h" #include "cache.h" #include "browser.h" #include "web.h" -#include "interface.h" -#include "progressbar.h" +#include "doc.h" #include "misc.h" #include "history.h" #include "nav.h" @@ -35,8 +35,9 @@ typedef struct _DilloPlain { DwWidget *dw; size_t Start_Ofs; /* Offset of where to start reading next */ DwStyle *style; - BrowserWindow *bw; + DilloDoc *dd; gint state; + gchar *charset; } DilloPlain; /* FSM states */ @@ -64,7 +65,7 @@ static int Plain_page_menu(GtkWidget *vi BrowserWindow *bw) { if (event->button == 3) { - a_Menu_popup_set_url(bw, a_History_get_url(NAV_TOP(bw))); + a_Menu_popup_set_url(bw, a_History_get_url(NAV_TOP(bw->dd))); gtk_menu_popup(GTK_MENU(bw->menu_popup.over_page), NULL, NULL, NULL, NULL, event->button, event->time); return TRUE; @@ -75,7 +76,7 @@ static int Plain_page_menu(GtkWidget *vi /* * Create and initialize a new DilloPlain structure. */ -static DilloPlain *Plain_new(BrowserWindow *bw) +static DilloPlain *Plain_new(DilloDoc *dd) { DilloPlain *plain; DwPage *page; @@ -83,30 +84,31 @@ static DilloPlain *Plain_new(BrowserWind DwStyleFont font_attrs; plain = g_new(DilloPlain, 1); + plain->charset = NULL; plain->state = ST_SeekingEol; plain->Start_Ofs = 0; - plain->bw = bw; + plain->dd = dd; plain->dw = a_Dw_page_new(); page = (DwPage *) plain->dw; /* Create the font and attribute for the page. */ font_attrs.name = prefs.fw_fontname; - font_attrs.size = rint(12.0 * prefs.font_factor); + font_attrs.size = rint(prefs.font_sizes[2] * prefs.font_factor); font_attrs.weight = 400; font_attrs.style = DW_STYLE_FONT_STYLE_NORMAL; - - a_Dw_style_init_values (&style_attrs, plain->bw->main_window->window); + strncpy(font_attrs.lang, "", 6); + a_Dw_style_init_values (&style_attrs, plain->dd->bw->main_window->window); style_attrs.font = a_Dw_style_font_new (&font_attrs); style_attrs.color = a_Dw_style_color_new (prefs.text_color, - plain->bw->main_window->window); + plain->dd->bw->main_window->window); plain->style = a_Dw_style_new (&style_attrs, - plain->bw->main_window->window); + plain->dd->bw->main_window->window); /* a_Dw_widget_set_style (plain->dw, plain->style); */ /* The context menu */ gtk_signal_connect_while_alive - (GTK_OBJECT(GTK_BIN(plain->bw->docwin)->child),"button_press_event", - GTK_SIGNAL_FUNC(Plain_page_menu), (gpointer)plain->bw, + (GTK_OBJECT(GTK_BIN(plain->dd->docwin)->child),"button_press_event", + GTK_SIGNAL_FUNC(Plain_page_menu), (gpointer)plain->dd->bw, GTK_OBJECT (page)); return plain; @@ -119,7 +121,7 @@ DwWidget* a_Plain_text(const char *type, void **Data) { DilloWeb *web = P; - DilloPlain *plain = Plain_new(web->bw); + DilloPlain *plain = Plain_new(web->dd); *Call = (CA_Callback_t)Plain_callback; *Data = (void*)plain; @@ -140,11 +142,10 @@ static void Plain_callback(int Op, Cache if (plain->Start_Ofs < Client->BufSize) Plain_write(plain, Client->Buf, Client->BufSize, 1); /* remove this client from our active list */ - a_Interface_close_client(plain->bw, Client->Key); - /* set progress bar insensitive */ - a_Progressbar_update(plain->bw->progress, NULL, 0); - + plain->dd->ready = TRUE; + a_Doc_close_client(plain->dd, Client->Key); a_Dw_style_unref (plain->style); + g_free(plain->charset); g_free(plain); } else { Plain_write(plain, Client->Buf, Client->BufSize, 0); @@ -164,6 +165,8 @@ static void Plain_write(DilloPlain *plai char *data; guint i, len, MaxBytes; + if(!plain->charset) + plain->charset = a_I18n_get_encoding(Buf, BufSize); Start = (char*)Buf + plain->Start_Ofs; MaxBytes = BufSize - plain->Start_Ofs; i = len = 0; @@ -177,7 +180,8 @@ static void Plain_write(DilloPlain *plai } break; case ST_Eol: - data = g_strndup(Start + i - len, len); + data = a_I18n_convert(plain->charset, DILLO_CHARSET, + Start + i - len, len); a_Dw_page_add_text(page, a_Misc_expand_tabs(data), plain->style); g_free(data); a_Dw_page_add_parbreak(page, 0, plain->style); @@ -190,19 +194,17 @@ static void Plain_write(DilloPlain *plai } plain->Start_Ofs += i - len; if ( Eof && len ) { - data = g_strndup(Start + i - len, len); + data = a_I18n_convert(plain->charset, DILLO_CHARSET, + Start + i - len, len); a_Dw_page_add_text(page, a_Misc_expand_tabs(data), plain->style); g_free(data); a_Dw_page_add_parbreak(page, 0, plain->style); plain->Start_Ofs += len; } - if ( plain->bw ) { - gchar completestr[32]; - g_snprintf( - completestr, 32, "%s%.1f Kb", - PBAR_PSTR(prefs.panel_size == 1), - (float)plain->Start_Ofs/1024); - a_Progressbar_update(plain->bw->progress, completestr, 1); + if ( plain->dd ) { + plain->dd->progress = plain->Start_Ofs/1024; + plain->dd->ready = FALSE; + a_Doc_progress_update(plain->dd); } } diff -pruN dillo-0.8.6/src/prefs.c dillo-0.8.6-i18n-misc-20060709/src/prefs.c --- dillo-0.8.6/src/prefs.c 2005-10-28 01:20:14.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/prefs.c 2006-07-08 21:11:44.000000000 +0900 @@ -18,18 +18,25 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include <config.h> + #include <glib.h> #include <sys/types.h> #include <sys/stat.h> +#include <stdio.h> /* for sscanf */ #include <stdlib.h> #include <string.h> /* for strchr */ #include <fcntl.h> #include <unistd.h> #include <locale.h> /* for setlocale */ +#include "intl.h" #include "prefs.h" #include "colors.h" #include "misc.h" +#define DEBUG_LEVEL 5 +#include "debug.h" + /* symbol array */ static const struct { gchar *name; @@ -39,6 +46,8 @@ static const struct { { "http_proxy", DRC_TOKEN_PROXY }, { "http_proxyuser", DRC_TOKEN_PROXYUSER }, { "no_proxy", DRC_TOKEN_NOPROXY }, + { "user_agent", DRC_TOKEN_USER_AGENT }, + { "send_referer", DRC_TOKEN_SEND_REFERER }, { "link_color", DRC_TOKEN_LINK_COLOR }, { "visited_color", DRC_TOKEN_VISITED_COLOR, }, { "bg_color", DRC_TOKEN_BG_COLOR }, @@ -53,8 +62,10 @@ static const struct { { "panel_size", DRC_TOKEN_PANEL_SIZE }, { "small_icons", DRC_TOKEN_SMALL_ICONS }, { "limit_text_width", DRC_TOKEN_LIMIT_TEXT_WIDTH }, + { "limit_font_decoration", DRC_TOKEN_LIMIT_FONT_DECORATION }, { "w3c_plus_heuristics", DRC_TOKEN_W3C_PLUS_HEURISTICS }, { "font_factor", DRC_TOKEN_FONT_FACTOR }, + { "font_sizes", DRC_TOKEN_FONT_SIZES }, { "use_dicache", DRC_TOKEN_USE_DICACHE }, { "show_back", DRC_TOKEN_SHOW_BACK }, { "show_forw", DRC_TOKEN_SHOW_FORW }, @@ -68,15 +79,37 @@ static const struct { { "show_url", DRC_TOKEN_SHOW_URL }, { "show_search", DRC_TOKEN_SHOW_SEARCH }, { "show_progress_box", DRC_TOKEN_SHOW_PROGRESS_BOX }, + { "show_popup_navigation", DRC_TOKEN_SHOW_POPUP_NAVIGATION }, { "fullwindow_start", DRC_TOKEN_FULLWINDOW_START }, { "transient_dialogs", DRC_TOKEN_TRANSIENT_DIALOGS }, + { "popup_dialogs", DRC_TOKEN_POPUP_DIALOGS }, + { "vw_aafontname", DRC_TOKEN_VW_AAFONT }, + { "fw_aafontname", DRC_TOKEN_FW_AAFONT }, { "vw_fontname", DRC_TOKEN_VW_FONT }, { "fw_fontname", DRC_TOKEN_FW_FONT }, { "generate_submit", DRC_TOKEN_GENERATE_SUBMIT }, { "enterpress_forces_submit", DRC_TOKEN_ENTERPRESS_FORCES_SUBMIT }, { "search_url", DRC_TOKEN_SEARCH_URL }, + { "search_charset", DRC_TOKEN_SEARCH_CHARSET }, { "show_msg", DRC_TOKEN_SHOW_MSG }, - { "show_extra_warnings", DRC_TOKEN_SHOW_EXTRA_WARNINGS } + { "show_extra_warnings", DRC_TOKEN_SHOW_EXTRA_WARNINGS }, + { "focus_location_on_new", DRC_TOKEN_FOCUS_LOCATION_ON_NEW }, + { "accept_language", DRC_TOKEN_ACCEPT_LANGUAGE }, + { "query_expire_time", DRC_TOKEN_QUERY_EXPIRE_TIME }, + { "min_page_expire", DRC_TOKEN_MIN_PAGE_EXPIRE_TIME }, + { "min_image_expire", DRC_TOKEN_MIN_IMAGE_EXPIRE_TIME }, +#ifndef DISABLE_TABS + { "tab_load_in_background", DRC_TOKEN_TAB_LOAD_IN_BACKGROUND }, + { "tab_instead_of_window", DRC_TOKEN_TAB_INSTEAD_OF_WINDOW }, + { "tab_bar_show_fullscreen", DRC_TOKEN_TAB_BAR_SHOW_FULLSCREEN }, + { "tab_bar_show_single_tab", DRC_TOKEN_TAB_BAR_SHOW_SINGLE_TAB }, + { "tab_bar_scroller", DRC_TOKEN_TAB_BAR_SCROLLER }, + { "tab_bar_homogeneous", DRC_TOKEN_TAB_BAR_HOMOGENEOUS }, + { "tab_title_compress", DRC_TOKEN_TAB_TITLE_COMPRESS }, + { "tab_close_middle_click", DRC_TOKEN_TAB_CLOSE_MIDDLE_CLICK }, + { "compress_vowels", DRC_TOKEN_COMPRESS_VOWELS }, + { "compress_common_prefixes", DRC_TOKEN_COMPRESS_COMMON_PREFIXES }, +#endif /* !DISABLE_TABS */ }; static const guint n_symbols = sizeof (symbols) / sizeof (symbols[0]); @@ -129,6 +162,21 @@ static guint Prefs_parser(GScanner *scan prefs.no_proxy = g_strdup(scanner->value.v_string); prefs.no_proxy_vec = g_strsplit(prefs.no_proxy, " ", 0); break; + case DRC_TOKEN_USER_AGENT: + { + gchar *prefs_value = g_strdup(scanner->value.v_string); + gchar *option = NULL; + g_free(prefs.user_agent); + if((option = strstr(prefs_value, "%v"))) { + option[1] = 's'; + prefs.user_agent = g_strdup_printf(prefs_value, VERSION); + } else prefs.user_agent = prefs_value; + DEBUG_MSG(4, "Setting User-Agent: \"%s\"\n", prefs.user_agent); + break; + } + case DRC_TOKEN_SEND_REFERER: + prefs.send_referer = (strcmp(scanner->value.v_string, "YES") == 0); + break; case DRC_TOKEN_LINK_COLOR: prefs.link_color = a_Color_parse(scanner->value.v_string, prefs.link_color, &st); @@ -184,10 +232,30 @@ static guint Prefs_parser(GScanner *scan break; case DRC_TOKEN_FONT_FACTOR: prefs.font_factor = strtod(scanner->value.v_string, NULL); - break; +#ifndef DISABLE_ANTI_ALIAS + prefs.font_factor *= 0.8; +#endif + break; + case DRC_TOKEN_FONT_SIZES: + { + int sizes[D_FONT_SIZE_NUM]; + if (sscanf(scanner->value.v_string, + "%d %d %d %d %d %d", + &sizes[0], + &sizes[1], + &sizes[2], + &sizes[3], + &sizes[4], + &sizes[5]) == D_FONT_SIZE_NUM) { + memcpy(prefs.font_sizes, sizes, sizeof(int) * D_FONT_SIZE_NUM); + } + } case DRC_TOKEN_LIMIT_TEXT_WIDTH: prefs.limit_text_width = (strcmp(scanner->value.v_string, "YES") == 0); break; + case DRC_TOKEN_LIMIT_FONT_DECORATION: + prefs.limit_font_decoration = (strcmp(scanner->value.v_string, "YES") == 0); + break; case DRC_TOKEN_W3C_PLUS_HEURISTICS: prefs.w3c_plus_heuristics = (strcmp(scanner->value.v_string,"YES") == 0); break; @@ -230,17 +298,31 @@ static guint Prefs_parser(GScanner *scan case DRC_TOKEN_SHOW_PROGRESS_BOX: prefs.show_progress_box = (strcmp(scanner->value.v_string, "YES") == 0); break; + case DRC_TOKEN_SHOW_POPUP_NAVIGATION: + prefs.show_popup_navigation = (strcmp(scanner->value.v_string, "YES") == 0); + break; case DRC_TOKEN_FULLWINDOW_START: prefs.fullwindow_start = (strcmp(scanner->value.v_string, "YES") == 0); break; case DRC_TOKEN_TRANSIENT_DIALOGS: prefs.transient_dialogs = (strcmp(scanner->value.v_string, "YES") == 0); break; + case DRC_TOKEN_POPUP_DIALOGS: + prefs.popup_dialogs = (strcmp(scanner->value.v_string, "YES") == 0); + break; +#ifdef DISABLE_ANTI_ALIAS case DRC_TOKEN_FW_FONT: +#else + case DRC_TOKEN_FW_AAFONT: +#endif g_free(prefs.fw_fontname); prefs.fw_fontname = g_strdup(scanner->value.v_string); break; +#ifdef DISABLE_ANTI_ALIAS case DRC_TOKEN_VW_FONT: +#else + case DRC_TOKEN_VW_AAFONT: +#endif g_free(prefs.vw_fontname); prefs.vw_fontname = g_strdup(scanner->value.v_string); break; @@ -255,6 +337,10 @@ static guint Prefs_parser(GScanner *scan g_free(prefs.search_url); prefs.search_url = g_strdup(scanner->value.v_string); break; + case DRC_TOKEN_SEARCH_CHARSET: + g_free(prefs.search_charset); + prefs.search_charset = g_strdup(scanner->value.v_string); + break; case DRC_TOKEN_SHOW_MSG: prefs.show_msg = (strcmp(scanner->value.v_string, "YES") == 0); @@ -263,23 +349,94 @@ static guint Prefs_parser(GScanner *scan prefs.show_extra_warnings = (strcmp(scanner->value.v_string, "YES") == 0); break; + case DRC_TOKEN_FOCUS_LOCATION_ON_NEW: + prefs.focus_location_on_new = + (strcmp(scanner->value.v_string, "YES") == 0); + break; + case DRC_TOKEN_ACCEPT_LANGUAGE: + if (strlen(scanner->value.v_string) != 0) { + g_free(prefs.accept_language); + prefs.accept_language = g_strdup(scanner->value.v_string); + } + break; + case DRC_TOKEN_QUERY_EXPIRE_TIME: + prefs.query_expire_time = strtol(scanner->value.v_string, NULL, 10); + break; + case DRC_TOKEN_MIN_PAGE_EXPIRE_TIME: + prefs.min_page_expire_time = strtol(scanner->value.v_string, NULL, 10); + break; + case DRC_TOKEN_MIN_IMAGE_EXPIRE_TIME: + prefs.min_image_expire_time = strtol(scanner->value.v_string, NULL, 10); + break; +#ifndef DISABLE_TABS + case DRC_TOKEN_TAB_LOAD_IN_BACKGROUND: + prefs.tab_load_in_background = + (strcmp(scanner->value.v_string, "YES") == 0); + break; + case DRC_TOKEN_TAB_INSTEAD_OF_WINDOW: + prefs.tab_instead_of_window = + (strcmp(scanner->value.v_string, "YES") == 0); + break; + case DRC_TOKEN_TAB_BAR_SHOW_FULLSCREEN: + prefs.tab_bar_show_fullscreen = + (strcmp(scanner->value.v_string, "YES") == 0); + break; + case DRC_TOKEN_TAB_BAR_SHOW_SINGLE_TAB: + prefs.tab_bar_show_single_tab = + (strcmp(scanner->value.v_string, "YES") == 0); + break; + case DRC_TOKEN_TAB_BAR_SCROLLER: + prefs.tab_bar_scroller = + (strcmp(scanner->value.v_string, "YES") == 0); + break; + case DRC_TOKEN_TAB_BAR_HOMOGENEOUS: + prefs.tab_bar_homogeneous = + (strcmp(scanner->value.v_string, "YES") == 0); + break; + case DRC_TOKEN_TAB_TITLE_COMPRESS: + prefs.tab_title_compress = + (strcmp(scanner->value.v_string, "YES") == 0); + break; + case DRC_TOKEN_TAB_CLOSE_MIDDLE_CLICK: + prefs.tab_close_middle_click = + (strcmp(scanner->value.v_string, "YES") == 0); + break; + case DRC_TOKEN_COMPRESS_VOWELS: + g_free(prefs.compress_vowels); + prefs.compress_vowels = g_strdup(scanner->value.v_string); + break; + case DRC_TOKEN_COMPRESS_COMMON_PREFIXES: + g_free(prefs.compress_common_prefixes); + prefs.compress_common_prefixes = g_strdup(scanner->value.v_string); + prefs.compress_common_prefixes_vec = + g_strsplit(prefs.compress_common_prefixes, ";", 0); + break; +#endif /*DISABLE_TABS */ default: break; /* Not reached */ } return G_TOKEN_NONE; } -static gint Prefs_load(void) +static gint Prefs_load(char *rcfile) { GScanner *scanner; - gint fd; + gint fd = -1; guint i, expected_token; gchar *file; /* Here we load and set options from dillorc */ - file = a_Misc_prepend_user_home(".dillo/dillorc"); - fd = open(file, O_RDONLY); - g_free(file); + if (rcfile) { + if ((fd = open(rcfile, O_RDONLY)) < 0) { + g_printerr(_("Error: Can't open specified config file." + " default file is used.\n")); + } + } + if (fd < 0) { + file = a_Misc_prepend_user_home(".dillo/dillorc"); + fd = open(file, O_RDONLY); + g_free(file); + } if (fd < 0 && (fd = open(DILLORC_SYS, O_RDONLY)) < 0) return FILE_NOT_FOUND; @@ -318,7 +475,7 @@ static gint Prefs_load(void) g_scanner_input_file(scanner, fd); /* give the error handler an idea on how the input is named */ - scanner->input_name = "dillorc"; + scanner->input_name = (rcfile) ? rcfile : "dillorc"; /* * Scanning loop, we parse the input until it's end is reached, @@ -354,7 +511,7 @@ static gint Prefs_load(void) return PARSE_OK; } -void a_Prefs_init(void) +void a_Prefs_init(char *rcfile) { gchar *old_locale; @@ -366,6 +523,8 @@ void a_Prefs_init(void) prefs.http_proxyuser = NULL; prefs.no_proxy = NULL; prefs.no_proxy_vec = NULL; + prefs.user_agent = NULL; + prefs.send_referer = TRUE; prefs.link_color = DW_COLOR_DEFAULT_BLUE; prefs.visited_color = DW_COLOR_DEFAULT_PURPLE; prefs.bg_color = DW_COLOR_DEFAULT_BGND; @@ -380,8 +539,18 @@ void a_Prefs_init(void) prefs.panel_size = 1; prefs.small_icons = FALSE; prefs.limit_text_width = FALSE; + prefs.limit_font_decoration = FALSE; prefs.w3c_plus_heuristics = TRUE; prefs.font_factor = 1.0; +#ifndef DISABLE_ANTI_ALIAS + prefs.font_factor = 0.8; +#endif + prefs.font_sizes[0] = D_FONT_SIZE_1; + prefs.font_sizes[1] = D_FONT_SIZE_2; + prefs.font_sizes[2] = D_FONT_SIZE_3; + prefs.font_sizes[3] = D_FONT_SIZE_4; + prefs.font_sizes[4] = D_FONT_SIZE_5; + prefs.font_sizes[5] = D_FONT_SIZE_6; prefs.use_dicache = FALSE; prefs.show_back=TRUE; prefs.show_forw=TRUE; @@ -395,21 +564,42 @@ void a_Prefs_init(void) prefs.show_url=TRUE; prefs.show_search=TRUE; prefs.show_progress_box=TRUE; + prefs.show_popup_navigation=TRUE; prefs.fullwindow_start=FALSE; prefs.transient_dialogs=FALSE; - prefs.vw_fontname = g_strdup("helvetica"); - prefs.fw_fontname = g_strdup("courier"); + prefs.popup_dialogs=FALSE; + prefs.vw_fontname = g_strdup(D_DEFAULT_VW_FONT); + prefs.fw_fontname = g_strdup(D_DEFAULT_FW_FONT); prefs.generate_submit = FALSE; prefs.enterpress_forces_submit = FALSE; - prefs.search_url = g_strdup("http://www.google.com/search?q=%s"); + prefs.search_url = g_strdup(DILLO_SEARCH_URL); + prefs.search_charset = g_strdup(DILLO_SEARCH_CHARSET); prefs.show_msg = TRUE; prefs.show_extra_warnings = FALSE; - + prefs.focus_location_on_new = TRUE; + prefs.accept_language = g_strdup(DILLO_ACCEPT_LANGUAGE); + prefs.query_expire_time = -1; + prefs.min_page_expire_time = 60; // some sites need 0. 60; // 1 minute + prefs.min_image_expire_time = 1800; // 30 minutes +#ifndef DISABLE_TABS + prefs.tab_load_in_background = FALSE; + prefs.tab_instead_of_window = FALSE; + prefs.tab_bar_show_fullscreen = FALSE; + prefs.tab_bar_show_single_tab = FALSE; + prefs.tab_bar_scroller = FALSE; + prefs.tab_bar_homogeneous = TRUE; + prefs.tab_title_compress = TRUE; + prefs.tab_close_middle_click = TRUE; + prefs.compress_vowels = g_strdup(COMPRESS_VOWELS); + prefs.compress_common_prefixes = g_strdup(COMPRESS_COMMON_PREFIXES); + prefs.compress_common_prefixes_vec = + g_strsplit(prefs.compress_common_prefixes, ";", 0); +#endif /* DISABLE_TABS */ /* this locale stuff is to avoid parsing problems with float numbers */ old_locale = g_strdup (setlocale (LC_NUMERIC, NULL)); setlocale (LC_NUMERIC, "C"); - Prefs_load(); + Prefs_load(rcfile); setlocale (LC_NUMERIC, old_locale); g_free (old_locale); @@ -426,9 +616,18 @@ void a_Prefs_freeall(void) if (prefs.no_proxy_vec) g_strfreev(prefs.no_proxy_vec); a_Url_free(prefs.http_proxy); + g_free(prefs.user_agent); g_free(prefs.fw_fontname); g_free(prefs.vw_fontname); a_Url_free(prefs.start_page); a_Url_free(prefs.home); g_free(prefs.search_url); + g_free(prefs.search_charset); + g_free(prefs.accept_language); +#ifndef DISABLE_TABS + g_free(prefs.compress_vowels); + g_free(prefs.compress_common_prefixes); + if (prefs.compress_common_prefixes_vec) + g_strfreev(prefs.compress_common_prefixes_vec); +#endif /* DISABLE_TABS */ } diff -pruN dillo-0.8.6/src/prefs.h dillo-0.8.6-i18n-misc-20060709/src/prefs.h --- dillo-0.8.6/src/prefs.h 2005-10-28 01:20:14.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/prefs.h 2006-05-16 01:21:09.000000000 +0900 @@ -9,6 +9,9 @@ extern "C" { #define DILLO_START_PAGE "about:splash" #define DILLO_HOME "http://www.dillo.org/" +#define DILLO_SEARCH_URL "http://www.google.com/search?ie=UTF-8&oe=UTF-8&q=%s" +#define DILLO_SEARCH_CHARSET "UTF-8" +#define DILLO_ACCEPT_LANGUAGE "en-us" #define D_GEOMETRY_DEFAULT_WIDTH 640 #define D_GEOMETRY_DEFAULT_HEIGHT 550 #define D_GEOMETRY_DEFAULT_XPOS -9999 @@ -20,6 +23,28 @@ extern "C" { #define DW_COLOR_DEFAULT_PURPLE 0x800080 #define DW_COLOR_DEFAULT_BGND 0xd6d6c0 +#define COMPRESS_VOWELS "aeiouyAEIOUY" +#define COMPRESS_COMMON_PREFIXES "index of ;re: ;fwd: ;www.;welcome to ;the " + +#ifdef DISABLE_ANTI_ALIAS + #define D_DEFAULT_VW_FONT "*-gothic" + #define D_DEFAULT_FW_FONT "*-gothic" + #define D_FONT_SIZE_BASE 8 +#else + #define D_DEFAULT_VW_FONT "*" + #define D_DEFAULT_FW_FONT "*" + #define D_FONT_SIZE_BASE 6 +#endif + +/* The following array of font sizes has to be _strictly_ crescent */ +#define D_FONT_SIZE_1 (D_FONT_SIZE_BASE + 2) +#define D_FONT_SIZE_2 (D_FONT_SIZE_BASE + 4) +#define D_FONT_SIZE_3 (D_FONT_SIZE_BASE + 6) +#define D_FONT_SIZE_4 (D_FONT_SIZE_BASE + 8) +#define D_FONT_SIZE_5 (D_FONT_SIZE_BASE + 12) +#define D_FONT_SIZE_6 (D_FONT_SIZE_BASE + 16) +#define D_FONT_SIZE_NUM 6 + /* define enumeration values to be returned */ enum { PARSE_OK = 0, @@ -33,6 +58,8 @@ typedef enum { DRC_TOKEN_PROXY, DRC_TOKEN_PROXYUSER, DRC_TOKEN_NOPROXY, + DRC_TOKEN_USER_AGENT, + DRC_TOKEN_SEND_REFERER, DRC_TOKEN_LINK_COLOR, DRC_TOKEN_VISITED_COLOR, DRC_TOKEN_BG_COLOR, @@ -46,8 +73,10 @@ typedef enum { DRC_TOKEN_PANEL_SIZE, DRC_TOKEN_SMALL_ICONS, DRC_TOKEN_FONT_FACTOR, + DRC_TOKEN_FONT_SIZES, DRC_TOKEN_SHOW_TOOLTIP, DRC_TOKEN_LIMIT_TEXT_WIDTH, + DRC_TOKEN_LIMIT_FONT_DECORATION, DRC_TOKEN_W3C_PLUS_HEURISTICS, DRC_TOKEN_USE_DICACHE, DRC_TOKEN_SHOW_BACK, @@ -62,15 +91,37 @@ typedef enum { DRC_TOKEN_SHOW_URL, DRC_TOKEN_SHOW_SEARCH, DRC_TOKEN_SHOW_PROGRESS_BOX, + DRC_TOKEN_SHOW_POPUP_NAVIGATION, DRC_TOKEN_FULLWINDOW_START, DRC_TOKEN_TRANSIENT_DIALOGS, + DRC_TOKEN_POPUP_DIALOGS, DRC_TOKEN_FW_FONT, DRC_TOKEN_VW_FONT, + DRC_TOKEN_FW_AAFONT, + DRC_TOKEN_VW_AAFONT, DRC_TOKEN_GENERATE_SUBMIT, DRC_TOKEN_ENTERPRESS_FORCES_SUBMIT, DRC_TOKEN_SEARCH_URL, + DRC_TOKEN_SEARCH_CHARSET, DRC_TOKEN_SHOW_MSG, DRC_TOKEN_SHOW_EXTRA_WARNINGS, + DRC_TOKEN_FOCUS_LOCATION_ON_NEW, + DRC_TOKEN_ACCEPT_LANGUAGE, + DRC_TOKEN_QUERY_EXPIRE_TIME, + DRC_TOKEN_MIN_PAGE_EXPIRE_TIME, + DRC_TOKEN_MIN_IMAGE_EXPIRE_TIME, +#ifndef DISABLE_TABS + DRC_TOKEN_TAB_LOAD_IN_BACKGROUND, + DRC_TOKEN_TAB_INSTEAD_OF_WINDOW, + DRC_TOKEN_TAB_BAR_SHOW_FULLSCREEN, + DRC_TOKEN_TAB_BAR_SHOW_SINGLE_TAB, + DRC_TOKEN_TAB_BAR_SCROLLER, + DRC_TOKEN_TAB_BAR_HOMOGENEOUS, + DRC_TOKEN_TAB_TITLE_COMPRESS, + DRC_TOKEN_TAB_CLOSE_MIDDLE_CLICK, + DRC_TOKEN_COMPRESS_VOWELS, + DRC_TOKEN_COMPRESS_COMMON_PREFIXES, +#endif /* !DISABLE_TABS */ DRC_TOKEN_LAST } Dillo_Rc_TokenType; @@ -86,6 +137,8 @@ struct _DilloPrefs { gchar *http_proxyuser; gchar *no_proxy; gchar **no_proxy_vec; + gchar *user_agent; + gboolean send_referer; DilloUrl *start_page; DilloUrl *home; gint32 link_color; @@ -100,8 +153,10 @@ struct _DilloPrefs { gint panel_size; gboolean small_icons; gboolean limit_text_width; + gboolean limit_font_decoration; gboolean w3c_plus_heuristics; gdouble font_factor; + gint font_sizes[D_FONT_SIZE_NUM]; gboolean use_dicache; gboolean show_back; gboolean show_forw; @@ -115,21 +170,42 @@ struct _DilloPrefs { gboolean show_url; gboolean show_search; gboolean show_progress_box; + gboolean show_popup_navigation; gboolean fullwindow_start; gboolean transient_dialogs; + gboolean popup_dialogs; gchar *vw_fontname; gchar *fw_fontname; gboolean generate_submit; gboolean enterpress_forces_submit; gchar *search_url; + gchar *search_charset; gboolean show_msg; gboolean show_extra_warnings; + gboolean focus_location_on_new; + gchar *accept_language; + gint query_expire_time; + gint min_page_expire_time; + gint min_image_expire_time; +#ifndef DISABLE_TABS + gboolean tab_load_in_background; + gboolean tab_instead_of_window; + gboolean tab_bar_show_fullscreen; + gboolean tab_bar_show_single_tab; + gboolean tab_bar_scroller; + gboolean tab_bar_homogeneous; + gboolean tab_title_compress; + gboolean tab_close_middle_click; + gchar *compress_vowels; + gchar *compress_common_prefixes; + gchar **compress_common_prefixes_vec; +#endif /* DISABLE_TABS */ }; /* Global Data */ DilloPrefs prefs; -void a_Prefs_init(void); +void a_Prefs_init(char *rcfile); void a_Prefs_freeall(void); #ifdef __cplusplus diff -pruN dillo-0.8.6/src/progressbar.h dillo-0.8.6-i18n-misc-20060709/src/progressbar.h --- dillo-0.8.6/src/progressbar.h 2005-10-28 01:20:14.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/progressbar.h 2006-05-16 01:21:09.000000000 +0900 @@ -27,6 +27,8 @@ extern "C" { #endif /* __cplusplus */ +#define PBAR_L 32 /* max length of progress bar string */ + #define PBAR_ISTR(s) (s) ? "" : "Images: " #define PBAR_PSTR(s) (s) ? "" : "Page: " diff -pruN dillo-0.8.6/src/selection.c dillo-0.8.6-i18n-misc-20060709/src/selection.c --- dillo-0.8.6/src/selection.c 2006-01-03 03:16:32.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/selection.c 2006-05-16 01:21:09.000000000 +0900 @@ -14,6 +14,7 @@ * See doc/Selection.txt for informations about this module. */ +#include "i18n.h" #include "selection.h" #include "strbuf.h" #include "dw_gtk_viewport.h" @@ -570,7 +571,7 @@ static void Selection_copy(Selection *se strlen (i->content.data.text) - a_char); a_Strbuf_append (strbuf, tmp); g_free (tmp); - } else if (cmp == 0) { + } else if (cmp == 0 && b_char > 0) { /* the end */ tmp = g_strndup(si->content.data.text, b_char); a_Strbuf_append (strbuf, tmp); @@ -638,8 +639,11 @@ void a_Selection_set_selection(GtkWidget /* As the clear-selection callback is not being called automatically * before setting the new value, it'll be cleared here. --Jcid * todo: this selection code needs a revision */ + gchar *oldSelection; g_free(selection); - selection = g_strdup(str); + oldSelection = a_I18n_locale_from_DILLO_CHARSET(str, -1); + selection = a_I18n_string_check(oldSelection, DW_CHARSET); + g_free(oldSelection); } } @@ -649,8 +653,25 @@ void a_Selection_set_selection(GtkWidget void a_Selection_give_selection_callback(GtkWidget *widget, GtkSelectionData *data, guint info, guint time) { - gtk_selection_data_set(data, GDK_SELECTION_TYPE_STRING, - 8, selection, strlen(selection)); + guchar *ctext; + gint format, length; + GdkAtom encoding; + gboolean is_ascii_string; + gint i; + + is_ascii_string = TRUE; + for (i = 0; selection[i]; i++) { + is_ascii_string &= IS_ASCII_CHAR(selection[i]); + } + + if (is_ascii_string) { + gtk_selection_data_set(data, GDK_SELECTION_TYPE_STRING, + 8, selection, strlen(selection)); + } else { + gdk_string_to_compound_text(selection, &encoding, &format, &ctext, &length); + gtk_selection_data_set(data, encoding, 8, ctext, length); + gdk_free_compound_text(ctext); + } } /* @@ -666,3 +687,4 @@ gint a_Selection_clear_selection_callbac return TRUE; } +/* vim: set ts=3 sw=3 sts=3 expandtab:*/ diff -pruN dillo-0.8.6/src/strbuf.c dillo-0.8.6-i18n-misc-20060709/src/strbuf.c --- dillo-0.8.6/src/strbuf.c 2005-10-28 01:20:15.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/strbuf.c 2006-05-16 01:21:09.000000000 +0900 @@ -78,17 +78,27 @@ gchar* a_Strbuf_chars (Strbuf_t *strbuf) g_free (strbuf->str); strbuf->str = g_new (gchar, strbuf->num_chars + 1); +#if 1 /* if 1, use old code. */ + strbuf->list = g_slist_reverse (strbuf->list); +#else /* The strings in the list are prepended so we have to start from the tail * and work our way to the start of the new string */ p = strbuf->str + strbuf->num_chars; +#endif + p = strbuf->str; for (it = strbuf->list; it; it = it->next) { s = (gchar*)(it->data); l = strlen (s); - p -= l; memcpy (p, s, l * sizeof (gchar)); + p += l; } +#if 1 /* if 1, use old code. */ + *p = 0; + strbuf->list = g_slist_reverse (strbuf->list); /* reverse reversion */ +#else p[strbuf->num_chars] = 0; +#endif strbuf->str_valid = TRUE; return strbuf->str; diff -pruN dillo-0.8.6/src/tab.c dillo-0.8.6-i18n-misc-20060709/src/tab.c --- dillo-0.8.6/src/tab.c 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/tab.c 2006-05-16 01:21:09.000000000 +0900 @@ -0,0 +1,500 @@ +/* + * File: tab.c + * + * Copyright (C) 2003 Frank de Lange <frank@unternet.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. */ + +#ifndef DISABLE_TABS + +#include <config.h> + +#include <stdio.h> +#include <ctype.h> +#include <gtk/gtk.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/time.h> +#include <fcntl.h> + +#include "intl.h" +#include "i18n.h" +#include "misc.h" +#include "dillo.h" +#include "history.h" +#include "nav.h" +#include "doc.h" +#include "IO/Url.h" +#include "interface.h" +#include "tab.h" +#include "commands.h" +#include "prefs.h" +#include "menu.h" + +#include "dw_gtk_scrolled_window.h" +#include "dw_gtk_viewport.h" + +#include <gdk/gdkkeysyms.h> + +#define DEBUG_EVENT 0 +#define DEBUG_SIZE 10 +#define DEBUG_ALLOC 10 + +#define DEBUG_LEVEL 0 +#include "debug.h" + +/* BROWSER TABS */ + +/* callbacks */ + +/* + * callback for tab label resize_request. This adjusts + * the tab title to the width of the tab, compressing + * or shortening (according to preference) the title if needed + */ +void +Tab_label_size_request_callback(GtkWidget *widget, + GtkAllocation *alloc, + gpointer client_data) +{ + DilloDoc *dd = (DilloDoc *) client_data; + GtkLabel *tab_label = (GtkLabel *) widget; + gchar *tab_title, *checked_str, *short_title; + gint tab_title_size, tab_title_len; + + /* the tool tip is attached to the parent of the label, an event box */ + tab_title = ((GtkTooltipsData *) gtk_tooltips_data_get( + GTK_WIDGET( + GTK_WIDGET( + tab_label)->parent)))->tip_text; + + tab_title_size = (gint) ((gfloat) alloc->width / dd->bw->tab_label_average_character_width); + + /* compress or shorten the tab title? */ + tab_title = a_I18n_DW_CHARSET_to_DILLO_CHARSET(tab_title, -1); + tab_title_len = strlen(tab_title); + if (prefs.tab_title_compress) { + /* use title compression algorithm */ + short_title = a_Misc_string_compress(tab_title, tab_title_size); + } else { + /* use simple shortening */ + short_title = a_Misc_string_shorten(tab_title, tab_title_size); + } + g_free(tab_title); + tab_title = a_I18n_DW_CHARSET_from_DILLO_CHARSET(short_title, -1); + g_free(short_title); + + /* check string */ + checked_str = a_I18n_string_check(tab_title, DW_CHARSET); + g_free(tab_title); + + gtk_label_set_text(GTK_LABEL(tab_label), checked_str); + g_free(checked_str); +} + +/* + * callback for tab label button_press_event + * + * used to popup menu with tab options + * + * even though this is called 'tab_label_..., the callback is in + * fact attached to an event box surrounding the tab_label, as gtk + * label widgets can not receive events + */ +void +Tab_label_button_press_event_callback(GtkWidget *widget, + GdkEventButton *event, + gpointer client_data) +{ + DilloDoc *dd = (DilloDoc *) client_data; + switch (event->button) { + case 1: + a_Tab_switch(dd); + break; + case 2: + /* currently unused */ + DEBUG_MSG(DEBUG_EVENT, "You pressed button (%d) over a tab...\n", (gint) event->button); + if (prefs.tab_close_middle_click) + a_Tab_close(dd); + break; + case 3: + /* popup tab options menu */ + if (dd->bw->menu_popup.over_tab) + gtk_widget_destroy(dd->bw->menu_popup.over_tab); + dd->bw->menu_popup.over_tab = a_Menu_popup_tab_new(dd); + gtk_menu_popup(GTK_MENU(dd->bw->menu_popup.over_tab), NULL, NULL, + NULL, NULL, event->button, event->time); + break; + default: + /* weird pointer with more than 3 buttons, ignore */ + DEBUG_MSG(DEBUG_EVENT, "You pressed button (%d) over a tab...\n", (gint) event->button); + break; + } +} + +/* + * callback for tab switch. This just calls a_Tab_switch for the docwin + * passed as page + */ +void +Tab_switch_callback(GtkWidget *tabbrowser, + GtkNotebookPage *page, + gint page_num, + gpointer client_data) +{ + DilloDoc *dd; + GtkWidget *docwin; + + /* the notebook page contains a box, which contains the docwin as its first child + * hence this hairy function... */ + docwin = g_list_nth_data(gtk_container_children(GTK_CONTAINER(gtk_notebook_get_nth_page(GTK_NOTEBOOK(tabbrowser), page_num))), 0); + dd = a_Doc_get_by_docwin(docwin); + + if(dd) + a_Tab_switch(dd); +} + +/* + * callback for tab add + */ +void +Tab_add_callback(GtkContainer *container, + GtkWidget *widget, + gpointer client_data) +{ + DEBUG_MSG(DEBUG_EVENT, "I am the tab_add callback in src/tab.c!\n"); +} + +/* + * callback for tab remove + */ +void +Tab_remove_callback(GtkContainer *container, + GtkWidget *widget, + gpointer client_data) +{ + DEBUG_MSG(DEBUG_EVENT, "I am the tab remove callback, in src/tab.c!\n"); +} + +/* + * callback for tab browser destroy + */ +void +Tab_browser_destroy_callback(GtkContainer *container, + GtkWidget *widget, + gpointer client_data) +{ + DEBUG_MSG(DEBUG_EVENT, "I am the tab browser destroy callback, in src/tab.c!\n"); +} + +/* Public functions */ + +/* + * return a new tab browser + */ +GtkContainer * +a_Tab_browser_new(BrowserWindow *bw) +{ + GtkRequisition *req; + GtkWidget *label; + GtkNotebook *tabbrowser; + + /* try to calulate the average width of a character in a label + * in the current context. This is something of a hack... + */ + req = g_new0(GtkRequisition, 1); + label = gtk_label_new(D_QUICK_BROWN_FOX); + gtk_widget_show(label); + gtk_widget_size_request(GTK_WIDGET(label), req); + bw->tab_label_average_character_width = (gfloat) ((gfloat) req->width / (gfloat) strlen(GTK_LABEL(label)->label)); + g_free(req); + + /* Add tabbrowser */ + tabbrowser = GTK_NOTEBOOK(gtk_notebook_new()); + gtk_notebook_set_show_border(GTK_NOTEBOOK(tabbrowser), FALSE); + gtk_notebook_set_scrollable(GTK_NOTEBOOK(tabbrowser), prefs.tab_bar_scroller); + gtk_notebook_set_homogeneous_tabs(GTK_NOTEBOOK(tabbrowser), prefs.tab_bar_homogeneous); + gtk_signal_connect_after(GTK_OBJECT(tabbrowser), + "switch_page", + GTK_SIGNAL_FUNC(Tab_switch_callback), + (gpointer) bw); + + gtk_signal_connect_after(GTK_OBJECT(tabbrowser), + "add", + GTK_SIGNAL_FUNC(Tab_add_callback), + (gpointer) bw); + + gtk_signal_connect(GTK_OBJECT(tabbrowser), + "remove", + GTK_SIGNAL_FUNC(Tab_remove_callback), + (gpointer) bw); + /* commented out, currently not in use... + gtk_signal_connect(GTK_OBJECT(tabbrowser), + "destroy", + GTK_SIGNAL_FUNC(Tab_browser_destroy_callback), + (gpointer) bw); + */ + + return GTK_CONTAINER(tabbrowser); +} + +/* + * switch tab, update interface + */ +void +a_Tab_switch(DilloDoc *dd) +{ + a_Interface_findtext_dialog_close(); + a_Dw_tooltip_count_reset (); + + /* set bw's current root document */ + dd->bw->dd = a_Doc_get_root(dd); + + /* add the browser window's full_screen_off_button to the dd's + * docwin. This button is owned by the window (this makes it easier + * to move tabs between windows, if needed), so it needs to + * be moved from tab to tab when the tab becomes current (as + * GTK does not allow a widget to have more than one parent). + * + * XXX:HACK + */ + if (GTK_WIDGET(dd->bw->full_screen_off_button)->parent != dd->docwin) { + /* keep a ref to the widget to keep it alive in transit... */ + gtk_object_ref(GTK_OBJECT(dd->bw->full_screen_off_button)); + if (GTK_WIDGET(dd->bw->full_screen_off_button)->parent) + gtk_container_remove(GTK_CONTAINER(GTK_WIDGET(dd->bw->full_screen_off_button)->parent), + GTK_WIDGET(dd->bw->full_screen_off_button)); + a_Dw_gtk_scrolled_window_add_gadget(GTK_DW_SCROLLED_WINDOW (dd->docwin), + dd->bw->full_screen_off_button); + /* ref is no longer needed, discard it... */ + gtk_object_unref(GTK_OBJECT(dd->bw->full_screen_off_button)); + + /* XXX:HACK the docwin does not show (or raise?) the widget when needed... */ + if(GTK_WIDGET_VISIBLE(dd->bw->full_screen_off_button)) { + gtk_widget_hide(dd->bw->full_screen_off_button); + gtk_widget_show(dd->bw->full_screen_off_button); + } + } + + /* update progress bar and adjust button sensitivity */ + a_Doc_progress_update(dd); + + /* adjust tab specific interface elements */ + if (dd->nav_stack_ptr != -1) + /* this tab has a document loaded, set values accordingly */ + { + a_Interface_set_page_title(dd->bw, (gchar *) a_History_get_title(NAV_TOP(dd))); + a_Interface_set_location_text(dd->bw,URL_STR_(a_History_get_url(NAV_TOP(dd)))); + } else { + /* no document loaded in tab, use default values */ + gchar *title = a_I18n_locale_to_DILLO_CHARSET(_("(Untitled)")); + a_Interface_set_page_title(dd->bw, title); + g_free(title); + a_Interface_set_location_text(dd->bw,""); + } + + /* show tab */ + gtk_notebook_set_page(GTK_NOTEBOOK(dd->bw->container), + gtk_notebook_page_num(GTK_NOTEBOOK(dd->bw->container), + GTK_WIDGET(dd->docwin)->parent)); + + /* set focus to docwin */ + gtk_widget_grab_focus(GTK_BIN(dd->docwin)->child); +} + +/* + * set visibility of tab bar + */ +void +a_Tab_visibility_update(BrowserWindow *bw) +{ + gboolean hide_tabs; + + g_return_if_fail(bw != NULL); + + /* this gets called in the tab switching code, which in turn gets called when + * a tab is deleted. This includes the final tab, which in turn causes the main_window + * to be destroyed, which of course includes the tabbrowser... So, check first if + * there is still a tabbrowser around to update before doing anything else... + */ + if(!GTK_IS_CONTAINER(bw->container)) + return; + + /* HIDE tab bar IF + * - there is only one tab left AND the preference tab_bar_show_single_tab + * is set to NO + * OR + * - when using fullscreen AND the preference tab_bar_show_fullscreen + * is set to NO + * OTHERWISE + * SHOW tab bar + */ + hide_tabs = ((g_list_length(gtk_container_children(GTK_CONTAINER(bw->container))) == 1) + && (!prefs.tab_bar_show_single_tab)); + hide_tabs |= (bw->fullwindow + && (!prefs.tab_bar_show_fullscreen)); + gtk_notebook_set_show_tabs(GTK_NOTEBOOK(bw->container), !hide_tabs); +} + + +/* + * close a specific browser tab, + * close window if no tabs left + * + * NOTE: this will destroy the document which + * was displayed in the tab, through the destroy callback + * for the docwin (in src/doc.c). If documents have to + * be moved between tabs or frames, unparent the + * pagemarks menu and reparent dd->docwin before calling + * this function! + */ +void +a_Tab_close(DilloDoc *dd) +{ + gint page_num; + BrowserWindow *bw = dd->bw; + + g_return_if_fail (dd != NULL); + + a_Interface_findtext_dialog_close(); + + page_num = gtk_notebook_page_num(GTK_NOTEBOOK(bw->container), + GTK_WIDGET(dd->docwin)->parent); + + /* left-to-right tab deletion: if this is the current page, show next page */ + if(gtk_notebook_get_current_page(GTK_NOTEBOOK(bw->container)) == page_num) + gtk_notebook_next_page(GTK_NOTEBOOK(bw->container)); + + /* this will destroy dd->docwin (and the DilloDoc) + * if there are no reference left to it */ + gtk_notebook_remove_page(GTK_NOTEBOOK(bw->container), page_num); + + if (gtk_notebook_get_current_page(GTK_NOTEBOOK(bw->container)) == -1) + { + /* destroying the main window causes its destroy + callback to be fired. This takes down the + rest of the BrowserWindow */ + gtk_widget_destroy(GTK_WIDGET(bw->main_window)); + } + + a_Tab_visibility_update(bw); +} + +/* + * Add a tab (containing a new DilloDoc) to a browser window + */ +void +a_Tab_new(BrowserWindow *bw) +{ + DilloDoc *dd; + + g_return_if_fail (bw != NULL); + + dd = a_Doc_new(); + a_Tab_add(bw, dd); + + /* always show new tabs, even when background loading */ + a_Tab_switch(dd); + + /* set focus to url bar */ + gtk_widget_grab_focus(dd->bw->location); +} + + +/* + * Add a tab (containing an existing DilloDoc) to a browser window + */ +void +a_Tab_add(BrowserWindow *bw, DilloDoc *dd) +{ + GString *tab_title; + GtkWidget *tab_label, *tab_label_event_box, *box; + GtkPackType *pack_type = g_new0(GtkPackType, 1); + + g_return_if_fail (bw != NULL && dd != NULL); + + a_Doc_set_browserwindow(dd, bw); + + if (dd->nav_stack_ptr != -1) + { + tab_title = g_string_new(a_History_get_title(NAV_TOP(dd))); + } else { + tab_title = g_string_new(_("(Untitled)")); + } + + tab_label_event_box = gtk_event_box_new(); + tab_label = gtk_label_new(tab_title->str); + gtk_widget_show(tab_label); + gtk_container_add(GTK_CONTAINER(tab_label_event_box), tab_label); + box = gtk_hbox_new(TRUE, 0); + gtk_container_set_border_width(GTK_CONTAINER(box), 0); + gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(dd->docwin), TRUE, TRUE, 0); + if(dd->frameset) + gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(dd->frameset), TRUE, TRUE, 0); + gtk_widget_show(box); + gtk_notebook_append_page(GTK_NOTEBOOK(bw->container), box, tab_label_event_box); + + /* add tooltip with full title. This has to be attached to the event box, + * since label widgets are windowless and hence can not receive events */ + gtk_tooltips_set_tip(GTK_TOOLTIPS(dd->bw->tooltips), + GTK_WIDGET(tab_label_event_box), + tab_title->str, + tab_title->str); + + /* make sure the tab labels adjust their size according to available space */ + gtk_signal_connect_after(GTK_OBJECT(tab_label), + "size_allocate", + GTK_SIGNAL_FUNC(Tab_label_size_request_callback), + (gpointer) dd); + + /* catch button press events for showing menu, etc. This has to be attached + * to the event box, since label widgets are windowless and hence can not + * receive events */ + gtk_signal_connect_after(GTK_OBJECT(tab_label_event_box), + "button_press_event", + GTK_SIGNAL_FUNC(Tab_label_button_press_event_callback), + (gpointer) dd); + + g_string_free(tab_title, TRUE); + gtk_notebook_query_tab_label_packing(GTK_NOTEBOOK(bw->container), GTK_WIDGET(dd->docwin)->parent, NULL, NULL, pack_type); + gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(bw->container), GTK_WIDGET(dd->docwin)->parent, TRUE, TRUE, *pack_type); + g_free(pack_type); + a_Tab_visibility_update(bw); +} + + +/* + * set tab title + * also sets window title if this tab is the current tab + */ +void +a_Tab_title_set(DilloDoc *dd, gchar *title) +{ + GtkWidget *tab_label; + gchar *title_enc; + + g_return_if_fail (dd != NULL && title != NULL); + + /* set tooltip on tab label container (a GtkEventBox), and queue a resize + * for the label itself so the title is redrawn */ + tab_label = gtk_notebook_get_tab_label(GTK_NOTEBOOK(dd->bw->container),GTK_WIDGET(dd->docwin)->parent); + title_enc = a_I18n_DW_CHARSET_from_DILLO_CHARSET(title, -1); + gtk_tooltips_set_tip(GTK_TOOLTIPS(dd->bw->tooltips), + GTK_WIDGET(tab_label), + title_enc, + title_enc); + g_free(title_enc); + + gtk_widget_queue_resize(GTK_WIDGET(GTK_BIN(tab_label)->child)); + + /* if this is the current tab, set window title */ + if (dd->bw->dd == dd) + a_Interface_set_page_title(dd->bw, title); +} + +#endif /* !DISABLE_TABS */ + +/* vim: set ts=3 sw=3 sts=3 expandtab:*/ diff -pruN dillo-0.8.6/src/tab.h dillo-0.8.6-i18n-misc-20060709/src/tab.h --- dillo-0.8.6/src/tab.h 1970-01-01 09:00:00.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/tab.h 2006-05-16 01:21:09.000000000 +0900 @@ -0,0 +1,22 @@ +#ifndef __TAB_H__ +#define __TAB_H__ + +#ifndef DISABLE_TABS +#include "browser.h" + +/* this string is used to calculate the average width of a + * character in a GTK_LABEL in the current context. + */ +#define D_QUICK_BROWN_FOX "The Quick Brown Fox Jumped Over The Lazy Dog" + +GtkContainer * +a_Tab_browser_new(BrowserWindow *bw); +void a_Tab_new(BrowserWindow *bw); +void a_Tab_close(DilloDoc *dd); +void a_Tab_add(BrowserWindow *bw, DilloDoc *dd); +void a_Tab_switch(DilloDoc *dd); +void a_Tab_title_set(DilloDoc *dd, gchar *title); +void a_Tab_visibility_update(BrowserWindow *bw); + +#endif /* !DISABLE_TABS */ +#endif /* __TAB_H__ */ diff -pruN dillo-0.8.6/src/url.c dillo-0.8.6-i18n-misc-20060709/src/url.c --- dillo-0.8.6/src/url.c 2006-01-03 03:11:47.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/url.c 2006-06-19 01:03:28.000000000 +0900 @@ -70,7 +70,8 @@ gchar *a_Url_str(const DilloUrl *u) url->fragment ? url->fragment : ""); } - return url->url_string->str; + if(url->url_string) return url->url_string->str; + return NULL; } /* @@ -172,6 +173,8 @@ void a_Url_free(DilloUrl *url) g_free((gchar *)url->buffer); g_free((gchar *)url->data); g_free((gchar *)url->alt); + g_free((gchar *)url->target); + g_free((gchar *)url->referer); g_free(url); } } @@ -180,7 +183,7 @@ void a_Url_free(DilloUrl *url) * Resolve the URL as RFC2396 suggests. */ static GString *Url_resolve_relative(const gchar *RelStr, - DilloUrl *BaseUrlPar, + DilloUrl **BaseUrlPar, const gchar *BaseStr) { gchar *p, *s, *e; @@ -191,9 +194,9 @@ static GString *Url_resolve_relative(con /* parse relative URL */ RelUrl = Url_object_new(RelStr); - if (BaseUrlPar) { - BaseUrl = BaseUrlPar; - } else if (RelUrl->scheme == NULL) { + if (*BaseUrlPar) { + BaseUrl = *BaseUrlPar; + } else { /* only required when there's no <scheme> in RelStr */ BaseUrl = Url_object_new(BaseStr); } @@ -302,8 +305,7 @@ static GString *Url_resolve_relative(con done: g_string_free(Path, TRUE); a_Url_free(RelUrl); - if (BaseUrl != BaseUrlPar) - a_Url_free(BaseUrl); + *BaseUrlPar = BaseUrl; return SolvedUrl; } @@ -323,6 +325,7 @@ done: * flags = 0 * data = NULL * alt = NULL + * target = NULL * ismap_url_len = 0 * scrolling_position = 0 * } @@ -332,7 +335,7 @@ done: DilloUrl* a_Url_new(const gchar *url_str, const gchar *base_url, gint flags, gint32 posx, gint32 posy) { - DilloUrl *url; + DilloUrl *url, *BaseUrl = NULL; gchar *urlstring, *p, *new_str = NULL; GString *SolvedUrl; gint n_ic, n_ic_spc; @@ -368,19 +371,27 @@ DilloUrl* a_Url_new(const gchar *url_str } /* Resolve the URL */ - SolvedUrl = Url_resolve_relative(urlstring, NULL, base_url); + SolvedUrl = Url_resolve_relative(urlstring, &BaseUrl, base_url); DEBUG_MSG(2, "SolvedUrl = %s\n", SolvedUrl->str); - g_return_val_if_fail (SolvedUrl != NULL, NULL); + if (!SolvedUrl) { + a_Url_free(BaseUrl); + return NULL; + } /* Fill url data */ url = Url_object_new(SolvedUrl->str); + if (BaseUrl && !URL_STRCAMP_I_EQ(URL_HOST_(url), URL_HOST_(BaseUrl))) { + flags |= URL_OnOtherHost; + } url->url_string = SolvedUrl; url->flags = flags; url->scrolling_position_x = posx; url->scrolling_position_y = posy; url->illegal_chars = n_ic; url->illegal_chars_spc = n_ic_spc; - + url->referer = NULL;//g_strdup(base_url); + a_Url_free(BaseUrl); + g_free(new_str); return url; } @@ -401,11 +412,13 @@ DilloUrl* a_Url_dup(const DilloUrl *ori) url->flags = ori->flags; url->data = g_strdup(ori->data); url->alt = g_strdup(ori->alt); + url->target = g_strdup(ori->target); url->ismap_url_len = ori->ismap_url_len; url->scrolling_position_x = ori->scrolling_position_x; url->scrolling_position_y = ori->scrolling_position_y; url->illegal_chars = ori->illegal_chars; url->illegal_chars_spc = ori->illegal_chars_spc; + url->referer = g_strdup(ori->referer); return url; } @@ -465,6 +478,18 @@ void a_Url_set_alt(DilloUrl *u, const gc } /* + * Set DilloUrl target (used to target link at specific frame or window) + */ +void a_Url_set_target(DilloUrl *u, const gchar *target) +{ + if (u) { + if (u->target) + g_free((gchar *)u->target); + u->target = g_strdup(target); + } +} + +/* * Set DilloUrl scrolling position */ void a_Url_set_pos(DilloUrl *u, gint32 posx, gint32 posy) @@ -476,6 +501,17 @@ void a_Url_set_pos(DilloUrl *u, gint32 p } /* + * Set DilloUrl referer URL + */ +void a_Url_set_referer(DilloUrl *u, DilloUrl *ref) +{ + if (u && ref) { + g_free((gchar *)u->referer); + u->referer = g_strdup(a_Url_str(ref)); + } +} + +/* * Set DilloUrl ismap coordinates * (this is optimized for not hogging the CPU) */ @@ -612,3 +648,4 @@ gchar *a_Url_string_strip_delimiters(con } return new_str; } + diff -pruN dillo-0.8.6/src/url.h dillo-0.8.6-i18n-misc-20060709/src/url.h --- dillo-0.8.6/src/url.h 2006-01-03 03:39:40.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/url.h 2006-05-16 01:21:09.000000000 +0900 @@ -41,26 +41,33 @@ #define URL_ReloadIncomplete (1 << 9) #define URL_SpamSafe (1 << 10) +#define URL_MustCache (1 << 11) +#define URL_IsImage (1 << 12) +#define URL_OnOtherHost (1 << 13) + + /* * Access methods to fields inside DilloURL. * (non '_'-ended macros MUST use these for initialization sake) */ /* these MAY return NULL: */ -#define URL_SCHEME_(u) u->scheme -#define URL_AUTHORITY_(u) u->authority -#define URL_PATH_(u) u->path -#define URL_QUERY_(u) u->query -#define URL_FRAGMENT_(u) u->fragment -#define URL_HOST_(u) a_Url_hostname(u) -#define URL_DATA_(u) u->data -#define URL_ALT_(u) u->alt -#define URL_STR_(u) a_Url_str(u) +#define URL_SCHEME_(u) u->scheme +#define URL_AUTHORITY_(u) u->authority +#define URL_PATH_(u) u->path +#define URL_QUERY_(u) u->query +#define URL_FRAGMENT_(u) u->fragment +#define URL_HOST_(u) a_Url_hostname(u) +#define URL_DATA_(u) u->data +#define URL_ALT_(u) u->alt +#define URL_STR_(u) a_Url_str(u) +#define URL_REFERER_(u) u->referer +#define URL_TARGET_(u) u->target /* these return an integer */ -#define URL_PORT_(u) (URL_HOST(u) ? u->port : u->port) -#define URL_FLAGS_(u) u->flags -#define URL_POSX_(u) u->scrolling_position_x -#define URL_POSY_(u) u->scrolling_position_y -#define URL_ILLEGAL_CHARS_(u) url->illegal_chars +#define URL_PORT_(u) (URL_HOST(u) ? u->port : u->port) +#define URL_FLAGS_(u) u->flags +#define URL_POSX_(u) u->scrolling_position_x +#define URL_POSY_(u) u->scrolling_position_y +#define URL_ILLEGAL_CHARS_(u) url->illegal_chars #define URL_ILLEGAL_CHARS_SPC_(u) url->illegal_chars_spc /* @@ -68,22 +75,24 @@ * When the "empty" and "undefined" concepts of RFC-2396 are irrelevant to * the caller, and a string is required, use these methods instead: */ -#define NPTR2STR(p) ((p) ? (p) : "") -#define URL_SCHEME(u) NPTR2STR(URL_SCHEME_(u)) -#define URL_AUTHORITY(u) NPTR2STR(URL_AUTHORITY_(u)) -#define URL_PATH(u) NPTR2STR(URL_PATH_(u)) -#define URL_QUERY(u) NPTR2STR(URL_QUERY_(u)) -#define URL_FRAGMENT(u) NPTR2STR(URL_FRAGMENT_(u)) -#define URL_HOST(u) NPTR2STR(URL_HOST_(u)) -#define URL_DATA(u) NPTR2STR(URL_DATA_(u)) -#define URL_ALT(u) NPTR2STR(URL_ALT_(u)) -#define URL_STR(u) NPTR2STR(URL_STR_(u)) -#define URL_PORT(u) URL_PORT_(u) -#define URL_FLAGS(u) URL_FLAGS_(u) -#define URL_POSX(u) URL_POSX_(u) -#define URL_POSY(u) URL_POSY_(u) -#define URL_ILLEGAL_CHARS(u) URL_ILLEGAL_CHARS_(u) +#define NPTR2STR(p) ((p) ? (p) : "") +#define URL_SCHEME(u) NPTR2STR(URL_SCHEME_(u)) +#define URL_AUTHORITY(u) NPTR2STR(URL_AUTHORITY_(u)) +#define URL_PATH(u) NPTR2STR(URL_PATH_(u)) +#define URL_QUERY(u) NPTR2STR(URL_QUERY_(u)) +#define URL_FRAGMENT(u) NPTR2STR(URL_FRAGMENT_(u)) +#define URL_HOST(u) NPTR2STR(URL_HOST_(u)) +#define URL_DATA(u) NPTR2STR(URL_DATA_(u)) +#define URL_ALT(u) NPTR2STR(URL_ALT_(u)) +#define URL_STR(u) NPTR2STR(URL_STR_(u)) +#define URL_PORT(u) URL_PORT_(u) +#define URL_FLAGS(u) URL_FLAGS_(u) +#define URL_POSX(u) URL_POSX_(u) +#define URL_POSY(u) URL_POSY_(u) +#define URL_ILLEGAL_CHARS(u) URL_ILLEGAL_CHARS_(u) #define URL_ILLEGAL_CHARS_SPC(u) URL_ILLEGAL_CHARS_SPC_(u) +#define URL_REFERER(u) NPTR2STR(URL_REFERER_(u)) +#define URL_TARGET(u) NPTR2STR(URL_TARGET_(u)) @@ -117,11 +126,13 @@ struct _DilloUrl { gint flags; const gchar *data; /* POST */ const gchar *alt; /* "alt" text (used by image maps) */ + const gchar *target; /* target frame/window */ gint ismap_url_len; /* Used by server side image maps */ gint32 scrolling_position_x, scrolling_position_y; /* remember position of visited urls */ gint illegal_chars; /* number of illegal chars */ gint illegal_chars_spc; /* number of illegal space chars */ + const gchar *referer; /* The URL that refered to this one */ }; @@ -135,7 +146,9 @@ gint a_Url_cmp(const DilloUrl *A, const void a_Url_set_flags(DilloUrl *u, gint flags); void a_Url_set_data(DilloUrl *u, gchar *data); void a_Url_set_alt(DilloUrl *u, const gchar *alt); +void a_Url_set_target(DilloUrl *u, const gchar *target); void a_Url_set_pos(DilloUrl *u, gint32 posx, gint32 posy); +void a_Url_set_referer(DilloUrl *u, DilloUrl *ref); void a_Url_set_ismap_coords(DilloUrl *u, gchar *coord_str); gchar *a_Url_decode_hex_str(const gchar *str); gchar *a_Url_encode_hex_str(const gchar *str); diff -pruN dillo-0.8.6/src/web.c dillo-0.8.6-i18n-misc-20060709/src/web.c --- dillo-0.8.6/src/web.c 2005-10-28 01:20:15.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/web.c 2006-05-16 01:21:09.000000000 +0900 @@ -9,15 +9,18 @@ * (at your option) any later version. */ +#include <config.h> #include <stdio.h> #include <stdlib.h> #include <gtk/gtk.h> #include <math.h> /* for rint */ +#include "intl.h" #include "msg.h" #include "browser.h" -#include "nav.h" #include "interface.h" +#include "nav.h" +#include "doc.h" #include "IO/IO.h" #include "IO/mime.h" @@ -27,7 +30,7 @@ #include "prefs.h" #include "web.h" -#define DEBUG_LEVEL 5 +//#define DEBUG_LEVEL 5 #include "debug.h" /* @@ -45,12 +48,12 @@ gint a_Web_dispatch_by_type (const char CA_Callback_t *Call, void **Data) { DwWidget *dw = NULL; - DwStyle style_attrs, *style; - DwStyleFont font; +// DwStyle style_attrs, *style; +// DwStyleFont font; DEBUG_MSG(1, "a_Web_dispatch_by_type\n"); - g_return_val_if_fail(Web->bw != NULL, -1); + g_return_val_if_fail(Web->dd != NULL, -1); if (Web->flags & WEB_RootUrl) { /* We have RootUrl! */ @@ -58,46 +61,35 @@ gint a_Web_dispatch_by_type (const char if (dw == NULL) return -1; - /* Set a style for the widget */ - font.name = prefs.vw_fontname; /* must be defined */ - font.size = rint(12.0 * prefs.font_factor); - font.weight = 400; - font.style = DW_STYLE_FONT_STYLE_NORMAL; - - a_Dw_style_init_values (&style_attrs, Web->bw->main_window->window); - a_Dw_style_box_set_val (&style_attrs.margin, 5); - style_attrs.font = a_Dw_style_font_new (&font); - style_attrs.color = - a_Dw_style_color_new (prefs.text_color, Web->bw->main_window->window); - style_attrs.background_color = - a_Dw_style_color_new (prefs.bg_color, Web->bw->main_window->window); - style = a_Dw_style_new (&style_attrs, Web->bw->main_window->window); - a_Dw_widget_set_style (dw, style); - a_Dw_style_unref (style); + /* set widget style */ + a_Dw_widget_set_style(dw, Web->dd->style); a_Dw_gtk_scrolled_window_set_dw( - GTK_DW_SCROLLED_WINDOW(Web->bw->docwin), dw); + GTK_DW_SCROLLED_WINDOW(Web->dd->docwin), dw); if (URL_POSX(Web->url) || URL_POSY(Web->url)) { a_Dw_gtk_scrolled_window_set_scrolling_position( - GTK_DW_SCROLLED_WINDOW(Web->bw->docwin), + GTK_DW_SCROLLED_WINDOW(Web->dd->docwin), URL_POSX(Web->url), URL_POSY(Web->url)); } else { gchar *pf = a_Url_decode_hex_str(URL_FRAGMENT_(Web->url)); a_Dw_gtk_scrolled_window_set_anchor( - GTK_DW_SCROLLED_WINDOW(Web->bw->docwin), pf); + GTK_DW_SCROLLED_WINDOW(Web->dd->docwin), pf); g_free(pf); } - /* Clear the title bar for pages without a <TITLE> tag */ - a_Interface_set_page_title(Web->bw, ""); - a_Interface_set_location_text(Web->bw, URL_STR(Web->url)); - a_Interface_reset_progress_bars(Web->bw); + + /* Set document title to url, will be replaced by real title + * if this page has a <TITLE> tag */ + a_Doc_title_set(Web->dd, URL_STR(Web->url)); + /* update progress */ + a_Doc_progress_update(Web->dd); + a_Doc_location_set(Web->dd, URL_STR(Web->url)); /* Reset the bug meter */ - a_Interface_bug_meter_update(Web->bw, 0); + a_Interface_bug_meter_update(Web->dd->bw, 0); /* Let the Nav module know... */ - a_Nav_expect_done(Web->bw); + a_Nav_expect_done(Web->dd); } else { /* A non-RootUrl. At this moment we only handle image-children */ @@ -121,7 +113,7 @@ DilloWeb* a_Web_new(const DilloUrl *url) _MSG(" a_Web_new: ValidWebs ==> %d\n", g_slist_length(ValidWebs)); web->url = a_Url_dup(url); - web->bw = NULL; + web->dd = NULL; web->flags = 0; web->Image = NULL; web->stream = NULL; diff -pruN dillo-0.8.6/src/web.h dillo-0.8.6-i18n-misc-20060709/src/web.h --- dillo-0.8.6/src/web.h 2005-10-28 01:20:15.000000000 +0900 +++ dillo-0.8.6-i18n-misc-20060709/src/web.h 2006-05-16 01:21:09.000000000 +0900 @@ -23,7 +23,7 @@ typedef struct _DilloWeb DilloWeb; struct _DilloWeb { DilloUrl *url; /* Requested URL */ - BrowserWindow *bw; /* The requesting browser window [reference] */ + DilloDoc *dd; /* The requesting browser document [reference] */ gint flags; /* Additional info */ DilloImage *Image; /* For image urls [reference] */