diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2045a5d --- /dev/null +++ b/.gitignore @@ -0,0 +1,139 @@ +**/*.a +**/*.la +**/*.lo +**/*.o +**/*.so +**/*~ +**/.libs +**/Makefile +**/Makefile.in +/ABOUT-NLS +/aclocal.m4 +/autom4te.cache +/build-aux +/config.h +/config.h.in +/config.log +/config.status +/config.status.lineno +/configure +/gl +/gnulib +/libtool +/stamp-h* +docs/INSTALL.autoconf +init/systemd/man-db.conf +init/systemd/man-db.service +lib/.deps +libdb/.deps +man/**/*.log +man/**/*.trs +man/*/man1/*.1 +man/*/man5/*.5 +man/*/man8/*.8 +man/*/replace.sed +man/da/man1 +man/da/man5 +man/da/man8 +man/de/man1 +man/de/man5 +man/de/man8 +man/es/man1 +man/es/man5 +man/es/man8 +man/fr/man1 +man/fr/man5 +man/fr/man8 +man/id/man1 +man/id/man5 +man/id/man8 +man/ja/man1 +man/ja/man5 +man/ja/man8 +man/ko/man1 +man/ko/man5 +man/ko/man8 +man/man1/*.1 +man/man5/*.5 +man/man8/*.8 +man/nl/man1 +man/nl/man5 +man/nl/man8 +man/pl/man1 +man/pl/man5 +man/pl/man8 +man/pt/man1 +man/pt/man5 +man/pt/man8 +man/pt_BR/man1 +man/pt_BR/man5 +man/pt_BR/man8 +man/replace.sed +man/replace.sin +man/ro/man1 +man/ro/man5 +man/ro/man8 +man/ru/man1 +man/ru/man5 +man/ru/man8 +man/sr/man1 +man/sr/man5 +man/sr/man8 +man/sv/man1 +man/sv/man5 +man/sv/man8 +man/tr/man1 +man/tr/man5 +man/tr/man8 +man/uk/man1 +man/uk/man5 +man/uk/man8 +man/zh_CN/man1 +man/zh_CN/man5 +man/zh_CN/man8 +manual/man_db.cat +manual/man_db.dvi +manual/man_db.html +manual/man_db.pp +manual/man_db.ps +manual/man_db.tps +manual/version +po/*.gmo +po/ChangeLog +po/Makefile.in.in +po/Makevars +po/Makevars.template +po/POTFILES +po/Rules-quot +po/boldquot.sed +po/en@boldquot.header +po/en@quot.header +po/insert-header.sin +po/messages.mo +po/quot.sed +po/remove-potcdate.sed +po/remove-potcdate.sin +po/stamp-po +src/.deps +src/accessdb +src/apropos +src/catman +src/globbing +src/lexgrog +src/lexgrog.c +src/man +src/man-recode +src/man_db.conf +src/manconv +src/mandb +src/manpath +src/tests/*.log +src/tests/*.trs +src/tests/.deps +src/tests/fspause +src/tests/get-mtime +src/tests/tmp-* +src/whatis +src/wrapper +src/zsoelim +src/zsoelim.c diff --git a/ABOUT-NLS b/ABOUT-NLS new file mode 100644 index 0000000..b1de1b6 --- /dev/null +++ b/ABOUT-NLS @@ -0,0 +1,1282 @@ +1 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 free software 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 on translations can contact the appropriate team. + +1.1 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. Installers may use special +options at configuration time for changing the default behaviour. The +command: + + ./configure --disable-nls + +will _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' library +and will decide to use it. If not, you may have to to use the +`--with-libintl-prefix' option to tell `configure' where to look for it. + + Internationalized packages usually have 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. + +1.2 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. If you happen to have the `LC_ALL' or some other +`LC_xxx' environment variables set, you should unset them before +setting `LANG', otherwise the setting of `LANG' will not have the +desired effect. 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 language 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'. + + Special advice for Norwegian users: The language code for Norwegian +bokma*l changed from `no' to `nb' recently (in 2003). During the +transition period, while some message catalogs for this language are +installed under `nb' and some older ones under `no', it's recommended +for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and +older translations are used. + + 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. + +1.3 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://translationproject.org/', in the "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 `coordinator@translationproject.org' 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 skills are praised more than +programming skills, here. + +1.4 Available Packages +====================== + +Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of June +2010. 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 af am an ar as ast az be be@latin bg bn_IN bs ca + +--------------------------------------------------+ + a2ps | [] [] | + aegis | | + ant-phone | | + anubis | | + aspell | [] [] | + bash | | + bfd | | + bibshelf | [] | + binutils | | + bison | | + bison-runtime | [] | + bluez-pin | [] [] | + bombono-dvd | | + buzztard | | + cflow | | + clisp | | + coreutils | [] [] | + cpio | | + cppi | | + cpplib | [] | + cryptsetup | | + dfarc | | + dialog | [] [] | + dico | | + diffutils | [] | + dink | | + doodle | | + e2fsprogs | [] | + enscript | [] | + exif | | + fetchmail | [] | + findutils | [] | + flex | [] | + freedink | | + gas | | + gawk | [] [] | + gcal | [] | + gcc | | + gettext-examples | [] [] [] [] | + gettext-runtime | [] [] | + gettext-tools | [] [] | + gip | [] | + gjay | | + gliv | [] | + glunarclock | [] [] | + gnubiff | | + gnucash | [] | + gnuedu | | + gnulib | | + gnunet | | + gnunet-gtk | | + gnutls | | + gold | | + gpe-aerial | | + gpe-beam | | + gpe-bluetooth | | + gpe-calendar | | + gpe-clock | [] | + gpe-conf | | + gpe-contacts | | + gpe-edit | | + gpe-filemanager | | + gpe-go | | + gpe-login | | + gpe-ownerinfo | [] | + gpe-package | | + gpe-sketchbook | | + gpe-su | [] | + gpe-taskmanager | [] | + gpe-timesheet | [] | + gpe-today | [] | + gpe-todo | | + gphoto2 | | + gprof | [] | + gpsdrive | | + gramadoir | | + grep | | + grub | [] [] | + gsasl | | + gss | | + gst-plugins-bad | [] | + gst-plugins-base | [] | + gst-plugins-good | [] | + gst-plugins-ugly | [] | + gstreamer | [] [] [] | + gtick | | + gtkam | [] | + gtkorphan | [] | + gtkspell | [] [] [] | + gutenprint | | + hello | [] | + help2man | | + hylafax | | + idutils | | + indent | [] [] | + iso_15924 | | + iso_3166 | [] [] [] [] [] [] [] | + iso_3166_2 | | + iso_4217 | | + iso_639 | [] [] [] [] | + iso_639_3 | | + jwhois | | + kbd | | + keytouch | [] | + keytouch-editor | | + keytouch-keyboa... | [] | + klavaro | [] | + latrine | | + ld | [] | + leafpad | [] [] | + libc | [] [] | + libexif | () | + libextractor | | + libgnutls | | + libgpewidget | | + libgpg-error | | + libgphoto2 | | + libgphoto2_port | | + libgsasl | | + libiconv | [] | + libidn | | + lifelines | | + liferea | [] [] | + lilypond | | + linkdr | [] | + lordsawar | | + lprng | | + lynx | [] | + m4 | | + mailfromd | | + mailutils | | + make | | + man-db | | + man-db-manpages | | + minicom | | + mkisofs | | + myserver | | + nano | [] [] | + opcodes | | + parted | | + pies | | + popt | | + psmisc | | + pspp | [] | + pwdutils | | + radius | [] | + recode | [] [] | + rosegarden | | + rpm | | + rush | | + sarg | | + screem | | + scrollkeeper | [] [] [] | + sed | [] [] | + sharutils | [] [] | + shishi | | + skencil | | + solfege | | + solfege-manual | | + soundtracker | | + sp | | + sysstat | | + tar | [] | + texinfo | | + tin | | + unicode-han-tra... | | + unicode-transla... | | + util-linux-ng | [] | + vice | | + vmm | | + vorbis-tools | | + wastesedge | | + wdiff | | + wget | [] [] | + wyslij-po | | + xchat | [] [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] | + +--------------------------------------------------+ + af am an ar as ast az be be@latin bg bn_IN bs ca + 6 0 1 2 3 19 1 10 3 28 3 1 38 + + crh cs da de el en en_GB en_ZA eo es et eu fa + +-------------------------------------------------+ + a2ps | [] [] [] [] [] [] [] | + aegis | [] [] [] | + ant-phone | [] () | + anubis | [] [] | + aspell | [] [] [] [] [] | + bash | [] [] [] | + bfd | [] | + bibshelf | [] [] [] | + binutils | [] | + bison | [] [] | + bison-runtime | [] [] [] [] | + bluez-pin | [] [] [] [] [] [] | + bombono-dvd | [] | + buzztard | [] [] [] | + cflow | [] [] | + clisp | [] [] [] [] | + coreutils | [] [] [] [] | + cpio | | + cppi | | + cpplib | [] [] [] | + cryptsetup | [] | + dfarc | [] [] [] | + dialog | [] [] [] [] [] | + dico | | + diffutils | [] [] [] [] [] [] | + dink | [] [] [] | + doodle | [] | + e2fsprogs | [] [] [] | + enscript | [] [] [] | + exif | () [] [] | + fetchmail | [] [] () [] [] [] | + findutils | [] [] [] | + flex | [] [] | + freedink | [] [] [] | + gas | [] | + gawk | [] [] [] | + gcal | [] | + gcc | [] [] | + gettext-examples | [] [] [] [] | + gettext-runtime | [] [] [] [] | + gettext-tools | [] [] [] | + gip | [] [] [] [] | + gjay | [] | + gliv | [] [] [] | + glunarclock | [] [] | + gnubiff | () | + gnucash | [] () () () () | + gnuedu | [] [] | + gnulib | [] [] | + gnunet | | + gnunet-gtk | [] | + gnutls | [] [] | + gold | [] | + gpe-aerial | [] [] [] [] | + gpe-beam | [] [] [] [] | + gpe-bluetooth | [] [] | + gpe-calendar | [] | + gpe-clock | [] [] [] [] | + gpe-conf | [] [] [] | + gpe-contacts | [] [] [] | + gpe-edit | [] [] | + gpe-filemanager | [] [] [] | + gpe-go | [] [] [] [] | + gpe-login | [] [] | + gpe-ownerinfo | [] [] [] [] | + gpe-package | [] [] [] | + gpe-sketchbook | [] [] [] [] | + gpe-su | [] [] [] [] | + gpe-taskmanager | [] [] [] [] | + gpe-timesheet | [] [] [] [] | + gpe-today | [] [] [] [] | + gpe-todo | [] [] [] | + gphoto2 | [] [] () [] [] [] | + gprof | [] [] [] | + gpsdrive | [] [] [] | + gramadoir | [] [] [] | + grep | [] | + grub | [] [] | + gsasl | [] | + gss | | + gst-plugins-bad | [] [] [] [] [] | + gst-plugins-base | [] [] [] [] [] | + gst-plugins-good | [] [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] [] | + gstreamer | [] [] [] [] [] | + gtick | [] () [] | + gtkam | [] [] () [] [] | + gtkorphan | [] [] [] [] | + gtkspell | [] [] [] [] [] [] [] | + gutenprint | [] [] [] | + hello | [] [] [] [] | + help2man | [] | + hylafax | [] [] | + idutils | [] [] | + indent | [] [] [] [] [] [] [] | + iso_15924 | [] () [] [] | + iso_3166 | [] [] [] [] () [] [] [] () | + iso_3166_2 | () | + iso_4217 | [] [] [] () [] [] | + iso_639 | [] [] [] [] () [] [] | + iso_639_3 | [] | + jwhois | [] | + kbd | [] [] [] [] [] | + keytouch | [] [] | + keytouch-editor | [] [] | + keytouch-keyboa... | [] | + klavaro | [] [] [] [] | + latrine | [] () | + ld | [] [] | + leafpad | [] [] [] [] [] [] | + libc | [] [] [] [] | + libexif | [] [] () | + libextractor | | + libgnutls | [] | + libgpewidget | [] [] | + libgpg-error | [] [] | + libgphoto2 | [] () | + libgphoto2_port | [] () [] | + libgsasl | | + libiconv | [] [] [] [] [] | + libidn | [] [] [] | + lifelines | [] () | + liferea | [] [] [] [] [] | + lilypond | [] [] [] | + linkdr | [] [] [] | + lordsawar | [] | + lprng | | + lynx | [] [] [] [] | + m4 | [] [] [] [] | + mailfromd | | + mailutils | [] | + make | [] [] [] | + man-db | | + man-db-manpages | | + minicom | [] [] [] [] | + mkisofs | | + myserver | | + nano | [] [] [] | + opcodes | [] [] | + parted | [] [] | + pies | | + popt | [] [] [] [] [] | + psmisc | [] [] [] | + pspp | [] | + pwdutils | [] | + radius | [] | + recode | [] [] [] [] [] [] | + rosegarden | () () () | + rpm | [] [] [] | + rush | | + sarg | | + screem | | + scrollkeeper | [] [] [] [] [] | + sed | [] [] [] [] [] [] | + sharutils | [] [] [] [] | + shishi | | + skencil | [] () [] | + solfege | [] [] [] | + solfege-manual | [] [] | + soundtracker | [] [] [] | + sp | [] | + sysstat | [] [] [] | + tar | [] [] [] [] | + texinfo | [] [] [] | + tin | [] [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux-ng | [] [] [] [] | + vice | () () | + vmm | [] | + vorbis-tools | [] [] | + wastesedge | [] | + wdiff | [] [] | + wget | [] [] [] | + wyslij-po | | + xchat | [] [] [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] [] [] | + +-------------------------------------------------+ + crh cs da de el en en_GB en_ZA eo es et eu fa + 5 64 105 117 18 1 8 0 28 89 18 19 0 + + fi fr ga gl gu he hi hr hu hy id is it ja ka kn + +----------------------------------------------------+ + a2ps | [] [] [] [] | + aegis | [] [] | + ant-phone | [] [] | + anubis | [] [] [] [] | + aspell | [] [] [] [] | + bash | [] [] [] [] | + bfd | [] [] [] | + bibshelf | [] [] [] [] [] | + binutils | [] [] [] | + bison | [] [] [] [] | + bison-runtime | [] [] [] [] [] [] | + bluez-pin | [] [] [] [] [] [] [] [] | + bombono-dvd | [] | + buzztard | [] | + cflow | [] [] [] | + clisp | [] | + coreutils | [] [] [] [] [] | + cpio | [] [] [] [] | + cppi | [] [] | + cpplib | [] [] [] | + cryptsetup | [] [] [] | + dfarc | [] [] [] | + dialog | [] [] [] [] [] [] [] | + dico | | + diffutils | [] [] [] [] [] [] [] [] [] | + dink | [] | + doodle | [] [] | + e2fsprogs | [] [] | + enscript | [] [] [] [] | + exif | [] [] [] [] [] [] | + fetchmail | [] [] [] [] | + findutils | [] [] [] [] [] [] | + flex | [] [] [] | + freedink | [] [] [] | + gas | [] [] | + gawk | [] [] [] [] () [] | + gcal | [] | + gcc | [] | + gettext-examples | [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] | + gettext-tools | [] [] [] [] | + gip | [] [] [] [] [] [] | + gjay | [] | + gliv | [] () | + glunarclock | [] [] [] [] | + gnubiff | () [] () | + gnucash | () () () () () [] | + gnuedu | [] [] | + gnulib | [] [] [] [] [] [] | + gnunet | | + gnunet-gtk | [] | + gnutls | [] [] | + gold | [] [] | + gpe-aerial | [] [] [] | + gpe-beam | [] [] [] [] | + gpe-bluetooth | [] [] [] [] | + gpe-calendar | [] [] | + gpe-clock | [] [] [] [] [] | + gpe-conf | [] [] [] [] | + gpe-contacts | [] [] [] [] | + gpe-edit | [] [] [] | + gpe-filemanager | [] [] [] [] | + gpe-go | [] [] [] [] [] | + gpe-login | [] [] [] | + gpe-ownerinfo | [] [] [] [] [] | + gpe-package | [] [] [] | + gpe-sketchbook | [] [] [] [] | + gpe-su | [] [] [] [] [] [] | + gpe-taskmanager | [] [] [] [] [] | + gpe-timesheet | [] [] [] [] [] | + gpe-today | [] [] [] [] [] [] [] | + gpe-todo | [] [] [] | + gphoto2 | [] [] [] [] [] [] | + gprof | [] [] [] [] | + gpsdrive | [] [] [] | + gramadoir | [] [] [] | + grep | [] [] | + grub | [] [] [] [] | + gsasl | [] [] [] [] [] | + gss | [] [] [] [] [] | + gst-plugins-bad | [] [] [] [] [] [] | + gst-plugins-base | [] [] [] [] [] [] | + gst-plugins-good | [] [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] [] | + gstreamer | [] [] [] [] [] | + gtick | [] [] [] [] [] | + gtkam | [] [] [] [] [] | + gtkorphan | [] [] [] | + gtkspell | [] [] [] [] [] [] [] [] [] | + gutenprint | [] [] [] [] | + hello | [] [] [] | + help2man | [] [] | + hylafax | [] | + idutils | [] [] [] [] [] [] | + indent | [] [] [] [] [] [] [] [] | + iso_15924 | [] () [] [] | + iso_3166 | [] () [] [] [] [] [] [] [] [] [] [] | + iso_3166_2 | () [] [] [] | + iso_4217 | [] () [] [] [] [] | + iso_639 | [] () [] [] [] [] [] [] [] | + iso_639_3 | () [] [] | + jwhois | [] [] [] [] [] | + kbd | [] [] | + keytouch | [] [] [] [] [] [] | + keytouch-editor | [] [] [] [] [] | + keytouch-keyboa... | [] [] [] [] [] | + klavaro | [] [] | + latrine | [] [] [] | + ld | [] [] [] [] | + leafpad | [] [] [] [] [] [] [] () | + libc | [] [] [] [] [] | + libexif | [] | + libextractor | | + libgnutls | [] [] | + libgpewidget | [] [] [] [] | + libgpg-error | [] [] | + libgphoto2 | [] [] [] | + libgphoto2_port | [] [] [] | + libgsasl | [] [] [] [] [] | + libiconv | [] [] [] [] [] [] | + libidn | [] [] [] [] | + lifelines | () | + liferea | [] [] [] [] | + lilypond | [] [] | + linkdr | [] [] [] [] [] | + lordsawar | | + lprng | [] | + lynx | [] [] [] [] [] | + m4 | [] [] [] [] [] [] | + mailfromd | | + mailutils | [] [] | + make | [] [] [] [] [] [] [] [] [] | + man-db | [] [] | + man-db-manpages | [] | + minicom | [] [] [] [] [] | + mkisofs | [] [] [] [] | + myserver | | + nano | [] [] [] [] [] [] | + opcodes | [] [] [] [] | + parted | [] [] [] [] | + pies | | + popt | [] [] [] [] [] [] [] [] [] | + psmisc | [] [] [] | + pspp | | + pwdutils | [] [] | + radius | [] [] | + recode | [] [] [] [] [] [] [] [] | + rosegarden | () () () () () | + rpm | [] [] | + rush | | + sarg | [] | + screem | [] [] | + scrollkeeper | [] [] [] [] | + sed | [] [] [] [] [] [] [] [] | + sharutils | [] [] [] [] [] [] [] | + shishi | [] | + skencil | [] | + solfege | [] [] [] [] | + solfege-manual | [] [] | + soundtracker | [] [] | + sp | [] () | + sysstat | [] [] [] [] [] | + tar | [] [] [] [] [] [] [] | + texinfo | [] [] [] [] | + tin | [] | + unicode-han-tra... | | + unicode-transla... | [] [] | + util-linux-ng | [] [] [] [] [] [] | + vice | () () () | + vmm | [] | + vorbis-tools | [] | + wastesedge | () () | + wdiff | [] | + wget | [] [] [] [] [] [] [] [] | + wyslij-po | [] [] [] | + xchat | [] [] [] [] [] [] [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] [] | + +----------------------------------------------------+ + fi fr ga gl gu he hi hr hu hy id is it ja ka kn + 105 121 53 20 4 8 3 5 53 2 120 5 84 67 0 4 + + ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne + +-----------------------------------------------+ + a2ps | [] | + aegis | | + ant-phone | | + anubis | [] [] | + aspell | [] | + bash | | + bfd | | + bibshelf | [] [] | + binutils | | + bison | [] | + bison-runtime | [] [] [] [] [] | + bluez-pin | [] [] [] [] [] | + bombono-dvd | | + buzztard | | + cflow | | + clisp | | + coreutils | [] | + cpio | | + cppi | | + cpplib | | + cryptsetup | | + dfarc | [] | + dialog | [] [] [] [] [] | + dico | | + diffutils | [] [] | + dink | | + doodle | | + e2fsprogs | | + enscript | | + exif | [] | + fetchmail | | + findutils | | + flex | | + freedink | [] | + gas | | + gawk | | + gcal | | + gcc | | + gettext-examples | [] [] [] [] | + gettext-runtime | [] | + gettext-tools | [] | + gip | [] [] | + gjay | | + gliv | | + glunarclock | [] | + gnubiff | | + gnucash | () () () () | + gnuedu | | + gnulib | | + gnunet | | + gnunet-gtk | | + gnutls | [] | + gold | | + gpe-aerial | [] | + gpe-beam | [] | + gpe-bluetooth | [] [] | + gpe-calendar | [] | + gpe-clock | [] [] [] [] [] | + gpe-conf | [] [] | + gpe-contacts | [] [] | + gpe-edit | [] | + gpe-filemanager | [] [] | + gpe-go | [] [] [] | + gpe-login | [] | + gpe-ownerinfo | [] [] | + gpe-package | [] [] | + gpe-sketchbook | [] [] | + gpe-su | [] [] [] [] [] [] | + gpe-taskmanager | [] [] [] [] [] [] | + gpe-timesheet | [] [] | + gpe-today | [] [] [] [] | + gpe-todo | [] [] | + gphoto2 | | + gprof | [] | + gpsdrive | | + gramadoir | | + grep | | + grub | | + gsasl | | + gss | | + gst-plugins-bad | [] [] [] [] | + gst-plugins-base | [] [] | + gst-plugins-good | [] [] | + gst-plugins-ugly | [] [] [] [] [] | + gstreamer | | + gtick | | + gtkam | [] | + gtkorphan | [] [] | + gtkspell | [] [] [] [] [] [] [] | + gutenprint | | + hello | [] [] [] | + help2man | | + hylafax | | + idutils | | + indent | | + iso_15924 | [] [] | + iso_3166 | [] [] () [] [] [] [] [] | + iso_3166_2 | | + iso_4217 | [] [] | + iso_639 | [] [] | + iso_639_3 | [] | + jwhois | [] | + kbd | | + keytouch | [] | + keytouch-editor | [] | + keytouch-keyboa... | [] | + klavaro | [] | + latrine | [] | + ld | | + leafpad | [] [] [] | + libc | [] | + libexif | | + libextractor | | + libgnutls | [] | + libgpewidget | [] [] | + libgpg-error | | + libgphoto2 | | + libgphoto2_port | | + libgsasl | | + libiconv | | + libidn | | + lifelines | | + liferea | | + lilypond | | + linkdr | | + lordsawar | | + lprng | | + lynx | | + m4 | | + mailfromd | | + mailutils | | + make | [] | + man-db | | + man-db-manpages | | + minicom | [] | + mkisofs | | + myserver | | + nano | [] [] | + opcodes | | + parted | | + pies | | + popt | [] [] [] | + psmisc | | + pspp | | + pwdutils | | + radius | | + recode | | + rosegarden | | + rpm | | + rush | | + sarg | | + screem | | + scrollkeeper | [] [] | + sed | | + sharutils | | + shishi | | + skencil | | + solfege | [] | + solfege-manual | | + soundtracker | | + sp | | + sysstat | [] | + tar | [] | + texinfo | [] | + tin | | + unicode-han-tra... | | + unicode-transla... | | + util-linux-ng | | + vice | | + vmm | | + vorbis-tools | | + wastesedge | | + wdiff | | + wget | [] | + wyslij-po | | + xchat | [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] | + +-----------------------------------------------+ + ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne + 20 5 10 1 13 48 4 2 2 4 24 10 20 3 1 + + nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr + +---------------------------------------------------+ + a2ps | [] [] [] [] [] [] [] [] | + aegis | [] [] [] | + ant-phone | [] [] | + anubis | [] [] [] | + aspell | [] [] [] [] [] | + bash | [] [] | + bfd | [] | + bibshelf | [] [] | + binutils | [] [] | + bison | [] [] [] | + bison-runtime | [] [] [] [] [] [] [] | + bluez-pin | [] [] [] [] [] [] [] [] | + bombono-dvd | [] () | + buzztard | [] [] | + cflow | [] | + clisp | [] [] | + coreutils | [] [] [] [] [] [] | + cpio | [] [] [] | + cppi | [] | + cpplib | [] | + cryptsetup | [] | + dfarc | [] | + dialog | [] [] [] [] | + dico | [] | + diffutils | [] [] [] [] [] [] | + dink | () | + doodle | [] [] | + e2fsprogs | [] [] | + enscript | [] [] [] [] [] | + exif | [] [] [] () [] | + fetchmail | [] [] [] [] | + findutils | [] [] [] [] [] | + flex | [] [] [] [] [] | + freedink | [] [] | + gas | | + gawk | [] [] [] [] | + gcal | | + gcc | [] | + gettext-examples | [] [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] [] [] [] | + gettext-tools | [] [] [] [] [] [] | + gip | [] [] [] [] [] | + gjay | | + gliv | [] [] [] [] [] [] | + glunarclock | [] [] [] [] [] | + gnubiff | [] () | + gnucash | [] () () () | + gnuedu | [] | + gnulib | [] [] [] [] | + gnunet | | + gnunet-gtk | | + gnutls | [] [] | + gold | | + gpe-aerial | [] [] [] [] [] [] [] | + gpe-beam | [] [] [] [] [] [] [] | + gpe-bluetooth | [] [] | + gpe-calendar | [] [] [] [] | + gpe-clock | [] [] [] [] [] [] [] [] | + gpe-conf | [] [] [] [] [] [] [] | + gpe-contacts | [] [] [] [] [] | + gpe-edit | [] [] [] | + gpe-filemanager | [] [] [] | + gpe-go | [] [] [] [] [] [] [] [] | + gpe-login | [] [] | + gpe-ownerinfo | [] [] [] [] [] [] [] [] | + gpe-package | [] [] | + gpe-sketchbook | [] [] [] [] [] [] [] | + gpe-su | [] [] [] [] [] [] [] [] | + gpe-taskmanager | [] [] [] [] [] [] [] [] | + gpe-timesheet | [] [] [] [] [] [] [] [] | + gpe-today | [] [] [] [] [] [] [] [] | + gpe-todo | [] [] [] [] [] | + gphoto2 | [] [] [] [] [] [] [] [] | + gprof | [] [] [] | + gpsdrive | [] [] | + gramadoir | [] [] | + grep | [] [] [] [] | + grub | [] [] [] | + gsasl | [] [] [] [] | + gss | [] [] [] | + gst-plugins-bad | [] [] [] [] [] [] | + gst-plugins-base | [] [] [] [] [] | + gst-plugins-good | [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] [] | + gstreamer | [] [] [] [] [] | + gtick | [] [] [] | + gtkam | [] [] [] [] [] [] | + gtkorphan | [] | + gtkspell | [] [] [] [] [] [] [] [] [] [] | + gutenprint | [] [] | + hello | [] [] [] [] | + help2man | [] [] | + hylafax | [] | + idutils | [] [] [] [] [] | + indent | [] [] [] [] [] [] [] | + iso_15924 | [] [] [] [] | + iso_3166 | [] [] [] [] [] () [] [] [] [] [] [] [] [] | + iso_3166_2 | [] [] [] | + iso_4217 | [] [] [] [] [] [] [] [] | + iso_639 | [] [] [] [] [] [] [] [] [] | + iso_639_3 | [] [] | + jwhois | [] [] [] [] | + kbd | [] [] [] | + keytouch | [] [] [] | + keytouch-editor | [] [] [] | + keytouch-keyboa... | [] [] [] | + klavaro | [] [] | + latrine | [] [] | + ld | | + leafpad | [] [] [] [] [] [] [] [] [] | + libc | [] [] [] [] | + libexif | [] [] () [] | + libextractor | | + libgnutls | [] [] | + libgpewidget | [] [] [] | + libgpg-error | [] [] | + libgphoto2 | [] [] | + libgphoto2_port | [] [] [] [] [] | + libgsasl | [] [] [] [] [] | + libiconv | [] [] [] [] [] | + libidn | [] [] | + lifelines | [] [] | + liferea | [] [] [] [] [] () () [] | + lilypond | [] | + linkdr | [] [] [] | + lordsawar | | + lprng | [] | + lynx | [] [] [] | + m4 | [] [] [] [] [] | + mailfromd | [] | + mailutils | [] | + make | [] [] [] [] | + man-db | [] [] [] | + man-db-manpages | [] [] [] | + minicom | [] [] [] [] | + mkisofs | [] [] [] | + myserver | | + nano | [] [] [] [] | + opcodes | [] [] | + parted | [] [] [] [] | + pies | [] | + popt | [] [] [] [] | + psmisc | [] [] [] | + pspp | [] [] | + pwdutils | [] | + radius | [] [] [] | + recode | [] [] [] [] [] [] [] [] | + rosegarden | () () | + rpm | [] [] [] | + rush | [] [] | + sarg | | + screem | | + scrollkeeper | [] [] [] [] [] [] [] [] | + sed | [] [] [] [] [] [] [] [] [] | + sharutils | [] [] [] [] | + shishi | [] | + skencil | [] [] | + solfege | [] [] [] [] | + solfege-manual | [] [] [] | + soundtracker | [] | + sp | | + sysstat | [] [] [] [] | + tar | [] [] [] [] | + texinfo | [] [] [] [] | + tin | [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux-ng | [] [] [] [] [] | + vice | [] | + vmm | [] | + vorbis-tools | [] [] | + wastesedge | [] | + wdiff | [] [] | + wget | [] [] [] [] [] [] [] | + wyslij-po | [] [] [] | + xchat | [] [] [] [] [] [] [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] | + +---------------------------------------------------+ + nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr + 135 10 4 7 105 1 29 62 47 91 3 54 46 9 37 + + sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW + +---------------------------------------------------+ + a2ps | [] [] [] [] [] | 27 + aegis | [] | 9 + ant-phone | [] [] [] [] | 9 + anubis | [] [] [] [] | 15 + aspell | [] [] [] | 20 + bash | [] [] [] | 12 + bfd | [] | 6 + bibshelf | [] [] [] | 16 + binutils | [] [] | 8 + bison | [] [] | 12 + bison-runtime | [] [] [] [] [] [] | 29 + bluez-pin | [] [] [] [] [] [] [] [] | 37 + bombono-dvd | [] | 4 + buzztard | [] | 7 + cflow | [] [] [] | 9 + clisp | | 10 + coreutils | [] [] [] [] | 22 + cpio | [] [] [] [] [] [] | 13 + cppi | [] [] | 5 + cpplib | [] [] [] [] [] [] | 14 + cryptsetup | [] [] | 7 + dfarc | [] | 9 + dialog | [] [] [] [] [] [] [] | 30 + dico | [] | 2 + diffutils | [] [] [] [] [] [] | 30 + dink | | 4 + doodle | [] [] | 7 + e2fsprogs | [] [] [] | 11 + enscript | [] [] [] [] | 17 + exif | [] [] [] | 16 + fetchmail | [] [] [] | 17 + findutils | [] [] [] [] [] | 20 + flex | [] [] [] [] | 15 + freedink | [] | 10 + gas | [] | 4 + gawk | [] [] [] [] | 18 + gcal | [] [] | 5 + gcc | [] [] [] | 7 + gettext-examples | [] [] [] [] [] [] [] | 34 + gettext-runtime | [] [] [] [] [] [] [] | 29 + gettext-tools | [] [] [] [] [] [] | 22 + gip | [] [] [] [] | 22 + gjay | [] | 3 + gliv | [] [] [] | 14 + glunarclock | [] [] [] [] [] | 19 + gnubiff | [] [] | 4 + gnucash | () [] () [] () | 10 + gnuedu | [] [] | 7 + gnulib | [] [] [] [] | 16 + gnunet | [] | 1 + gnunet-gtk | [] [] [] | 5 + gnutls | [] [] [] | 10 + gold | [] | 4 + gpe-aerial | [] [] [] | 18 + gpe-beam | [] [] [] | 19 + gpe-bluetooth | [] [] [] | 13 + gpe-calendar | [] [] [] [] | 12 + gpe-clock | [] [] [] [] [] | 28 + gpe-conf | [] [] [] [] | 20 + gpe-contacts | [] [] [] | 17 + gpe-edit | [] [] [] | 12 + gpe-filemanager | [] [] [] [] | 16 + gpe-go | [] [] [] [] [] | 25 + gpe-login | [] [] [] | 11 + gpe-ownerinfo | [] [] [] [] [] | 25 + gpe-package | [] [] [] | 13 + gpe-sketchbook | [] [] [] | 20 + gpe-su | [] [] [] [] [] | 30 + gpe-taskmanager | [] [] [] [] [] | 29 + gpe-timesheet | [] [] [] [] [] | 25 + gpe-today | [] [] [] [] [] [] | 30 + gpe-todo | [] [] [] [] | 17 + gphoto2 | [] [] [] [] [] | 24 + gprof | [] [] [] | 15 + gpsdrive | [] [] [] | 11 + gramadoir | [] [] [] | 11 + grep | [] [] [] | 10 + grub | [] [] [] | 14 + gsasl | [] [] [] [] | 14 + gss | [] [] [] | 11 + gst-plugins-bad | [] [] [] [] | 26 + gst-plugins-base | [] [] [] [] [] | 24 + gst-plugins-good | [] [] [] [] | 24 + gst-plugins-ugly | [] [] [] [] [] | 29 + gstreamer | [] [] [] [] | 22 + gtick | [] [] [] | 13 + gtkam | [] [] [] | 20 + gtkorphan | [] [] [] | 14 + gtkspell | [] [] [] [] [] [] [] [] [] | 45 + gutenprint | [] | 10 + hello | [] [] [] [] [] [] | 21 + help2man | [] [] | 7 + hylafax | [] | 5 + idutils | [] [] [] [] | 17 + indent | [] [] [] [] [] [] | 30 + iso_15924 | () [] () [] [] | 16 + iso_3166 | [] [] () [] [] () [] [] [] () | 53 + iso_3166_2 | () [] () [] | 9 + iso_4217 | [] () [] [] () [] [] | 26 + iso_639 | [] [] [] () [] () [] [] [] [] | 38 + iso_639_3 | [] () | 8 + jwhois | [] [] [] [] [] | 16 + kbd | [] [] [] [] [] | 15 + keytouch | [] [] [] | 16 + keytouch-editor | [] [] [] | 14 + keytouch-keyboa... | [] [] [] | 14 + klavaro | [] | 11 + latrine | [] [] [] | 10 + ld | [] [] [] [] | 11 + leafpad | [] [] [] [] [] [] | 33 + libc | [] [] [] [] [] | 21 + libexif | [] () | 7 + libextractor | [] | 1 + libgnutls | [] [] [] | 9 + libgpewidget | [] [] [] | 14 + libgpg-error | [] [] [] | 9 + libgphoto2 | [] [] | 8 + libgphoto2_port | [] [] [] [] | 14 + libgsasl | [] [] [] | 13 + libiconv | [] [] [] [] | 21 + libidn | () [] [] | 11 + lifelines | [] | 4 + liferea | [] [] [] | 21 + lilypond | [] | 7 + linkdr | [] [] [] [] [] | 17 + lordsawar | | 1 + lprng | [] | 3 + lynx | [] [] [] [] | 17 + m4 | [] [] [] [] | 19 + mailfromd | [] [] | 3 + mailutils | [] | 5 + make | [] [] [] [] | 21 + man-db | [] [] [] | 8 + man-db-manpages | | 4 + minicom | [] [] | 16 + mkisofs | [] [] | 9 + myserver | | 0 + nano | [] [] [] [] | 21 + opcodes | [] [] [] | 11 + parted | [] [] [] [] [] | 15 + pies | [] [] | 3 + popt | [] [] [] [] [] [] | 27 + psmisc | [] [] | 11 + pspp | | 4 + pwdutils | [] [] | 6 + radius | [] [] | 9 + recode | [] [] [] [] | 28 + rosegarden | () | 0 + rpm | [] [] [] | 11 + rush | [] [] | 4 + sarg | | 1 + screem | [] | 3 + scrollkeeper | [] [] [] [] [] | 27 + sed | [] [] [] [] [] | 30 + sharutils | [] [] [] [] [] | 22 + shishi | [] | 3 + skencil | [] [] | 7 + solfege | [] [] [] [] | 16 + solfege-manual | [] | 8 + soundtracker | [] [] [] | 9 + sp | [] | 3 + sysstat | [] [] | 15 + tar | [] [] [] [] [] [] | 23 + texinfo | [] [] [] [] [] | 17 + tin | | 4 + unicode-han-tra... | | 0 + unicode-transla... | | 2 + util-linux-ng | [] [] [] [] | 20 + vice | () () | 1 + vmm | [] | 4 + vorbis-tools | [] | 6 + wastesedge | | 2 + wdiff | [] [] | 7 + wget | [] [] [] [] [] | 26 + wyslij-po | [] [] | 8 + xchat | [] [] [] [] [] [] | 36 + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | 63 + xkeyboard-config | [] [] [] | 22 + +---------------------------------------------------+ + 85 teams sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW + 178 domains 119 1 3 3 0 10 65 51 155 17 98 7 41 2618 + + 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 June 2010 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://translationproject.org/extra/matrix.html'. + +1.5 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 +the 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 +`coordinator@translationproject.org' to make the `.pot' files available +to the translation teams. + diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 3 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, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..c7537f9 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,9593 @@ +2025-05-02 Colin Watson + + Release man-db 2.13.1 + +2025-05-02 Yuri Kozlov + + Update Russian manual page translation + + * man/po4a/po/ru.po: Update from Translation Project. + * man/THANKS: Update translator credit. + +2025-04-28 Giuseppe Sacco + + Update Italian translation + + * po/it.po: Update from Translation Project. + +2025-04-27 Mario Blättermann + + Update German manual page translation + + * man/po4a/po/de.po: Update from Translation Project. + +2025-04-24 Rafael Fontenelle + + Update Brazilian Portuguese manual page translation + + * man/po4a/po/pt_BR.po: Update from Translation Project. + +2025-04-23 Seong-ho Cho + + Update Korean manual page translation + + * man/po4a/po/ko.po: Update from Translation Project. + +2025-04-23 Remus-Gabriel Chelu + + Update Romanian manual page translation + + * man/po4a/po/ro.po: Update from Translation Project. + +2025-04-23 Yuri Chornoivan + + Update Ukrainian manual page translation + + * man/po4a/po/uk.po: Update from Translation Project. + * man/THANKS: Update translator credit. + +2025-04-22 Remus-Gabriel Chelu + + Update Romanian translation + + * po/ro.po: Update from Translation Project. + +2025-04-22 Yuri Chornoivan + + Update Ukrainian translation + + * po/uk.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2025-04-22 Andika Triwidada + + Update Indonesian translation + + * po/id.po: Update from Translation Project. + +2025-04-22 Pedro Albuquerque + + Update Portuguese manual page translation + + * man/po4a/po/pt.po: Update from Translation Project. + +2025-04-21 Colin Watson + + Release man-db 2.13.1-pre1 + +2025-04-21 Colin Watson + + Update translation files + + * man/po4a/po/*.pot, man/po4a/po/*.po, po/*.pot, po/*.po: Update. + +2025-04-21 Colin Watson + + NEWS.md: Document some recent commits + +2025-04-21 Colin Watson + + Merge branch 'max_name-increase' into 'main' + + lexgrog.l: Increase MAX_NAME to 16384 + + See merge request man-db/man-db!14 + +2025-04-21 Jake Dane <12311737-jakedane@users.noreply.gitlab.com> + + lexgrog.l: Increase MAX_NAME to 16384 + + Since some manual pages with NAME sections exceeding 8192 bytes have + been observed in the wild (Debian bug #1102453), increase MAX_NAME to + 16384. + +2025-03-30 Pedro Albuquerque + + Update Portuguese manual page translation + + * man/po4a/po/pt.po: Update from Translation Project. + +2025-03-24 Pedro Albuquerque + + Update Portuguese translation + + * po/pt.po: Update from Translation Project. + * man/THANKS: Update translator credit. + +2025-03-20 Colin Watson + + Merge branch 'kraj/musl' into 'main' + + check for _nl_msg_cat_cntr in configure + + See merge request man-db/man-db!13 + +2025-03-19 Khem Raj + + check for _nl_msg_cat_cntr in configure + + _nl_msg_cat_cntr is not available in all implementations e.g. musl libintl + does not have it, therefore add a check to detect it and use it only if + it is found. + + Upstream-Status: Submitted [https://gitlab.com/man-db/man-db/-/merge_requests/13] + +2025-02-13 Colin Watson + + manpath(5): Fix minor formatting issues + + Reported by Bjarni Ingi Gislason. Fixes Debian bug #1095890. + + * man/man5/manpath.man5 (DESCRIPTION): Use `.I` rather than `.IR` where + there is only one argument. Use `\:` to indicate where a long search + path string may be broken across lines. + (FORMAT): Add `\&` after "e.g.", since it doesn't end a sentence. + +2025-02-03 Yuri Kozlov + + Update Russian manual page translation + + * man/po4a/po/ru.po: Update from Translation Project. + +2025-01-24 Colin Watson + + Recognize another Ukrainian translation of NAME + + * src/lexgrog.l (uk_name): Add "ІМʼЯ". + +2025-01-24 Colin Watson + + Add Ukrainian manual page translation + + * man/po4a/po/uk.po: New from Translation Project (thanks, Volodymyr + Lisivka). + * configure.ac (AC_CONFIG_FILES): Add man/uk/Makefile. + * man/LINGUAS.po4a: Add uk. + * man/Makefile.am (DIST_SUBDIRS): Add uk. + * man/uk/Makefile.am, man/uk/translator.add: New files. + * man/po4a/Makefile.am (POFILES): Add po/uk.po. + * man/po4a/po4a.cfg (po4a_langs): Add uk. + * man/THANKS: Update translator credit. + * .gitignore: Add man/uk/man1, man/uk/man5, and man/uk/man8. + +2025-01-23 Colin Watson + + Merge branch 'flex' into 'main' + + configure: check for shipped generated sources in source directory + + See merge request man-db/man-db!12 + +2025-01-22 Ross Burton + + configure: check for shipped generated sources in source directory + + The configure script fails if it can't find flex and the pregenerated + source code isn't available, as is the case in builds from git whereas + tarballs include the code. + + However this breaks with out-of-tree builds, where cwd during configure + is the build directory not the source directory, and the pregenerated + sources will always be inside the source directory. + +2025-01-19 Colin Watson + + Tolerate additional spaces in preprocessor strings + + Fixes https://bugs.debian.org/1093431. + + * src/man.c (get_preprocessors_from_file): Skip over extra spaces after + `PP_COOKIE`. + * NEWS.md: Document this. + +2024-12-19 МироÑлав Ðиколић + + Update Serbian manual page translation + + * man/po4a/po/sr.po: Update from Translation Project. + +2024-10-27 Colin Watson + + Fix typography in BUGS sections of manual pages + + * man/man1/apropos.man1 (BUGS), man/man1/lexgrog.man1 (BUGS), + man/man1/man-recode.man1 (BUGS), man/man1/manconv.man1 (BUGS), + man/man1/manpath.man1 (BUGS), man/man1/whatis.man1 (BUGS), + man/man1/zsoelim.man1 (BUGS), man/man5/manpath.man5 (BUGS), + man/man8/accessdb.man8 (BUGS), man/man8/catman.man8 (BUGS), + man/man8/mandb.man8 (BUGS): Use `\-` instead of `-` when a literal + U+002D HYPHEN-MINUS is required. + +2024-10-27 Bjarni Ingi Gislason + + man(1): Fix minor formatting issues + + Fixes https://bugs.debian.org/1085485. + + * man/man1/man.man1 (EXAMPLES): Use matching font for both quote + characters in `man 'man(7)'`. + (Controlling formatted output): Avoid unnecessary centring of table + headers. Use `.B` instead of `.BR` when there is only a single + argument. + (ENVIRONMENT, BUGS): Use `\-` instead of `-` when a literal U+002D + HYPHEN-MINUS is required. + +2024-09-24 Rafael Fontenelle + + Update Brazilian Portuguese translation + + * po/pt_BR.po: Update from Translation Project. + +2024-08-29 Colin Watson + + Add sbindir to PATH when testing an installed package + + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Add `sbindir`. + * src/tests/testlib.sh: If `MAN_TEST_INSTALLED` is non-empty, also + prepend `$sbindir` to `PATH`. + +2024-08-29 Colin Watson + + Release man-db 2.13.0 + +2024-08-28 Colin Watson + + README.md: Update my copyright notice + +2024-08-28 Colin Watson + + Further improve table formatting in description of --ascii + + Fixes https://bugs.debian.org/1073530, again. + + The use of text blocks here was an attempt (in + 6000c56fb621b454185b04d0d718ede9a87eadf4) to make this page more robust + against the possibility of translations that were long enough to cause + the table to be overly wide otherwise. However, in the 13 years since I + added them, no language has produced long enough translations for this + to be a problem, and this defence against a hypothetical problem causes + real formatting issues because `tbl` formats text blocks in a diversion + whose width is calculated in advance and is difficult to set + appropriately. + + If a translation comes along in future that pushes the column limits + harder, then one option would be to drop the "Octal" column, which + arguably provides an excessive level of detail. + + * man/man1/man.man1 (Controlling formatted output): In the description + of `--ascii`, abandon text blocks and drop workarounds that attempted to + improve their formatting. + +2024-08-28 Colin Watson + + Document clang-format and pre-commit + + * docs/HACKING.md (Coding style): Replace description of manual code + formatting with mentions of `clang-format` and `pre-commit`. + +2024-08-28 Colin Watson + + Use nullptr in a couple more places + + * docs/HACKING.md (Facilities and portability): Advise terminating + variadic argument lists with `nullptr` rather than `NULL`. + * src/zsoelim.l (try_compressed): Terminate `appendstr` argument list + with `nullptr` rather than `NULL`. + +2024-08-28 Colin Watson + + Support running the test suite against an installed package + + To do this, run `make check MAN_TEST_INSTALLED=1` from a built tree. + This is useful for systems such as Debian's autopkgtest framework, which + run packages' tests when their dependencies change. + + * man/check-man: If `MAN_TEST_INSTALLED` is non-empty, run `man` from + the installed system rather than from the build tree. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Sort lexicographically. + Remove `PATH`. Add `pkglibexecdir`. + * src/tests/testlib.sh: If `MAN_TEST_INSTALLED` is non-empty, prepend + `$pkglibexecdir` to `PATH` and run programs from the installed system + rather than from the build tree. + * NEWS.md: Document this. + +2024-08-28 Colin Watson + + Fix -Wflex-array-member-not-at-end warning with GCC 14 + + Loosely based on + https://salsa.debian.org/dpkg-team/dpkg/-/commit/b077a733f0. + + * lib/orderfiles.c (order_files) [HAVE_LINUX_FIEMAP_H]: Avoid relying on + a GCC extension that allowed a structure containing a flexible array + member to be a member of another structure but not the last field. + * NEWS.md: Document this. + +2024-08-28 Colin Watson + + Fix -Wmissing-variable-declarations warnings with GCC 14 + + * lib/encodings.c (groff_preconv): Declare static. + * lib/orderfiles.c (physical_offsets): Likewise. + * src/accessdb.c (cat_root, database): Likewise. + * src/catman.c (dbf_close_post_fork, manp): Likewise. + * src/check_mandirs.c (whatis_map): Likewise. + * src/man.c (lang): Likewise. + * src/mandb.c (manp): Likewise. + * src/tests/get-mtime.c (path): Likewise. + * src/ult_src.c (ult_cache): Likewise. + * src/whatis.c (am_apropos, sandbox): Likewise. + + * lib/security.h (ruid, euid, uid, egid, egid, gid): Add extern + declarations. + * src/check_mandirs.h (opt_test, pages, force_rescan): Likewise. + * src/decompress.h (sandbox): Likewise. + * src/globbing.h (extension): Likewise. + * src/lexgrog.h (sandbox): Likewise. + * src/manconv_client.h (sandbox): Likewise. + * src/manp.h (user_config_file, disable_cache, min_cat_width, + max_cat_width, cat_width): Likewise. + * src/straycats.h (sandbox): Likewise. + + * src/catman.c (user_config_file): Remove extern declaration. + * src/decompress.c (sandbox): Likewise. + * src/globbing_test.c (extension): Likewise. + * src/lexgrog.l (sandbox): Likewise. + * src/man.c (extension, user_config_file, disable_cache, min_cat_width, + max_cat_width, cat_width): Likewise. + * src/manconv_client.c (sandbox): Likewise. + * src/mandb.c (opt_test, extension, force_rescan, user_config_file, + pages): Likewise. + * src/manpath.c (user_config_file): Likewise. + * src/straycats.c (sandbox): Likewise. + * src/whatis.c (user_config_file): Likewise. + + * src/mandb.c (man_owner): Move to being a local variable in ... + (main): ... here. + + * NEWS.md: Document this. + +2024-08-05 Colin Watson + + Use C23-style nullptr + + * bootstrap.conf (gnulib_modules): Add `nullptr`. + * lib/compression.c, lib/filenames.c, libdb/db_delete.c, src/catman.c, + src/check_mandirs.c, src/decompress.c, src/globbing.c, src/lexgrog.l, + src/man-recode.c, src/man.c, src/manconv_client.c, src/manconv_main.c, + src/manp.c, src/straycats.c, src/whatis.c: Replace `(void *) 0` with + `nullptr`. + +2024-08-05 Colin Watson + + Ignore the "clang-format" commit for "git blame" + + Developers should apply the following config setting: + + git config blame.ignoreRevsFile .git-blame-ignore-revs + +2024-08-05 Colin Watson + + Introduce clang-format + + This relieves me of the cognitive burden of having to think about + trivial formatting details (especially when reviewing code from others, + but also for myself). In most cases the reformatted code is equivalent + or superior in terms of my preferred style to what I wrote myself. + + * .clang-format: New file. + * .pre-commit-config.yaml: Add clang-format hook. + * include/*, lib/*, libdb/*, src/*: Reformat using clang-format. + +2024-07-23 Volodymyr Lisivka + + Add Ukrainian translation + + * po/uk.po: New from Translation Project. + * po/LINGUAS: Add uk. + * man/THANKS: Add translator credit. + +2024-07-22 Colin Watson + + Fix man-suffixed-extension test failure on !GNU + + Fixes https://gitlab.com/man-db/man-db/-/issues/41. + + * src/tests/man-suffixed-extension: Guard `2p` section tests to run only + when the GNU hierarchy organization is enabled. + * NEWS.md: Document this. + +2024-07-14 Colin Watson + + Upgrade to Gnulib stable-202407 + + * bootstrap: Sync to Gnulib 0ba13435a9362bec0ff5fd0830907b9fac723e41. + * bootstrap.conf (GNULIB_REVISION): Set to + 0ba13435a9362bec0ff5fd0830907b9fac723e41. + * NEWS.md: Document this. + +2024-06-17 Colin Watson + + Improve table formatting in description of --ascii + + Fixes https://bugs.debian.org/1073530. + + * man/man1/man.man1 (Controlling formatted output): In the description + of `--ascii`, expand the "Description" table column. + +2024-06-07 Cristian Othón Martínez Vera + + Update Spanish translation + + * po/es.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2024-05-23 Colin Watson + + Update pre-commit hooks + + * .pre-commit-config.yaml (pre-commit-hooks): Update to v4.6.0. + +2024-05-23 Colin Watson + + Drop support for groff < 1.21 + + groff 1.21 was released at the end of 2010, and to support older + versions we were carrying some awkward code which is probably no longer + relevant on any system where people install current versions of man-db. + + * configure.ac: Remove `--enable-mb-groff` option, which is now the + default behaviour on systems using groff. + * docs/INSTALL.quick: Document nroff/troff requirement. + * lib/encodings.c (directory_table, charset_table, + fallback_default_device, device_table, less_charset_table): Remove + `MULTIBYTE_GROFF` conditionals and consolidate entries into main tables + where relevant. + (compatible_encodings): Remove `MULTIBYTE_GROFF` case, which was only + relevant to the old Debian multibyte patch. + (get_roff_encoding): Likewise. Add `ATTRIBUTE_PURE`. + * m4/man-gnu-nroff.m4: Check for `preconv` (previously checked in + configure.ac). + * src/man.c (locale_macros): Remove groff version check. + * src/tests/man-language-specific-request: Adjust expected spacing. + * NEWS.md: Document this. + +2024-04-21 Benno Schulenberg + + Update Dutch translation + + * po/nl.po: Update from Translation Project. + +2024-04-05 Colin Watson + + Release man-db 2.12.1 + +2024-04-05 Colin Watson + + Rebase argp-domain patch onto current Gnulib + + * patches/argp-domain.patch: Rebase and resolve conflict. + +2024-03-31 Colin Watson + + Fix excessive cleanup of /var/cache/man by systemd-tmpfiles + + Fixes https://gitlab.com/man-db/man-db/-/issues/36. + + * init/systemd/man-db.conf.in: Only consider access times. Ignore + `/var/cache/man/index*` and `/var/cache/man/*/index*`. + * NEWS.md: Document this. + +2024-03-29 Seong-ho Cho + + Update Korean manual page translation + + * man/po4a/po/ko.po: Update from Translation Project. + +2024-03-29 Mario Blättermann + + Update German manual page translation + + * man/po4a/po/de.po: Update from Translation Project. + +2024-03-28 Remus-Gabriel Chelu + + Update Romanian manual page translation + + * man/po4a/po/ro.po: Update from Translation Project. + +2024-03-28 Colin Watson + + Release man-db 2.12.1-pre1 + +2024-03-28 Colin Watson + + Update translation files + + * man/po4a/po/*.pot, man/po4a/po/*.po, po/*.pot, po/*.po: Update. + +2024-03-28 Colin Watson + + Update pre-commit hooks + + * .pre-commit-config.yaml (shellcheck-py): Update to v0.10.0.1. + * src/tests/mandb-purge-updates-timestamp: Disable shellcheck SC2319; + the use of `$?` here is not problematic. + * tools/checkman: Use `find -newer` rather than non-POSIX `test -nt`. + +2024-03-28 Colin Watson + + Document italic formatting + + Fixes https://gitlab.com/man-db/man-db/-/issues/35. + + * man/man1/man.man1 (ENVIRONMENT): Give `MANROFFOPT=-P-i` as an example. + * NEWS.md: Document this. + +2024-03-19 Colin Watson + + Move setting of seccomp attributes earlier + + This doesn't need to be done every time we load the filter; it can be + done when constructing the filter instead. + + * lib/sandbox.c (_sandbox_load): Move `seccomp_attr_set` call to ... + (make_seccomp_filter): ... here. + +2024-03-18 Colin Watson + + web: Update bootstrapping instructions + + * web/development.html: Bootstrapping from git now requires + `./bootstrap` rather than `./autogen.sh`. + +2024-03-18 Colin Watson + + Tighten up several declarations + + * lib/cleanup.c (untrap_signal, pop_cleanup): Constify argument. + * lib/cleanup.h (pop_cleanup): Update prototype. + * src/decompress.c (decompress_is_pipeline): Constify argument. + * src/decompress.h (decompress_is_pipeline): Update prototype. + * src/mandb.c (dbpaths_copy_to_tmp, dbpaths_remove_tmp, + dbpaths_unlink_tmp): Constify argument. + * src/ult_src.c (ult_key_equals): Constify variable declarations. + * src/whatis.c (any_set, all_set): Constify argument. + (match): Constify variable declarations. + (do_apropos): Constify argument to `combine`. + + * lib/encodings.c (get_less_charset, get_jless_charset): Narrow variable + scope. + * src/check_mandirs.c (mkcatdirs): Likewise. + +2024-03-03 Colin Watson + + Speed up seccomp filter slightly + + Thanks to systemd for the idea. With a couple of hundred entries in the + filter (depending on architecture and permissiveness), using a binary-tree + search should be worth it. + + * lib/sandbox.c (_sandbox_load): Set `SCMP_FLTATR_CTL_OPTIMIZE` to 2 if + available. + * NEWS.md: Document this. + +2024-03-03 Colin Watson + + Update syscall lists from systemd 85b774de49 + + * lib/sandbox.c (make_seccomp_filter): Add `fchmodat2`. + +2024-03-03 Colin Watson + + Mention groff's pdf device + + Fixes https://gitlab.com/man-db/man-db/-/issues/34. + + * man/man1/man.man1 (Controlling formatted output): Add pdf to the list + of groff devices. + * NEWS.md: Document this. + +2024-01-28 Colin Watson + + pre-commit: Add perlcritic + + * .pre-commit-config.yaml: Add perlcritic. + * man/po4a/Locale/Po4a/Manext.pm (initialize, pushline): Add explicit + return statements at end. + (translate): Unpack `@_` first in a way that perlcritic recognizes. + +2024-01-28 Colin Watson + + Remove obsolete chconfig tool + + The FHS transition took place almost 25 years ago (at least in Debian), + so it's not worth keeping this around now. + + * tools/chconfig: Remove. + * tools/Makefile.am (dist_noinst_SCRIPTS): Remove chconfig. + * tools/README: Likewise. + * NEWS.md: Document this. + +2024-01-20 Colin Watson + + Update pre-commit hooks + + * .pre-commit-config.yaml (pre-commit-hooks): Update to v4.5.0. + (shellcheck-py): Update to v0.9.0.6. + +2024-01-20 Colin Watson + + Upgrade to Gnulib stable-202401 + + * bootstrap: Sync to Gnulib c78af17a931bb36e00c5f698b7fd37deb4a87f58. + * bootstrap.conf (GNULIB_REVISION): Set to + c78af17a931bb36e00c5f698b7fd37deb4a87f58. + * NEWS.md: Document this. + +2024-01-17 Sebastian Rasmussen + + Update Swedish manual page translation + + * man/po4a/po/sv.po: Update from Translation Project. + +2024-01-17 Sebastian Rasmussen + + Update Swedish translation + + * po/sv.po: Update from Translation Project. + +2024-01-10 МироÑлав Ðиколић + + Update Serbian translation + + * po/sr.po: Update from Translation Project. + +2023-12-30 Colin Watson + + NEWS: Document previous commit + + Fixes https://bugs.debian.org/1059537. + +2023-12-30 Colin Watson + + Merge branch 'main' into 'main' + + man: match the display width to the configured width + + See merge request man-db/man-db!11 + +2023-12-30 наб + + man: enforce a single-column right margin + + Under groff, tbl consistently overruns the page width by one column, + so accommodate this. + + Ref: https://gitlab.com/man-db/man-db/-/merge_requests/11#note_1708513108 + +2023-12-28 наб + + man: match the display width to the configured width + + Currently, the line length is: + if w ≤ 40: w - 2 + else : ⌊w*(39/40)⌋ + i.e. + if w ≤ 40: w - 2 + else : w - ⌈w/40⌉ + (this is equivalent to a ≤80 condition). + + This was originally originally introduced in commit + f139e8273d5f3754f0d0dacb890e515b30c2d28b ("Add terminal line length + detection to man.") from 2001-06-28, which did + if w ∈ [66, 80]: 80 (via default) + else : ⌊.9w⌋ + then tracked the default in + commit cac2ef84fe626f112de7537c20dfe29c35a71b96 ("Update default + line length in line with groff 1.18.") from 2002-07-06, + which updates it to the current formula, + then commit 39cdee4ada59d711d066628ec827508070d90a70 ("Always pass a + line length to nroff") from 2023-08-06 removes any defaulting. + + This is ideologically quite weird, because this behaves like a + stochastic best-effort fit so there is always a blank margin, growing + with size, derived from a 21-year-old default which was only relevant + because catpages were vaguely relevant, even though we perfectly + know how large we need to display the manual by virtue of perfectly + knowing the size of the teletype! There is no such margin on the + left, and why would there be? + + Fixes Debian bug #1059537. + +2023-12-28 наб + + man: simplify the right-margin condition + + As it stands, this is + ⌊line_length*(39/40)⌋ > line_length - 2 + which works out to + line_length ≤ 40 + Is that obvious? No (I analysed it to line_length < 80), + but the way the result is used makes it equivalent to + line_length ≤ 80 + anyway. + + This currently blames to commit cac2ef84fe626f112de7537c20dfe29c35a71b96 + ("Update default line length in line with groff 1.18.") dated + 2002-07-06 20:30:34 +0000(!) with a diff of + - if (!troff && (line_length < 66 || line_length > 80)) + - return line_length * 9 / 10; + + /* groff >= 1.18 defaults to 78. */ + + if (!troff && line_length != 80) { + + int length = line_length * 39 / 40; + + if (length > line_length - 2) + + return line_length - 2; + + else + + return length; + + NFC + +2023-12-18 Yuri Kozlov + + Update Russian manual page translation + + * man/po4a/po/ru.po: Update from Translation Project. + +2023-12-18 Yuri Kozlov + + Update Russian translation + + * po/ru.po: Update from Translation Project. + +2023-12-08 Colin Watson + + Upgrade to Gnulib stable-202307 as of 20231208 + + * bootstrap.conf (GNULIB_REVISION): Set to + 51ff7c1242903bcc90b35baf5ec2e6a176cf912a. + +2023-09-23 Colin Watson + + Release man-db 2.12.0 + +2023-09-19 Colin Watson + + systemd: Avoid duplicate cleanup of old cat pages + + Thanks to Ferenc Wágner. Fixes https://bugs.debian.org/1052221. + + * init/systemd/man-db.service.in: Remove call to `find`; this is already + handled equivalently by `init/systemd/man-db.conf.in`, and having both + can result in error messages due to the two cleanups running + concurrently. + * NEWS.md: Document this. + +2023-08-20 Colin Watson + + bootstrap: Make --skip-po disable Gnulib downloads too + + Fixes https://bugs.debian.org/1050089. + + * bootstrap.conf: If the `--skip-po` option is explicitly passed, then + don't pass `--po-base` or `--po-domain` options to `gnulib-tool`, and + don't merge `gl/ref-po/` into `gl/po/`. + +2023-08-07 Colin Watson + + README.md: Update my copyright notice + +2023-08-07 Colin Watson + + Update URLs for libpipeline and flex + + * NEWS.md, docs/INSTALL.quick: Update libpipeline URLs to + . + * docs/INSTALL.quick: Update flex URL to + . + +2023-08-07 Colin Watson + + Update to Gnulib stable-202307 as of 20230728 + + * bootstrap.conf (GNULIB_REVISION): Set to + d1b40e09c9c04d5c1ff120373397c6180bc16beb. + +2023-08-07 Colin Watson + + Update syscall lists from systemd ab9617a766 + + * lib/sandbox.c (make_seccomp_filter): Add `futex_waitv`, + `riscv_hwprobe`, and `arm_fadvise64_64`. + +2023-08-07 Petr Pisar + + Update Czech translation + + * po/cs.po: Update from Translation Project. + +2023-08-07 Mario Blättermann + + Update German manual page translation + + * man/po4a/po/de.po: Update from Translation Project. + +2023-08-07 Boyuan Yang <073plan@gmail.com> + + Update Simplified Chinese manual page translation + + * man/po4a/po/zh_CN.po: Update from Translation Project. + +2023-08-07 Boyuan Yang <073plan@gmail.com> + + Update Simplified Chinese translation + + * po/zh_CN.po: Update from Translation Project. + +2023-08-07 Remus-Gabriel Chelu + + Update Romanian manual page translation + + * man/po4a/po/ro.po: Update from Translation Project. + +2023-08-07 Seong-ho Cho + + Update Korean manual page translation + + * man/po4a/po/ko.po: Update from Translation Project. + +2023-08-07 Seong-ho Cho + + Update Korean translation + + * po/ko.po: Update from Translation Project. + +2023-08-06 Colin Watson + + Release man-db 2.12.0-pre2 + +2023-08-06 Colin Watson + + Update translation files + + * man/po4a/po/*.pot, man/po4a/po/*.po, po/*.pot, po/*.po: Update. + +2023-08-06 Remus-Gabriel Chelu + + Update Romanian manual page translation + + * man/po4a/po/ro.po: Update from Translation Project. + +2023-08-06 Colin Watson + + man(1): Document handling of file names without -l more accurately + + Fixes https://gitlab.com/man-db/man-db/-/issues/18. + + * man/man1/man.man1: Without `-l`, we only fall back to interpreting + arguments as local file names if they contain a slash. Explain this + more accurately. + * NEWS.md: Document this. + +2023-08-06 Colin Watson + + Merge branch 'cjwatson/man-negative-warnings' into 'main' + + man: Allow disabling warnings enabled by default in groff + + See merge request man-db/man-db!8 + +2023-08-06 Colin Watson + + man: Allow disabling warnings enabled by default in groff + +2023-08-06 Colin Watson + + man(1): Fix typography in STANDARDS + + Reported by Mario Blättermann. + + * man/man/man.man1 (STANDARDS): Use `\-`, not a mix of Unicode hyphens + and unescaped ASCII hyphens. + * man/po4a/po/*.pot, man/po4a/po/*.po: Update. + +2023-08-06 Remus-Gabriel Chelu + + Update Romanian translation + + * po/ro.po: Update from Translation Project. + +2023-08-06 Mario Blättermann + + Update German manual page translation + + * man/po4a/po/de.po: Update from Translation Project. + +2023-08-06 Mario Blättermann + + Update German translation + + * po/de.po: Update from Translation Project. + +2023-08-06 Yi-Jyun Pan + + Update Traditional Chinese translation + + * po/zh_TW.po: Update from Translation Project. + +2023-08-06 Colin Watson + + Declare variable as const + + * lib/util.c (init_locale): Declare `locale` as const. + +2023-08-06 Colin Watson + + Merge branch 'guess_manpath_fix' into 'main' + + Fixed add_man_subdirs to correctly add PATH elements with trailing paths + + See merge request man-db/man-db!10 + +2023-08-06 Jan Seeger + + Fixed add_man_subdirs to correctly add PATH elements with trailing paths + +2023-08-06 Colin Watson + + Release man-db 2.12.0-pre1 + + * man/po4a/po/*.pot, man/po4a/po/*.po, po/man-db.pot, po/*.po: Update. + * NEWS.md: Bump next version to 2.12.0. + * configure.ac: Update version and date. + +2023-08-06 Colin Watson + + Always pass a line length to nroff + + Fixes https://bugs.debian.org/1041704. + + * src/man.c (get_roff_line_length): Remove `line_length != 80` + condition. + * NEWS.md: Document this. + +2023-08-01 Colin Watson + + Merge branch 'branden-lexgrog-thinko' into 'main' + + lexgrog.1: Fix thinko in my recent contribution + + See merge request man-db/man-db!9 + +2023-07-28 G. Branden Robinson + + lexgrog.1: Fix thinko in my recent contribution + + In commit bbf7701c4f, 19 July, I got the sense of the tests that + governed the macro definitions backwards. I fooled myself because I use + a more complex test in groff's an-ext.tmac file (written in a + non-intuitive way due to AT&T troff limitations) so that it's easy to + run groff's automated tests on them. + +2023-07-22 Colin Watson + + Ensure that time_t can go past 2038 + + * bootstrap.conf (gnulib_modules): Add `year2038-recommended`. + * NEWS.md: Document this. + +2023-07-22 Colin Watson + + man: Pass --regex/--wildcard on to whatis/apropos + + Fixes https://gitlab.com/man-db/man-db/-/issues/13. + + * src/man.c (do_extern): Pass `-r` or `-w` options to the external + program if necessary. + * man/man1/man.man1 (Main modes of operation): Document that `-f` and + `-k` are still only approximately equivalent to `whatis` and `apropos` + respectively (since `man` accepts slightly different options). + * NEWS.md: Document this. + +2023-07-22 Colin Watson + + Update pre-commit hooks + + * .pre-commit-config.yaml (shellcheck-py): Update to v0.9.0.5. + +2023-07-22 Colin Watson + + Upgrade to Gnulib stable-202307 + + * bootstrap: Sync to Gnulib b7f7ed06961454cdf77b93c6c00c3e3f26202663. + * bootstrap.conf (GNULIB_REVISION): Set to + b7f7ed06961454cdf77b93c6c00c3e3f26202663. + * src/tests/Makefile.am (fspause_LDADD): Link with `$(NANOSLEEP_LIB)` + instead of `$(LIB_NANOSLEEP)`. + * NEWS.md: Document this. + +2023-07-21 Colin Watson + + Include .lf corrections in debugging output + + The pipeline command names in `PIPELINE_DEBUG` output are deliberately + abbreviated in the cases where the command is inserting data into the + `*roff` input stream, in an attempt to convey the essential parts + without overwhelming the reader. However, it probably does make sense + to include `.lf` corrections there, since if you're relying on the + debugging output to construct a manual shell pipeline when debugging an + issue with a page, you'll want the `.lf` corrections so that line + numbers still come out correctly. + + * src/man.c (add_roff_line_length, display): Include `echo .lf 1` in + command names where appropriate. + +2023-07-20 Colin Watson + + Take advantage of groff's AD string and HY register + + Fixes https://gitlab.com/man-db/man-db/-/issues/23. Thanks to G. + Branden Robinson for assistance. + + * src/man.c (make_roff_command) [TROFF_IS_GROFF]: Implement + `--no-hyphenation` using `-rHY=0`. This requires groff >= 1.19, + released in 2003. + (disable_hyphenation): Only define if `TROFF_IS_GROFF` is not defined. + (display): Only use the more complex hyphenation-control mechanism if + `TROFF_IS_GROFF` is not defined. + + * src/man.c (disable_justification): Implement using `.ds AD l` if groff + is at least version 1.23.0. + (display): Adjust debugging output to reflect this (more or less). + + * NEWS.md: Document this. + +2023-07-20 Colin Watson + + Document false negatives from "man -K" + + Fixes https://gitlab.com/man-db/man-db/-/issues/14. + + * man/man1/man.man1 (Main modes of operation): Document false negatives + due to things like `\-`. + * NEWS.md: Document this. + +2023-07-20 Colin Watson + + man(1): Add a STANDARDS section + + Fixes https://gitlab.com/man-db/man-db/-/issues/20. + + * man/man1/man.man1 (STANDARDS): New section. + * NEWS.md: Document this. + +2023-07-19 Colin Watson + + Change "CONFORMING TO" to "STANDARDS" + + This is in line with `man-pages(7)`. + + See https://gitlab.com/man-db/man-db/-/issues/20. + + * man/man1/man.man1 (DESCRIPTION): Recommend `STANDARDS` rather than + `CONFORMING TO`. + * NEWS.md: Document this. + +2023-07-19 Colin Watson + + Fix test failures when a working iconv is not available + + Part of https://gitlab.com/man-db/man-db/-/issues/25. + + * configure.ac: Substitute `HAVE_ICONV`. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Export `HAVE_ICONV`. + * src/tests/testlib.sh (report_skip): New function to skip an individual + test out of several in a file. + (skip): Refactor slightly to call `report_skip`. + * src/tests/man-recode-in-place, src/tests/man-recode-suffix, + src/tests/manconv-coding-tags, src/tests/manconv-guess-from-encoding, + src/tests/manconv-incomplete-char-at-eof, + src/tests/manconv-odd-combinations: Skip several tests if `HAVE_ICONV` + is not `yes`. + * NEWS.md: Document this. + +2023-07-19 Colin Watson + + NEWS.md: Document some recent commits + +2023-07-19 Colin Watson + + Update warning regex for groff 1.23.0 + + Part of https://gitlab.com/man-db/man-db/-/issues/25. + + * man/check-man: groff 1.23.0 says "cannot break line" rather than + "can't break line"; update regular expression. + +2023-07-19 Colin Watson + + Avoid translation fallout from lexgrog(1) fix + + * man/man1/lexgrog.man1: Protect `.ds mC CW` with `.if !'po4a'hide'`, to + avoid "CW" showing up as a string for translation. + +2023-07-19 G. Branden Robinson + + Improve lexgrog(1) portability + + This fixes a test failure in man1/lexgrog.1 when building against groff + 1.23.0. + + Borrow code from groff 1.23.0's "an-ext.tmac" file (licensed as + permissively as a decadent society) to implement `EX` and `EE` extension + macros from Ninth Edition Research Unix (1986) (and groff) to get + monospaced code displays in a more portable way. There is no way to + portably change font families in pure man(7) itself, and the names of + troff typefaces aren't very portable either. There is also no portable + way to test for the _existence_ of a font. FTW. + + ("Portable" here largely means "to AT&T device-independent troff + implementations", for which there has been no official source since the + mid-1990s.[1] Several AT&T Unix System V licensees/descendants have + continued to ship their own vendored versions, but these have enjoyed + little or no development for the past 3 decades.) + + * Define a string `mC` to store the name of a presumed monospaced roman + typeface. Use "CW", which is portable to AT&T device-independent + troff of the early 1980s before it occurred to anyone that Courier + might someday be available in italic and bold styles (and budget + available to purchase them). + * Define `mC` as "CR" if using a typesetting device and the formatter is + groff, or claims groff compatibility by the setting the `.g` register. + This is reasonably portable to modern implementations given + traditional troff font naming practices and the pervasive influence of + Adobe Software and the "base fonts" of its PostScript and PDF + specifications. + * If not typesetting (i.e., if using nroff), define `mC` as "R", which + is certain to be available. + * Define `EX` and `EE` macros as groff does, if the formatter does not + set the `.g` register. + * Migrate from `ft CW` and `nf` requests to `EX` macro calls. + * Migrate from `ft P` and `fi` requests to `EE` macro calls. + * Replace an inline use of `\f(CW` with a change to inline bold. There + is to date no portable way to inline a font family change. + + Test passes now. Tested as-is and with the `EX` and `EE` macro + definitions forcibly enabled. + + [1] https://groups.google.com/g/comp.text/c/COkqrii4W0E/m/7HarA8Ha2dAJ + +2023-07-08 Colin Watson + + Correct typography of "~/.manpath" + + `~` should be written as `\(ti` in manual pages to avoid being rendered + as something along the lines of U+02DC SMALL TILDE in PDF output, or as + of groff 1.23.0 in UTF-8 output. + + * man/man1/apropos.man1, man/man1/man.man1, man/man1/manpath.man1, + man/man1/whatis.man1, man/man8/catman.man8, man/man8/mandb.man8, + man/it/man1/apropos.man1, man/it/man1/man.man1: Write `\(ti` when shell + tilde expansion is intended. + +2023-07-03 Colin Watson + + systemd: Sort hardening options + + * init/systemd/man-db.service.in: Sort hardening options. + +2023-05-21 МироÑлав Ðиколић + + Update Serbian manual page translation + + * man/po4a/po/sr.po: Update from Translation Project. + +2023-04-14 Temuri Doghonadze + + Add Georgian translation + + * po/ka.po: New from Translation Project. + * po/LINGUAS: Add ka. + * man/THANKS: Add translator credit. + +2023-04-09 Colin Watson + + mandb: Warn if not running as cache owner + + Fixes https://gitlab.com/man-db/man-db/-/issues/17. + + * src/mandb.c (main): If effective user ID doesn't match the configured + cache owner (if any), and the `--quiet` option wasn't used, then issue a + warning. + * NEWS.md: Document this. + +2023-04-09 Colin Watson + + Deduplicate search results from "man -K" + + Reported by Alejandro Colomar. + + * src/man.c (do_global_apropos_section): Skip entries whose ultimate + source path have already been seen. + (do_global_apropos): Create/free set used to track seen entries. + * NEWS.md: Document this. + +2023-03-29 Colin Watson + + README.md: Explain where INSTALL.autoconf comes from + + Fixes https://gitlab.com/man-db/man-db/-/issues/16. + + * README.md: Explain that you may need to run `./bootstrap` to create + `docs/INSTALL.autoconf`. + +2023-03-10 Colin Watson + + sandbox: Work around Firebuild + + Fixes https://gitlab.com/man-db/man-db/-/issues/15. + + * lib/sandbox.c (make_seccomp_filter): Allow some socket-related system + calls if libfirebuild.so is preloaded. + * NEWS.md: Document this. + +2023-03-02 Colin Watson + + Upgrade to Gnulib stable-202301 as of 20230209 + + * bootstrap.conf (GNULIB_REVISION): Set to + c5dc86ca5c2e5c16177508bc32afe755b7995685. + +2023-02-23 Colin Watson + + Fix several spelling errors + + Found by codespell, although I haven't added it to our pre-commit hooks + since it gets confused by rather too many bits of syntax here. + + * docs/manpages.example, lib/cleanup.c, lib/decompression.c, + lib/filenames.c (filename_info), src/ult_src.c (test_for_include): Fix + spelling errors. + +2023-01-14 Colin Watson + + Copy files during bootstrapping + + * .gitlab-ci.yml (bootstrap): Run `./bootstrap` with `--copy`. + +2023-01-14 Colin Watson + + Fix bootstrap_epilogue to handle running without --copy + + * bootstrap.conf (bootstrap_epilogue): Avoid leaving + `docs/INSTALL.autoconf` as a dangling symbolic link if the `--copy` + option is not used. + +2023-01-14 Colin Watson + + Ensure that .gitignore and po/LINGUAS remain sorted + + * .pre-commit-config.yaml (pre-commit-hooks): Add `file-contents-sorter` + for `.gitignore` and `po/LINGUAS`. + * .gitignore: Sort. + +2023-01-14 Colin Watson + + Update pre-commit hooks + + * .pre-commit-config.yaml (pre-commit-hooks): Update to v4.4.0. + (shellcheck-py): Update to v0.9.0.2. + +2023-01-14 Colin Watson + + Upgrade to Gnulib stable-202301 + + * bootstrap: Sync to Gnulib 32a72f45374c9a36afa574d1a08bb98090270012. + * bootstrap.conf (GNULIB_REVISION): Set to + 32a72f45374c9a36afa574d1a08bb98090270012. + * NEWS.md: Document this. + +2023-01-14 Colin Watson + + Update syscall lists from systemd fc2a0bc05e + + * lib/sandbox.c (make_seccomp_filter): Add `cacheflush`, + `clock_getres_time64`, `clock_nanosleep_time64`, `close_range`, + `clone3`, `epoll_pwait2`, `faccessat2`, `futex_time64`, `pidfd_open`, + `pidfd_send_signal`, `ppoll_time64`, `pselect6_time64`, + `riscv_flush_icache`, `rt_sigtimedwait_time64`, and `utimensat_time64`. + Reorganize positions of some other syscalls according to their positions + in systemd's sets. + * NEWS.md: Document this. + +2023-01-08 Colin Watson + + Release man-db 2.11.2 + +2023-01-01 Colin Watson + + mandb: Check for stray cats even if the manpath is unchanged + + * src/mandb.c (mandb): Require the database file to be open before + calling `straycats`, but don't require `create_db` or + `update_db_wrapper` to have made any changes to it. + * src/tests/mandb-whatis-broken-link-changes: Update expected output. + * NEWS.md: Document this. + +2023-01-01 Colin Watson + + mandb: Fix crash when processing stray cats + + Regression introduced in man-db 2.11.0. Fixes Debian bug #1027487. + + * src/straycats.c (check_for_stray): Pass a basic trace list to + `store_descriptions`, since that's required as of commit + d3e4b5522ae8152f10db0bb98e6873c9cc17ed59. + * NEWS.md: Document this. + +2022-12-31 Colin Watson + + Pacify gcc -Wanalyzer-use-of-uninitialized-value + + It incorrectly thought that `outleft` could be uninitialized in some + cases. Restructure code slightly to simplify its analysis. + + * src/manconv.c (try_iconv): Initialize `outptr` in all branches of the + conditional beginning with `if (handle_iconv_errors)`. + +2022-12-31 Colin Watson + + Fix segfault when nroff is not installed + + * src/man.c (try_section): Only free the `names` list if it is non-NULL + due to `NROFF_MISSING` being defined, and return early if options are + set such that cat files cannot be used either. + * NEWS.md: Document this. + +2022-12-31 Colin Watson + + Fix compile and test failures when troff is not groff + + Fixes https://gitlab.com/man-db/man-db/-/issues/12. + + * src/man.c (ONLY_TROFF_IS_GROFF): Only define if `HAS_TROFF` is + defined. + (init_html_pager): Only define if `TROFF_IS_GROFF` is defined. + (format_display): Mark `man_file` as unused if `TROFF_IS_GROFF` is not + defined. + + * configure.ac: Substitute `troff_is_groff`. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Export `troff_is_groff`. + * src/tests/man-language-specific-requests: Adjust expected + language-specific requests if `troff_is_groff` is not `yes`. + + * NEWS.md: Document this. + +2022-11-29 Seong-ho Cho + + Update Korean manual page translation + + * man/po4a/po/ko.po: Update from Translation Project. + +2022-11-28 Yuri Kozlov + + Update Russian manual page translation + + * man/po4a/po/ru.po: Update from Translation Project. + +2022-11-15 Colin Watson + + Release man-db 2.11.1 + +2022-11-15 Colin Watson + + Tweak README for better readability + + * README.md: Add blank line for improved Markdown rendering. + +2022-11-14 Colin Watson + + web: Fix man.png width/height + + * web/index.html: Update width and height for man.png. + +2022-11-14 Colin Watson + + web: Update man(1) image + + * web/man.png: Replace with a fresh screenshot. + +2022-11-14 Colin Watson + + Link to project home page + + * README.md: Add home page link (https://man-db.gitlab.io/man-db/). + +2022-11-14 Colin Watson + + Add GitLab Pages site + + * .gitlab-ci.yml (stages): Add deploy. + (pages): New job. + * web/development.html, web/index.html, web/man.png, web/standard.css, + web/white.css: New files. + +2022-11-14 Colin Watson + + Transfer Git repository to new group + + * README.md, docs/HACKING.md, man/man1/apropos.man1, + man/man1/lexgrog.man1, man/man1/man-recode.man1, man/man1/man.man1, + man/man1/manconv.man1, man/man1/manpath.man1, man/man1/whatis.man1, + man/man1/zsoelim.man1, man/man5/manpath.man5, man/man8/accessdb.man8, + man/man8/catman.man8, man/man8/mandb.man8: Change GitLab URL to + https://gitlab.com/man-db/man-db. + * NEWS.md: Document this. + +2022-11-12 Colin Watson + + Remove unused include + + * src/manconv_client.c: Remove unused `#include "idpriv.h"`. + +2022-11-05 Colin Watson + + Fix distribution of Korean manual page translation + + Accidentally omitted from 8f12d39bbb6748a1257358269028ef919f9c92e6. + + * man/Makefile.am (DIST_SUBDIRS): Add ko. + +2022-11-05 Colin Watson + + Replace $ in page names rather than trying to escape it + + Jakub Wilk points out in Debian bug #1021951 that attempting to use the + `--use-backslash` option has a number of complications. Just replace + dollar signs with question marks instead. + + * include/manconfig.h (LESS_OPTS): Revert addition of `--use-backslash`. + * src/man.c: Replace `$` characters with `?` rather than trying to + escape them. + * NEWS.md: Document this. + +2022-11-05 Colin Watson + + Add Korean manual page translation + + * man/po4a/po/ko.po: New from Translation Project (thanks, Seong-ho + Cho). + * configure.ac (AC_CONFIG_FILES): Add man/ko/Makefile. + * man/LINGUAS.po4a: Add ko. + * man/Makefile.am (DIST_SUBDIRS): Add ko. + * man/ko/Makefile.am, man/ko/translator.add: New files. + * man/po4a/Makefile.am (POFILES): Add po/ko.po. + * man/po4a/po4a.cfg (po4a_langs): Add ko. + * man/THANKS: Update translator credit. + * .gitignore: Add man/ko/man1, man/ko/man5, and man/ko/man8. + +2022-10-28 Seong-ho Cho + + Add Korean translation + + * po/ko.po: New from Translation Project. + * po/LINGUAS: Add ko. + * man/THANKS: Add translator credit. + +2022-10-28 Sebastian Rasmussen + + Update Swedish manual page translation + + * man/po4a/po/sv.po: Update from Translation Project. + +2022-10-18 Colin Watson + + zsoelim_open_file: Fix use of uninitialized value + + In the case where `filename` has no directory part and does not contain + a dot, we could reach the decision of whether to emit a "can't open %s" + error message without initializing `decomp`. Noticed by `gcc -Og`. + + * src/zsoelim.l (zsoelim_open_file): Initialize `decomp` to NULL. + +2022-10-18 Colin Watson + + Recognize more Hungarian translations of the NAME section + + * src/lexgrog.l (hu_name): Handle the case where "É" or "é" is written + as "\('E" or "\('e". + * NEWS.md: Document this. + +2022-10-18 Colin Watson + + Sort whatis references below real pages more aggressively + + I think this makes more sense in most cases, and it definitely fixes + some observed odd behaviour. + + Fixes Debian bug #780235. + + * src/man.c (compare_candidates): Compare IDs before comparing sections. + * NEWS.md: Document this. + +2022-10-17 Colin Watson + + Silence error for empty mandir with missing catdir + + Fixes https://gitlab.com/cjwatson/man-db/-/issues/8. + + * src/check_mandirs.c (ensure_db_open): Don't call `gripe_rwopen_failed` + before returning false (since it only makes sense for one of the two + callers). + (testmandirs): Call `gripe_rwopen_failed` if `ensure_db_open` returns + false. + +2022-10-17 Colin Watson + + Add 3type to default section list + + This is used by the Linux man-pages package, and should be lower + priority than section 2. Suggested by Alejandro Colomar. + + Fixes https://gitlab.com/cjwatson/man-db/-/issues/5. + + * include/manconfig.h (STD_SECTIONS): Add `3type` between sections `2` + and `5`. + * m4/man-arg-sections.m4 (MAN_ARG_SECTIONS): Likewise. + * man/man5/manpath.man5 (FORMAT): Update documentation of SECTION. + * src/tests/man-exact-section-matches: Update default section order. + * src/man_db.conf.in (SECTION): Update documentation. + * NEWS.md: Document this. + +2022-10-17 Colin Watson + + Escape $ in page names when constructing less prompts + + Fixes Debian bug #1021951. + + * include/manconfig.h (LESS_OPTS): Add `--use-backslash`. + * src/man.c (escape_less): Also escape `$` characters. + * NEWS.md: Document this. + +2022-10-15 Colin Watson + + Release man-db 2.11.0 + +2022-10-13 Colin Watson + + ult_src: Fix possible NULL dereference + + `gcc -fanalyzer` noticed that `canonicalize_file_name` can return NULL, + therefore `find_include` could return NULL, and therefore it was + possible for `ult_src` to attempt to dereference NULL in the `stat + (base, &st)` call. Push more work down to `find_include` so that we can + consistently treat it as an error if it returns NULL. + + * src/ult_src.c (ult_softlink): Move error messages to ... + (gripe_canonicalize_failed): ... here (new function). + (find_include): Replace simple suffix globbing with `comp_file`, and use + this approach in both the relative-to-mantree and + relative-to-dirname-of-page cases; we previously only tried it in the + latter case. Call `gripe_canonicalize_failed` if the final + canonicalization step fails; print a "can't resolve %s" error if we + can't even find anything to canonicalize. + (ult_src): Remove `comp_file` processing, now done by `find_include`. + * src/ult_src.h (gripe_canonicalize_failed): Add prototype. + * src/straycats.c (check_for_stray): Use `gripe_canonicalize_failed`. + +2022-10-11 Colin Watson + + Fix regression in preprocessor string handling + + We need to stop looking for characters that identify preprocessors after + the first space or dash, as otherwise encoding declarations of the kind + specified in man-recode(1) may break. + + * src/man.c (make_roff_command): Only consider the part of the + preprocessor string up to the first space or dash, if any. + +2022-10-11 Colin Watson + + match_in_directory: Split into multiple functions + + `match_in_directory` had two almost entirely disjoint code paths, one + for regex patterns and one for wildcard patterns; but its structure made + it difficult for `gcc -fanalyzer` to understand that, and it was a bit + unclear for humans too. Split it up for clarity. + + * src/globbing.c (match_in_directory): Split out the + regex/wildcard-handling parts to ... + (match_regex_in_directory, match_wildcard_in_directory): ... here, + respectively. + +2022-10-11 Colin Watson + + Assert that another xasprintf call returns non-NULL + + As with commit a22f140354c80a7c5c52c4a413f1c929e105a24c, `gcc + -fanalyzer` notices that `xasprintf` can return NULL in some situations. + I believe those situations would all amount to programming errors here, + so add an assert. + + * src/mandb.c (main): Assert that `xasprintf` returns non-NULL. + +2022-10-09 Colin Watson + + Fix error message + + * src/straycats.c (check_for_stray): If canonicalizing `catdir` returns + NULL, then substitute `catdir` into the "warning: %s is a dangling + symlink" message, not `fullpath` (which at this point must be NULL). + +2022-10-08 Colin Watson + + Convert many more ints to bools + + I don't expect this to make a significant runtime difference, but it + makes some things easier to analyse visually. + + * lib/cleanup.c (do_cleanups_sigsafe): Change `in_sighandler` parameter + type to bool. Update all callers. + (push_cleanup): Change `handler_installed` local variable type to bool. + * lib/cleanup.h (do_cleanups_sigsafe): Update prototype. + * lib/compression.c (comp_info): Change `want_stem` parameter type to + bool. Update all callers. + * lib/compression.h (comp_info): Update prototype. + * lib/sandbox.c (seccomp_filter_unavailable): Change type to bool. + Update all references. + (make_seccomp_filter): Change `permissive` parameter type to bool. + Update all callers. + (_sandbox_load): Likewise. + * lib/util.c (remove_directory): Change `recurse` parameter type to + bool. Update all callers. + * lib/util.h (remove_directory): Update prototype. + * libdb/db_gdbm.c (opening): Change type to bool. Update all + references. + * libdb/db_store.c (compare_ids): Change `promote_links` parameter type + to bool. Update all callers. + * libdb/db_storage.h (compare_ids): Update prototype. + * src/catman.c (parse_for_sec): Change `message` local variable type to + bool. + (check_access): Change return type to bool. + (purge_whatis): Change `cat` parameter type to bool. Update all + callers. + (check_multi_key): Change return type to bool. + * src/descriptions.c (parse_descriptions): Change `seen_base` local + variable type to bool. + * src/globbing.c (look_for_file): Change `cat` parameter type to bool. + Update all callers. + * src/globbing.h (look_for_file): Update prototype. + * src/lexgrog.l (fill_mode, waiting_for_quote): Change types to bool. + Update all references. + * src/man.c (skip, created_tmp_cat): Change types to bool. Update all + references. + (run_mandb): Change `create` parameter type to bool. Update all + callers. + (squeeze_blank_lines): Change `in_blank_line` and `got_blank_line` local + variable types to bool. + (display): Change `format` and `printed` local variable types to bool. + (convert_name): Change `fsstnd` parameter type to bool. Update all + callers. + (add_candidate): Change `dupcand` local variable type to bool. + (main): Change `maybe_section` local variable type to bool. + * src/manp.c (add_sections): Change `user` parameter type to bool. + Update all callers. + (add_def): Likewise. + (add_mandb_map): Likewise. + (add_to_dirlist): Likewise. + (read_config_file): Change `done` local variable type to bool. + (get_manpath_from_path): Change `mandatory` parameter type to bool. + Update all callers. + * src/manp.h (get_manpath_from_path): Update prototype. + * src/whatis.c (do_apropos): Change `matched` local variable type to + bool. + * src/zsoelim.l (no_newline): Change type to bool. Update all + references. + (zsoelim_open_file): Change return type to true. + * src/zsoelim.h (zsoelim_open_file): Update prototype. + +2022-10-07 Colin Watson + + Remove unused variable + + * src/man.c (found_a_stray): Remove; it was set but no longer used. + (display_database): Remove setting of `found_a_stray`. + +2022-10-07 Colin Watson + + Add some more pure function attributes + + * lib/encodings.c (compatible_encodings): Mark as pure. + * src/man.c (is_section): Likewise. + * src/manp.c (get_config, get_def, get_def_user, is_global_mandir): + Likewise. + +2022-10-07 Colin Watson + + Default to --disable-cache-owner on systems without getuid + + * m4/man-arg-cache-owner.m4 (MAN_ARG_CACHE_OWNER): If the system doesn't + have `getuid`, force cache files to have unconstrained cache ownership, + and issue a warning if `--enable-cache-owner` was given. + +2022-10-07 Colin Watson + + Fix installation on systems with non-empty EXEEXT + + * src/Makefile.am (install-exec-hook): Add `$(EXEEXT)` to + `chown`/`chmod` calls. + * NEWS.md: Document MinGW portability work. + +2022-10-07 Colin Watson + + Fix build on systems without SIGPIPE + + * bootstrap.conf (gnulib_modules): Add sigpipe. + * src/mandb.c (main): Drop `#ifdef SIGPIPE` guards, as Gnulib now + ensures that it's defined. + +2022-10-07 Colin Watson + + Fix build on systems without getuid + + * lib/tempfile.c (running_setid): New function; always returns false if + the system doesn't have `getuid`, since in that case we won't have been + able to drop privileges either. + +2022-10-07 Colin Watson + + Fix build on systems without + + * lib/security.h: Only include `` if `MAN_OWNER` is defined. + +2022-10-07 Colin Watson + + Fix build on systems without + + * bootstrap.conf (gnulib_modules): Add termios. + * src/man.c (get_term): Replace with a no-op stub if the system has no + `` (Gnulib tests for it and can replace some functions, but + its replacement isn't sufficient here). + +2022-10-07 Colin Watson + + Fix build on systems without SIGHUP + + * lib/cleanup.c (trap_abnormal_exits, untrap_abnormal_exits): Guard uses + of `SIGHUP` with an `#ifdef`. + +2022-10-06 Colin Watson + + Run preprocessors in the correct order + + We have no particular reason to trust the order of filters in a + preprocessor string specified in a page; it's easy for authors to get + this wrong by accident. Do as groff(1) does and run them in a + canonicalized order. + + Fixes Debian bug #1012078. + + * src/man.c (add_filter): New function, split out from + `make_roff_command`. + (make_roff_command): Iterate through possible preprocessors and add each + one depending on whether it's present in the preprocessor string, rather + than iterating through the preprocessor string and acting on each of its + characters. Turn several `int` variables into `bool` variables in + passing. + * NEWS.md: Document this. + +2022-10-06 Emir SARI + + Update Turkish translation + + * po/tr.po: Update from Translation Project. + +2022-10-06 Emir SARI + + Update Turkish manual page translation + + * man/po4a/po/tr.po: Update from Translation Project. + +2022-10-06 Boyuan Yang <073plan@gmail.com> + + Update Simplified Chinese manual page translation + + * man/po4a/po/zh_CN.po: Update from Translation Project. + +2022-10-06 Remus-Gabriel Chelu + + Update Romanian manual page translation + + * man/po4a/po/ro.po: Update from Translation Project. + +2022-10-06 Remus-Gabriel Chelu + + Update Romanian translation + + * po/ro.po: Update from Translation Project. + +2022-10-03 Mario Blättermann + + Update German manual page translation + + * man/po4a/po/de.po: Update from Translation Project. + +2022-10-02 Colin Watson + + Release man-db 2.11.0-pre1 + +2022-10-02 Colin Watson + + Bump next version to 2.11.0 + + There are quite a few substantial changes here that I think justify an + updated minor number. + + * NEWS.md: Bump to 2.11.0. + +2022-10-02 Colin Watson + + Update translation files + + * po/man-db.pot, po/*.po: Update. + +2022-10-02 Colin Watson + + Fix harmless but incorrect cast + + * libdb/db_xdbm.c (man_xdbm_firstkey): Cast `gl_list_free` to + `gl_mapvalue_dispose_fn`, not `gl_listelement_dispose_fn`. (These were + in practice identical but are semantically distinct.) + +2022-10-02 Colin Watson + + Reformat option declarations using macros + + The previous tabular presentation had some advantages, but it only + looked reasonable in wide terminals, was often quite cumbersome to + maintain, and played poorly with `clang-format`. + + * include/manconfig.h (OPT, OPT_FULL, OPT_ALIAS, OPT_HIDDEN, + OPT_GROUP_HEADER, OPT_HELP_COMPAT): New macros. + * src/accessdb.c (options): Rewrite using `OPT*` macros. + * src/catman.c (options): Likewise. + * src/globbing_test.c (options): Likewise. + * src/lexgrog_test.c (options): Likewise. + * src/man-recode.c (options): Likewise. + * src/man.c (options): Likewise. + * src/manconv_main.c (options): Likewise. + * src/mandb.c (options): Likewise. + * src/manpath.c (options): Likewise. + * src/whatis.c (options): Likewise. + * src/zsoelim_main.c (options): Likewise. + +2022-10-02 Colin Watson + + Add CI checks for Berkeley DB and NDBM + + * .gitlab-ci.yml (build-berkeley-db, build-ndbm): New jobs. + +2022-10-02 Colin Watson + + mandb: Fully reorganize databases + + This allows us to produce bitwise-identical databases regardless of the + order in which pages were scanned (at least with GDBM). + `gdbm_reorganize` isn't enough for this, probably because entries end up + in different positions in hash buckets depending on insertion order; but + reading in the entire database and writing it back out in sorted order + seems to do the job with negligible cost. + + Fixes Debian bug #1010957. + + * src/mandb.c (reorganize): New function: read all the items from a + database in sorted order and write them back out. + (mandb): Stop calling `MYDBM_REORG`, which saved space after deletions + but didn't help with reproducibility. + (process_manpath): Call `reorganize` if any changes were made to a + database. + * libdb/mydbm.h (MYDBM_REORG): Remove macro. + * NEWS.md: Document this. + +2022-10-02 Colin Watson + + mandb: Rearrange database path operations + + Moving these into "methods" of `struct dbpaths` makes the control flow + clearer by avoiding lots of inlined `#ifdef`s. + + I fixed a possible crash in `mandb -f` in the process, exposed by the + clearer control flow. + + * src/mandb.c (dbpaths_init, dbpaths_copy_to_tmp, dbpaths_remove_tmp): + New functions. + (finish_up): Rename to ... + (dbpaths_rename_from_tmp): ... this. + (do_chown): Rename to ... + (dbpaths_chown_if_possible): ... this. + (cleanup_sigsafe): Rename to ... + (dbpaths_unlink_tmp): ... this, and take a `struct dbpaths *` argument + rather than `void *`. + (cleanup): Rename to ... + (dbpaths_free_elements): ... this, and take a `struct dbpaths *` + argument rather than `void *`. + (mandb, process_manpath): Use new `dbpaths_*` functions. Only call + `dbpaths_rename_from_tmp` if `run_mandb` is set (in practice this was + always true anyway but this makes it clearer). Only call + `dbpaths_chown_if_possible` if `run_mandb` is set and + `dbpaths_rename_from_tmp` was called (this may have caused a crash in + some edge cases involving `mandb -f`). + +2022-10-01 Colin Watson + + test_manfile: Remove "already exists" check + + This produced inconsistent results in some unusual cases. For example, + if `/usr/share/man/man5/inetd.conf.5.gz` was a symlink to + `/usr/share/man/man8/inetd.8.gz` and had `NAME` entries for both `inetd` + and `inetd.conf`, then if `inetd.8.gz` was scanned first we would + include a `WHATIS_MAN` entry in section 8 for `inetd.conf`, while if + `inetd.conf.5.gz` was scanned first we'd skip that due to hitting the + already-exists check when scanning `inetd.8.gz`. + + This was originally a performance optimization. Now that we cache the + results of `ult_src` and `find_name`, this optimization no longer helps + us much, so it can go. + + * src/check_mandirs.c (test_manfile): Don't return early if the page + already exists with matching details. + * NEWS.md: Document this. + +2022-10-01 Colin Watson + + Further improve name selection for whatis targets + + In commit 9aff3c30b0, I used the rule "first name in the trace out of + those that have the best ID". However, a better rule turns out to be to + pick the last entry in the trace that has the same section and extension + as the starting page. This is already guaranteed to have at least as + good an ID as the starting page, and since whatis pointers don't include + the target section and extension we need to ensure that they don't cross + sections/extensions; otherwise we just end up with database entries that + man(1) refuses to use, which isn't particularly useful. + + * src/descriptions_store.c (store_descriptions): Parse and cache all the + filenames in the trace at the start. Use the last entry in the trace + with the same section/extension as the starting page as the pointer for + `WHATIS_*` entries. + +2022-10-01 Colin Watson + + test_manfile: Stop caching ult_src traces + + Now that `test_manfile` always calls `ult_src` before adding database + entries, there's no need for it to cache the resulting traces, and doing + so had some confusing consequences since `store_descriptions` could end + up seeing cached traces that didn't include the initial path. + + * src/check_mandirs.c (struct whatis): Remove `trace` element. + (whatis_free): Stop freeing `whatis->trace`. + (test_manfile): Stop caching `ult->trace`; pass it directly to + `store_descriptions` instead. + +2022-10-01 Colin Watson + + Restructure ult_src to add caching + + * src/ult_src.c (struct ult_key): New structure. + (ult_key_new, ult_key_equals, ult_key_hash, ult_key_free, ult_value_new, + ult_value_free): New functions. + (ult_cache): New map. + (ult_src): Instead of returning a path as a string and taking `trace` as + an output parameter, return a `struct ult_value *` containing both path + and trace. Cache the return value in a hash map (indexed by a composite + key consisting of `name` and `flags`), and return cached values where + possible rather than repeating the same work. Update all callers to + reflect the new signature. + * src/ult_src.h (struct ult_value): New structure. + (ult_src): Update prototype. + + * src/check_mandirs.c (test_manfile): Simplify `ult_src` calling + arrangements now that repeated calls with the same `name` and `flags` + arguments are cheap. At the moment this may end up doing a little more + work in some rare cases (links to already-scanned pages with `.so` + links), but that doesn't seem to be very significant at the moment, and + caching could be improved inside `ult_src` if it proves to be a problem. + * src/descriptions_store.c (store_descriptions): `trace` is now always + set. Add an assertion of this and drop a couple of conditionals. + +2022-09-25 Colin Watson + + ult_src: Remove recursion + + The use of recursion for `.so` handling in `ult_src` is somewhat + inconvenient, and it's relatively easy to convert it to an iterative + implementation. + + There should be no functional change from this commit, except to some + details of debug messages. + + * src/ult_src.c (find_include_directive): New function, extracted from + `ult_src`. + (ult_src): Handle `.so` links using a loop rather than recursion. Check + for compression extensions towards the end of the loop rather than at + the beginning, to avoid nonexistent files showing up in the trace. + +2022-09-25 Colin Watson + + mandb: Improve debugging + + * src/check_mandirs.c (test_manfile): Log the file under consideration + on entry. Log when we return early due to an existing database entry. + Remove some unnecessary parentheses from debug messages. + * src/ult_src.c (ult_src): Remove leading newline from debug message. + +2022-09-25 Colin Watson + + Don't skip adding a database entry due to SO_MAN + + An existing `SO_MAN` entry shouldn't stop us considering a page for + insertion into the database, because until we run `ult_src` we don't yet + know whether that page will be `ULT_MAN` (which should replace the + existing entry) or `SO_MAN` (which shouldn't). + + * src/check_mandirs.c (test_manfile): Don't return early due to an + existing matching `SO_MAN` entry, but only due to an `ULT_MAN` entry. + * NEWS.md: Document this. + +2022-09-24 Colin Watson + + Fix section/extension for whatis entries in database + + * src/descriptions_store.c (store_descriptions): Use the + section/extension of the best name for whatis entries, since we don't + have anything better. + +2022-09-24 Colin Watson + + store_descriptions: Improve debugging + + * src/descriptions_store.c (store_descriptions): Log the extension of + each entry being stored. + +2022-09-24 Colin Watson + + Extend database entry replacement rules + + These rules were previously ambiguous such that the targets of whatis + entries depended on the order in which files were scanned. + + * libdb/db_store.c (enum replace_action): Add. + (replace_if_necessary): Extend rules for greater stability. We now also + take mtimes and pointers into account, as well as including a case for + when the new ID is weaker than the old one (there was already a case for + when it was stronger). + (dbstore): Use `replace_if_necessary` when considering replacing multi + keys. + +2022-09-24 Colin Watson + + Fix section/extension for links in database + + In some cases this resulted in spurious database entries. For example, + if `man5/inetd.conf.5` was a symlink to `man8/inetd.8` and that page had + a `NAME` entry for `inetd`, then as well as entries for `inetd` in + section 8 and `inetd.conf` in section 5, we would also store a spurious + entry for `inetd` in section 5. We no longer do that. + + * src/descriptions_store.c (store_descriptions): For names corresponding + to entries in the ultimate source trace and not to the base name of the + file, use the section and extension of the trace entry rather than of + the ultimate source. + +2022-09-24 Colin Watson + + Pick a more consistent name for whatis targets + + We don't want the targets of whatis entries in the database to depend on + the order in which files were scanned. Prefer the first name in the + trace out of those that have the best ID. + + * src/descriptions_store.c (store_descriptions): Defer adding names that + don't appear in the ultimate source trace (i.e. whatis entries) until we + know the best name to use as the target, and use that best name as the + pointer for each of them. + +2022-09-24 Colin Watson + + Fix stored ID for links + + Database entries for links were often incorrectly stored as `ULT_MAN`, + depending on the exact order in which pages were scanned. They are now + stored more consistently as `SO_MAN`. + + * src/descriptions_store.c (store_descriptions): Override the ID from + `ULT_MAN` to `SO_MAN` if the name is not the last entry in the trace. + (Previously we overrode from `SO_MAN` to `ULT_MAN` if the name was the + last entry in the trace, but not the converse.) + * NEWS.md: Document this. + +2022-09-24 Colin Watson + + Simplify struct mandata memory allocation + + The arrangement where most of the fields of `struct mandata` were + constant pointers into the `addr` field was a bit more memory-efficient, + but it made some kinds of analysis and reorganization very difficult, + and we don't actually need to be quite that frugal about memory. + Reorganize this to allocate each field independently instead. + + * lib/filenames.c (filename_info): Allocate each field independently. + Use Gnulib's `base_name` and `dir_name` functions to parse paths. Stop + setting `info->addr`. + (free_mandata_struct): Free the `ext`, `sec`, `pointer`, `comp`, + `filter`, and `whatis` fields. Stop freeing `addr`. + * lib/filenames.h (struct mandata): Remove `addr`. Make `ext`, `sec`, + `pointer`, `comp`, `filter`, and `whatis` non-`const`. + * libdb/db_lookup.c (split_content): Copy the `ext`, `sec`, `pointer`, + `filter`, `comp`, and `whatis` fields. Stop setting `addr`. + * libdb/db_store.c (make_content): Copy the `pointer`, `comp`, `filter`, + and `whatis` fields. + * src/descriptions_store.c (store_descriptions): Copy `pointer` and + `whatis` fields. + * src/straycats.c (check_for_stray): Copy `comp`, `ext`, `sec`, and + `filter` fields. + + * libdb/db_lookup.c (dblookup): Always free `cont`'s data pointer, since + it's no longer sometimes borrowed. + * libdb/db_store.c (dbstore): Free `cont`'s and `oldcont`'s data + pointers, since they're no longer borrowed. + * src/check_mandirs.c (purge_missing): Free `content`'s data pointer, + since it's no longer borrowed. + + * libdb/db_lookup.c (dblookup_pattern): Stop freeing `info->addr`. + * src/catman.c (parse_for_sec): Stop freeing `entry->addr`. + * src/whatis.c (do_apropos): Stop freeing `info->addr`. + +2022-09-24 Colin Watson + + Stop using the addr field of struct mandata + + The `addr` field of `struct mandata` is just intended as an internal + buffer, but some functions were extracting information from it in + complicated ways, which made it difficult to refactor the memory + allocation here. Use different approaches. + + * src/check_mandirs (test_manfile): Calculate `len` using `comp_info`. + This duplicates some of what `filename_info` does, but it's just some + cheap string manipulation, and it expresses what we want in a less + confusing way (the length of the file name with any compression + extension removed). + * src/descriptions_store.c (store_descriptions): Check whether `path` is + a prefix of `trace_name` rather than of `trace_info->addr`. + `trace_info->addr` is always itself a prefix of `trace_name`, so if + `path` is not a prefix of `trace_name` then it can't be a prefix of + `trace_info->addr`. + +2022-09-24 Colin Watson + + is_prefix: Improve parameter naming + + The second parameter doesn't have to be a directory, so stop implying + that in the parameter name. + + * src/descriptions_store.c (is_prefix): Rename `path` to `parent`; rename + `dir` to `child`. + +2022-09-24 Colin Watson + + Simplify split_content interface + + Now that `struct mandata` is always allocated on the heap, we might as + well just have `split_content` return a freshly-allocated `struct + mandata` rather than taking a pointer to one as a parameter. + + * libdb/db_lookup.c (split_content): Allocate and return a `struct + mandata`; remove `pinfo` parameter. Update all callers. + * libdb/db_storage.h (split_content): Update prototype. + +2022-09-24 Colin Watson + + Always allocate struct mandata on the heap + + This means we no longer need two slightly different functions for + freeing it. + + * libdb/db_lookup.c (dblookup_pattern): Allocate `struct mandata` on the + heap. Simplify arrangements for adding to the `infos` list. + (dbstore): Allocate `struct mandata` on the heap. + * src/catman.c (parse_for_sec): Likewise. + * src/check_mandirs.c (purge_pointers, purge_missing): Likewise. + * src/straycats.c (check_for_stray): Likewise. + * src/whatis.c (do_apropos): Likewise. + + * lib/filenames.c (free_mandata_elements): Remove function and move its + contents to ... + (free_mandata_struct): ... here, if `pinfo` is set. + * lib/filenames.h (free_mandata_elements): Remove prototype. + +2022-09-24 Colin Watson + + filename_info: Always allocate info->name + + Only one call site has any interest in this being unset (in order to + pass the result to `dbstore`), and even there it's easier for the caller + to deal with unsetting it. Otherwise, it's strictly more convenient if + the structure returned by `filename_info` always includes the name of + the page. + + * lib/filenames.c (filename_info): Remove `req_name` parameter; update + all callers. Always set `info->name` before returning successfully. + * lib/filenames.h (filename_info): Update prototype. + * src/check_mandirs.c (test_manfile): Use `info->name` for + `manpage_base` rather than poking around in `info->addr`. + (count_glob_matches): Remove `name` parameter; update all callers. + * src/descriptions_store.c (store_descriptions): Drop now-unnecessary + check for `trace_info->name`. + * src/man.c (do_global_apropos_section): Build `title` using + `info->name` rather than poking around in `info->addr`. + * src/mandb.c (update_one_file): Drop now-unnecessary check for + `info->name`. + +2022-09-23 Colin Watson + + Reduce indentation in store_descriptions a bit + + * src/descriptions_store.c (store_descriptions): Use an early-continue + construction to save a level of indentation. + +2022-09-23 Colin Watson + + Simplify the filename_info interface + + This interface is a bit less confusing. + + * libdb/db_lookup.c (free_mandata_elements, free_mandata_struct): Move + to ... + * lib/filenames.c (free_mandata_elements, free_mandata_struct): ... + here. + * libdb/db_storage.h (free_mandata_elements, free_mandata_struct): Move + to ... + * lib/filenames.h (free_mandata_elements, free_mandata_struct): ... + here. + + * lib/filenames.c (filename_info): Return a `struct mandata` with the + `addr` element set to the buffer containing the fields, rather than + returning the buffer and taking a pointer to a `struct mandata` as a + parameter. Update all callers. + * lib/filenames.h (filename_info): Update prototype. + +2022-09-23 Colin Watson + + Move manual page file name utilities to lib/ + + * src/filenames.c: Move to ... + * lib/filenames.c: ... here. + * src/filenames.h: Move to ... + * lib/filenames.h: ... here. Update positioning of all includes. + * lib/Makefile.am (libman_la_SOURCES): Add `filenames.c` and + `filenames.h`. + * src/Makefile.am (man_recode_LDADD): Link with `$(LIBMAN)` instead of + `$(LIBMANDB)`. + (lexgrog_SOURCES, man_SOURCES, mandb_SOURCES): Remove `filenames.c` and + `filenames.h`. + * po/POTFILES.in: Rename `src/filenames.c` to `lib/filenames.c`. + + * lib/filenames.c (gripe_bogus_manpage): Remove `quiet < 2` condition. + (filename_info): Add `warn_if_bogus` parameter; only call + `gripe_bogus_manpage` if it is set. Update all callers. + * lib/filename.h (filename_info): Update prototype. + + * libdb/db_storage.h (struct mandata): Move to ... + * lib/filenames.h (struct mandata): ... here. Add includes where + necessary. + +2022-09-23 Colin Watson + + Fix distcheck + + * po/POTFILES.in: Rename `src/compression.c` to `lib/compression.c`. + +2022-09-23 Colin Watson + + Move compression file name utilities to lib/ + + This makes more sense as a home for plain file name manipulation + utilities. I also merged `include/comp_src.h.in` into + `lib/compression.c`, because structure definitions (as opposed to + declarations) don't belong in header files. + + * src/compression.c: Move to ... + * lib/compression.c: ... here. Remove unnecessary `pipeline.h` include. + * src/compression.h: Move to ... + * lib/compression.h: ... here. Update positioning of all includes. + * lib/Makefile.am (libman_la_SOURCES): Add `compression.c` and + `compression.h`. + * lib/README: Add `compression.*`. + * src/Makefile.am (lexgrog_SOURCES, man_SOURCES, man_recode_SOURCES, + mandb_SOURCES): Remove `compression.c` and `compression.h`. + + * include/comp_src.h (comp_list): Move to ... + * lib/compression.c (comp_list): ... here. Update all references. + * include/manconfig.h (struct compression, comp_list): Move to ... + * lib/compression.h (struct compression, comp_list): ... here. Add + includes where necessary. + * Makefile.am (noinst_HEADERS): Remove `include/comp_src.h`. + +2022-09-23 Colin Watson + + Remove infoalloc macro + + It doesn't really pull its weight. + + * libdb/db_lookup.c (dblookup, dblookup_pattern): Call `XZALLOC (struct + mandata)` rather than `infoalloc ()`. + * src/man.c (try_section, do_global_apropos_section): Likewise. + * libdb/db_storage.h (infoalloc): Remove. + +2022-09-19 Colin Watson + + Maintain multi key references in sorted order + + This is a step towards being able to reproduce the same database given + the same manual page tree. + + * bootstrap.conf (gnulib_modules): Add stpcpy. + * libdb/db_lookup.c (name_ext_equals): Remove static; add pure + attribute. + (name_ext_compare): New function. + (list_extensions): Add entries in sorted order. + * libdb/db_storage.h (name_ext_equals, name_ext_compare): Add + prototypes. + * libdb/db_store.c (make_extensions_reference): New function. + (dbstore): When building or updating multi key references, maintain them + in sorted order. + * NEWS.md: Document this. + +2022-09-19 Colin Watson + + Remove some excessive debugging output + + This hasn't been of any practical use for many years. + + * lib/security.c (drop_effective_privs, regain_effective_privs): Remove + debug messages emitted when increasing or decreasing the privilege drop + count. + +2022-08-11 Colin Watson + + Fix use of pointer (address only) after free + + I don't believe this was technically undefined behaviour, since we + didn't actually dereference the dangling pointer, merely compared its + value (the pointer address itself) against entries in the cleanup stack. + However, the compiler probably had a hard time proving that, so the + use-after-free warning issued by recent versions of GCC seems fair + enough. + + * src/mandb.c (cleanup): Don't free dbpaths. + (process_manpath): Free it here instead, after calling pop_cleanup. + +2022-08-11 Colin Watson + + Make CATWIDTH override MINCATWIDTH/MAXCATWIDTH + + Otherwise setting `CATWIDTH` to something larger than 80 confusingly + doesn't work unless you also set `MAXCATWIDTH`. + + Fixes https://gitlab.com/cjwatson/man-db/-/issues/9. + + * src/man.c (add_roff_line_length): Skip terminal width range check if + `cat_width` is set. + * man/man5/manpath.man5 (FORMAT): Remove note that `CATWIDTH` should be + within the range set by `MINCATWIDTH` and `MAXCATWIDTH`, and instead say + that it overrides them. + * NEWS.md: Document this. + +2022-07-22 Colin Watson + + Add more case variants of localized versions of NAME + + * src/lexgrog.l (bg_name, lt_name, ru_name, sr_name, srlatin_name, + tr_name, uk_name, vi_name): Add more case variants. + * NEWS.md: Document this. + +2022-07-18 Colin Watson + + Update pre-commit hooks + + * .pre-commit-config.yaml (pre-commit-hooks): Update to v4.3.0. + +2022-07-18 Colin Watson + + Update to Gnulib 20220717 + + Fixes https://gitlab.com/cjwatson/man-db/-/issues/6. + + * bootstrap: Sync to Gnulib df336dc1ae60d8ad9f452f2234951133fe617bb0. + * bootstrap.conf (GNULIB_REVISION): Set to + df336dc1ae60d8ad9f452f2234951133fe617bb0. + * NEWS.md: Document build fix. + +2022-07-15 Colin Watson + + Merge branch 'drop-lsm' into 'main' + + Drop LSM file + + See merge request cjwatson/man-db!4 + +2022-07-13 Pino Toscano + + Drop LSM file + + The LSM format is a very old format for software, and it is dead for + many years already. Since keeping the .lsm up-to-date is basically not + much of use, simply drop it altogether. + + * docs/Makefile.am (dist_noinst_DATA): Remove man-db.lsm. + * docs/HACKING.md: Stop mentioning man-db.lsm. + * docs/man-db.lsm: Remove file. + +2022-07-05 Stéphane Aulery + + Update French manual page translation + + * man/po4a/po/fr.po: Update from Translation Project. + +2022-06-02 Joe Hansen + + Update Danish translation + + * po/da.po: Update from Translation Project. + +2022-05-18 Colin Watson + + Cache filters alongside whatis information + + `mandb` needs to cache filters together with whatis information, as + otherwise pages were incorrectly recorded with no filters if `mandb` + happened to use cached whatis information for them rather than reading + it from scratch. + + * src/check_mandirs.c (struct whatis): Add filters. + (whatis_free): Free whatis->filters. + (test_manfile): Store and use whatis->filters. + * NEWS.md: Document this. + +2022-04-27 Andika Triwidada + + Update Indonesian translation + + * po/id.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2022-04-23 Colin Watson + + Stop GitLab from getting confused about licences + + GitLab uses https://github.com/licensee/licensee to detect the project's + licence, and if that finds multiple matching files then it throws up its + hands and refuses to make a licence assertion, with no apparent way to + override it. + + To avoid this problem, move the secondary licence files (those that + apply only to some files, rather than to the project as a whole) back + into a subdirectory, so that `licensee` doesn't notice them. + + * COPYING.GPLv2: Move to ... + * docs/COPYING.GPLv2: ... here. Update all references. + * COPYING.LIB: Move to ... + * docs/COPYING.LIB: ... here. Update all references. + * Makefile.am (dist_noinst_DATA): Remove COPYING.GPLv2. + * docs/Makefile.am (dist_noinst_DATA): Add COPYING.GPLv2 and + COPYING.LIB. + +2022-04-23 Colin Watson + + Clarify effective GPLv3 licensing + + While man-db's own files are individually licensed under GPLv2 (or in a + few cases LGPLv2.1), the project as a whole is effectively GPLv3 due to + Gnulib. This was already explained in README.md, but make it a bit + clearer by having the top-level COPYING file be a copy of GPLv3. + + * COPYING: Move to ... + * COPYING.GPLv2: ... here. + * COPYING: New file. + * Makefile.am (dist_noinst_DATA): Add COPYING.GPLv2. + * lib/README, man/it/man1/apropos.man1, man/it/man1/man.man1, + man/it/man1/manpath.man1, man/it/man1/whatis.man1, + man/it/man1/zsoelim.man1, man/it/man5/manpath.man5, + man/it/man8/accessdb.man8, man/it/man8/catman.man8, + man/it/man8/mandb.man8, man/man1/apropos.man1, man/man1/lexgrog.man1, + man/man1/man-recode.man1, man/man1/man.man1, man/man1/manconv.man1, + man/man1/manpath.man1, man/man1/whatis.man1, man/man1/zsoelim.man1, + man/man5/manpath.man5, man/man8/accessdb.man8, man/man8/catman.man8, + man/man8/mandb.man8, manual/comp.me, manual/db.me, manual/files.me, + manual/format.me, manual/glossary.me, manual/intro.me, manual/leader.me, + manual/man_db.me, manual/misc.me, manual/sec.me: Refer to COPYING.GPLv2 + rather than COPYING. + +2022-04-23 Colin Watson + + Update pre-commit hooks + + * .pre-commit-config.yaml (pre-commit-hooks): Update to v4.2.0. + +2022-04-17 Emir SARI + + Update Turkish manual page translation + + * man/po4a/po/tr.po: Update from Translation Project. + * man/THANKS: Update translator credit. + +2022-04-16 Colin Watson + + Recognize another Turkish translation of NAME + + Emir SARI reports that "AD" is the de facto standard technical + terminology for "NAME" in Turkish, rather than "İSİM" which sounds + slightly colloquial. Recognize it as well. + + * src/lexgrog.l (tr_name): Add "AD". + +2022-04-12 Emir SARI + + Update Turkish translation + + * po/tr.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2022-03-17 Colin Watson + + Release man-db 2.10.2 + + NEWS.md: Fix typo for 2.7.6 + +2022-03-08 Colin Watson + + pre-commit: Avoid need for multiple shellcheck runs + + * .shellcheckrc: Set `external-sources=true`. + * src/tests/lexgrog-backslash-dash-rhs, src/tests/lexgrog-basic, + src/tests/lexgrog-multiple-whatis, src/tests/man-deleted-directory, + src/tests/man-exact-section-matches, + src/tests/man-executable-page-on-path, src/tests/man-invalid-db-entry, + src/tests/man-language-specific-requests, + src/tests/man-mandatory-manpath, src/tests/man-missing-locales, + src/tests/man-override-dir, src/tests/man-recode-in-place, + src/tests/man-recode-suffix, src/tests/man-so-links-same-section, + src/tests/man-suffixed-extension, + src/tests/man-symlinks-with-matching-names, + src/tests/manconv-coding-tags, src/tests/manconv-guess-from-encoding, + src/tests/manconv-incomplete-char-at-eof, + src/tests/manconv-odd-combinations, src/tests/mandb-basic, + src/tests/mandb-bogus-symlink, src/tests/mandb-cachedir-tag, + src/tests/mandb-empty-page, src/tests/mandb-purge-updates-timestamp, + src/tests/mandb-regular-file-symlink-changes, + src/tests/mandb-symlink-beats-whatis-ref, + src/tests/mandb-symlink-target-timestamp, + src/tests/mandb-whatis-broken-link-changes, + src/tests/whatis-path-to-executable, src/tests/zsoelim-so-includes: Add + `shellcheck source-path=SCRIPTDIR` directive before sourcing testlib.sh. + * .pre-commit-config.yaml: Consolidate the two shellcheck hooks into + one. + +2022-03-08 Colin Watson + + pre-commit: Add shellcheck + + * .pre-commit-config.yaml: Add shellcheck. We need separate hooks for + `src/tests/` and for everything else, since shellcheck needs a `-P` + option to correctly handle sourced files in `src/tests/`. + * .shellcheckrc: New file. + +2022-03-08 Colin Watson + + Refactor use of cd in shell scripts + + shellcheck warns about unchecked uses of `cd` (SC2164). Either check it + or refactor to avoid changing directory. + + * src/tests/man-deleted-directory: Check `cd` call. + * src/tests/man-suffixed-extension: Avoid changing directory. + * tools/mkcatdirs: Likewise. + +2022-03-08 Colin Watson + + mkcatdirs: Skip nonexistent man directories + + * tools/mkcatdirs: `manpath -qg` may return man directories that are + mentioned in the configuration file but that don't exist on the + filesystem. Skip these. + +2022-03-08 Colin Watson + + mkcatdirs: Refactor using install(1) + + I'm not sure this script is widely-used, but it might as well work. It + previously relied on `mkinstalldirs`, which is a build tool not + typically installed on end-user systems. + + * tools/mkcatdirs: Refactor cat directory creation using install(1). + +2022-03-08 Colin Watson + + Apply various minor shell syntax improvements + + * manual/print-options: Explicitly set `LANGUAGE=''` rather than + `LANGUAGE=`, pacifying shellcheck SC1007 which notes that this + construction might otherwise be misread. + * src/tests/manconv-odd-combinations: Use `printf %b` to pacify + shellcheck SC2059. + * src/tests/testlib.sh: Tell shellcheck which shell syntax to assume, + since this file has no `#!` line. + (run): Disable shellcheck SC2154; `abs_top_builddir` is always set by + the test runner. + (report): Remove unnecessary `$` before variable in arithmetic context. + (tools/checkman): Use `$(...)` for command substitution. Quote + variables properly where possible, and ignore shellcheck SC2068 in a + couple of other places. + +2022-03-07 Colin Watson + + tests: Pacify shellcheck SC2188 + + The previous construction resulted in: + + SC2188 (warning): This redirection doesn't have a command. Move to its + command (or use 'true' as no-op). + + * src/tests/man-mandatory-manpath, src/tests/testlib.sh: Avoid + redirections without a command. + +2022-03-07 Colin Watson + + tests: Make pass/fail reporting more shellcheck-friendly + + * src/tests/testlib.sh (report): New function, similar to expect_pass + but taking an exit code rather than a command string to evaluate. + (expect_pass): Remove. + (expect_files_equal): Refactor using report function. + * src/tests/man-deleted-directory, + src/tests/man-executable-page-on-path, src/tests/man-missing-locales, + src/tests/man-recode-in-place, src/tests/manconv-incomplete-char-at-eof, + src/tests/mandb-bogus-symlink, src/tests/mandb-cachedir-tag, + src/tests/mandb-empty-page, src/tests/mandb-purge-updates-timestamp: + Refactor to use report function rather than expect_pass. + +2022-03-07 Colin Watson + + tests: Add an expect_files_equal helper function + + * src/tests/testlib.sh (expect_files_equal): New function. + * src/tests/lexgrog-backslash-dash-rhs, src/tests/lexgrog-basic, + src/tests/lexgrog-multiple-whatis, src/tests/man-exact-section-matches, + src/tests/man-invalid-db-entry, + src/tests/man-language-specific-requests, + src/tests/man-mandatory-manpath, src/tests/man-override-dir, + src/tests/man-recode-in-place, src/tests/man-recode-suffix, + src/tests/man-so-links-same-section, src/tests/man-suffixed-extension, + src/tests/man-symlinks-with-matching-names, + src/tests/manconv-coding-tags, src/tests/manconv-guess-from-encoding, + src/tests/manconv-odd-combinations, src/tests/mandb-basic, + src/tests/mandb-purge-updates-timestamp, + src/tests/mandb-regular-file-symlink-changes, + src/tests/mandb-symlink-beats-whatis-ref, + src/tests/mandb-symlink-target-timestamp, + src/tests/mandb-whatis-broken-link-changes, + src/tests/whatis-path-to-executable, src/tests/zsoelim-so-includes: Use + expect_files_equal instead of the equivalent expect_pass construction. + +2022-03-07 Colin Watson + + tests: Improve quoting + + * src/tests/lexgrog-backslash-dash-rhs, src/tests/lexgrog-basic, + src/tests/lexgrog-multiple-whatis, src/tests/man-deleted-directory, + src/tests/man-exact-section-matches, + src/tests/man-executable-page-on-path, src/tests/man-invalid-db-entry, + src/tests/man-language-specific-requests, + src/tests/man-mandatory-manpath, src/tests/man-missing-locales, + src/tests/man-override-dir, src/tests/man-recode-in-place, + src/tests/man-recode-suffix, src/tests/man-so-links-same-section, + src/tests/man-suffixed-extension, + src/tests/man-symlinks-with-matching-names, + src/tests/manconv-coding-tags, src/tests/manconv-guess-from-encoding, + src/tests/manconv-incomplete-char-at-eof, + src/tests/manconv-odd-combinations, src/tests/mandb-basic, + src/tests/mandb-bogus-symlink, src/tests/mandb-cachedir-tag, + src/tests/mandb-empty-page, src/tests/mandb-purge-updates-timestamp, + src/tests/mandb-regular-file-symlink-changes, + src/tests/mandb-symlink-beats-whatis-ref, + src/tests/mandb-symlink-target-timestamp, + src/tests/mandb-whatis-broken-link-changes, + src/tests/whatis-path-to-executable, src/tests/zsoelim-so-includes: Use + ': "${var=default}"' idiom to assign default values rather than + ': ${var=default}', pacifying shellcheck. + +2022-03-06 Nikola Forró + + Add --with-snapdir configure option + + * m4/man-arg-snapdir.m4: New file. + * configure.ac: Call MAN_ARG_SNAPDIR. + * src/man_db.conf.in: Use @snapdir@ rather than hardcoding /snap. + * NEWS.md: Document this. + +2022-03-06 Colin Watson + + Tidy up NEWS.md slightly + + * NEWS.md: Reorder fixes and improvements; add credit for last commit. + +2022-03-06 Mihail Konev + + man(1): Fix override dir handling + + Previously, override dir was affecting only some cases of manpath + determination. Apply it only when all paths have been gathered instead. + + Also look for override dir when sorting candidates. + + Fixes src/tests/man-override-dir failing when --with-override-dir=od is + passed to ./configure. + + [cjwatson: Refactored candidate comparison to use a strcmp-style + function, and simplified the addition of override directories a little + more.] + + * src/man.c (compare_override_dir): New function. + (compare_candidates): Compare override directory status between + comparing section extensions and comparing locale elements. + * src/manp.c (insert_override_dir): Remove. + (get_manpath_from_path, add_man_subdirs): Remove calls to + insert_override_dir. + (create_pathlist): Add OVERRIDE_DIR at the canonicalization stage + instead. + * NEWS.md: Document this. + + Reported-by: Nikola Forró + Tested-by: Nikola Forró + +2022-03-06 Colin Watson + + Update to Gnulib 20220301 + + In line with Gnulib, we now require Automake 1.14. + + * bootstrap.conf (GNULIB_REVISION): Set to + 8c4f4d7a3c28f88b64fce2fb1d0dc0e570d1a482. + (buildreq): Bump required automake version to 1.14. + * configure.ac (AM_INIT_AUTOMAKE): Bump minimum version to 1.14. + * NEWS.md: Document this. + +2022-03-06 Colin Watson + + Add some hardening options to the systemd service + + Based on a patch by Johannes Segitz in the openSUSE packaging, although + I added `PrivateTmp=true` and `LockPersonality=true` as well. + + * init/systemd/man-db.service.in: Add some hardening options. (This may + produce warnings with `systemd < 244`.) + * NEWS.md: Document this. + +2022-03-05 Colin Watson + + Make the man-db manual build reproducible + + Inspired by a patch from B. Wiedemann, but implemented differently. + + * manual/Makefile.am (version): Set "td" string to the package's release + date, since otherwise groff's me package will use the current date. + * NEWS.md: Document this. + +2022-03-05 Dr. Werner Fink + + Fix showing HTML, as firefox runs into background too fast + + [cjwatson: I'm not 100% keen on this approach, since it randomly depends + on how long the browser happens to take to launch and might be a bit + annoying for users of light browsers such as w3m, but there doesn't seem + to be any other good alternative for the more common case of people + using typical graphical browsers.] + + Fixes Debian bug #335411 and Savannah bug #59542. + + * src/man.c (format_display): Sleep for a few seconds after starting the + browser, since it may background itself before loading files. + * NEWS.md: Document this. + +2022-02-18 МироÑлав Ðиколић + + Update Serbian manual page translation + + * man/po4a/po/sr.po: Update from Translation Project. + +2022-02-17 Remus-Gabriel Chelu + + Update Romanian translation + + * po/ro.po: Update from Translation Project. + * man/THANKS: Update translator credit. + +2022-02-15 Remus-Gabriel Chelu + + Update Romanian manual page translation + + * man/po4a/po/ro.po: Update from Translation Project. + +2022-02-15 Remus-Gabriel Chelu + + Update Romanian manual page translation + + * man/po4a/po/ro.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2022-02-10 Colin Watson + + Release man-db 2.10.1 + +2022-02-10 Colin Watson + + Add a top-level update-po target + + This simplifies the common task of ensuring that both program and manual + page translation files are up to date. + + * Makefile.am (update-po): New target. + +2022-02-09 Colin Watson + + Fix warnings when building without zlib + + * src/decompress.c (decompress_new_inprocess): Only define this function + if HAVE_LIBZ is defined. + (OPEN_FLAGS_UNUSED): New macro, defined to MAYBE_UNUSED if HAVE_LIBZ is + undefined. + (decompress_open): Declare flags as unused if HAVE_LIBZ is defined. + +2022-02-08 Colin Watson + + Use Gnulib raise module + + This can be made slightly more portable (e.g. to MinGW). + + * bootstrap.conf (gnulib_modules): Add raise. + * lib/cleanup.c (sighandler): Call raise rather than kill. + +2022-02-08 Colin Watson + + Merge branch 'libintl' into 'main' + + libdb: link against libintl explicitly + + See merge request cjwatson/man-db!3 + +2022-02-08 Colin Watson + + Use @LTLIBINTL@ rather than $(LIBINTL) + + This matches our other Makefiles. + +2022-02-08 Boyuan Yang <073plan@gmail.com> + + Update Simplified Chinese manual page translation + + Fixes Debian bug #1005139. + + * man/po4a/po/zh_CN.po: Update from Translation Project. + +2022-02-08 Colin Watson + + Fix building on Cygwin + + Achim reported that 2.10.0 no longer builds on Cygwin, while 2.9.4 did. + This was magnificently obscure, at least to this Unix-head. Initially + it appeared to be an issue with inter-library linking between libman and + libmandb, but 2.9.4 relied on that too, just slightly less so. + + The actual problem was that libman only exported + `gl_get_setlocale_null_lock` and not all the other symbols it's supposed + to export, which is because that was explicitly marked for export and no + other symbols were. Building libman with `-Wl,--export-all-symbols` + fixes this; libman is intended as an aggregation of various helper + functions, including those from Gnulib, and it doesn't make sense to be + especially selective since it's only installed as a private library + anyway. + + (I'm still not exactly sure why 2.9.4 didn't do the same thing, but this + seems to be a good enough fix.) + + * configure.ac: Set LIBMAN_EXPORT_LDFLAGS to '-Wl,--export-all-symbols' + when linking with GNU ld on Windows platforms. + * lib/Makefile.am (libman_la_LDFLAGS): Add $(LIBMAN_EXPORT_LDFLAGS). + * src/Makefile.am (LIBMAN): Remove $(top_builddir)/gl/lib/libgnu.la; as + a convenience library, this is already incorporated into libman.la, and + specifying it again causes multiple-definition errors on Cygwin. + * src/tests/Makefile.am (get_mtime_LDADD): Likewise. + * NEWS.md: Document this. + +2022-02-08 Colin Watson + + Document fix for building without iconv + + * NEWS.md: Document previous change. + +2022-02-08 Colin Watson + + Fix building without iconv + + * src/convert.c (convert_to_locale) [!HAVE_ICONV]: Declare a function + rather than a macro. + (convert_to_locale): Add ATTRIBUTE_MALLOC. + +2022-02-08 Colin Watson + + Remove some unused includes + + * lib/encodings.c: Remove unused #include "pipeline.h". Explicitly + include , previously included implicitly via "pipeline.h". + * lib/security.c, lib/util.c: Remove unused #include "pipeline.h". + +2022-02-07 Fabian Groffen + + libdb: link against libintl explicitly + + Necessary since gettext is used for translations. + + [sam: originally found downstream in Gentoo on Gentoo Prefix on macOS.] + +2022-02-06 Colin Watson + + Suppress Clang warnings with -Wconstant-logical-operand + + * src/lexgrog.l (find_name): Explicitly test `*PROG_COL != '\0'` rather + than just `*PROG_COL`, to pacify `clang -Wconstant-logical-operand`. + * src/man.c (make_roff_command, make_display_command): Likewise. + +2022-02-06 Colin Watson + + Revert "Reduce indentation depth using C99" + + This reverts commit c4d20840f3487588c4a0da4397b1acb6dc83a1e5. Even in + C99, a declaration isn't valid immediately after a label; this didn't + become valid until C2x, although gcc allows it as an extension. + + Fixes https://gitlab.com/cjwatson/man-db/-/issues/2. + + * src/man.c (parse_opt): Restore enclosing block for OPT_WARNINGS. + * NEWS: Document this. + +2022-02-04 Colin Watson + + Fix another edge case in mandb-symlink-target-timestamp + + * src/tests/mandb-symlink-target-timestamp: Fix handling of the case + where the nanosecond part of a timestamp is exactly 0 (probably because + the filesystem doesn't support nanosecond resolution). + +2022-02-04 Colin Watson + + Fix occasional mandb-symlink-target-timestamp test failure + + * src/tests/mandb-symlink-target-timestamp: Fix handling of the case + where the nanosecond part of a timestamp starts with a zero. + * NEWS.md: Document this. + +2022-02-04 Colin Watson + + Update man-db.lsm properly + + Release man-db 2.10.0 + +2022-01-31 Colin Watson + + gitlab-ci: Run tests with VERBOSE=1 + + This makes it easier to diagnose test failures. + + * .gitlab-ci.yml (build-distcheck:script, build-out-of-tree:script): Set + VERBOSE=1. + +2022-01-31 Colin Watson + + man: Avoid spurious error messages due to subpages + + Since man-db 2.4.2, `man` has behaved as if the `-l` option was given if + a manual page argument contains a slash. Since man-db 2.5.6, this has + interacted slightly poorly with the subpage feature, emitting spurious + error messages if given multiple manual page arguments some of which + include a slash. `man` no longer emits spurious error messages in this + case. + + Fixes Savannah bug #53708. + + * src/man.c (man): Move name-contains-slash case to ... + (man_maybe_local): ... here (new function). + (main): Call man_maybe_local instead of man where checking for names + containing slashes is acceptable. + * NEWS.md: Document this. + +2022-01-31 Colin Watson + + mandb: Fix handling of link target mtimes + + Depending on directory iteration order, mandb sometimes incorrectly + stored the mtime of a symlink as the mtime of its target as well. + + Fixes Debian bug #691643. + + * src/descriptions_store.c (store_descriptions): When adding entries + based on an ult_src trace, use the mtime of the target file if possible + rather than the mtime of the base entry. + * src/tests/Makefile.am (ALL_TESTS): Add mandb-symlink-target-timestamp. + * src/tests/get-mtime.c (main): Use lstat rather than stat. + * src/tests/mandb-symlink-target-timestamp: New file. + * NEWS.md: Document this. + +2022-01-30 Colin Watson + + Update translation files + + * po/man-db.pot, po/*.po: Update. + +2022-01-30 Colin Watson + + Update to Gnulib 20220130 + + * bootstrap: Sync to Gnulib 735f319cde4ab7e98294557181d682564241d846. + * bootstrap.conf (GNULIB_REVISION): Set to + 735f319cde4ab7e98294557181d682564241d846. + +2022-01-30 Colin Watson + + Simplify static analysis of fatal errors + + The usual idiom for fatal error reporting in man-db is `error (FATAL, + ...)` (there are a few cases using different exit codes, but they're + less common). Unfortunately, there's no easy way to tell the compiler + that this call doesn't return, because `error (0, ...)` *does* return. + As a result, some call sites required extra work to give the compiler + this information, which can sometimes make a difference to static + analysis. + + To simplify this, add a new `fatal` helper function which always exits + `FATAL` (i.e. 2) and never returns. This is declared with `_Noreturn` + so that the compiler can straightforwardly know what's going on. + + * bootstrap.conf (gnulib_modules): Add verror. + (XGETTEXT_OPTIONS): Add --flag=fatal:2:c-format. + * lib/fatal.c, lib/fatal.h: New files. + * lib/Makefile.am (libman_la_SOURCES): Add fatal.c and fatal.h. + * src/tests/Makefile.am (AM_CPPFLAGS): Add -I$(top_srcdir)/lib. + (get_mtime_LDADD): Add $(top_builddir)/lib/libman.la. + + * lib/pathsearch.c (pathsearch, directory_on_path): Use fatal. + * lib/sandbox.c (can_load_seccomp, make_seccomp_filter, _sandbox_load): + Likewise. + * lib/security.c (gripe_set_euid): Likewise. + * lib/xregcomp.c (xregcomp): Likewise. + * libdb/db_lookup.c (gripe_corrupt_data, dblookup_pattern): Likewise. + * libdb/db_ver.c (dbver_wr): Likewise. + * src/accessdb.c (main): Likewise. + * src/catman.c (parse_for_sec): Likewise. + * src/check_mandirs.c (chown_if_possible): Likewise. + * src/man-recode.c (recode): Likewise. + * src/man.c (open_cat_stream, format_display, gripe_converting_name): + Likewise. + * src/manconv.c (add_output): Likewise. + * src/manp.c (add_dir_to_path_list): Likewise. + * src/tests/get-mtime.c (main): Likewise. + * src/whatis.c (do_apropos): Likewise. + * src/zsoelim.l (\"?[^ \t\n\"]+\"?): Likewise. + + * libdb/db_lookup.c (gripe_corrupt_data, gripe_replace_key): Declare as + _Noreturn. + + * src/accessdb.c (main): Remove now-unnecessary assertion. + * src/man.c (gripe_converting_name): Remove now-unnecessary abort. + +2022-01-30 Colin Watson + + docs: Move COPYING and COPYING.LIB to top level + + I think people are more likely to expect to find them here - I recently + even found myself confused by their previous placement. + + * docs/COPYING, docs/COPYING.LIB: Move to ... + * COPYING, COPYING.LIB: ... here, respectively. + * lib/README: Update references. + +2022-01-30 Colin Watson + + man: Don't modify MANSECT environment variable + + Reported and diagnosed by Rob Hoelz. Fixes Savannah bug #58896. + + * src/man.c (get_section_list): Copy colon_sep_section_list before + passing it to strtok. + * NEWS.md: Document this. + +2022-01-30 Colin Watson + + libdb: Pacify gcc -Wempty-body + + * libdb/mydbm.h (MYDBM_REORG) [NDBM, BTREE]: Change no-op macro + definition to avoid "suggest braces around empty body" warning in mandb. + +2022-01-30 Alejandro Cendejas Tena + + Update Spanish manual page translation + + * man/po4a/po/es.po: Update from Translation Project. + +2022-01-30 Colin Watson + + mandb: Don't modify DB without changing its mtime + + In d9ebedad15 (man-db 2.7.0), mandb started relying on the modification + times of database files themselves rather than using a special row, in + order to make databases reproducible between otherwise-identical + installations (subject to predictable behaviour from the underlying + database). + + There was a difficulty with this change. Because purging deleted pages + from the database opened and closed the database in a separate phase + before the main phase of looking for updated manual pages, and because + the main phase relies on comparing against the mtime of the database to + find changed files, I had to arrange to restore the original mtime at + the end of the purge phase in order to avoid confusing the main phase + into being a no-op. However, in some cases (perhaps due to other bugs, + but nevertheless), it's possible for the purge phase to find work to do + without the main phase ever finding any modified directories, which + meant that the net effect of mandb would be to modify its database + without changing its mtime. This is bad form, and confused some backup + systems into believing that the filesystem had been corrupted, since + files having their contents changed without updating their mtime is + indeed a likely symptom of filesystem corruption. + + To avoid this, restructure our database-handling code so that a given + mandb run opens any given database at most once. This means that we no + longer need to modify mtimes manually, so the usual filesystem rules + apply. + + Fixes Debian bug #1004355 and Ubuntu bug #1411633. + + * bootstrap.conf (gnulib_modules): Remove futimens. + * libdb/db_btree.c (man_btree_close): Rename to ... + (man_btree_free): ... this. Check whether wrap->file is set. Free + wrap->mtime. + (man_btree_new): New function. + (man_btree_open): Convert to running on the result of man_btree_new. + (man_btree_get_time): Cache return value in wrap->mtime. + (man_btree_set_time): Remove. + * libdb/db_gdbm.c (man_gdbm_new): New function. + (man_gdbm_open_wrapper): Convert to running on the result of + man_gdbm_new. + (man_gdbm_get_time): Cache return value in wrap->mtime. + (man_gdbm_set_time): Remove. + (raw_close): Check whether wrap->file is set. + (man_gdbm_close): Rename to ... + (man_gdbm_free): ... this. + * libdb/db_ndbm.c (raw_close): Check whether wrap->file is set. + (man_ndbm_close): Rename to ... + (man_ndbm_free): ... this. + (man_ndbm_new): New function. + (man_ndbm_open): Convert to running on the result of man_ndbm_new. + (man_ndbm_get_time): Cache return value in wrap->mtime. + (man_ndbm_set_time): Remove. + * libdb/db_xdbm.c (man_xdbm_close): Rename to ... + (man_xdbm_free): ... this. Update all callers. Free dbf->mtime. + * libdb/db_xdbm.h (man_xdbm_close): Rename to ... + (man_xdbm_free): ... this. + * libdb/mydbm.h (man_gdbm_wrapper, man_ndbm_wrapper, man_btree_wrapper): + Add mtime. + (man_gdbm_new, man_ndbm_new, man_btree_new): Add prototypes. + (man_gdbm_open_wrapper, man_ndbm_open, man_btree_open): Update + prototypes. + (man_gdbm_set_time, man_ndbm_set_time, man_btree_set_time): Remove + prototypes. + (man_gdbm_close, man_ndbm_close, man_btree_close): Rename to ... + (man_gdbm_free, man_ndbm_free, man_btree_free): ... these, respectively. + (MYDBM_NEW): New macro. + (MYDBM_CTRWOPEN, MYDBM_RWOPEN, MYDBM_RDOPEN): Rename file argument to + wrap. + (MYDBM_CLOSE): Rename to ... + (MYDBM_FREE): ... this. + (MYDBM_SET_TIME): Remove macro. + + * src/catman.c (parse_for_sec): Take a MYDBM_FILE argument rather than a + database path. + * src/check_mandirs.c (gripe_rwopen_failed, testmandirs, create_db, + update_db, purge_missing): Likewise. + * src/mandb.c (update_one_file, update_db_wrapper): Likewise. + * src/straycats.c (straycats): Likewise. + * src/check_mandirs.h (create_db, update_db, purge_missing): Update + prototypes. + * src/straycats.h (straycats): Likewise. + + * src/check_mandirs.c (ensure_db_open): New function. + (testmandirs): Only open the database if it wasn't already open, and + don't close it. + (update_db, purge_missing): Likewise. + * src/mandb.c (update_one_file): Likewise. + * src/straycats.c (straycats): Assert that the database is already open, + and don't close it. + + * src/accessdb.c (main): Update database opening code. + * src/catman.c (post_fork): Update database closing code. + (parse_for_sec): Move database opening and closing code to ... + (main): ... here, and update it. + * src/man.c (dbdelete_wrapper): Update database opening and closing + code. + * src/whatis.c (search): Update database opening and closing code. + + * src/check_mandirs.c (purge_missing): Don't reorganize the database. + * src/mandb.c (mandb): Create a MYDBM_FILE from the database path, and + close and free it before returning. Rearrange purging so that it runs + on the temporary database copy, which we close and remove if + purge_missing finds a consistency problem requiring us to rescan from + scratch. Unless purging requires a rescan, all of the purge, main, and + stray cats phases now run on the same open database file. Reorganize + the database before closing it if the purge phase did any work. + (process_manpath): Rename the temporary database into place if either of + the purge or stray cats phases did any work, even if the main phase + didn't. + + * src/check_mandirs.c (update_db_time): Remove. + (create_db): Don't manually update the database mtime. + (update_db, purge_missing): Likewise. + + * src/tests/Makefile.am (ALL_TESTS): Add mandb-purge-updates-timestamp. + (check_PROGRAMS): Add get-mtime. + (get_mtime_SOURCES, get_mtime_LDADD): Add. + * src/tests/get-mtime.c: New file: test helper to get a file's mtime + portably. + * src/tests/mandb-purge-updates-timestamp: New file. + * .gitignore: Add src/tests/get-mtime. + + * NEWS: Document this. + +2022-01-29 Colin Watson + + man: Make dbdelete_wrapper use the correct database + + Even if it has permissions to delete stale entries from the database, + dbdelete_wrapper can't assume that the most recently opened database is + the one from which it should delete the entry; it needs to use the + database to which the candidate in question belongs. + + * src/man.c (database): Remove global variable. + (dbdelete_wrapper): Add a manpath argument, and attempt to open the + associated database locally. + (display_database_check): Pass the candidate's path (i.e. manpath) to + dbdelete_wrapper. + (try_db): Make the database path a local variable. Reorganize cleanup + paths. + (main): Stop freeing database, since it's no longer a global variable. + +2022-01-29 Colin Watson + + mandb: Fix some details of error handling + + * src/check_mandirs.c (testmandirs): Return -1 rather than -errno on + failure to create the database. + (create_db, update_db): Only call update_db_time if amount > 0, rather + than if it is non-zero (since it may be negative to indicate an error, + and updating the database time doesn't make sense in that case). + (update_db): Return -1 rather than EOF. + * src/mandb.c (update_db_wrapper): Check whether amount is non-zero + rather than whether it is unequal to EOF. + +2022-01-29 Colin Watson + + libdb: Remove unused MYDBM_CRWOPEN macro + + * libdb/mydbm.h (MYDBM_CRWOPEN): Remove. + +2022-01-29 Colin Watson + + mandb: Call purge_missing and straycats from mandb + + We can simplify some logic by pushing these down a layer. + + * src/check_mandirs.c (purge_missing): Remove will_run_mandb argument, + which was always true due to --filename implying --no-purge. + * src/check_mandirs.h (purge_missing): Update prototype. + * src/mandb.c (process_manpath): Move purge_missing and straycats calls + to ... + (mandb): ... here. + +2022-01-29 Colin Watson + + mandb: Factor out some duplicate code + + * src/mandb.c (mandb): Move common create/update logic outside the + database-type-specific #ifdefs. + +2022-01-26 Colin Watson + + Use bool in more places in mandb + + * src/check_mandirs.c (testmandirs): Change "create" parameter and + "created" local variable types to bool. Update all callers. + (check_multi_key): Change "valid" local variable to bool. + (purge_missing): Change "will_run_mandb" parameter and "db_exists" local + variable types to bool. Update all callers. + * src/check_mandirs.h (purge_missing): Update prototype. + * src/mandb.c (struct tried_catdirs_entry): Change "seen" element type + to bool. Update all users. + (mandb): Change "should_create" and "cachedir_tag_exists" local variable + types to bool. + (process_manpath): Change "run_mandb" local variable type to bool. + (is_lang_dir): Return bool. + +2022-01-26 Yi-Jyun Pan + + Update Traditional Chinese translation + + * po/zh_TW.po: Update from Translation Project. + * man/THANKS: Update translator credit. + +2022-01-25 Colin Watson + + Add Spanish translator credit + + * man/THANKS: Add translator credit. + +2022-01-25 Petr Pisar + + Update Czech translation + + * po/cs.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2022-01-24 Mario Blättermann + + Update German manual page translation + + * man/po4a/po/de.po: Update from Translation Project. + +2022-01-24 Alejandro Cendejas Tena + + Update Spanish manual page translation + + * man/po4a/po/es.po: Update from Translation Project. + +2022-01-24 Alejandro Cendejas Tena + + Update Spanish manual page translation + + * man/po4a/po/es.po: Update from Translation Project. + +2022-01-24 Colin Watson + + Fix upload/release machinery to handle .tar.xz + + Release man-db 2.10.0-pre1 + +2022-01-24 Colin Watson + + Improve documentation of search path handling + + Fixes Savannah bug #61862. + + * man/man5/manpath.man5 (SEARCH PATH): New section. + * man/man1/apropos.man1 (ENVIRONMENT): Refer to manpath(5) for details + of MANPATH. + * man/man1/man.man1 (ENVIRONMENT): Likewise. + * man/man1/manpath.man1 (ENVIRONMENT): Likewise. + * man/man1/whatis.man1 (ENVIRONMENT): Likewise. + * man/man8/catman.man8 (ENVIRONMENT): Likewise. + +2022-01-24 Colin Watson + + Fix typos in descriptions of --systems + + Fixes Savannah bug #61861. + + * man/man1/apropos.man1 (OPTIONS): "system's" → "systems'". + * man/man1/man.man1 (Finding manual pages): Likewise. + * man/man1/manpath.man1 (OPTIONS): Likewise. + * man/man1/whatis.man1 (OPTIONS): Likewise. + +2022-01-24 Colin Watson + + Merge branch 'optimize-decompression' into 'main' + + Significantly improve mandb performance + + See merge request cjwatson/man-db!2 + +2022-01-24 Colin Watson + + Optimize manconv_inprocess for UTF-8 target encoding + + If the target encoding is UTF-8, then manconv's first stage (trial + conversion from UTF-8) can more efficiently be replaced with UTF-8 + validation, leaving the original decompressed buffer unchanged on + success. Suggested by Steinar H. Gunderson. + + * src/manconfig.h (UNLIKELY): New macro. + * src/decompress.c (decompress_inprocess_buf): New function. + * src/decompress.h (decompress_inprocess_buf): Add prototype. + * src/utf8.c, src/utf8.h: New files, based on glib's UTF-8 validation + code. + * src/manconv_client.c (manconv_inprocess): Optimize case where + source_encoding is not UTF-8 and target_encoding is UTF-8 by returning + early if UTF-8 validation passes. + * src/Makefile.am (lexgrog_SOURCES, man_SOURCES, man_recode_SOURCES, + mandb_SOURCES): Add utf8.c and utf8.h. + +2022-01-24 Colin Watson + + Significantly improve mandb performance + + Forking large numbers of subprocesses is slow. An ideal fix would + involve work in libpipeline (e.g. generator functions or + multithreading), but in the meantime we can do much better in the common + case of moderately-sized pages compressed using zlib by doing in-process + decompression. On my test system, this takes `mandb -c` from 344 + seconds (or 152 seconds with `MAN_DISABLE_SECCOMP=1` before 50200d151d, + or 78 seconds with `MAN_DISABLE_SECCOMP=1` after 50200d151d) to 10 + seconds. + + Thanks to Steinar H. Gunderson for a proof of concept, which I reworked + extensively. + + Fixes Debian bugs #630799 and #1003089, and Ubuntu bug #1858777. + + * NEWS.md: Document this. Bump version to 2.10.0. + * src/decompress.c (enum decompress_tag): Add DECOMPRESS_INPROCESS. + (struct decompress_inprocess): New structure. + (struct decompress): Add an inprocess element. + (decompress_new_inprocess, decompress_try_zlib, decompress_is_pipeline, + decompress_inprocess_len, decompress_inprocess_replace): New functions. + (decompress_open): Add flags argument. Try in-process zlib + decompression if requested via DECOMPRESS_ALLOW_INPROCESS. Update all + callers to pass a flags argument (0 unless otherwise stated). + (decompress_start, decompress_read, decompress_peek, + decompress_peek_skip, decompress_readline, decompress_peekline, + decompress_wait, decompress_free): Implement in-process mode. + * src/decompress.h (DECOMPRESS_ALLOW_INPROCESS): Define. + (decompress_open): Update prototype. + (decompress_fdopen): Update comment to indicate that this always uses + pipeline-based decompression. + (decompress_is_pipeline, decompress_inprocess_len, + decompress_inprocess_replace): Add prototypes. + (decompress_start, decompress_wait): Update comments to document + behaviour for in-process decompressors. + + * src/manconv.c (add_output): Add output buffer argument; append to + output buffer if given, otherwise write to stdout as before. + (try_iconv): Add and pass output buffer argument. + (manconv): Likewise. Update all callers to pass output buffer argument + (NULL unless otherwise stated). + * src/manconv.h (struct manconv_outbuf): New structure. + (manconv): Update prototype. + * src/manconv_client.c (manconv_inprocess): New function. + * src/manconv_client.h (manconv_inprocess): Add prototype. + + * src/lexgrog.l (find_name): Request in-process decompression unless + operating on a cat page. Use manconv_inprocess rather than add_manconv + in the in-process case. + * src/man.c (grep): Request in-process decompression. + * src/ult_src.c (ult_src): Likewise. + * src/zsoelim.l (try_compressed, zsoelim_open_file): Likewise. + +2022-01-24 Colin Watson + + Avoid a manconv subprocess in more cases + + Suggested by Steinar H. Gunderson. + + * src/manconv_client.c (add_manconv): Return early if the source and + target encodings are equal, not just if they're both UTF-8. + +2022-01-22 Colin Watson + + Make manconv error handling less abrupt + + Exiting immediately on errors works OK if manconv is only ever used in a + subprocess, but that approach makes it hard to use in an in-process + context. + + * src/manconv.c (add_output): New function, factored out of try_iconv + and manconv. + (tried_iconv): New enumeration. + (try_iconv): Use add_output. Return TRIED_ICONV_FATAL where we would + previously have exited the process. + (manconv): Use add_output. Return non-zero if add_output returns + non-zero or try_iconv returns TRIED_ICONV_FATAL. + * src/manconv.h (manconv): Update prototype. + * src/manconv_client.c (manconv_stdin): Exit with FATAL if manconv + returns non-zero. + * src/manconv_main.c (main): Likewise. + +2022-01-22 Colin Watson + + Clarify argument naming in add_manconv + + Suggested by Steinar H. Gunderson. + + * src/manconv_client.c (add_manconv): Rename source to source_encoding, + and target to target_encoding. + * src/manconv_client.h (add_manconv): Update prototype. + +2022-01-19 Colin Watson + + Add a layer of abstraction to decompression + + It would be useful to have an optimized version of the common case of + zlib decompression that doesn't involve forking subprocesses. As + preparation for this, insert an abstraction layer around code that reads + from decompressors. This abstraction layer looks almost identical to + the `libpipeline` API except for name changes, but having it allows us + to implement decompression in some other way. + + Code that requires `libpipeline`-based decompression can use + `decompress_get_pipeline` to assert that the decompressor uses + `libpipeline` and return the underlying `pipeline *`. + + * src/decompress.c (enum decompress_tag, struct decompress, + decompress_new_pipeline, decompress_get_pipeline, decompress_start, + decompress_read, decompress_peek, decompress_peek_skip, + decompress_readline, decompress_peekline, decompress_wait, + decompress_free): Add. + (decompress_open, decompress_fdopen): Return `decompress *` rather than + `pipeline *`. + * src/decompress.h (decompress): New typedef. + (decompress_open, decompress_fdopen): Update prototypes. + (decompress_get_pipeline, decompress_start, decompress_read, + decompress_peek, decompress_peek_skip, decompress_readline, + decompress_peekline, decompress_wait, decompress_free): Add prototypes. + + * src/lexgrog.l (YY_INPUT, find_name, find_name_decompressed): Use + decompression API. + * src/man-recode.c (recode): Likewise. + * src/man.c (get_preprocessors_from_file, get_preprocessors, + make_roff_command, format_display_and_save, format_display, + display_catman, display, display_pages, grep): Likewise. + * src/manconv.c (check_preprocessor_encoding, try_iconv, manconv): + Likewise. + * src/manconv_client.c (manconv_stdin): Likewise. + * src/manconv_main.c (main): Likewise. + * src/straycats.c (check_for_stray): Likewise. + * src/ult_src.c (ult_src): Likewise. + * src/zsoelim.l (YY_INPUT, <>, zsoelim_parse_file, try_compressed, + zsoelim_open_file): Likewise. + + * src/lexgrog.h (find_name_decompressed): Update prototype. + * src/manconv.h (check_preprocessor_encoding, manconv): Likewise. + +2022-01-19 Alejandro Cendejas Tena + + Update Spanish manual page translation + + * man/po4a/po/es.po: Update from Translation Project. + +2022-01-18 Colin Watson + + Fix missing options when invoking troff + + Broken by 000cda3ec5. + + * configure.ac: Move PROG_TROFF definition after all assignments to + $troff. + +2022-01-18 Colin Watson + + Fix override-dir handling + + Broken by 000cda3ec5. + + * m4/man-arg-override-dir.m4 (MAN_ARG_OVERRIDE_DIR): Remove superfluous + "$" from AC_DEFINE_UNQUOTED call. + +2022-01-17 Colin Watson + + Remove AM_MAINTAINER_MODE + + I enabled this in fb4afb0b75, saying that timestamps were too fragile + for the rebuild rules to work well. However, I've changed my mind: git + is good at making sure that file modification times are updated when + checking out a different commit, and tarballs include timestamp + information. Moreover, with `AM_MAINTAINER_MODE` and without passing + `--enable-maintainer-mode`, flex output isn't automatically regenerated, + which is impossibly annoying and has tripped me up countless times since + 2010. + + * configure.ac (AM_MAINTAINER_MODE): Remove. + +2022-01-17 Colin Watson + + NEWS.md: Document previous commit + +2022-01-17 Colin Watson + + Merge branch 'C0rn3j-main-patch-74046' into 'main' + + man-db.timer: Use RandomizedDelaySec over AccuracySec + + See merge request cjwatson/man-db!1 + +2022-01-17 Colin Watson + + Avoid libpipeline linkage in libman + + Since it's only used by one function, and not all of man-db's tools need + libpipeline in their own right (e.g. accessdb), it seems worth pushing + this up a layer. + + * lib/encodings.c (struct conversion_entry, conversion_table, + convert_encoding, check_preprocessor_encoding): Move to ... + * src/manconv.c: ... here. + * lib/encodings.h (check_preprocessor_encoding): Move to ... + * src/manconv.h: ... here. + * lib/Makefile.am (libman_la_CPPFLAGS): Remove $(libpipeline_CFLAGS). + (libman_la_LDFLAGS): Remove $(libpipeline_LIBS). + * src/man-recode.c, src/man.c, src/manconv.c: Include manconv.h. + +2022-01-17 Colin Watson + + Pacify cppcheck in check_preprocessor_encoding + + * lib/encoding.c (check_preprocessor_encoding): Explicitly initialize + directive_end and ppsearch. If directive is non-NULL by the time these + are used then they're always initialized, but cppcheck didn't manage to + spot that. + +2022-01-16 Colin Watson + + Update to Gnulib 20220116 + + * bootstrap: Sync to Gnulib 1eae0f7ea3c220d054025f2c9211700665f9f4a0. + * bootstrap.conf (GNULIB_REVISION): Set to + 1eae0f7ea3c220d054025f2c9211700665f9f4a0. + +2022-01-16 Colin Watson + + Move some more declarations out of manconfig.h + + Header includes should be in the same translation unit as the code that + uses them rather than being ambient across the whole project. + + * include/manconfig.h: Remove obsolete header comment about program + paths. + + * include/manconfig.h: Remove includes of "xvasprintf.h", , + "xalloc.h", and "xstrndup.h", as well as "struct pipeline" declaration. + Update all files that relied on these to include/declare them directly + instead as needed. + + * include/manconfig.h (MAN_DB, mkdbname): Move to ... + * libdb/mydbm.h: ... here. + +2022-01-16 Colin Watson + + Move appendstr out of manconfig.h + + * include/manconfig.h (appendstr): Move to ... + * lib/appendstr.h: ... here (new file). + * lib/Makefile.am (libman_la_SOURCES): Add appendstr.h. + * lib/README: Update file names. + * lib/appendstr.c, libdb/db_delete.c, src/catman.c, src/check_mandirs.c, + src/compression.c, src/filenames.c, src/globbing.c, src/man.c, + src/manconv_client.c, src/manconv_main.c, src/manp.c, src/straycats.c, + src/whatis.c, src/zsoelim.l: Include appendstr.h. + +2022-01-16 Colin Watson + + Move debug-related declarations out of manconfig.h + + * include/manconfig.h (debug_level, init_debug, debug, debug_error): + Move to ... + * lib/debug.h: ... here (new file). + * lib/Makefile.am (libman_la_SOURCES): Add debug.h. + * lib/README: Update file names. + * lib/debug.c, lib/encodings.c, lib/sandbox.c, lib/security.c, + lib/util.c, libdb/db_btree.c, libdb/db_delete.c, libdb/db_gdbm.c, + libdb/db_lookup.c, libdb/db_store.c, libdb/db_ver.c, src/accessdb.c, + src/catman.c, src/check_mandirs.c, src/descriptions.c, + src/descriptions_store.c, src/filenames.c, src/globbing.c, + src/globbing_test.c, src/lexgrog_test.c, src/man-recode.c, src/man.c, + src/manconv.c, src/manconv_main.c, src/mandb.c, src/manp.c, + src/manpath.c, src/straycats.c, src/ult_src.c, src/whatis.c, + src/zsoelim.l, src/zsoelim_main.c: Include debug.h. + +2022-01-16 Colin Watson + + Move create_tempdir out of manconfig.h + + * include/manconfig.h (create_tempdir): Move to ... + * lib/tempfile.h: ... here (new file). + * lib/Makefile.am (libman_la_SOURCES): Add tempfile.h. + * lib/tempfile.c, src/man.c: Include tempfile.h. + +2022-01-16 Colin Watson + + Move util.c-related declarations out of manconfig.h + + * include/manconfig.h (is_changed, is_directory, escape_shell, + remove_directory, trim_spaces, lang_dir, init_locale): Move to ... + * lib/util.h: ... here (new file). + * lib/Makefile.am (libman_la_SOURCES): Add util.h. + * lib/util.c, src/accessdb.c, src/catman.c, src/check_mandirs.c, + src/descriptions.c, src/globbing.c, src/globbing_test.c, src/lexgrog.l, + src/lexgrog_test.c, src/man-recode.c, src/man.c, src/manconv_main.c, + src/mandb.c, src/manp.c, src/manpath.c, src/straycats.c, src/whatis.c, + src/zsoelim_main.c: Include util.h. + +2022-01-16 Colin Watson + + Move comp_info and comp_file out of manconfig.h + + * include/manconfig.h (comp_info, comp_file): Move to ... + * src/compression.h: ... here (new file). + * src/Makefile.am (lexgrog_SOURCES, man_SOURCES, man_recode_SOURCES, + mandb_SOURCES): Add compression.h. + * src/compression.c, src/filenames.c, src/man-recode.c, src/man.c, + src/straycats.c, src/ult_src.c: Include compression.h. + +2022-01-16 Colin Watson + + Move straycats out of manconfig.h + + * include/manconfig.h (straycats): Move to ... + * src/straycats.h: ... here (new file). + * src/Makefile.am (mandb_SOURCES): Add straycats.h. + * src/mandb.c, src/straycats.c: Include straycats.h. + +2022-01-16 Colin Watson + + Use lexgrog type definitions consistently + + * include/manconfig.h (MANPAGE, CATPAGE): Move to ... + * src/lexgrog.h (MANPAGE, CATPAGE): ... here. + * src/lexgrog.l (find_name, find_name_decompressed): Compare p_lg->type + against CATPAGE rather than testing its truth value. + * src/lexgrog_test.c (main): Set type to MANPAGE/CATPAGE rather than + 0/1. + +2022-01-16 Colin Watson + + Update translation files + + * po/man-db.pot, po/*.po: Update. + +2022-01-16 Colin Watson + + Fix build system following changes to include/*.h + + * Makefile.am (noinst_HEADERS): Add include/comp_src.h and + include/manconfig.h. + * lib/Makefile.am (libman_la_CPPFLAGS): Replace + -I$(top_builddir)/include with -I$(top_srcdir)/include. + * libdb/Makefile.am (libmandb_la_CPPFLAGS): Likewise. + * src/Makefile.am (AM_CPPFLAGS): Likewise. + * src/tests/Makefile.am (AM_CPPFLAGS): Likewise. + +2022-01-16 Colin Watson + + Remove Checker support + + The GNU Checker package was last released in 2005, and its web page + (https://www.gnu.org/software/checker/) says that it has been + decommissioned in favour of Valgrind. + + * include/manconfig.h (chkr_garbage_detector): Remove. + * src/man.c (main): Remove call to chkr_garbage_detector. + * src/mandb.c (main): Likewise. + * src/whatis.c (search): Likewise. + +2022-01-16 Colin Watson + + Remove obsolete include/README + + * include/README: Remove; it claimed that this directory contains files + created by configure, which is no longer true, and it said nothing else + useful. + * Makefile.am (dist_noinst_DATA): Remove include/README. + +2022-01-16 Colin Watson + + Stop generating include/*.h from configure + + This was inconvenient when making changes to those central header files. + All `configure`-generated preprocessor symbols are now in `config.h`. + + * configure.ac: Define various PROG_* symbols. Remove AC_SUBST calls + for compressors and decompressors. + (AC_CONFIG_FILES): Remove include/comp_src.h and include/manconfig.h. + * m4/man-arg-override-dir.m4: Define OVERRIDE_DIR symbol. + * include/manconfig.h.in: Rename to ... + * include/manconfig.h: ... this. Remove PROG_*, OVERRIDE_DIR, and + COMPRESS_EXT definitions. + * include/comp_src.h.in: Rename to ... + * include/comp_src.h: ... this. + * README.md: Update references to include/manconfig.h. + * .gitignore: Remove include/*.h. + +2022-01-16 Colin Watson + + Rename program preprocessor symbols to PROG_* + + This is mainly in order to avoid potential confusion with `PIC` (defined + when building position-independent code), but I renamed all these + variables for consistency. + + * include/manconfig.h.in (PAGER, CAT, WEB_BROWSER, TR, GREP, TROFF, + NROFF, EQN, NEQN, TBL, COL, VGRIND, REFER, GRAP, PIC, COMPRESSOR, + GUNZIP, UNCOMPRESS, BUNZIP2, UNLZMA, UNXZ, LZIP, UNZSTD): Rename to ... + (PROG_PAGER, PROG_CAT, PROG_BROWSER, PROG_TR, PROG_GREP, PROG_TROFF, + PROG_NROFF, PROG_EQN, PROG_NEQN, PROG_TBL, PROG_COL, PROG_VGRIND, + PROG_REFER, PROG_GRAP, PROG_PIC, PROG_COMPRESSOR, PROG_GUNZIP, + PROG_UNCOMPRESS, PROG_BUNZIP2, PROG_UNLZMA, PROG_UNXZ, PROG_LZIP, + PROG_UNZSTD): ... these (respectively). Update all references. + +2022-01-16 Colin Watson + + Move lexgrog-related bits out of manconfig.h + + It's generally cleaner for things like this to be in a dedicated header + file. + + * include/manconfig.h.in (struct lexgrog, find_name, + find_name_decompressed): Move to ... + * src/lexgrog.h: ... here (new file). Simplify declarations slightly. + * include/manconfig.h.in (lexgrog filter enum): Move to ... + * src/lexgrog.l: ... here. + * src/Makefile.am (lexgrog_SOURCES, mandb_SOURCES): Add lexgrog.h. + * src/check_mandirs.c, src/lexgrog.l, src/lexgrog_test.c, + src/straycats.c: Include lexgrog.h. + +2022-01-16 Martin + + man-db.timer: Use RandomizedDelaySec Avoids congesting resources, otherwise this runs daily at 12:00 and 00:00 https://www.freedesktop.org/software/systemd/man/systemd.timer.html + +2022-01-09 Colin Watson + + Recognize Arabic and Persian translations of NAME + + * src/lexgrog.l (ar_name, fa_name): Add. + (name): Add ar_name and fa_name. + * NEWS.md: Document this. + +2022-01-09 Colin Watson + + Note Macedonian support + + * src/lexgrog.l: Note that bg_name also works for mk (Macedonian). + +2022-01-09 Colin Watson + + Downgrade "malformed .lf request" warning to debug + + Fixes Debian bug #998426. + + * src/zsoelim.l (.): Downgrade and rephrase message, + since *roff arithmetic expressions are valid here and we can't + reasonably parse them. + * NEWS.md: Document this. + +2022-01-09 Colin Watson + + NEWS.md: Fix rendering with some parsers + +2022-01-09 Colin Watson + + Use MAYBE_UNUSED rather than _GL_UNUSED + + We should be using the public name from Gnulib's `attribute.h`. + + * lib/orderfiles.c (order_files) [!HAVE_LINUX_FIEMAP_H && + !HAVE_POSIX_FADVISE]: Use MAYBE_UNUSED rather than _GL_UNUSED. + * lib/sandbox.c (_sandbox_load) [!HAVE_LIBSECCOMP]: Likewise. + * lib/security.c (drop_privs): Likewise. + * libdb/db_ndbm.c (unsorted_nextkey): Likewise. + * src/accessdb.c (help_filter): Likewise. + * src/check_mandirs.c (chown_if_possible) [!MAN_OWNER]: Likewise. + * src/convert.c (close_conv_to_locale): Likewise. + * src/decompress.c (decompress_zlib): Likewise. + * src/lexgrog_test.c (help_filter): Likewise. + * src/man.c (help_filter, squeeze_blank_lines, disable_hyphenation, + disable_justification): Likewise. + * src/manconv.c (manconv): Likewise. + * src/manp.c (free_config_file): Likewise. + * src/tests/fspause.c (main): Likewise. + * src/whatis.c (help_filter): Likewise. + * src/zsoelim_main.c (parse_opt): Likewise. + +2022-01-09 Colin Watson + + lexgrog: Produce output in the user's locale + + Fixes Debian bug #970482. + + * src/whatis.c (simple_convert): Move to ... + * src/convert.c: ... here (new file). Rename to convert_to_locale, and + automatically handle setup/teardown of the iconv descriptor. + * src/convert.h: New file. + + * src/whatis.c (display): Use convert_to_locale instead of + simple_convert. + (main): Remove setup/teardown of iconv descriptor, now handled + automatically by convert_to_locale. + * src/lexgrog_test.c (main): Convert name and whatis to the user's + locale. + * src/Makefile.am (lexgrog_SOURCES, whatis_SOURCES): Add convert.c and + convert.h. + * NEWS.md: Document this. + +2022-01-03 Colin Watson + + Add man-pages(7) reference to man(1) + + Fixes Debian bug #974174. + + * man/man1/man.man1 (DESCRIPTION): Add man-pages(7) reference to + description of section 7. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + * NEWS.md: Document this. + +2022-01-03 Colin Watson + + Document MAN_DISABLE_SECCOMP and PIPELINE_DEBUG + + Fixes Debian bug #941622. + + * man/man1/man.man1 (ENVIRONMENT): Document MAN_DISABLE_SECCOMP and + PIPELINE_DEBUG. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + * NEWS: Document this. + +2022-01-03 Colin Watson + + NEWS: Document previous commit + +2022-01-03 Colin Watson + + Reduce overhead of MAN_DISABLE_SECCOMP=1 + + If MAN_DISABLE_SECCOMP=1 is set (or if seccomp is otherwise + unavailable), then there's no need to call seccomp_init and friends, + which can have significant overhead even if we never actually load the + resulting filter. + + Pointed out by Steinar H. Gunderson in https://bugs.debian.org/1003089. + + * lib/sandbox.c (make_seccomp_filter): Return NULL early if + can_load_seccomp returns false. + (_sandbox_load): Return early if the relevant context is NULL. + (sandbox_free): Only call seccomp_release if the relevant context is + non-NULL. + +2022-01-03 Colin Watson + + Indicate that merge requests are preferred + + * docs/HACKING.md (Sending patches): Describe merge request workflow and + indicate that it is preferred. + +2022-01-03 Colin Watson + + Reformat hacking documentation as Markdown + + * docs/HACKING: Move to ... + * docs/HACKING.md: ... here. Reformat as Markdown. + * docs/Makefile.am (dist_noinst_DATA): Replace HACKING with HACKING.md. + +2022-01-03 Colin Watson + + Add release automation + + When a tag is pushed to GitLab, upload the bootstrapped source tarball + to the package registry, and create a release in GitLab associated with + the tag. + + * .gitlab-ci.yml (stages): Remove test, since it had no jobs. Add + upload and release. + (build-distcheck:script): Configure with --enable-maintainer-mode, to + ensure that flex-generated scanners are fresh. + (upload, release): New jobs. + * release.sh: Remove. GitLab CI handles building releases now. + * Makefile.am (EXTRA_DIST): Remove release.sh. + * docs/HACKING: Update for GitLab-based release process. + +2022-01-03 Colin Watson + + Reformat release notes as Markdown + + * NEWS: Move to ... + * NEWS.md: ... here. Reformat as Markdown. + * Makefile.am (dist_noinst_DATA): Remove NEWS; Automake automatically + includes this file (or NEWS.md) in the distribution without help. + * README.md, docs/HACKING: Refer to NEWS.md instead of NEWS. + +2022-01-02 Colin Watson + + Remove superfluous quotes + + * Makefile.am (gen_start_date): Remove superfluous quotes. + +2022-01-02 Colin Watson + + Add build-distcheck CI artifact + + This should eventually allow publishing release tarballs built by a CI + process rather than on my laptop. + + * .gitlab-ci.yml (variables): Set GIT_DEPTH to 0; we need full history + in order to build the ChangeLog file. + (bootstrap:before_script): Add wget, needed to fetch Gnulib PO files. + (build-distcheck:before_script): Add git, needed by gitlog-to-changelog. + (build-distcheck:artifacts): Add bootstrapped/*.tar.xz. + +2022-01-02 Colin Watson + + Switch CI image to debian:unstable + + This gives us newer versions of various dependencies such as the + autotools. + + * .gitlab-ci.yml (default:image): Switch from gcc to debian:unstable. + (pre-commit:before_script, bootstrap:before_script): Explicitly install + git. + +2022-01-02 Colin Watson + + Pacify gcc -fanalyzer in manconv + + * src/manconv_main.c (main): Assert that from_code is non-NULL; this is + guaranteed by the argp state machine, but the compiler can't prove that. + +2022-01-02 Colin Watson + + Fix crash in globbing if run with no arguments + + * src/globbing_test.c (parse_opt): Emit a usage message if there are no + non-option arguments. + (main): Assert that remaining_args is non-NULL; this is now guaranteed + by the argp state machine, but the compiler can't prove that. + * NEWS: Document this. + +2022-01-02 Colin Watson + + Pacify gcc -fanalyzer in catman + + It isn't actually possible for sections to be NULL after argp parsing + has finished, but "gcc -fanalyzer" can't easily determine that, and it's + easy enough to arrange for it not to matter. + + * src/catman.c (main): Handle case where sections is NULL. + +2022-01-02 Colin Watson + + Pacify gcc -fanalyzer in some database functions + + In GCC 11.2.0, -fanalyzer seems to get confused by copies by assignment + of "struct datum", and thinks that there are use-after-free or + double-free possibilities with multiple loop iterations. These seem to + be false positives, so ignore them for now. + + * libdb/db_lookup.c (dblookup_pattern): Ignore false use-after-free + diagnostic. + * src/accessdb.c (main): Ignore false double-free diagnostics. + * src/catman.c (parse_for_sec): Ignore false use-after-free diagnostics. + * src/check_mandirs.c (sanity_check_db): Ignore false double-free + diagnostics. + (purge_pointers, purge_missing): Ignore false use-after-free + diagnostics. + * src/whatis.c (do_apropos): Ignore false use-after-free and double-free + diagnostics. + +2022-01-02 Colin Watson + + Pacify gcc -fanalyzer in dbdelete + + The refs list can't in fact be empty by this point (because we checked + earlier that we could look up this_ref in it), but it's hard for "gcc + -fanalyzer" to prove that, so help it understand that multi_content can + never end up being NULL. + + * libdb/db_delete.c (dbdelete): Initialize multi_content before looping + over refs. + +2022-01-02 Colin Watson + + Assert that some xasprintf calls return non-NULL + + "gcc -fanalyzer" notices that xasprintf can return NULL in some + situations (string length > INT_MAX, invalid format string, or multibyte + conversion error), and that we weren't handling this in various cases + where we use the return value in contexts that require non-NULL values. + The situations seem obscure enough for simple asserts to be appropriate. + + * lib/pathsearch.c (pathsearch): Assert that xasprintf returns non-NULL. + * lib/tempfile.c (create_tempdir): Likewise. + * lib/util.c (remove_directory): Likewise. + * libdb/db_lookup.c (make_multi_key): Likewise. + * libdb/db_store.c (make_content, dbstore): Likewise. + * src/check_mandirs.c (add_dir_entries, fix_permissions_tree): Likewise. + * src/compression.c (comp_file): Likewise. + * src/globbing.c (look_for_file): Likewise. + * src/man.c (main): Likewise. + * src/mandb.c (mandb, purge_catsubdirs): Likewise. + * src/manp.c (pathappend): Likewise. + * src/ult_src.c (find_include): Likewise. + * src/whatis.c (use_grep): Likewise. + * src/zsoelim.l (zsoelim_open_file): Likewise. + +2022-01-02 Colin Watson + + Fix path searching crash if getcwd fails + + xgetcwd can return NULL if getcwd returns NULL for reasons other than + ENOMEM, so we should handle this. Found by "gcc -fanalyzer". + + * lib/pathsearch.c (pathsearch, directory_on_path): Emit a fatal error + if xgetcwd returns NULL. + * po/POTFILES.in: Add lib/pathsearch.c. + * NEWS: Document this. + +2022-01-02 Colin Watson + + Update to Gnulib 20211231 + + In line with Gnulib, we now require Autoconf 2.64. + + * bootstrap: Sync to Gnulib 14db2b71b5bd05b94ec6126617fd32cd5f1016cd. + * bootstrap.conf (GNULIB_REVISION): Set to + 14db2b71b5bd05b94ec6126617fd32cd5f1016cd. + (buildreq): Bump required autoconf version to 2.64. + * configure.ac (AC_PREREQ): Bump to 2.64. + (--enable-gcc-warnings): New option, based on code in coreutils. Use + this to enable -fanalyzer only if --enable-gcc-warnings=expensive is + used; it's useful but slow. + * include/manconfig.h.in (create_tempdir, appendstr): Move NODISCARD to + the start of these function declarations, required by draft C2x. + * patches/argp-domain.patch: Rebase. + * NEWS: Document this. + +2022-01-02 Colin Watson + + Fix NULL dereference in get_locale_charset callers + + * lib/encodings.c (get_canonical_charset_name): Declare argument and + return value as non-NULL. + (get_locale_charset): Declare return value as non-NULL. Fall back to + "ANSI_X3.4-1968" if locale_charset returned NULL or the empty string. + +2022-01-02 Colin Watson + + Trim down direct Gnulib dependencies a little + + * bootstrap.conf (gnulib_modules): Add c99 (already used indirectly, but + seems like a good idea to request directly now). Remove getopt-gnu, + lock, and unsetenv, none of which we use directly. Replace fcntl with + fcntl-h and signal with signal-h, since we use the corresponding header + files directly but not the corresponding functions. + * .gitignore: Remove lib/getopt.h. + +2022-01-01 Colin Watson + + Fix warnings with Autoconf >= 2.70 + + * configure.ac (AC_PROG_LEX): Add noyywrap argument (new in Autoconf + 2.70, but ignored in previous versions). + * m4/man-bdb.m4 (MAN_CHECK_BDB): Autoconf 2.70 warns about non-literal + arguments to AC_CHECK_HEADERS. Refactor loops so that the header and + library names are visible to m4. + +2022-01-01 Colin Watson + + Add an SC_ALLOW_PERMISSIVE macro + + This plays slightly better with clang-format. + + * lib/sandbox.c (SC_ALLOW_PERMISSIVE): New macro. + (make_seccomp_filter): Use SC_ALLOW_PERMISSIVE instead of forms such as + "if (permissive) SC_ALLOW (name);". + +2022-01-01 Colin Watson + + Use Gnulib attribute.h properly + + manconfig.h previously used _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM without + first including "stdio.h", which caused build failures. We should be + using the public names anyway. + + * bootstrap.conf (gnulib_modules): Add attribute. + + * include/manconfig.h.in (create_tempdir, appendstr): Use NODISCARD + rather than _GL_ATTRIBUTE_NODISCARD. + + * include/manconfig.h.in (debug, debug_error): Use ATTRIBUTE_FORMAT + rather than _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM. + * lib/debug.c (vdebug): Likewise. + + * include/manconfig.h.in (appendstr): Use ATTRIBUTE_SENTINEL rather than + _GL_ATTRIBUTE_SENTINEL. + + * lib/encodings.c (get_page_encoding): Use ATTRIBUTE_MALLOC rather than + _GL_ATTRIBUTE_MALLOC. + * lib/util.c (trim_spaces): Likewise. + + * lib/encodings.c (is_roff_device, get_output_encoding, + get_less_charset, get_jless_charset): Use ATTRIBUTE_PURE rather than + _GL_ATTRIBUTE_PURE. + * lib/glcontainers.c (string_equals, string_hash): Likewise. + * lib/security.c (running_setuid): Likewise. + * src/manp.c (canonicalized_path_equals, canonicalized_path_hash): + Likewise. + * src/whatis.c (match): Likewise. + + * libdb/db_lookup.c (dash_if_unset): Use ATTRIBUTE_CONST rather than + _GL_ATTRIBUTE_CONST. + * libdb/db_store.c (compare_ids): Likewise. + +2022-01-01 Colin Watson + + Reduce indentation depth using C99 + + * src/man.c (parse_opt): Remove an enclosing block and associated + indentation level, since C99 allows mixing declarations and code. + +2022-01-01 Colin Watson + + Pacify pre-commit + + * lib/mp.h: Remove trailing whitespace. + +2022-01-01 Colin Watson + + Simplify interface to container iterator macros + + The Gnulib container iterator macros (GL_LIST_FOREACH_* and + GL_MAP_FOREACH_*) have to run code both before and after a chunk of + user-supplied code. This previously required a START/END macro pair + used something like this: + + GL_LIST_FOREACH_START (names, name) { + ... + } GL_LIST_FOREACH_END (names); + + This doesn't look natural in C, and so it was easy to get it wrong. + + It's possible to do better, at the cost of some tricky macros. + Fortunately, Simon Tatham has already done the hard work in + https://www.chiark.greenend.org.uk/~sgtatham/mp/, and the necessary + header file is MIT-licensed, so we can incorporate it. Now these + iterator macros are used more like this, which is a much more natural C + style: + + GL_LIST_FOREACH (names, name) { + ... + } + + * lib/mp.h: New file. + * lib/Makefile.am (libman_la_SOURCES): Add mp.h. + * lib/README: Add mp.h. Rephrase introductory text about licensing to + account for an MIT-licensed file. + * lib/glcontainers.h (GL_LIST_FOREACH_START, GL_LIST_FOREACH_END): + Rewrite as ... + (GL_LIST_FOREACH): ... this. Update all callers. + (GL_MAP_FOREACH_START, GL_MAP_FOREACH_END): Rewrite as ... + (GL_MAP_FOREACH): ... this. Update all callers. + * NEWS, README.md, docs/HACKING: Document C99 compiler requirement. + +2022-01-01 Colin Watson + + Simplify some GCC attribute handling + + * include/manconfig.h.in (ATTRIBUTE_FORMAT_PRINTF, + ATTRIBUTE_WARN_UNUSED_RESULT, ATTRIBUTE_SENTINEL): Remove in favour of + Gnulib-provided macros. + (create_tempdir, appendstr): Use _GL_ATTRIBUTE_NODISCARD rather than + ATTRIBUTE_WARN_UNUSED_RESULT. + (debug, debug_error): Use _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM rather than + ATTRIBUTE_FORMAT_PRINTF. + (appendstr): Use _GL_ATTRIBUTE_SENTINEL rather than ATTRIBUTE_SENTINEL. + * lib/debug.c (vdebug): Use _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM rather + than ATTRIBUTE_FORMAT_PRINTF. + +2022-01-01 Colin Watson + + Introduce pre-commit + + * .pre-commit-config.yaml: New file. + * .gitlab-ci.yml (stages): Add bootstrap. + (pre-commit): New job. + (bootstrap): Move to bootstrap stage. + + Remove trailing whitespace from all files. + +2022-01-01 Colin Watson + + Update licence texts + + There are no substantive licensing changes here, only formatting + adjustments and referring to the "GNU Lesser General Public License" + rather than the "GNU Library General Public License". + + * docs/COPYING: Update from current contents of + https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. + * docs/COPYING.LIB: Update from current contents of + https://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt. + +2021-12-31 Colin Watson + + Document migration to GitLab + + * README.md: Add link to GitLab repository. + (Contacting the maintainer): Add GitLab issues link. + * docs/HACKING (Revision control): Update for GitLab. + * man/man1/apropos.man1 (BUGS): Add GitLab issues link. + * man/man1/lexgrog.man1 (BUGS): Likewise. + * man/man1/man-recode.man1 (BUGS): Likewise. + * man/man1/man.man1 (BUGS): Likewise. + * man/man1/manconv.man1 (BUGS): Likewise. + * man/man1/manpath.man1 (BUGS): Likewise. + * man/man1/whatis.man1 (BUGS): Likewise. + * man/man1/zsoelim.man1 (BUGS): Likewise. + * man/man5/manpath.man5 (BUGS): Likewise. + * man/man8/accessdb.man8 (BUGS): Likewise. + * man/man8/catman.man8 (BUGS): Likewise. + * man/man8/mandb.man8 (BUGS): Likewise. + * NEWS: Document this. + +2021-11-17 Colin Watson + + Reformat README + + * README: Move to ... + * README.md: ... here. Reformat as Markdown. + * Makefile.am (dist_noinst_DATA): Replace README with README.md. + * docs/INSTALL.quick: Likewise. + +2021-11-16 Colin Watson + + Add .gitlab-ci.yml + +2021-09-19 Colin Watson + + Update some obsolete Autoconf macros + + * configure.ac: Replace AC_GNU_SOURCE and AC_ISC_POSIX with + AC_USE_SYSTEM_EXTENSIONS. Replace AC_CONFIG_HEADER with + AC_CONFIG_HEADERS. Remove an obsolete comment. + +2021-09-19 Colin Watson + + Stop using obsolete AC_TRY_LINK + + This has been obsolete since Autoconf 2.55. Use its AC_LINK_IFELSE + expansion instead. + + * m4/man-bdb.m4 (MAN_CHECK_BDB): Expand AC_TRY_LINK call using + AC_LINK_IFELSE. + +2021-09-18 Mario Blättermann + + Update German manual page translation + + * man/po4a/po/de.po: Update from Translation Project. + +2021-09-18 Mario Blättermann + + Update German manual page translation + + * man/po4a/po/de.po: Update from Translation Project. + +2021-07-11 Colin Watson + + Fix mishandling of suffix matches in manpath + + Fixes Savannah bug #60906. + + * src/manp.c (pathappend): strstr might return matches that are not at + the start of a manpath element, resulting in incorrect truncation. Skip + any such matches. + +2021-02-08 Colin Watson + + Release man-db 2.9.4 + +2021-02-08 Colin Watson + + Fix distribution of Romanian manual page translation + + Accidentally omitted from 1c7b46aecbed76c9833e0a5c833fc2ffd1a7a85a. + + * man/Makefile.am (DIST_SUBDIRS): Add ro. + +2021-02-08 МироÑлав Ðиколић + + Update Serbian manual page translation + + * man/po4a/po/sr.po: Update from Translation Project. + +2020-12-11 Mario Blättermann + + Update German manual page translation + + * man/po4a/po/de.po: Update from Translation Project. + +2020-09-13 Colin Watson + + Handle \[en] escapes in NAME section + + Fixes Debian bug #970122. + + * src/lexgrog.l (MAN_NAME): Treat "\[en]" (and similar) as another + synonym for "\-", and thus as a separator. (This spelling is + groff-specific; the older "\(en" spelling was already accepted.) + * NEWS: Document this. + +2020-08-22 Colin Watson + + Fix gcc -Wzero-length-bounds warning + + * lib/orderfiles.c (order_files): Avoid accessing an element of a + zero-length array. + +2020-08-22 S. Gilles + + Allow clock_gettime64; return ENOSYS so libcs can engage fallbacks + + libcs such as musl expect ENOSYS to be returned (not EPERM) in their + fallback code, so change the seccomp filter to be more agreeable to + them. + + At the same time, clock_gettime is permitted in the filter, so permit + clock_gettime64 as well -- it will be needed by 2038 in any case. + + * lib/sandbox.c (make_seccomp_filter): Set default action to + SCMP_ACT_ERRNO (ENOSYS). Allow clock_gettime64. + * NEWS: Document this. + +2020-07-04 Colin Watson + + Add Romanian manual page translation + + * man/po4a/po/ro.po: New from Translation Project (thanks, Florentina + MuÈ™at). + * configure.ac (AC_CONFIG_FILES): Add man/ro/Makefile. + * man/LINGUAS.po4a: Add ro. + * man/Makefile.am (DIST_SUBDIRS): Add ro. + * man/ro/Makefile.am, man/ro/translator.add: New files. + * man/po4a/Makefile.am (POFILES): Add po/ro.po. + * man/po4a/po4a.cfg (po4a_langs): Add ro. + * man/THANKS: Update translator credit. + * .gitignore: Add man/ro/man1, man/ro/man5, and man/ro/man8. + +2020-07-04 Colin Watson + + Remove "Type" column from DB table in mandb(8) + + The database types table in mandb(8) has always been a bit + dubiously-placed; it's really more about how man-db is configured, and + as such makes more sense in manual/db.me (which indeed has an extended + version of the same table). It causes particular problems in translated + versions of this page, where it's very easy for it to become too wide + and cause "make check" failures. + + A proper fix for this would probably require updating existing + translations, but an easy improvement is to remove the "Type" column: it + has negligible relevance here, and removing it makes it much easier for + translated versions to stay within page width limits. + + * man/man8/mandb.man8 (DATABASE CACHES): Remove "Type" column from + table. + +2020-07-02 Colin Watson + + Recognise Romanian translations of NAME + + * src/lexgrog.l (ro_name): Add. + (name): Add ro_name. + * NEWS: Document this. + +2020-06-24 Florentina MuÈ™at + + Update Romanian translation + + * po/ro.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2020-06-22 Colin Watson + + Release man-db 2.9.3 + +2020-06-22 Colin Watson + + Avoid po4a confusion with \c + + po4a >= 0.58 (I think) changes its handling of \c slightly, resulting in + incorrect output for the admittedly awkward uses of \c in man(1). + Rearrange markup to avoid this. + + * man/man1/man.man1 (OVERVIEW): Recast description of the syntax of + locale environment variables using \f[BIR] rather than .B/.RI and \c. + (Controlling formatted output): Coalesce markup for the default prompt + into a single .BI macro, avoiding the need for \c. Unfuzzy most + translations. + * NEWS: Document this. + +2020-06-22 Colin Watson + + Fix po4a version comparison + + po4a's versions don't quite conform to Perl's standard versioning + arrangements, producing very confusing results when trying to compare + two-component and three-component versions (because "0.47" is equivalent + to "v0.470.0"). Perhaps we should use some other version comparison + system instead, but in the meantime patch things up so that what we + currently use behaves more sensibly. + + * man/po4a/Locale/Po4a/Manext.pm (_parse_version): New subroutine. + (shiftline, pushline, translate): Use _parse_version, and always use a + leading "v" on the right-hand side. + +2020-06-01 Colin Watson + + Clarify description of zstd in configure + + Suggested by crabbed halo ablution in Savannah bug #57558. + + * configure.ac: Describe zstd as "LZ77/entropy-coding compression + utility". + +2020-06-01 Colin Watson + + Release man-db 2.9.2 + +2020-06-01 Colin Watson + + Update to Gnulib 20200531 + + * bootstrap: Sync to Gnulib d4429157c13b49d1749f5ea18fb30e24ffa646aa. + * bootstrap.conf (GNULIB_REVISION): Set to + d4429157c13b49d1749f5ea18fb30e24ffa646aa. + +2020-06-01 Bernhard Rosenkränzer + + Add support for zstd-compressed manual pages + + * configure.ac: Check for zstd. + * include/comp_src.h.in (comp_list): Add zstd. + * include/manconfig.h.in: Define UNZSTD. + * NEWS: Document this. + +2020-05-31 Colin Watson + + Fix configure logic for enabling COMP_CAT + + Only enable COMP_CAT if a compressor is defined. (We don't have all + possible decompression utilities set up to be compressors too.) + + * configure.ac: Only enable COMP_CAT if $compressor is non-empty. + +2020-05-31 Colin Watson + + Make gxditview work with seccomp sandbox + + "man -X" and friends used to work by running groff with -X, causing it + to run gxditview itself. This didn't work with the seccomp sandbox: the + sorts of system calls that a text processor needs to make are not very + much related to the sorts of system calls that an X client needs to + make. + + Instead, run groff with -X -Z to pass the appropriate options to troff + but stop it from running gxditview, and then run gxditview ourselves + without sandboxing. This also lets us set a better window title. + + * src/man.c (make_roff_command): In gxditview mode, run groff with -Z as + well as -X. + (make_display_command): In gxditview mode, add an appropriate gxditview + process. + (display): In gxditview mode, call the ordinary "display formatted page" + logic, without saving a cat page. + +2020-05-31 Colin Watson + + * NEWS: Move misplaced entry to "Fixes". + +2020-05-31 Colin Watson + + Fix document font size for -X75-12 and -X100-12 + + Reported by Konrad Schwarz. + + * src/man.c (make_roff_command): Add the "-rS12" argument if the + argument to -X contains "-12". + * NEWS: Document this. + +2020-05-17 Stéphane Aulery + + Update French manual page translation + + * man/po4a/po/fr.po: Update from Translation Project. + * man/THANKS: Update translator credit. + +2020-04-12 Mario Blättermann + + Update German manual page translation + + Fixes Debian bug #955320. + + * man/po4a/po/de.po: Update from Translation Project. + +2020-04-12 Colin Watson + + NEWS: Remove superfluous ")" + +2020-04-03 Boyuan Yang <073plan@gmail.com> + + Update Simplified Chinese manual page translation + + * man/po4a/po/zh_CN.po: Update from Translation Project. + +2020-04-02 МироÑлав Ðиколић + + Update Serbian translation + + * po/sr.po: Update from Translation Project. + +2020-03-29 Colin Watson + + Add bug tracker link to manual pages + + Fixes Savannah bug #58039. + + * man/man1/apropos.man1 (BUGS), man/man1/lexgrog.man1 (BUGS), + man/man1/man-recode.man1 (BUGS), man/man1/man.man1 (BUGS), + man/man1/manconv.man1 (BUGS), man/man1/manpath.man1 (BUGS), + man/man1/whatis.man1 (BUGS), man/man1/zsoelim.man1 (BUGS), + man/man8/accessdb.man8 (BUGS), man/man8/catman.man8 (BUGS), + man/man8/mandb.man8 (BUGS): New section, containing a link to the bug + tracker. + * man/man5/manpath.man5 (BUGS): Add a link to the bug tracker. + * NEWS: Document this. + +2020-03-28 Bjarni Ingi Gislason + + man/man8/*: Fix misuse of two-fonts macros + + Correct the misuse of a two-fonts macro, which function is to + + 1) use the first font for each odd numbered argument and the second + font for all others. + + 2) join (output) the arguments without an intervening space. + + Fixes Debian bug #955187. + + * man/man8/accessdb.man8 (OPTIONS): Use a one-font macro when there is + only a single argument. + * man/man8/catman.man8 (OPTIONS): Likewise. + * man/man8/mandb.man8 (OPTIONS): Likewise. + +2020-03-28 Bjarni Ingi Gislason + + man/man1/*: Fix misuse of two-fonts macros + + Correct the misuse of a two-fonts macro, which function is to + + 1) use the first font for each odd numbered argument and the second + font for all others. + + 2) join (output) the arguments without an intervening space. + + Fixes Debian bug #955185. + + * man/man1/lexgrog.man1 (OPTIONS): Use a one-font macro when there is + only a single argument. + * man/man1/man-recode.man1 (OPTIONS): Likewise. + * man/man1/man.man1 (DESCRIPTION): Likewise. + * man/man1/whatis.man1 (OPTIONS): Likewise. + * man/man1/zsoelim.man1 (DESCRIPTION): Likewise. + +2020-02-25 Colin Watson + + Release man-db 2.9.1 + +2020-02-25 Colin Watson + + Update to Gnulib 20200224 + + * bootstrap: Sync to Gnulib d279bc6d9f9323e19ad8c32b6d12ff96dfb0f5ba. + * bootstrap.conf (GNULIB_REVISION): Set to + d279bc6d9f9323e19ad8c32b6d12ff96dfb0f5ba. + (gnulib_modules): Add havelib, needed for AM_GNU_GETTEXT in + configure.ac. + +2020-01-27 Colin Watson + + Add cat path configuration for /snap/man + + Add MANDB_MAP entry mapping the prospective /snap/man directory to + /var/cache/man/snap, as discussed with the snapd team. + + * src/man_db.conf.in: Add "MANDB_MAP /snap/man /var/cache/man/snap". + * NEWS: Document this. + +2019-12-26 Felipe Castro + + Update Esperanto translation + + * po/eo.po: Update from Translation Project. + +2019-12-26 Sebastian Rasmussen + + Update Swedish manual page translation + + * man/po4a/po/sv.po: Update from Translation Project. + +2019-12-26 Sebastian Rasmussen + + Update Swedish translation + + * po/sv.po: Update from Translation Project. + +2019-11-23 Colin Watson + + Drop fdutimens patch for GNU/Hurd + + The bug (https://bugs.debian.org/762677) that this was working around + was fixed in glibc 2.28, or Debian glibc 2.27-2. + + * patches/fdutimens-hurd.patch: Remove. + * bootstrap.conf (bootstrap_post_import_hook): Stop applying + patches/fdutimens-hurd.patch. + * Makefile.am (EXTRA_DIST): Remove patches/fdutimens-hurd.patch. + * NEWS: Document this. + +2019-10-23 Colin Watson + + Release man-db 2.9.0 + +2019-10-23 Antonio Ceballos Roa + + Update Spanish manual page translation + + * man/po4a/po/es.po: Update from Translation Project. + +2019-10-18 Antonio Ceballos Roa + + Update Spanish manual page translation + + * man/po4a/po/es.po: Update from Translation Project. + +2019-10-10 Mario Blättermann + + Update German manual page translation + + * man/po4a/po/de.po: Update from Translation Project. + +2019-10-10 Antonio Ceballos Roa + + Update Spanish manual page translation + + * man/po4a/po/es.po: Update from Translation Project. + +2019-10-07 Antonio Ceballos Roa + + Update Spanish manual page translation + + * man/po4a/po/es.po: Update from Translation Project. + +2019-10-05 Antonio Ceballos Roa + + Update Spanish manual page translation + + * man/po4a/po/es.po: Update from Translation Project. + * man/THANKS: Update translator credit. + +2019-10-05 Yuri Kozlov + + Update Russian manual page translation + + * man/po4a/po/ru.po: Update from Translation Project. + +2019-10-05 Pedro Albuquerque + + Update Portuguese manual page translation + + * man/po4a/po/pt.po: Update from Translation Project. + +2019-10-05 Pedro Albuquerque + + Update Portuguese translation + + * po/pt.po: Update from Translation Project. + +2019-10-05 Rafael Fontenelle + + Update Brazilian Portuguese manual page translation + + * man/po4a/po/pt_BR.po: Update from Translation Project. + +2019-10-03 Colin Watson + + Fix language/territory candidate comparison logic + + When I extracted the COMPARE_LOCALE_ELEMENTS macro, I apparently left in + an explicit reference to territory that should have been the "elt" + parameter. As a result, some cases of language and territory comparison + went wrong, in particular resulting in pt_BR users seeing pt pages ahead + of pt_BR pages. + + Reported by Rafael Fontenelle. + + * src/man.c (compare_candidates): Fix incorrect territory-specific + comparison in COMPARE_LOCALE_ELEMENTS. + * NEWS: Document this. + +2019-10-03 Stéphane Aulery + + Update French translation + + * po/fr.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2019-10-03 Mario Blättermann + + Update German translation + + * po/de.po: Update from Translation Project. + +2019-10-03 Yuri Kozlov + + Update Russian translation + + * po/ru.po: Update from Translation Project. + +2019-10-03 Boyuan Yang <073plan@gmail.com> + + Update Simplified Chinese translation + + * po/zh_CN.po: Update from Translation Project. + +2019-10-03 Antonio Ceballos Roa + + Update Spanish translation + + * po/es.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2019-10-03 pan93412 + + Update Traditional Chinese translation + + * po/zh_TW.po: Update from Translation Project. + +2019-10-03 Rafael Fontenelle + + Update Brazilian Portuguese translation + + * po/pt_BR.po: Update from Translation Project. + +2019-10-01 Colin Watson + + Release man-db 2.9.0-pre1 + +2019-09-30 Colin Watson + + Add a new man-recode program + + This has an interface designed for bulk conversion, and so can be much + faster than running "man --recode" on each page. + + Fixes Debian bug #933576. + + * bootstrap.conf (gnulib_modules): Add renameat, tempname, and unlinkat. + * src/man-recode.c: New file. + * src/Makefile.am (bin_PROGRAMS): Add man-recode. + (man_recode_LDADD, man_recode_SOURCES): Add. + * src/tests/man-recode-in-place, src/tests/man-recode-suffix: New files. + * src/tests/Makefile.am (ALL_TESTS): Add man-recode-in-place and + man-recode-suffix. + * .gitignore: Add src/man-recode. + * po/POTFILES.in: Add src/man-recode.c. + + * m4/man-trans-subst.m4 (MAN_TRANS_SUBST): Adjust to support program + names containing dashes. + * configure.ac: Add substitutions for man-recode. + + * man/man1/man-recode.man1: New file. + * man/man1/man.man1 (Main modes of operation): Add a note to the + description of --recode suggesting man-recode instead. + * man/man1/manconv.man1 (SEE ALSO): Add reference to man-recode(1). + * man/Makefile.am (man1_MANS): Add man1/man-recode.1. + * man/da/Makefile.am (man1_MANS): Likewise. + * man/de/Makefile.am (man1_MANS): Likewise. + * man/es/Makefile.am (man1_MANS): Likewise. + * man/fr/Makefile.am (man1_MANS): Likewise. + * man/id/Makefile.am (man1_MANS): Likewise. + * man/ja/Makefile.am (man1_MANS): Likewise. + * man/nl/Makefile.am (man1_MANS): Likewise. + * man/pl/Makefile.am (man1_MANS): Likewise. + * man/pt/Makefile.am (man1_MANS): Likewise. + * man/pt_BR/Makefile.am (man1_MANS): Likewise. + * man/ru/Makefile.am (man1_MANS): Likewise. + * man/sr/Makefile.am (man1_MANS): Likewise. + * man/sv/Makefile.am (man1_MANS): Likewise. + * man/tr/Makefile.am (man1_MANS): Likewise. + * man/zh_CN/Makefile.am (man1_MANS): Likewise. + * man/po4a/po4a.cfg: Add support for man-recode. + * man/replace.sin.in: Substitute %man_recode% and %thman_recode%. + + * NEWS: Document this. + +2019-09-30 Colin Watson + + manconv: Guess input encoding if necessary + + * src/manconv_main.c (args_doc): Mark -f option as optional. + (parse_opt): Don't fail if no input encoding was specified. + (main): If no input encoding was specified, guess it from the file name + in the same way that man does. + * man/man1/manconv.man1 (SYNOPSIS): Mark -f option as optional. + (OPTIONS): Describe new default behaviour for -f. + * configure.ac: Disable -Winline; we don't care about gl_list_add_last + not always being inlined. + * NEWS: Document this. + +2019-09-30 Colin Watson + + lexgrog, zsoelim: Suppress more compiler warnings + + -Wsuggest-attribute=malloc was added in GCC 8, so don't try to ignore it + with earlier versions. + + * src/lexgrog.l: Guard '#pragma GCC diagnostic ignored + "-Wsuggest-attribute=malloc"' so that it is only invoked with GCC >= 8. + * src/zsoelim.l: Likewise. + +2019-09-11 Colin Watson + + apropos(1), whatis(1): Fix typo + + Already fixed in man(1) by commit + 68ef9f324832c790a7e3565f726fa1bc9a6d0178. + + * man/man1/apropos.man1 (ENVIRONMENT): an -> and. + * man/man1/whatis.man1 (ENVIRONMENT): Likewise. + +2019-09-09 Colin Watson + + man: Accept "page(section)" form on command line + + Suggested by Tanguy Ortolo and Paul Wise. Fixes Debian bug #677350. + + * src/man.c (split_page_name): Accept "page(section)" form as well as + "page.section". + * src/tests/man-suffixed-extension: Test the "page(section)" form. + * man/man1/man.man1 (SYNOPSIS): Don't mention the "page.section" form + here; it gets too unwieldy to try to express all the possibilities in a + synopsis. + (EXAMPLES): Document "page(section)" form. + (OPTIONS): Hyphenate "Non-argument options" thus. + * NEWS: Document this. + +2019-09-08 Colin Watson + + Make some debugging output less verbose + + Also indent some sections of debugging output, which allows removing + some blank lines. + + Fixes Debian bug #863920. + + * src/catman.c (main): Remove unnecessary debugging output of manp + before calling create_pathlist. + * src/manp.c (main): Likewise. + * src/mandb.c (main): Likewise. + + * src/man.c (main): Remove debugging output of ruid and euid, which was + redundant with init_security. Remove extra newline before "using %s as + pager". + * src/manp.c (describe_flag, print_list): Remove: everything that adds + items to this list already emits a more human-friendly debugging + message. Remove caller of print_list. + (add_sections): Squash debugging output onto one line, and indent it by + two spaces. + (add_def, add_manpath_map, add_mandb_map, add_mandatory): Indent + debugging output by two spaces. + (read_config_file): Remove extra newline after "From the config file + %s:". + (get_manpath_from_path): Remove extra newlines before "path directory + %s" and "adding mandatory man directories". + (add_expanded_dir_to_list): Remove noisy "%s is already in the manpath" + debugging output. Indent "adding %s to manpath" by two spaces. + (add_man_subdirs): Remove noisy "and doesn't have ../man, man, + ../share/man, or share/man subdirectories" debugging output. + +2019-09-08 Colin Watson + + Refactor deduplication in create_pathlist + + This is more efficient, and also has the useful side-effect of reducing + noise in debug output. + + * src/manp.c (struct canonicalized_path): New structure. + (canonicalized_path_new, canonicalized_path_equals, + canonicalized_path_hash, canonicalized_path_free): New functions. + (add_dir_to_path_list): Canonicalize the given path and (if it exists) + add both the original and canonicalized versions as a pair. + (create_pathlist): Simplify: rather than doing a second quadratic-time + pass to eliminate duplicates, we now avoid inserting them in linear time + as we go along. + +2019-09-08 Colin Watson + + man(1): Explain interactions between -w/-W and -a + + Reported by Bjarni Ingi Gislason. Fixes Debian bug #803712. + + * man/man1/man.man1 (Main modes of operation): Explain that the -w and + -W options only print a single match by default, but that -a can be used + to print all matches. + +2019-09-08 Colin Watson + + Suggest "man man" if run with no arguments + + Fixes Debian bug #869798. + + * src/man.c (gripe_no_name): Suggest running "man man". + * NEWS: Document this. + +2019-09-08 Colin Watson + + * NEWS: Document recent manual page improvements. + +2019-09-08 Colin Watson + + Mention where other manual pages come from + + * man/man1/man.man1 (OVERVIEW): Explain that individual manual pages + normally come with whatever they document. + +2019-09-08 Colin Watson + + Revamp man(1) to be a more accessible introduction + + Fixes Savannah bug #53050. + + * man/man1/man.man1 (SYNOPSIS): Delete details of most options, as it + had got much too long and indigestible. The OPTIONS section below + remains, and is better-organised and easier to read. Delete the "man + -c" form entirely, as it's only for internal use by catman. + (DESCRIPTION): Move list of default sections to ... + (DEFAULTS): ... here. + (EXAMPLES): Use a real example rather than the peculiar "alias" + terminology for "man -t". + (OVERVIEW): Various minor editorial improvements. Remove discussion of + index database caches: it's mostly irrelevant to users, and is already + better-documented in mandb(8), apropos(1), and whatis(1). Simplify + discussion of where pages are stored. Briefly describe what cat pages + are. Rewrite description of localisation support to read more fluently + and to take into account that most users will already have a suitable + locale set up. Drop discussion of translations of this package's own + messages: this should be standard rather than something that we + explicitly need to call out here, and the term "message catalogues" was + opaque. + (DEFAULTS): Remove discussion of index database caches, as above. + Remove discussion of cat pages, since this is an implementation detail + and confused matters here too much. + (Finding manual pages): Tighten up language in description of + --sections. Simplify description of --update, and tell readers that it + is normally better to run mandb(8) instead. + (FILES): Remove mention of index database caches from here. While + man(1) does use them, they're an implementation detail and are + better-documented elsewhere. + (SEE ALSO): Remove overly-detailed cross-references to setlocale(3), + ascii(7), latin1(7), the man-db manual, and the FSSTND. Add a paragraph + mentioning documentation in other formats, such as info(1) or HTML. + * man/man5/manpath.man5 (FORMAT): Remove stray quote before the FSSTND + keyword. + * man/man8/mandb.man8 (DESCRIPTION): Remove claim that index database + caches are usually maintained by man(1). + + * man/man1/man.man1, man/man1/manpath.man1: Use the "..." style of + quoting rather than the `...' style. + +2019-09-08 Colin Watson + + Improve documentation of MANROFFOPT + + Reported by Bjarni Ingi Gislason. Fixes Debian bug #914938. + + * man/man1/man.man1 (ENVIRONMENT): Rephrase description of MANROFFOPT to + make it clear that it is added to the formatter's command line, rather + than to man's command line. + +2019-09-08 Colin Watson + + Remove confusing use of "on-line" + + Nowadays "on-line" tends to be understood as "on the internet" rather + than "on a screen", so avoid the term. + + Reported by Dan Jacobson. Fixes Debian bug #774402. + + * docs/man-db.lsm: Say "system help files" rather than "on-line help + files". + * man/man1/man.man1 (NAME): Say "system reference manuals" rather than + "on-line reference manuals". + * manual/intro.me (Introduction): Say "information" rather than "online + information". + * manual/man_db.me: Say "manual page system" rather than "online manual + page system". + + * man/man1/lexgrog.man1 (EXAMPLES): Update examples quoting man(1)'s + description. + * manual/db.me (Example database): Likewise. + * manual/intro.me (Introduction): Likewise. + * src/tests/man-mandatory-manpath: Update test quoting man(1)'s + description. + +2019-09-08 Colin Watson + + Tidy up formatting of Wilf's name + + Based on similar changes elsewhere by Bjarni Ingi Gislason. + + * man/man1/lexgrog.man1 (AUTHOR): Protect "." with "\&" if it is + followed by a space and does not mean the end of a sentence. + * man/man1/manpath.man1 (AUTHOR): Likewise. + * man/man1/whatis.man1 (AUTHOR): Likewise. + * man/man1/zsoelim.man1 (AUTHOR): Likewise. + * man/man8/accessdb.man8 (AUTHOR): Likewise. + * man/man8/catman.man8 (AUTHOR): Likewise. + * man/man8/mandb.man8 (AUTHOR): Likewise. + +2019-09-08 Bjarni Ingi Gislason + + manpath(1): Correct some typographic mistakes + + Fixes Debian bug #927452. + + * man/man1/manpath.man1 (DESCRIPTION): Use \(en for a dash where + appropriate. + (OPTIONS): Change .BR to .B if there is only one argument. + +2019-09-08 Bjarni Ingi Gislason + + apropos(1): Minor typographic changes + + Fixes Debian bug #892421. + + * man/man1/apropos.man1 (DESCRIPTION): Use "\e" to print the escape + character instead of "\\" (which is interpreted in copy mode). + (OPTIONS): Change .BR to .B if there is only one argument. + (FILES): Add a space around "|" to increase readability. + (AUTHOR): Protect "." with "\&" if it is followed by a space and does + not mean the end of a sentence. + +2019-09-08 Colin Watson + + Apply italic corrections + + Partly based on suggestions from Bjarni Ingi Gislason in Debian + bug #892421, although I had to take a slightly different approach to + avoid confusing po4a. + + * man/man1/apropos.man1 (OPTIONS): Apply italic corrections to + descriptions of --sections and --systems. Simplify three-font handling + for --systems. + * man/man1/man.man1 (Finding manual pages): Likewise. + * man/man1/whatis.man1 (OPTIONS): Likewise. + * man/man1/manpath.man1 (OPTIONS): Apply italic corrections to + description of --systems, and simplify three-font handling. + +2019-09-07 Colin Watson + + man(1): Adjust description of section 5 + + * man/man1/man.man1 (DESCRIPTION): Add a comma before "e.g.". + +2019-09-07 Bjarni Ingi Gislason + + man(1): Minor typographic changes + + Fixes Debian bug #892230. + + * man/man1/man.man1 (DESCRIPTION, HISTORY): Protect "." with "\&" if it + is followed by a space and does not mean the end of a sentence. + (EXAMPLES): Use a macro to change to the italic font instead of \fI if + possible. The macros have the italic corrections. + (EXAMPLES, Controlling formatted output, Getting help, SEE ALSO): Change + .BR/.IR to .B/.I if there is only one argument, or else separate the + second argument from the first if needed. + (DEFAULTS): Begin each sentence on a new line. + (FILES): Add a space around "|" to increase readability. + +2019-09-07 Colin Watson + + Make long lines in man(1) less likely + + Fixes part of Debian bug #892230. + + * man/man1/man.man1 (DESCRIPTION, ENVIRONMENT): Put the expansion of + %sections% on its own line. + +2019-09-07 Colin Watson + + Escape %troff% expansion correctly in manual pages + + Fixes part of Debian bug #892230. + + * configure.ac: Substitute troff_as_troff_input, which is the same as + troff but with suitable escaping so that "groff -mandoc" turns into + "groff \-mandoc". + * man/replace.sin.in (%troff%): Substitute @troff_as_troff_input@ rather + than @troff@. + +2019-09-07 Colin Watson + + Remove trailing whitespace from manual pages + + * man/man1/apropos.man1, man/man1/lexgrog.man1, man/man1/man.man1, + man/man1/manpath.man1, man/man1/whatis.man1, man/man1/zsoelim.man1, + man/man5/manpath.man5, man/man8/accessdb.man8, man/man8/catman.man8, + man/man8/mandb.man8: Remove trailing whitespace. + +2019-09-07 Sebastian Rasmussen + + Fix trivial typo in man manpage + + Fixes Savannah bug #48663. + + * man/man1/man.man1: an -> and. + +2019-09-07 Colin Watson + + Remove stray words from man(1) + + Reported by Bjarni Ingi Gislason. Fixes Debian bug #939599. + + * man/man1/man.man1 (DEFAULTS): Remove two stray words from the + description of how the pager is specified. + +2019-09-05 Colin Watson + + Adjust encoding declarations when recoding + + * lib/encodings.c (check_preprocessor_encoding): Return a modified + encoding declaration in *modified_line if the new to_encoding and + modified_line parameters are non-NULL. + * lib/encodings.h (check_preprocessor_encoding): Update prototype. + * src/man.c (make_roff_command): Pass NULL as to_encoding and + modified_line arguments to check_preprocessor_encoding. + * src/manconv.c (manconv): Output a modified encoding declaration if + necessary. + * src/tests/manconv-coding-tags: Adjust for new expected output. Add a + test for the case where the coding tag matches the target encoding. + * src/tests/manconv-odd-combinations: Adjust for new expected output. + * NEWS: Document this. + +2019-09-05 Colin Watson + + Give test cases more meaningful names + + * src/tests/lexgrog-1: Rename to ... + * src/tests/lexgrog-basic: ... this. + * src/tests/lexgrog-2: Rename to ... + * src/tests/lexgrog-multiple-whatis: ... this. + * src/tests/lexgrog-3: Rename to ... + * src/tests/lexgrog-backslash-dash-rhs: ... this. + * src/tests/man-1: Rename to ... + * src/tests/man-symlinks-with-matching-names: ... this. + * src/tests/man-10: Rename to ... + * src/tests/man-deleted-directory: ... this. + * src/tests/man-11: Rename to ... + * src/tests/man-suffixed-extension: ... this. + * src/tests/man-2: Rename to ... + * src/tests/man-executable-page-on-path: ... this. + * src/tests/man-3: Rename to ... + * src/tests/man-exact-section-matches: ... this. + * src/tests/man-4: Rename to ... + * src/tests/man-mandatory-manpath: ... this. + * src/tests/man-5: Rename to ... + * src/tests/man-so-links-same-section: ... this. + * src/tests/man-6: Rename to ... + * src/tests/man-missing-locales: ... this. + * src/tests/man-7: Rename to ... + * src/tests/man-invalid-db-entry: ... this. + * src/tests/man-8: Rename to ... + * src/tests/man-language-specific-requests: ... this. + * src/tests/man-9: Rename to ... + * src/tests/man-override-dir: ... this. + * src/tests/manconv-1: Rename to ... + * src/tests/manconv-coding-tags: ... this. + * src/tests/manconv-2: Rename to ... + * src/tests/manconv-odd-combinations: ... this. + * src/tests/manconv-3: Rename to ... + * src/tests/manconv-incomplete-char-at-eof: ... this. + * src/tests/mandb-1: Rename to ... + * src/tests/mandb-basic: ... this. + * src/tests/mandb-2: Rename to ... + * src/tests/mandb-regular-file-symlink-changes: ... this. + * src/tests/mandb-3: Rename to ... + * src/tests/mandb-whatis-broken-link-changes: ... this. + * src/tests/mandb-4: Rename to ... + * src/tests/mandb-symlink-beats-whatis-ref: ... this. + * src/tests/mandb-5: Rename to ... + * src/tests/mandb-empty-page: ... this. + * src/tests/mandb-6: Rename to ... + * src/tests/mandb-bogus-symlink: ... this. + * src/tests/mandb-7: Rename to ... + * src/tests/mandb-cachedir-tag: ... this. + * src/tests/whatis-1: Rename to ... + * src/tests/whatis-path-to-executable: ... this. + * src/tests/zsoelim-1: Rename to ... + * src/tests/zsoelim-so-includes: ... this. + * src/tests/Makefile.am (ALL_TESTS): Update. + +2019-09-01 Colin Watson + + Remove unnecessary PP_COOKIE conditionals + + PP_COOKIE is always defined, so there's no need for #ifdefs. + + * lib/encodings.c (check_preprocessor_encoding): Remove PP_COOKIE + conditional. + * src/man.c (get_preprocessors_from_file): Likewise. + * src/zsoelim.l (zsoelim_parse_file): Likewise. + +2019-08-31 Colin Watson + + Remove ability to undefine COMP_SRC + + This was a minor optimisation that wasn't worth the extra code + complexity. + + * configure.ac (COMP_SRC): Remove. + * include/comp_src.h.in: Remove COMP_SRC conditional. comp_list will + simply contain only the terminal entry if no compressors are configured. + * include/manconfig.h.in: Remove COMP_SRC conditional and comment. + * manual/comp.me (Compressed manual pages): Remove documentation of + COMP_SRC; explain that support depends on the decompressors available at + configure time. + * src/compression.c: Remove COMP_SRC conditional. + (comp_info): Only do the HP-UX check if gunzip is available. + * src/filenames.c (make_filename): Remove parenthetical comment about + COMP_SRC. + (filename_info): Remove COMP_SRC conditionals. + * src/man.c (convert_name): Likewise. + * src/straycats.c (check_for_stray): Likewise. + * src/ult_src.c (ult_src): Likewise. + * NEWS: Document this. + +2019-08-31 Colin Watson + + Improve list iteration helper + + * lib/glcontainers.h (GL_LIST_FOREACH_START): Capture the gl_list_node_t + in each loop iteration. + * src/descriptions_store.c (store_descriptions): Simplify detection of + the last loop iteration. + * src/manconv.c (manconv): Likewise. + * src/manconv_client.c (add_manconv): Likewise. + * src/manp.c (create_pathlist): Simplify manual loop iteration that can + now be expressed using GL_LIST_FOREACH_START/GL_LIST_FOREACH_END. + Simplify detection of the first loop iteration when emitting the final + search path as debugging information. + +2019-08-30 Colin Watson + + Improve data types in manconv + + * src/manconv.c (try_iconv): Change "last" parameter type to bool. + Change types of "to_utf8" and "ignore_errors" to bool. + (manconv): Convert "from" to gl_list. + * src/manconv.h (manconv): Update prototype. + * src/manconv_client.h (struct manconv_codes): Convert "from" to + gl_list. + (free_manconv_codes, add_manconv): Convert "codes->from" to gl_list. + * src/manconv_main.c (from_code, split_codes, parse_opt, main): Convert + to gl_list. + +2019-08-26 Colin Watson + + Release man-db 2.8.7 + +2019-08-26 Takeshi Hamasaki + + Update Japanese translation + + * po/ja.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2019-08-26 Colin Watson + + Order results manually for NDBM as well as GDBM + + Commit 3a753221a3dddaf4870a86a4dca4771ed2cd80b3 in 2003 (!) worked + around the fact that GDBM's firstkey/nextkey interface doesn't return + ordered results. However, at least when using GDBM's NDBM compatibility + interface, this may be true for NDBM too. Extend the manual result + ordering code to cover both of these backends. + + * libdb/db_gdbm.c (parent_keys, datum_compare, datum_equals, datum_hash, + datum_free, empty_datum, man_gdbm_firstkey, man_gdbm_nextkey, + man_gdbm_close): Move to ... + * libdb/db_xdbm.c (parent_keys, datum_compare, datum_equals, datum_hash, + datum_free, empty_datum, man_xdbm_firstkey, man_xdbm_nextkey, + man_xdbm_close): ... here (new file). + * libdb/db_xdbm.h: New file. + * libdb/db_gdbm.c (unsorted_firstkey, unsorted_nextkey, raw_close): New + functions, wrapping gdbm_firstkey, gdbm_nextkey, and gdbm_close + respectively. + (man_gdbm_firstkey, man_gdbm_nextkey, man_gdbm_close): Add GDBM-specific + wrappers for the generic man_xdbm_* functions. + * libdb/db_ndbm.c (man_ndbm_close): Move NDBM-specific code ... + (raw_close): ... here. + (unsorted_firstkey, unsorted_nextkey): New functions, wrapping + dbm_firstkey and dbm_nextkey respectively. + (man_ndbm_close, man_ndbm_firstkey, man_ndbm_nextkey): Add NDBM-specific + wrappers for the generic man_xdbm_* functions. + * libdb/mydbm.h (man_ndbm_firstkey, man_ndbm_nextkey): Add prototypes. + (MYDBM_FIRSTKEY) [NDBM]: Rewrite in terms of man_ndbm_firstkey. + (MYDBM_NEXTKEY) [NDBM]: Rewrite in terms of man_ndbm_nextkey. + * libdb/Makefile.am (libmandb_la_SOURCES): Add db_xdbm.c and db_xdbm.h. + * NEWS: Document this. + +2019-08-25 Colin Watson + + Enable many more GCC warnings + + * bootstrap.conf (gnulib_modules): Add manywarnings. + * configure.ac: Add gl_MANYWARN_ALL_GCC, with some refinements to + disable -Wsystem-headers and -Wmissing-field-initializers. Define + GNULIB_NO_VLA=1 to avoid tripping over -Wvla. + * src/accessdb.c (help_filter): Disable -Wformat-nonliteral around this + function. + * src/man.c (help_filter): Likewise. + * src/check_mandirs.c (gripe_rwopen_failed, update_db_time): Factor out + EAGAIN || EWOULDBLOCK check to ... + (is_eagain): ... here, with -Wlogical-op disabled. + * src/lexgrog.l, src/zsoelim.l: Disable -Wsuggest-attribute=malloc, + -Wsuggest-attribute=pure, and -Wunused-macros. + +2019-08-25 Colin Watson + + Pacify gcc -Wnull-dereference + + * src/accessdb.c (main): Add an assertion to help the compiler prove + that dbf is non-NULL. (It doesn't know that error (FATAL, ...) is + non-returning.) + +2019-08-25 Colin Watson + + Add several function attributes suggested by GCC + + * lib/debug.c (vdebug): Mark first argument as a printf format string. + * lib/encodings.c (get_page_encoding): Mark as malloc-like. + (is_roff_device, get_output_encoding, get_less_charset, + get_jless_charset): Mark as pure. + * lib/glcontainers.c (string_equals, string_hash): Mark as pure. + * lib/security.c (running_setuid): Mark as pure. + * lib/util.c (trim_spaces): Mark as malloc-like. + * libdb/db_lookup.c (dash_if_unset): Mark as const. + * libdb/db_store.c (compare_ids): Mark as const. + * src/whatis.c (match): Mark as pure. + +2019-08-25 Colin Watson + + Fix some printf formats + + * libdb/db_lookup.c (list_extensions): Format the return value of + gl_list_size using %zu, not %zd. + * src/catman.c (add_arg): Format the return values of MYDBM_DSIZE and + strlen using %zu, not %zd. + (parse_for_sec): Format ARG_MAX - arg_size using %zu, not %zd. + * src/man.c (main): Format ruid and euid using %lu, not %d (cast to + unsigned long since POSIX only says that uid_t is an integer type). + * src/manp.c (describe_flag): Format flag using %u, not %d. + +2019-08-25 Colin Watson + + Remove several unused macros + + * libdb/db_store.c (_): Remove. + * src/compression.c (_): Likewise. + * src/globbing_test.c (_): Likewise. + * src/zsoelim_main.c (_): Likewise. + +2019-08-25 Colin Watson + + Make a couple of functions static + + * lib/orderfiles.c (compare_physical_offsets): Make static. + * src/descriptions.c (page_description_free): Likewise. + +2019-08-25 Colin Watson + + Move declaration of _nl_msg_cat_cntr to top level + + gcc -Wnested-externs warns when it encounters this declaration within a + function. + + * include/manconfig.h.in (locale_changed): Move _nl_msg_cat_cntr + declaration to the top level. + +2019-08-25 Colin Watson + + Add some missing includes + + * lib/linelength.c: Include "linelength.h". + * lib/orderfiles.c: Include "orderfiles.h". + +2019-08-23 Colin Watson + + Simplify some GCC attribute handling + + * lib/orderfiles.c (order_files) [!HAVE_LINUX_FIEMAP_H && + !HAVE_POSIX_FADVISE]: Use _GL_UNUSED rather than ATTRIBUTE_UNUSED. + * lib/sandbox.c (_sandbox_load) [!HAVE_LIBSECCOMP]: Likewise. + * lib/security.c (drop_privs): Likewise. + * src/accessdb.c (help_filter): Likewise. + * src/check_mandirs.c (chown_if_possible): Likewise. + * src/decompress.c (decompress_zlib): Likewise. + * src/lexgrog_test.c (help_filter): Likewise. + * src/man.c (help_filter, squeeze_blank_lines, disable_hyphenation, + disable_justification): Likewise. + * src/manconv.c (manconv): Likewise. + * src/manp.c (free_config_file): Likewise. + * src/tests/fspause.c (main): Likewise. + * src/whatis.c (help_filter): Likewise. + * src/zsoelim_main.c (parse_opt): Likewise. + * include/manconfig.h.in (ATTRIBUTE_UNUSED): Remove in favour of the + shorter _GL_UNUSED. + (ATTRIBUTE_MALLOC): Remove; it was unused. + +2019-08-23 Colin Watson + + Use C11/Gnulib's _Noreturn + + * lib/cleanup.c (sighandler): Declare as _Noreturn. + * src/man.c (gripe_converting_name): Use _Noreturn rather than + ATTRIBUTE_NORETURN. + * include/manconfig.h.in (ATTRIBUTE_NORETURN): Remove. + +2019-08-23 Colin Watson + + Update to Gnulib 20190821 + +2019-08-23 Colin Watson + + Pass database file name in function parameters + + Storing it in a global variable with an unresolved symbol from libmandb + was never very clean, and caused linking complications on some + platforms. + + Fixes Savannah bug #56734. + + * libdb/mydbm.h (database): Remove external symbol. + * src/accessdb.c: Remove obsolete comment. + * src/catman.c (database): Remove global variable. + (parse_for_sec): Add database parameter. Update all callers. + (main): Declare database locally. + * src/check_mandirs.c (gripe_rwopen_failed, testmandirs, update_db_time, + create_db, update_db, purge_missing): Add database parameter. Update + all callers. + * src/check_mandirs.h (create_db, update_db, purge_missing): Update + prototypes. + * src/mandb.c (database): Remove global variable. + (update_one_file, update_db_wrapper): Add database parameter. Update + all callers. + (mandb, process_manpath): Declare database locally. + * src/straycats.c (straycats): Add database parameter. Update all + callers. + * src/whatis.c (database): Remove global variable. + (search): Declare database locally. + * include/manconfig.h.in (straycats): Update prototype. + * NEWS: Document this. + +2019-08-23 Colin Watson + + Use MYDBM_FILE->name for error messages + + We previously used the global "database" variable, but we were either + also passing a MYDBM_FILE around already or could easily do so, and it's + cleaner to get the file name from there now that it's consistently + available on all backends. + + * libdb/db_lookup.c (gripe_corrupt_data): Add dbf parameter. Get file + name from dbf->name rather than from the global database variable. + Update all callers. + (gripe_replace_key, split_data, split_content): Add dbf parameter. + Update all callers. + (dblookup_pattern): Get file name from dbf->name rather than from the + global database variable. + * libdb/db_ver.c (dbver_rd, dbver_wr): Get file name from dbfile->name + rather than from the global database variable. + * libdb/db_storage.h (split_content, gripe_corrupt_data, + gripe_replace_key): Update prototypes. + * src/check_mandirs.c (sanity_check_db): Get file name from dbf->name + rather than from the global database variable. + * src/whatis.c (do_apropos): Likewise. + +2019-08-23 Colin Watson + + Store database file name alongside its handle + + The GDBM backend already did things this way, but it's convenient to do + it the same way for all backends. + + Rename libmandb's various backend-specific functions to be uniformly + man__. In the cases of btree and ndbm there was + already no clash with the libraries they depend on, but this makes them + match the gdbm backend. + + * libdb/db_btree.c (btree_close): Rename to ... + (man_btree_close): ... this. + (btree_flopen): Rename to ... + (man_btree_open): ... this. Wrap the returned file handle in a + man_btree_wrapper structure that remembers the file name. + (btree_replace): Rename to ... + (man_btree_replace): ... this. + (btree_insert): Rename to ... + (man_btree_insert): ... this. + (btree_fetch): Rename to ... + (man_btree_fetch): ... this. + (btree_exists): Rename to ... + (man_btree_exists): ... this. + (btree_findkey): Rename to ... + (man_btree_findkey): ... this. + (btree_firstkey): Rename to ... + (man_btree_firstkey): ... this. + (btree_nextkey): Rename to ... + (man_btree_nextkey): ... this. + (btree_nextkeydata): Rename to ... + (man_btree_nextkeydata): ... this. + (btree_get_time): Rename to ... + (man_btree_get_time): ... this. + (btree_set_time): Rename to ... + (man_btree_set_time): ... this. + Update all prototypes and callers for all renames. + (man_btree_close, man_btree_replace, man_btree_insert, man_btree_fetch, + man_btree_exists, man_btree_findkey, man_btree_firstkey, + man_btree_nextkey, man_btree_nextkeydata, man_btree_get_time, + man_btree_set_time): Take man_btree_wrapper parameter rather than DB *. + Update all callers. + + * libdb/db_ndbm.c (ndbm_flclose): Rename to ... + (man_ndbm_close): ... this. + (ndbm_flopen): Rename to ... + (man_ndbm_open): ... this. Copy the given file name before passing it + to dbm_open, since at least GDBM's compatibility implementation declares + that parameter as non-const. Wrap the returned file handle in a + man_ndbm_wrapper structure that remembers the file name. + (ndbm_get_time): Rename to ... + (man_ndbm_get_time): ... this. + (ndbm_set_time): Rename to ... + (man_ndbm_set_time): ... this. + Update all prototypes and callers for all renames. + (man_ndbm_close, man_ndbm_get_time, man_ndbm_set_time): Take + man_ndbm_wrapper parameter rather than DBM *. Update all callers. + + * libdb/mydbm.h (man_ndbm_wrapper): New structure. + (MYDBM_FILE) [NDBM]: Change to man_ndbm_wrapper. + (man_btree_wrapper): New structure. + (MYDBM_FILE) [BTREE]: Change to man_btree_wrapper. + + * libdb/db_lookup.c (gripe_lock): Constify filename parameter. + * libdb/db_storage.h (gripe_lock): Update prototype. + +2019-08-23 Colin Watson + + Recognise eo/ta/uk translations of the NAME section + + (Esperanto, Tamil, and Ukrainian.) + + * src/lexgrog.l (eo_name, ta_name, uk_name): Add. + * NEWS: Document this. + +2019-08-23 Colin Watson + + Remove unused sandbox variables + + We no longer need these, having moved decompression code out of libman. + + * src/accessdb.c, src/catman.c, src/globbing_test.c, src/manpath.c: + Remove "sandbox" global variables. + +2019-08-22 Colin Watson + + Remove unused linkage from whatis + + * src/Makefile.am (whatis_SOURCES): Remove manconv.c and manconv.h. + +2019-08-22 Colin Watson + + Move decompression code out of libman + + Fixes Savannah bug #56734. + + * configure.ac: Remove incorrect Darwin workaround. + * lib/decompress.c: Move to ... + * src/decompress.c: ... here. + * lib/decompress.h: Move to ... + * src/decompress.h: ... here. + * lib/Makefile.am (libman_la_SOURCES): Remove decompress.c and + decompress.h. + (libman_la_LIBADD): Remove $(LIBCOMPRESS). + * lib/README: Remove decompress.*. + * lib/encodings.c: Remove unused #include "decompress.h". + * src/Makefile.am (lexgrog_LDADD, man_LDADD, manconv_LDADD, mandb_LDADD, + zsoelim_LDADD): Add $(LIBCOMPRESS). + (lexgrog_SOURCES, man_SOURCES, manconv_SOURCES, mandb_SOURCES, + zsoelim_SOURCES): Add decompress.c and decompress.h. + * NEWS: Document this. + +2019-08-22 Colin Watson + + Squash warning in order_files stub + + * lib/orderfiles.c [!HAVE_LINUX_FIEMAP_H && !HAVE_POSIX_FADVISE]: Mark + dir and basenamesp arguments as unused. + +2019-08-22 Colin Watson + + Don't save cat pages if --nh/--nj is used + + Fixes Savannah bug #55731. + + * src/man.c (display): Disable cat pages if --no-hyphenation or + --no-justification is used, in effect defining those not to be part of + the canonical state. + * NEWS: Document this. + +2019-08-21 Colin Watson + + sandbox: Allow getrandom, used by Hardened Malloc + + Fixes Savannah bug #56767. + + * lib/sandbox.c (make_seccomp_filter): Allow getrandom. + * NEWS: Document this. + +2019-08-21 Colin Watson + + NEWS: Document EPERM change + + * NEWS: Document change from raising SIGSYS to returning EPERM. + +2019-08-21 Colin Watson + + sandbox: Reorganise using @system-service set + + systemd defines a @system-service set now which covers some of the ones + that were previously isolated here, so reorganise to take account of + that. No functional change. + + * lib/sandbox.c (make_seccomp_filter): Reorganise using systemd's new + @system-service set. + +2019-08-21 Colin Watson + + sandbox: Set default action to EPERM, not TRAP + + Returning EPERM rather than raising SIGSYS is no less secure, and it's + more likely that code injected via LD_PRELOAD will be able to recover + from this somehow. + + * lib/sandbox.c (make_seccomp_filter): Set default action to + SCMP_ACT_ERRNO (EPERM), not SCMP_ACT_TRAP. + +2019-08-14 Colin Watson + + sandbox: Allow sendmsg in the ESET case + + * lib/sandbox.c (make_seccomp_filter): If libesets_pac.so is preloaded, + then allow sendmsg. + * NEWS: Document this. + +2019-08-05 Colin Watson + + * Version: 2.8.6.1. + +2019-08-04 Colin Watson + + Fix missing memory copies in ult_src + + Fixes Debian bug #933802. + + * src/ult_src.c (ult_src): Copy strings before adding them to trace. + +2019-08-03 Colin Watson + + * Version: 2.8.6. + +2019-08-03 Colin Watson + + Update syscall lists from systemd bca5a0eacc + + * lib/sandbox.c (make_seccomp_filter): Add rseq (see + https://github.com/systemd/systemd/issues/12127). + +2019-05-02 Colin Watson + + Improve manual build portability slightly + + * manual/Makefile.am ($(MANUAL).pp, .pp.dvi, .pp.ps, .pp.tdvi, + .tdvi.tps, .pp.cat, .pp.html): Use "mv -f" rather than just "mv", since + Automake seems to prefer that for its own rules. + +2019-05-02 Colin Watson + + Make manual build more robust against failures + + Fixes Savannah bug #56254. + + * manual/Makefile.am ($(MANUAL).pp, .pp.dvi, .pp.ps, .pp.tdvi, + .tdvi.tps, .pp.cat, .pp.html): Write output to *.new files and rename + into place, so that failures are properly retried in future runs. + +2019-03-03 Colin Watson + + Avoid configure error message if nroff is broken + + * m4/man-gnu-nroff.m4 (MAN_PROG_GNU_NROFF): Adjust test arguments + slightly to avoid a spurious error message if nroff is sufficiently + broken that it doesn't produce numeric output for "\n(.g". + +2019-03-03 Colin Watson + + Fix warnings when configuring --without-libseccomp + + * lib/sandbox.c (_sandbox_load): Mark sandbox and permissive parameters + unused when HAVE_LIBSECCOMP is undefined, to avoid warnings from "gcc + -Wunused-parameter". + +2019-03-03 Colin Watson + + Add configure option to disable building manual + + * m4/man-arg-manual.m4: New file. + * configure.ac: Add MAN_ARG_MANUAL. + * manual/Makefile.am: Perform most rules only if BUILD_MANUAL is true. + * manual/intro.me (Arguments to configure): Add --disable-manual. + * README (Non-generic arguments to configure): Update. + * NEWS: Document this. + +2019-03-03 Colin Watson + + * NEWS: Document container type changes. + +2019-02-05 Colin Watson + + Add some missing entries to lib/README + + * lib/README: Add glcontainers.*, orderfiles.*, and sandbox.*. + +2019-02-05 Colin Watson + + Remove pipeline.* from lib/README + + It's been a separate library since 2010. + + * lib/README: Remove pipeline.*. + +2019-02-05 Colin Watson + + Inline lower into name_to_key + + With only one remaining user, it wasn't pulling its weight. + + * libdb/db_lookup.c (name_to_key): Inline the implementation of lower. + * lib/Makefile.am (libman_la_SOURCES): Remove lower.c and lower.h. + * lib/README: Remove lower.*. + * lib/lower.c, lib/lower.h: Remove. + +2019-02-05 Colin Watson + + Simplify case-insensitivity in word_fnmatch + + Using FNM_CASEFOLD saves us from having to lower-case the pattern + manually, and it also fixes the behaviour of "apropos -w" when given a + non-lower-case pattern. + + * lib/wordfnmatch.c (word_fnmatch): Use isalpha and FNM_CASEFOLD rather + than manually lower-casing string or expecting pattern to have already + been lower-cased. + * NEWS: Document this. + +2019-02-05 Colin Watson + + Simplify case-insensitive comparisons in whatis + + We can just use strcasecmp and similar functions rather than + lower-casing comparands manually. + + In some corner cases this may result in matches that would not + previously have been returned (e.g. "whatis -w" with a non-lower-case + pattern). + + * src/whatis.c (parse_name): Use strcasecmp and FNM_CASEFOLD rather than + manually lower-casing dbname or expecting pages to have already been + lower-cased. + (match): Use strcasestr and isalpha rather than manually lower-casing + whatis or expecting page to have already been lower-cased. + (parse_whatis): Remove lowpages parameter; pass pages directly to match + instead. + (do_apropos): Remove lowpages; parse_name and parse_whatis no longer + need it. + +2019-02-04 Colin Watson + + Import Gnulib's strcase module + + We're already using strcasecmp and strncasecmp. + + * bootstrap.conf (gnulib_modules): Add strcase. + +2019-02-04 Colin Watson + + Add missing #include + + * src/straycats.c: Include . + +2019-02-04 Colin Watson + + Use bool for boolean command-line options + + * include/manconfig.h.in (debug_level): Change type to bool. Update all + definitions and users. + * lib/encodings.c (get_roff_encoding): Change type of "found" to bool. + * libdb/db_lookup.c (dblookup_all, dblookup_exact): Change "match_case" + parameter type to bool. Update all callers. + (dblookup_pattern): Change "match_case", "pattern_regex", and + "try_descriptions" parameter types to bool. Update all callers. + * libdb/db_storage.h (dblookup_all, dblookup_exact, dblookup_pattern): + Update prototypes. + + * src/descriptions_store.c (store_descriptions): Change types of + "found_real_page" and "found_external" to bool. + * src/lexgrog_test.c (main): Change types of "some_failed" and "found" + to bool. + * src/man.c (parse_opt): Change types of "apropos" and "whatis" to bool. + (add_roff_line_length): Change "save_cat_p" parameter type to bool *. + Update all callers. + (make_browser): Change "found_percent_s" type to bool. + (display): Change "display_to_stdout" type to bool. + (try_db): Change "found_stale" type to bool. + (local_man_loop): Change "local_mf" type to bool. + (main): Change "found_subpage" type to bool. + * src/manp.c (read_config_file): Change "optional" parameter type to + bool. Update all callers. + * src/manp.h (read_config_file): Update prototype. + + * src/check_mandirs.c (opt_test, force_rescan): Change types to bool. + Update all users. + * src/globbing_test.c (match_case, regex_opt, wildcard): Likewise. + * src/lexgrog_test.c (parse_man, parse_cat, show_whatis, show_filters): + Likewise. + * src/man.c (disable_cache, troff, global_apropos, print_where, + print_where_cat, catman, local_man_file, findall, update, match_case, + regex_opt, wildcard, names_only, no_hyphenation, no_justification, + subpages, ascii, save_cat, ditroff, htmlout): Likewise. + * src/mandb.c (opt_test, force_rescan, check_for_strays, purge, user, + create): Likewise. + * src/manp.c (disable_cache): Likewise. + * src/manpath.c (cat, global): Likewise. + * src/whatis.c (am_apropos, regex_opt, exact, wildcard, require_all, + long_output): Likewise. + +2019-02-04 Colin Watson + + Port roff_warnings to gl_list + + * src/man.c (struct string_llist): Remove. + (parse_opt, make_roff_command): Convert roff_warnings to gl_list. + (main): Initialise roff_warnings. + +2019-02-04 Colin Watson + + Port parse_descriptions to gl_list + + * src/descriptions.c (free_descriptions): Rename to ... + (page_description_free): ... this. Adjust for gl_list's expected + interface. + (parse_descriptions): Convert to gl_list. Return a zero-length list if + whatis is NULL, where previously we returned NULL. + * src/descriptions_store.c (store_descriptions): Convert descs to + gl_list. + * src/descriptions.h (struct page_description): Remove next member. + (parse_descriptions, store_descriptions): Update prototypes. + (free_descriptions): Remove prototype. + * src/lexgrog_test.c (main): Convert descs to gl_list. + * src/straycats.c (check_for_stray): Likewise. Remove conditional, + since parse_descriptions now never returns NULL. + +2019-02-04 Colin Watson + + Improve sandbox_free + + * lib/sandbox.c (sandbox_free): Free sandbox->permissive_ctx too. + +2019-02-04 Colin Watson + + Free seccomp sandbox before normal exit + + This makes valgrind slightly happier. + + * src/lexgrog_test.c (main): Call seccomp_free before exiting. + * src/man.c (main): Likewise. + * src/manconv_main.c (main): Likewise. + * src/mandb.c (main): Likewise. + * src/whatis.c (main): Likewise. + * src/zsoelim_main.c (main): Likewise. + +2019-02-04 Colin Watson + + Port dblookup to gl_list + + * libdb/db_lookup.c (free_mandata_struct): Only free a single structure, + rather than following list pointers. + (split_content): Stop initialising pinfo->next. + (dblookup, dblookup_pattern): Convert to gl_list. Return a zero-length + list to indicate no matches, where previously we returned NULL. + (dblookup_exact): Adjust for changes in dblookup. This function + continues to return a single element rather than a list, since that's + all that its callers need. + * libdb/db_storage.h (struct mandata): Remove next member. + (dblookup_all, dblookup_pattern): Update prototypes. + * src/man.c (db_map_value_free): New function. + (try_db): Convert dblookup_pattern/dblookup_all cache to store gl_lists + or NULL. NULL now means a database open failure and a zero-length list + means no matches in an existing database, rather than vice versa. + * src/whatis.c (do_whatis_section): Convert to gl_list. + +2019-02-03 Colin Watson + + Eliminate #ifdef in straycats.c + + * src/straycats.c (check_for_stray): Replace hand-rolled + FAVOUR_STRAYCATS conditional with an equivalent compare_ids call. + +2019-02-03 Colin Watson + + Add helper functions for common container cases + + * lib/glcontainers.c (new_string_list, new_string_map, new_string_set): + New functions. + * lib/glcontainers.h (new_string_list, new_string_map, new_string_set): + Add prototypes. + + * lib/orderfiles.c (order_files): Use new_string_list. + * src/check_mandirs.c (test_manfile, add_dir_entries): Likewise. + * src/globbing.c (look_for_file, expand_path): Likewise. + * src/man.c (get_section_list): Likewise. + * src/manp.c (get_scetions, get_manpath_from_path, create_pathlist): + Likewise. + * src/straycats.c (check_for_stray): Likewise. + + * libdb/db_gdbm.c (man_gdbm_firstkey): Use new_string_map. + * src/check_mandirs.c (test_manfile): Likewise. + * src/globbing.c (update_directory_cache): Likewise. + * src/man.c (try_db): Likewise. + * src/mandb.c (main): Likewise. + + * libdb/db_btree.c (btree_findkey): Use new_string_set. + * src/whatis.c (main): Likewise. + +2019-02-03 Colin Watson + + Replace hashtable with Gnulib containers + + Since we're using Gnulib's container types anyway, we might as well + reduce the maintenance burden of local code, especially since the result + tends to be more concise. + + * bootstrap.conf (gnulib_modules): Add hash-map, hash-set, xmap, and + xset. + * lib/glcontainers.h (GL_MAP_FOREACH_START, GL_MAP_FOREACH_END): New + macros. + + * lib/orderfiles.c (compare_physical_offsets, order_files): Convert + physical_offsets from a hashtable to a gl_map. + * libdb/db_btree.c (loop_check_hash): Rename to ... + (loop_check): ... this. + (btree_findkey): Convert loop_check from a hashtable to a gl_set. + * libdb/db_gdbm.c (parent_sortkey_hash): Rename to ... + (parent_keys: ... this. + (struct sortkey, parent_sortkey_hashtable_free): Remove. + (sortkey_hashtable_free): Rename to ... + (datum_free): ... this. Adjust for gl_list's expected interface. + (sortkey_compare): Rename to ... + (datum_compare): ... this. Adjust for gl_list's expected interface. + (datum_equals, datum_hash): New functions. + (man_gdbm_firstkey, man_gdbm_nextkey, man_gdbm_close): Convert + parent_keys from a hashtable to a gl_map, and convert its values from + hashtables with manual linking to gl_lists using a hash for fast lookup + by key. + * src/check_mandirs.c (whatis_hash): Rename to ... + (whatis_map): ... this. + (struct whatis_hashent): Rename to ... + (struct whatis): ... this. + (whatis_hashtable_free): Rename to ... + (whatis_free): ... this. Adjust for gl_map's expected interface. + (test_manfile): Convert whatis_map from a hashtable to a gl_map. + * src/globbing.c (struct dirent_hashent): Rename to ... + (struct dirent_names): ... this. + (dirent_hashtable_free): Rename to ... + (dirent_names_free): ... this. Adjust for gl_map's expected interface. + (dirent_hash): Rename to ... + (dirent_map): ... this. + (update_directory_cache): Convert dirent_map from a hashtable to a + gl_map. + * src/man.c (db_hash): Rename to ... + (db_map): ... this. + (db_hashtable_free): Remove. + (try_db, main): Convert db_map from a hashtable to a gl_map. + * src/mandb.c (process_manpath, tried_catdirs_free, purge_catdir, + purge_catdirs, main): Convert tried_catdirs from a hashtable to a + gl_map. + * src/whatis.c (display, main): Convert display_seen from a hashtable to + a gl_set. + + * lib/Makefile.am (libman_la_SOURCES): Remove hashtable.c and + hashtable.h. + * lib/README: Remove hashtable.*. + * lib/hashtable.c, lib/hashtable.h: Remove. + +2019-02-01 Colin Watson + + Port list_extensions to gl_list + + * libdb/db_lookup.c (name_ext_equals): New function. + (list_extensions, dblookup): Convert to gl_list. + * libdb/db_storage.h (struct name_ext): New structure. + (list_extensions): Update prototype. + * libdb/db_delete.c (dbdelete): Convert to gl_list. + +2019-01-31 Colin Watson + + Port ult_src tracing to gl_list + + * src/ult_src.c (ult_trace, free_ult_trace): Remove. + (ult_src): Convert trace handling to gl_list. + * src/ult_src.h (struct ult_trace): Remove. + (ult_src): Update prototype. + (free_ult_trace): Remove. + * src/descriptions_store.c (store_descriptions): Convert to gl_list. + * src/descriptions.h (store_descriptions): Update prototype. + * src/check_mandirs.c (struct whatis_hashent): Change type of trace to + gl_list_t. + (whatis_hashtable_free, test_manfile): Convert to gl_list. + +2019-01-30 Colin Watson + + Use bool in more places in whatis + + * src/whatis.c (use_grep, do_whatis, do_apropos): Change "found" + parameter type to bool *. Update all callers. + (any_set, all_set): Change "found_here" parameter type to bool *. + Update all callers. + (parse_name, parse_whatis): Change "found" and "found_here" parameter + types to bool *. Update all callers. + +2019-01-30 Colin Watson + + Port get_sections to gl_list + + * src/manp.c (get_sections): Convert to gl_list. + * src/manp.h (get_sections): Update prototype. + * src/man.c (is_section, compare_candidates, do_global_apropos, man, + get_section_list): Convert to gl_list. + (compare_candidates): Sort sections missing from section_list to the + end. + (main): Free section_list. + +2019-01-30 Colin Watson + + Use HTTPS URL for libpipeline + + * NEWS, docs/INSTALL.quick: Update libpipeline URL to + https://nongnu.org/libpipeline/. + +2019-01-29 Colin Watson + + Port expand_path to gl_list + + * src/globbing.c (expand_path): Convert to gl_list. + * src/globbing.h (expand_path): Update prototype. + * src/manp.c (def_path, add_dir_to_list, add_dir_to_path_list): Convert + to gl_list. + * src/ult_src.c (find_include): Likewise. + +2019-01-29 Colin Watson + + Fix failure to link libman using the Darwin linker + + Thanks to George Plymale II and John Gardner. + + * configure.ac: Add "-Wl,-flat_namespace,-undefined,suppress" to CFLAGS + on Darwin. + * NEWS: Document this. + +2019-01-29 Colin Watson + + Port order_files and look_for_file to gl_list + + This gets rid of some particularly awful allocation spaghetti in + src/globbing.c. + + * bootstrap.conf (gnulib_modules): Add rbtree-list. + * lib/orderfiles.c (compare_physical_offsets): Expect arguments to be + const char * rather than const char **. + (order_files): Convert to taking a gl_list_t as an input/output argument + rather than an array. In the HAVE_LINUX_FIEMAP_H case, we produce a new + sorted list. + * lib/orderfiles.h (order_files): Update prototype. + * src/globbing.c (clear_glob): Remove. + (match_in_directory): Convert to gl_list. Remove inter-call allocation + and cleanup machinery. + (look_for_file): Convert to gl_list. Remove glob_t cleanup machinery; + the caller is now responsible for freeing the returned list. + * src/globbing.h (look_for_file): Update prototype. + + * src/check_mandirs.c (add_dir_entries, count_glob_matches, + purge_normal): Convert to gl_list. + * src/straycats.c (check_for_stray): Likewise. + + * src/check_mandirs.c (purge_whatis, purge_missing): Convert to gl_list. + Free list returned by look_for_file. + * src/globbing_test.c (main): Likewise. + * src/man.c (try_section, do_global_apropos_section): Likewise. + * src/zsoelim.l (zsoelim_open_file): Likewise. + +2019-01-29 Colin Watson + + Default to --without-systemd* on non-Linux systems + + systemd is unapologetically Linux-specific, so let's not require + non-Linux packages to explicitly turn this off. + + * m4/man-arg-systemdsystemunitdir (MAN_ARG_SYSTEMDSYSTEMUNITDIR): + Default to with_systemdsystemunitdir=no on non-Linux systems. + * m4/man-arg-systemdtmpfilesdir (MAN_ARG_SYSTEMDTMPFILESDIR): Default to + with_systemdtmpfilesdir=no on non-Linux systems. + +2019-01-27 Colin Watson + + Add --quiet to systemd mandb invocation + + Fixes Debian bug #920628. + + * init/systemd/man-db.service.in (ExecStart): Run mandb with --quiet. + * NEWS: Document this. + +2019-01-27 Colin Watson + + Use macros for common cases of list iteration + + * lib/glcontainers.h (GL_LIST_FOREACH_START, GL_LIST_FOREACH_END): New + macros. + * src/catman.c (main): Replace manual list iteration with equivalent + macros. + * src/man.c (do_global_apropos, locate_page_in_manpath): Likewise. + * src/mandb.c (main): Likewise. + * src/manp.c (get_config, print_list, get_sections, def_path, + get_manpath_from_path, create_pathlist, get_mandb_manpath, get_catpath, + is_global_mandir): Likewise. + * src/whatis.c (search): Likewise. + * src/zsoelim.l (zsoelim_open_file): Likewise. + +2019-01-27 Colin Watson + + Rename gl-container-helpers to glcontainers + + This is less annoying to type. + + * lib/gl-container-helpers.c: Rename to ... + * lib/glcontainers.c: ... this. + * lib/gl-container-helpers.h: Rename to ... + * lib/glcontainers.h: ... this. + * lib/Makefile.am (libman_la_SOURCES): Replace gl-container-helpers.c + and gl-container-helpers.h with glcontainers.c and glcontainers.h. + * src/manp.c: Update include. + +2019-01-27 Colin Watson + + Move Gnulib container helpers into common code + + * src/manp.c (string_equals, string_hash, string_free): Move to ... + * lib/gl-container-helpers.c (string_equals, string_hash, plain_free): + ... here (new file). + * lib/gl-container-helpers.h: New file. + * lib/Makefile.am (libman_la_SOURCES): Add gl-container-helpers.c and + gl-container-helpers.h. + +2019-01-26 Colin Watson + + Turn config flags into an enum + + * src/manp.c (enum config_flag): New enumeration. + (struct config_item, def_path, add_config, get_config, get_sections, + def_path): Use enum config_flag. + (describe_flag): New function. + (print_list): Describe flags rather than printing their integer value. + (add_def): Remove flag parameter; expect caller to pass the correct + config_def value instead. Make thing and config_def const. + (add_mandb_map): Remove flag parameter; expect caller to pass the + correct catdir value instead. + (add_to_dirlist): Update calls to add_mandb_map and add_def. + +2019-01-26 Colin Watson + + Port internal configuration storage to gl_list + + * bootstrap.conf (gnulib_modules): Add array-list. + * src/manp.c (struct list): Remove. + (struct config_item): New structure. + (config_item_free): New function. + (add_to_list): Rename to ... + (add_config): ... this. Convert to gl_list. Update all callers. + (get_from_list): Rename to ... + (get_config): ... this. Convert to gl_list. Update all callers. + (iterate_over_list): Remove. + (print_list, get_sections, free_config_file, def_path, + get_manpath_from_path, get_mandb_manpath, get_catpath, + is_global_mandir): Port config list handling to gl_list. + (add_to_dirlist): Rename config parameter to config_file. + (read_config_file): Create empty config list. Rename previous local + config variable to config_file. + +2019-01-26 Colin Watson + + Use Gnulib's lchown function + + Also remove lib/xchown.*; with only one call site, they don't pull their + weight over equivalent inline code. + + * bootstrap.conf (gnulib_modules): Add lchown. + * configure.ac (AC_CHECK_FUNCS): Remove check for lchown. + * lib/Makefile.am (libman_la_SOURCES): Remove xchown.c and xchown.h. + * src/check_mandirs.c (chown_if_possible): Always use lchown rather than + chown, and inline the error check. + + * po/POTFILES.in: Remove lib/xchown.c. + * po/man-db.pot, po/*.po: Update. + +2019-01-26 Colin Watson + + Simplify includes using Gnulib's fcntl module + + * bootstrap.conf (gnulib_modules): Add fcntl. + * configure.ac (AC_CHECK_HEADERS): Remove check for fcntl.h. + * libdb/db_btree.c, libdb/db_ndbm.c, libdb/mydbm.h, src/man.c: Include + unconditionally. + * src/man.c: Remove conditional definitions of R_OK and X_OK; Gnulib's + handles these. + +2019-01-26 Colin Watson + + Replace check_standard_fds with Gnulib's xstdopen + + * bootstrap.conf (gnulib_modules): Add xstdopen. + * src/man.c (check_standard_fds): Remove. + (main): Call xstdopen rather than check_standard_fds. + +2019-01-26 Colin Watson + + Update to Gnulib 20190124 + +2019-01-26 Colin Watson + + Use bool type where appropriate + + Now that we're using anyway due to gl_list (with Gnulib + providing if necessary), it makes sense to use it for our + own functions that have essentially boolean semantics. + + * lib/encodings.c (compatible_encodings, is_roff_device): Return bool. + * lib/pathsearch.c (pathsearch, pathsearch_executable, + directory_on_path): Likewise. + * lib/sandbox.c (search_ld_preload, can_load_seccomp): Likewise. + * lib/security.c (running_setuid): Likewise. + * lib/wordfnmatch.c (word_fnmatch): Likewise. Update all callers. + * src/check_mandirs.c (sanity_check_db): Likewise. + * src/man.c (duplicate_candidates): Likewise. + * src/manp.c (is_global_mandir): Likewise. Update all callers. + * src/whatis.c (suitable_manpath, match): Likewise. + (any_set, all_set): Likewise. Update all callers. + + * lib/encodings.h (is_roff_device): Update prototype. + * lib/pathsearch.h (pathsearch_executable, directory_on_path): Likewise. + * lib/security.h (running_setuid): Likewise. + * lib/wordfnmatch.h (word_fnmatch): Likewise. + * src/manp.h (is_global_mandir): Likewise. + + * src/mandb.c (mandb, process_manpath): Change global_manpath parameter + type to bool. + +2019-01-26 Colin Watson + + Note that some C99 runtime facilities may be used + + * docs/HACKING (Facilities and portability): Note that C99 runtime + facilities that are provided by Gnulib are OK. + +2019-01-26 Colin Watson + + Remove arbitrary limit on manpath size + + Fixes Savannah bug #50324. + + * bootstrap.conf (gnulib_modules): Add hash-pjw-bare, linkedhash-list, + stdbool, and xlist. + * include/manconfig.h.in (MAXDIRS): Remove. + + * src/manp.c (tmplist): Remove. + (string_equals, string_hash, string_free): New functions. + (gripe_overlong_list): Remove. + (insert_override_dir, get_manpath_from_path, add_expanded_dir_to_list, + add_dir_to_list, add_man_subdirs, add_dir_to_path_list, create_pathlist, + free_pathlist): Port manpath list handling to gl_list_t. + * src/catman.c (main): Likewise. + * src/man.c (do_global_apropos, local_man_loop, locate_page_in_manpath, + main): Likewise. + * src/mandb.c (main): Likewise. + * src/whatis.c (suitable_manpath, search, main): Likewise. + * src/zsoelim.l (<>, zsoelim_parse_file, zsoelim_open_file, + zsoelim_stdin, zsoelim_stdin_data_new): Likewise. + * src/zsoelim_main.c (main): Likewise. + + * src/manp.h (create_pathlist, free_pathlist): Update prototypes. + * src/zsoelim.h (zsoelim_open_file, zsoelim_parse_file, + zsoelim_stdin_data_new): Likewise. + + * NEWS: Document this. + +2019-01-26 Colin Watson + + * NEWS: Document previous commit. + +2019-01-26 Colin Watson + + Automatically add more man directories to manpath + + Will Starms reported that, if both ../man and ../share/man directories + (for example) exist relative to a directory on $PATH, then only the + first was considered. + + * src/manp.c (has_mandir): Rename to ... + (add_man_subdirs): ... this. Insert directories as they are found + rather than returning them, and continue even if some have been found. + (get_manpath_from_path): Update call to add_man_subdirs. + +2019-01-08 Colin Watson + + Recommend a distribution-independent bug tracker + + * README: Link to https://savannah.nongnu.org/bugs/?group=man-db for bug + reporting. + +2019-01-05 Colin Watson + + * Version: 2.8.5. + +2019-01-05 Colin Watson + + Upgrade to Gnulib 20190105 + + In line with Gnulib, we now require Autoconf 2.63 and Automake 1.11.2. + + * bootstrap: Sync to Gnulib d271f868a8df9bbec29049d01e056481b7a1a263. + * bootstrap.conf (GNULIB_REVISION): Set to + d271f868a8df9bbec29049d01e056481b7a1a263. + (buildreq): Bump required autoconf version to 2.63 and required automake + version to 1.11.2. + * configure.ac (AM_SILENT_RULES, AM_PROG_AR): Remove conditionals, which + were there for Automake 1.10 support. + (AC_PREREQ): Bump to 2.63. + * NEWS: Document this. + +2019-01-05 Colin Watson + + Use tar --sort=name if available + + * m4/man-tar-sort-name.m4: New file. + * configure.ac: Call MAN_TAR_SORT_NAME. + +2019-01-05 Colin Watson + + Fix distcheck following addition of systemd timer + + * Makefile.am (AM_DISTCHECK_CONFIGURE_FLAGS): Add + --with-systemdsystemunitdir=\$${prefix}/lib/systemd/system. + +2019-01-05 Colin Watson + + Fix distribution of man-db.timer + + Automake's "_DATA" primary defaults to "nodist_", not "dist_". + + * init/systemd/Makefile.am (systemdsystemunit_DATA): Rename to ... + (dist_systemdsystemunit_DATA): ... this. + (nodist_systemdsystemunit_DATA): Rename to ... + (systemdsystemunit_DATA): ... this. + (EXTRA_DIST): Add man-db.timer if INSTALL_SYSTEMD_TIMER is false. + +2019-01-05 Colin Watson + + sandbox: Work around Microsoft SCEP + + This is a proprietary antivirus program and I've only been able to guess + at how to handle it. Note that it is no longer supported by Microsoft + and so users should probably replace it with something else, but I still + want to minimise the number of support requests I get related to it. + + * lib/sandbox.c (make_seccomp_filter): If libscep_pac.so is preloaded, + then allow some system calls related to sockets and System V message + queues. + * NEWS: Document this. + +2018-12-24 Colin Watson + + Use (void *) 0 as a variadic sentinel + + NULL is formally incorrect here since the standard allows it to be an + integer constant expression. + + * lib/decompress.c (decompress_open, decompress_fdopen): Use (void *) + rather than NULL as a sentinel for variadic functions. + * libdb/db_delete.c (dbdelete): Likewise. + * src/catman.c (catman, parse_for_sec, main): Likewise. + * src/check_mandirs.c (add_dir_entries): Likewise. + * src/compression.c (comp_file): Likewise. + * src/filenames.c (make_filename): Likewise. + * src/globbing.c (look_for_file): Likewise. + * src/lexgrog.l (find_name): Likewise. + * src/man.c (do_extern, run_mandb, make_roff_command, make_browser, + setenv_less, add_output_iconv, make_display_command, tmp_cat_filename, + format_display_and_save, format_display, display_catman, display, + local_man_loop): Likewise. + * src/manconv_client.c (add_manconv): Likewise. + * src/manconv_main.c (parse_opt): Likewise. + * src/manp.c (pathappend, add_nls_manpaths, add_system_manpath, + add_dir_to_path_list, get_catpath): Likewise. + * src/straycats.c (check_for_stray, open_catdir, straycats): Likewise. + * src/whatis.c (use_grep, display): Likewise. + +2018-12-06 Colin Watson + + Honour --enable-cache-owner in systemd timer + + * init/systemd/Makefile.am (man-db.service): Substitute + @cache_top_owner@. + * init/systemd/man-db.service.in (ExecStart, User): Use + @cache_top_owner@ rather than hardcoding "man". + +2018-12-06 Colin Watson + + Improve systemd unit commentary + + * init/systemd/man-db.service.in (ExecStart): Add comment. + +2018-12-06 Colin Watson + + Allow disabling installation of systemd components + + * m4/man-arg-systemdtmpfilesdir.m4: Define an INSTALL_SYSTEMD_TMPFILES + Automake conditional (true unless --with-systemdtmpfilesdir=no). + * m4/man-arg-systemdsystemunitdir.m4: Define an INSTALL_SYSTEMD_TIMER + Automake conditional (true unless --with-systemdsystemunitdir=no). + * init/systemd/Makefile.am: Honour INSTALL_SYSTEMD_TMPFILES and + INSTALL_SYSTEMD_TIMER. + +2018-12-06 Colin Watson + + Ship a systemd timer for daily DB maintenance + + Thanks to Christian Göttsche. Fixes Debian bug #858022. + + * m4/man-arg-systemdsystemunitdir.m4: New file. + * configure.ac: Accept --with-systemdsystemunitdir option. + * init/systemd/Makefile.am (EXTRA_DIST): Add man-db.service.in. + (CLEANFILES): Add man-db.service. + (systemdsystemunit_DATA): Install man-db.timer. + (nodist_systemdsystemunit_DATA): Install man-db.service. + (man-db.service): New rule. + * init/systemd/man-db.service.in, init/systemd/man-db.timer: New files. + * .gitignore: Add init/systemd/man-db.service. + * NEWS: Document this. + +2018-11-14 Colin Watson + + Fix incorrect error message + + Reported by Julian Gilbey. Fixes Debian bug #913721. + + * src/man.c (check_standard_fds): Correct error message if stdout is not + open for writing (not "for reading", as previously claimed). + +2018-11-09 Colin Watson + + release.sh: Simplify Lex handling + + release.sh had a hack to ensure that flex-generated scanners are fresh + in release tarballs. This is more easily achieved by configuring with + --enable-maintainer-mode, which causes Automake to enable the Lex + rebuild rule. + + * release.sh: Configure with --enable-maintainer-mode; drop conditional + removals of src/lexgrog.c and src/zsoelim.c. + +2018-11-09 Colin Watson + + lexgrog: Fix handling of \- in RHS of NAME section + + Fixes Debian bug #913351. + + * src/lexgrog.l (MAN_NAME): Split into MAN_NAME (left-hand side) and + MAN_DESC (right-hand side). Most rules remain as before, except that \- + and similar are only handled specially in MAN_NAME and transition to + MAN_DESC, and rules that add a 0x11 marker (indicating the start of a + new whatis definition) transition to MAN_NAME. + (MAN_NAME_AT, MAN_NAME_BSX, MAN_NAME_BX, MAN_NAME_BX_RELEASE, + MAN_NAME_DQ, MAN_NAME_FX, MAN_NAME_NX, MAN_NAME_OX): Rename to + MAN_DESC_*. + (mdoc_text): Transition to MAN_DESC rather than MAN_NAME. + (newline_found): If adding 0x11, transition to MAN_NAME. + * src/tests/lexgrog-3: New file. + * src/tests/Makefile.am (ALL_TESTS): Add lexgrog-3. + * NEWS: Document this. + +2018-11-09 Colin Watson + + * NEWS: Document changes since 2.8.4. + +2018-11-09 Colin Watson + + lexgrog: Add test for multiple whatis definitions + + * src/tests/lexgrog-2: New file. + * src/tests/Makefile.am (ALL_TESTS): Add lexgrog-2. + +2018-11-09 Colin Watson + + lexgrog: Tidy up rules section + + No functional change. + + * src/lexgrog.l: Make more use of start condition scopes. Reindent + rules somewhat to make better use of vertical space. + +2018-11-03 Nikola Forró + + Fix several resource and memory leaks + + * lib/decompress.c (decompress_zlib): Fix fd leak if gzdopen fails. + * lib/encodings.c (find_charset_locale): Free locale if setlocale fails. + * src/man.c (make_roff_command): Free fmt_prog. + * src/mandb.c (process_manpath): Free catpath if manpath is not a + directory. + * src/whatis.c (do_apropos): Free found_here. + +2018-10-27 enolp + + Add Asturian translation + + * po/ast.po: New from Translation Project. + * po/LINGUAS: Add ast. + * man/THANKS: Add translator credit. + +2018-10-27 Pedro Albuquerque + + Update Portuguese manual page translation + + * man/po4a/po/pt.po: Update from Translation Project. + +2018-10-21 Colin Watson + + Add Portuguese manual page translation + + * man/po4a/po/pt.po: New from Translation Project (thanks, Pedro + Albuquerque). + * configure.ac (AC_CONFIG_FILES): Add man/pt/Makefile. + * man/LINGUAS.po4a: Add pt. + * man/Makefile.am (DIST_SUBDIRS): Add pt. + * man/pt/Makefile.am, man/pt/translator.add: New files. + * man/po4a/Makefile.am (POFILES): Add po/pt.po. + * man/po4a/po4a.cfg (po4a_langs): Add pt. + * man/THANKS: Add translator credit. + * .gitignore: Add man/pt/man1, man/pt/man5, and man/pt/man8. + +2018-10-21 Colin Watson + + Switch more language lists to one-per-line format + + * man/LINGUAS.po4a: Switch to one language code per line, so that we + have better diffs in future. + * man/Makefile.am (DIST_SUBDIRS): Likewise. + * man/po4a/cfg (po4a_langs): Likewise. + +2018-10-21 Pedro Albuquerque + + Add Portuguese translation + + * po/pt.po: New from Translation Project. + * po/LINGUAS: Add pt. + * man/THANKS: Add translator credit. + +2018-10-21 Colin Watson + + Switch po/LINGUAS to one-per-line format + + * po/LINGUAS: Switch to one language code per line, so that we have + better diffs in future. + +2018-10-21 Chen Qi + + man-arg-config-file: fix to use config_file + + * m4/man-arg-config-file.m4: Compute config_file_basename based on + config_file, not withval. + +2018-08-20 Colin Watson + + Fail to configure if flex is needed but missing + + Fixes Savannah bug #54541. + + * configure.ac: Issue an error if AC_PROG_LEX didn't find a lexer + generator and either src/lexgrog.c or src/zsoelim.c is missing (as may + be the case when building from a git clone rather than a released + tarball). + +2018-08-02 Colin Watson + + Fix warning from gcc -Wcast-function-type + + This exposed the fact that errors from unlink in the cleanup path were + previously ignored. We now issue a warning in the same way that + commit_tmp_cat does. + + * src/man.c (cleanup_unlink): New function. + (open_cat_stream, close_cat_stream, display_catman): Use cleanup_unlink + rather than an incorrect cast of unlink. + +2018-08-02 Colin Watson + + Fix build with Berkeley DB + + Fixes Savannah bug #54425. + + * libdb/db_btree.c: Include for free. + +2018-07-27 Colin Watson + + Update advertised file size + + * docs/man-db.lsm (Primary-site): Update file size. + +2018-07-27 Colin Watson + + * Version: 2.8.4. + +2018-07-27 Colin Watson + + Work around Gnulib/gettext mismatch + + The versions of gettext infrastructure files installed by gnulib-tool + don't necessarily match our configured AM_GNU_GETTEXT_VERSION, so we + need to fix things up in bootstrap. + + * bootstrap.conf (gnulib_tool_option_extras): Set --po-base to gl/ref-po + rather than gnulib/po. + (bootstrap_post_import_hook): Merge temporary gl/ref-po directory into + gl/po. + +2018-07-27 Colin Watson + + Upgrade to Gnulib 20180726 + + * bootstrap: Sync to Gnulib 900ca5c0b092e50f9f17329feea3fbfe2b6e2139. + * bootstrap.conf (GNULIB_REVISION): Set to + 900ca5c0b092e50f9f17329feea3fbfe2b6e2139. + +2018-07-18 Colin Watson + + Distribute man/es/translator.add + + * man/es/Makefile.am (EXTRA_DIST): Add translator.add. + +2018-07-16 Colin Watson + + sandbox: Improve ESET compatibility further + + * lib/sandbox.c (make_seccomp_filter): If libesets_pac.so is preloaded, + then allow msgset (second argument 0) and msgsnd. + * NEWS: Document this. + +2018-07-15 Colin Watson + + sandbox: Allow some shared memory operations + + These were previously only allowed when ESET File Security is in use, + but the Astrill VPN seems to require something similar, there are + doubtless other such preload hacks, and they're relatively harmless. + + * lib/sandbox.c (make_seccomp_filter): Allow shmat (third argument + SHM_RDONLY), shmctl (second argument IPC_STAT), shmdt, and shmget + regardless of preloads. + * NEWS: Document this. + +2018-06-08 Colin Watson + + Check for external formatter in correct directory + + Check for mandb_nfmt and mandb_tfmt in the manual page hierarchy as + documented, not in the current directory. This was broken by the + working-directory-handling changes in 2.8.3. + + Reported by Josh Triplett. Fixes Debian bug #901007. + + * src/man.c (NFMT_PROG, TFMT_PROG): Remove leading "./". + (make_roff_command): Refactor confusing #ifdef forest. Prefix dir to + TFMT_PROG/NFMT_PROG rather than looking in the current directory. Don't + look for an external formatter at all if dir is NULL. + * NEWS: Document this. + +2018-06-08 Colin Watson + + Define an access(2) wrapper with clearer semantics + + As usual for system calls, access(2) returns zero on success. However, + I generally think of it as "can we access this file in this way", where + boolean semantics would be more convenient, and find it too easy to + invert logic by accident when using the system call directly. Define a + CAN_ACCESS wrapper with boolean semantics. + + * include/manconfig.h.in (CAN_ACCESS): New macro. + * lib/tempfile.c (path_search): Use CAN_ACCESS. + * src/catman.c (check_access): Likewise. + * src/filenames.c (make_filename): Likewise. + * src/man.c (make_roff_command, display): Likewise. + * src/ult_src.c (find_include): Likewise. + * src/whatis.c (use_grep): Likewise. + +2018-06-07 Felipe Castro + + Update Esperanto translation + + * po/eo.po: Update from Translation Project. + +2018-06-01 Francisco Javier F. Serrador + + Update Spanish manual page translation + + * man/po4a/po/es.po: Update from Translation Project. + * man/THANKS: Update translator credit. + +2018-05-29 Colin Watson + + Add po4a-based Spanish manual page translation + + This supersedes the previous whole-file translations, which had not been + properly updated in many years. + + * man/po4a/po/es.po: New from Translation Project (thanks, Francisco + Javier Serrador). + * man/LINGUAS: Remove es. + * man/LINGUAS.po4a: Add es. + * man/es/Makefile.am (PO4A_LINGUA): Set to yes. + (man1_MANS): Add man1/lexgrog.1 and man1/manconv.1. + (man8_MANS): Add man8/accessdb.8. + * man/es/man1/apropos.man1, man/es/man1/man.man1, + man/es/man1/manpath.man1, man/es/man1/whatis.man1, + man/es/man1/zsoelim.man1, man/es/man5/manpath.man5, + man/es/man8/catman.man8, man/es/man8/mandb.man8: Remove. + * man/es/translator.add: New file. + * man/po4a/Makefile.am (POFILES): Add po/es.po. + * man/po4a/po4a.cfg (po4a_langs): Add es. + * man/THANKS: Update translator credit. + * .gitignore: Add man/es/man1, man/es/man5, and man/es/man8. + +2018-05-29 Colin Watson + + Remove useless if-before-free tests + + * lib/hashtable.c (plain_hashtable_free): Remove; this is precisely + equivalent to free. + * lib/hashtable.h (plain_hashtable_free): Remove. + * lib/orderfiles.c (order_files): Use free rather than + plain_hashtable_free. + * libdb/db_btree.c (btree_findkey): Likewise. + + * lib/pathsearch.c (pathsearch, directory_on_path): Remove useless + if-before-free. + * libdb/db_lookup.c (free_mandata_elements): Likewise. + * src/check_mandirs.c (test_manfile, count_glob_matches): Likewise. + * src/descriptions.c (free_descriptions): Likewise. + * src/lexgrog_test.c (main): Likewise. + * src/man.c (display_filesystem, display_database, get_section_list): + Likewise. + * src/manp.c (add_system_manpath): Likewise. + * src/straycats.c (check_for_stray, straycats): Likewise. + * src/ult_src.c (ult_src): Likewise. + +2018-05-29 Colin Watson + + Use Gnulib progname module + + This lets us produce more accurate error messages when programs are + invoked with an absolute path. + + * bootstrap.conf (gnulib_modules): Add progname. + * include/manconfig.h.in (program_name): Remove. + * src/accessdb.c (main): Call set_program_name rather than similar + hand-rolled code. + * src/catman.c (main): Likewise. Don't free program_name. + * src/globbing_test.c (main): Likewise. + * src/lexgrog_test.c (main): Likewise. + * src/man.c (main): Likewise. Don't free program_name. + * src/manconv_main.c (main): Likewise. + * src/mandb.c (main): Likewise. Don't free program_name. + * src/manpath.c (main): Likewise. + * src/tests/fspause.c (main): Likewise. + * src/whatis.c (main): Likewise. + * src/zsoelim_main.c (main): Likewise. + + * src/man.c (manopt_to_env): Run program_name through base_name, since + that's no longer necessarily done up-front. + * src/whatis.c (main): Run program_name through base_name before + comparing it to APROPOS_NAME, since that's no longer necessarily done + up-front. + +2018-05-29 Colin Watson + + Upgrade to Gnulib 20180527 + + * bootstrap.conf (GNULIB_URL): Remove. + (GNULIB_REVISION): Set to 90f289f249a266b1afb9c63e182f5d979d17df5f. + (gnulib_modules): Replace gettext with gettext-h. + (gnulib_tool_option_extras): Remove --no-cache-modules (accidental + leftover from earlier testing). + (local_gl_dir): Set to 'gnulib-local' to avoid confusion with 'gl' as + the local output directory. Remove 'rm -rf gl' hack, now superseded. + (buildreq): Bump minimum autopoint and gettext versions to 0.18.3, + matching previous change to configure.ac. + * configure.ac (AM_PROG_AR, LT_INIT): Move below gl_EARLY. + * patches/argp-domain.patch: Rebase. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Remove use of + @LOCALCHARSET_TESTS_ENVIRONMENT@, which is no longer needed by Gnulib. + +2018-05-28 Colin Watson + + Switch to bootstrap + + We no longer keep autogenerated files in git. + + * .gitignore: Add **/Makefile, **/Makefile.in, /ABOUT-NLS, /aclocal.m4, + /build-aux, /config.h.in, /configure, /gl, /gnulib, + docs/INSTALL.autoconf, po/Makefile.in.in, po/Makevars, po/Rules-quot, + po/boldquot.sed, po/en@boldquot.header, po/en@quot.header, + po/insert-header.sin, po/quot.sed, and po/remove-potcdate.sin. Remove + docs/Makefile, gnulib/*, init/Makefile, init/systemd/Makefile, + lib/Makefile, libdb/Makefile, man/Makefile, man/*/Makefile, + manual/Makefile, po/Makefile, po/Makefile.in, src/Makefile, + src/tests/Makefile, and tools/Makefile. + * ABOUT-NLS, Makefile.in, aclocal.m4, autogen.sh, build-aux, + config.h.in, configure, docs/INSTALL.autoconf, docs/Makefile.in, gnulib, + init/Makefile.in, init/systemd/Makefile.in, lib/Makefile.in, + libdb/Makefile.in, man/Makefile.in, man/da/Makefile.in, + man/de/Makefile.in, man/es/Makefile.in, man/fr/Makefile.in, + man/id/Makefile.in, man/it/Makefile.in, man/ja/Makefile.in, + man/nl/Makefile.in, man/pl/Makefile.in, man/po4a/Makefile.in, + man/pt_BR/Makefile.in, man/ru/Makefile.in, man/sr/Makefile.in, + man/sv/Makefile.in, man/tr/Makefile.in, man/zh_CN/Makefile.in, + manual/Makefile.in, po/Makefile.in.in, po/Makevars, po/Rules-quot, + po/boldquot.sed, po/en@boldquot.header, po/en@quot.header, + po/insert-header.sin, po/quot.sed, po/remove-potcdate.sin, + src/Makefile.in, src/tests/Makefile.in, tools/Makefile.in: Remove. + + * bootstrap, bootstrap.conf: New files. + * Makefile.am (GNULIB_PO, SUBDIRS, EXTRA_DIST, ACLOCAL_AMFLAGS): Refer + to gl/ rather than gnulib/ (gnulib/ now contains pristine source). + (EXTRA_DIST): Replace autogen.sh with bootstrap and bootstrap.conf. + Replace gnulib/argp-domain.patch with patches/argp-domain.patch. Add + patches/fdutimens-hurd.patch. Remove gnulib/m4/gnulib-cache.m4 and + gnulib/m4/gnulib-tool.m4. + * gnulib/argp-domain.patch: Rename to ... + * patches/argp-domain.patch: ... this. Update target paths. + * gnulib/fdutimens-hurd.patch: Rename to ... + * patches/fdutimens-hurd.patch: ... this. Update target paths. + * configure.ac (AM_GNU_GETTEXT_VERSION): Upgrade to 0.18.3, for + compatibility with current Automake. + (HAVE_GNULIB_PO, AC_CONFIG_FILES): Refer to gl/ rather than gnulib/. + * lib/Makefile.am (libman_la_CPPFLAGS, libman_la_LIBADD): Likewise. + * libdb/Makefile.am (libmandb_la_CPPFLAGS): Likewise. + * src/Makefile.am (AM_CPPFLAGS, LIBMAN): Likewise. + * src/tests/Makefile.am (AM_CPPFLAGS, fspause_LDADD): Likewise. + + * docs/HACKING: Describe new policy. + * release.sh: Call ./bootstrap rather than ./autogen.sh. + +2018-05-17 pan93412 + + Add Traditional Chinese translation + + * po/zh_TW.po: New from Translation Project. + * po/LINGUAS: Add zh_TW. + * man/THANKS: Add translator credit. + +2018-04-22 Colin Watson + + sandbox: Allow sched_getaffinity + + This is used by xz-utils >= 5.2.3 if the --threads=0 option is in use + (perhaps via XZ_DEFAULTS or XZ_OPT). + + Reported by Axel Rohde. + + * lib/sandbox.c (make_seccomp_filter): Allow sched_getaffinity. + * NEWS: Document this. + +2018-04-06 Colin Watson + + Fix invalid man-db.conf with --disable-cache-owner + + Fixes Savannah bug #53575. + + * m4/man-arg-cache-owner.m4: Set and substitute cache_top_owner. + * init/systemd/man-db.conf.in: Substitute cache_top_owner rather than + man_owner. + * init/systemd/Makefile.am (man-db.conf): Likewise. + * NEWS: Document this. + +2018-04-06 Colin Watson + + Remove redundant debugging information + + * lib/decompress.c (decompress_open): Remove filename from + decompress_zlib command name. pipeline_dump already includes this + information from want_infile. + +2018-04-06 Colin Watson + + Rely on decompressors reading from stdin + + This works better with downstream AppArmor confinement of decompressors. + + * lib/decompress.c (decompress_open): Don't pass filename on + decompressor command lines. + * NEWS: Document this. + +2018-04-05 Colin Watson + + * Version: 2.8.3. + +2018-04-05 Colin Watson + + Suppress spurious gettext headers in --help output + + Some of man-db's commands have post-options help text but no pre-options + help text. Unfortunately, the way this works in argp (separating the + two sections using a '\v' character) means that this results in argp + trying to translate the empty string, which produces gettext catalog + headers. The easiest way to suppress this odd behaviour seems to be to + use a help filter function, so do that. + + Reported by Rafael Fontenelle. + + * src/accessdb.c (help_filter): Return NULL for ARGP_KEY_HELP_PRE_DOC. + * src/lexgrog_text.c (help_filter): New function. + (argp): Add help_filter. + * src/whatis.c (help_filter): New function. + (apropos_argp): Add help_filter. + * NEWS: Document this. + +2018-04-05 Colin Watson + + Fix compiler warnings on x32 + + tv_nsec is __syscall_slong_t == long long there, so we need a cast. + + * libdb/db_lookup.c (dbprintf): Cast tv_nsec to long for %ld format. + * libdb/db_store.c (make_content): Likewise. + * src/check_mandirs.c (testmandirs, update_db): Likewise. + * src/man.c (maybe_update_file): Likewise. + +2018-04-04 Colin Watson + + Fix broken test + + * src/tests/man-8: Fix expected output to account for recent change to + locale_macros. + +2018-04-04 Colin Watson + + man: Only change directory in child processes + + This avoids failures due to being unable to change back to the original + working directory. + + Fixes Debian bug #894792. + + * gnulib/m4/gnulib-cache.m4 (gl_MODULES): Remove save-cwd. + * src/man.c (make_display_command): Remove now-unnecessary code to run + the pager in the original working directory. + (chdir_commands): New function. + (format_display): Change directory just for format_cmd and disp_cmd + rather than in-process. + (display): Change directory just for format_cmd rather than in-process. + (main): Remove now-unnecessary code to save and restore the current + working directory. + * NEWS: Document this. + +2018-04-04 Colin Watson + + Upgrade config.guess/config.sub + + * build-aux/config.guess: Upgrade to 2018-02-24. + * build-aux/config.sub: Upgrade to 2018-02-22. + +2018-04-01 Colin Watson + + Fix locale_macros version check for groff RCs + + Thanks to Werner LEMBERG. + + * src/man.c (locale_macros): Tolerate groff release candidates. + * NEWS: Document this. + +2018-03-30 Colin Watson + + sandbox: Allow sibling architectures on x86 etc. + + Fixes Debian bug #891267. + + * lib/sandbox.c (make_seccomp_filter): Allow sibling architectures on + x86/x86_64/x32. + * NEWS: Document this. + +2018-03-17 Colin Watson + + sandbox: Tighten up storage classes + + * lib/sandbox.c (make_seccomp_filter, _sandbox_load): Declare as static. + +2018-03-17 Colin Watson + + sandbox: Allow kill and tgkill outright + + This is unfortunate but unavoidable: groff uses kill to explicitly pass + on SIGPIPE to its child processes, and we can't do any more + sophisticated filtering in seccomp. + + Based on a patch by Paul Wise. Fixes Debian bug #892309. + + * lib/sandbox.c (make_seccomp_filter): Allow kill and tgkill + unconditionally. + (adjust_seccomp_filter): Remove. + (_sandbox_load): Remove call to adjust_seccomp_filter. + * NEWS: Document this. + +2018-03-17 Colin Watson + + sandbox: Allow madvise + + Reported by Tobias Klausmann. + + * lib/sandbox.c (make_seccomp_filter): Allow madvise. + * NEWS: Document this. + +2018-03-02 Francisco Javier Serrador + + Update Spanish translation + + * po/es.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2018-02-28 Colin Watson + + * Version: 2.8.2. + +2018-02-28 Colin Watson + + sandbox: Handle qemu-user returning EFAULT + + Fixes Debian bug #891109. + + * lib/sandbox.c (_sandbox_load): Interpret EFAULT from seccomp_load as + meaning that seccomp is unavailable, since this can be returned by some + versions of qemu-user. + * NEWS: Document this. + +2018-02-28 Colin Watson + + sandbox: Add some more ESET affordances + + * lib/sandbox.c (make_seccomp_filter): If libesets_pac.so is preloaded, + then allow some shared memory calls and checking for the existence of + other processes. + +2018-02-25 Colin Watson + + sandbox: Work around snoopy + + Fixes Debian bug #890861. + + * lib/sandbox.c (search_ld_preload): Cache /etc/ld.so.preload contents + between calls. + (make_seccomp_filter): Allow some socket-related system calls if + libsnoopy.so is preloaded. + +2018-02-25 Colin Watson + + sandbox: Generalise libesets_pac.so check slightly + + * lib/sandbox.c (make_seccomp_filter): LD_PRELOAD or /etc/ld.so.preload + can just contain "libesets_pac.so" without an explicit path, so make the + search slightly more permissive. + +2018-02-20 Colin Watson + + sandbox: Handle /etc/ld.so.preload + + At least ESET File Security may be configured using /etc/ld.so.preload + rather than the LD_PRELOAD environment variable, so unfortunately we + need to check that too. + + * lib/sandbox.c (search_ld_preload): New function, handling both + LD_PRELOAD and /etc/ld.so.preload. + (can_load_seccomp, make_seccomp_filter): Use search_ld_preload. + +2018-02-19 Colin Watson + + sandbox: Work around ESET File Security + + This is a proprietary antivirus program, so this is only a best guess + from strace output. The choices are to disable the sandbox entirely or + to allow a few socket-related system calls if this antivirus program is + detected, and the latter is probably slightly better. + + Reported by John Sivak. + + * lib/sandbox.c (make_seccomp_filter): If LD_PRELOAD contains the + substring "/libesets_pac.so", then allow some socket-related system + calls so that the preload wrapper can talk to its daemon. + * NEWS: Document this. + +2018-02-19 Colin Watson + + sandbox: Allow ioctl(fd, TIOCGWINSZ) + + Patch from the anonymous reporter of + https://savannah.nongnu.org/bugs/?53183 (though I think is obvious for + copyright purposes given knowledge of the failing system call). + + Fixes Savannah bug #53183 (maybe). + + * lib/sandbox.c (make_seccomp_filter): Allow ioctl(fd, TIOCGWINSZ). + * NEWS: Document this. + +2018-02-14 Colin Watson + + sandbox: Allow kill/tgkill for current process + + xz is multithreaded, so the threading library may need to use tgkill to + pass signals between threads, for example when it receives SIGPIPE. + + Fixes Savannah bug #53143. + + * lib/sandbox.c (SC_ALLOW, SC_ALLOW_ARG_1, SC_ALLOW_ARG_2): Move macro + definitions out of make_seccomp_filter. + (adjust_seccomp_filter): New function. + (sandbox_load): Call adjust_seccomp_filter. + * NEWS: Document this. + +2018-02-09 Colin Watson + + * Version: 2.8.1. + +2018-02-09 Colin Watson + + Use HTTPS URLs where possible + + * Makefile.am, NEWS, README, docs/HACKING, docs/INSTALL.quick, + lib/sandbox.c, manual/misc.me, src/check_mandirs.c, src/man.c, + src/manconv.c, src/tests/man-1, src/tests/man-2, src/tests/mandb-2, + src/tests/mandb-4, src/tests/mandb-5, src/tests/zsoelim-1: Replace + http:// links with https:// equivalents. + * docs/HACKING: Replace git:// link with an https:// equivalent. + +2018-02-09 Colin Watson + + Chase some redirects + + * NEWS: Link to https://bazaar.canonical.com/ rather than + http://bazaar-vcs.org/. + * man/fr/translator.add: Link to https://po4a.org/ rather than + http://po4a.alioth.debian.org/. + +2018-02-08 Colin Watson + + sandbox: Allow mremap + + * lib/sandbox.c (make_seccomp_filter): Allow mremap, which may be used + by iconv when reading files, depending on libc configuration. + * NEWS: Document this. + +2018-02-07 Lars Wendler + + Change libseccomp logic to not be automagic only + + Introduce --without-libseccomp configure option so that users can + disable seccomp even if libseccomp is available on the system. + + The default is unchanged from before this patch. If no + --with(out)-libseccomp has been given on the command line, the macro + looks for presence of libseccomp and uses that if found. + + * m4/man-libseccomp.m4: Guard pkg-config test with a command-line + option. + +2018-02-07 Colin Watson + + * NEWS: Document changes since 2.8.0. + +2018-02-07 Colin Watson + + Reduce number of MAN_OWNER ifdefs + + * lib/security.c (init_security, running_setuid): Define + unconditionally, with stub behaviour if MAN_OWNER is undefined. + * lib/security.h (get_man_owner): Only declare prototype if MAN_OWNER is + defined. + * src/check_mandirs.c (chown_if_possible) [!MAN_OWNER]: Mark path + argument as unused. + * src/lexgrog_test.c (main): Call init_security unconditionally. + * src/man.c (main): Likewise. + * src/manconv_client.c (manconv_pre_exec): Define unconditionally. + (add_manconv): Simplify, since running_setuid is now always defined. + * src/mandb.c (main): Call init_security unconditionally. Use + get_man_owner rather than equivalent inline code. + * src/manp.c (get_def): Define unconditionally. + * src/manp.h (get_def): Drop macro alternative. + +2018-02-07 Colin Watson + + Fix manconv under seccomp when man is setuid + + We must drop privileges before loading the sandbox. + + Reported by Lars Wendler. + + * src/manconv_client.c (manconv_pre_exec): New function. + (manconv_stdin): Move setuid hack to ... + (add_manconv): ... here, now implemented using a custom pre-exec hook. + We no longer have a fall-through if dropping privileges fails, since + that's now harder to do and wasn't really necessary in the first place. + +2018-02-07 Colin Watson + + Refactor do_system_drop_privs + + Now that we have pipecmd_pre_exec, this can be simplified quite a bit. + + * lib/security.c (drop_privs): New function. + (do_system_drop_privs_child, do_system_drop_privs): Remove. + * lib/security.h (drop_privs): Add prototype. + (do_system_drop_privs): Remove prototype. + * src/man.c (make_browser): Add drop_privs pre-exec hook to browser + command. + (format_display): Call browser using pipeline_run rather than + do_system_drop_privs, since it now has a pre-exec hook to drop + privileges. + +2018-02-07 Colin Watson + + Refactor sandbox attachment to be more composable + + The sandbox interface now exposes the necessary load/free primitives, + and callers use them directly with pipecmd_pre_exec. This allows the + sandbox to be composed with other pre-exec hooks. + + * lib/sandbox.c (man_sandbox_op, sandbox_attach, + sandbox_attach_permissive): Remove. + (sandbox_load): Rename to ... + (_sandbox_load): ... this. + (sandbox_load, sandbox_load_permissive): New functions. + (sandbox_free): Expect a man_sandbox * rather than a man_sandbox_op *. + * lib/sandbox.h: Update prototypes. + + * lib/decompress.c (decompress_open, decompress_fdopen): Update sandbox + attachment calls. + * src/lexgrog.l (find_name): Likewise. + * src/man.c (add_col, make_roff_command, add_output_iconv, + make_display_command, open_cat_stream, display_catman): Likewise. + * src/manconv_client.c (add_manconv): Likewise. + * src/straycats.c (check_for_stray): Likewise. + * src/whatis.c (use_grep): Likewise. + +2018-02-07 Colin Watson + + * NEWS: Fix typo in 2.6.5 notes + +2018-02-05 Colin Watson + + Fix seccomp sandbox build on Linux/POWER + + * lib/sandbox.c [HAVE_LIBSECCOMP]: Include , since some + architectures need this for TCGETS as well as . + +2018-02-04 Colin Watson + + * Version: 2.8.0. + +2018-02-04 Colin Watson + + Allow ioctl (..., TCGETS, ...) + + * lib/sandbox.c (make_seccomp_filter): Allow ioctl (..., TCGETS, ...) in + non-permissive mode (ioctl in general is already allowed in permissive + mode). + +2018-02-04 Mario Blättermann + + Update German manual page translation + + * man/po4a/po/de.po: Update from Translation Project. + +2018-02-03 Rafael Fontenelle + + Update Brazilian Portuguese translations + + * po/pt_BR.po, man/po4a/po/pt_BR.po: Update from Translation Project. + * man/THANKS: Update translator email address. + +2018-01-27 Joe Hansen + + Update Danish manual page translation + + * man/po4a/po/da.po: Update from Translation Project. + +2018-01-25 Mario Blättermann + + Update German manual page translation + + * man/po4a/po/de.po: Update from Translation Project. + +2018-01-23 Yuri Kozlov + + Update Russian translations + + * po/ru.po, man/po4a/po/ru.po: Update from Translation Project. + +2018-01-23 Boyuan Yang <073plan@gmail.com> + + Update Simplified Chinese manual page translation + + * man/po4a/po/zh_CN.po: Update from Translation Project. + +2018-01-23 Sebastian Rasmussen + + Update Swedish manual page translation + + * man/po4a/po/sv.po: Update from Translation Project. + +2018-01-23 Rafael Fontenelle + + Update Brazilian Portuguese manual page translation + + * man/po4a/po/pt_BR.po: Update from Translation Project. + +2018-01-22 Colin Watson + + * Version: 2.8.0-pre2. + + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +2018-01-21 Colin Watson + + * Version: 2.8.0-pre1. + +2018-01-16 Colin Watson + + Minor style cleanups + + * src/man.c (sh_lang_first_word, main): Minor style cleanups. + +2018-01-16 Colin Watson + + NEWS: Document previous commit. + +2018-01-16 Neven Sajko + + Add fallback pager if the compile-time default is not executable + + A problem with man-db's man is that in the case of the user giving no + configuration via conf files, argv, or environment variables; man + defaults to less as pager (PAGER); but less may not be present on the + system. Sure, other pagers may be selected in aforementioned ways, but + then the defaults are overridden, making that unsuitable for + install-time configuration. + + This patch makes man check (if that becomes relevant) if PAGER is + executable, further defaulting to cat (which is basically ubiquitous, + being in original Unix, POSIX, and GNU Coreutils) if it is not. Thus + the poor beginner Unix users without less installed will be able to + get man pages. + + * src/man.c (sh_lang_first_word): New function. + (main): Skip configured pager if it is not executable. + * man/man1/man.man1 (Controlling formatted output, ENVIRONMENT): + Document fallback to cat. + * man/replace.sin.in: Substitute %cat%. + +2018-01-16 Colin Watson + + Fix a segfault in 'man -D --help' + + Reported by Jiri Kucera. + + * src/man.c (init_html_pager): New function. + (parse_opt): Call init_html_pager rather than setting html_pager to + NULL. + (help_filter): Assert that browser is non-NULL. + (main): Call init_html_pager rather than doing the same thing directly. + * NEWS: Document this. + +2018-01-03 Colin Watson + + Update Simplified Chinese manual page translation + + * man/po4a/po/zh_CN.po: Update from Translation Project (trivial). + +2018-01-03 Colin Watson + + Upgrade config.guess/config.sub + + * build-aux/config.guess: Upgrade to 2017-11-07. + * build-aux/config.sub: Upgrade to 2017-11-23. + +2018-01-03 Colin Watson + + sandbox: Cope with missing CONFIG_SECCOMP_FILTER + + * lib/sandbox.c (gripe_seccomp_filter_unavailable): New function. + (can_load_seccomp): Return early if seccomp filtering has already been + detected as unavailable. + (sandbox_load): If seccomp_load returns an EINVAL error, assume that the + running kernel doesn't support seccomp filtering and emit a debugging + message rather than failing. + +2018-01-03 Colin Watson + + Allow sync_file_range2 syscall + + * lib/sandbox.c (make_seccomp_filter): Add sync_file_range2. + +2018-01-03 Colin Watson + + Fix seccomp sandbox on Linux/ARM + + * lib/sandbox.c (make_seccomp_filter): Add arm_fadvise64_64 and + arm_sync_file_range. + +2017-12-03 Colin Watson + + Use more conventional bullets in documentation + + * docs/INSTALL.quick, NEWS, README: Use "*" for bullet points instead of + "o". + +2017-12-03 Colin Watson + + Confine most untrusted data handling using seccomp + + Fixes Debian bug #877199. + + * configure.ac: Require libpipeline >= 1.5.0. Call MAN_LIBSECCOMP. + * docs/INSTALL.quick: Bump minimum libpipeline version to 1.5.0. List + libseccomp as recommended. + * lib/Makefile.am (libman_la_CPPFLAGS): Add $(libseccomp_CFLAGS). + (libman_la_SOURCES): Add sandbox.c and sandbox.h. + (libman_la_LDFLAGS): Add $(libseccomp_LIBS). + * lib/sandbox.c: New file. + * lib/sandbox.h: New file. + * m4/man-libseccomp.m4: New file. + + * src/man.c (set_term): Check that process ID matches original before + calling tcsetattr. + (get_term): Record original process ID to work around an arguable bug in + pipecmd_exec. + + * src/lexgrog_test.c (main), src/man.c (main), src/manconv_main.c + (main), src/mandb.c (main), src/zsoelim_main.c (main): Initialise + sandbox. + + * lib/decompress.c (decompress_open, decompress_fdopen): Attach sandbox + to decompression commands. + * src/lexgrog.l (find_name): Attach sandbox to 'col'. + * src/man.c (add_col): Attach sandbox to 'col'. + (make_roff_command): Attach sandbox to 'zsoelim' and to groff-related + programs. + (add_output_iconv): Attach sandbox to 'iconv'. + (make_display_command): Attach sandbox to 'tr'. + (open_cat_stream, display_catman): Attach sandbox to compression + commands. + * src/manconv_client.c (add_manconv): Attach sandbox to manconv_stdin. + * src/straycats.c (check_for_stray): Attach sandbox to 'col'. + * src/whatis.c (use_grep): Attach sandbox to 'grep'. + + * src/accessdb.c, src/catman.c, src/globbing_test.c, src/manpath.c: + Define stub sandbox variable. + + * docs/NEWS: Document this. + +2017-12-02 Colin Watson + + Document more installation requirements + + * docs/INSTALL.quick: List a database library as required, and zlib as + recommended. + +2017-11-22 Colin Watson + + Remove Easter egg entirely + + Six years is a reasonable shelf life for a joke, but I think its time + has passed now. + + * src/man.c (main): Remove Easter egg. + +2017-11-21 Philipp Gesang + + Add section 0 to defaults + + m4/man-arg-sections.m4: Add 0 (zero) to the default list of sections as + advertised in ``configure --help``. + + Cf. commit f3739b9bbde27c702c911ce8a511a499705a25f7 + +2017-11-21 Colin Watson + + Stop Easter egg interfering with non-error cases + + * src/man.c (main): Restrict Easter egg to the case where 'man' is run + without any options or arguments at all (which isn't useful for anything + else), not 'man -w' (which is). + + https://unix.stackexchange.com/questions/405783/why-does-man-print-gimme-gimme-gimme-at-0030 + +2017-11-21 Colin Watson + + Fix formatting error in Simplified Chinese translation + + * man/po4a/po/zh_CN.po: Correct formatting of exit(3tcl) references. + +2017-11-16 Boyuan Yang <073plan@gmail.com> + + Update Simplified Chinese translations + + * po/zh_CN.po, man/po4a/po/zh_CN.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2017-11-13 Colin Watson + + Fix docs for minimum libpipeline requirement + + * docs/INSTALL.quick: Bump minimum libpipeline version to 1.4.0. + +2017-07-17 Colin Watson + + Fix formatting error in Turkish translation + + * man/po4a/po/tr.po: Translate "\\e-" as itself rather than as "\\(e-". + +2017-07-16 Colin Watson + + Improve --with-systemdtmpfilesdir default + + * m4/man-arg-systemdtmpfilesdir.m4: Get tmpfiles directory location from + pkg-config. + * configure.ac: Call PKG_PROG_PKG_CONFIG early to avoid problems with + conditional use of PKG_* macros. + +2017-07-11 Colin Watson + + Add Turkish manual page translation + + * man/po4a/po/tr.po: New from Translation Project (thanks, Volkan Gezer + and Mesutcan Kurt). + * configure.ac (AC_CONFIG_FILES): Add man/tr/Makefile. + * man/LINGUAS.po4a: Add tr. + * man/Makefile.am (DIST_SUBDIRS): Add tr. + * man/tr/Makefile.am, man/tr/translator.add: New files. + * man/po4a/Makefile.am (POFILES): Add po/tr.po. + * man/po4a/po4a.cfg (po4a_langs): Add tr. + * man/THANKS: Add translator credit. + * .gitignore: Add man/tr/man1, man/tr/man5, and man/tr/man8. + +2017-07-10 Colin Watson + + * NEWS: Document changes since 2.7.6.1. + +2017-07-10 Colin Watson + + gnulib: Import memmem module + + Needed to make the previous commit portable. + +2017-07-10 Colin Watson + + Fix preprocessor handling after insertions + + If man has added prefixes to a page to handle such things as disabling + hyphenation, then it also needs to take account of that when looking for + a preprocessor line at the start of the page. + + Reported by Bjarni Ingi Gislason. Fixes Debian bug #867857. + + * src/man.c (get_preprocessors_from_file): Skip over as many blocks + ending with an .lf macro as there are prefixes. + (get_preprocessors): Pass the number of prefixes through to + get_preprocessors_from_file. + (make_roff_command): Take pp_string as an argument rather than + dbfilters; callers should now call get_preprocessors themselves. + (display): Rename seq_ncmds to prefixes. Call get_preprocessors before + calling make_roff_command. + +2017-07-10 Colin Watson + + Upgrade to Automake 1.15.1. + +2017-07-10 Colin Watson + + Handle \(en escapes in NAME section + + * src/lexgrog.l (MAN_NAME): Treat "\(en" as another synonym for "\-", + and thus as a separator. + +2017-04-08 Volkan Gezer + + Update Turkish translation + + * po/tr.po: Update from Translation Project. + +2017-04-04 Volkan Gezer + + Add Turkish translation + + * po/tr.po: New from Translation Project. + * po/LINGUAS: Add tr. + * man/THANKS: Add translator credit. + +2017-01-29 Felipe Castro + + Update Esperanto translation + + * po/eo.po: Update from Translation Project. + +2017-01-07 Sebastian Rasmussen + + Update Swedish translation + + * po/sv.po: Update from Translation Project. + +2017-01-04 Colin Watson + + Add Brazilian Portuguese manual page translation + + * man/po4a/po/pt_BR.po: New from Translation Project (thanks, Rafael + Fontenelle). + * configure.ac (AC_CONFIG_FILES): Add man/pt_BR/Makefile. + * man/LINGUAS.po4a: Add pt_BR. + * man/Makefile.am (DIST_SUBDIRS): Add pt_BR. + * man/pt_BR/Makefile.am, man/pt_BR/translator.add: New files. + * man/po4a/Makefile.am (POFILES): Add po/pt_BR.po. + * man/po4a/po4a.cfg (po4a_langs): Add pt_BR. + * man/THANKS: Add translator credit. + * .gitignore: Add man/pt_BR/man1, man/pt_BR/man5, and man/pt_BR/man8. + +2016-12-28 Sebastian Rasmussen + + Update Swedish manual page translation + + * man/po4a/po/sv.po: Update from Translation Project. + +2016-12-23 David Prévot + + Update French manual page translation + + * man/po4a/po/fr.po: Update from Translation Project. + +2016-12-23 David Prévot + + Update French translation + + * po/fr.po: Update from Translation Project. + +2016-12-22 Robert Luberda + + Update Polish manual page translation + + * man/po4a/po/pl.po: Update from Translation Project. + +2016-12-22 Robert Luberda + + Update Polish translation + + * po/pl.po: Update from Translation Project. + +2016-12-19 Colin Watson + + Add Serbian manual page translation + + * man/po4a/po/sr.po: New from Translation Project (thanks, МироÑлав + Ðиколић). + * configure.ac (AC_CONFIG_FILES): Add man/sr/Makefile. + * man/LINGUAS.po4a: Add sr. + * man/Makefile.am (DIST_SUBDIRS): Add sr. + * man/sr/Makefile.am, man/sr/translator.add: New files. + * man/po4a/Makefile.am (POFILES): Add po/sr.po. + * man/po4a/po4a.cfg (po4a_langs): Add sr. + * man/THANKS: Add translator credit. + * .gitignore: Add man/sr/man1, man/sr/man5, and man/sr/man8. + +2016-12-19 МироÑлав Ðиколић + + Update Serbian translation + + * po/sr.po: Update from Translation Project. + +2016-12-13 Joe Hansen + + Update Danish manual page translation + + * man/po4a/po/da.po: Update from Translation Project. + +2016-12-13 Colin Watson + + Generate tmpfiles snippet based on cache owner + + man-db.conf should honour --enable-cache-owner rather than hardcoding + "man". + + * init/systemd/man-db.conf: Rename to ... + * init/systemd/man-db.conf.in: ... this. Replace "man" with + "@man_owner@". + * init/systemd/Makefile.am: Generate man-db.conf at build time. + * .gitignore: Add init/systemd/man-db.conf. + +2016-12-13 Colin Watson + + Fix locale macro loading for Chinese + + The intent was always that we should load the macro file corresponding + to just the language part of the page's locale, and the debug output + agreed with this, but the actual implementation did not. Fix this. + + See: https://savannah.gnu.org/bugs/?44941 + + * src/man.c (display): Pass bits.language rather than page_lang to + locale_macros. Adjust memory allocation. + +2016-12-13 Colin Watson + + Rename SECURE_MAN_UID to MAN_OWNER + + The latter had always been defined to the former anyway, and now that + the cache owner can be changed without actually installing setuid the + latter is more descriptive. + + * m4/man-arg-cache-owner.m4: Define MAN_OWNER rather than + SECURE_MAN_UID. Update all users. + * include/manconfig.h.in (MAN_OWNER): Remove definition. + +2016-12-13 Colin Watson + + Mark some parts of .TH sections as untranslatable + + * man/po4a/Locale/Po4a/Manext.pm (translate): Don't translate anything + matching /^%.*%$/ or /^[A-Z]+$/ in .TH sections. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +2016-12-13 Tianze Wang + + Update Simplified Chinese manual page translation + + * man/po4a/po/zh_CN.po: Update from Translation Project. + * man/THANKS: Update. + +2016-12-13 Trần Ngá»c Quân + + Update Vietnamese translation + + * po/vi.po: Update from Translation Project. + +2016-12-13 Colin Watson + + Correct syntax of Danish manual page translation + + * man/po4a/po/da.po: Fix a couple of font specifications. + +2016-12-13 Rafael Fontenelle + + Update Brazilian Portuguese translation + + * po/pt_BR.po: Update from Translation Project. + * man/THANKS: Update. + +2016-12-13 Joe Hansen + + Update Danish manual page translation + + * man/po4a/po/da.po: Update from Translation Project. + +2016-12-12 Joe Hansen + + Update Danish translation + + * po/da.po: Update from Translation Project. + +2016-12-12 Mario Blättermann + + Update German manual page translation + + * man/po4a/po/de.po: Update from Translation Project. + +2016-12-12 Mario Blättermann + + Update German translation + + * po/de.po: Update from Translation Project. + * man/THANKS: Update. + +2016-12-12 Colin Watson + + * Version: 2.7.6.1. + +2016-12-12 Colin Watson + + Correct installation of Swedish manual pages + + * man/sv/Makefile.am (LINGUA): Set to sv, not nl. + * NEWS: Document this. + +2016-12-12 Colin Watson + + * NEWS: Document previous change. + +2016-12-12 Colin Watson + + Don't chmod CACHEDIR.TAG if it doesn't exist + + The containing directory might reasonably not exist. Fixes Debian + bug #847810. + + * src/mandb.c (mandb): Only chown/chmod CACHEDIR.TAG if it exists. + +2016-12-11 Colin Watson + + * Version: 2.7.6. + +2016-12-11 Colin Watson + + Fix systemd tmpfiles group/perms of /var/cache/man + + * init/systemd/man-db.conf: Change mode to 0755 and group to man. + +2016-12-11 Colin Watson + + Fix Polish mandb(8) "cannot adjust line" warnings + + * man/man8/mandb.man8 (DATABASE CACHES): Set a width of 20em for the + "Type" column. + +2016-12-11 Colin Watson + + Drop documentation of gdbm < 1.6 + + gdbm 1.6 was released in 1993; it's no longer necessary to document + mandb's behaviour with older versions. + + * man/man8/mandb.man8 (DATABASE CACHES): Remove "GNU gdbm v < 1.6" row. + Simplify "GNU gdbm v >= 1.6" to "GNU gdbm". Update all translations. + +2016-12-11 Colin Watson + + Fix table rendering with po4a 0.47 + + * man/po4a/Locale/Po4a/Manext.pm (initialize): Drop unused assignment. + (shiftline, pushline): Pass through to superclass if po4a version >= + 0.47. + (translate): With po4a >= 0.47, don't process text blocks since po4a now + does that, but handle @-separation of columns and remove trailing + newlines from translatable strings. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update (line + numbers only). + * NEWS: Document this. + +2016-12-11 Colin Watson + + Fix distcheck following cache-owner/setuid changes + + We previously ignored chown failures on "make install", but that's not + really correct. Instead, configure with --disable-setuid during + distcheck. + + * Makefile.am (AM_DISTCHECK_CONFIGURE_FLAGS): Add --disable-setuid. + +2016-12-11 Colin Watson + + Update translation files + + * po/man-db.pot, po/*.po: Update. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +2016-12-11 Colin Watson + + * NEWS: Document changes since 2.7.5. + +2016-12-11 Mihail Konev + + src/tests: Use /tmp for temporary directories + + Reduces disk reads/writes made by 'make check -C src'. + + Fall back to ./tmp-* if 'mktemp -d' fails. + +2016-12-10 Colin Watson + + Eliminate dangerous setgid-root directories + + man-db has created its cache directories as setgid root for nearly 20 + years. This seems to have originated in https://bugs.debian.org/26002. + However, this has some dangerous consequences, such as: + + http://www.halfdog.net/Security/2015/SetgidDirectoryPrivilegeEscalation/ + + It seems best to arrange for cache files and directories to be man:man + rather than man:root. To do this reliably, as well as adjusting various + chown and chmod calls, we make man and mandb be setgid man as well as + setuid man (except in the --disable-setuid case). This is a much + simpler and safer solution to the original problem, and doesn't + introduce any interesting new privilege since the man group's only real + purpose is to be the man user's primary group and nothing in cache + directories is group-writeable. + + * configure.ac (AC_CHECK_FUNCS): Add lchown. + * lib/security.c (init_security): Record initial real and effective + group IDs as well as user IDs. + (drop_effective_privs, regain_effective_privs): Update gid. + * lib/xchown.c (xlchown) [HAVE_LCHOWN]: New function. + * lib/xchown.c (xlchown) [HAVE_LCHOWN]: Add prototype. + * m4/man-arg-setuid.m4: Set man_mode to 6755 rather than 4755 in the + --enable-setuid case. + * src/Makefile.am (install-exec-hook): Check for man_mode being 6755 + rather than 4755. Set the group of man and mandb as well as their + owner. + * src/check_mandirs.c (chown_if_possible): New function. This is + somewhat more careful than previous implementations, changes the group + as well as the user if possible, and prefers lchown if it is available. + (mkcatdirs): Drop S_ISGID from cat directories. Use chown_if_possible. + (fix_permissions, fix_permissions_tree): New functions to remove setgid + bit from existing cat directories. + (testmandirs): Call fix_permissions_tree. + * src/check_mandirs.h (chown_if_possible): Add prototype. + * src/man.c (commit_tmp_cat): Set cat file group as well as owner. + * src/mandb.c (check_chown): Remove. + (do_chown): Stop taking a uid parameter. Use chown_if_possible. + (mandb): Use chown_if_possible for CACHEDIR.TAG. Set ownership and + permissions of CACHEDIR.TAG even if it already exists. + (process_manpath): Set ownership of database files even if they have not + been changed. + +2016-12-10 Colin Watson + + Make --disable-cache-owner imply --disable-setuid + + * m4/man-arg-setuid.m4: Set man_mode="755" if --disable-cache-owner was + given and neither --enable-setuid nor --disable-setuid was given. + +2016-12-10 Colin Watson + + Update manual for cache-owner/setuid changes + + * manual/intro.me (Arguments to configure): Add --enable-cache-owner and + --disable-cache-owner. Remove --enable-setuid[=ARG]. Adjust + description of --disable-setuid. + * manual/misc.me (Modes of operation): Add --disable-cache-owner to the + non-setuid modes. Mention --enable-setuid rather than + --enable-setuid=USER. + * README (Non-generic arguments to configure): Update. + +2016-12-10 Colin Watson + + Allocate dbpaths on the heap rather than the stack + + process_manpath's stack may have gone out of scope by the time cleanup + functions are called. + + * src/mandb.c (cleanup): Free dbpaths. + (process_manpath): Allocate dbpaths on the heap. + +2016-12-10 Colin Watson + + Handle cleanup stack more safely + + If push_cleanup was called unexpectedly between a + push_cleanup/pop_cleanup pair, then the pop_cleanup would remove the + wrong cleanup function and chaos could ensue. Avoid this by being more + precise about which cleanup function should be popped. + + * lib/cleanup.c (pop_cleanup): Take "fun" and "arg" arguments. Pop the + topmost matching function from the stack, rather than just the topmost + function. Update all callers and prototypes. + +2016-12-09 Colin Watson + + Upgrade config.guess/config.sub + + * build-aux/config.guess: Upgrade to 2016-10-02. + * build-aux/config.sub: Upgrade to 2016-11-04. + +2016-12-09 Colin Watson + + Separate cache owner from --enable-setuid option + + It's useful to have a notion of the cache owner even when man is not + installed setuid. --enable-setuid no longer takes an argument, and the + owner is now set by the --enable-cache-owner option instead. + + * m4/man-arg-cache-owner.m4: New file. + * m4/man-arg-setuid.m4: Stop accepting an argument. Only set man_mode, + not man_owner. + * configure.ac: Call MAN_ARG_CACHE_OWNER. + * src/Makefile.am (install-exec-hook): Only chown man and mandb if + man_mode is 4755 (as well as the existing test for man_owner being + non-empty). + +2016-11-21 Colin Watson + + Restore ylwrap to distribution + + * Makefile.in (am__DIST_COMMON): Regenerate to add build-aux/ylwrap back + again, since it mysteriously went missing in the last regeneration. + +2016-11-21 Colin Watson + + Update translation files + + * po/man-db.pot, po/*.po: Update. + +2016-11-21 Colin Watson + + Upgrade to Libtool 2.4.6-2 (from Debian) + +2016-11-21 Colin Watson + + Upgrade config.guess/config.sub + + * build-aux/config.guess: Upgrade to 2016-04-02. + * build-aux/config.sub: Upgrade to 2016-03-30. + +2016-11-20 Mihail Konev + + src/tests: Fix testsuite + + * src/tests/man-9: Set MANPATH. + +2016-11-20 Mihail Konev + + man(1): Fix gcc warnings + + * lib/xchown.c: New file. + * lib/xchown.h: New file. + * lib/Makefile.am (libman_la_SOURCES): Add xchown.c and xchown.h. + * po/POTFILES.in: Add lib/xchown.c. + * src/check_mandirs.c (mkcatdirs): Call xchown instead of chown. + * src/man.c (format_display): Ignore errors from chdir ("/"). + +2016-11-20 Colin Watson + + Make split_page_name allocate its own memory + + * src/man.c (split_page_name): Allocate *ret_name and *ret_section here. + Simplify using xstrdup and xstrndup. + (man): Remove allocation of page_name and page_section. + +2016-11-20 Mihail Konev + + man(1): add .N names + + `man chmod.2` is now the same as `man 2 chmod` + + * src/man.c (split_page_name): New function. + (locate_page_in_manpath): New function. + (man): Factor out common locate_page loop into locate_page_in_manpath. + Add name/section splitting logic. + * src/tests/man-11: New file. + * src/tests/Makefile.am (ALL_TESTS): Add man-11. + * man/man1/man.man1 (SYNOPSIS): Document .
form. + (EXAMPLES): Likewise. + +2016-10-04 Colin Watson + + Fix formatting error in Swedish translation + + * man/po4a/po/sv.po: Translate "\\(rq" as itself rather than as "\\(". + +2016-10-04 Colin Watson + + Rename some anomalous x* functions + + The usual (though not universal) pattern in gnulib is for xfoo to mean + "foo or exit". Rename x* to check_* so that they don't conflict with + this. + + * src/mandb.c (xremove): Rename to ... + (check_remove): ... this. + (xrename): Rename to ... + (check_rename): ... this. + (xchmod): Rename to ... + (check_chmod): ... this. + (xchown): Rename to ... + (check_chown): ... this. + +2016-05-16 Colin Watson + + man(1): Fix incorrect font + + * man/man1/man.man1 (SYNOPSIS): Make "--regex" bold. Thanks to Paul + Townsend. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update; unfuzzy all + translations. + +2016-05-16 Colin Watson + + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +2016-02-04 Colin Watson + + Note caveat with "man -K" + + * man/man1/man.man1 (Main modes of operation): Note that -K searches + page source. Fixes Debian bug #813665. + +2016-01-02 Sebastian Rasmussen + + * po/sv.po: Add missing translator credit comment. + +2016-01-02 Colin Watson + + Fix warnings with Perl 5.22 + + * man/po4a/Locale/Po4a/Manext.pm (shiftline, translate): Escape braces + in regular expressions. + +2016-01-02 Colin Watson + + Add Swedish manual page translation + + * man/po4a/po/sv.po: New from Translation Project (thanks, Sebastian + Rasmussen). + * configure.ac (AC_CONFIG_FILES): Add man/sv/Makefile. + * man/LINGUAS.po4a: Add sv. + * man/Makefile.am (DIST_SUBDIRS): Add sv. + * man/sv/Makefile.am, man/sv/translator.add: New files. + * man/po4a/Makefile.am (POFILES): Add po/sv.po. + * man/po4a/po4a.cfg (po4a_langs): Add sv. + * man/THANKS: Add translator credit. + * .gitignore: Add man/sv/man1, man/sv/man5, and man/sv/man8. + +2015-12-31 Colin Watson + + Upgrade to pkg-config 0.29. + +2015-12-26 Sebastian Rasmussen + + Update Swedish translation + + * po/sv.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2015-12-07 Colin Watson + + Simplify database path handling in mandb + + * src/mandb.c (struct dbpaths): Unconstify xtmpfile. + (finish_up): Free dbpaths->xtmpfile. + (cleanup): Update header comment. Remove unnecessary checks before + frees. Free all database paths for all database types, not just + GDBM. Free dbpaths->xtmpfile. + (mandb): Copy content of database to dbpaths->xtmpfile rather than + just copying the pointer. + +2015-12-07 Colin Watson + + Move some database paths out of global variables + + * src/mandb.c (struct dbpaths): New structure. + (finish_up, do_chown, cleanup_sigsafe, cleanup, mandb): Take dbpaths + argument. + (process_manpath): Allocate dbpaths on the stack, zero it, and pass + it to functions that need it. + +2015-12-07 Colin Watson + + Remove lots of unnecessary inline qualifiers + + It's 2015. The compiler almost certainly knows better than we do. + + * lib/security.c (gripe_set_euid): Remove inline qualifier. + * libdb/db_btree.c (btree_findkey): Likewise. + * libdb/mydbm.h (gdbm_exists): Likewise. + * src/catman.c (catman): Remove obsolete comment. + (add_arg, check_access): Remove inline qualifier. + * src/check_mandirs.c (add_dir_entries): Likewise. + * src/man.c (gripe_system, gripe_no_man, manopt_to_env, escape_less, + is_section, do_prompt, gripe_converting_name): Likewise. + * src/mandb.c (xremove, xrename, xchmod, finish_up, xchown, + do_chown, update_db_wrapper): Likewise. + * src/manp.c (gripe_reading_mp_config, gripe_stat_file, + gripe_not_directory, has_mandir, fsstnd): Likewise. + * src/whatis.c (do_whatis_section): Likewise. + +2015-11-06 Colin Watson + + Belatedly update NEWS date. + + * Version: 2.7.5. + + * NEWS: Document changes since 2.7.4. + +2015-11-06 Colin Watson + + Build text manual with LC_ALL=C + + nroff's UTF-8 output is a bit wonky in this case, but ASCII will do + fine. + + * manual/Makefile.am (.pp.cat): Set LC_ALL=C. + +2015-11-05 Colin Watson + + Disable roff input insertion with --recode + + Reported by Bjarni Ingi Gislason. Fixes Debian bug #751795. + + * src/man.c (display): Don't insert roff input for --no-hyphenation, + --no-justification, or locale macros when the --recode option is used. + +2015-11-05 Colin Watson + + Adjust line number when inserting extra roff input + + Reported by Bjarni Ingi Gislason. Fixes Debian bug #789219. + + * src/man.c (heirloom_line_length, disable_hyphenation, + disable_justification, locale_macros): Emit ".lf 1" after inserted roff + input. + * src/zsoelim.l: Accept .lf without a file name argument. + +2015-10-19 Colin Watson + + Make a mandb error message clearer + + * src/mandb.c (xcopy): Say which file name we failed to fopen. + +2015-10-08 Colin Watson + + Fix Plural-Forms header in Catalan translation + + * po/ca.po (Plural-Forms): Add missing semicolon. + +2015-10-08 Colin Watson + + * Version: 2.7.4. + +2015-10-08 Colin Watson + + man: Honour MANWIDTH in conjunction with -Z + + * src/man.c (get_roff_line_length): Also consider line_length if + ditroff is set. + (make_roff_command): Try add_roff_line_length regardless of troff. + The line length is passed to the macro package, not to the output + device, although get_roff_line_length will still sometimes not use + it (e.g. if using the "ps" device). Fixes Debian bug #801241. + * NEWS: Document this. + +2015-10-08 Colin Watson + + man: Exit 3 if formatter exits non-zero + + * src/man.c (format_display): Keep track of exit statuses from both + format_cmd and disp_cmd, and exit CHILD_FAIL if either is non-zero + and non-SIGPIPE. Fixes Debian bug #801261. + * NEWS: Document this. + +2015-09-22 Colin Watson + + Fix replace.sed prerequisite syntax + + Suffix rules may not have prerequisites. Thanks to Nikola Forró; fixes + Fedora bug #1263930. + + * man/Rules.man: Declare dependency of $(MANS) on replace.sed + separately rather than trying to do so in suffix rules. + * NEWS: Document this. + +2015-09-22 Colin Watson + + Fix crash in manpath deduplication + + * src/manp.c (create_pathlist): Handle NULL return from + canonicalize_file_name. + * NEWS: Document this. + +2015-09-22 Colin Watson + + Upgrade config.guess/config.sub + + * build-aux/config.guess, build-aux/config.sub: Upgrade to + 2015-08-20. + +2015-09-21 Nikola Forró + + Fix typos in italian manpath man page + +2015-09-16 zwpwjwtz + + Update Simplified Chinese manual page translation + + * man/po4a/po/zh_CN.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2015-09-09 Colin Watson + + * Version: 2.7.3. + +2015-09-09 Colin Watson + + Pacify gcc -Wlogical-not-parentheses + + * src/man.c (find_cat_file): Add extra parentheses around + logical-not on the LHS of a comparison. + * lib/util.c (is_changed): Likewise in header comment. + +2015-09-09 OGAWA Hirofumi + + Restore the ability to use 'man -a' noninteractively + + Fixes Debian bug #798094. + + * src/man.c (do_prompt): Return 0 immediately (i.e. view) if neither + stdin nor stdout is a tty. + * NEWS: Document this. + +2015-09-09 Mike Frysinger + + Fix crash when current directory is unreadable + + Fixes Savannah bug #45861. + + * src/man.c (make_display_command): Check have_cwd before trying to + use cwd. + * NEWS: Document this. + +2015-09-09 Colin Watson + + Document squeeze-blank-lines fix + + * NEWS: Document Rafael's squeeze-blank-lines fix. + +2015-09-09 Colin Watson + + Fix use-after-free in ult_src + + Reported by Hanno Boeck. Fixes Savannah bug #45854. + + * src/ult_src.c (ult_src): Take a copy of base when recursing rather + than passing it directly as the new name argument, since it may be + freed by the recursive call. + * NEWS: Document this. + +2015-09-09 Colin Watson + + Remove unnecessary check before free + + * src/ult_src.c (ult_src): Don't check whether base is non-NULL + before freeing it. + +2015-08-30 Rafael Kitover + + Squeeze blank lines internally instead of pager -s + + Add a pipecmd in make_display_command to combine multiple blank lines in + the output into one, which is what e.g. less -s does. + + Stop automatically appending -s to pager command in configure. + + Fixes Debian bug #796584. + + * configure.ac: Stop automatically appending -s to pager command. + * src/man.c (squeeze_blank_lines): New function. + (make_display_command): Add squeeze_blank_lines to display pipeline. + +2015-08-29 Colin Watson + + Make sure CACHEDIR.TAG has correct ownership + + * src/mandb.c (mandb): Change CACHEDIR.TAG's owner to + man_owner->pw_uid when running as root in global manpaths. + (process_manpath): Pass global_manpath to mandb. + +2015-08-29 Colin Watson + + Rewrite CACHEDIR.TAG and databases if they cannot be read + + Fixes Debian bug #797019. + + * src/mandb.c (mandb): Rewrite CACHEDIR.TAG and databases if they + cannot be read (probably due to incorrect ownership). + * NEWS: Document this. + +2015-08-22 Colin Watson + + Try to get terminal width from /dev/tty + + If man is running within something like lesspipe, then there may be + a current tty that neither stdin nor stdout points to. Try to get + hold of it using /dev/tty. Fixes Fedora bug #1255930. + + * lib/linelength.c (get_line_length): Try /dev/tty before either + stdout or stdin. + * NEWS: Document this. + +2015-08-16 Colin Watson + + * Version: 2.7.2. + +2015-08-16 Jordi Mallach + + * po/ca.po: Update from Translation Project. + +2015-08-16 Colin Watson + + Upgrade to Automake 1:1.15-3 (from Debian). + + * NEWS: Document a couple more changes since 2.7.1. + +2015-08-02 Colin Watson + + Upgrade to Automake 1.15. + +2015-08-02 Colin Watson + + Fix inaccurate description of "man -f" + + It's equivalent to "whatis", not "whatis -r". Fixes Fedora + bug #1249377. + + * man/man1/man.man1 (EXAMPLES): "man -k" and "man -f" are equivalent to + "apropos" and "whatis" respectively, not "apropos -r" and "whatis -r". + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update; unfuzzy all + translations. + +2015-08-02 Lauri Nurmi + + * po/fi.po: Update from Translation Project. + +2015-04-08 Colin Watson + + Allow using GDBM's NDBM compatibility layer + + This isn't very useful in practice since anyone using this could just + use GDBM directly instead, but it's helpful for testing. + + * configure.ac: Check for gdbm-ndbm.h and libgdbm_compat. + +2015-04-08 Colin Watson + + Clean up freeing of datum structures + + * libdb/mydbm.h (MYDBM_FREE): Remove. + (MYDBM_FREE_DPTR): New macro. This zeros the data pointer to avoid + double-free problems. + * libdb/db_delete.c (dbdelete): Use MYDBM_FREE_DPTR. + * libdb/db_gdbm.c (man_gdbm_open_wrapper, sortkey_hashtable_free): + Likewise. + * libdb/db_lookup.c (dblookup, dblookup_pattern): Likewise. + * libdb/db_store.c (dbstore): Likewise. + * libdb/db_ver.c (dbver_rd, dbver_wr): Likewise. + * src/accessdb.c (main): Likewise. + * src/catman.c (parse_for_sec): Likewise. + * src/check_mandirs.c (sanity_check_db, purge_pointers, purge_missing): + Likewise. + * src/whatis.c (do_apropos): Likewise. + +2015-04-08 Colin Watson + + Stop storing the database handle in a global variable + + Fixes Ubuntu bug #1304261. + + * libdb/db_delete.c (dbdelete): Take a dbf parameter. Update all + callers and prototypes. + * libdb/db_lookup.c (dblookup, dblookup_all, dblookup_exact, + dblookup_pattern): Likewise. + * libdb/db_store.c (replace_if_necessary, dbstore): Likewise. + * src/check_mandirs.c (test_manfile, add_dir_entries, sanity_check_db, + purge_pointers, purge_normal, purge_whatis): Likewise. + * src/descriptions_store.c (store_descriptions): Likewise. + * src/straycats.c (check_for_stray, open_catdir): Likewise. + * src/whatis.c (resolve_pointers, display, do_whatis_section, do_whatis, + do_apropos): Likewise. + + * src/accessdb.c (main): Declare dbf here rather than at file scope. + * src/catman.c (parse_for_sec): Likewise. + * src/check_mandirs.c (testmandirs, update_db_time, update_db, + purge_missing): Likewise. + * src/man.c (dbdelete_wrapper, try_db): Likewise. + * src/mandb.c (update_one_file): Likewise. + * src/straycats.c (straycats): Likewise. + * src/whatis.c (search): Likewise. + + * libdb/mydbm.h (dbf): Remove. + * src/catman.c (dbf): Rename to ... + (dbf_close_post_fork): ... this. + (rdopen_db): Merge into ... + (parse_for_sec): ... here. + +2015-03-05 Colin Watson + + man: Avoid dubious use of freopen to reopen base streams + + freopen doesn't actually work properly when base streams have been + closed (at least with glibc), and it seems better to simply refuse to + operate in such a non-conforming environment. + + * src/man.c (check_standard_fds): New function. + (main): Call it rather than using freopen. + +2014-11-16 Colin Watson + + Allow building from git without gnulib-tool + + Since we don't want to keep Gnulib translations in revision control, + we need gnulib-tool on $PATH when generating the build system in + order to fetch them, but it's unnecessarily awkward to require + everyone to have this just in order to build man-db from git. Allow + building without this, although it is still required for "make + dist". + + * configure.ac: No longer issue an error if gnulib/po/Makefile.in.in + is missing. Instead, set the Automake conditional HAVE_GNULIB_PO to + true if and only if gnulib/po/POTFILES.in exists, and only create + gnulib/po/Makefile.in if gnulib/po/Makefile.in.in exists. + * Makefile.am (SUBDIRS): Only include gnulib/po if HAVE_GNULIB_PO is + true. + +2014-11-14 Colin Watson + + apropos/whatis: Don't truncate names if long output was requested + + * src/whatis.c (display): Leave page_name intact if long_output is + true. Reported by Calle Erlandsson. + +2014-11-11 David Prévot + + * man/po4a/po/fr.po: Update from Translation Project. + +2014-11-08 Colin Watson + + Pass -l through to apropos/whatis + + Fixes Fedora bug #1161747. + + * src/man.c (do_extern): Pass the -l option through. + +2014-11-07 Colin Watson + + * Version: 2.7.1. + +2014-10-27 Colin Watson + + Send 'man -a' prompts to /dev/tty + + Fixes Debian bug #766113. + + * src/man.c (locale_macros): Write prompts to and read replies from + /dev/tty, rather than stderr and stdin respectively. + * NEWS: Document this. + +2014-10-27 Colin Watson + + Make man run correctly from a deleted directory + + Fixes Debian bug #764384. + + * gnulib: Import save-cwd module. + * src/man.c (make_display_command): Use pipecmd_fchdir rather than + pipecmd_chdir if the working directory was saved using a file + descriptor. + (format_display, main): Save current working directory using + save_cwd rather than xgetcwd. + (format_display, local_man_loop, main): Restore previous working + directory using restore_cwd rather than chdir. + * src/tests/man-10: New file. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Insert the parent + directory into $PATH using an absolute path rather than a relative + one. Export abs_top_builddir rather than top_builddir. + (ALL_TESTS): Add man-10. + * src/tests/testlib.sh (init): Set abstmpdir. Adjust tests to use + this where applicable. + (run): Call libtool using an absolute path. + (skip): Remove abstmpdir. + (finish): Remove abstmpdir rather than tmpdir. + * configure.ac: Require libpipeline >= 1.4.0. + * NEWS: Document this. + +2014-10-22 Colin Watson + + NEWS: Document recent Solaris portability changes + +2014-10-22 Colin Watson + + Fix linking of fspause on Solaris + + * src/tests/fspause.c (main): Set program_name. Patch by Peter Bray. + +2014-10-22 Colin Watson + + autogen.sh: Avoid "export VARIABLE=value" syntax + + Older Solaris shells do not support this. Patch by Peter Bray. + +2014-10-22 Colin Watson + + gnulib: Import strcasestr module. + + Suggested by Peter Bray. + +2014-10-05 Joe Hansen + + * man/po4a/po/da.po: Update from Translation Project. + +2014-09-27 Colin Watson + + * Version: 2.7.0.2. + +2014-09-27 Colin Watson + + Work around lack of UTIME_* on GNU/Hurd + + * gnulib/fdutimens-hurd.patch: New file. + * autogen.sh: Apply gnulib/fdutimens-hurd.patch. + * NEWS: Document this. + +2014-09-27 Colin Watson + + Avoid using or double-closing closed database handles + + Thanks to Andreas Radke and Bruce Dubbs for reporting, and to + Andreas Radke for testing. + + * src/check_mandirs.c (testmandirs): Close dbf if necessary before + (re-)opening it. Zero out dbf after closing it. + (update_db_time, purge_missing): Zero out dbf after closing it. + * src/man.c (dbdelete_wrapper, try_db): Likewise. + * src/mandb.c (update_one_file): Likewise. + * src/straycats.c (straycats): Likewise. + * src/whatis.c (search): Likewise. + * NEWS: Document this. + +2014-09-24 Colin Watson + + * Version: 2.7.0.1. + + * Makefile.am (EXTRA_DIST): Add gnulib/m4/sockpfaf.m4. + +2014-09-23 Colin Watson + + Fix tests when build fs does not support high-precision timestamps + + * gnulib: Import nanosleep module. + * configure.ac: Remove STAT_HAS_NSEC substitution. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Stop exporting + STAT_HAS_NSEC. + (AM_CPPFLAGS, AM_CFLAGS, check_PROGRAMS, fspause_SOURCES, + fspause_LDADD): Add. + * src/tests/fspause.c: New file. + * src/tests/mandb-2, src/tests/mandb-3, src/tests/mandb-4, + src/tests/mandb-5: Call ./fspause rather than next_second. + * src/tests/testlib.sh (next_second): Remove. + * .gitignore: Add src/tests/.deps and src/tests/fspause. + * NEWS: Document this. + +2014-09-22 Colin Watson + + * Version: 2.7.0. + +2014-09-19 Yuri Kozlov + + * man/po4a/po/ru.po: Update from Translation Project. + +2014-09-18 Mario Blättermann + + * man/po4a/po/de.po: Update from Translation Project. + +2014-09-18 Robert Luberda + + * man/po4a/po/pl.po: Update from Translation Project. + +2014-09-18 Colin Watson + + Move zsoelim to pkglibexecdir + + This avoids clashes with other packages; for example, Slackware's groff + package installs zsoelim as a symlink to soelim. + + * src/Makefile.am (bin_PROGRAMS): Move zsoelim to ... + (pkglibexec_PROGRAMS): ... here. + (AM_CPPFLAGS): Adjust ZSOELIM definition to match. + * NEWS: Document this. + +2014-09-18 Colin Watson + + Rename SOELIM definition to ZSOELIM for clarity + + * src/Makefile.am (AM_CPPFLAGS): Define ZSOELIM rather than SOELIM. + * src/man.c (make_roff_command): Use ZSOELIM rather than SOELIM. + +2014-09-17 Colin Watson + + Make sure that generated shared libraries have no undefined symbols + + Based on a change found in + https://github.com/Alexpux/MSYS2-packages/tree/master/man-db. + + * lib/Makefile.am (libman_la_LDFLAGS): Add -no-undefined. + * libdb/Makefile.am (libmandb_la_LDFLAGS): Add -no-undefined. + +2014-09-17 Colin Watson + + Correct a couple of comments in m4/man-arg-*.m4 + + * m4/man-arg-automatic-update.m4: Correct header comment. + * m4/man-arg-systemdtmpfilesdir.m4: Likewise. + +2014-09-17 Colin Watson + + Fix "cannot adjust line" warning when formatting db.me + + * manual/db.me (Contents of an index database): Insert several + zero-width break points in descriptions of entry formats. + +2014-09-17 Colin Watson + + Show a better error message if no browser is configured + + Fixes Savannah bug #37814. + + * src/man.c (format_display): Adjust error message if html_pager is + NULL or the empty string. + * NEWS: Document this. + +2014-09-17 Colin Watson + + Don't store canonicalised versions of manpath elements + + We still compare canonicalised versions, but don't store them. + Storing them results in looking up the wrong catpath in the case + where one of the configured MANDB_MAP entries is a symlink. + + Broken by commit 01e5a4febfc7b6cd53991455315ae7744c8f31dd; fixes + Fedora bug #1043401. + + * src/manp.c (create_pathlist): Compare canonicalised versions of + manpath elements, but don't store them. + * NEWS: Document this. + +2014-09-16 Colin Watson + + Don't use pointed-to name as title for database-located pages + + For a pointer record, the pointed-from name is a legitimate alias + for the located page, and is likely to be closer to the name that + the user requested. + + Fixes Debian bug #709405. + + * src/man.c (display_database): Don't use the pointed-to name to + construct the title for display. + +2014-09-16 Colin Watson + + * Version: 2.7.0-pre1. + +2014-09-16 Colin Watson + + Fix distcheck following addition of systemd tmpfiles snippet + + * Makefile.am (AM_DISTCHECK_CONFIGURE_FLAGS): Add + --with-systemdtmpfilesdir=\$${prefix}/lib/tmpfiles.d. + +2014-09-16 Bjarni Ingi Gislason + + Formatting improvements to man(1) + + Fixes Debian bug #726266. + + * man/man1/man.man1: Protect "." at beginning or end of strings with + "\&". Start sentences on new lines. Insert italic corrections + between adjacent italic and roman characters. Use double quotation + marks around arguments rather than placing "\ " between strings. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +2014-09-16 Colin Watson + + Prioritise COLUMNS above TIOCGWINSZ + + Fixes Ubuntu bug #1315282. + + * lib/linelength.c (get_line_length): Prioritise COLUMNS above + TIOCGWINSZ. + * man/man1/apropos.man1 (DESCRIPTION): Describe new terminal width + priorities. + * man/man1/man.man1 (DESCRIPTION): Likewise. + * man/man1/whatis.man1 (DESCRIPTION): Likewise. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + * NEWS: Document this. + +2014-09-16 Colin Watson + + Use xnrealloc rather than xrealloc in a few more places + + * src/catman.c (parse_opt): Use xnrealloc rather than xrealloc. + * src/globbing.c (update_directory_cache): Likewise. + * src/ult_src.c (ult_trace): Likewise. + +2014-09-16 Colin Watson + + Order files by first physical extent before reading + + Inspired by a similar change in dpkg. This takes 'mandb -c' from + 104 to 32 seconds in a test installation, and 'man -K' from 74 to 38 + seconds. On non-Linux systems where FIEMAP is not available, use + posix_fadvise instead to preload files. + + Fixes Debian bug #574410. + + * gnulib: Import nonblocking and openat modules. + * configure.ac: Check for and posix_fadvise. + * lib/orderfiles.c: New file. + * lib/orderfiles.h: New file. + * lib/Makefile.am (libman_la_SOURCES): Add orderfiles.c and + orderfiles.h. + * src/check_mandirs.c (add_dir_entries): Order files before reading + them. + * src/man.c (try_section, do_global_apropos_section): Likewise. + * src/straycats.c (check_for_stray): Likewise. + * NEWS: Document this. + +2014-09-16 Colin Watson + + * NEWS: Document a couple more changes since 2.6.7.1. + +2014-09-15 Colin Watson + + Merge convert_name into man.c + + * src/convert_name.c (gripe_converting_name): Move to ... + * src/man.c (gripe_converting_name): ... here. + * src/convert_name.c (convert_name): Move to ... + * src/man.c (convert_name): ... here. Make static. + * src/convert_name.h: Remove. + * src/Makefile.am (man_SOURCES): Remove convert_name.c and + convert_name.h. + * po/POTFILES.in: Remove src/convert_name.c. + * po/man-db.pot, po/*.po: Update. + +2014-09-15 Colin Watson + + * tools/README: Update heading to reflect moves to build-aux. + +2014-09-15 Colin Watson + + Make a few libdb functions static + + * libdb/db_lookup.c (copy_if_set, split_data): Make static. + (make_content): Move to ... + * libdb/db_store.c (make_content): ... here. Make static. + * libdb/db_storage.h (split_data, make_content, copy_if_set): Remove + prototypes. + +2014-09-15 Colin Watson + + Make various functions static + + These functions are only used within the same compilation unit, so + have no need for external linkage. + + * src/check_mandirs.c (sanity_check_db): Make static. + * src/mandb.c (is_lang_dir, tried_catdirs_free, purge_catdir, + purge_catsubdirs, purge_catdirs): Likewise. + * src/zsoelim.l (try_compressed): Likewise. + +2014-09-15 Colin Watson + + Remove unused code in lexgrog + + * src/lexgrog.l (rule_profile): Remove unused function and + associated global declarations. + +2014-09-15 Colin Watson + + Reorder functions in man to remove need for header file + + man.h was only needed because of some poor function ordering in man.c. + Reorder functions so that definition comes before use, except in one + case of mutual recursion. + + * src/man.c (main): Move to end of file. + (local_man_loop): Move to immediately before man. + (man): Add a prototype declaration just before local_man_loop, to + cope with mutual recursion. + (do_prompt): Move to immediately above display. + * src/man.h: Remove. + * src/Makefile.am (man_SOURCES): Remove man.h. + +2014-09-15 Colin Watson + + Move argument handling out of configure to new MAN_ARG_* macros + + * m4/man-arg-automatic-create.m4, m4/man-arg-automatic-update.m4, + m4/man-arg-cats.m4, m4/man-arg-config-file.m4, m4/man-arg-db.m4, + m4/man-arg-device.m4, m4/man-arg-mandirs.m4, + m4/man-arg-override-dir.m4, m4/man-arg-sections.m4, + m4/man-arg-setuid.m4, m4/man-arg-systemdtmpfilesdir.m4, + m4/man-arg-undoc.m4: New files. + * configure.ac: Call new macros rather than inlining argument + handling. + +2014-09-15 Colin Watson + + * build-aux/config.sub: Upgrade to 2014-09-11. + +2014-09-12 Colin Watson + + Simplify handling using Gnulib + + * gnulib: Import dirent module. + * configure.ac: Remove obsolescent AC_HEADER_DIRENT macro. + * src/check_mandirs.c: Simplify a large conditional block to + "#include ". + * src/straycats.c: Likewise. + * src/ult_src.c: Likewise. + +2014-09-12 Colin Watson + + Remove old and broken FAST_BTREE code + + This was marked as experimental and broken when I took over man-db + 13 years ago, and I've hardly touched it. There's no point in + keeping it around. + + * include/manconfig.h.in (FAST_BTREE): Remove commented definition. + * libdb/db_btree.c (test_insert, gripe_get, dbstore, dblookup): + Remove. + (btree_flopen): Expand B_FLAGS macro. + (btree_replace): Remove FAST_BTREE case. + * libdb/db_lookup.c (dblookup): Define unconditionally. + * libdb/db_store.c (dbstore): Likewise. + +2014-09-11 Colin Watson + + Speed up the test suite if we have high-precision file timestamps + + * configure.ac: Substitute STAT_HAS_NSEC as "yes" or "no" depending + on whether high-precision file timestamps are available. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Export STAT_HAS_NSEC to + tests. + * src/tests/testlib.sh (next_second): Do nothing if STAT_HAS_NSEC is + "yes". + +2014-09-11 Colin Watson + + Use high-precision timestamps for manual pages + + * lib/util.c (is_changed): Compare high-precision timestamps. + * libdb/db_storage.h (FIELDS): Increment to 10. + (struct mandata): Change "time_t _st_mtime" to "struct timespec + mtime". + * libdb/db_lookup.c (dbprintf): Update mtime display. + (split_content): Store two fields for the mtime (seconds and + nanoseconds). + (make_content): Expect two fields for the mtime. + * libdb/db_store.c (replace_if_necessary): Compare high-precision + timestamps. + * src/check_mandirs.c (test_manfile): Likewise. + * src/man.c (maybe_update_file): Likewise. + * src/straycats.c (check_for_stray): Update initialisation of struct + mandata. + * src/tests/testlib.sh (accessdb_filter): Adjust for new format. + * manual/db.me (Contents of an index database): Describe new format. + (Example database): Update example output. + * NEWS: Document this. + +2014-09-10 Colin Watson + + Move database mtime out of the database into file metadata + + This makes the database reproducible between installations, as long + as the underlying database has predictable behaviour and the set of + installed manual pages (including their timestamps) remains + identical. As a bonus, we now use high-precision times in several + places. + + Fixes Debian bug #760895. + + * gnulib: Import futimens and timespec modules. + * libdb/db_btree.c (btree_get_time, btree_set_time): New functions. + * libdb/db_gdbm.c (man_gdbm_get_time, man_gdbm_set_time): New + functions. + * libdb/db_ndbm.c (ndbm_get_time, ndbm_set_time): New functions. + * libdb/mydbm.h (man_gdbm_get_time, man_gdbm_set_time, + ndbm_get_time, ndbm_set_time, btree_get_time, btree_set_time): Add + prototypes. + (MYDBM_GET_TIME, MYDBM_SET_TIME): New macros. + * src/check_mandirs.c (testmandirs, create_db, count_glob_matches, + purge_normal, purge_whatis, purge_missing): Use high-precision + times. + (update_db_time): Set file modification times rather than updating a + database row. + (create_db, purge_missing): Get database file modification times + rather than fetching a database row. + (purge_missing): If the new will_run_mandb argument is true, reset + the database mtime to its value before purging; this ensures that + mandb will still run as expected afterwards. + * src/check_mandirs.h (purge_missing): Update prototype. + * src/mandb.c (xcopy): Copy access and modification times. + (process_manpath): Work out in advance of purging whether we will + need to run mandb, and pass that to purge_missing. + * include/manconfig.h.in (VER_ID): Bump to 2.5.0. + (KEY): Remove. + + * man/man8/accessdb.man8 (DESCRIPTION), man/it/man8/accessdb.man8 + (DESCRIZIONE): Remove sample output, as it is of limited usefulness + compared to how awkward it is to maintain, especially in text + intended for translation. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + * manual/db.me (Contents of an index database): Remove mention of + $mtime$. + (Example database): Remove $mtime$. Update $version. + + * NEWS: Document this. Bump version to 2.7.0 to correspond to the + database version change. + +2014-09-09 Colin Watson + + Make update_db_time static + + * src/check_mandirs.c (update_db_time): Make this static; its only + uses are within the same file. + * src/check_mandirs.h (update_db_time): Remove prototype. + +2014-09-09 Colin Watson + + Remove unused reset_db_mtime function + + * src/check_mandirs.c (reset_db_mtime): Remove. This function has + been unused since man-db 2.4.2. + * src/check_mandirs.h (reset_db_mtime): Remove prototype. + * src/man.c: Stop including "check_mandirs.h". + +2014-09-09 Colin Watson + + Don't purge entries from databases that fail sanity checks + + * src/check_mandirs.c (purge_missing): Return early if + sanity_check_db fails, for instance in the case of a version + mismatch. + +2014-09-09 Colin Watson + + Switch away from obsolescent utime function + + POSIX.1-2008 marks utime as obsolescent. Switch to variants of the + futimens/utimensat family instead, via Gnulib. Use higher-precision + times for cat pages. + + * gnulib: Import stat-time and utimens modules. + * src/man.c (man_modtime): Change type to struct timespec. + (commit_tmp_cat): Use utimens rather than utime. + (display): Store a higher-precision modification timestamp for + man_file. + +2014-09-09 Colin Watson + + catman: Honour program name transformations + + * src/catman.c (parse_for_sec): Execute MAN rather than "man". + +2014-09-08 Colin Watson + + * man/po4a/po/da.po: Fix po4a syntax error. + +2014-09-08 Colin Watson + + Various autotools upgrades + + * aclocal.m4: Upgrade to pkg-config 0.28. + * build-aux/config.guess: Upgrade to 2014-03-23. + * build-aux/config.sub: Upgrade to 2014-05-01. + * build-aux/ltmain.sh: Upgrade to Libtool 2.4.2-1.10 (from Debian). + +2014-08-30 Joe Hansen + + * man/po4a/po/da.po: Update from Translation Project. + +2014-08-12 Arif E. Nugroho + + * man/po4a/po/id.po: Update from Translation Project. + +2014-08-11 Arif E. Nugroho + + * po/id.po: Update from Translation Project. + +2014-06-18 Colin Watson + + Fix cat page parsing (Debian bug #751934) + + * src/lexgrog.l (find_name): Run "col -b -p -x" over cat pages if + possible before parsing them. + +2014-06-17 Colin Watson + + Add systemd tmpfiles snippet to clean up old cat files after a week + + Fixes Fedora bug #1110274. + + * configure.ac: Accept --with-systemdtmpfilesdir option. + (AC_CONFIG_FILES): Add init/Makefile and init/systemd/Makefile. + * Makefile.am (SUBDIRS): Add init. + * init/Makefile.am: New file. + * init/systemd/Makefile.am: New file. + * init/systemd/man-db.conf: New file. + * .gitignore: Add init/Makefile and init/systemd/Makefile. + +2014-06-17 Colin Watson + + Squash false positive from -Wmaybe-uninitialized + + * src/globbing.c: Initialise pattern_start. + +2014-04-10 Colin Watson + + * Version: 2.6.7.1. + +2014-04-10 Colin Watson + + Remove test suite dependency on realpath(1) + + * src/tests/mandb-7: Prepend "$(pwd -P)/" to $tmpdir in + configuration files rather than calling realpath. + * NEWS: Document this. + +2014-04-10 Colin Watson + + * Version: 2.6.7. + + * Makefile.am (EXTRA_DIST): Add gnulib/argp-domain.patch. + +2014-04-10 Peter Schiffer + + Only create a cache directory tag if catpath != manpath + + * src/mandb.c (mandb): Don't create CACHEDIR.TAG if the catpath is + equal to the manpath. + * src/tests/mandb-7: New file. + * src/tests/Makefile.am (ALL_TESTS): Add mandb-7. + * NEWS: Document this. + +2014-04-10 Colin Watson + + Make cache directory tag creation more readable + + * src/mandb.c (mandb): Move cache directory tag string to ... + (CACHEDIR_TAG): ... here (new macro). + +2014-03-26 Colin Watson + + Run the pager in man's original working directory + + Reported by Peng Yu. + + * src/man.c (make_display_command): Set pager_cmd's working + directory to man's original working directory. + * configure.ac: Require libpipeline >= 1.3.0. + * NEWS: Document this. + +2014-03-26 Colin Watson + + Upgrade to Automake 1:1.14.1-3 (from Debian). + +2014-03-20 Mario Blättermann + + Update German manual page translation + + * man/po4a/po/de.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2014-03-17 Robert Luberda + + * man/po4a/po/pl.po: Update from Translation Project. + +2014-02-20 Colin Watson + + Move Autotools auxiliary build files from tools to build-aux. + + This keeps man-db's own tools separate, reducing confusion, and + "build-aux" is a more conventional location for the Autotools files. + +2014-02-18 Colin Watson + + Upgrade to Gnulib 20140202 and Libtool 2.4.2-1.7 (from Debian). + + * lib/appendstr.c (appendstr): Use size_t type for string lengths. + +2014-01-23 Colin Watson + + Improve compatibility with archaic shells + + * src/tests/man-5: Assign and export shell variables in two steps, + for improved compatibility with some archaic shells. + * src/tests/man-7: Likewise. + * src/tests/man-8: Likewise. + * src/tests/zsoelim-1: Likewise. + +2014-01-23 Colin Watson + + Fix test failure with --enable-undoc + + * src/man.c (gripe_no_man): Don't print "See ... for help" message + when MAN_TEST_DISABLE_UNDOCUMENTED is set in the environment. + * src/tests/man-7: Export MAN_TEST_DISABLE_UNDOCUMENTED=1. + * NEWS: Document this. + +2014-01-23 Colin Watson + + * Version: 2.6.6. + + * man/po4a/Makefile.am (all-local): Make staging files writeable. + + * README: Update copyright to 2014. + +2014-01-23 Colin Watson + + Tidy up override directory support slightly + + * src/manp.c (insert_override_dir): Drop braces. + (get_manpath_from_path): Standardise whitespace. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Use Automake-generated + substitution rather than substituting @override_dir@ again. + +2014-01-23 Peter Schiffer + + Add support for override directory in search path + + * configure.ac: Add --with-override-dir option. + * include/manconfig.h.in (OVERRIDE_DIR): New definition. + * src/manp.c (insert_override_dir): New function. + (get_manpath_from_path): Call it before add_dir_to_list. + * src/tests/man-9: New file. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Set and export + OVERRIDE_DIR. + (ALL_TESTS): Add man-9. + * NEWS: Document this. + +2014-01-23 Colin Watson + + Upgrade to Automake 1.14.1 and Libtool 2.4.2-1.6 (from Debian). + +2014-01-19 Akihiro Sagawa + + Fix macro and hyphenation language handling + + * src/man.c (display): Don't free page_lang if it's going to be used + by locale_macros. + * src/tests/man-8: New file. + * src/tests/Makefile.am (ALL_TESTS): Add man-8. + * NEWS: Document this. + +2014-01-19 David Prévot + + * man/po4a/po/fr.po: Update from Translation Project. + +2014-01-18 Joe Hansen + + * man/po4a/po/da.po: Update from Translation Project. + +2014-01-16 Yuri Kozlov + + * man/po4a/po/ru.po: Update from Translation Project. + +2014-01-16 Colin Watson + + * Version: 2.6.6-pre2. + +2014-01-16 МироÑлав Ðиколић + + Add Serbian translation + + * po/sr.po: New from Translation Project. + * po/LINGUAS: Add sr. + * man/THANKS: Add translator credit. + +2014-01-15 Colin Watson + + * man/po4a/po: Update. + +2014-01-15 Peter Schiffer + + Synchronise manual pages with usage messages + + * man/man1/apropos.man1 (SYNOPSIS): Replace -h with -?. + (OPTIONS): Likewise. Add --usage. + * man/man1/lexgrog.man1 (SYNOPSIS): Add -d. Replace -h with -?. + (OPTIONS): Likewise. Add --usage. + * man/man1/man.man1 (SYNOPSIS): Replace -h with -?. + (OPTIONS): Likewise. Add --path (alias for -w). Add --usage. + * man/man1/manpath.man1 (SYNOPSIS): Replace -h with -?. + (OPTIONS): Likewise. Add --usage. + * man/man1/whatis.man1 (SYNOPSIS): Replace -h with -?. + (OPTIONS): Likewise. Add --usage. + * man/man8/accessdb.man8 (SYNOPSIS): Add -d. Replace -h with -?. + (OPTIONS): Likewise. Add --usage. + * man/man8/catman.man8 (SYNOPSIS): Replace -h with -?. + (OPTIONS): Likewise. Add --usage. + * man/man8/mandb.man8 (SYNOPSIS): Replace -h with -?. + (OPTIONS): Likewise. Add --usage. + +2014-01-15 Colin Watson + + Fix memory leaks related to make_filename + + * src/check_mandirs.c (test_manfile): Remove now-redundant stat. + Free abs_filename. + * src/man.c (display_filesystem): Consolidate return paths. + Consistently free filename. + (display_database): Free file after using it. + (maybe_update_file): Likewise. + +2014-01-15 Peter Schiffer + + Silence error messages for stale database entries (Fedora bug #841431) + + * src/filenames.c (make_filename): Return NULL if the resulting file + is not readable. Update all callers to handle NULL returns. + * src/tests/man-7: New file. + * src/tests/Makefile.am (ALL_TESTS): Add man-7. + * NEWS: Document this. + +2014-01-15 Colin Watson + + * src/tests/man-5, src/tests/man-6: Mark executable. + +2014-01-13 Robert Luberda + + * man/po4a/po/pl.po: Update from Translation Project. + +2014-01-13 Colin Watson + + Fix domain handling in argp + + * gnulib/argp-domain.patch: New file. + * autogen.sh: Apply gnulib/argp-domain.patch. + * NEWS: Document this. + +2014-01-12 Trần Ngá»c Quân + + * po/vi.po: Update from Translation Project. + +2014-01-11 David Prévot + + * man/po4a/po/fr.po: Update from Translation Project. + +2014-01-11 Yuri Kozlov + + * man/po4a/po/ru.po: Update from Translation Project. + +2014-01-10 Colin Watson + + * Version: 2.6.6-pre1. + +2014-01-10 Colin Watson + + Don't update man/po4a/po/ when nothing has changed + + * man/po4a/Makefile.am (DOMAIN): New variable. + (EXTRA_DIST): Use $(DOMAIN). + (STAGING): New variable. + (PO4A_ARGS): Set new "podir" variable. + (RUN_PO4A): New variable. + (all-local): Abbreviate using RUN_PO4A. Copy POT/PO files to + $(STAGING) before running po4a, to avoid updating the master files. + (update-po): Move to ... + (update-po-real): ... here. Abbreviate using RUN_PO4A. Add + --force, since this target is only called when we really want to + update. Copy POT/PO files to $(STAGING) before running po4a, and + only copy them back if the POT file has changed by more than just + the POT-Creation-Date. + (update-po): New rule. Call update-po-real if and only if srcdir = + builddir. + (clean-local): New rule. Remove $(STAGING). + * man/po4a/po4a.cfg (po4a_paths): Refer to $(podir) rather than + $(srcdir)/po4a/po. + * release.sh: Stop removing man/po4a/po/man-db-manpages.pot; this + should no longer be necessary. + +2014-01-03 victory + + * po/ja.po: Update from Translation Project. + +2013-12-09 Colin Watson + + Make it easier to prove that catman option parsing is safe + + * src/catman.c (parse_opt): Check sections before assigning to + sections[i]. (Already always safe, but this makes it easier to + prove.) + +2013-12-09 Colin Watson + + Update documentation for git. + + * docs/HACKING (Sending patches): Suggest 'git diff'. + (Revision control): Update for git. Remove comment about + ChangeLog handling for branches. + * NEWS: Document switch to git. + +2013-12-09 Colin Watson + + gnulib: Import gnupload module. + +2013-12-09 Colin Watson + + Automatically generate ChangeLog from git + + * ChangeLog: Move to ... + * ChangeLog-2013: ... here. + * Makefile.am (EXTRA_DIST): Add ChangeLog-2013. + (dist-hook): Add gen-ChangeLog. + (gen-ChangeLog): New rule, based on that in coreutils. + * gnulib: Import gitlog-to-changelog module. diff --git a/ChangeLog-2013 b/ChangeLog-2013 new file mode 100644 index 0000000..1a5b00d --- /dev/null +++ b/ChangeLog-2013 @@ -0,0 +1,13184 @@ +Mon Dec 9 00:49:22 GMT 2013 Colin Watson + + * .bzrignore: Move to ... + * .gitignore: ... here, adjusting for differences between bzr and + git. + * Makefile.am (EXTRA_DIST): Replace .bzrignore with .gitignore. + * gnulib: Add --no-vc-files. + +Wed Nov 27 11:54:17 GMT 2013 Colin Watson + + * configure.ac: Only call AC_PROG_AR if it is defined, to restore + compatibility with Automake 1.10. + * NEWS: Document this. + +Wed Nov 27 11:48:29 GMT 2013 Colin Watson + + Upgrade to Automake 1.14 and Gnulib 20130805. + +Sat Nov 9 16:21:05 GMT 2013 Colin Watson + + * src/tests/man-4: Remove non-portable uses of "echo -n". Reported + by TheSin. + +Mon Jul 8 03:00:20 BST 2013 Colin Watson + + * src/check_mandirs.c (gripe_rwopen_failed, update_db_time): + Downgrade EAGAIN/EWOULDBLOCK errors from attempts to open a + database read-write to debug messages (Debian bug #684235). + +Mon Jul 8 02:26:07 BST 2013 Colin Watson + + * man/man1/whatis.man1 (NAME): Clarify that whatis displays one-line + descriptions, rather than e.g. the contents of DESCRIPTION + sections (Debian bug #713992). + +Mon Jul 8 02:15:52 BST 2013 Colin Watson + + Reimplement 'apropos --and' in a way that works with the + optimisations introduced in 2.6.2 (Debian bug #678670). + + * src/whatis.c (any_set, all_set): New functions. + (parse_name, parse_whatis): Take an additional found_here + parameter and set its elements. Return void. + (do_apropos): Combine results from parse_name and parse_whatis + properly according to whether --and is set, rather than relying on + counters that will only ever coincidentally match the number of + search keywords. + (main): Remove apropos_seen hash table. + * NEWS: Document this. + +Mon Jul 8 01:30:56 BST 2013 Colin Watson + + * src/man.c (format_display): Simplify using xasprintf. + * src/whatis.c (do_apropos): Likewise. + +Mon Jul 8 00:29:00 BST 2013 Colin Watson + + * man/po4a/po/zh_CN.po: Fix po4a syntax errors. + +Sun Jul 7 22:53:02 BST 2013 Wylmer Wang + + * man/po4a/po/zh_CN.po: Update from Translation Project. + +Fri Jun 28 06:13:17 BST 2013 Colin Watson + + * lib/encodings.c (find_charset_locale): Attempt fallback locales + even if /usr/share/i18n/SUPPORTED exists. (It may exist but none + of the UTF-8 locales mentioned it in may be present; nevertheless, + C.UTF-8 may be available.) + +Thu Jun 27 11:38:56 BST 2013 Colin Watson + + * Version: 2.6.5. + +Thu Jun 27 11:34:40 BST 2013 Colin Watson + + * src/mandb.c (xcopy): Allocate buf on the heap, as 32768 bytes may + be too large for some stacks. Reported by Coverity via Peter + Schiffer. + +Thu Jun 27 10:47:13 BST 2013 Colin Watson + + * docs/HACKING: Mention that xasprintf may be more readable than + appendstr. + * include/manconfig.h.in (mkdbname): Rephrase using xasprintf. + * lib/decompress.c (decompress_open): Likewise. + * lib/pathsearch.c (pathsearch): Likewise. + * lib/tempfile.c (create_tempdir): Likewise. + * lib/util.c (remove_directory): Likewise. + * src/check_mandirs.c (add_dir_entries, mkcatdirs): Likewise. + * src/compression.c (comp_file): Likewise. + * src/convert_name.c (convert_name): Likewise. + * src/globbing.c (make_pattern, match_in_directory, look_for_file): + Likewise. + * src/man.c (parse_opt, display_filesystem, display_database, + do_global_apropos_section): Likewise. + * src/manconv_client.c (add_manconv): Likewise. + * src/mandb.c (mandb, process_manpath, purge_catsubdirs, + purge_catdirs, main): Likewise. + * src/manp.c (pathappend, get_nls_manpath, get_manpath, + read_config_file, has_mandir): Likewise. + * src/ult_src.c (ult_hardlink): Likewise. + * src/whatis.c (simple_convert, use_grep, display, main): Likewise. + * src/zsoelim.l (zsoelim_open_file): Likewise. + + * src/accessdb.c (parse_opt): Use mkdbname to construct default + database path. + +Thu Jun 27 09:43:35 BST 2013 Peter Schiffer + + * lib/encodings.c (get_locale_charset): Free saved_locale. + * src/check_mandirs.c (testmandirs): Close directory handle on + early-return paths. + * src/man.c (local_man_loop): Free locale_manpath's argument after + call. + (main): Likewise. Free cwd, internal_locale, and program_name + before calling gripe_no_name. Free database before exiting. + (format_display) [TROFF_IS_GROFF]: Free old_cwd. + (display) [TROFF_IS_GROFF]: Free page_lang. + (display): Free formatted_encoding. + (find_cat_file): Free cat_dir. + (try_section): Free info and info_buffer if they weren't added to + the candidates. + (display_filesystem): Free title and filename. + (try_db): Free database before setting it. + (man): Free each candidate using free_candidate, not free. + * src/manp.c (get_nls_manpath): Free manpathlist_copy. + (add_nls_manpaths): Free locales_copy. + (add_to_dirlist): Free buf before returning. + * src/whatis.c (suitable_manpath): Free locale_manpath's argument + after call. + (do_whatis): Free page on early-continue path. + +Thu Jun 27 09:38:35 BST 2013 Colin Watson + + * src/manp.c (add_nls_manpaths): Duplicate manpathlist in the case + where locales is NULL or empty, allowing the manpathlist parameter + to be made const. + * src/manp.h (add_nls_manpaths): Update prototype. + * src/man.c (locale_manpath): Make manpath parameter const. + * src/whatis.c (locale_manpath): Likewise. + +Thu Jun 27 09:25:19 BST 2013 Colin Watson + + * src/man.c (get_preprocessors_from_file): Return a non-const string + rather than keeping a static copy. + (get_preprocessors): Return a non-const string. + (make_roff_command): Free the return value of get_preprocessors + before returning. + +Thu Jun 27 08:39:26 BST 2013 Colin Watson + + * src/manconv_client.c (add_manconv): Don't allocate codes until + after checking for the UTF-8/UTF-8 early-return case. + +Thu Jun 27 00:09:48 BST 2013 Colin Watson + + * lib/encodings.c (find_charset_locale): Fix memory leaks. + +Thu Jun 27 00:07:09 BST 2013 Peter Schiffer + + * src/check_mandirs.c (testmandirs): Check return value of chdir. + +Wed Jun 26 22:41:22 BST 2013 Peter Schiffer + + * lib/encodings.c (find_charset_locale): Fall back to C.UTF-8 then + en_US.UTF-8 if /usr/share/i18n/SUPPORTED does not exist, the + requested character set is UTF-8, and the current LC_CTYPE locale + is not UTF-8 (Fedora bug #657409). + * src/tests/man-6: New file. + * src/tests/Makefile.am (ALL_TESTS): Add man-6. + * NEWS: Document this. + +Wed Jun 26 22:33:00 BST 2013 Colin Watson + + * configure.ac: Move check for whether nroff supports warning + control down below check for whether troff is groff, otherwise it + always returns false. Reported by Niels Thykier. + * NEWS: Document this. + +Sun Jun 23 22:50:24 BST 2013 Colin Watson + + * Version: 2.6.4. + +Sun Jun 23 22:44:19 BST 2013 Colin Watson + + Upgrade to Gnulib 20130623. + +Sun Jun 23 21:21:13 BST 2013 Peter Schiffer + Colin Watson + + Search the full manpath when expanding manual pages that consist + only of a .so directive (Fedora bug #693458). + + * src/ult_src.c (find_include): New function, handling manpath + search where necessary. + (ult_src): Call it when a .so directive is found. + * src/Makefile.am (lexgrog_SOURCES): Add globbing.c and globbing.h. + * src/tests/man-5: New file. + * src/tests/Makefile.am (ALL_TESTS): Add man-5. + * NEWS: Document this. + +Sun Jun 23 21:15:45 BST 2013 Colin Watson + + * src/tests/mandb-3: Don't rely on ".so test.1" not working. + +Sun Jun 23 14:35:51 BST 2013 Colin Watson + + * src/manp.c (def_path): Expand wildcards in MANDATORY_MANPATH. + +Sun Jun 23 14:29:34 BST 2013 Colin Watson + + * src/manp.c (guess_manpath): Honour MAN_TEST_DISABLE_PATH + environment variable, allowing the test suite to disable PATH + handling. (May change without notice.) + (read_config_file): Honour MAN_TEST_DISABLE_SYSTEM_CONFIG + environment variable, allowing the test suite to disable reading + the system configuration file. (May change without notice.) + * src/tests/testlib.sh: Set MAN_TEST_DISABLE_SYSTEM_CONFIG=1. + * src/tests/man-4: Set MAN_TEST_DISABLE_PATH=1. + +Sun Jun 23 12:28:19 BST 2013 Colin Watson + + * src/ult_src.c (test_for_include): Return NULL immediately if + buffer is NULL. + (ult_src): Use this to remove a level of indentation. + +Sun Jun 23 11:14:27 BST 2013 Colin Watson + + Upgrade to Automake 1.13.3. + +Fri Jun 14 09:53:47 BST 2013 Robert Luberda + + * man/po4a/po/pl.po: Update from Translation Project. + +Tue Jun 11 12:44:24 BST 2013 Colin Watson + + * man/po4a/po/zh_CN.po: New from Translation Project (thanks, Wylmer + Wang). + * configure.ac (AC_CONFIG_FILES): Add man/zh_CN/Makefile. + * man/LINGUAS.po4a: Add zh_CN. + * man/Makefile.am (DIST_SUBDIRS): Add zh_CN. + * man/zh_CN/Makefile.am, man/zh_CN/translator.add: New files. + * man/po4a/Makefile.am (POFILES): Add po/zh_CN.po. + * man/po4a/po4a.cfg (po4a_langs): Add zh_CN. + * man/THANKS: Add translator credit. + * .bzrignore: Add man/zh_CN/man1, man/zh_CN/man5, and + man/zh_CN/man8. + +Thu Jun 6 12:24:27 BST 2013 Colin Watson + + * configure.ac: Check whether tbl supports the 'x' format character + (e.g. versions of groff before 1.20), and substitute TBL_X_FORMAT + accordingly. + * man/replace.sin.in: Replace "l lx." with "l l." if tbl does not + support the 'x' format character. + +Thu Jun 6 12:03:59 BST 2013 Colin Watson + + * configure.ac: Add a check for whether 'nroff -wmac' works. + * src/man.c (default_roff_warnings, roff_warnings): Define if + NROFF_WARNINGS is defined, rather than TROFF_IS_GROFF. + (options): Hide the --warnings option unless NROFF_WARNINGS is + defined. + (parse_opt, make_roff_command): Handle the --warnings option if + NROFF_WARNINGS is defined, rather than TROFF_IS_GROFF. + +Thu Jun 6 11:11:36 BST 2013 Colin Watson + + * configure.ac: Set MANDIR_LAYOUT using AC_SUBST as well as + AC_DEFINE/AC_DEFINE_UNQUOTED. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Export MANDIR_LAYOUT. + * src/tests/testlib.sh (skip): New function. + * src/tests/man-3: Skip unless the GNU layout is in use. + +Thu Jun 6 10:57:17 BST 2013 Colin Watson + + * src/tests/man-1, src/tests/man-2, src/tests/man-3, + src/tests/man-4, src/tests/mandb-1, src/tests/mandb-2, + src/tests/mandb-3, src/tests/mandb-4, src/tests/mandb-5, + src/tests/mandb-6, src/tests/whatis-1, src/tests/zsoelim-1: Export + MANPATH separately rather than trying to set it just for the 'run' + function. The latter approach does not seem to work reliably in + FreeBSD's /bin/sh. + * src/tests/testlib.sh: Stop exporting MANPATH here. + +Thu Jun 6 09:37:46 BST 2013 Colin Watson + + * configure.ac: Use BSD layout on *-*bsd* (e.g. FreeBSD), not just + *-bsd*. + Test for Berkeley DB in libc, as is the case on FreeBSD. + +Thu Jun 6 09:36:09 BST 2013 Colin Watson + + * src/check_mandirs.c (purge_missing) [NDBM]: Check for the + existence of DATABASE.dir rather than DATABASE. + +Thu Jun 6 09:32:24 BST 2013 Colin Watson + + * src/catman.c (add_arg): MYDBM_DSIZE may return size_t; cast (for + the cases where it returns int instead) and format using %zu + rather than %d. + +Thu Jun 6 09:01:46 BST 2013 Trần Ngá»c Quân + + * po/vi.po: Update from Translation Project. + +Thu Jun 6 02:51:15 BST 2013 Colin Watson + + * src/tests/testlib.sh: Export LC_ALL and MANPATH, for the benefit + of shells that do not automatically re-export variables they + receive in their environment. + +Thu Jun 6 02:50:25 BST 2013 Colin Watson + + * src/descriptions_store.c (store_description): Format size_t using + %zu, not %d. + +Thu Jun 6 02:40:10 BST 2013 Colin Watson + + * src/tests/manconv-2, src/tests/manconv-3: Use octal escapes rather + than hexadecimal escapes; the latter are not portable to all + printf(1) implementations. + +Thu Jun 6 01:49:32 BST 2013 Colin Watson + + * man/Rules.man (TESTS_ENVIRONMENT): Quote variable assignments. + +Thu Jun 6 01:43:29 BST 2013 Colin Watson + + * man/Rules.man (TESTS_ENVIRONMENT): Move environment variable + settings here, rather than using non-portable 'export'. + +Thu Jun 6 01:39:29 BST 2013 Colin Watson + + * docs/INSTALL.quick: Reformat external package requirements as a + bullet list. Add flex >= 2.5.30. + +Thu Jun 6 01:32:19 BST 2013 Colin Watson + + * tools/config.guess: Update to 2013-05-16. + * tools/config.sub: Update to 2013-04-24. + +Tue Jun 4 09:38:08 BST 2013 David Prévot + + * man/po4a/po/fr.po: Update from Translation Project. + +Mon Jun 3 22:59:03 BST 2013 Yuri Kozlov + + * man/po4a/po/ru.po: Update from Translation Project. + +Mon Jun 3 13:06:43 BST 2013 Colin Watson + + * Version: 2.6.4-pre1. + +Mon Jun 3 12:39:22 BST 2013 Colin Watson + + * NEWS: Document changes since 2.6.3. + +Mon Jun 3 12:18:55 BST 2013 Colin Watson + + * manual/files.me (NLS manual pages): Wrap a table cell to avoid a + line-width warning from nroff. + +Mon Jun 3 12:07:35 BST 2013 Colin Watson + + Quieten most warnings from compiling Gnulib (Debian bug #668429). + + * configure.ac: Add gl_WARN_ADD results to WARN_CFLAGS rather than + CFLAGS. + * lib/Makefile.am (AM_CFLAGS): Add $(WARN_CFLAGS). + * libdb/Makefile.am (AM_CFLAGS): Likewise. + * src/Makefile.am (AM_CFLAGS): Likewise. Move $(libpipeline_CFLAGS) + here from AM_CPPFLAGS. + +Mon Jun 3 00:01:47 BST 2013 Colin Watson + + * src/tests/Makefile.am (AM_LOG_FLAGS): Force each test to run with + the configure-detected shell. + +Thu May 30 12:57:50 BST 2013 Peter Schiffer + Colin Watson + + Add support for wildcards in MANPATH (Fedora bug #677669). + + * src/Makefile.am (catman_SOURCES, manpath_SOURCES, whatis_SOURCES): + Add globbing.c and globbing.h. + * src/globbing.c (expand_path): New function. + * src/globbing.h (expand_path): Add prototype. + * src/manp.c (add_dir_to_list): Rename to ... + (add_expanded_dir_to_list): ... this. + (add_dir_to_list): New function, expanding wildcards and wrapping + add_expanded_dir_to_list. + (add_dir_to_path_list): Expand wildcards. + * src/tests/man-4: New file. + * src/tests/Makefile.am (ALL_TESTS): Add man-4. + +Thu May 30 11:51:54 BST 2013 Colin Watson + + * Makefile.am (EXTRA_DIST): Remove gnulib/gets.patch. + +Thu 30 May 11:42:29 BST 2013 Colin Watson + + Upgrade to Automake 1.13.2 and Gnulib 20130529. + + * .bzrignore: Add gnulib/lib/locale.h, man/**/*.log, man/**/*.trs, + src/tests/*.log, and src/tests/*.trs. + * autogen.sh: Drop gnulib/gets.patch backport. + * gnulib/gets.patch: Remove. + * configure.ac (AM_INIT_AUTOMAKE): Set minimum Automake version to + 1.11. Add parallel-tests option for compatibility with 1.11. + * man/Rules.man (TESTS_ENVIRONMENT): Move to ... + (LOG_COMPILER): ... this. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Rewrite as a list of + variable exports rather than as a command prefix, for + compatibility with parallel-tests. + +Tue May 14 22:55:09 BST 2013 Colin Watson + + * src/lexgrog.l: Define YY_NO_INPUT, suppressing a -Wunused-function + warning from GCC (thanks, Bjarni Ingi Gislason). + * src/zsoelim.l: Likewise. + +Tue May 7 15:27:28 BST 2013 Colin Watson + + * src/man.c (escape_less): Revert handling of incompatible option + string escaping in less 456. That change was reverted upstream in + less 457. + +Sun Mar 3 14:22:32 GMT 2013 Felipe Castro + + * po/eo.po: New from Translation Project. + * po/LINGUAS: Add eo. + * man/THANKS: Add translator credit. + +Sun Mar 3 14:19:38 GMT 2013 Robert Luberda + + * po/pl.po: Update from Translation Project. + * man/po4a/po/pl.po: Likewise. + +Tue Jan 29 13:15:26 GMT 2013 Will + + * src/manp.c (add_to_dirlist): Increase key length to handle buried + binutils manual page paths. + +Mon Jan 21 11:20:48 GMT 2013 Colin Watson + + * configure.ac (AC_HEADER_SYS_WAIT): Remove; no longer used. + +Mon Jan 21 11:04:44 GMT 2013 Colin Watson + + Upgrade to Libtool 2.4.2-1.2 (from Debian). + +Sat Dec 22 13:59:14 GMT 2012 Colin Watson + + Document default section list in manual pages (Debian bug #611007). + + * man/replace.sin.in: Substitute %sections%. + * man/man1/man.man1 (DESCRIPTION): Fix misplaced comma. Document + configured list of sections rather than simply saying "a + pre-defined order". + (ENVIRONMENT): Document default for $MANSECT. + * man/man8/catman.man8 (ENVIRONMENT): Likewise. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +Fri Dec 21 21:29:27 GMT 2012 Colin Watson + + * src/man.c (main): Use $MANLESS as the default for prompt_string if + the -r option was not used. + (setenv_less): Remove code to copy $MANLESS verbatim into $LESS. + * man/man1/man.man1 (Controlling formatted output, ENVIRONMENT): + Describe new behaviour of $MANLESS. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +Sun Dec 16 12:00:55 GMT 2012 Colin Watson + + * src/man.c (escape_less): Handle incompatible change to option + string escaping in less 456. Reported by Vincent Lefevre. + +Sat Dec 15 10:49:46 GMT 2012 Joe Hansen + + * man/po4a/po/da.po: Update from Translation Project. + +Sat Nov 24 22:42:01 GMT 2012 Colin Watson + + * man/po4a/po/da.po: New from Translation Project (thanks, Joe + Hansen). + * configure.ac (AC_CONFIG_FILES): Add man/da/Makefile. + * man/LINGUAS.po4a: Add da. + * man/Makefile.am (DIST_SUBDIRS): Add da. + * man/da/Makefile.am, man/da/translator.add: New files. + * man/po4a/Makefile.am (POFILES): Add po/da.po. + * man/po4a/po4a.cfg (po4a_langs): Add da. + * man/THANKS: Credit Joe Hansen with man/da as well as da.po. + * .bzrignore: Add man/da/man1, man/da/man5, and man/da/man8. + +Mon Sep 17 23:22:48 BST 2012 Colin Watson + + * Version: 2.6.3. + +Mon Sep 17 23:20:19 BST 2012 Colin Watson + + Stop distributing .tar.gz, as promised in the release notes for + 2.6.2. + + * configure.ac (AM_INIT_AUTOMAKE): Add no-dist-gzip. + * docs/man-db.lsm (Primary-site): Drop .tar.gz size. + +Mon Sep 17 22:53:40 BST 2012 Colin Watson + + * autogen.sh, release.sh: Use 'set -e' rather than '#! /bin/sh -e', + to avoid accidents when debugging with 'sh -x'. + +Mon Sep 17 22:53:14 BST 2012 Colin Watson + + * Makefile.am (EXTRA_DIST): Add gnulib/gets.patch. + +Mon Sep 17 22:33:41 BST 2012 Colin Watson + + * configure.ac: Use AM_PROG_AR before LT_INIT, for compatibility + with Automake 1.12. + * NEWS: Document this. + +Mon Sep 17 22:28:27 BST 2012 Colin Watson + + Backport Gnulib commit 66712c23388e93e5c518ebc8515140fa0c807348 to + stop assuming gets (Savannah bug #37255). + + * gnulib/gets.patch: New file. + * autogen.sh: Apply gnulib/gets.patch. + * NEWS: Document this. + +Mon Sep 17 22:07:02 BST 2012 Colin Watson + + Upgrade to Automake 1.11.6. + +Thu Aug 16 12:08:48 BST 2012 Trần Ngá»c Quân + + * po/vi.po: Update from Translation Project. + * man/THANKS: Update. + +Mon Jun 18 13:37:45 BST 2012 Colin Watson + + * Version: 2.6.2. + * man/po4a/po/man-db-manpages.pot, po/man-db.pot, po/*.po: Update. + +Mon Jun 18 13:34:31 BST 2012 Ville Skyttä + + * configure.ac: Add elinks and w3m to list of HTML browsers to + search for. + +Mon Jun 18 13:02:06 BST 2012 Colin Watson + + * configure.ac: Adjust indentation. Set unlzma to empty if xz is + found. + +Mon Jun 18 12:56:56 BST 2012 Ville Skyttä + + * configure.ac: Only check for lzma if xz is not found. + * include/comp_src.h.in (comp_list): Likewise. + +Mon Jun 18 11:40:27 BST 2012 Colin Watson + + * configure.ac (AM_INIT_AUTOMAKE): Distribute tarballs compressed + using xz as well as gzip. + +Mon Jun 18 11:24:30 BST 2012 Colin Watson + + * src/whatis.c (main): Make the global configuration file optional + if a user configuration file was supplied. Fixes test suite. + +Mon Jun 18 10:59:41 BST 2012 Colin Watson + + * README (Copyright and licensing): Update FSF copyright years. + +Mon Jun 18 10:55:53 BST 2012 Colin Watson + + Upgrade to Autoconf 2.69, Automake 1.11.5, and Gnulib + 20120404-stable. + +Mon Jun 18 04:20:41 BST 2012 Colin Watson + + Avoid fatal errors when opening a 64-bit GDBM database from a 32-bit + process (Ubuntu bug #1001189). + + * libdb/db_gdbm.c (trap_error): New function. + (man_gdbm_open_wrapper): Rearrange interface to call gdbm_open + rather than taking its return value as an argument. Fetch a test + value from the database after opening it, inside a setjmp/longjmp + guard to prevent GDBM from exiting. + * include/mydbm.h (man_gdbm_open_wrapper): Update prototype. + (MYDBM_CTRWOPEN, MYDBM_CRWOPEN, MYDBM_RWOPEN, MYDBM_RDOPEN): + Update man_gdbm_open_wrapper calls, since it now calls gdbm_open + itself. + * NEWS: Document this. + +Mon May 14 16:40:00 PDT 2012 Colin Watson + + * NEWS: The fix for Ubuntu bug #927028 also fixed Debian bug #672661 + along the way. Document this. + +Fri May 4 15:36:58 BST 2012 Martin Eberhard Schauer + + * man/po4a/po/de.po: Update from Translation Project. + +Thu Apr 26 09:28:44 BST 2012 Arun Persaud + + * po/de.po: Update from Translation Project. + +Thu Apr 19 11:19:19 BST 2012 Arun Persaud + + * po/de.po: Update from Translation Project. + * man/THANKS: Update. + +Sun Apr 8 09:43:11 BST 2012 Marek ÄŒernocký + + * po/cs.po: Update from Translation Project. + +Mon Mar 19 10:57:16 GMT 2012 Joe Hansen + + * po/da.po: Update from Translation Project. + +Mon Feb 27 13:26:47 GMT 2012 Colin Watson + + * src/whatis.c (main): Move locale manpath expansion to ... + (locale_manpath): ... here (new function). + (suitable_manpath): New function. + (do_whatis): If a page contains a slash and is a path to an + executable on $PATH, then look up its base name only in + appropriate manual hierarchies. + (search): Pass current manpath entry to do_whatis. + * src/tests/whatis-1: New file. + * src/tests/Makefile.am (ALL_TESTS): Add whatis-1. + * NEWS: Document this. + +Wed Feb 22 03:04:45 GMT 2012 Colin Watson + + Optimise apropos when given many arguments (Ubuntu bug #927028). + + * src/whatis.c (use_grep, do_whatis, parse_name, parse_whatis, + do_apropos, search): Operate on multiple pages. + (use_grep, do_whatis, do_apropos): Update an output array rather + than returning an int. + (parse_name, parse_whatis): Update an output array as well as + returning an int. + (display, do_whatis_section): Constify page argument. + (match): Constify lowpage and whatis arguments. + (main): Process all arguments using a single call to search. + * NEWS: Document this. + +Wed Feb 22 02:46:22 GMT 2012 Colin Watson + + * lib/encodings.c (fallback_source_encoding, fallback_roff_encoding, + fallback_less_charset): Save memory by declaring as const char[] + rather than const char * (see http://glandium.org/blog/?p=2361). + (find_charset_locale): Likewise for supported_path. + * src/man.c (default_roff_warnings): Likewise. + +Sat Feb 18 09:34:42 GMT 2012 Colin Watson + + * lib/hashtable.c (hashtable_lookup_structure): Make return type + more precise. + * lib/hashtable.h (hashtable_lookup_structure): Update prototype. + +Thu Feb 16 10:55:05 GMT 2012 Colin Watson + + * Makefile.am (EXTRA_DIST): Add gnulib/m4/math_h.m4. + +Tue Feb 14 12:18:50 GMT 2012 Colin Watson + + * Version: 2.6.1. + * man/po4a/po/man-db-manpages.pot, po/man-db.pot, po/*.po: Update. + +Thu Feb 9 08:44:09 GMT 2012 Colin Watson + + Upgrade to Automake 1.11.3. + +Thu Feb 9 08:16:12 GMT 2012 Colin Watson + + * src/lexgrog.l, src/zsoelim.l: Ensure that config.h is included at + the very top of the scanner, before any other headers. This + should fix a compilation problem on Solaris reported by Clark J. + Wang. + +Wed Feb 8 14:07:41 GMT 2012 Joe Hansen + + * po/da.po: Update from Translation Project. + +Tue Feb 7 00:20:51 GMT 2012 Colin Watson + + * docs/INSTALL.quick: Document requirement for libiconv >= 1.8 on + non-glibc systems. + +Mon Feb 6 23:00:33 GMT 2012 David Prévot + + * man/po4a/po/fr.po, po/fr.po: Update from Translation Project. + +Mon Feb 6 22:57:12 GMT 2012 Yuri Kozlov + + * man/po4a/po/ru.po, po/ru.po: Update from Translation Project. + +Mon Feb 6 10:45:22 GMT 2012 Colin Watson + + * FAQ: New file. + * Makefile.am (dist_noinst_DATA): Add FAQ. + +Sun Feb 5 21:59:39 GMT 2012 Colin Watson + + * README (Notice to users of man-db version 2.2 or 2.2.1): Remove + this section. The chances of anyone still running man-db versions + from 1995 seem remote in the extreme. + +Sun Feb 5 21:57:49 GMT 2012 Colin Watson + + * release.sh: Make sure that src/lexgrog.c and src/zsoelim.c are + fresh. + +Sun Feb 5 15:36:52 GMT 2012 Colin Watson + + * README (Copyright and licensing): New year. + +Sun Feb 5 13:14:42 GMT 2012 Colin Watson + + * manual/README: Fix spelling mistake. + +Sun Feb 5 02:11:04 GMT 2012 Colin Watson + + * Version: 2.6.1-pre1. + * man/po4a/po/man-db-manpages.pot, po/man-db.pot, po/*.po: Update. + +Sun Feb 5 01:34:14 GMT 2012 Colin Watson + + Fix 'make distcheck' to pass with Automake 1.11.2. + + * Makefile.am (distuninstallcheck_listfiles): Ignore the + configuration file, which is deliberately left in place on + uninstall. + * configure.ac (AM_INIT_AUTOMAKE): Add -Wno-override. + * src/Makefile.am (EXTRA_DIST): Force distribution of lexgrog.c and + zsoelim.c. + +Sun Feb 5 00:53:23 GMT 2012 Colin Watson + + * docs/HACKING (Revision control): Recommend 'bzr branch' rather + than 'bzr get'; the latter is apparently deprecated in bzr 2.4. + +Sat Feb 4 23:38:15 GMT 2012 David Prévot + + * man/man1/apropos.man1 (SEE ALSO), man/man1/lexgrog.man1 (SEE + ALSO), man/man1/man.man1 (SEE ALSO), man/man1/manconv.man1 (SEE + ALSO), man/man1/manpath.man1 (SEE ALSO), man/man1/whatis.man1 (SEE + ALSO), man/man1/zsoelim.man1 (SEE ALSO), man/man8/catman.man8 (SEE + ALSO), man/man8/mandb.man8 (SEE ALSO): Alphabetise references and + remove trailing full stops, per man-pages(7) (Debian bug #651482). + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +Sat Feb 4 23:27:39 GMT 2012 Marek ÄŒernocký + + * po/cs.po: Update from Translation Project. + * man/THANKS: Update. + +Sat Feb 4 23:10:58 GMT 2012 Colin Watson + + * libdb/db_lookup.c (split_data): Use ngettext to translate strings + containing plural forms (Savannah bug #34968). + * src/lexgrog.l (too_big): Likewise. + * src/mandb.c (main): Likewise. + * po/man-db.pot, po/*.po: Update. + +Sat Feb 4 21:44:47 GMT 2012 Colin Watson + + * src/man.c (options): Add --path as an alias for -w. + (main): Running 'man -w' (etc.) without a name now prints the + manpath, for compatibility with other man implementations. + * NEWS: Document this. + +Thu Feb 2 18:05:16 GMT 2012 Colin Watson + + * include/comp_src.h.in (comp_list): Don't handle .lzma files using + lzip. Requested by Matias A. Fonzo. + +Thu Feb 2 01:51:18 GMT 2012 Colin Watson + + Fix some errors spotted by the clang static analyser. Some just + needed to be suppressed, but there were two real bugs. + + * src/manconv.c (try_iconv): Make sure outptr is always initialised, + even in the corner case where we convert some input text but don't + get any UTF-8 text in return. + * src/manp.c (get_catpath): Handle manpaths not containing a slash. + + * src/convert_name.c: Mark as non-returning, and add an abort after + error (FATAL) to help the compiler prove this. + * src/man.c (format_display): Add an assert to help clang prove that + old_cwd is always non-NULL when used. + * src/ult_src.c: Add asserts to help clang prove that buf is always + non-NULL when used. + +Thu Feb 2 00:02:07 GMT 2012 Matias A. Fonzo + + Add support for Lzip-compressed manual pages. + + * configure.ac: Check for lzip. Don't test for lzma if lzip is + present, as was already the case for xz. + * include/comp_src.h.in (comp_list): Add lzip. + * include/manconfig.h.in: Define UNLZIP. + * NEWS: Document this. + +Wed Feb 1 23:25:03 GMT 2012 Colin Watson + + Upgrade to Automake 1.11.2 and Gnulib 20111211-stable. + + * gnulib: Import closedir, fstat, and opendir modules. + +Wed Nov 2 14:33:18 GMT 2011 Robert Luberda + + * man/po4a/po/pl.po: Update from Translation Project. + +Sun Oct 9 23:32:41 BST 2011 Colin Watson + + * lib/hashtable.c (null_hashtable_free): Use ATTRIBUTE_UNUSED to + appease compiler warnings rather than assigning an argument to + itself. + * src/mandb.c (cleanup_sigsafe, cleanup): Likewise. + +Sun Oct 9 23:14:11 BST 2011 Colin Watson + + * src/man.c (get_roff_line_length, add_roff_line_length): Only + compile if either TROFF_IS_GROFF or HEIRLOOM_NROFF is defined. + Spotted by cppcheck. + +Sun Oct 9 22:50:36 BST 2011 Colin Watson + + * src/manp.c (add_to_dirlist): Read lines from configuration file + using getline rather than fgets with a fixed-size buffer. + +Sun Oct 9 22:42:00 BST 2011 Colin Watson + + * gnulib: Import getline module (used in lib/encodings.c). + +Sun Oct 9 22:26:15 BST 2011 Colin Watson + + * man/es/man8/accessdb.man8: Remove; this is simply an out-of-date + copy of the English page. Reported by KÅ™iÅ¡tof Želechovski. + * man/es/Makefile.am (man8_MANS): Remove man8/accessdb.8. + +Sun Oct 9 22:21:19 BST 2011 Colin Watson + + Upgrade to Gnulib 20110908-stable. + +Sun Oct 9 00:24:22 BST 2011 Peter Schiffer + + * src/filenames.c (filename_info): Zero-initialise the contents of + info to avoid a double-free in store_descriptions (Fedora bug + #702904). + * src/tests/mandb-6: New file. + * src/tests/Makefile.am (ALL_TESTS): Add mandb-6. + * NEWS: Document this. + +Sun Oct 9 00:16:25 BST 2011 Colin Watson + + * NEWS: Update. + +Sat Oct 8 23:34:26 BST 2011 Colin Watson + + Convert the German manual pages translation to po4a. + + * man/po4a/po/de.po: New from Translation Project (thanks, Martin + Eberhard Schauer). + * man/LINGUAS: Remove de. + * man/LINGUAS.po4a: Add de. + * man/de/man1, man/de/man5, man/de/man8: Remove. + * man/de/Makefile.am (PO4A_LINGUA): Set to yes. + (EXTRA_DIST): Add translator.add. + (man1_MANS): Add man1/lexgrog.1 and man1/manconv.1. + * man/po4a/Makefile.am (POFILES): Add po/de.po. + * man/po4a/po4a.cfg (po4a_langs): Add de. + * man/THANKS: Credit Martin Schauer with man/de as well as de.po. + * .bzrignore: Add man/de/man1, man/de/man5, and man/de/man8. + +Sat Oct 8 17:11:08 BST 2011 Yasuaki Taniguchi + + * po/ja.po: Update from Translation Project. + +Sat Oct 8 17:09:41 BST 2011 Colin Watson + + * man/THANKS: Consolidate duplicated credit. + +Sat Oct 8 17:07:17 BST 2011 Colin Watson + + Convert the Japanese manual pages translation to po4a. + + * man/po4a/po/ja.po: New from Translation Project (thanks, Yasuaki + Taniguchi). + * man/LINGUAS: Remove ja. + * man/LINGUAS.po4a: Add ja. + * man/ja/man1, man/ja/man5, man/ja/man8: Remove. + * man/ja/Makefile.am (PO4A_LINGUA): Set to yes. + (EXTRA_DIST): Add translator.add. + (man1_MANS): Add man1/lexgrog.1 and man1/manconv.1. + * man/po4a/Makefile.am (POFILES): Add po/ja.po. + * man/po4a/po4a.cfg (po4a_langs): Add ja. + * man/THANKS: Add Yasuaki Taniguchi. + * .bzrignore: Add man/ja/man1, man/ja/man5, and man/ja/man8. + +Sun Sep 18 18:28:37 BST 2011 Colin Watson + + * src/tests/mandb-5: Make executable. + +Sat Sep 17 13:28:33 BST 2011 Colin Watson + + * docs/HACKING (Revision control): man-db's Bazaar repository now + requires bzr 1.16 or later. + +Mon Sep 5 11:29:53 BST 2011 Colin Watson + + * src/mandb.c: Include "xvasprintf.h" for xasprintf. + +Mon Aug 8 14:00:32 BST 2011 Colin Watson + + * src/mandb.c (mandb): Create a cache directory tag, per + http://www.brynosaurus.com/cachedir/ ("Cache Directory Tagging + Standard"). Suggested by Josh Triplett (Debian bug #637046). + +Fri Jul 8 13:27:41 BST 2011 Colin Watson + + * src/mandb.c (xcopy): Use a 32KiB buffer when copying files, rather + than a 1KiB buffer. This seems somewhat faster (although it's + hard to tell on an SSD!). + +Fri Jul 8 12:49:46 BST 2011 Colin Watson + + Upgrade to Gnulib 20110609-stable. + +Thu Jun 16 12:18:08 BST 2011 Colin Watson + + * libdb/db_btree.c, libdb/db_ndbm.c: Stop including "flock.h", + removed in 2.6.0. Reported by Maciej Mrozowski. Include + unconditionally, since Gnulib now provides it. + * NEWS: Document this. + +Mon Jun 6 11:25:28 BST 2011 Colin Watson + + * man/po4a/Locale/Po4a/Manext.pm (translate): Exclude a number of + untranslatable table entries from translation. + +Mon Jun 6 10:36:01 BST 2011 David Prévot + + * man/po4a/po/fr.po: Update from Translation Project. + +Mon Jun 6 10:34:26 BST 2011 Colin Watson + + * man/man8/accessdb.man8 (NAME): Remove trailing full stop + (suggested by David Prévot). Unfuzzy all translations. + +Mon Jun 6 10:06:09 BST 2011 Colin Watson + + * src/straycats.c (check_for_stray): Pass mandir_base as base + argument to store_descriptions, not mandir. Regression introduced + in man-db 2.6.0 (r1309). + +Sat Jun 4 07:33:36 BST 2011 Colin Watson + + * src/straycats.c (check_for_stray): When invoking col, try to + ensure that LC_CTYPE is set to a UTF-8 locale (Arch Linux bug + #18722). + +Fri Jun 3 10:05:45 BST 2011 David Prévot + + * man/po4a/po/fr.po: Update from Translation Project. + +Tue May 31 01:04:26 BST 2011 Colin Watson + + * lib/encodings.c (get_locale_charset): Eliminate ctype variable, + which was set but not used. + * src/man.c (make_roff_command): Preprocess out code to set + using_tbl if GNU_NROFF is defined, since that code is only used if + it is not defined. + +Tue May 31 00:59:01 BST 2011 Colin Watson + + * src/man.c (locale_macros): Add a backslash to the end of the .if + line, to avoid adding a blank line to the output (Debian bug + #628639). + +Fri May 20 16:35:02 BST 2011 Yasuaki Taniguchi + + * po/ja.po: Update from Translation Project. + +Wed May 18 17:25:46 BST 2011 Yasuaki Taniguchi + + * po/ja.po: Update from Translation Project. + * man/THANKS: Update. + +Fri May 13 16:11:07 BST 2011 Martin Eberhard Schauer + + * po/de.po: Update from Translation Project. + +Sat Apr 23 18:54:06 BST 2011 Colin Watson + + * src/Makefile.am (SUBDIRS): Build this directory before tests/, so + that 'make check' works even if 'make' has not been run. + +Sat Apr 23 18:00:34 BST 2011 Colin Watson + + Upgrade to Autoconf 2.68 and Gnulib 20110412-stable. + +Wed Apr 13 11:22:39 BST 2011 Colin Watson + + * Version: 2.6.0.2. + * man/po4a/po/man-db-manpages.pot, po/man-db.pot, po/*.po: Update. + +Wed Apr 13 10:26:07 BST 2011 Colin Watson + + * src/descriptions.c (parse_descriptions): Once we've seen at least + one record, ignore any further records that don't include a whatis + description, as they tend to be noise (Arch Linux bug #22866). + * NEWS: Document this. + +Tue Apr 12 14:10:17 BST 2011 Jordi Mallach + + * po/ca.po: Update from Translation Project. + +Tue Apr 12 14:03:38 BST 2011 Colin Watson + + * src/check_mandirs.c (test_manfile): whatis->whatis may be NULL in + the case of an empty page. Guard against this (Debian bug + #622104). + * src/tests/mandb-5: New file. + * src/tests/Makefile.am (ALL_TESTS): Add mandb-5. + * NEWS: Document this. + +Sun Apr 10 22:09:10 BST 2011 Colin Watson + + * Version: 2.6.0.1. + * man/po4a/po/man-db-manpages.pot, po/man-db.pot, po/*.po: Update. + +Sun Apr 10 14:45:52 BST 2011 Colin Watson + + * src/manp.c (read_config_file): Read a user-specified configuration + file even if HOME is unset. + * NEWS: Document this. + +Sun Apr 10 02:10:56 BST 2011 Colin Watson + + * src/descriptions_store.c (store_descriptions): Ensure that the + target of a symlink or .so chain is always recorded as a real + page. Fixes mandb-2 test failures. + * NEWS: Document this. + +Sun Apr 10 01:55:28 BST 2011 Colin Watson + + * src/tests/mandb-2: Test the case where a manual page changes from + a symbolic link to a regular file, as well as vice versa. + +Sat Apr 9 13:30:16 BST 2011 Colin Watson + + * Version: 2.6.0. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po, po/man-db.pot, + po/*.po: Update. + +Sat Apr 9 13:21:08 BST 2011 Colin Watson + + Upgrade to Libtool 2.4. + +Sat Apr 9 12:56:02 BST 2011 Colin Watson + + * man/man1/man.man1 (Controlling formatted output): Wrap first cell + in --ascii translation table. + * man/man8/mandb.man8 (DATABASE CACHES): Wrap second cell in + database type table. + * man/po4a/Locale/Po4a/Manext.pm (shiftline): Fix T} detection. + * man/po4a/po/ru.po: Don't translate "\\*[softhyphen]". + +Sat Apr 9 11:52:20 BST 2011 Colin Watson + + * man/man1/man.man1 (DESCRIPTION): Typeset ellipses in roman rather + than bold (thanks, David Prévot). + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + Manually unfuzzy translations. + +Sat Apr 9 11:42:51 BST 2011 Robert Luberda + + * man/po4a/po/pl.po: Update from Translation Project. + * po/pl.po: Likewise. + +Sat Apr 9 11:38:52 BST 2011 Yuri Kozlov + + * man/po4a/po/ru.po: Update from Translation Project. + +Thu Apr 7 12:46:34 BST 2011 Colin Watson + + * lib/cleanup.c (do_cleanups): Set tos and nslots to 0 before + freeing stack, in case do_cleanups_sigsafe is called again from a + signal handler (Fedora bug #694332). + * NEWS: Document this. + +Sat Apr 2 12:20:30 BST 2011 David Prévot + + * po/fr.po: Update from Translation Project. + +Mon Mar 28 17:59:45 BST 2011 Yuri Kozlov + + * po/ru.po: Update from Translation Project. + +Mon Mar 28 17:40:36 BST 2011 Colin Watson + + * gnulib: Import flock module. + * lib/Makefile.am (libman_la_SOURCES): Remove flock.h. + * lib/README: Remove flock.*. + * lib/flock.c, lib/flock.h: Remove. + +Mon Mar 28 13:07:50 BST 2011 Colin Watson + + * libdb/mydbm.h (btree_close, btree_exists, btree_fetch, + btree_firstkey, btree_nextkey, btree_replace, btree_nextkeydata): + Drop inline specifier; these functions are typically used from + different translation units from their definitions. + +Mon Mar 28 12:59:54 BST 2011 Colin Watson + + * configure.ac: Add support for db5. + * NEWS: Document this. + +Mon Mar 28 12:26:54 BST 2011 Colin Watson + + * configure.ac: Apply correct M4 quotation throughout. + * m4/man-bdb.m4: Likewise. + * m4/man-gnu-nroff.m4: Likewise. + * m4/man-linguas.m4: Likewise. + * m4/man-trans-subst.m4: Likewise. + + * m4/man-bdb.m4: Use AS_VAR_IF rather than AS_IF plus AS_VAR_GET. + +Mon Mar 28 11:15:16 BST 2011 Joe Hansen + + * po/da.po: Update from Translation Project. + +Mon Mar 28 11:12:38 BST 2011 David Prévot + + * man/po4a/po/fr.po: Update from Translation Project. + * man/THANKS: Update. + +Mon Mar 28 11:09:19 BST 2011 David Prévot + + * po/fr.po: Update from Translation Project. + +Mon Mar 28 11:06:04 BST 2011 Colin Watson + + * m4/man-gcc-warning.m4: Remove. + * gnulib: Import warnings module. + * configure.ac: Replace MAN_GCC_WARNING with gl_WARN_ADD. + +Sun Mar 27 18:25:25 BST 2011 Colin Watson + + * Version: 2.6.0-pre1. + * po/man-db.pot, po/*.po: Update. + * man/po4a/po/man-db-manpages.pot: Update. + +Thu Mar 24 12:46:38 GMT 2011 Colin Watson + + * lib/security.c (do_system_drop_privs_child): Remove unused + variable. + +Thu Mar 24 12:43:51 GMT 2011 Colin Watson + + * src/man.c (lang): Make non-const. + (local_man_loop): Free lang after calling display. + (display_filesystem): Likewise. + (display_database): Likewise. + (do_global_apropos_section): Ensure lang is set while calling + display. + * NEWS: Document this. + +Thu Mar 24 01:22:00 GMT 2011 Colin Watson + + Help novices find their way around. See + http://brainstorm.ubuntu.com/idea/25975. + + * src/man.c (main): Add "(press h for help or q to quit)" to the + default less prompt string. + * man/man1/man.man1 (Controlling formatted output): Update + documentation. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + * NEWS: Document this. + +Thu Mar 24 01:03:13 GMT 2011 Colin Watson + + Rewrite all remaining subprocess handling in terms of libpipeline. + + * lib/security.c (do_system_drop_privs_child): New function. + (do_system_drop_privs): Rewrite using libpipeline. + * src/catman.c (post_fork): New function. + (catman): Rewrite using libpipeline. + (add_arg): Rewrite as a wrapper around pipecmd_arg. + (do_catman): Remove. + (reset_cursor): Remove. + (parse_for_sec): Use libpipeline for subprocess handling. + (main): Install custom post-fork handler. + * src/man.c (gripe_no_man) [_AIX || __sgi]: Rewrite vendor fallback + using libpipeline. + * src/Makefile.am (catman_LDADD): Add $(libpipeline_LIBS). + + * src/catman.c (main): Duplicate the output of setlocale if + non-NULL. + + * configure.ac (AC_FUNC_VFORK): Remove. + (AC_REPLACE_FUNCS): Remove waitpid. + * gnulib: Remove waitpid module. + * lib/README: Remove waitpid.c. + * lib/waitpid.c: Remove. + +Sun Mar 20 12:58:42 GMT 2011 Colin Watson + + Remove the need for our patched version of xstrdup. + + * lib/encodings.c (get_locale_charset): Check return value of + setlocale before passing to xstrdup. + (find_charset_locale): Likewise. + * lib/pathsearch.c (pathsearch): Check return value of getenv before + passing to xstrdup. + (pathsearch_executable): Likewise. + * lib/tempfile.c (create_tempdir): Adjust appendstr call to avoid + needing to pass return value of path_search to xstrdup. + * src/check_mandirs.c (test_manfile): Don't pass NULL lg.whatis to + xstrdup. + * src/descriptions.c (parse_descriptions): Don't pass NULL + head->whatis to xstrdup. + * src/man.c (main): Check return value of setlocale before passing + to xstrdup. + (add_col): Only call find_charset_locale if locale_charset is + non-NULL. + (add_candidate): Don't pass NULL ult to xstrdup. + * src/manp.c (read_config_file): Adjust appendstr call to avoid + needing to pass return value of getenv to xstrdup. + * src/whatis.c (do_apropos): Don't pass NULL info.whatis to xstrdup. + (main): Check return value of setlocale before passing to xstrdup. + * src/zsoelim.l (zsoelim_stdin_data_new): Don't pass NULL path to + xstrdup. + + * Makefile.am (EXTRA_DIST): Remove gnulib/lib/xmalloc.c.orig and + gnulib/lib/xmalloc.patch. + * autogen.sh: Stop applying gnulib/lib/xmalloc.patch. + * gnulib/lib/xmalloc.c.orig, gnulib/lib/xmalloc.patch: Remove. + +Sun Mar 20 01:39:41 GMT 2011 Colin Watson + + * gnulib: Import waitpid module. + +Sun Mar 20 01:31:33 GMT 2011 Colin Watson + + Upgrade to Gnulib 20110216-stable. + +Tue Mar 15 10:55:52 GMT 2011 Colin Watson + + * include/manconfig.h.in (STD_SECTIONS): Add section 0 between 3 and + 2, matching a change in man-db 2.5.6. + +Tue Mar 15 10:52:58 GMT 2011 Colin Watson + + * src/man.c (compare_candidates): If the user asked for an explicit + section, sort exact matches first (Fedora bug #684977). + * src/tests/man-3: New file. + * src/tests/Makefile.am (ALL_TESTS): Add man-3. + * NEWS: Document this. + +Tue Mar 15 10:48:19 GMT 2011 Colin Watson + + * src/manp.c (add_sections): Put user entries in a separate list. + (get_sections): If any user entries are present, use them rather + than system entries. + (add_to_dirlist): Pass user to add_sections. + * NEWS: Document this. + +Mon Mar 14 10:55:39 GMT 2011 Joe Hansen + + * po/da.po: Update from Translation Project. + * man/THANKS: Update. + +Wed Mar 2 11:12:13 GMT 2011 Colin Watson + + * src/mandb.c (main): Reset SIGPIPE to SIG_DFL on startup, to avoid + noisy output in the event that mandb was started from a context + where SIGPIPE was ignored (e.g. Fedora bug #649674). + * NEWS: Document this. + +Tue Jan 25 00:20:29 GMT 2011 Colin Watson + + * src/lexgrog.l (MAN_NAME): Consider .PD requests as paragraph + breaks, to work around poor lexical analysis that causes them to + be matched as .P and emit a stray trailing "D" (Debian bug + #611012). + +Sun Jan 23 23:50:38 GMT 2011 Colin Watson + + * Makefile.am (EXTRA_DIST): Remove gnulib/m4/sockpfaf.m4, which was + removed along with the internal copy of libpipeline. + * man/po4a/Makefile.am (EXTRA_DIST): Add Locale/Po4a/Manext.pm. + (PO4A_ENVIRONMENT): Set PERL5LIB to $(srcdir), not `pwd`. + +Sun Jan 23 17:01:51 GMT 2011 Colin Watson + + * man/man1/apropos.man1 (OPTIONS), man/man1/lexgrog.man1 (OPTIONS), + man/man1/man.man1 (OPTIONS), man/man1/manconv.man1 (OPTIONS), + man/man1/manpath.man1 (OPTIONS), man/man1/whatis.man1 (OPTIONS), + man/man1/zsoelim.man1 (OPTIONS), man/man8/accessdb.man8 (OPTIONS), + man/man8/catman.man8 (OPTIONS), man/man8/mandb.man8 (OPTIONS): + Print commas in roman rather than bold. Based on a patch from + David Prévot (Debian bug #600002). + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + Manually unfuzzy translations. + +Mon Jan 10 20:08:03 GMT 2011 Colin Watson + + If mandb sees that A is a symlink to B, it should never store a + whatis reference for B (Debian bug #204249). + + * src/check_mandirs.c (whatis_hashtable_free): New function. + (test_manfile): Change whatis_hash free function to + whatis_hashtable_free. Fetch an ult_trace structure from ult_src, + record it in whatis_hash in the case of a cache miss, and pass it + to store_descriptions. + * src/descriptions_store.c (is_prefix): New function. + (store_descriptions): Add path and trace parameters. Update all + callers. + * src/descriptions.h (store_descriptions): Update prototype. Count + a match for any name in the provided ult_trace structure as + indicating that we shouldn't create a whatis reference. If a name + matches a trace entry outside the current manual hierarchy, skip + that name entirely. + * src/ult_src.c (ult_trace, free_ult_trace): New functions. + (ult_src): Add trace parameter. Record each file name we + encounter in the trace. Update all callers. + * src/ult_src.h (ult_src): Update prototype. + (free_ult_trace): Add prototype. + * src/Makefile.am (lexgrog_SOURCES): Add filenames.c and + filenames.h. + + * src/tests/mandb-2: Test two-level symlinks. + * src/tests/mandb-4: New file. + * src/tests/Makefile.am (ALL_TESTS): Add mandb-4. + +Mon Jan 10 16:20:22 GMT 2011 Colin Watson + + * man/man1/man.man1 (DESCRIPTION), man/de/man1/man.man1 + (BESCHREIBUNG), man/es/man1/man.man1 (DESCRIPCIÓN), + man/it/man1/man.man1 (DESCRIZIONE), man/ja/man1/man.man1 (説明): + Enclose long table cells in T{ T}. + * man/po4a/Locale/Po4a/Manext.pm: New file, to let us translate + individual table cells separately. + * man/po4a/Makefile.am: Run po4a with PERL5LIB=`pwd`. + * man/po4a/po4a.cfg: Change type to manext. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + * man/check-man: Stop ignoring "table wider than line width" + warnings. + * NEWS: Document this. + +Sat Jan 8 18:21:07 GMT 2011 Colin Watson + + * po/POTFILES.in: Remove lib/pipeline.c (file removed) and + src/descriptions.c (no translatable strings). + * po/man-db.pot, po/*.po: Update. + +Sat Jan 8 18:14:18 GMT 2011 Colin Watson + + Remove obsolete cat* subdirectories as well as NLS subdirectories. + + * src/mandb.c (process_manpath): Store the manpath in tried_catdirs + along with whether it has been seen. + (tried_catdirs_free): New function. + (purge_catdir): Improve message. + (purge_catsubdirs): New function. + (purge_catdirs): Adjust tried_catdirs handling. Call + purge_catsubdirs for both top-level catdirs and NLS catdirs. + (main): Set tried_catdirs free function to tried_catdirs_free. + * NEWS: Document this. + +Sat Jan 8 11:42:13 GMT 2011 Colin Watson + + Remove obsolete NLS subdirectories of cat directories (Debian bug + #558804). + + * lib/hashtable.c (hashtable_iterate): New function. + * lib/hashtable.h (hashtable_iterate): Add prototype. + + * lib/util.c (remove_directory): Add recurse parameter. Add missing + closedir calls. + * include/manconfig.h.in (remove_directory): Update prototype. + * src/man.c (format_display): Update remove_directory callers. + + * src/mandb.c (process_manpath): Add catpath to tried_catpath hash. + Check that manpath exists and is a directory here rather than in + the caller. + (is_lang_dir, purge_catdir, purge_catdirs): New functions. + (main): Create and free tried_catdirs. Move manpath stat checks + to process_manpath. Call purge_catdirs after all manpath entries + have been processed. + + * NEWS: Document this. + +Fri Jan 7 23:49:55 GMT 2011 Colin Watson + + * src/man.c (format_display_and_save): Drop SIGPIPE handling. + pipeline_pump handles this itself, and doing it here means that + SIGPIPE is incorrectly ignored in subprocesses (Debian bug + #597756). + +Fri Jan 7 23:25:39 GMT 2011 Colin Watson + + * src/man.c (make_roff_command): Use running_setuid. + * src/manp.c (get_def): Likewise. + +Tue Jan 4 11:09:00 GMT 2011 Colin Watson + + * lib/security.c (running_setuid): New function. + * lib/security.h (running_setuid): Add prototype. + * src/manconv_client.c (manconv_stdin): If running setuid, exec + manconv as an external process, since iconv_open is not guaranteed + to work correctly in setuid processes. + + * configure.ac: Require libpipeline >= 1.1.0. + * docs/INSTALL.quick: Document increased version requirement. + + * NEWS: Document this. + +Mon Jan 3 03:02:50 GMT 2011 Colin Watson + + Add basic support for the Heirloom Documentation Tools. + + * m4/man-heirloom-nroff.m4: New file. + * configure.ac: Call MAN_PROG_HEIRLOOM_NROFF. If successful and an + nroff macro was found, prepend -mg -msafe -mpadj to the nroff and + troff options. + * lib/encodings.c (charset_table) [HEIRLOOM_NROFF]: Disable latin1 + and nippon devices. + (device_table) [HEIRLOOM_NROFF]: Add locale device. + * src/man.c (heirloom_line_length) [HEIRLOOM_NROFF]: New function. + (add_roff_line_length): Optionally return a command, which should + be inserted before troff. + (add_roff_line_length) [HEIRLOOM_NROFF]: Support Heirloom, which + needs text inserted at the start of the input. + (make_roff_command) [HEIRLOOM_NROFF]: Use locale device instead of + utf8 in UTF-8 locales. Handle add_roff_line_length return value. + Unset TROFFMACS if running setuid. + (make_browser): Compile only if TROFF_IS_GROFF. + (format_display): Only declare variables related to HTML output if + TROFF_IS_GROFF. + * src/tests/zsoelim-1: Ignore .ll and .lt lines inserted by + heirloom_line_length. + * NEWS: Document this. + +Mon Jan 3 00:56:55 GMT 2011 Colin Watson + + * src/manp.c (get_manpath_from_path): Return an empty string rather + than asserting if no path elements with corresponding manpaths + were found (Debian bug #608490). + * src/man.c (local_man_loop): Skip executable processing if no + useful manpath was returned. + * src/tests/man-2: New test for this bug. + * src/tests/Makefile.am (ALL_TESTS): Add man-2. + + * README (Copyright and licensing): New year. + +Thu Dec 23 16:00:06 GMT 2010 Colin Watson + + * src/check_mandirs.c (testmandirs): Make output neater when stderr + is not a tty. Suggested by C W Rose. + * NEWS: Document this. + +Thu Dec 23 15:50:39 GMT 2010 Colin Watson + + * src/lexgrog.l (glyphs, perldocs): Remove terminating NULL entries; + these arrays are handled using bsearch with an explicit length, + and NULL-terminating them causes crashes. + +Mon Dec 20 00:41:04 GMT 2010 Colin Watson + + * src/catman.c (main): Initialise locale using the LC_MESSAGES + category rather than LC_ALL. glibc returns a composite name for + the latter. + * lib/util.c (init_locale): Return void instead of returning the + result of setlocale. + * include/manconfig.h.in (init_locale): Update prototype. + +Sun Dec 19 16:10:35 GMT 2010 Colin Watson + + * gnulib: Import idpriv-drop and idpriv-droptemp modules. + * configure.ac: Stop checking for seteuid, setreuid, and setresuid. + * lib/security.c (POSIX_SAVED_IDS, SET_EUID, SWAP_UIDS): Remove in + favour of idpriv.h. + (drop_effective_privs): Use idpriv_temp_drop. + (regain_effective_privs): Use idpriv_temp_restore. + (do_system_drop_privs): Use idpriv_drop. Drop saved-IDs case; + avoiding a fork doesn't justify having two code paths. + +Sun Dec 5 20:58:10 GMT 2010 Colin Watson + + Provide byte positions in manconv errors (Debian bug #562789). + + * src/manconv.c (locate_error): New function. + (try_iconv): Skip over processed input data after handling errors. + Use locate_error to produce exact byte positions for conversion + errors. + +Thu Dec 2 23:54:03 GMT 2010 Colin Watson + + Allow passing multiple sections to whatis and apropos (Debian bug + #571285). + + * src/whatis.c (options): Allow spelling --section as --sections; + this is now the preferred long spelling. Document that the + argument may be colon-separated. + (split_sections): New function. + (parse_opt): Pass -s argument through split_sections. + (do_whatis): Move most logic to ... + (do_whatis_section): ... here. + (do_whatis): Iterate over sections, calling do_whatis_section for + each. + (do_apropos): Test all requested sections. + * man/man1/apropos.man1 (SYNOPSIS, OPTIONS), man/man1/whatis.man1 + (SYNOPSIS, OPTIONS): Document new semantics. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + * NEWS: Document this. + +Thu Dec 2 23:32:07 GMT 2010 Colin Watson + + * src/whatis.c (parse_opt): Make -f and -k force program identity to + whatis and apropos respectively. This is useful when running + directly from the build tree, since libtool makes it hard to + detect the program name correctly. + +Thu Dec 2 19:28:06 GMT 2010 Colin Watson + + * src/catman.c (parse_for_sec): Format ARG_MAX - arg_size using %zd. + * src/manp.c (has_mandir): Cast printf field precisions to int. + (create_pathlist): Use %td to format pointer differences. + +Thu Dec 2 19:23:36 GMT 2010 Colin Watson + + * src/man.c (make_display_command): Make sure the returned pipeline + is never NULL; this causes crashes later. + +Thu Dec 2 12:33:43 GMT 2010 Colin Watson + + * src/man.c (make_display_command): Don't start a pager if standard + output is not a tty (Fedora bug #658132). + * NEWS: Document this. + +Thu Dec 2 00:31:31 GMT 2010 Colin Watson + + Handle roff named glyphs and perldoc strings in NAME sections + (Debian bug #601025). + + * src/lexgrog.l (glyphs, perldocs): New arrays. + (MAN_NAME): Call newline_found on encountering \& at the start of + a line. Call add_glyph_to_whatis on roff named glyphs, and + add_perldoc_to_whatis on perldoc strings. + (compare_macro, add_macro_to_whatis, add_glyph_to_whatis, + add_perldoc_to_whatis): New functions. + * NEWS: Document this. + +Wed Dec 1 22:24:51 GMT 2010 Colin Watson + + Improve .so searching (Debian bug #503472). + + * src/Makefile.am (zsoelim_SOURCES): Add manp.c and manp.h. + * src/zsoelim.l (zsoelim_parse_file): Take manpathlist and + parent_path arguments, and save those to pass on to + zsoelim_open_file. + (try_compressed): New function, split out from zsoelim_open_file. + (zsoelim_open_file): Take manpathlist and parent_path arguments. + Rearrange search logic as follows: (1) if there is no parent_path, + try opening directly; (2) look up filename within each manpath + entry, treating filenames without directory parts as full manual + page lookups; (3) if there is a parent_path, try opening directly. + (zsoelim_stdin): Pass path and manpathlist from input data to + zsoelim_open_file and zsoelim_parse_file. + (zsoelim_stdin_data_new, zsoelim_stdin_data_free): New functions. + * src/zsoelim.h (zsoelim_open_file, zsoelim_parse_file): Update + prototypes. + (zsoelim_stdin_data_new, zsoelim_stdin_data_free): Add prototypes. + * src/zsoelim_main.c (main): Initialise locale and manpath. Pass + manpath to zsoelim_open_file and zsoelim_parse_file. + * src/man.c (main): Calculate manpath before handling -l option. + (make_roff_command): Pass dir and manpathlist to zsoelim_stdin. + * src/tests/zsoelim-1: New test. + * src/tests/Makefile.am (ALL_TESTS): Add zsoelim-1. + * NEWS: Document this. + + * src/manp.c (get_def): If not setuid, make this identical to + get_def_user. + * src/manp.h (get_def): Likewise. + +Wed Dec 1 14:15:34 GMT 2010 Colin Watson + + * lib/security.c (do_system_drop_privs): Copy-edit header comment, + and update it for libpipeline. + +Mon Nov 29 17:48:29 GMT 2010 Colin Watson + + Remove obsolete versions of lexgrog. They're still available in + revision control if people want them. + + * src/Makefile.am (EXTRA_DIST): Remove. + * src/README.lexgrog, src/lexgrog.l-2.3.8, src/lexgrog.l-2.4a, + src/lexgrog.l.new: Remove. + +Sun Nov 28 15:01:21 GMT 2010 Colin Watson + + Remove internal copy of libpipeline. + + * configure.ac: Remove --enable-socketpair-pipe and + --with-external-pipeline options. Remove INTERNAL_PIPELINE + Automake conditional. Check for libpipeline unconditionally. + * docs/INSTALL.quick: Mention the need to install libpipeline. + * gnulib: Remove strsignal and sys_select modules. + * lib/Makefile.am (libman_la_SOURCES): Never add pipeline.c or + pipeline.h. + * lib/pipeline.c, lib/pipeline.h: Remove. + * m4/man-socketpair.m4: Remove. + * NEWS: Document this. Bump to 2.6.0. + +Thu Nov 18 13:46:04 GMT 2010 Colin Watson + + Reducing linkage when we switched to libtool caused build failures + with versions of GNU ld that default to --no-copy-dt-needed-entries. + Partially revert these changes, this time taking care to directly + link programs against libraries if and only if they use symbols from + those libraries directly (otherwise, the linkage from libman.la and + libmandb.la should be sufficient). + + * src/Makefile.am (LIBMAN): Add $(top_builddir)/gnulib/lib/libgnu.la + and @LTLIBINTL@. + (LIBMANDB): Add $(LIBMAN) and $(DBLIBS). + (lexgrog_LDADD, man_LDADD, manconv_LDADD, mandb_LDADD): Add + $(libpipeline_LIBS) and $(LTLIBICONV). + (whatis_LDADD, zsoelim_LDADD): Add $(libpipeline_LIBS). + * NEWS: Document this. + +Wed Nov 17 11:43:30 GMT 2010 Colin Watson + + * Version: 2.5.9. + * man/po4a/po/man-db-manpages.pot, po/man-db.pot, po/*.po: Update. + +Wed Nov 17 11:34:36 GMT 2010 Colin Watson + + * lib/util.c (init_locale): Avoid warnings if configured with + --disable-nls. Remove arguments, since this was only ever called + as 'init_locale (LC_ALL, "")' anyway, and that required callers to + explicitly include . Update all callers. + * include/manconfig.h.in (init_locale): Update prototype. + +Wed Nov 17 11:22:28 GMT 2010 Colin Watson + + * src/check_mandirs.c (test_manfile): Revert changes to this + function from 2010-11-14. Explicitly deleting bad links from the + database was overly sensitive to directory ordering, and caused + test failures on some systems. + * NEWS: Document this. + +Mon Nov 15 22:34:57 GMT 2010 Colin Watson + + * Version: 2.5.8. + * man/po4a/po/man-db-manpages.pot, po/man-db.pot, po/*.po: Update. + +Mon Nov 15 22:22:47 GMT 2010 Colin Watson + + * man/Rules.man (distclean-hook): Rename to ... + (distclean-local): ... this, and fix syntax so that it actually + works. + +Mon Nov 15 21:38:04 GMT 2010 Colin Watson + + * src/man.c (local_man_loop): Simplify and improve code to make a + temporary copy of manpathlist, in order that it can't free + unallocated memory (may fix Savannah bug #31633). + +Mon Nov 15 13:48:26 GMT 2010 Colin Watson + + * man/po4a/Makefile.am (clean-local): Remove; distclean-hook in + man/Rules.man already takes care of this (thanks, Denis Barbier). + +Sun Nov 14 22:12:21 GMT 2010 Colin Watson + + Prevent repeated rescans when a link is broken. Thanks to Daniel + Isenmann for debugging information. + + * src/check_mandirs.c (test_manfile): Explicitly delete bad links + from the database. + (count_glob_matches, purge_whatis, purge_missing): Extract the + database mtime, and ignore any pages at least as old as that for + the purposes of deciding whether a whatis entry has been replaced + by a real page. + * src/tests/mandb-3: New test. + * src/tests/Makefile.am (ALL_TESTS): Add mandb-3. + * NEWS: Document this. + +Wed Nov 3 23:40:25 GMT 2010 Jordi Mallach + + * po/ca.po: Update from Translation Project. + +Wed Nov 3 20:27:46 GMT 2010 Colin Watson + + * src/catman.c (parse_for_sec): Explicitly pass -S before section + number, to reduce ambiguity. + * src/man.c (main): In catman mode, never try to guess whether a + page argument is a section, as it's too easy to get this wrong + (Ubuntu bug #664211). + +Fri Oct 29 07:25:44 BST 2010 Colin Watson + + * lib/pipeline.h (pipeline_install_post_fork): Clarify that this is + run in the child process. + (pipeline_wait_all): Clarify that SIGPIPE is considered equivalent + to exiting zero. + +Fri Oct 29 06:18:31 BST 2010 Colin Watson + + * lib/pipeline.c (pipecmd_new_sequencev): New function. + (pipecmd_new_sequence): Rewrite in terms of pipecmd_new_sequence. + (pipeline_new_command_argv): New function. + (pipeline_new_command_args): Rewrite in terms of + pipeline_new_command_argv. + (pipeline_command_argv): New function. + (pipeline_command_args): Rewrite in terms of + pipeline_command_argv. + * lib/pipeline.h (pipecmd_new_sequencev, pipeline_new_command_argv, + pipeline_command_argv): Add prototypes. + +Fri Oct 29 05:28:33 BST 2010 Colin Watson + + * lib/pipeline.c (pipeline_wait): Rename to ... + (pipeline_wait_all): ... this. Return 127 rather than 1 if + closing the pipeline output fails. Return 127 if a command other + than the last one fails. Return the statuses and the number of + statuses in new output parameters if they are non-NULL. + (pipeline_wait): Add new wrapper function. + * lib/pipeline.h (pipeline_wait_all): Add prototype. + +Fri Oct 29 03:50:16 BST 2010 Colin Watson + + * lib/pipeline.c (pipeline_new): Default ignore_signals to 0. + * lib/decompress.c (decompress_open, decompress_fdopen): Remove + redundant calls to pipeline_ignore_signals. + * src/man.c (make_browser): Explicitly ignore SIGINT and SIGQUIT + when running the browser. + (make_display_command): Explicitly ignore SIGINT and SIGQUIT when + running the pager. + +Fri Oct 29 03:28:57 BST 2010 Colin Watson + + * lib/pipeline.c, lib/pipeline.h: Rename command to pipecmd, + command_* to pipecmd_*, and COMMAND_* to PIPECMD_*. Update all + callers. + +Fri Oct 29 03:24:10 BST 2010 Colin Watson + + * man/po4a/po/nl.po: Use I<> rather than U<>. + +Tue Oct 26 12:43:45 BST 2010 Erwin Poeze + + * man/po4a/po/nl.po: Update from Translation Project. + +Tue Oct 26 12:40:12 BST 2010 Martin Schauer + + * po/de.po: Update from Translation Project. + * man/THANKS: Update. + +Mon Oct 25 17:59:01 BST 2010 Colin Watson + + * lib/pipeline.c (pipeline_install_post_fork): New function. + (pipeline_start): Call post-fork handler rather than hardcoding + pop_all_cleanups. + * lib/pipeline.h (pipeline_install_post_fork): Add prototype. + + * src/lexgrog_test.c (main), src/man.c (main), src/manconv_main.c + (main), src/mandb.c (main), src/whatis.c (main), + src/zsoelim_main.c (main): Install pop_all_cleanups as a post-fork + handler. + +Mon Oct 25 16:18:08 BST 2010 Colin Watson + + * lib/pipeline.c (command_unsetenv): New function. + (command_dup, command_dump, command_tostring): Check for NULL + cmd->env[i].value. + (command_start_child): If cmd->env[i].value is NULL, call unsetenv + rather than setenv. + * lib/pipeline.h (command_unsetenv): Add prototype. + +Sun Oct 24 23:37:08 BST 2010 Colin Watson + + Allow building with an external libpipeline. + + * configure.ac: Add --with-external-pipeline option. + * lib/Makefile.am (libman_la_CPPFLAGS): Add $(libpipeline_CFLAGS). + (libman_la_SOURCES): Include pipeline.c and pipeline.h only + conditionally. + (libman_la_LDFLAGS): Add $(libpipeline_LIBS). + * src/Makefile.am (AM_CPPFLAGS): Add $(libpipeline_CFLAGS). + * NEWS: Document this. + +Sun Oct 24 21:15:07 BST 2010 Colin Watson + + * lib/pipeline.c (command_start_child): Add trailing newline to + "nice failed" debug message. + +Sun Oct 24 21:10:20 BST 2010 Colin Watson + + Make command and pipeline opaque types. + + * lib/pipeline.c (command_nice, command_discard_err, + pipeline_get_ncommands, pipeline_get_command, + pipeline_set_command, pipeline_want_in, pipeline_want_out, + pipeline_want_infile, pipeline_want_outfile, + pipeline_ignore_signals): New functions. + * lib/pipeline.h (command_nice, command_discard_err, + pipeline_get_ncommands, pipeline_get_command, + pipeline_set_command, pipeline_want_in, pipeline_want_out, + pipeline_want_infile, pipeline_want_outfile, + pipeline_ignore_signals): Add prototypes. + + * lib/pipeline.h (enum command_tag, struct command_env, struct + command, struct pipeline): Move to ... + * lib/pipeline.c (enum command_tag, struct command_env, struct + command, struct pipeline): ... here. + + Redirections are now handled slightly differently internally, + allowing redirection from/to fd 0. + + * lib/pipeline.c (pipeline_new, pipeline_join): Set redirect_in and + redirect_out. + (pipeline_connect): Use pipeline_want_in and pipeline_want_out. + Check source->redirect_out. + (pipeline_start): Handle new redirection semantics. + + * lib/decompress.c (decompress_open, decompress_fdopen): Use new + accessor functions rather than accessing pipeline fields directly. + * src/man.c (make_display_command, discard_stderr, open_cat_stream, + format_display, display_catman, display): Likewise. + +Sun Oct 24 21:04:45 BST 2010 Colin Watson + + * lib/pipeline.c (pipeline_run): This would be a more convenient + wrapper for the common case if it freed the pipeline as well, so + do that. (Callers that don't want this should call pipeline_start + and pipeline_wait separately.) + * lib/pipeline.h (pipeline_run): Update comment. + * lib/security.c (do_system_drop_privs): Consistently free the + supplied pipeline, and document doing so. + * src/man.c (format_display): Remove pipeline_free after + do_system_drop_privs. + * src/whatis.c (use_grep): Remove pipeline_free after pipeline_run. + +Sun Oct 24 21:03:25 BST 2010 Colin Watson + + * lib/pipeline.c (pipeline_new_command_args): New function. + * lib/pipeline.h (pipeline_new_command_args): Add prototype. + * src/man.c (make_browser): Use it. + +Sun Oct 24 20:59:27 BST 2010 Colin Watson + + * lib/pipeline.c (pipeline_run): New function. + * lib/pipeline.h (pipeline_run): Add prototype. + * lib/security.c (do_system_drop_privs): Use it. + * src/man.c (do_extern, run_mandb): Likewise. + * src/whatis.c (use_grep): Likewise. + +Sun Oct 24 20:56:00 BST 2010 Colin Watson + + * lib/pipeline.h (pipeline_pump): Mention in comment that arguments + must be NULL-terminated. + +Sun Oct 24 20:55:10 BST 2010 Colin Watson + + * lib/pipeline.h (pipeline_new_commandv): Fix comment. + +Sat Oct 23 20:52:24 BST 2010 Colin Watson + + * configure.ac (AC_TYPE_SIGNAL): Remove (unused). + +Tue Oct 12 11:16:31 BST 2010 Colin Watson + + * lib/util.c (init_locale): New function. + * include/manconfig.h.in (init_locale): Add prototype. + * src/Makefile.am (AM_CPPFLAGS): Move -DLOCALEDIR to ... + * lib/Makefile.am (libman_la_CPPFLAGS): ... here. + + * src/accessdb.c (main), src/catman.c (main), src/globbing_test.c + (main), src/lexgrog_test.c (main), src/man.c (main), + src/manconv_main.c (main), src/mandb.c (main), src/manpath.c + (main), src/whatis.c (main), src/zsoelim.c (main): Use + init_locale. + + * lib/util.c (init_locale): Suppress warning message if + DPKG_RUNNING_VERSION is set in the environment. + * NEWS: Document this. + +Mon Oct 11 09:38:03 BST 2010 Colin Watson + + * docs/HACKING (Revision control): Update for restored bzr+ssh + access. + +Mon Oct 11 09:36:55 BST 2010 Colin Watson + + * .bzrignore: Remove tools/config.rpath.*, which hasn't been needed + here since 2009-04-14. + +Tue Oct 5 11:48:57 BST 2010 Colin Watson + + * man/po4a/Makefile.am (clean-local): Don't use 'po4a + --rm-translations', since it sometimes updates PO/POT files and + the obvious workaround for that breaks 'make distcheck'. + Reimplement it by hand instead. + +Tue Oct 5 10:59:02 BST 2010 Colin Watson + + * man/check-man: Use libtool to run man from the build tree. + +Tue Oct 5 10:36:35 BST 2010 Colin Watson + + It turns out that AM_GNU_GETTEXT([use-libtool]) is unsupported. + Switch to external libintl instead. + + * configure.ac (AM_GNU_GETTEXT): Set external. + (AC_CONFIG_FILES): Remove intl/Makefile. + * Makefile.am (SUBDIRS): Remove intl. + (EXTRA_DIST): Add gnulib/m4/glibc2.m4, gnulib/m4/intdiv0.m4, + gnulib/m4/intl.m4, gnulib/m4/intmax.m4, gnulib/m4/inttypes-pri.m4, + gnulib/m4/lcmessage.m4, gnulib/m4/printf-posix.m4, + gnulib/m4/uintmax_t.m4, and gnulib/m4/visibility.m4. + * intl: Remove. + * lib/Makefile.am (libman_la_CPPFLAGS): Remove + -I$(top_builddir)/intl. + * libdb/Makefile.am (libmandb_la_CPPFLAGS): Likewise. + * src/Makefile.am (AM_CPPFLAGS): Likewise. + * .bzrignore: Remove intl/Makefile, intl/charset.alias, + intl/libgnuintl.h, intl/libintl.h, intl/ref-add.sed, and + intl/ref-del.sed. + * NEWS: Document this. + +Tue Oct 5 01:05:24 BST 2010 Colin Watson + + * configure.ac (AM_GNU_GETTEXT): Set use-libtool. + +Tue Oct 5 00:11:23 BST 2010 Colin Watson + + * lib/Makefile.am (libman_la_LIBADD): Include @LTLIBINTL@ rather + than @LIBINTL@. + * src/Makefile.am (whatis_LDADD): Include $(LTLIBICONV) rather than + $(LIBICONV). + +Mon Oct 4 23:56:36 BST 2010 Colin Watson + + * po/POTFILES.in: Add lib/security.c. Remove src/fake_security.c + and src/security.c. + * po/man-db.pot, po/*.po: Update. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +Sun Oct 3 23:57:45 BST 2010 Colin Watson + + * lib/pipeline.c (command_argf): New function. + * lib/pipeline.h (command_argf): Add prototype. + * src/man.c (add_roff_line_length): Use it, reducing need for + temporary local variables. + (make_roff_command): Likewise. + +Sun Oct 3 23:30:06 BST 2010 Colin Watson + + * src/man.c (setenv_less): Take a command argument. Set environment + variables only for that command, not globally. + (make_display_command): Call setenv_less on the command + constructed from pager. + +Sun Oct 3 22:34:13 BST 2010 Colin Watson + + * lib/pipeline.c (reap_children, pipeline_sigchld, + pipeline_install_sigchld): Move above pipeline_start. + (pipeline_install_sigchld): Make static. Return immediately if + already installed. + (pipeline_start): Call pipeline_install_sigchld. + * lib/pipeline.h (pipeline_start): Document that this installs a + SIGCHLD handler. + (pipeline_install_sigchld): Remove prototype. + * src/lexgrog_test.c (main), src/man.c (main), src/manconv_main.c + (main), src/mandb.c (main), src/whatis.c (main), + src/zsoelim_main.c (main): Stop calling pipeline_install_sigchld. + +Thu Sep 30 16:01:22 BST 2010 Colin Watson + + Convert the French manual pages translation to po4a. + + * man/LINGUAS: Remove fr. + * man/LINGUAS.po4a: Add fr. + * man/fr/man1, man/fr/man5, man/fr/man8: Remove. + * man/fr/Makefile.am (PO4A_LINGUA): Set to yes. + (EXTRA_DIST): Add translator.add. + (man1_MANS): Add man1/manconv.1. + * man/po4a/Makefile.am (POFILES): Add po/fr.po. + * man/po4a/po4a.cfg (po4a_langs): Add fr. + * man/THANKS: Add David Prévot. + * .bzrignore: Add man/fr/man1, man/fr/man5, and man/fr/man8. + +Thu Sep 30 15:44:46 BST 2010 David Prévot + + * po/fr.po: Update from Translation Project. + * man/po4a/po/fr.po: New from Translation Project. + * man/fr/translator.add: New file. + +Mon Sep 27 19:06:10 BST 2010 Colin Watson + + Move util to libman. + + * src/util.c: Move to ... + * lib/util.c: ... here. + * lib/Makefile.am (libman_la_SOURCES): Add util.c. + * src/Makefile.am (accessdb_SOURCES, catman_SOURCES, + globbing_SOURCES, lexgrog_SOURCES, man_SOURCES, mandb_SOURCES, + manpath_SOURCES, whatis_SOURCES, zsoelim_SOURCES): Remove util.c. + * lib/README: Add util.c. + +Mon Sep 27 00:50:37 BST 2010 Colin Watson + + * gnulib/m4/gnulib-cache.m4: Remove obsolete modules atexit, memcmp, + and strcspn. + +Mon Sep 27 00:24:50 BST 2010 Colin Watson + + Move security to libman. + + * src/security.c: Move to ... + * lib/security.c: ... here. + * src/security.h: Move to ... + * lib/security.h: ... here. + * lib/Makefile.am (libman_la_SOURCES): Add security.c and + security.h. + * src/Makefile.am (lexgrog_SOURCES): Remove fake_security.c and + security.h. + (man_SOURCES, mandb_SOURCES): Remove security.c and security.h. + * lib/README: Add security.*. + * src/lexgrog_test.c: Call init_security, so that we can use generic + security functions rather than fake_security. + * src/fake_security.c: Remove. + + * lib/security.c (do_system_drop_privs): Unroll calls to do_system + into calls to pipeline_start and pipeline_wait. + * src/whatis.c (use_grep): Likewise. + * src/util.c (do_system): Remove. + * include/manconfig.h.in (do_system): Remove. + + * src/*.c: Update #include grouping for movements to libman. + +Sun Sep 26 23:53:08 BST 2010 Colin Watson + + Get the tests working again following the switch to libtool. + + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Remove CLEANPATH. + * src/tests/man-1, src/tests/mandb-1, src/tests/mandb-2: Set MANPATH + rather than using run_clean_path; running with a stripped-down + PATH is risky in general and breaks libtool in particular. + * src/tests/testlib.sh (run_clean_path): Remove. + + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Add top_builddir. + * src/tests/testlib.sh (run): New function. + * src/tests/lexgrog-1, src/tests/man-1, src/tests/manconv-1, + src/tests/manconv-2, src/tests/manconv-3, src/tests/mandb-1, + src/tests/mandb-2, src/tests/testlib.sh (accessdb_filter): Use run + when running programs from the build tree. + +Sun Sep 26 23:25:31 BST 2010 Colin Watson + + Move encodings to libman. + + * src/encodings.c: Move to ... + * lib/encodings.c: ... here. + * src/encodings.h: Move to ... + * lib/encodings.h: ... here. + * lib/Makefile.am (libman_la_SOURCES): Add encodings.c and + encodings.h. + * src/Makefile.am (lexgrog_SOURCES, man_SOURCES, manconv_SOURCES, + mandb_SOURCES, manpath_SOURCES): Remove encodings.c and + encodings.h. + * lib/README: Add encodings.*. + +Sun Sep 26 23:15:00 BST 2010 Colin Watson + + * src/encodings.c (struct manconv_codes, manconv_stdin, + free_manconv_codes, add_manconv): Move to ... + * src/manconv_client.c: ... here (new file). + * src/encodings.h (add_manconv): Move to ... + * src/manconv_client.h: ... here (new file). + * src/lexgrog.l, src/man.c, src/straycats.c: Include + manconv_client.h. + * src/Makefile.am (lexgrog_SOURCES, man_SOURCES, mandb_SOURCES): Add + manconv_client.c and manconv_client.h. + + * src/manp.c: Remove unnecessary inclusion of encodings.h. + +Sun Sep 26 22:59:54 BST 2010 Colin Watson + + * src/compression.c: Remove unnecessary inclusion of security.h. + * src/ult_src.c: Likewise. + +Sun Sep 26 22:47:02 BST 2010 Colin Watson + + * src/manp.c (mkcatdirs): Move to ... + * src/check_mandirs.c (mkcatdirs): ... here, as it's only used by + testmandirs. Removes dependency of manp.c on security.h. + * src/manp.h (mkcatdirs): Remove prototype. + * src/Makefile.am (catman_SOURCES, manpath_SOURCES, whatis_SOURCES): + Remove fake_security.c. + +Sun Sep 26 22:34:17 BST 2010 Colin Watson + + * src/security.c (remove_with_dropped_privs): Remove; no longer + used. + * src/fake_security.c (remove_with_dropped_privs): Likewise. + * src/security.h (remove_with_dropped_privs): Likewise. + +Sun Sep 26 22:23:26 BST 2010 Colin Watson + + * lib/Makefile.am (libman_la_LIBADD): Use $(LTLIBOBJS) rather than + $(LIBOBJS). + +Sun Sep 26 22:08:39 BST 2010 Colin Watson + + Build libman and libmandb as shared libraries, reducing our + installed footprint by about 200K. + + * configure.ac: Add LT_INIT. Move AC_GNU_SOURCE up to above it. + Remove redundant AC_PROG_RANLIB. + * gnulib/m4/gnulib-cache.m4: Enable libtool support. + * gnulib/m4/libtool.m4, gnulib/m4/ltoptions.m4, + gnulib/m4/ltsugar.m4, gnulib/m4/ltversion.m4, + gnulib/m4/lt~obsolete.m4, tools/ltmain.sh: New files, created by + libtoolize. + * autogen.sh: Export LIBTOOLIZE_OPTIONS=--quiet. + * lib/Makefile.am: Switch to libtool. Add ../gnulib/lib/libgnu.la, + $(LIBCOMPRESS), and @LIBINTL@ to LIBADD. Install the library in + $(pkglibdir), and instruct libtool to set an RPATH on binaries + built against this library. + * libdb/Makefile.am: Switch to libtool. Add ../lib/libman.la to + LIBADD. Install the library in $(pkglibdir), and instruct libtool + to set an RPATH on binaries built against this library. + * src/Makefile.am (LIBMAN): Reduce to libman. + (LIBMANDB): Reduce to libmandb. + (accessdb_LDADD, catman_LDADD, globbing_LDADD, lexgrog_LDADD, + man_LDADD, manconv_LDADD, mandb_LDADD, manpath_LDADD, + whatis_LDADD, zsoelim_LDADD): Remove dependencies of libman and + libmandb. + * .bzrignore: Add **/*.la, **/*.lo, **/.libs, and ./libtool. + * NEWS: Document this. + + Avoid symbol clashes between libgnu and libman. + + * lib/hashtable.c (null_hash_free, plain_hash_free, hash_create, + hash_lookup_structure, hash_lookup, hash_install, hash_remove, + hash_free): Rename to ... + (null_hashtable_free, plain_hashtable_free, hashtable_create, + hashtable_lookup_structure, hashtable_lookup, hashtable_install, + hashtable_remove, hashtable_free): ... these. Update all callers + and prototypes. + * lib/hashtable.h (hash_free_ptr): Rename to ... + (hashtable_free_ptr): ... this. Update all users. + +Thu Sep 16 13:53:11 BST 2010 Robert Luberda + + * man/po4a/po/pl.po: Update from Translation Project. + +Tue Aug 17 15:31:38 BST 2010 Colin Watson + + * man/po4a/Makefile.am (clean-local): Make sure not to change PO or + POT files when removing generated translations. + +Tue Aug 17 15:26:12 BST 2010 Colin Watson + + Upgrade to Autoconf 2.67. + +Tue Aug 17 14:29:53 BST 2010 Colin Watson + + * src/man.c (display_catman): Add iconv to format_cmd before adding + a compressor. + * NEWS: Document this. + +Tue Aug 17 14:22:06 BST 2010 Colin Watson + + * src/man.c (add_output_iconv): Make static. + +Tue Jul 20 08:18:41 BST 2010 Colin Watson + + Upgrade to Gnulib 20100704. + + * configure.ac (AM_GNU_GETTEXT_VERSION): Upgrade to gettext 0.18.1. + +Wed May 19 12:38:31 BST 2010 Colin Watson + + * src/descriptions.c (parse_descriptions): Free record. + * src/encodings.c (check_preprocessor_encoding): Free directive. + (manconv_stdin): Free p. + * src/lexgrog_test.c (main): Free lg.filters and lg.whatis. + +Thu May 13 11:45:02 CEST 2010 Clytie Siddall + + * po/vi.po: Update from Translation Project. + +Mon May 10 09:42:41 CEST 2010 Yuri Kozlov + + * man/po4a/po/ru.po: Update from Translation Project. + +Sun May 9 07:37:14 BST 2010 Colin Watson + + * Version: 2.5.8-pre1. + * release.sh: Remove man/po4a/po/man-db-manpages.pot before running + 'make distcheck', to force it to be regenerated with the current + version number. + * man/po4a/Makefile.am: Make po/man-db-manpages.pot depend on + update-po, rather than using dist-hook which is too late. + * po/man-db.pot, po/*.po: Update. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +Sat May 8 15:39:49 BST 2010 Colin Watson + + * src/filenames.c (filename_info): Explicitly fail if the extension + is zero-length. + +Sat May 8 15:35:17 BST 2010 Colin Watson + + * src/filenames.c (filename_info): Allow section and extension to + differ as long as the first character is the same. (This is my + understanding of what the code was originally meant to do, but it + only worked if the section was exactly one character long.) + +Tue Apr 27 11:02:48 BST 2010 Colin Watson + + Upgrade to Gnulib 20100424. + +Fri Apr 2 20:44:11 BST 2010 Ville Skyttä + + * configure.ac: Only test for lzma if xz is missing. Add xz to list + of compressors checked when deciding whether to define COMP_CAT or + COMP_SRC. + * include/comp_src.h.in (comp_list): If xz is available, use it for + .lzma files in preference. + +Fri Apr 2 20:26:41 BST 2010 Ville Skyttä + + * include/comp_src.h.in (comp_list): If compress is not available, + use gzip to handle .Z files. + +Mon Mar 29 09:36:00 BST 2010 Clytie Siddall + + * po/vi.po: Update from Translation Project. + +Wed Mar 24 11:04:46 GMT 2010 Colin Watson + + Fix build regression when GNU_NROFF is undefined (Savannah bug + #29318). + + * src/man.c (add_col): New function, split out from + make_display_command. + (make_roff_command): Reinstate tbl/col logic here, as by the time + we get to make_display_command we've forgotten whether tbl was + used. + (make_display_command): Remove tbl/col logic, useless here. Use + add_col. + +Sun Mar 21 21:59:54 GMT 2010 Tanguy Ortolo + + * src/man.c (main): Try underscore-separated subpages as well as + hyphen-separated ones (Debian bug #574641). + * man/man1/man.man1 (Finding manual pages): Document this. + * NEWS: Document this. + +Wed Mar 17 10:26:44 GMT 2010 Colin Watson + + * gnulib: Import localcharset module. + * src/encodings.c (struct charset_entry): Rename locale_charset to + charset_from_locale. Update all users. + (struct less_charset_entry): Likewise. + (get_locale_charset): Use locale_charset function from Gnulib, + rather than dealing with nl_langinfo and the fallback ourselves. + (get_default_device): Rename locale_charset parameter to + charset_from_locale. + (get_less_charset): Likewise. + (get_jless_charset): Likewise. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Add + @LOCALCHARSET_TESTS_ENVIRONMENT@. + +Sat Mar 13 22:15:54 GMT 2010 Colin Watson + + * man/check-man: Ignore "table wider than line width" warnings for + Dutch too. + +Sat Mar 13 21:33:48 GMT 2010 Colin Watson + + Upgrade to Gnulib 20100308. + +Thu Mar 11 01:26:56 GMT 2010 Colin Watson + + * configure.ac: Add AM_MAINTAINER_MODE. In the modern world, + timestamps are often just too fragile for those make targets to + work well; use ./autogen.sh instead. + +Tue Mar 2 19:11:44 GMT 2010 Darren Salt + + Add support for XZ-compressed manual pages (Debian bug #572233). + + * configure.ac: Check for xz. + * include/comp_src.h.in (comp_list): Add xz. + * include/manconfig.h.in: Define UNXZ. + * NEWS: Document this. + +Tue Mar 2 10:04:54 GMT 2010 Colin Watson + + Fix assertion failure on 'man -l' with an uncompressed page and + prefixed input (no-hyphenation, no-justification, or a non-English + page). + + * lib/pipeline.c (command_new_passthrough): New function. + * lib/pipeline.h (command_new_passthrough): Add prototype. + * src/man.c (display): Allow zero-command decompression pipelines + with prefix sequences. In that case, append a passthrough command + to the prefix sequence, and append the prefix sequence to the + decompression pipeline rather than replacing its first command. + * NEWS: Document this. + +Tue Mar 2 09:31:36 GMT 2010 Colin Watson + + * man/po4a/po/nl.po: New from Translation Project (thanks, Erwin + Poeze). + * configure.ac (AC_CONFIG_FILES): Add man/nl/Makefile. + * man/LINGUAS.po4a: Add nl. + * man/Makefile.am (DIST_SUBDIRS): Add nl. + * man/nl/Makefile.am, man/nl/translator.add: New files. + * man/po4a/Makefile.am (POFILES): Add po/nl.po. + * man/po4a/po4a.cfg (po4a_langs): Add nl. + * man/THANKS: Credit Erwin Poeze with man/nl as well as nl.po. + * .bzrignore: Add man/nl/man1, man/nl/man5, and man/nl/man8. + +Thu Feb 18 01:38:04 GMT 2010 Colin Watson + + * src/man.c (locale_macros): Explicitly set groff's hyphenation + language, to ensure that it only hyphenates languages it knows + about (Debian bug #570247). + +Tue Feb 16 23:11:58 GMT 2010 Colin Watson + + * Version: 2.5.7. + * po/man-db.pot, po/*.po: Update. + +Tue Feb 16 23:09:11 GMT 2010 Colin Watson + + * src/manp.c (get_catpath): Fix handling of non-translated cat + paths. + +Sun Feb 14 00:19:47 GMT 2010 Colin Watson + + Always save cat pages in UTF-8 (Debian bug #446741). + + * src/encodings.c (struct directory_entry): Remove + standard_output_encoding member. + (directory_table): Likewise. + (get_standard_output_encoding): Remove. + * src/encodings.h (get_standard_output_encoding): Remove prototype. + * src/man.c (my_locale_charset): New function, with code moved from + make_roff_command. + (make_roff_command): Return pipeline output encoding in a new + output parameter. Remove enforcement that cat pages could only be + saved for the manual hierarchy's default character set. Move + post-cat-page pipeline elements to ... + (add_output_iconv, make_display_command): ... here. + (make_display_command): Remove code for handling a named input + file, which has been unused for some time. New encoding argument. + (open_cat_stream): New encoding argument. Convert from it to + UTF-8 while saving the cat page. + (format_display_and_save): New encoding argument, passed to + open_cat_stream. + (display_catman): New encoding argument. Convert from it to UTF-8 + while saving the cat page. + (display): Get formatted encoding from make_roff_command and pass + it to display_catman, make_display_command, and + format_display_and_save. Assume UTF-8 when displaying an existing + cat page. + * NEWS: Document this. + +Sat Feb 13 14:25:42 GMT 2010 Vincent Lefèvre + + * lib/decompress.c (decompress_open): Fix sense of directory check + (Debian bug #537434). + +Mon Feb 8 07:01:35 GMT 2010 Colin Watson + + * src/manp.c (get_catpath): Handle man -> cat substitution correctly + for translated cat pages. + +Mon Feb 8 04:57:09 GMT 2010 Colin Watson + + * src/man.c (format_display_and_save): Use sigaction, not signal. + +Mon Feb 8 04:29:42 GMT 2010 Colin Watson + + * gnulib: Import getopt-gnu module rather than the obsolete getopt. + +Mon Feb 1 12:18:36 PST 2010 Colin Watson + + * lib/pipeline.c (pipeline_wait): Don't bother printing error + messages for SIGINT and SIGQUIT, since these correspond to + explicit user actions (Debian bug #568000). + +Sun Jan 31 03:44:59 GMT 2010 Colin Watson + + * src/manconv.c (try_iconv): Don't lose iconv errors from converting + to UTF-8 when the target encoding is not UTF-8. + +Sun Jan 31 03:33:33 GMT 2010 Colin Watson + + Upgrade to Automake 1.11.1 and Gnulib 20100109. + +Thu Jan 14 11:51:59 GMT 2010 Colin Watson + + * src/whatis.c (search): "%s: nothing appropriate." is an error; + write it to stderr, not stdout (Debian bug #565255). + +Wed Jan 13 23:42:00 GMT 2010 Werner Fink + + Add support for using socketpair(2) as a replacement for pipe(2), + which is faster on some systems (Savannah patch #6741). + + * configure.ac: Add --enable-socketpair-pipe option. + * m4/man-socketpair.m4: New file. + * lib/pipeline.c [USE_SOCKETPAIR_PIPE]: Redefine pipe() to a + construction based on socketpair(). + * NEWS: Document this. + +Wed Jan 13 22:04:23 GMT 2010 Colin Watson + + Upgrade to Autoconf 2.65 and Gnulib 20091120. + +Wed Jan 13 18:26:47 GMT 2010 Diego Pettenò + + Add support for heirloom-doctools (Savannah patch #6933). + + * configure.ac: Substitute TROFF. + * manual/Makefile.am (.pp.dvi, .pp.ps, .pp.tdvi, .pp.html): Use + $(TROFF) rather than groff or troff. + * src/man.c (options, parse_opt): Just ignore the --warnings option + when troff is not groff, rather than compiling it out entirely. + (make_roff_command): Only use gxditview variable when troff is + groff. + * NEWS: Document this. + +Tue Jan 12 13:33:51 GMT 2010 Samuel Thibault + + * lib/pipeline.c (pipeline_pump): Fix off-by-one error when write + returns EAGAIN (Debian bug #564818). + +Fri Jan 1 17:03:18 GMT 2010 Colin Watson + + * README (Copyright and licensing): Update copyright years. + +Fri Jan 1 13:26:21 GMT 2010 Colin Watson + + * src/manconv.c (try_iconv): Only handle iconv errors when iconv + returned -1. + +Fri Jan 1 11:37:13 GMT 2010 Colin Watson + + * src/manconv.c (try_iconv): Handle iconv errors when attempting to + convert the last input encoding to UTF-8 (Debian bug #562503). + * src/tests/manconv-3: Add test for this. + * src/tests/Makefile.am (TESTS): Add manconv-3. + +Tue Dec 15 14:10:19 GMT 2009 Colin Watson + + * src/mandb.c (main): Fix possible crash when MAN_MUST_CREATE is + unset. + * NEWS: Document this. + +Tue Dec 15 13:47:50 GMT 2009 Colin Watson + + * lib/debug.c (init_debug): New function: check for MAN_DEBUG=1 in + the environment. + * include/manconfig.h.in (init_debug): Add prototype. + * src/accessdb.c (main), src/catman.c (main), src/globbing_test.c + (main), src/lexgrog_test.c (main), src/man.c (main), + src/manconv_main.c (main), src/mandb.c (main), src/manpath.c + (main), src/whatis.c (main), src/zsoelim_main.c (main): Call + init_debug. + * NEWS: Document this. + +Sat Dec 12 00:36:14 GMT 2009 Robert Luberda + + * man/po4a/po/pl.po: Update from Translation Project. + +Tue Dec 1 17:01:19 GMT 2009 Colin Watson + + * src/man.c (do_extern): Pass section through to external program + (Savannah bug #28145). Fix passing of alternate system name to use + -m rather than -s. + +Tue Nov 24 18:27:59 GMT 2009 Robert Luberda + + * po/pl.po: Update from Translation Project. + +Wed Nov 18 14:58:52 GMT 2009 Yuri Kozlov + + * man/po4a/po/ru.po: Update from Translation Project. + +Wed Nov 18 14:55:31 GMT 2009 Yuri Kozlov + + * po/ru.po: Update from Translation Project. + +Wed Nov 18 14:52:43 GMT 2009 Erwin Poeze + + * po/nl.po: Update from Translation Project. + +Sun Nov 15 22:49:35 GMT 2009 Colin Watson + + * README (Non-generic arguments to configure): Use more readable + formatting. + * manual/options-only.me, manual/print-options: New file. + * manual/intro.me (Arguments to configure): Add hooks for + options-only.me. + * manual/Makefile.am (dist_noinst_DATA): Add options-only.me and + print-options. + +Sun Nov 15 16:15:56 GMT 2009 Colin Watson + + * docs/HACKING (Revision control): Savannah has disabled bzr+ssh for + the time being; update push URL. + +Sun Nov 15 16:05:26 GMT 2009 Colin Watson + + * Version: 2.5.7-pre1. + * po/man-db.pot, po/*.po: Update. + +Sun Nov 15 14:30:27 GMT 2009 Colin Watson + + * NEWS: Document previous change. + +Sun Nov 15 14:18:35 GMT 2009 Colin Watson + + * src/man.c (compare_candidates): Prefer getting a page from the + best manual section over getting a page in the correct language; I + have my reservations about this, but it seems to be what people + are requesting (Debian bug #519547). + +Sun Nov 15 14:02:11 GMT 2009 Colin Watson + + Search man directories in the GNU layout (Debian bug + #519807, Arch Linux bug #13734). + + * src/globbing.c (match_in_directory): Optionally take allocated + count from caller. If it's non-zero, don't clear the glob. + (look_for_file): In the GNU layout, search all subdirectories of + hier that begin with the first character of the section. + * NEWS: Document this. + +Sun Nov 15 13:32:58 GMT 2009 Colin Watson + + * src/globbing.c (match_in_directory): Make this void; checking + whether any glob matches were returned is sufficient. Move + glob-clearing code to ... + (clear_glob): ... here (new function). + (look_for_file): Simplify since we now only need to check + gbuf.gl_pathc == 0, not the return value of match_in_directory as + well. Clear gbuf on entry. + +Sun Nov 15 13:18:38 GMT 2009 Colin Watson + + * src/tests/lexgrog-1, src/tests/man-1, src/tests/manconv-1, + src/tests/manconv-2, src/tests/mandb-1, src/tests/mandb-2: Use + 'diff -u', which produces more helpful output on failures. + +Sat Nov 14 20:10:57 GMT 2009 Colin Watson + + * README (System specific notes): Remove entirely. The notes about + Linux here only pertain to thoroughly obsolete systems. + +Sat Nov 14 20:08:40 GMT 2009 Colin Watson + + * configure.ac: Handle Ultrix-4.3a -YPOSIX requirement + automatically. + * README (System specific notes): Remove note about Ultrix-4.3a. + +Sat Nov 14 19:14:02 GMT 2009 Colin Watson + + * lib/README: Copyright is not the same as licensing; fix confusion. + +Sat Nov 14 18:57:42 GMT 2009 Colin Watson + + * src/man.c (options): Add --nh and --nj aliases for + --no-hyphenation and --no-justification respectively. + * man/man1/man.man1 (Controlling formatted output): Document new + aliases. + +Sat Nov 14 18:52:15 GMT 2009 Colin Watson + + * lib/pipeline.c (argstr_get_word): Fix a small memory leak. + +Sat Nov 14 18:51:37 GMT 2009 Colin Watson + + Do what the user probably means when the full path to an executable + is given as an argument (Debian bug #505465). + + * lib/pathsearch.c (directory_on_path): New function. + * lib/pathsearch.h (directory_on_path): Add prototype. + * src/manp.c (get_manpath_from_path): Make external. Add 'mandatory' + argument to control the addition of MANDATORY_MANPATH entries. + (guess_manpath): Update caller. + * src/manp.h (get_manpath_from_path): Add prototype. + * src/man.c (main): Move locale manpath expansion to ... + (locale_manpath): ... here (new function). + (local_man_loop): If the argument is an executable, try looking up + the corresponding manual page in the appropriate part of the + manpath, rather than just trying to format the text of the + executable as a manual page. + * NEWS: Document this. + +Sat Nov 14 10:28:29 GMT 2009 Colin Watson + + Add option to disable justification (Debian bug #440047). + + * src/man.c (options, parse_opt): Accept --no-justification. Reset + corresponding variable with -D. + (disable_justification): New function. + (display): Append disable_justification to the decompressor + pipeline if --no-justification is used. + * man/man1/man.man1 (SYNOPSIS, Controlling formatted output): + Document --no-justification. + * NEWS: Document this. + +Sat Nov 14 10:23:28 GMT 2009 Colin Watson + + * include/manconfig.h.in (ATTRIBUTE_NORETURN): Define to an + attribute marking a function as non-returning if using GCC 2.5 or + newer. + * lib/pipeline.c (command_new_sequence, command_sequence_command): + New functions. + (command_dup, command_dump, command_tostring, command_free): + Handle commands of type COMMAND_SEQUENCE. + (pipeline_start): Move command execution to ... + (command_start_child): ... here (new function). Handle commands of + type COMMAND_SEQUENCE. + * lib/pipeline.h (enum command_tag): Add COMMAND_SEQUENCE. + (struct command): Add support for commands that consist of a + sequence of commands. + (command_new_sequence, command_sequence_command): Add prototypes. + * src/man.c (disable_hyphenation, locale_macros): Drop passthrough + code. + (display): Create a command sequence for hyphenation and + locale-macro decompressor prefixes if necessary. + +Mon Nov 9 16:59:47 GMT 2009 Colin Watson + + * configure.ac: Define a CROSS_COMPILING conditional if + cross-compiling. + * man/Rules.man, src/tests/Makefile.am: Don't run tests if + cross-compiling. + * NEWS: Document this. + +Mon Nov 9 16:53:10 GMT 2009 Colin Watson + + Upgrade to Gnulib 20090915. + +Mon Nov 9 16:27:44 GMT 2009 Colin Watson + + * src/encodings.c (find_charset_locale): New function. + * src/encodings.h (find_charset_locale): Add prototype. + * src/man.c (make_roff_command): When invoking col, ensure that + LC_CTYPE is set to an appropriate locale for the selected + character set (Debian bug #555331). + * NEWS: Document this. + +Thu Oct 8 23:22:57 BST 2009 Colin Watson + + * src/encodings.c: Include for dup and STDIN_FILENO. + +Thu Oct 1 01:08:40 BST 2009 Colin Watson + + * src/accessdb.c (parse_opt), src/lexgrog_test.c (parse_opt), + src/whatis.c (parse_opt): Turn off ARGP_HELP_PRE_DOC to avoid + problems with translations of documentation strings beginning with + a vertical tab separator (i.e. no pre-option documentation). + +Thu Sep 24 12:32:48 BST 2009 Colin Watson + + * lib/pipeline.c (pipeline_pump): When a source pipeline dies, make + sure to drain its output before discarding its output file + descriptor (Debian bug #548153). We still record the death to + avoid duplicate debugging messages. + * NEWS: Document this. + +Tue Sep 22 00:53:42 BST 2009 Colin Watson + + * src/encodings.c (get_default_device): If the locale encoding is + ASCII, then use the ascii device even if preconv is available; it + will do a better job than producing UTF-8 output and then recoding + that to ASCII (Debian bug #547695). + +Sat Sep 19 15:02:20 BST 2009 Clytie Siddall + + * po/vi.po: Update from Translation Project. + +Fri Sep 11 01:19:41 BST 2009 Colin Watson + + * man/po4a/po/id.po: Fix syntax error. + +Wed Sep 9 14:42:18 BST 2009 Colin Watson + + * man/man1/man.man1 (General options): Refer to the "Warnings" node + in 'info groff' for a list of available warning names (Debian bug + #545805). + +Wed Sep 9 14:36:39 BST 2009 Arif E. Nugroho + + * man/po4a/po/id.po: Update from Translation Project. + +Tue Sep 8 19:14:23 BST 2009 Arif E. Nugroho + + * po/id.po: Update from Translation Project. + +Wed Aug 26 01:12:20 BST 2009 Colin Watson + + * Version: 2.5.6. + * po/man-db.pot, po/*.po: Update. + +Wed Aug 26 01:07:16 BST 2009 Colin Watson + + * src/whatis.c (display): Include the section in the hash key used + to determine whether a page has already been displayed. + +Wed Aug 26 00:20:45 BST 2009 Colin Watson + + * libdb/db_store.c (compare_ids): Fix documentation of return + values. + (replace_if_necessary): Don't replace ULT_MAN or SO_MAN with + lesser ids just because the mtime is newer. (This still satisfies + Debian bug #490582, but doesn't cause the database to be rebuilt + every time mandb runs on hierarchies with both symlinks and whatis + entries for the same name.) + +Tue Aug 25 17:07:05 BST 2009 Colin Watson + + * src/lexgrog.l (zh_CN_name, zh_TW_name): Add alternative + translation "åå­—", seen in testprns(1). + +Tue Aug 25 17:05:51 BST 2009 Colin Watson + + * src/tests/man-1: Restrict manpath to test directories. + +Tue Aug 25 10:30:58 BST 2009 Colin Watson + + * Makefile.am (EXTRA_DIST): Add .bzrignore, + gnulib/lib/xmalloc.c.orig, gnulib/m4/intldir.m4, + gnulib/m4/sockpfaf.m4, and release.sh, for consistency between + revision control and the distribution. + +Tue Aug 25 09:48:39 BST 2009 Colin Watson + + * po/POTFILES.in: Remove src/wrapper.c. + +Sun Aug 23 15:49:45 BST 2009 Colin Watson + + * lib/pipeline.c (command_dup): Fix newcmd->nenv assertion. + +Sun Aug 23 15:41:32 BST 2009 Colin Watson + + * lib/pipeline.c (command_dup, command_setenv): cmd->env does not + need to be { NULL, NULL }-terminated. + +Sun Aug 23 11:25:50 BST 2009 Colin Watson + + * Makefile.am (EXTRA_DIST): Distribute gnulib/m4/gnulib-tool.m4. + +Sun Aug 23 11:21:40 BST 2009 Colin Watson + + * Makefile.am (EXTRA_DIST): Distribute gnulib/lib/xmalloc.patch. + +Sun Aug 23 11:15:53 BST 2009 Colin Watson + + * docs/man-db.lsm (Keywords): Add accessdb and lexgrog. + +Sun Aug 23 11:14:04 BST 2009 Colin Watson + + * docs/INSTALL.autoconf: Update to instructions from Autoconf 2.64. + +Sun Aug 23 11:11:02 BST 2009 Colin Watson + + * m4/man-bdb.m4: Bump serial, forgotten in most recent change. + +Sun Aug 23 11:07:26 BST 2009 Colin Watson + + * lib/README: Update. + +Sun Aug 23 10:56:50 BST 2009 Colin Watson + + * docs/TODO: Remove entry about the other 'man' package; 'man -K' + was the last major missing feature relative to it. + * docs/HACKING (Testing): Document new test suite. + +Sun Aug 23 10:51:33 BST 2009 Colin Watson + + * tools/README: Don't bother describing files installed here by the + autotools. + +Sun Aug 23 10:47:16 BST 2009 Colin Watson + + * src/README.zsoelim: Remove, merging text into ... + * src/zsoelim.l: ... here. + * src/Makefile.am (EXTRA_DIST): Remove README.zsoelim. + +Sun Aug 23 10:36:28 BST 2009 Colin Watson + + Remove the old set-id wrapper, which hasn't been recommended for + several years now. + + * src/wrapper.c: Remove. + * src/Makefile.am (noinst_PROGRAMS, wrapper_LDADD, wrapper_SOURCES): + Remove. + +Sun Aug 23 10:26:32 BST 2009 Colin Watson + + * README: Various minor updates. + +Sun Aug 23 00:13:56 BST 2009 Colin Watson + + * manual/Makefile.am (noinst_DATA): Move $(MANUAL).dvi to ... + (CLEANFILES): ... here. + (install-data-hook): Stop installing the DVI version of the manual + by default. + +Sun Aug 23 00:07:03 BST 2009 Colin Watson + + * configure.ac: Add --enable-automatic-create, + --disable-automatic-update, and --disable-cats options. + * include/manconfig.h.in (MAN_DB_CREATES, MAN_DB_UPDATES, MAN_CATS): + Remove. + * manual/intro.me (Arguments to configure): Document new options. + * manual/misc.me (Modes of operation): Adjust configuration advice + to use new configure options. + * README (Non-generic arguments to configure): Update. + * NEWS: Document this. + +Sun Aug 23 00:04:56 BST 2009 Colin Watson + + * lib/pipeline.c (command_setenv): New function, allowing + application code to ask for environment variables to be set when a + command is executed. + (command_new, command_new_function, command_dup, command_dump, + command_tostring, command_free): Handle new nenv, env_max, and env + members of 'struct command'. + (argstr_get_word): Add TODO comment for environment variable + support. + (pipeline_start): Set environment variables as requested. + * lib/pipeline.h (struct command_env): New structure. + (struct command): Add nenv, env_max, and env members. + (command_setenv): Add prototype. + * src/man.c (run_mandb): Set MAN_MUST_CREATE=1 environment variable + if create is true. + * src/mandb.c (main): If --create was passed and no databases were + created, only exit non-zero if MAN_MUST_CREATE=1. + +Sat Aug 22 15:34:15 BST 2009 Colin Watson + + Cope with some more cases of database corruption (Debian bug + #187750). + + * libdb/db_store.c (dbstore): Always replace existing keys once + we've decided we ought to. If the key already exists in the + database, then that probably indicates some kind of database + corruption, but our new key is almost certainly better. + * src/check_mandirs.c (sanity_check_db): New function, checking + dbver_rd and ensuring that all keys have non-NULL content. + (update_db): Use sanity_check_db to decide whether an existing + database is OK. + + * src/accessdb.c (main): If we encounter a key with no content, + print a debugging message and continue as far as we can before + exiting non-zero, rather than just silently exiting non-zero + immediately. + +Sat Aug 22 14:58:39 BST 2009 Colin Watson + + * src/tests/mandb-2: Run mandb with a clean path, and only on the + test manual page hierarchy (already done for the second instance, + but not the first). + +Sat Aug 22 14:51:25 BST 2009 Yuri Kozlov + + * po/ru.po: Update from Translation Project. + +Sat Aug 22 14:42:49 BST 2009 Colin Watson + + * src/manconv.c (try_iconv): When trying the last source encoding in + the list, ignore characters not representable in UTF-8 (which + almost certainly means codepoints that do not exist in the source + encoding). + * src/tests/manconv-2: Add test for this. + +Thu Aug 20 23:52:28 BST 2009 Yuri Kozlov + + * man/po4a/po/ru.po: Update from Translation Project. + +Thu Aug 20 15:17:54 BST 2009 Colin Watson + + * src/lexgrog.l (MAX_NAME): Increase from 2048 to 8192, since some + manual pages with NAME sections exceeding 2048 bytes have been + observed in the wild (Debian bug #489907). + +Thu Aug 20 15:05:38 BST 2009 Colin Watson + + * src/encodings.c (check_preprocessor_encoding): Break coding tag + search loop if pp_search is NULL, fixing a segfault (introduced by + the fix for Debian bug #496604) if there is a preprocessor comment + line with no coding tag. + * src/tests/manconv-1: Add a test for this bug. + +Thu Aug 20 09:52:23 BST 2009 Colin Watson + + * libdb/db_store.c (replace_if_necessary): Always replace if the + mtime of the new data is newer than that of the old data, + regardless of the id (Debian bug #490582). + + * src/tests/testlib.sh (next_second): New function. + * src/tests/mandb-2: New test for this bug. + * src/tests/Makefile.am (TESTS): Add mandb-2. + + * src/tests/mandb-1: Run mandb with a clean path, and only on the + test manual page hierarchy. + +Thu Aug 20 07:47:02 BST 2009 Colin Watson + + * src/man.c (run_mandb): If -C was given, pass it through to mandb. + (main): Treat the main configuration file as optional if -C was + given. + + * src/tests/testlib.sh (fake_config): Take the manual page + hierarchies to use as arguments. + (run_clean_path): New function. + * src/tests/man-1: New test, for Debian bug #163347 (apparently + fixed some time back). + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Set CLEANPATH, so that + run_clean_path can run commands with a reduced PATH. + (TESTS): Add man-1. + +Wed Aug 19 20:23:00 BST 2009 Colin Watson + + * src/mandb.c (main): Treat the main configuration file as optional + if we're only producing user databases. This makes testing easier. + + * configure.ac, m4/man-bdb.m4 (MAN_CHECK_BDB): Define DBTYPE to + gdbm, ndbm, or btree, indicating the database type in use. + + * src/tests/testlib.sh (fake_config, db_ext, accessdb_filter): New + functions. + * src/tests/mandb-1: New test. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Set DBTYPE + appropriately in the test environment. + (TESTS): Add mandb-1. + +Wed Aug 19 12:17:25 BST 2009 Colin Watson + + * src/tests/testlib.sh (write_page): New function. + * src/tests/lexgrog-1: New (fairly trivial) test. + * src/tests/Makefile.am (TESTS): Add lexgrog-1. + +Wed Aug 19 00:10:58 BST 2009 Colin Watson + + * Version: 2.5.6-pre1. + * po/man-db.pot, po/*.po: Update. + +Tue Aug 18 23:53:50 BST 2009 Colin Watson + + * src/tests/Makefile.am (dist_check_SCRIPTS): Distribute test files. + +Tue Aug 18 23:39:28 BST 2009 Colin Watson + + * src/tests/Makefile: Remove; accidentally added to revision + control. + * .bzrignore: Ignore src/tests/Makefile. + +Tue Aug 18 09:47:50 BST 2009 Colin Watson + + * src/manconv.c (try_iconv): Convert text to UTF-8 and then (if + necessary) to the target encoding. This allows us to distinguish + between "text not in input encoding" and "characters not + representable in output encoding" (Debian bug #514963). + * src/tests/manconv-2: Add test for this and some other possible + encoding-handling bugs in manconv. + * src/tests/Makefile.am (TESTS): Add manconv-2. + * NEWS: Document this. + +Mon Aug 17 18:32:04 BST 2009 Colin Watson + + * src/tests/testlib.sh (init): New function. + (finish): Honour TEST_FAILURE_KEEP environment variable. + * src/tests/manconv-1: Use init function. Reverse diff arguments so + that failure output makes more sense. + +Mon Aug 17 00:56:20 BST 2009 Colin Watson + + * NEWS: Update. + +Mon Aug 17 00:38:12 BST 2009 Colin Watson + + * src/encodings.c (conversion_table): New table, with contents + mostly borrowed from groff's preconv. + (convert_encoding): New function. + (check_preprocessor_encoding): Loop through semicolon-separated + tags, and convert Emacs coding tags to ones that libiconv + understands (Debian bug #496604). + * src/tests/manconv-1: Test multiple tags. Test coding aliases. + +Sun Aug 16 23:52:38 BST 2009 Colin Watson + + * src/tests/testlib.sh: Add a simple test library, to be extended as + necessary. + * src/tests/manconv-1: Use it. + +Sun Aug 16 23:37:11 BST 2009 Colin Watson + + * src/tests/manconv-1: Simple test for manconv's handling of + Emacs-style coding: tags. + * src/tests/Makefile.am: New file. + * src/Makefile.am (SUBDIRS): Add tests. + * configure.ac (AC_CONFIG_FILES): Add src/tests/Makefile. + * .bzrignore: Ignore src/tests/tmp-*. + +Fri Aug 14 16:09:56 BST 2009 Colin Watson + + * tools/chconfig: Make executable. + +Fri Aug 14 12:20:16 BST 2009 Colin Watson + + * manual/Makefile.am (install-data-hook, uninstall-hook): + Install/uninstall the manual into/from $(docdir). + +Fri Aug 14 12:18:43 BST 2009 Colin Watson + + * docs/Makefile.am (dist_noinst_DATA): Move NEWS to ... + * Makefile.am (dist_noinst_DATA): ... here. + +Fri Aug 14 11:50:27 BST 2009 Colin Watson + + Move ChangeLog and NEWS to their more conventional location at the + top level. + + * docs/ChangeLog: Move to ... + * ChangeLog: ... here. + * docs/NEWS: Move to ... + * NEWS: ... here. + * README, docs/HACKING (Revision control, Release process), + src/check_mandirs.c: Update references. + +Fri Aug 14 11:43:41 BST 2009 Colin Watson + + * configure.ac: Use silent rules by default if Automake 1.11 is + available. + * man/Rules.man (replace.sed, .man1.1, .man5.5, .man8.8): Be quieter + in silent mode. + + Upgrade to Autoconf 2.64, Automake 1.11, and Gnulib 20090801. + +Mon Aug 3 17:13:19 BST 2009 Colin Watson + + * src/encodings.c (less_charset_table): Add CP1251 -> windows, per + less(1) (Debian bug #539690). + +Wed Jul 22 10:48:10 BST 2009 Colin Watson + + Make whatis/apropos only display any given manual page, or pointers + to it, once (Ubuntu bug #27113). + + * lib/hashtable.c (hash_lookup_structure): Make external. + * lib/hashtable.h (hash_lookup_structure): Add prototype. + * src/whatis.c (get_whatis): Split pointer resolution out to ... + (resolve_pointers): ... here. Only accept info->pointer == page if + info->name == page too. + (display): Use resolve_pointers so that we have the resolved name + to hand. Only display any given resolved name once. + (main): Initialise display_seen hash table. + * docs/NEWS: Document this. + +Tue Jul 21 22:05:01 BST 2009 Colin Watson + + * docs/NEWS: Fix typo. + +Tue Jul 21 15:17:49 BST 2009 Colin Watson + + * man/man1/man.man1 (Controlling formatted output, ENVIRONMENT): + Explicitly state that -P/$PAGER/$MANPAGER identifies a single + command with no pipes (Debian bug #363250). + +Mon Jul 20 10:59:00 BST 2009 Colin Watson + + * src/man.c (locale_macros): Fix groff version test not to think + that 1.20.1 >= 1.20.2. + +Tue Jul 14 22:48:56 BST 2009 Colin Watson + + * configure.ac: Add -Wredundant-decls to CFLAGS. + * lib/tempfile.c: Remove redundant declarations of mkstemp and + mkdtemp. + * src/manp.c: Remove redundant and unused declaration of + program_name. + * src/zsoelim.l: Add never-interactive option, partly because that's + reasonably accurate anyway and partly to suppress flex's redundant + declaration of isatty. + +Mon Jul 13 13:40:17 BST 2009 Colin Watson + + * src/man.c (options, parse_opt): New --no-subpages option. + (main): Try pairing up manual page names with hyphens unless + --no-subpages was given. + * ma/man1/man.man1 (SYNOPSIS, Finding manual pages): Document + --no-subpages. + * docs/NEWS: Document this. + +Mon Jul 13 01:17:41 BST 2009 Colin Watson + + * README (Copyright and licensing): Update copyright years. + +Mon Jul 13 00:48:32 BST 2009 Colin Watson + + * src/encodings.c (get_less_charset, get_jless_charset): Cope with + locale_charset being NULL; loosely based on a patch posted to + mingw-msys by Mark Junker + (http://osdir.com/ml/gnu.mingw.msys/2005-06/msg00012.html). + +Sun Jun 28 17:56:49 BST 2009 Colin Watson + + Don't create unnecessary database directories (Debian bug #472919). + + * src/check_mandirs.c (testmandirs): Add catpath and create + arguments. Create the database when it first seems to be needed. + Use mkcatdirs rather than make_database_directory. + (make_database_directory): Remove. + (create_db): Add catpath argument. Don't create the database here; + let testmandirs do it when needed instead. + (update_db): Add catpath argument. Don't create the database + directory; either it exists already in which case there's nothing + to do, or it's missing in which case there'll be no database to + update anyway. + * src/check_mandirs.h (create_db, update_db): Update prototypes. + * src/mandb.c (update_db_wrapper): Add catpath argument. + (mandb): Update calls to functions that now take the catpath too. + * src/manp.c (add_mandb_map): Don't create the cat hierarchy here; + testmandirs will do it on demand. + (mkcatdirs): Make external for use by check_mandirs.c. + * src/manp.h (mkcatdirs): Add prototype. + * docs/NEWS: Document this. + +Sun Jun 28 16:33:24 BST 2009 Colin Watson + + * man/man1/man.man1 (DESCRIPTION): Note that the exact rendering of + (e.g.) italic text may vary depending on the output device (Debian + bug #516808). + +Sun Jun 28 16:21:34 BST 2009 Colin Watson + + Implement 'man -K', which was the last major remaining missing + feature when comparing man-db with the man package (Debian bug + #135926, Ubuntu bug #390575). + + * src/man.c (options, parse_opt): New -K/--global-apropos option. + (main): Handle --global-apropos. + (locate_page): Skip database lookups in --global-apropos mode. + (grep, do_global_apropos_section, do_global_apropos): New + functions. + * src/man.h (do_global_apropos): Add prototype. + * man/man1/man.man1 (SYNOPSIS, Main modes of operation): Document + -K/--global-apropos. + * docs/NEWS: Document this. + +Sun Jun 28 10:31:16 BST 2009 Colin Watson + + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: po4a 0.36 tags + "type:" comments as extracted comments rather than translator + comments. Upgrade our .pot and .po files to match. + +Sun Jun 28 02:04:55 BST 2009 Colin Watson + + * src/manp.c (get_nls_manpath): Close mandir, fixing a memory leak. + +Sun Jun 28 01:47:51 BST 2009 Colin Watson + + * lib/pipeline.c (pipeline_free): Free buffer and line_cache. + +Sun Jun 28 01:40:24 BST 2009 Colin Watson + + * lib/pipeline.c (get_line): Limit newline search to the data length + returned by get_block, fixing an assertion failure. + * docs/NEWS: Document this. + +Mon Jun 22 08:02:55 BST 2009 Colin Watson + + * src/descriptions.c (parse_descriptions): Strip leading and + trailing whitespace from name tokens before checking whether they + contain whitespace. + * docs/NEWS: Document this. + +Sun Jun 21 02:55:56 BST 2009 Colin Watson + + * docs/NEWS: Document previous change. + +Sun Jun 21 02:20:22 BST 2009 Colin Watson + + * libdb/db_lookup.c (dblookup): In exact mode, make sure extensions + match exactly, rather than merely that the extension found is a + prefix of that which was requested (Arch Linux bug #14467). + +Sun Jun 21 02:00:31 BST 2009 Colin Watson + + * src/ult_src.c (ult_src): Keep a copy of base before passing it to + decompress_open, as that function doesn't keep its own copy and we + may change base later. + +Sat Jun 20 21:26:02 BST 2009 Colin Watson + + * libdb/db_store.c (replace_if_necessary): Prevent misleading + debugging message: don't say "ignoring differing ids" if the new + id was preferred and we attempted a replacement. + +Sat May 30 12:50:44 BST 2009 Colin Watson + + * lib/pipeline.c (pipeline_start): Check the return value of nice. + + * include/manconfig.h.in (create_tempdir): Warn if the result is not + used. + * lib/tempfile.c (create_tempdir): Check the return value of + mkdtemp. + * src/man.c (format_display): Check the return value of + create_tempdir. + +Sat May 30 13:37:58 CEST 2009 Colin Watson + + * src/man.c (make_roff_command): Initialise page_encoding. + +Wed May 13 18:28:44 BST 2009 Colin Watson + + * gnulib: Upgrade to 20090501. + * tools/config.guess, tools/config.sub: Update. + +Wed Apr 22 15:50:51 BST 2009 Colin Watson + + * src/lexgrog.l (lt_name): Add. + +Wed Apr 15 00:34:06 BST 2009 Colin Watson + + * man/it/man1/whatis.man1 (STATI D'USCITA): Fix section heading + (formerly "STATI D?USCITA") to match man(1) and apropos(1). + Reported by Ken Moffat. + +Wed Apr 15 00:33:16 BST 2009 Colin Watson + + * man/check-man: Set MAN_KEEP_FORMATTING=1, since a UTF-8-aware col + (such as that in util-linux-ng) will object to being asked to + process non-ASCII text under LC_ALL=C. Reported by Ken Moffat. + * docs/NEWS: Document this. + +Wed Apr 15 00:31:00 BST 2009 Colin Watson + + * docs/NEWS: Start 2.5.6. + +Wed Apr 15 00:22:54 BST 2009 Colin Watson + + * .bzrignore: Ignore gnulib/lib/glthread/.deps and + gnulib/lib/glthread/.dirstamp. + +Wed Apr 15 00:20:45 BST 2009 Colin Watson + + Upgrade to Autoconf 2.63, Automake 1.10.2, and Gnulib 20090401. + +Tue Apr 14 23:59:40 BST 2009 Colin Watson + + Call gnulib-tool after autopoint, and only use the gettext macros + supplied via gnulib. This is required to work properly with current + versions of gettext and gnulib; see + http://lists.gnu.org/archive/html/bug-gnulib/2009-03/msg00154.html + and thread. + + * autogen.sh: If gnulib-tool is installed, call autopoint first and + prevent autoreconf from calling it later. Remove special handling + of tools/config.rpath, which is not necessary with this approach. + * Makefile.am (ACLOCAL_AMFLAGS): Put gnulib/m4 before m4, so that + autopoint puts its macros in gnulib/m4 (later overwritten by + gnulib-tool). + +Mon Mar 23 14:32:25 GMT 2009 Arif E. Nugroho + + * po/id.po, man/po4a/po/id.po: Update from Translation Project. + +Wed Mar 18 01:10:50 GMT 2009 Colin Watson + + * docs/HACKING (Revision control): Moved bzr archive to Savannah; + update URLs and note that this now allows access to other members + of the man-db group on Savannah. + +Mon Mar 16 11:42:35 GMT 2009 Colin Watson + + * Makefile.am (EXTRA_DIST): Distribute gnulib/m4/gnulib-cache.m4. + +Mon Mar 16 10:39:40 GMT 2009 Yuri Kozlov + + * man/po4a/po/ru.po: Update from Translation Project. + +Sun Mar 15 13:13:40 GMT 2009 Colin Watson + + Apparently some packages ship section 0 manual pages documenting C + library header files. See http://bugs.archlinux.org/task/13734 and + http://en.wikipedia.org/wiki/Manual_page_(Unix). + + * configure.ac (--with-sections): Add section 0 between 3 and 2. + * man/man5/manpath.man5 (FORMAT): Update documentation of SECTION. + * src/man_db.conf.in (SECTION): Update documentation. + +Sun Mar 15 01:08:16 GMT 2009 Colin Watson + + * gnulib: Import the sigaction, signal, and sigprocmask modules. + +Sat Mar 14 22:44:33 GMT 2009 Colin Watson + + * Version: 2.5.5. + +Sat Mar 14 22:42:39 GMT 2009 Colin Watson + + * man/check-man: Ignore "cannot adjust line" and "can't break line" + groff warnings for all languages, not just CJK; long + %manpath_config_file% values during 'make distcheck' cause + problems here at the moment. + +Sat Mar 14 18:51:22 GMT 2009 Colin Watson + + * man/check-man: Force MANWIDTH to 80. Ignore "table wider than line + width" warnings from groff >= 1.20 for now. + +Sat Mar 14 18:34:26 GMT 2009 Arif E. Nugroho + + * man/po4a/po/id.po: Update from Translation Project. + +Sat Mar 14 13:54:13 GMT 2009 Colin Watson + + * man/Makefile.am (EXTRA_DIST): Distribute check-man. + + * src/manp.c (read_config_file): Add argument to control whether the + main configuration file is optional. Use a static variable to + track whether we've been called already. + (get_manpath): read_config_file will keep track of whether it's + been called already for itself. Pass new argument. + * src/manp.h (read_config_file): Update prototype. + * src/man.c (main): Treat the main configuration file as optional if + -l was given, since in that case we can get by well enough without + it. This makes it easier to run 'make check' without first running + 'make install'. + +Sat Mar 14 12:07:58 GMT 2009 Colin Watson + + * docs/NEWS: Start 2.5.5. + +Sat Mar 14 00:29:51 GMT 2009 Dustin Marquess + + * src/man.c (sort_candidates): Initialise count (Debian bug + #519647). + +Tue Mar 10 23:46:08 GMT 2009 Will Day + + * man/man1/man.man1 (Controlling formatted output): Fix missing + backslash in -r default (Debian bug #519162). + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +Tue Mar 10 23:24:27 GMT 2009 Colin Watson + + Fix handling of pages that declare a non-default encoding in their + preprocessor lines. Thanks to Hugo Herbelin for some of the ideas + here (Debian bug #519095). + + * src/encodings.c (get_source_encoding): Note that this function + should only be called if the page encoding is UTF-8. Add another + example. + * src/manconv.c (check_preprocessor_encoding): Move to ... + * src/encodings.c (check_preprocessor_encoding): ... here. + * src/encodings.h (check_preprocessor_encoding): Add prototype. + * src/man.c (make_roff_command): Use preprocessor-declared encoding + as page_encoding if known. Set source_encoding to page_encoding + unless the latter is UTF-8. + * src/Makefile.am (manconv_SOURCES): Add encodings.c. + + * src/encodings.c (charset_table): Use ISO-8859-15 -> latin1 entry + only in the !MULTIBYTE_GROFF case; true ISO-8859-15 pages are + better handled using ascii8 or preconv if possible. + +Tue Mar 10 14:11:14 GMT 2009 Colin Watson + + * src/zsoelim.l (zsoelim_parse_file): Put the initial .lf request + after any initial comment line, so that manconv can find encoding + instructions more easily. + +Mon Mar 9 11:32:19 GMT 2009 Colin Watson + + * man/check-man: Check that a manual page formats without errors; + inspired by Lintian. + * man/Rules.man: Run check-man over all manual pages during 'make + check'. + +Mon Mar 9 10:47:08 GMT 2009 Arif E. Nugroho + + * man/po4a/po/id.po: Update from Translation Project. + +Tue Feb 24 01:06:46 GMT 2009 Colin Watson + + * Version: 2.5.4. + * po/man-db.pot, po/*.po: Update. + +Tue Feb 24 01:00:56 GMT 2009 Colin Watson + + * man/po4a/po/id.po: Fix groff syntax error. + +Mon Feb 23 22:37:36 GMT 2009 Colin Watson + + * docs/HACKING (Sending patches): Refer to new man-db-devel mailing + list. + +Mon Feb 23 22:29:43 GMT 2009 Colin Watson + + * docs/HACKING (Things to do): Improve bug tracking system link. + +Mon Feb 23 22:17:50 GMT 2009 Colin Watson + + * src/man.c (locale_macros, display): Only load per-locale groff + macros if preconv is available, since those macros may change the + assumed input encoding. + +Mon Feb 23 22:11:56 GMT 2009 Colin Watson + + * docs/NEWS: Update. + +Sat Feb 21 12:01:55 GMT 2009 Colin Watson + + Load per-locale groff macros if possible. This only works with groff + 1.20.2 (as yet unreleased) or better, since that introduces + facilities to allow us to avoid an error message if there is no + macro file for the relevant locale. + + * src/man.c (locale_macros): New function. + (display): Check the page language, and add locale_macros to the + formatting pipeline provided that the language is not empty or + "C". + +Fri Feb 20 09:58:13 GMT 2009 Colin Watson + + Partially rewrite building of manpath according to locale. The + previous code was completely wrong: as well as handling duplicates + rather oddly, it effectively handled LANGUAGE in reverse order + (Debian bug #516133). + + * src/manp.c (add_nls_manpath): Rename to ... + (get_nls_manpath): ... this. Some minor adjustments. Make + manpathlist argument const and always return a freshly-allocated + string. Explicitly add the top-level directory to the string in + the case of English locales (although we still look for + subdirectories in case of things like en_GB.UTF-8); C and POSIX + already just return a copy of manpathlist. + (add_nls_manpaths): New function to iterate over a colon-separated + list of locales, concatenating the result of get_nls_manpath for + each. Stop worrying about deduplication at this point as we used + to; instead, we let create_pathlist sort that out. + (create_pathlist): Keep the first of any set of duplicates rather + than the last, in order to keep item order stable. + * src/manp.h (add_nls_manpath): Remove prototype. + (add_nls_manpaths): Add prototype. + * src/man.c (main), src/whatis.c (main): Call add_nls_manpaths + rather than add_nls_manpath, with appropriate adjustments. + + * src/man.c (main), src/whatis.c (main): Don't set internal_locale + to the first component of multiple_locale. We will account for + this in search paths, but shouldn't forget about internal_locale + entirely. + +Thu Feb 19 21:50:44 GMT 2009 Colin Watson + + * src/manp.c (add_to_manpath): Remove; this just called pathappend + with the same arguments and so is pointless cruft. + (add_nls_manpath): Update all callers. + +Tue Feb 17 00:49:28 GMT 2009 Colin Watson + + * configure.ac: Check for gpreconv/preconv properly, i.e. by using + AC_CHECK_PROGS rather than by using 'which'. + +Mon Feb 16 01:45:59 GMT 2009 Colin Watson + + * docs/NEWS: Update. + +Mon Feb 16 00:49:47 GMT 2009 Colin Watson + + * src/man.c (make_roff_command): If we have preconv, it's silly to + recode to the assumed page encoding and risk problems with + characters unrepresentable in that encoding; we might as well just + recode to UTF-8 and feed that to preconv. + +Mon Feb 16 00:39:22 GMT 2009 Colin Watson + + * src/man.c (make_roff_command): Append //TRANSLIT to iconv -t + argument (specifically, so that hyphens get properly + transliterated when using preconv and groff -Tutf8 in a non-UTF-8 + locale; thanks, Matthew Burgess and Alexander Patrakov). + +Mon Feb 16 00:20:07 GMT 2009 Colin Watson + + * configure.ac: Check for gpreconv/preconv, which is evidence of a + version of groff supporting Unicode input, and therefore good + enough to assume --enable-mb-groff (thanks, Matthew Burgess). + +Sun Feb 15 23:48:51 GMT 2009 Colin Watson + + * src/man.c (compare_candidates): Remove obsolete first-pass + language code comparison. Language codes are already handled by + later code here, and this comparison caused English pages to be + preferred over pages for languages whose names sort later than + "man". + +Thu Feb 12 11:23:19 GMT 2009 Colin Watson + + * src/manconv_main.c (main): Correct error message if the given + filename cannot be opened. + +Wed Feb 4 13:53:47 CET 2009 Yuri Kozlov + + * man/po4a/po/ru.po: Update from Translation Project (trivial). + +Sun Feb 1 16:40:16 GMT 2009 Colin Watson + + * docs/HACKING (Directory layout): Mention gnulib. + +Sun Feb 1 16:36:01 GMT 2009 Colin Watson + + * lib/linelength.c (get_line_length): Use line length from standard + input, but only if standard output is not a terminal; this allows + commands such as 'MAN_KEEP_STDERR=1 man foo >/dev/null' to report + errors based on the current line length. + +Sat Jan 31 12:20:42 GMT 2009 Colin Watson + + * docs/NEWS: Update. + +Sat Jan 31 12:14:10 GMT 2009 Arif E. Nugroho + + * po/id.po: Update from Translation Project. + +Tue Jan 27 09:54:25 GMT 2009 Clytie Siddall + + * po/vi.po: Update from Translation Project (trivial). + +Tue Jan 27 09:52:18 GMT 2009 Erwin Poeze + + * po/nl.po: Update from Translation Project. + * man/THANKS: Update. + +Mon Jan 26 13:40:30 GMT 2009 Clytie Siddall + + * po/vi.po: Update from Translation Project. + +Mon Jan 26 13:38:11 GMT 2009 Robert Luberda + + * po/pl.po, man/po4a/po/pl.po: Update from Translation Project. + +Sun Jan 18 23:27:11 GMT 2009 Colin Watson + + * lib/linelength.c (get_line_length): Line length is a property of + output, not input, so only check whether standard output is a + terminal, not also standard input (Debian bug #512233). + +Thu Jan 15 16:04:01 GMT 2009 Colin Watson + + * po/Makevars (XGETTEXT_OPTIONS): Add --flag=debug:1:c-format + --flag=debug_error:1:c-format. + +Thu Jan 15 00:00:05 GMT 2009 Colin Watson + + Update manual page search order to permit FHS-compliant installation + of packages in /opt. Reported by Matt Domsch. + + * src/manp.c (has_mandir): Use xasprintf rather than clumsier + xmalloc/strncpy/strcpy combination. Try ../share/man and share/man + subdirectories too. + (get_manpath_from_path): Update header comment and debug output. + * manual/files.me (Determination of the internal manpath): Update + description of directory search order. + * docs/NEWS: Document this. + +Mon Jan 5 17:47:55 GMT 2009 Yuri Kozlov + + * po/ru.po, man/po4a/po/ru.po: Update from Translation Project. + +Mon Jan 5 17:35:02 GMT 2009 Arif E. Nugroho + + * man/po4a/po/id.po: Update from Translation Project. + +Wed Dec 31 12:28:55 GMT 2008 Colin Watson + + Trust the database if it tells us that a page is ULT_MAN (i.e. not a + hard link, symbolic link, or .so link), and avoid passing the + SO_LINK flag to ult_src which requires it to open the page to look + for .so links. Produces roughly a threefold speed improvement for + searches with thousands of results. + + * src/man.c (get_ult_flags): New function. + (add_candidate, display_database): Use it. + +Wed Dec 31 11:51:41 GMT 2008 Colin Watson + + Sort manual page candidates in one go just before displaying them, + rather than insertion-sorting them along the way. Produces, very + roughly, a 25% speed improvement for searches with many results + (e.g. with --regex). + + * src/man.c (duplicate_candidates, compare_candidates): Simplify + interface by passing 'struct candidate' for both sides. + (compare_candidates): Explicitly stabilise the comparison as a + last resort, using a new add_index member. + (compare_candidates_qsort, free_candidate): New functions. + (add_candidate): Adjust calls to duplicate_candidates and + compare_candidates, requiring us to create the candidate structure + earlier. Note that the search produces quadratic-time behaviour. + Only compare candidates in cases of duplicates; otherwise just add + them to the end of the list and defer sorting until later. Use + free_candidate to free search->ult as well as search when freeing + superseded duplicates. + (sort_candidates): New function. + (man): Sort candidates before displaying them. + +Tue Dec 30 13:08:35 GMT 2008 Colin Watson + + * Version: 2.5.4-pre2. + * po/man-db.pot, po/*.po: Update. + +Tue Dec 30 12:55:59 GMT 2008 Colin Watson + + * man/man5/manpath.man5 (FORMAT): Add space between + "MINCATWIDTH"/"MAXCATWIDTH"/"CATWIDTH" and "width". + * man/po4a/po/id.po: Unfuzzy translations. + +Tue Dec 30 12:52:26 GMT 2008 Arif E. Nugroho + + * po/id.po, man/po4a/po/id.po: Update from Translation Project. + +Sun Dec 28 00:27:23 GMT 2008 Colin Watson + + * Version: 2.5.4-pre1. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po, po/man-db.pot, + po/*.po: Update. + +Sun Dec 28 00:17:45 GMT 2008 Colin Watson + + * man/po4a/Makefile.am (PO4A_ARGS): Always generate output files + even if poorly translated, since Automake's generated rules will + get upset otherwise. + +Sat Dec 27 23:47:19 GMT 2008 Colin Watson + + * man/po4a/Makefile.am (dist-hook): Update PO and POT files on 'make + dist'. + +Sat Dec 27 23:42:53 GMT 2008 Colin Watson + + * man/man1/man.man1 (Controlling formatted output): Hide ".B + \-\-no\-hyphenation" from po4a. + +Sat Dec 27 11:38:43 GMT 2008 Colin Watson + + * docs/NEWS: Start 2.5.4. + +Sat Dec 27 00:00:01 GMT 2008 Colin Watson + + Add option to disable hyphenation (Debian bug #166701). + + * src/man.c (options, parse_opt): Accept --no-hyphenation. Reset + corresponding variable with -D. + (disable_hyphenation): New function. + (display): Append disable_hyphenation to the decompressor pipeline + if --no-hyphenation is used. + * man/man1/man.man1 (SYNOPSIS, Controlling formatted output): + Document --no-hyphenation. + +Thu Dec 25 22:09:01 GMT 2008 Colin Watson + + Add regular expression and shell wildcard search facilities to man + (Debian bug #461319). + + * src/whatis.c (lower): Move to ... + * lib/lower.c: ... here, with optimisation from name_to_key. New + file. + * lib/lower.h: New file. + + * src/whatis.c (word_fnmatch): Move to ... + * lib/wordfnmatch.c: ... here, with more generic argument names. New + file. + * lib/wordfnmatch.h: New file. + + * src/whatis.c (main): Factor regcomp error handling out to ... + * lib/xregcomp.c: ... here. New file. + * lib/xregcomp.h: New file. + + * lib/Makefile.am (libman_a_SOURCES): Add lower.c, lower.h, + wordfnmatch.c, wordfnmatch.h, xregcomp.c, and xregcomp.h. + * po/POTFILES.in: Add lib/xregcomp.c; remove src/globbing.c. + + * libdb/db_lookup.c (name_to_key): Use lower. + (dblookup_pattern): New function. + * libdb/db_storage.h (dblookup_pattern): Add prototype. + * src/globbing.c (end_pattern): Rename to ... + (make_pattern): ... this. Create the whole pattern rather than + merely appending section or extension components. Handle regexes + if the new opts argument has the LFF_REGEX bit set. + (match_in_directory): Take an opts disjunction rather than a + boolean ignore_case argument; ignore_case is replaced by the + LFF_MATCHCASE bit being unset. Handle regexes if opts has the + LFF_REGEX bit set. + (look_for_file): Take an opts disjunction rather than a boolean + match_case argument; match_case is replaced by the LFF_MATCHCASE + bit being set. Handle regexes if opts has the LFF_REGEX bit set. + Handle shell wildcards if opts has the LFF_WILDCARD bit set (which + simply means not shell-escaping unesc_name). Call make_pattern + rather than end_pattern (with appropriate adjustments). + * src/globbing.h (enum look_for_file_opts): New enumeration. + (look_for_file): Update prototype. + * src/globbing_test.c (options, parse_opt): Accept -r/--regex and + -w/--wildcard. + (main): Update look_for_file arguments, including passing + LFF_REGEX or LFF_WILDCARD if the corresponding options are used. + * src/check_mandirs.c (purge_whatis, purge_missing), src/zsoelim.l + (zsoelim_open_file): Update look_for_file arguments. + * src/whatis.c (main): Only free preg if a regular expression was + compiled into it in the first place. + + * src/man.c (options, parse_opt): Accept --regex, --wildcard, and + --names-only. Reset corresponding variables with -D. Refuse to + accept both --regex and --wildcard. + (try_section): Update look_for_file arguments, including passing + LFF_REGEX or LFF_WILDCARD if the corresponding options are used. + (try_db): Use dblookup_pattern if --regex or --wildcard is used, + with corresponding options. + * man/man1/man.man1 (SYNOPSIS, Finding manual pages): Document + --regex, --wildcard, and --names-only. + +Tue Dec 23 11:17:01 GMT 2008 Colin Watson + + Sync supported language list with Fedora's patch to man + (http://cvs.fedora.redhat.com/viewvc/rpms/man/F-10/man-1.6b-i18n_nroff.patch?view=markup, + with corrections based on /usr/share/i18n/SUPPORTED). + + * src/encodings.c (directory_table): Add Estonian -> ISO-8859-1, + Belarusian -> CP1251, Greek -> ISO-8859-7, Lithuanian -> + ISO-8859-13, Latvian -> ISO-8859-13, Macedonian -> ISO-8859-5, + Romanian -> ISO-8859-2, Slovenian -> ISO-8859-2, and Ukrainian -> + KOI8-U. + (charset_alias_table): Map KOI8U to KOI8-U. + (less_charset_table): Map KOI8-U to koi8-r (possibly not quite + right but with any luck good enough). + +Mon Dec 8 13:08:22 GMT 2008 Colin Watson + + * libdb/db_store.c (compare_ids): If the promote_links argument is + true, consider SO_MAN equivalent to ULT_MAN. + (replace_if_necessary): Update call to compare_ids. + * libdb/db_storage.h (compare_ids): Update prototype. + * src/man.c (compare_candidates): Consider SO_MAN equivalent to + ULT_MAN for the purposes of sorting candidate pages for display + (Debian bug #384301). + +Mon Dec 8 10:08:45 GMT 2008 Colin Watson + + Improve sorting and de-duplication of manual page candidates (Debian + bugs #389762 and #496172). + + * src/man.c (struct candidate): Add ult member. + (duplicate_candidates): Pare down to only check for duplication + rather than trying to compare as well; the latter function is now + handled entirely by compare_candidates. Compare the ultimate + source file as the first test. + (compare_candidates): Compare locale elements in candidate paths + before comparing sections. + (add_candidates): Look up the ultimate source file if necessary, + and save it in the candidate structure. Use duplicate_candidates + for duplicate testing only and compare_candidates for comparison. + Insert elements at the latest possible position rather than the + earliest possible. + (try_section): Pass the ultimate source file that was already + looked up here. + (try_db): Adjust for new add_candidate signature. + +Sun Dec 7 17:43:21 GMT 2008 Colin Watson + + Make handling of terminal widths for cat pages configurable (Debian + bug #121997). + + * src/manp.c (add_to_dirlist): Recognise new MINCATWIDTH, + MAXCATWIDTH, and CATWIDTH directives. + * src/man_db.conf.in: Add MINCATWIDTH, MAXCATWIDTH, and CATWIDTH. + * src/man.c (get_roff_line_length): Use CATWIDTH rather than the + terminal width if the former is non-zero. + (add_roff_line_length): Check the terminal width against + MINCATWIDTH and MAXCATWIDTH rather than checking whether it + differs from groff's default (via get_roff_line_length). Allow cat + page saving regardless in catman mode. + (make_roff_command): Forbid saving cat pages in troff mode here + rather than via add_roff_line_length/get_roff_line_length. + * man/man5/manpath.man5 (FORMAT): Document MINCATWIDTH, MAXCATWIDTH, + and CATWIDTH. + +Sun Dec 7 17:17:34 GMT 2008 Colin Watson + + * man/man5/manpath.man5 (FORMAT): Document SECTION. + +Sat Dec 6 22:57:14 GMT 2008 Colin Watson + + Reorganise lexgrog to stop on any unrecognised roff request, rather + than continuing and often littering the database with garbage + (Debian bug #271402). This also involved extending lexgrog to + recognise some additional requests. + + * src/lexgrog.l (word): New definition. + (typeface): Add .SB and .SM. + (MAN_PRENAME): Go straight to MAN_REST on encountering a section + request or EOF. Go to MAN_NAME on encountering roff requests that + would ordinarily be processed and removed. Skip over any other + roff requests, including spacing and comments. + (MAN_NAME): Process .Tn and .Nm by handling their arguments as + text. Process .At, .Bsx, .Bx, .Fx, .Nx, .Ox, and .Ux by inserting + the appropriate text (introducing several new mini-scanners). + Process .Dq by surrounding its arguments by double quotes. Go to + MAN_REST on encountering any unrecognised roff request. + (add_wordn_to_whatis, add_word_to_whatis, mdoc_text): New + functions to support scanning of .At and friends. + +Fri Dec 5 22:27:03 GMT 2008 Colin Watson + + * man/man8/mandb.man8 (FILES): List FHS database cache location + first, and indicate more clearly that the others are old locations + (from a comment in Debian bug #243763). + +Fri Dec 5 13:52:14 GMT 2008 Colin Watson + + Make it possible to override man's default of discarding stderr when + stdout is a terminal (Debian bug #480996). + + * src/man.c (discard_stderr): Make static. + (maybe_discard_stderr): New function, checking MAN_KEEP_STDERR. + (format_display_and_save, format_display, display_catman): Use + maybe_discard_stderr. + * man/man1/man.man1 (ENVIRONMENT): Document this. + +Thu Dec 4 15:03:08 GMT 2008 Colin Watson + + Exit as soon as possible if database writes return ENOSPC (Debian + bug #167159). + + * src/check_mandirs.c (testmandirs, create_db, update_db, + purge_normal, purge_whatis, check_multi_key, purge_missing): + Return int rather than short, to make space for -errno. + * src/mandb.c (update_one_file, update_db_wrapper, mandb, + process_manpath): Likewise. + * src/check_mandirs.h (create_db, update_db, purge_missing): Update + prototypes. + + * src/check_mandirs.c (create_db): Return -errno for database open + errors other than EACCES and EROFS. + * src/mandb.c (mandb): Return early on errors from create_db and + update_db_wrapper. Propagate errors from xcopy as well as + returning early. + (process_manpath): Return early on errors from mandb. + (main): Exit FATAL on errors from process_manpath. + +Wed Dec 3 10:54:53 GMT 2008 Colin Watson + + * libdb/db_lookup.c (make_content): Cast time_t value to long before + trying to print as %ld. + + * libdb/db_ndbm.c (ndbm_flclose, ndbm_flopen): Rename dbf to db to + avoid shadowing a global variable. + * libdb/mydbm.h: Update prototypes and gdbm/ndbm macros likewise. + +Wed Dec 3 10:45:07 GMT 2008 Colin Watson + + * lib/Makefile.am (libman_a_CPPFLAGS), libdb/Makefile.am + (libmandb_a_CPPFLAGS), src/Makefile.am (AM_CPPFLAGS): Add + -I$(top_builddir)/intl. + +Wed Dec 3 10:38:33 GMT 2008 Colin Watson + + * gnulib: Import the gettext module. The practical effect of this is + to get the intl directory included while compiling files in + gnulib/lib. + * autogen.sh: Prefer gnulib's version of tools/config.rpath over + gettext's. + +Wed Dec 3 10:17:50 GMT 2008 Colin Watson + + * m4/man-po4a.m4 (MAN_PO4A): Define a PO4A Automake conditional + (again). + * man/po4a/Makefile.am: Define all-local, update-po, and clean-local + rules only if PO4A is set, so that (in particular) distclean works + if po4a isn't installed. + +Tue Dec 2 16:25:53 GMT 2008 Arif E. Nugroho + + * man/po4a/po/id.po: Update from Translation Project (trivial). + +Tue Dec 2 14:50:12 GMT 2008 Colin Watson + + * man/po4a/po/id.po: New from Translation Project (thanks, Arif E. + Nugroho). + * configure.ac (AC_CONFIG_FILES): Add man/id/Makefile. + * man/Makefile.am (DIST_SUBDIRS): Add id. + * man/id/Makefile.am: New file. + * man/po4a/Makefile.am (POFILES): Add po/id.po. + * man/po4a/po4a.cfg (po4a_langs): Add id. + * man/THANKS: Credit Arif E. Nugroho with man/id as well as id.po. + * .bzrignore: Add man/id/man1, man/id/man5, and man/id/man8. + +Mon Nov 17 19:26:50 GMT 2008 Colin Watson + + * configure.ac: Now that we use the ISO 8601 date format rather than + language-specific date variants, there's no reason to call out to + date (using options specific to GNU date) to format the date + string, so just hardcode it. + * docs/HACKING (Release process): datemark -> date. + +Mon Nov 17 17:55:35 GMT 2008 Colin Watson + + FreeBSD build fixes. + + * man/Rules.man (replace.sed): Spell out + $(top_builddir)/man/replace.sin in full since $< is unspecified in + target rules. + * src/Makefile.am (accessdb_LDADD, catman_LDADD, globbing_LDADD, + lexgrog_LDADD, man_LDADD, manconv_LDADD, mandb_LDADD, + manpath_LDADD, whatis_LDADD, wrapper_LDADD, zsoelim_LDADD): Add + @LIBINTL@. + (apropos$(EXEEXT)): Remove target before creating symlink. Spell + out whatis$(EXEEXT) in full since $< is unspecified in target + rules. + + * src/check_mandirs.c (testmandirs): Cast time_t values to long + before trying to print as %ld. + * src/descriptions.c (parse_descriptions): Rename base_name to base + and seen_base_name to seen_base. + * src/descriptions_store.c (store_descriptions): Rename base_name to + base. + * src/descriptions.h (parse_descriptions, store_descriptions): + Update prototypes. + +Mon Nov 17 11:44:17 GMT 2008 Colin Watson + + * Version: 2.5.3. + * po/man-db.pot, po/*.po: Update. + +Mon Nov 17 11:07:50 GMT 2008 Colin Watson + + * lib/pipeline.c (command_new_function): Initialise discard_err. + (pipeline_start): Zero-initialise pids and statuses arrays on + allocation, and don't unblock SIGCHLD until after doing so. + * src/manconv.c (manconv): Don't free elements of from here, as when + called from manconv_stdin they will be freed by + free_manconv_codes. + * src/manconv_main.c (main): Free elements of from_code here + instead. + +Mon Nov 17 10:45:55 GMT 2008 Colin Watson + + * libdb/db_storage.h (infoalloc): Implement as a macro rather than + as an inline function; seems to cause fewer problems when building + without optimisation. + +Mon Nov 17 10:18:10 GMT 2008 Colin Watson + + * m4/longdouble.m4: Remove; gettext no longer installs this. + * man/Makefile.am (EXTRA_DIST): Distribute LINGUAS and LINGUAS.po4a. + +Mon Nov 17 09:59:19 GMT 2008 Colin Watson + + * release.sh: Use 'make distcheck' rather than 'make dist'. + +Mon Nov 17 01:13:17 GMT 2008 Colin Watson + + * po/POTFILES.in: Add src/manconv_main.c and src/zsoelim_main.c. + * po/man-db.pot, po/*.po: Update. + +Mon Nov 17 00:53:33 GMT 2008 Colin Watson + + * docs/NEWS: Update. + +Mon Nov 17 00:39:14 GMT 2008 Colin Watson + + * lib/pipeline.c (pipeline_wait): Mangle return value into a value + suitable for passing to exit (Debian bug #477305). + +Mon Nov 17 00:06:28 GMT 2008 Colin Watson + + Make bare .so includes (e.g. ".so foo.1" rather than ".so + man1/foo.1") work, although only within the same manual page + hierarchy for now. Reported by Mike Frysinger; partially fixes + Debian bug #503472. + + * src/zsoelim.l (zsoelim_open_file): Attempt to handle bare .so + includes using look_for_file. + * src/Makefile.am (zsoelim_SOURCES): Add globbing.c, globbing.h, and + util.c. + +Sun Nov 16 23:34:02 GMT 2008 Colin Watson + + Improve handling of systems without internationalisation support. + Reported by Mike Frysinger. + + * include/manconfig.h.in (locale_changed): New macro. + * src/man.c (main), src/whatis.c (main): Use it. + * src/manconv.c (check_preprocessor_encoding, try_iconv): Declare + only if HAVE_ICONV is defined. + (manconv): If HAVE_ICONV is not defined, supply a replacement that + just passes data straight through. + * src/whatis.c (simple_convert): Declare only if HAVE_ICONV is + defined and supply a macro replacement otherwise, since in the + latter case iconv_t is not defined. + +Sun Nov 16 18:40:09 GMT 2008 Colin Watson + + * manual/misc.me (Credits): Update with contributors of + non-translation patches since I started maintaining man-db; + mention man/THANKS for translator credits. Probably still missing + some people, as ever ... + +Sun Nov 16 18:16:55 GMT 2008 Chusslove Illich + + * src/encodings.c (directory_table): Add Serbian Latin -> + ISO-8859-2. + * src/lexgrog.l (sr_name): Add another possible translation. + (srlatin_name): Add. + +Sun Nov 16 18:00:23 GMT 2008 Colin Watson + + * src/man.c (main), src/whatis.c (main): Tokenise LANGUAGE properly + rather than only taking the first two characters of each entry. + Based on a suggestion from Chusslove Illich in Savannah patch + #6658. + +Sun Nov 16 17:57:57 GMT 2008 Chusslove Illich + + * src/manp.c (add_nls_manpath): Check that modifiers match if set + (Savannah patch #6658). + +Wed Nov 12 12:32:17 GMT 2008 Arif E. Nugroho + + * po/id.po: New from Translation Project. + * po/LINGUAS: Add id. + * man/THANKS: Add translator credit. + +Sun Nov 9 16:23:12 GMT 2008 Robert Luberda + + * man/po4a/po/pl.po: Update from Translation Project. + +Sun Oct 26 12:44:42 GMT 2008 Colin Watson + + * src/manp.c (create_pathlist): Eliminate duplicates due to + symlinks. Reported by Mike Frysinger. + * src/man.c (main): Emit "manpath search path" debugging message + before calling create_pathlist. + * docs/NEWS: Document this. + +Sun Oct 26 11:58:37 GMT 2008 Colin Watson + + Support LINGUAS environment variable to control installation of + localised manual pages. Reported by Mike Frysinger. + + * m4/man-po4a.m4, m4/man-linguas.m4: New files. + * configure.ac: Call MAN_PO4A instead of inline code. Remove NLS and + PO4A Automake conditionals, no longer needed. Call MAN_LINGUAS. + * man/LINGUAS, man/LINGUAS.po4a: New files. + * man/Makefile.am (SUBDIRS): Set to $(MAN_SUBDIRS) rather than + computing the list here. + (DIST_SUBDIRS): Add, since we no longer use Automake conditionals. + * docs/NEWS: Document this. + +Sun Oct 26 01:53:36 GMT 2008 Colin Watson + + * configure.ac: Check for lzma. + * include/comp_src.h.in (comp_list): Add lzma. + * include/manconfig.h.in: Define UNLZMA. + * docs/NEWS: Document this. + +Wed Oct 1 12:19:29 BST 2008 Colin Watson + + * docs/TODO: Remove entry about Berkeley DB's error handling, fixed + in Berkeley DB 4.1 (see http://bugs.debian.org/180379). + +Tue Sep 30 16:39:19 BST 2008 Colin Watson + + * src/encodings.c (directory_table): Add Norwegian BokmÃ¥l and + Norwegian Nynorsk (following a comment on + http://www.linuxfromscratch.org/lfs/view/development/chapter06/man-db.html). + +Sun Sep 28 11:35:18 BST 2008 Colin Watson + + * manual/files.me (NLS manual pages): Describe automatic detection + of manual pages encoded in UTF-8. Recommend that character set + components not be used in directory names. + +Sun Sep 28 11:30:40 BST 2008 Colin Watson + + * configure.ac: Check for GDBM before Berkeley DB. + * docs/man-db.lsm: List GDBM before Berkeley DB. + * manual/db.me (Database types): Explain why GDBM is preferred. + * manual/intro.me (Arguments to configure), README (Non-generic + arguments to configure): Update --with-db description. + * docs/NEWS: Document this, with a note to distributors on upgrade + handling. + +Thu Sep 18 02:00:54 BST 2008 Colin Watson + + * man/man1/apropos.man1 (AUTHOR), man/man1/manpath.man1 (AUTHOR), + man/man1/whatis.man1 (AUTHOR), man/man8/catman.man8 (AUTHOR): Add + my name. + +Thu Sep 18 01:42:34 BST 2008 Colin Watson + + Call zsoelim as an internal function rather than as an external + process, to improve performance. + + * src/Makefile.am (man_SOURCES): Add zsoelim.h and zsoelim.l. + (zsoelim_SOURCES): Add zsoelim.h and zsoelim_main.c. + * src/man.c (make_roff_command): Call zsoelim_stdin as an internal + function. + * src/zsoelim.l (open_file): Rename to ... + (zsoelim_open_file): ... this. Make external. Update all callers. + (parse_file): Rename to ... + (zsoelim_parse_file): ... this. Make external. Update all callers. + (zsoelim_stdin): New function. + (parse_opt, main): Move to ... + * src/zsoelim_main.c: ... here. New file. + * src/zsoelim.h: New file. + * docs/NEWS: Document this. + + * man/man1/zsoelim.man1 (AUTHOR): Add my name. + +Mon Sep 8 09:21:34 BST 2008 Colin Watson + + Call manconv as an internal function rather than as an external + process, to improve performance. Indirectly suggested by Dr. Werner + Fink in Savannah bug #24043. + + * src/Makefile.am (whatis_LDADD): Add $(LIBCOMPRESS). + (lexgrog_SOURCES, man_SOURCES, mandb_SOURCES, whatis_SOURCES): Add + manconv.c and manconv.h. + (manconv_SOURCES): Add manconv.h and manconv_main.c. + * src/encodings.c (manconv_stdin, free_manconv_codes): New + functions. + (add_manconv): Call manconv as an internal function. + * src/manconv.c (try_iconv): Take the target code as an argument + rather than using a global variable. + (manconv): New function, split out of main. + (split_codes, parse_opt, main): Move to ... + * src/manconv_main.c: ... here. New file. + * src/manconv.h: New file. + * docs/NEWS: Document this. + +Mon Sep 8 09:09:06 BST 2008 Colin Watson + + Add support for freeing command_function data. + + * lib/pipeline.c (command_new_function): Add free_func argument. + (command_dup): Copy it. + (pipeline_connect): Adjust command_new_function call. + (pipeline_start): Free command_function data before exiting. + (pipeline_wait): Free command_function data while cleaning up + pipeline. + * lib/pipeline.h: Add command_function_free_type typedef. + (struct command [struct command_function]): Add free_func member. + (command_new_function): Update prototype. + * lib/decompress.c (decompress_open, decompress_fdopen): Adjust + command_new_function calls. + +Sun Sep 7 15:26:25 BST 2008 Colin Watson + + * src/manconv.c (try_iconv): Remove premature optimisation that + sometimes caused us to write incomplete output. + + * src/encodings.c (add_manconv): Always use manconv even if iconv + could theoretically do the job, as manconv has slightly more + permissive behaviour that is generally more suitable for + converting manual page source (Debian bug #498082). + +Sun Aug 31 18:38:34 BST 2008 Colin Watson + + * docs/NEWS: Update. + +Sun Aug 31 18:17:14 BST 2008 Colin Watson + + * gnulib: Upgrade to 20080801. + +Sun Aug 17 16:42:43 BST 2008 Colin Watson + + * src/accessdb.c (main), src/catman.c (main), src/globbing_test.c + (main), src/lexgrog_test.c (main), src/man.c (main), src/manconv.c + (main), src/mandb.c (main), src/manpath.c (main), src/whatis.c + (main), src/zsoelim.l (main): Suppress locale warning if being + called by another man-db program (Debian bug #494989). + +Sun Aug 17 00:27:07 BST 2008 Colin Watson + + * src/man.c (tmp_cat_fd, man_modtime, discard_stderr): Move + definitions outside MAN_CATS guard; these are needed by catman + handling and (in the case of discard_stderr) manual page + formatting functions as well as cat handling in man itself + (Savannah bug #24044). + +Thu Aug 7 02:12:09 BST 2008 Colin Watson + + * src/man.c (display): If we fail to decompress man_file and it + matters (i.e. we aren't just displaying a stray cat), then emit an + error message and return early (Coverity CID #5, #6). + +Wed Aug 6 22:36:48 BST 2008 Colin Watson + + * libdb/db_lookup.c (infoalloc): Move to ... + * libdb/db_storage.h (infoalloc): ... here (as inline function). + Include "xalloc.h" for this. + (dblookup_all, dblookup_exact, gripe_lock, gripe_corrupt_data): + Stop declaring inline. + * src/security.h (drop_effective_privs, regain_effective_privs): + Stop declaring inline. + +Wed Aug 6 22:23:41 BST 2008 Colin Watson + + * src/man.c (display): If display_to_stdout is set, assert that + man_file is non-NULL; all the stray-cat code paths ensure that + neither troff nor recode is set by this point (Coverity CID #5). + +Wed Aug 6 21:40:37 BST 2008 Colin Watson + + * src/man.c (manopt_to_env): Duplicate options assigned to elements + of argv, and free the copy of manopt before returning. This isn't + really a bug as such, but it appeases Coverity CID #22. + +Thu Jul 31 02:10:06 BST 2008 Colin Watson + + * src/man.c (get_section_list): Fix leak of get_sections return + value if the configuration file contains no SECTIONS directives + (Coverity CID #21). + +Thu Jul 31 02:03:46 BST 2008 Colin Watson + + * src/man.c (try_section): Free info and info_buffer if there is a + failure before adding a candidate (Coverity CID #24). + +Thu Jul 31 01:41:17 BST 2008 Colin Watson + + * src/manp.c (add_nls_manpath): Copy manpathlist to omanpathlist + after the initial locale checks, to avoid memory leaks (Coverity + CID #20). + (get_manpath): Free return value of add_system_manpath (Coverity + CID #18) and guess_manpath (Coverity CID #19) when they're simply + interpolated into another string. + +Thu Jul 31 01:18:59 BST 2008 Colin Watson + + * src/man.c (display): Check for failure to open the preformatted + cat file (Coverity CID #14). + +Thu Jul 31 01:01:13 BST 2008 Colin Watson + + * src/util.c (lang_dir): Free ld if returning xstrdup ("C") instead + (Coverity CID #17). + +Thu Jul 31 00:55:36 BST 2008 Colin Watson + + * lib/pathsearch.c (pathsearch): Free path if returning early due to + being given a qualified name (Coverity CID #16). + +Thu Jul 31 00:51:58 BST 2008 Colin Watson + + * lib/pipeline.c (pipeline_pump): Free known_source before returning + (Coverity CID #15). + +Thu Jul 31 00:47:43 BST 2008 Colin Watson + + * src/whatis.c (word_fnmatch): Free lowwhatis on return paths + (Coverity CID #25). + +Thu Jul 31 00:40:29 BST 2008 Colin Watson + + * src/catman.c (parse_for_sec): Fix initialisation of initial_bit + (Coverity CID #28). + +Tue Jul 15 15:58:24 BST 2008 Clytie Siddall + + * po/vi.po: Update from Translation Project. + +Sat Jul 12 16:47:11 BST 2008 Colin Watson + + * Version: 2.5.3-pre1. + * po/man-db.pot, po/*.po: Update. + +Sat Jul 12 16:43:07 BST 2008 Colin Watson + + * docs/NEWS: Start 2.5.3. + +Sat Jul 5 11:33:16 BST 2008 Colin Watson + + * gnulib: Upgrade to 20080701. + +Mon Jun 9 13:47:50 BST 2008 Colin Watson + + * gnulib: Upgrade to 20080601. + +Mon Jun 9 09:31:04 BST 2008 Yuri Kozlov + + * man/po4a/po/ru.po: Update. + +Tue Jun 3 09:54:17 BST 2008 Colin Watson + + * man/po4a/po/ru.po: Update with msgmerge. + +Tue Jun 3 09:53:59 BST 2008 Colin Watson + + * man/ru/translator.add: Add dummy file. + +Tue Jun 3 00:07:47 BST 2008 Colin Watson + + * man/po4a/po/ru.po: New from Translation Project (thanks, Yuri + Kozlov). + * configure.ac (AC_CONFIG_FILES): Add man/ru/Makefile. + * man/Makefile.am (MAYBE_PO4A_LINGUAS): Add ru. + * man/ru/Makefile.am: New file. + * man/po4a/Makefile.am (POFILES): Add po/ru.po. + * man/po4a/po4a.cfg (po4a_langs): Add ru. + * man/THANKS: Credit Yuri Kozlov with man/ru as well as ru.po. + * .bzrignore: Add man/ru/man1, man/ru/man5, and man/ru/man8. + +Sun Jun 1 16:40:12 BST 2008 Colin Watson + + * man/man8/mandb.man8 (SYNOPSIS): Document -t (thanks, Yuri Kozlov; + Debian bug #483951). + +Sun Jun 1 04:01:12 BST 2008 Colin Watson + + * man/man1/whatis.man1 (SYNOPSIS): Document -v (thanks, Yuri Kozlov; + Debian bug #483862). + +Fri May 30 00:11:15 BST 2008 Colin Watson + + * man/man1/manconv.man1 (SYNOPSIS), man/man1/manpath.man1 + (SYNOPSIS): Document -h and -V here as well as in OPTIONS (thanks, + Yuri Kozlov; Debian bug #483589). + +Sun May 25 18:51:47 BST 2008 Colin Watson + + * man/man1/man.man1 (SYNOPSIS): Fix minor formatting error in -w|-W + synopsis. + +Sun May 25 18:46:55 BST 2008 Colin Watson + + * man/man1/man.man1 (SYNOPSIS): Restructure to include all options + from the OPTIONS section and to use approximately the same order. + Thanks to Yuri Kozlov; Debian bugs #482424, #482791, #482792, and + #482810. + +Sun May 25 18:29:28 BST 2008 Colin Watson + + * man/man1/lexgrog.man1 (SYNOPSIS): Correct -s to -E. + (OPTIONS): Correct -e to -E. + Thanks to Yuri Kozlov; Debian bug #481226. + +Sun May 25 19:23:00 CEST 2008 Yuri Kozlov + + * man/man1/apropos.man1 (SYNOPSIS): Document -v (Debian bug + #480678). + +Mon May 5 09:53:19 BST 2008 Colin Watson + + * lib/cleanup.c: #include for memset. + +Mon May 5 02:34:52 BST 2008 Colin Watson + + * docs/man-db.lsm: Update to 2.5.2. + * docs/HACKING: Note requirement for docs/man-db.lsm update just + before release. + +Mon May 5 02:11:38 BST 2008 Colin Watson + + * Version: 2.5.2. + * po/man-db.pot, po/*.po: Update. + +Mon May 5 02:07:00 BST 2008 Colin Watson + + * docs/NEWS: Document previous commit. + +Mon May 5 01:39:22 BST 2008 Colin Watson + + Fix jless support to avoid breaking less (Debian bug #217519). + + * src/encodings.c (less_charset_table): Add jless_charset members. + Move EUC-JP less_charset to jless_charset, falling back to iso8859 + for less. Use the more explicit japanese-ujis rather than ja. + * src/encodings.c (get_jless_charset): New function. + * src/encodings.h (get_jless_charset): Add prototype. + * src/man.c (make_roff_command): Set JLESSCHARSET to the return + value of get_jless_charset if non-NULL. + +Mon May 5 01:06:56 BST 2008 Colin Watson + + Clean up some loose ends of Chinese support (thanks, Wu Songhai; + Debian bug #354321). + + * src/encodings.c (directory_table): Add zh_SG, defaulting to the + GBK encoding. + (charset_alias_table): Map EUCTW to EUC-TW. + (charset_table): Add EUC-TW, defaulting to the nippon driver. + (compatible_encodings): Recognise EUC-TW encoding. + +Mon May 5 00:05:19 BST 2008 Colin Watson + + * gnulib: Upgrade to 20080501. + +Sun May 4 23:16:59 BST 2008 Colin Watson + + * lib/cleanup.c (sighandler, trap_signal), lib/pipeline.c + (pipeline_start, pipeline_pump): Zero sigaction structures before + using them. (I believe we set all required fields anyway; this is + just an extra safety catch.) + +Mon Apr 28 09:54:48 BST 2008 Clytie Siddall + + * po/vi.po: Update from Translation Project. + +Mon Apr 28 09:38:53 BST 2008 Benno Schulenberg + + * po/nl.po: Update from Translation Project. + +Sun Apr 27 22:41:54 BST 2008 Robert Luberda + + * man/po4a/po/pl.po: Update from Translation Project. + +Sun Apr 27 11:47:19 BST 2008 Colin Watson + + * po/man-db.pot, po/*.po: Update (sync with 2.5.2-pre2 tarball). + +Sun Apr 27 11:27:46 BST 2008 Colin Watson + + * Version: 2.5.2-pre2. + * po/man-db.pot, po/*.po: Update. + +Sun Apr 27 11:24:24 BST 2008 Colin Watson + + * lib/pipeline.c (pipeline_sigchld): assert is not + async-signal-safe, so avoid calling it in a signal handler and use + an if guard instead (Ubuntu bug #221635, although exactly why the + assertion is failing there is unclear). + +Sun Apr 27 01:40:32 BST 2008 Colin Watson + + * gnulib: Upgrade to 20080401. + +Sun Apr 27 01:32:58 BST 2008 Colin Watson + + * src/lexgrog.l (ko_name): Add another possible translation, seen in + hdparm(1). + +Sun Apr 27 01:31:47 BST 2008 Colin Watson + + * src/manconv.c (try_iconv): Don't handle //IGNORE unless this is + the last encoding to be tried. + * src/encodings.c (add_manconv): Append //IGNORE to the target + encoding. + * docs/NEWS: Document this. + +Sun Apr 27 00:54:05 BST 2008 Colin Watson + + Don't emit encoding conversion errors in mandb's quiet mode (Debian + bug #473862). + + * src/manconv.c (options, parse_opt): Accept -q/--quiet. + (try_iconv): Suppress iconv errors under --quiet. + * man/man1/manconv.man1 (SYNOPSIS, OPTIONS): Document --quiet. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/pl.po: Update. + * po/man-db.pot, po/*.po: Update. + + * src/encoding.c (add_manconv): Pass -q to manconv if this is mandb + in quiet mode. + +Sat Apr 26 14:34:26 BST 2008 Colin Watson + + * man/man1/man.man1 (DESCRIPTION): Bring list of conventional + section names more into sync with man-pages(7). + * man/po4a/po/man-db-manpages.pot, man/po4a/po/pl.po: Update. + +Sat Apr 26 13:51:27 BST 2008 Colin Watson + + * man/de/man1/apropos.man1, man/de/man1/man.man1, + man/de/man1/manpath.man1, man/de/man1/whatis.man1, + man/de/man1/zsoelim.man1, man/de/man5/manpath.man5, + man/de/man8/catman.man8, man/es/man1/man.man1, + man/fr/man1/man.man1, man/it/man8/accessdb.man8: Fix various small + mistakes that caused warnings from groff. + +Sun Mar 30 20:39:34 BST 2008 Benno Schulenberg + + * po/nl.po: Update from Translation Project. + +Mon Mar 17 19:29:43 GMT 2008 Clytie Siddall + + * po/vi.po: Update from Translation Project. + +Fri Mar 14 14:24:58 GMT 2008 Colin Watson + + Persuade 'make distcheck' to pass again. + + * man/po4a/po4a.cfg: Use paths relative to $(srcdir) and + $(builddir). + * man/po4a/Makefile.am (PO4A_ARGS): Define srcdir and builddir + variables. + (all-local, update-po, clean-local): Pass $(PO4A_ARGS) to $(PO4A). + Read po4a.cfg from $(srcdir). + * man/po4a/*.pl.add: Consolidate into ... + * man/pl/translator.add: ... this. + * man/Rules.man (dist-hook): Only do anything if PO4A_LINGUA is not + set to yes. + (distclean-hook): Remove man1, man5, and man8 if PO4A_LINGUA is + set to yes. + * man/pl/Makefile.am (PO4A_LINGUA): Set to yes. + (EXTRA_DIST): Distribute translator.add. + * .bzrignore: Ignore man/pl/man1, man/pl/man5, and man/pl/man8, + rather than just some files within those directories. + +Fri Mar 14 01:06:42 GMT 2008 Colin Watson + + * man/man1/man.man1 (Controlling formatted output): Change + 'soft-hyphen' string to 'softhyphen' to work around Debian bug + #470849. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/pl.po: Update. + +Fri Mar 14 00:57:37 GMT 2008 Colin Watson + + Build Polish manual pages. The method used scales rather poorly and + will probably need to be revisited at some point. + + * configure.ac (AC_CONFIG_FILES): Add man/pl/Makefile. + * man/Makefile.am (MAYBE_PO4A_LINGUAS): New, containing pl. + (SUBDIRS): Add $(MAYBE_PO4A_LINGUAS) if po4a is present. + * man/pl/Makefile.am: New file. + * man/po4a/Makefile.am (POFILES): New, containing po/pl.po. + (EXTRA_DIST): Add $(POFILES). + (all-local, clean-local): New rules to generate and remove + translated documents. + (update-po): Add --no-translations option. + * man/po4a/po4a.cfg (po4a_langs): Replace zh_CN with pl. (zh_CN can + come back once it has a translation.) + * man/THANKS: Credit Robert Luberda with man/pl as well as pl.po. + + * .bzrignore: Add man/pl/man1/*.man1, man/pl/man5/*.man5, and + man/pl/man8/*.man8. + * man/po4a/po/man-db-manpages.pot: Update. + +Fri Mar 14 00:55:15 GMT 2008 Robert Luberda + + * man/po4a/po/pl.po: New from Translation Project. + * man/po4a/accessdb.pl.add, man/po4a/apropos.pl.add, + man/po4a/catman.pl.add, man/po4a/lexgrog.pl.add, + man/po4a/man.pl.add, man/po4a/manconv.pl.add, + man/po4a/mandb.pl.add, man/po4a/manpath.pl.add, + man/po4a/whatis.pl.add, man/po4a/zsoelim.pl.add: New files. + +Thu Mar 13 09:56:53 GMT 2008 Robert Luberda + + * po/pl.po: Update from Translation Project. + +Wed Mar 12 18:29:32 GMT 2008 Yuri Kozlov + + * po/ru.po: Update from Translation Project. + +Wed Mar 12 13:52:02 GMT 2008 Benno Schulenberg + + * po/nl.po: Update from Translation Project. + +Wed Mar 12 12:30:09 GMT 2008 Colin Watson + + * src/man.c (parse_opt): Only set html_pager if arg is non-NULL. + * docs/NEWS: Document this. + +Wed Mar 12 12:20:50 GMT 2008 Colin Watson + + * configure.ac: Check for po4a. Define an Automake conditional based + on whether it is present. + * man/Makefile.am (SUBDIRS): Add the po4a subdirectory only if the + po4a program is present. + * man/po4a/Makefile.am (update-po): Use PO4A variable. + +Wed Mar 12 08:53:48 GMT 2008 Colin Watson + + * man/po4a/Makefile.am (update-po): New target. + +Wed Mar 12 08:53:32 GMT 2008 Robert Luberda + + * man/man1/apropos.man1 (OPTIONS, FILES), man/man1/man.man1 + (ENVIRONMENT, FILES), man/man1/manconv.man1 (OPTIONS), + man/man1/manpath.man1 (OPTIONS, FILES), man/man1/whatis.man1 + (OPTIONS, EXIT STATUS, FILES), man/man8/mandb.man8 (OPTIONS): + Consolidate various nearly-identical strings. + * man/po4a/po/man-db-manpages.pot: Update. + +Tue Mar 11 10:41:05 GMT 2008 Colin Watson + + * Version: 2.5.2-pre1 (really this time). + +Tue Mar 11 10:39:45 GMT 2008 Colin Watson + + * configure.ac (AC_CONFIG_FILES): Add man/po4a/Makefile. + * man/Makefile.am (SUBDIRS): Add po4a. + * man/po4a/Makefile.am: New file. Distribute po4a.cfg and + po/man-db-manpages.pot. + +Tue Mar 11 10:26:49 GMT 2008 Colin Watson + + * Version: 2.5.2-pre1. + * po/man-db.pot, po/*.po: Update. + +Mon Mar 10 19:42:19 GMT 2008 Colin Watson + + * man/man1/man.man1 (Controlling formatted output): Quote %pager, + since it may expand to multiple words. + +Mon Mar 10 16:07:11 GMT 2008 Colin Watson + + * docs/NEWS: More updates for 2.5.2. + +Mon Mar 10 16:00:15 GMT 2008 Colin Watson + + * man/po4a/po/man-db.pot: Rename to ... + * man/po4a/po/man-db-manpages.pot: ... this, so that the translation + domain name stops clashing with that used for program translations + (per Benno Schulenberg). + * man/po4a/po4a.cfg (po4a_paths): Adjust for rename. + +Mon Mar 10 01:05:57 GMT 2008 Colin Watson + + * man/Rules.man (.man1.1, .man8.8): Substitute name of manual page + being processed as %program%. + * man/man1/apropos.man1 (OPTIONS), man/man1/man.man1 (Finding manual + pages), man/man1/whatis.man1 (OPTIONS): Consolidate + nearly-identical descriptions of --locale using %program% (thanks, + Robert Luberda). + * man/po4a/po/man-db.pot: Update. + +Tue Mar 4 09:24:40 GMT 2008 Colin Watson + + * gnulib: Upgrade to 20080301. + +Tue Mar 4 09:18:43 GMT 2008 Colin Watson + + * src/man.c (options): Force --extension to appear after --sections + in --help output. + +Mon Mar 3 21:46:36 GMT 2008 Colin Watson + + * man/po4a/po/man-db.pot: Update. + +Sun Mar 2 12:41:13 GMT 2008 Colin Watson + + * po/man-db.pot, po/*.po: Update. + +Sun Mar 2 12:37:43 GMT 2008 Colin Watson + + * src/man.c (options): Describe --recode's argument as ENCODING, not + CODE (thanks, Benno Schulenberg). + +Sun Mar 2 12:35:28 GMT 2008 Colin Watson + + * src/man.c (options), src/manpath.c (options), src/whatis.c + (options): Use a unified description for --systems (thanks, Benno + Schulenberg). + +Sun Mar 2 12:29:57 GMT 2008 Colin Watson + + * src/manconv.c (args_doc, options): Describe argument to -f as + "CODE[:...]" rather than "CODE:..." (thanks, Benno Schulenberg). + +Sun Mar 2 12:28:40 GMT 2008 Colin Watson + + * man/man1/man.man1 (OPTIONS): Reorganise into subsections, with + options listed in the same order as in 'man --help' output. + * src/man.c (options, parse_opt): Rearrange a few options slightly + so that the ordering makes more sense. + +Sun Mar 2 11:56:48 GMT 2008 Colin Watson + + * man/man1/man.man1, src/encodings.c, src/encodings.h, + src/lexgrog_test.c: Update copyright notices. + +Sun Mar 2 11:03:21 GMT 2008 Colin Watson + + Improve 'man -E' to allow overriding the output encoding explicitly, + rather than implicitly (and unreliably) by changing the *roff device + (Debian bug #466396). + + * src/encodings.c (device_table): Add stub entries for troff + devices. + (is_roff_device): New function. + * src/encodings.h (is_roff_device): Add prototype. + * src/man.c (options): Change description of -E to allow general + encoding selection. + (parse_opt): Only assign the argument of -E to roff_device if it + is actually a *roff device; otherwise it is presumed to be a true + character encoding and stored in want_encoding. Remove + different_encoding, since testing whether want_encoding is set + supersedes that. + (make_roff_command): If want_encoding is set and is not a *roff + device, recode to it rather than to the locale's encoding. + (display, try_section, display_filesystem, display_database): Test + want_encoding rather than different_encoding. + * man/man1/man.man1 (OPTIONS): Adjust documentation of -E. + * docs/NEWS: Document this. + + * src/lexgrog_test.c (options): Bring description of -E into sync + with man. + +Sat Mar 1 22:14:43 GMT 2008 Colin Watson + + * src/encodings.c (get_roff_encoding): In the CJK UTF-8 special + case, check the canonicalised encoding in order that locale + specifications such as "zh_CN.utf8" work (Debian bug #467249). + +Fri Feb 29 09:59:23 GMT 2008 Colin Watson + + * autogen.sh: Run autoreconf with -f. + * tools/config.guess, tools/config.sub, tools/depcomp, + tools/install-sh, tools/ylwrap: Update. + +Thu Feb 28 10:47:22 GMT 2008 Colin Watson + + * src/lexgrog.l: Terminate MAN_NAME at .ie or .if conditionals + (Debian bug #467444). + +Sun Feb 17 17:17:16 GMT 2008 Colin Watson + + * src/manp.c (def_path): Fix brace indentation. + +Sun Feb 17 17:13:55 GMT 2008 Colin Watson + + * gnulib: Import the strsignal module. + * lib/pipeline.c (pipeline_wait): Call strsignal rather than + xstrsignal. + * lib/xstrsignal.c: Remove. + * lib/README (xstrsignal): Remove. + * lib/Makefile.am (libman_a_SOURCES): Remove xstrsignal.c. + * include/manconfig.h.in (xstrsignal): Remove. + * m4/man-strsignal.m4: Remove. + * configure.ac (MAN_FUNC_STRSIGNAL): Remove. + +Sun Feb 17 16:59:22 GMT 2008 Colin Watson + + * Makefile.in, aclocal.m4, config.h.in, configure, docs/Makefile.in, + gnulib, lib/Makefile.in, libdb/Makefile.in, man/Makefile.in, + man/de/Makefile.in, man/es/Makefile.in, man/fr/Makefile.in, + man/it/Makefile.in, man/ja/Makefile.in, manual/Makefile.in, + src/Makefile.in, tools/Makefile.in: Upgrade to Automake 1.10.1 and + Gnulib 20080201. + +Mon Feb 4 08:28:33 GMT 2008 Colin Watson + + * src/man_db.conf.in: Make /usr/local/share/man mandatory rather + than /usr/local/man (thanks, Reuben Thomas; Debian bug #463892). + +Fri Feb 1 09:01:34 GMT 2008 Colin Watson + + * man/replace.sin.in: Strip off ".if !'po4a'hide' " from input + manual pages. It's a no-op except for po4a's purposes, and + removing it helps non-groff manual page renderers. + +Mon Jan 28 08:54:47 GMT 2008 Colin Watson + + * docs/man-db.lsm: Update to 2.5.1. + +Mon Jan 28 08:47:51 GMT 2008 Colin Watson + + * Version: 2.5.1. + * po/man-db.pot, po/*.po: Update. + +Sun Jan 27 22:48:32 GMT 2008 Colin Watson + + Support Korean when configured with support for the multibyte groff + patch (thanks, Hansun Lee; Ubuntu bug #176896). + + * src/encodings.c (compatible_encodings): Allow EUC-KR -> UTF-8. + (get_roff_encoding): Handle ko_KR.UTF-8 via devutf8. + +Sun Jan 27 13:42:31 GMT 2008 Colin Watson + + * lib/pipeline.c (pipeline_join): Initialise source, buffer, buflen, + bufmax, line_cache, and peek_offset. + +Sun Jan 27 13:37:17 GMT 2008 Colin Watson + + * lib/pipeline.h (struct pipeline): Add ignore_signals member. + * lib/pipeline.c (pipeline_new): Initialise ignore_signals to 1. + (pipeline_join): Set ignore_signals if either input pipeline has + it set. + (pipeline_start): Only ignore SIGINT and SIGQUIT if ignore_signals + is set. + (pipeline_wait): Only restore SIGINT and SIGQUIT if ignore_signals + is set. + * lib/decompress.c (decompress_open, decompress_fdopen): Set + ignore_signals to 0 so that SIGINT and SIGQUIT are not ignored + just because a decompression process is running (Debian bug + #462276). + * docs/NEWS: Document this. + +Thu Jan 24 17:12:24 GMT 2008 Colin Watson + + * include/manconfig.h.in (INTERRUPTED): Remove. + * src/man.c (int_handler): Remove; this is useless and + non-signal-safe. + (main): Don't set SIGINT to int_handler. + +Thu Jan 17 09:13:04 GMT 2008 Ming Hua + + * po/zh_CN.po: Update from Translation Project. + +Tue Jan 15 18:45:22 GMT 2008 Yuri Kozlov + + * po/ru.po: Update from Translation Project. + * man/THANKS: Update e-mail address. + +Tue Jan 15 14:37:15 GMT 2008 Colin Watson + + * m4/man-bdb.m4: Add WITH-DB option; make ACTION-IF-FOUND optional; + define BDB_H and BTREE. + * configure.ac: Make Berkeley DB checks more concise using the + above. + +Tue Jan 15 12:31:12 GMT 2008 Colin Watson + + * configure.ac: Remove unused AC_HEADER_STDC. + +Tue Jan 15 08:42:27 GMT 2008 Clytie Siddall + + * po/vi.po: Update from Translation Project. + +Tue Jan 15 08:39:56 GMT 2008 Benno Schulenberg + + * po/nl.po: Update from Translation Project. + +Tue Jan 15 00:01:39 GMT 2008 Colin Watson + + * m4/man-compress-lib.m4: New function, MAN_COMPRESS_LIB: like + AC_CHECK_LIB but adds the library to LIBCOMPRESS rather than LIBS. + * configure.ac: Use it for -lz. + * src/Makefile.am (lexgrog_LDADD, man_LDADD, manconv_LDADD, + mandb_LDADD, zsoelim_LDADD): Add $(LIBCOMPRESS). + +Mon Jan 14 15:29:55 GMT 2008 Colin Watson + + * configure.ac: Don't check for strerror; Gnulib supplies a + replacement now. + +Mon Jan 14 13:59:18 GMT 2008 Colin Watson + + * src/mandb.c (xcopy): Set the new file's mode to DBMODE in order to + try to defend against strange problems with databases being left + world-unreadable (Debian bug #430800). + +Mon Jan 14 00:55:22 GMT 2008 Colin Watson + + * man/po4a/po/man-db.pot: Update. + +Mon Jan 14 00:16:57 GMT 2008 Colin Watson + + * Version: 2.5.1-pre2. + * po/man-db.pot, po/*.po: Update. + +Mon Jan 14 00:00:21 GMT 2008 Colin Watson + + * src/lexgrog_test.c (parse_opt): Use argp_error rather than + error/argp_usage. Suggested by Ivan Shmakov. + * src/man.c (parse_opt): Likewise. + * src/manconv.c (parse_opt): Likewise. + +Sun Jan 13 23:35:27 GMT 2008 Ivan Shmakov + + Add a command-line option to man to enable groff warnings. + + * src/man.c (enum opts, struct string_llist): New types. + (default_roff_warnings, roff_warnings): Set defaults. + (options, parse_opt): Accept --warnings. + (make_roff_command): Add warnings to groff command line. + * man/man1/man.man1 (SYNOPSIS, OPTIONS): Document --warnings. + * docs/NEWS: Document this. + +Thu Jan 10 09:24:19 GMT 2008 Colin Watson + + * src/man.c (local_man_loop): Guess language based on absolute path + to provided file, rather than relative (Debian bug #460014). + +Mon Jan 7 17:28:54 GMT 2008 Colin Watson + + * gnulib/lib/xmalloc.patch: Add commentary. + +Mon Jan 7 15:30:56 GMT 2008 Yuri Kozlov + + * po/ru.po: Update from Translation Project. + +Mon Jan 7 11:38:19 GMT 2008 Colin Watson + + * man/replace.sin: Rename to ... + * man/replace.sin.in: ... this. + * configure.ac (AC_CONFIG_FILES): Generate man/replace.sin. + * man/Rules.man (CLEANFILES, replace.sed, .man1.1, .man5.5, + .man8.8): Generate replace.sed at 'make' time so that + $(config_file) is substituted properly. Reported by Peter + Breitenlohner. + * .bzrignore: Update. + +Mon Jan 7 11:14:04 GMT 2008 Peter Breitenlohner + + * manual/Makefile.am: Use soelim with -I$(srcdir). + + * man/Rules.man (mandir): Append the language so that Automake can + handle translated manual pages. + (install-data-local, uninstall-local): Removed in favor of rules + generated by Automake. + (CLEANFILES, dist-hook): Go back to using man*_MANS. + (all-am): Remove explicit dependencies. + * man/Makefile.am, man/de/Makefile.am, man/es/Makefile.am, + man/fr/Makefile.am, man/it/Makefile.am, man/ja/Makefile.am: Go + back to using man*_MANS. + + * man/man8/accessdb.man8, man/fr/man8/accessdb.man8: Fix typo (-V, + not -v). + + * manual/Makefile.am (.pp.ps): Use groff -Tps, not -Tdvi. + + * src/Makefile.am (install-data-hook): Don't (try to) overwrite + existing config files. + + * src/Makefile.am (bin_SCRIPTS, all-am, install-exec-hook, + uninstall-hook): Remove apropos from bin_SCRIPTS, explicitly + depend on it from all-am, and manually create a whatis->apropos + symlink at install time; installing the symlink from the build + directory using bin_SCRIPTS would install a second copy (not + stripped by "make install-strip"). + +Mon Jan 7 09:54:12 GMT 2008 Colin Watson + + * configure.ac: Stop checking for memory.h (not used) and limits.h + (guaranteed by C89). + * lib/hashtable.c, libdb/db_ver.c, src/convert_name.c, + src/descriptions.c, src/filenames.c: Remove unnecessary #include + . + * libdb/db_delete.c, libdb/db_lookup.c, libdb/db_store.c, + src/manpath.c: Remove unnecessary #include . + * libdb/mydbm.h, src/catman.c, src/man.c, src/manpath.c: Include + unconditionally. + * src/convert_name.c: Remove unnecessary #include . + * src/man.c: Remove unnecessary #include and + . + * src/manpath.c: Remove unnecessary #include . + * src/straycats.c: Remove unnecessary #include . + * src/ult_src.c: Remove S_ISLNK conditionals; Gnulib's + wrapper deals with this. + + * lib/linelength.c (get_line_length): Remove trailing newline from + message passed to perror. + +Mon Jan 7 03:21:49 GMT 2008 Colin Watson + + * lib/gettext.h: Remove; now provided by Gnulib. + * lib/Makefile.am (libman_a_SOURCES): Remove gettext.h. + * lib/README: Remove gettext.h. + +Mon Jan 7 03:11:08 GMT 2008 Colin Watson + + * include/comp_src.h.in: Update header comment. + +Mon Jan 7 02:52:25 GMT 2008 Colin Watson + + * src/util.c (mkdbname): Replace with ... + * include/manconfig.h.in (mkdbname): ... a simpler macro. + +Mon Jan 7 02:27:59 GMT 2008 Colin Watson + + * libdb/db_btree.c, libdb/db_storage.h, libdb/mydbm.h, src/catman.c, + src/check_mandirs.c, src/convert_name.c, src/globbing.c, + src/man.c, src/man.h, src/mandb.c, src/manp.c, src/security.c, + src/security.h, src/whatis.c: Replace __inline__ with inline + everywhere. Autoconf's handling of the latter is sufficient. + * include/manconfig.h.in: Remove __inline and __inline__ + definitions. + +Mon Jan 7 02:12:26 GMT 2008 Colin Watson + + * configure.ac: Automatically detect the Debian multibyte patch to + groff. + +Mon Jan 7 01:14:39 GMT 2008 Colin Watson + + * src/accessdb.c (options, parse_opt): Accept -d/--debug. + * src/lexgrog_test.c (options, parse_opt): Likewise. + * src/zsoelim.l (options, parse_opt): Likewise. + * docs/NEWS: Document this. + +Mon Jan 7 01:08:39 GMT 2008 Colin Watson + + * src/zsoelim.l (options): Fix incorrect description of -C. + +Sun Jan 6 15:01:08 GMT 2008 Colin Watson + + sigaction is specified as non-interruptible; there is no need to + wrap it with EINTR detection. + + * lib/xsigaction.c: Remove. + * include/manconfig.h.in (xsigaction): Remove prototype. + * lib/Makefile.am (libman_a_SOURCES): Remove xsigaction.c. + * lib/README: Remove xsigaction.c. + * lib/cleanup.c (sighandler, trap_signal, untrap_signal): Call + sigaction rather than xsigaction. + * lib/pipeline.c (pipeline_start, pipeline_wait, + pipeline_install_sigchld, pipeline_pump): Call sigaction rather + than xsigaction. + +Sun Jan 6 14:46:36 GMT 2008 Colin Watson + + * po/nl.po: Update with msgmerge. + +Sun Jan 6 14:45:09 GMT 2008 Colin Watson + + * man/Rules.man, man/de/Makefile.am, man/es/Makefile.am, + man/fr/Makefile.am, man/it/Makefile.am, man/ja/Makefile.am: Use + LINGUA rather than LANGUAGE to name the manual page language, as + setting LANGUAGE causes 'make' output to be translated. + +Sun Jan 6 14:34:15 GMT 2008 Colin Watson + + * man/de.UTF-8, man/es.UTF-8, man/fr.UTF-8, man/it.UTF-8, + man/ja.UTF-8: Rename to ... + * man/de, man/es, man/fr, man/it, man/ja: ... these. + * .bzrignore, configure.ac, man/de/Makefile.am, man/es/Makefile.am, + man/fr/Makefile.am, man/it/Makefile.am, man/ja/Makefile.am, + man/po4a/po4a.cfg, man/THANKS: Adjust for new directory names. + +Sun Jan 6 10:20:19 GMT 2008 Colin Watson + + * gnulib: Upgrade to Debian 20080104-1. Import the unsetenv module. + * src/man.c, src/whatis.c: No longer #include "setenv.h". + +Sun Jan 6 09:57:51 GMT 2008 Clytie Siddall + + * po/vi.po: Update from Translation Project. + +Sat Jan 5 23:15:23 GMT 2008 Ming Hua + + * po/zh_CN.po: Update from Translation Project (trivial). + +Sat Jan 5 23:06:14 GMT 2008 Colin Watson + + * configure.ac: Define NLS Automake conditional from USE_NLS. + * man/Makefile.am (SUBDIRS): Define only if NLS. + +Sat Jan 5 22:54:05 GMT 2008 Colin Watson + + * man/Makefile.am, man/de.UTF-8/Makefile.am, + man/es.UTF-8/Makefile.am, man/fr.UTF-8/Makefile.am, + man/it.UTF-8/Makefile.am, man/ja.UTF-8/Makefile.am: Declare + man*_files rather than man*_MANS. Using the MANS primary causes + Automake's incorrect manual page rules to be used. + * man/Rules.man (CLEANFILES, install-data-local, uninstall-local, + dist-hook): Expect man*_files rather than man*_MANS. + (all-am): Depend on $(man*_files). + + * man/Rules.man (install-data-local, uninstall-local): Stop + stripping leading "man*/" from install location. + +Sat Jan 5 21:49:40 GMT 2008 Colin Watson + + * m4/man-gcc-warning.m4: New file. + * configure.ac: Test whether each -W option (other than -Wall) that + we want to add is supported, rather than adding it + unconditionally. Reported by Peter Breitenlohner. + +Sat Jan 5 14:12:33 GMT 2008 Ivan Shmakov + + * configure.ac: Test for existence of + "$srcdir/gnulib/po/Makefile.in.in" rather than just + gnulib/po/Makefile.in.in in order to work for VPATH builds. Also + reported by Peter Breitenlohner. + +Fri Jan 4 16:03:57 GMT 2008 Peter Breitenlohner + + * src/man.c (display): Stop -W printing blank lines for manual pages + without corresponding cat pages. + +Fri Jan 4 15:59:41 GMT 2008 Colin Watson + + * src/Makefile.am: Install globbing and manconv in + $(libexecdir)/@PACKAGE@ rather than in $(pkglibdir). Reported by + Peter Breitenlohner. + +Fri Jan 4 12:44:34 GMT 2008 Peter Breitenlohner + + * libdb/db_btree.c (dbstore): Rename basename argument to base to + avoid clashing with the function of the same name. + * libdb/db_storage.h (dbstore): Update prototype. + * libdb/mydbm.h (dbver_wr, dbver_rd), src/security.h + (do_system_drop_privs): Update prototype argument names to match + definition. + +Fri Jan 4 11:52:22 GMT 2008 Peter Breitenlohner + + * src/man.c: Make prompt_string const. Avoids "discards qualifier" + warning when building without NLS. + +Thu Jan 3 21:39:27 GMT 2008 Colin Watson + + * gnulib: Import the lib-ignore module, to have the linker ignore + unused libraries. + +Wed Jan 2 23:30:33 GMT 2008 Colin Watson + + * lib/decompress.c (decompress_zlib), lib/linelength.c + (get_line_length), lib/pipeline.c (passthrough), src/lexgrog.l + (find_name), src/man.c (set_term, get_term, main, + make_roff_command, format_display_and_save, format_display, + display_catman, display), src/manconv.c (main), src/zsoelim.l + (open_file): Use STDIN_FILENO, STDOUT_FILENO, and STDERR_FILENO + macros rather than calling fileno. + +Wed Jan 2 16:46:46 GMT 2008 Colin Watson + + * src/accessdb.c (main), src/catman.c (main), src/globbing_test.c + (main), src/lexgrog_test.c (main), src/man.c (main), src/manconv.c + (main), src/mandb.c (main), src/manpath.c (main), src/whatis.c + (main), src/wrapper.c (main), src/zsoelim.l (main): Bind the + "man-db-gnulib" textual domain as well as "man-db". + +Wed Jan 2 00:12:48 GMT 2008 Benno Schulenberg + + * po/nl.po: New from Translation Project. + * po/LINGUAS: Add nl. + * man/THANKS: Add translator credit. + +Tue Jan 1 15:36:23 GMT 2008 Colin Watson + + * README, src/man.c: Update copyright years. + +Tue Jan 1 15:27:51 GMT 2008 Ming Hua + + * po/zh_CN.po: Update. + +Tue Jan 1 12:34:10 GMT 2008 Colin Watson + + * src/man.c (options): Add -s as an alias for -S (Debian bug + #458499). + (parse_opt): Accept it. + (get_section_list): Allow the section list to be separated by + commas as well as colons. + * man/man1/man.man1 (OPTIONS): Document -s and comma-separation. + * docs/NEWS: Document this. + +Mon Dec 31 22:13:00 GMT 2007 Colin Watson + + * docs/HACKING (Coding style): Expand. + +Mon Dec 31 22:01:35 GMT 2007 Colin Watson + + * include/manconfig.h.in: Remove obsolete definitions of VERSION and + DATE and declaration of ver. + * src/zsoelim.l: Remove obsolete definition of STATIC_VER. + +Mon Dec 31 17:00:19 GMT 2007 Colin Watson + + * lib/hashtable.c (hash_lookup_structure): New function; same as + previous hash_lookup but returns a struct nlist * rather than the + value. + (hash_lookup): Rewrite in terms of hash_lookup_structure. + (hash_install): Use hash_lookup_structure rather than hash_lookup + (thanks, Ivan Shmakov; should fix Debian bug #374708). + +Mon Dec 31 16:15:26 GMT 2007 Colin Watson + + * lib/hashtable.c (hash_install): Fix head comment to match reality + (thanks, Ivan Shmakov). + +Mon Dec 31 15:45:31 GMT 2007 Colin Watson + + * docs/HACKING (Revision control): Mention that the bzr archive now + requires bzr 0.15 or later. + +Mon Dec 31 15:31:08 GMT 2007 Colin Watson + + * Version: 2.5.1-pre1. + * po/man-db.pot, po/*.po: Update. + +Mon Dec 31 10:02:28 GMT 2007 Colin Watson + + * lib/pipeline.c (passthrough): New helper function. + (pipeline_connect): Add special (kludge) handling for zero-command + sinks. + (pipeline_pump): Add minor commentary. + * src/man.c (options, parse_opt): New -R/--recode option. + (make_roff_command): If --recode is used, suppress external + formatters and all processing filters, and force the output + encoding to the argument to --recode. + (display): If --recode is used, force display to stdout and + suppress cat pages. + (try_section, display_filesystem, display_database): Don't show + cat pages or follow .so links for --recode. + * src/util.c (lang_dir): Handle relative filenames starting with + "man/". + * man/man1/man.man1 (OPTIONS): Document --recode. + * docs/NEWS: Document this. + +Fri Dec 14 10:06:21 GMT 2007 Colin Watson + + * src/whatis.c (options): Note that --exact is for apropos only. + +Fri Dec 14 09:39:06 GMT 2007 Colin Watson + + Convert from getopt to argp for option parsing. This invalidates + many translations, but this should be the last time; in future, a + changes in a single option will only affect translations of the help + strings for that option, not the program's entire help string. + + * gnulib: Import the argp and lock modules. + * autogen.sh: Hack around a tools/config.rpath clash between Gnulib + and gettext. + * configure.ac (CFLAGS): Add -Wno-missing-field-initializers for + GCC. + * .bzrignore: Add gnulib/lib/strings.h, po/remove-potcdate.sed, and + tools/config.rpath.*. + + * src/version.c: Remove in favour of argp's --version handling. + * po/POTFILES.in: Remove src/version.c. + * src/Makefile.am (accessdb_SOURCES, catman_SOURCES, + globbing_SOURCES, lexgrog_SOURCES, man_SOURCES, manconv_SOURCES, + mandb_SOURCES, manpath_SOURCES, whatis_SOURCES, wrapper_SOURCES, + zsoelim_SOURCES): Remove version.c. + + * src/accessdb.c (long_options, args, usage): Remove. + (argp_program_version, argp_program_bug_address, + argp_err_exit_status, args_doc, doc, options, parse_opt, + help_filter, argp): Add. + (main): Switch from getopt_long to argp_parse. Use error (FATAL) + for database read errors rather than error (0); usage (FAIL). + * src/catman.c (long_options, args, usage): Remove. + (argp_program_version, argp_program_bug_address, + argp_err_exit_status, args_doc, options, parse_opt, argp): Add. + (catman, do_catman, parse_for_sec): Rename argp to args. + (main): Switch from getopt_long to argp_parse. + * src/globbing_test.c (long_options, args, usage): Remove. + (argp_program_version, argp_program_bug_address, + argp_err_exit_status, args_doc, options, parse_opt, argp): Add. + (main): Switch from getopt_long to argp_parse. + * src/lexgrog_test.c (long_options, args, usage): Remove. + (argp_program_version, argp_program_bug_address, + argp_err_exit_status, args_doc, doc, options, parse_opt, argp): + Add. + (main): Switch from getopt_long to argp_parse. + * src/man.c (long_options, args, usage, man_getopt): Remove. + (argp_program_version, argp_program_bug_address, + argp_err_exit_status, args_doc, options, parse_opt, help_filter, + argp): Add. + (do_extern): Adjust iteration over arguments. + (main): Switch from getopt_long to argp_parse. Initialise + html_pager early for use in --help. + * src/man.h (man_getopt): Remove prototype. + * src/manconv.c (long_options, args, usage): Remove. + (argp_program_version, argp_program_bug_address, + argp_err_exit_status, args_doc, options, parse_opt, argp): Add. + (main): Switch from getopt_long to argp_parse. + * src/mandb.c (long_options, args, usage): Remove. + (argp_program_version, argp_program_bug_address, + argp_err_exit_status, args_doc, options, parse_opt, argp): Add. + (main): Switch from getopt_long to argp_parse. + * src/manpath.c (long_options, args, usage): Remove. + (argp_program_version, argp_program_bug_address, + argp_err_exit_status, options, parse_opt, argp): Add. + (main): Switch from getopt_long to argp_parse. + * src/whatis.c (long_options, args, apropos_usage, whatis_usage, + usage): Remove. + (argp_program_version, argp_program_bug_address, + argp_err_exit_status, args_doc, apropos_doc, options, parse_opt, + apropos_argp, whatis_argp): Add. + (main): Switch from getopt_long to argp_parse. Suppress --exact + and --and options in the whatis case. + * src/zsoelim.l (long_options, args, usage, ver): Remove. + (argp_program_version, argp_program_bug_address, + argp_err_exit_status, args_doc, options, parse_opt, argp): Add. + (main): Switch from getopt_long to argp_parse. + * po/POTFILES.in: Add zsoelim.l. + +Thu Dec 13 17:20:51 GMT 2007 Colin Watson + + * autogen.sh: Permit gnulib-tool to be missing; in that case, just + run autoreconf. + +Thu Dec 13 11:36:26 GMT 2007 Colin Watson + + * configure.ac (AM_GNU_GETTEXT_VERSION): Upgrade to gettext 0.17. + * gnulib: Upgrade to Debian 20071201+dfsg-1. + * README (Copyright and licensing): New section. Explain the + implications of Gnulib components being distributed under GPL v3. + * .bzrignore: Ignore gnulib/lib/fcntl.h. + +Mon Nov 26 08:37:30 GMT 2007 Colin Watson + + * docs/HACKING (Utility functions to use): Rename to ... + (Facilities and portability): ... this. Add comments on Gnulib and + C89/C99. + +Sun Nov 25 21:11:34 GMT 2007 Colin Watson + + * docs/HACKING (Revision control): Add advice on docs/ChangeLog + practice in branches. + +Sun Nov 25 21:01:22 GMT 2007 Colin Watson + + * src/encodings.c (get_roff_encoding): Just use the fallback + encoding if device is NULL, rather than crashing. Bug reported by + Ivan Shmakov. + +Sun Nov 25 18:51:16 GMT 2007 Ivan Shmakov + + * man/Rules.man: replace.sed lives in $(top_builddir)/man, not + $(top_srcdir)/man. + +Sat Nov 24 10:45:50 GMT 2007 Colin Watson + + * src/man.c (make_roff_command): If the environment variable + MANROFFOPT is set, append its contents to the *roff command line + (thanks, Ivan Shmakov; Debian bug #451187). + * man/man1/man.man1 (ENVIRONMENT): Document MANROFFOPT. + * docs/NEWS: Document this. + +Mon Nov 19 19:41:18 GMT 2007 Colin Watson + + * configure.ac (AM_INIT_AUTOMAKE): Require Automake 1.10. Ming Hua + reported that Automake 1.9 doesn't have the MKDIR_P feature we + depend on. + +Tue Nov 13 22:10:51 GMT 2007 Colin Watson + + * src/whatis.c (use_grep, do_whatis, word_fnmatch, search, main): + Rename regex to regex_opt, as Solaris' defines a regex + function (thanks to the Nexenta developers). + +Mon Nov 12 19:24:00 GMT 2007 Colin Watson + + * src/accessdb.c (main), src/globbing_test.c (main), + src/lexgrog_test.c (main), src/zsoelim.l (main): Enable + localisation (Debian bug #448395). + +Sun Nov 11 05:43:16 GMT 2007 Colin Watson + + * configure.ac: Issue a useful error message if + gnulib/po/Makefile.in.in does not exist (reported by Ming Hua). + +Mon Oct 22 00:04:45 BST 2007 Colin Watson + + Bruno Haible notes in + http://lists.gnu.org/archive/html/groff/2005-12/msg00061.html that + setlocale is supported on all known systems, and it is in C89. Use + it unconditionally. + + * configure.ac: Don't check for setlocale. + * src/catman.c (parse_for_sec), src/man.c (main), src/manp.c + (add_nls_manpath), src/whatis.c (main): Remove HAVE_SETLOCALE + conditionals. + +Sun Oct 21 21:56:02 BST 2007 Colin Watson + + * configure.ac: Forbid output tokens beginning with "MAN_". + +Sun Oct 21 21:52:43 BST 2007 Colin Watson + + * configure.ac: Rationalise use of comments. Use more vertical + whitespace. + +Sun Oct 21 21:12:46 BST 2007 Colin Watson + + * gnulib: Import .po files (--po-base=gnulib/po --po-domain=man-db). + * configure.ac (AC_CONFIG_FILES): Generate gnulib/po/Makefile.in. + * Makefile.am (SUBDIRS): Build gnulib/po. + * .bzrignore: Ignore gnulib/po. This is contrary to our usual + practice, since this is generated by autogen.sh; but gnulib-tool + gives us full .po files which are then stripped down to just the + parts of Gnulib we use by make, so adding them to bzr is + inconvenient. + +Sun Oct 21 19:46:26 BST 2007 Colin Watson + + * src/man.c (man_getopt): Fix reversed handling of -f and -k in the + "incompatible options" message. + +Sun Oct 21 19:43:27 BST 2007 Colin Watson + + * configure.ac (CFLAGS): Add -Wformat-security. + * src/man.c (man_getopt): Use %s as the format string for the + "incompatible options" message since the message itself is not a + string literal. (This is only a security problem in the presence + of hostile translators.) + +Sun Oct 21 17:59:13 BST 2007 Colin Watson + + * man/Rules.man (SED_ARGS): Move to ... + * man/replace.sin: ... here. + * man/Rules.man (.man1.1, .man5.5, .man8.8): Use replace.sed to + shorten build output. + * configure.ac (AC_CONFIG_FILES): Generate man/replace.sed from + man/replace.sin. + * .bzrignore: Ignore man/replace.sed. + +Sun Oct 21 13:38:09 BST 2007 Colin Watson + + * src/check_mandirs.c (purge_missing): If there is no content, that + might just be because the key was already freed while purging an + earlier multi key, so skip to the next key rather than breaking + out of the loop. + +Sun Oct 21 13:33:38 BST 2007 Colin Watson + + * configure.ac: Check for gdbm_exists in DBLIBS as well as LIBS. + Remove unused gdbm_setopt check. + +Sun Oct 21 01:25:00 BST 2007 Colin Watson + + * configure.ac (AC_INIT): Pass a BUG-REPORT argument. + +Sat Oct 20 18:27:13 BST 2007 Colin Watson + + * gnulib/lib/xmalloc.c (xstrdup): Explicitly tolerate a NULL + argument, returning NULL in that case. (Also sent to Gnulib + upstream.) + * gnulib/lib/xmalloc.patch: Add, with the above change in patch + format. + * autogen.sh: Apply xmalloc.patch after updating Gnulib. + +Sat Oct 20 18:20:07 BST 2007 Colin Watson + + * gnulib/lib/asnprintf.c, gnulib/lib/asprintf.c, + gnulib/lib/float+.h, gnulib/lib/float_.h, + gnulib/lib/printf-args.c, gnulib/lib/printf-args.h, + gnulib/lib/printf-parse.c, gnulib/lib/printf-parse.h, + gnulib/lib/size_max.h, gnulib/lib/stdio_.h, + gnulib/lib/vasnprintf.c, gnulib/lib/vasnprintf.h, + gnulib/lib/vasprintf.c, gnulib/lib/xasprintf.c, + gnulib/lib/xsize.h, gnulib/lib/xvasprintf.c, + gnulib/lib/xvasprintf.h, gnulib/m4/eoverflow.m4, + gnulib/m4/float_h.m4, gnulib/m4/intmax_t.m4, + gnulib/m4/inttypes_h.m4, gnulib/m4/size_max.m4, + gnulib/m4/stdarg.m4, gnulib/m4/stdint_h.m4, gnulib/m4/stdio_h.m4, + gnulib/m4/vasnprintf.m4, gnulib/m4/vasprintf.m4, + gnulib/m4/wchar_t.m4, gnulib/m4/xsize.m4, gnulib/m4/xvasprintf.m4: + Import the Gnulib xvasprintf module. + * .bzrignore: Update. + + * libdb/mydbm.h: Add MYDBM_RESET_DSIZE and MYDBM_SET convenience + macros, to obsolete most direct uses of MYDBM_SET_DPTR and + MYDBM_DSIZE. Code that just wants to put a string in a datum + should use MYDBM_SET. + * libdb/db_btree.c (dbstore), libdb/db_delete.c (dbdelete): Use + MYDBM_SET. + * libdb/db_lookup.c (make_multi_key): Use MYDBM_SET and xasprintf. + (make_content): Likewise. Collapse ANSI_SPRINTF #ifdef, no longer + needed. + (dblookup): Use MYDBM_SET. + * libdb/db_ndbm.c (ndbm_flopen): Use xasprintf. + * libdb/db_store.c (dbstore): Use MYDBM_SET and xasprintf. + * libdb/db_ver.c (dbver_rd, dbver_wr): Use MYDBM_SET. + * src/check_mandirs.c (update_db_time): Use MYDBM_SET and xasprintf. + (reset_db_time, update_db): Use MYDBM_SET. + * src/filenames.c (make_filename): Use xasprintf. + * src/man.c (setenv_less): Use xasprintf. + + * m4/man-ansi-sprintf.m4, configure.ac (MAN_FUNC_ANSI_SPRINTF): + Remove. + +Sat Oct 20 14:30:44 BST 2007 Colin Watson + + * configure.ac: Remove redundant check for getcwd. + +Thu Oct 18 01:51:06 BST 2007 Colin Watson + + * src/wrapper.c: Include "config.h" right at the top and with a + HAVE_CONFIG_H guard, like other files. + +Thu Oct 18 01:41:41 BST 2007 Colin Watson + + * lib/pathsearch.c, src/man.c, src/mandb.c, src/manp.c: Include + "xgetcwd.h" rather than , as suggested by gnulib-tool. + +Thu Oct 18 01:37:22 BST 2007 Colin Watson + + * src/manp.c (cat_manpath): Whitespace adjustments. + +Thu Oct 18 01:15:25 BST 2007 Colin Watson + + * src/man.c: PIPE_BUF is no longer used, so don't define it. + +Wed Oct 17 22:34:32 BST 2007 Colin Watson + + * gnulib/lib/minmax.h, gnulib/m4/minmax.m4: Import the Gnulib minmax + module. + * src/man.c (duplicate_candidates): Use it. + * src/util.c: Remove unused definition of MAX. + + Regenerate all build system files. (Future ChangeLog entries will + not mention this.) + +Wed Oct 17 22:22:25 BST 2007 Colin Watson + + * gnulib/lib/strerror.c, gnulib/m4/strerror.m4: Import the Gnulib + strerror module. + + Regenerate all build system files. + +Wed Oct 17 21:05:50 BST 2007 Colin Watson + + Use the Gnulib portability library. + + * lib/alloca.c, lib/basename.c, lib/error.c, lib/error.h, + lib/fnmatch.c, lib/fnmatch_.h, lib/getcwdalloc.c, + lib/getcwdalloc.h, lib/getopt.c, lib/getopt1.c, lib/getopt_.h, + lib/glob.c, lib/glob_.h, lib/memcmp.c, lib/mkdtemp.c, + lib/mkstemp.c, lib/putenv.c, lib/realpath.c, lib/rename.c, + lib/setenv.c, lib/setenv.h, lib/strcspn.c, lib/strnlen.c, + lib/strsep.c, lib/tempname.c, lib/unsetenv.c, lib/xmalloc.c, + lib/xstrdup.c, lib/xstrndup.c, m4/man-fnmatch.m4, m4/setenv.m4, + m4/tempname.m4: Remove. + * gnulib/*, tools/link-warning.h: Import atexit, canonicalize, + dirname, error, fnmatch-gnu, getopt, glob, memcmp, mkdtemp, + mkstemp, regex, rename, setenv, strcspn, strsep, sys_select, + xalloc, xgetcwd, and xstrndup modules. + * .bzrignore: Update. + * Makefile.am (SUBDIRS): Build gnulib/lib. + (ACLOCAL_AMFLAGS): Add -I gnulib/m4. + * autogen.sh: Add gnulib-tool --update. + * configure.ac: Call gl_EARLY and gl_INIT. + Remove calls to AC_AIX and AC_MINIX. + Stop checking for unistd.h, regex.h, libgen.h, string.h, and + strings.h headers. + Stop checking for alloca, memcmp, strcoll, vprintf, getwd, atexit, + on_exit, canonicalize_file_name, regcomp, re_comp, globfree, + getopt_long, putenv, realpath, rename, basename, strsep, strcspn, + strnlen, mkdtemp, mkstemp, setenv, and __gen_tempname functions. + Generate gnulib/lib/Makefile. + * docs/HACKING: Document policy on generated files in revision + control. + * include/manconfig.h.in: Replace xmalloc, xrealloc, xstrdup, and + xstrndup declarations with inclusions of xalloc.h and xstrndup.h. + Stop defining basename, strsep, and getcwd. + * lib/Makefile.am (libman_a_CPPFLAGS): Include headers from + gnulib/lib. + (libman_a_SOURCES): Remove error.c, error.h, getcwdalloc.c, + getcwdalloc.h, setenv.h, xmalloc.c, xstrdup.c, and xstrndup.c. + (libman_a_LIBADD): Remove $(ALLOCA). + (BUILT_SOURCES, MOSTLYCLEANFILES, EXTRA_DIST, fnmatch.h, getopt.h, + glob.h): Remove; replaced by Gnulib. + * lib/README: Alphabetise, update file list, and update authors. + * libdb/Makefile.am (libmandb_a_CPPFLAGS): Include headers from + gnulib/lib. + * src/Makefile.am (AM_CPPFLAGS): Include headers from gnulib/lib. + (LIBMAN): Link with gnulib/lib/libgnu.a. + + * lib/cleanup.c: Assume and atexit. + * lib/decompress.c, lib/flock.c: Assume . + * lib/pathsearch.c: Assume . + (pathsearch): Use xgetcwd. + * lib/pipeline.c: Assume and . Remove + duplicate inclusion. + (command_new): Use base_name. + * lib/tempfile.c, lib/xstrsignal.h: Assume . + * libdb/db_btree.c: Assume . + * libdb/db_btree.c, libdb/db_lookup.c: Assume and strsep. + * libdb/db_ndbm.c: Assume . + * libdb/db_store.c: Assume and strsep. + * src/accessdb.c (main): Use base_name. + * src/catman.c: Assume . + (main): Use base_name. + * src/check_mandirs.c: Assume , strpbrk, and time. + (test_manfile): Use base_name. Rename existing base_name variable + to manpage_base. + (reset_db_time): Use dir_name. + * src/compression.c, src/convert_name.c: Assume . + * src/filenames.c: Remove unused inclusion. + * src/globbing_test.c (main): Use base_name. + * src/lexgrog.l, src/lexgrog.l-2.3.8, src/lexgrog.l-2.4a, + src/lexgrog.l.new: Assume . + * src/lexgrog_test.c (main): Use base_name. + * src/man.c: Assume . + (gripe_no_man): Use unsetenv rather than putenv. + (local_man_loop): Use base_name. + (main): Use base_name and xgetcwd. + (make_roff_command): Use setenv rather than putenv. + (format_display): Use xgetcwd and base_name. + * src/manconv.c: Assume . + (main): Use base_name. + * src/mandb.c: Assume . + (main): Use base_name and xgetcwd. + * src/manp.c: Assume . + (add_dir_to_path_list): Use xgetcwd. + * src/manpath.c: Assume . + (main): Use base_name. + * src/security.c: Assume . + * src/straycats.c: Assume . + (check_for_stray): Use base_name. Assume canonicalize_file_name. + * src/ult_src.c: Assume . + (ult_softlink): Use canonicalize_file_name. + * src/ult_src.c: Assume . + * src/whatis.c: Assume and . + (use_grep, parse_name, parse_whatis, search, main): Assume POSIX + regex functions (provided by Gnulib's regex module). + (main): Use base_name. + * src/wrapper.c (main): Use base_name. + * src/zsoelim.l: Assume . + (main): Use base_name. + + * docs/NEWS: Document this. + + Drop remaining bits of pre-C89 compatibility. + + * lib/ansidecl.h, lib/strspn.c, lib/strstr.c: Remove. + * configure.ac: Stop checking for strstr and strspn. + * include/manconfig.h.in: Remove VOID definition. + * lib/Makefile.am (libman_a_SOURCES): Remove ansidecl.h. + * lib/appendstr.c, lib/decompress.c, lib/flock.c, lib/hashtable.c, + lib/pathsearch.c, lib/tempfile.c, libdb/db_btree.c, + libdb/db_delete.c, libdb/db_gdbm.c, libdb/db_lookup.c, + libdb/db_ndbm.c, libdb/db_store.c, libdb/db_ver.c, src/accessdb.c, + src/catman.c, src/check_mandirs.c, src/compression.c, + src/convert_name.c, src/descriptions.c, src/descriptions_store.c, + src/encodings.c, src/fake_security.c, src/filenames.c, + src/globbing.c, src/globbing_test.c, src/lexgrog.l, + src/lexgrog.l-2.3.8, src/lexgrog.l-2.4a, src/lexgrog.l.new, + src/lexgrog_test.c, src/man.c, src/manconv.c, src/mandb.c, + src/manp.c, src/manpath.c, src/security.c, src/straycats.c, + src/ult_src.c, src/util.c, src/version.c, src/whatis.c, + src/zsoelim.l: Assume C89 declaration syntax, headers, and + functions. + * docs/NEWS: Document this. + + * configure.ac (--enable-mandirs): Improve grammar. + + Regenerate all build system files using autogen.sh. + +Mon Oct 15 10:15:48 BST 2007 Colin Watson + + * docs/NEWS: Document previous change. + +Mon Oct 15 10:13:57 BST 2007 Colin Watson + + * src/manconv.c (check_preprocessor_encoding): Allow only + alphanumerics and "-_/:.()" in encoding names (Debian bug + #446055). This matches everything in 'iconv --list' on my system. + (try_iconv): Include encoding names in error message if iconv_open + fails. + +Mon Oct 15 10:06:51 BST 2007 Colin Watson + + * man/Rules.man (.man1.1, .man5.5, .man8.8): Use $(MKDIR_P) rather + than hardcoding mkdir -p. + * man/Makefile.in, man/de.UTF-8/Makefile.in, + man/es.UTF-8/Makefile.in, man/fr.UTF-8/Makefile.in, + man/it.UTF-8/Makefile.in, man/ja.UTF-8/Makefile.in: Regenerate. + +Sun Oct 14 02:39:43 BST 2007 Colin Watson + + * src/Makefile.am (AM_CPPFLAGS): Fix SOELIM definition. + * src/Makefile.in: Regenerate. + +Sun Oct 14 01:20:07 BST 2007 Colin Watson + + * .bzrignore: Restore some ignores needed in intl/. + +Sun Oct 14 01:16:23 BST 2007 Colin Watson + + Add most files generated by autogen.sh to revision control, as it + makes it easier to keep track of what the Autotools are doing. + autom4te.cache and po/Makevars.template are explicitly still + ignored; the former is junk and the latter is only necessary in the + gettext-tools package. + + * ABOUT-NLS, aclocal.m4, config.h.in, configure, intl/ChangeLog, + intl/Makefile.in, intl/VERSION, intl/bindtextdom.c, + intl/config.charset, intl/dcgettext.c, intl/dcigettext.c, + intl/dcngettext.c, intl/dgettext.c, intl/dngettext.c, + intl/eval-plural.h, intl/explodename.c, intl/export.h, + intl/finddomain.c, intl/gettext.c, intl/gettextP.h, intl/gmo.h, + intl/hash-string.c, intl/hash-string.h, intl/intl-compat.c, + intl/intl-exports.c, intl/l10nflist.c, intl/langprefs.c, + intl/libgnuintl.h.in, intl/loadinfo.h, intl/loadmsgcat.c, + intl/localcharset.c, intl/localcharset.h, intl/locale.alias, + intl/localealias.c, intl/localename.c, intl/lock.c, intl/lock.h, + intl/log.c, intl/ngettext.c, intl/os2compat.c, intl/os2compat.h, + intl/osdep.c, intl/plural-exp.c, intl/plural-exp.h, intl/plural.c, + intl/plural.y, intl/printf-args.c, intl/printf-args.h, + intl/printf-parse.c, intl/printf-parse.h, intl/printf.c, + intl/ref-add.sin, intl/ref-del.sin, intl/relocatable.c, + intl/relocatable.h, intl/textdomain.c, intl/vasnprintf.c, + intl/vasnprintf.h, intl/vasnwprintf.h, intl/version.c, + intl/wprintf-parse.h, intl/xsize.h, m4/codeset.m4, m4/gettext.m4, + m4/glibc2.m4, m4/glibc21.m4, m4/iconv.m4, m4/intdiv0.m4, + m4/intl.m4, m4/intldir.m4, m4/intmax.m4, m4/inttypes-pri.m4, + m4/inttypes_h.m4, m4/lcmessage.m4, m4/lib-ld.m4, m4/lib-link.m4, + m4/lib-prefix.m4, m4/lock.m4, m4/longdouble.m4, m4/longlong.m4, + m4/nls.m4, m4/po.m4, m4/printf-posix.m4, m4/progtest.m4, + m4/size_max.m4, m4/stdint_h.m4, m4/uintmax_t.m4, m4/ulonglong.m4, + m4/visibility.m4, m4/wchar_t.m4, m4/wint_t.m4, m4/xsize.m4, + po/Makefile.in.in, po/Rules-quot, po/boldquot.sed, + po/en@boldquot.header, po/en@quot.header, po/insert-header.sin, + po/quot.sed, po/remove-potcdate.sin, tools/config.rpath, + tools/depcomp, tools/missing, tools/ylwrap: New files. + * .bzrignore: Update. + +Sun Oct 14 01:04:41 BST 2007 Colin Watson + + * autogen.sh: Use 'autoreconf -i' rather than reinventing the wheel. + +Sun Oct 14 00:53:14 BST 2007 Colin Watson + + * po/man-db.pot, po/*.po: Update. + +Sun Oct 14 00:49:31 BST 2007 Colin Watson + + * man/Rules.man (clean-local): Remove; we don't need to worry about + removing empty directories in separated build trees. + * man/Makefile.in, man/de.UTF-8/Makefile.in, + man/es.UTF-8/Makefile.in, man/fr.UTF-8/Makefile.in, + man/it.UTF-8/Makefile.in, man/ja.UTF-8/Makefile.in: Regenerate. + +Sun Oct 14 00:40:26 BST 2007 Colin Watson + + * man-db.lsm: Move to ... + * docs/man-db.lsm: ... here. + * Makefile.am, docs/Makefile.am: Move man-db.lsm reference. + * Makefile.in, docs/Makefile.in: Regenerate. + +Sun Oct 14 00:33:10 BST 2007 Colin Watson + + * README: Remove several restrictions lifted by the conversion to + Automake. Remove documentation of how to install native language + manual pages, since this is now done unconditionally. Remove + documentation of the update target, which no longer exists and + should no longer be needed. + + * docs/NEWS: Document conversion to Automake. + +Sun Oct 14 00:22:31 BST 2007 Colin Watson + + Convert to Automake. This fixes VPATH builds, fixes a number of bugs + in areas such as dependency generation, provides new features such + as 'make distcheck', moves complexity into autogenerated code, and + prepares the way for using Gnulib more effectively. + + * makefile.in, include/Defines.in: Remove. + * GNUmakefile.in, lib/Makefile.in, libdb/Makefile.in, + man/Makefile.in, manual/Makefile.in, src/Makefile.in: Translate to + Automake and move to ... + * Makefile.am, lib/Makefile.am, libdb/Makefile.am, man/Makefile.am, + manual/Makefile.am, src/Makefile.am: ... here. + * docs/Makefile.am, tools/Makefile.am: Build these directories + separately. + * man/Rules.man, man/de.UTF-8/Makefile.am, man/es.UTF-8/Makefile.am, + man/fr.UTF-8/Makefile.am, man/it.UTF-8/Makefile.am, + man/ja.UTF-8/Makefile.am: Build manual pages recursively, as it + makes VPATH builds easier. + * Makefile.in, docs/Makefile.in, lib/Makefile.in, libdb/Makefile.in, + man/Makefile.in, man/de.UTF-8/Makefile.in, + man/es.UTF-8/Makefile.in, man/fr.UTF-8/Makefile.in, + man/it.UTF-8/Makefile.in, man/ja.UTF-8/Makefile.in, + manual/Makefile.in, src/Makefile.in, tools/Makefile.in: Add + generated files. + * README: Remove mention of include/Defines. + * autogen.sh: Call automake-1.10 --add-missing --copy. + * m4/man-trans-subst.m4: New macro. + * configure.ac: Various changes for Automake. AC_SUBST man_owner, + and set man_mode rather than man_install_flags. Set + config_file_dirname. Calculate transformed versions of program + names (using MAN_TRANS_SUBST) here for use in Automake variables. + * docs/HACKING (Directory layout): Mention automake. + + Arrange that each file only needs to be built once. + + * src/globbing.c: Split main program out to ... + * src/globbing_test.c: ... here. + * src/lexgrog.l: Split main program out to ... + * src/lexgrog_test.c: ... here. + * po/POTFILES.in: Add src/globbing_test.c and src/lexgrog_test.c. + * src/whatis.c (args, long_options): Include -a/--and + unconditionally. + (usage): Replace with a wrapper selecting between ... + (apropos_usage, whatis_usage): ... these. + (apropos, whatis): Rename to ... + (do_apropos, do_whatis): ... these, respectively. + (use_grep, do_whatis, parse_name, match, do_apropos, search, + main): Use run-time conditionals rather than compile-time + conditionals. + (main): Detect whether we are being invoked as "apropos" or + "whatis" and adjust behaviour accordingly. + * src/Makefile.am: Adjust for the above. Make apropos a symlink to + whatis. + + Make VPATH builds work, and simplify some includes. + + * configure.ac, m4/man-fnmatch.m4: Define FNMATCH_H, GETOPT_H, and + GLOB_H to the respective header names if system versions do not + exist. + * lib/hashtable.h: Remove unnecessary libdb includes. + * lib/decompress.h, lib/glob.c, libdb/db_btree.c, libdb/db_delete.c, + libdb/db_gdbm.c, libdb/db_lookup.c, libdb/db_ndbm.c, + libdb/db_storage.h, libdb/db_store.c, libdb/db_ver.c, + src/accessdb.c, src/catman.c, src/check_mandirs.c, + src/check_mandirs.h, src/compression.c, src/convert_name.c, + src/descriptions.h, src/descriptions_store.c, src/encodings.c, + src/fake_security.c, src/filenames.c, src/filenames.h, + src/globbing.c, src/lexgrog.l, src/lexgrog.l-2.3.8, + src/lexgrog.l-2.4a, src/lexgrog.l.new, src/man.c, src/manconv.c, + src/mandb.c, src/manp.c, src/manpath.c, src/security.c, + src/straycats.c, src/ult_src.c, src/util.c, src/version.c, + src/whatis.c, src/wrapper.c, src/zsoelim.l: Remove lib/ and libdb/ + prefixes from includes. Include , , and + directly rather than using a forest of #ifdefs, since the + copies in lib/ are now not built if a system version exists. + + * .bzrignore: Update. + +Sat Oct 13 15:04:06 BST 2007 Colin Watson + + * lib/popen.c, m4/man-pclose.m4: Remove; we no longer need popen or + pclose. + * configure.ac: Remove call to MAN_FUNC_PCLOSE. + +Sat Oct 13 11:55:21 BST 2007 Colin Watson + + * configure.ac: Add --with-sections option to change the default + value of SECTION. + * src/man_db.conf.in: Use its output. + * docs/NEWS: Document this. + +Fri Oct 12 12:22:52 BST 2007 Colin Watson + + * docs/NEWS: Start 2.5.1. + +Fri Oct 12 11:57:50 BST 2007 Colin Watson + + * src/manconv.c (try_iconv): If we need to try the next encoding in + the list, make sure to do that before writing the output buffer. + +Fri Oct 12 10:21:07 BST 2007 Colin Watson + + * src/whatis.c (use_grep): Add trailing newline to debugging output. + +Fri Oct 12 01:47:49 BST 2007 Colin Watson + + * src/manconv.c (try_iconv): Improve debugging output slightly. + +Fri Oct 12 01:43:25 BST 2007 Colin Watson + + * src/man.c (format_display_and_save, format_display, + display_catman): Only discard stderr from formatting processes if + stdout is a terminal. + +Fri Oct 12 01:32:52 BST 2007 Colin Watson + + * src/encodings.c (device_table): groff's ascii device only supports + ASCII input, not ISO-8859-1. + (compatible_encodings): If the output is ASCII, this is probably + because the caller explicitly asked for it, so allow recoding to + it unconditionally. + +Fri Oct 12 00:48:42 BST 2007 Colin Watson + + * src/whatis.c (main): locale is a constant pointer; free + internal_locale instead (Debian bug #446302). + +Thu Oct 11 01:40:51 BST 2007 Colin Watson + + * src/man.c (display): Free format_cmd on two more early return + paths. + +Thu Oct 11 00:53:31 BST 2007 Colin Watson + + * src/man.c (display): I don't think it's possible for decomp to be + NULL on the display_to_stdout path, but better safe than sorry. + +Thu Oct 11 00:38:56 BST 2007 Colin Watson + + * src/man.c (display): Connect up the decompression pipeline in the + display_to_stdout case too (Debian bug #446189). + (checked_system): Remove, no longer used. + +Thu Oct 11 00:21:49 BST 2007 Colin Watson + + * src/man.c (make_roff_command): Perform input encoding conversion + for troff output as well as nroff output. + +Wed Oct 10 09:39:53 BST 2007 Colin Watson + + * man/man8/mandb.man8 (DATABASE CACHES): Fix "occured" typo (thanks, + Alfie Costa; Debian bug #446044). + +Mon Oct 8 02:24:19 BST 2007 Colin Watson + + * lib/popen.c (popen), src/descriptions.c (parse_descriptions), + src/man.c (add_candidate), src/manp.c (add_dir_to_path_list): Use + xmalloc instead of malloc. + * lib/pipeline.c (get_block): Use xrealloc instead of realloc. + +Mon Oct 8 02:15:47 BST 2007 Colin Watson + + * docs/HACKING: Minor release process adjustment now that we're no + longer using CVS. + +Mon Oct 8 02:13:15 BST 2007 Colin Watson + + * README: Building the manual requires running ./configure now. + +Mon Oct 8 02:09:55 BST 2007 Colin Watson + + The strappend function is in the namespace reserved by C99 + 7.26.10/7.26.11; rename it to appendstr. + + * lib/strappend.c: Rename to ... + * lib/appendstr.c: ... this. Rename function. + * lib/Makefile.in (ALLSRCS, ALL): Build appendstr instead of + strappend. + * lib/README: Update credit. + * include/manconfig.h.in: Update prototype. + * lib/decompress.c, lib/pathsearch.c, lib/pipeline.c, + lib/tempfile.c, libdb/db_delete.c, src/accessdb.c, src/catman.c, + src/check_mandirs.c, src/compression.c, src/convert_name.c, + src/encodings.c, src/filenames.c, src/globbing.c, + src/lexgrog.l.new, src/man.c, src/manconv.c, src/mandb.c, + src/manp.c, src/straycats.c, src/ult_src.c, src/util.c, + src/whatis.c, src/zsoelim.l: Update all callers. + * docs/HACKING: Update reference. + * docs/TODO: Remove item for this. + +Mon Oct 8 01:21:10 BST 2007 Colin Watson + + * GNUmakefile.in (_man): Ship po4a files. + (dist): Create the necessary directories. + +Mon Oct 8 01:16:07 BST 2007 Colin Watson + + Build the manual automatically. This avoids problems trying to do a + distclean (distclean at the top level runs ./config.status --recheck + and regenerates manual/Makefile, but manual/Makefile requires + include/Defines to exist, so there is no way to distclean both the + top level and manual/). + + * GNUmakefile.in (EVERYTHING, ALL): Add manual. + (_subdirs): Remove manual, now included in $(EVERYTHING). + +Sun Oct 7 17:05:54 BST 2007 Colin Watson + + * Version: 2.5.0. + * configure.ac, docs/NEWS, man-db.lsm: Update. + +Sun Oct 7 17:01:47 BST 2007 Colin Watson + + * src/lexgrog.l (ja_name): Add another possible translation. + +Sun Oct 7 15:19:15 BST 2007 Colin Watson + + * manual/Makefile.in (distclean): Remove Makefile. + +Sun Oct 7 14:28:27 BST 2007 Colin Watson + + * po/man-db.pot, po/*.po: Update. + +Sun Oct 7 14:24:31 BST 2007 Ming Hua + + * po/zh_CN.po: New translation. + * po/LINGUAS: Add zh_CN. + * man/THANKS: Add translator credit. + +Wed Sep 26 17:57:44 BST 2007 Colin Watson + + * src/util.c (escape_shell): '=' is conceivably a shell + metacharacter if used in the first word of a command (although I + can't see anywhere in man-db where this might actually happen, + barring very unlikely settings of $BROWSER). + +Wed Sep 26 17:51:45 BST 2007 Colin Watson + + * src/globbing.c (look_for_file): Don't escape the hierarchy path; + it isn't necessary and it causes problems for paths containing + metacharacters (Debian bug #444187). + * src/globbing.h (look_for_file): Update prototype. + +Tue Sep 18 11:29:26 BST 2007 Colin Watson + + * man/po4a/po4a.cfg: Add po4a mechanism for manual page translation, + as the Simplified Chinese translator would like to use this. + * man/po4a/po/man-db.pot: Add generated file. + + * man/man1/apropos.man1, man/man1/lexgrog.man1, man/man1/man.man1, + man/man1/manconv.man1, man/man1/manpath.man1, + man/man1/whatis.man1, man/man1/zsoelim.man1, + man/man5/manpath.man5, man/man8/accessdb.man8, + man/man8/catman.man8, man/man8/mandb.man8: Some strings should not + be translated. Use the ".if !'po4a'hide'" idiom to mark them. + * man/man1/man.man1 (OVERVIEW): Adjust some spacing. + +Tue Sep 18 08:59:55 BST 2007 Colin Watson + + * src/encodings.c (directory_table): Switch Simplified Chinese to + GBK by default. Ming Hua points out that GBK is a superset of + EUC-CN, and indeed all Simplified Chinese manual pages I can find + can be recoded from GBK without hassle. I'm less certain about + changing the output encoding, but for CJK encodings it's best for + these to be the same at the moment. + +Mon Sep 17 16:13:37 BST 2007 Daniel Nylander + + * po/sv.po: Update from Translation Project. + +Mon Sep 17 14:27:15 BST 2007 Clytie Siddall + + * po/vi.po: Update from Translation Project. + +Mon Sep 17 00:34:17 UTC 2007 Colin Watson + + * src/lexgrog.l (ja_name): Oops; make the first translation keep + working! + +Mon Sep 17 00:26:27 UTC 2007 Colin Watson + + * src/lexgrog.l (ja_name): Add another possible translation. + +Mon Sep 17 00:11:38 UTC 2007 Colin Watson + + * lib/pipeline.c (pipeline_start): Break after execvp, otherwise we + segfault if execvp fails. + +Sun Sep 16 23:15:27 BST 2007 Colin Watson + + * Version: 2.5.0-pre2. + * man-db.lsm (Keywords): Add manconv. + +Sun Sep 16 20:41:36 BST 2007 Colin Watson + + * GNUmakefile.in (__distclean): Remove config.status.lineno. + * .bzrignore: Ignore ./config.status.lineno. + +Sun Sep 16 20:38:32 BST 2007 Colin Watson + + * man/Makefile.in: Deal more neatly with manual pages without + complete sets of translations. + +Sun Sep 16 20:25:24 BST 2007 Colin Watson + + Add more intelligent guessing of manual page encodings. Thanks to + Adam Borowski for discussion leading to this. + + * src/manconv.c: New program. + * man/man1/manconv.man1: Document it. + * .bzrignore: Ignore src/manconv. + * include/Defines.in (manconv): Add. + * man/Makefile.in (manconv, thmanconv, manconv.1): Add. + (process_manpage): Add manconv and thmanconv. + (allmanpages): Add ./man1/manconv.1. + (nlsinstall): Install manconv.1. + (nlsuninstall): Uninstall manconv.1. + * src/Makefile.in (PRIVTOOLS, all): Add manconv. + * po/POTFILES.in: Add src/manconv.c. + * po/man-db.pot, po/*.po: Update. + + * src/man.c (PP_COOKIE): Move to ... + * include/manconfig.h.in (PP_COOKIE): ... here. + + * src/encodings.c (add_manconv): New function to use manconv instead + of iconv where appropriate. + * src/encodings.h (add_manconv): Add prototype. + * src/lexgrog.l (find_name): Use it. + * src/man.c (make_roff_command): Use it. Remove coding: preprocessor + string handling, as manconv deals with that now. + * src/straycats.c (check_for_stray): Use it. + * src/Makefile.in (DEFS_encodings.o): Add, defining location of + manconv. + + * docs/NEWS: Document this. + +Sun Sep 16 12:41:05 BST 2007 Colin Watson + + * src/catman.c (main), src/globbing.c (main), src/lexgrog.l (main), + src/man.c (man_getopt), src/mandb.c (main), src/manpath.c (main), + src/whatis.c (main), src/zsoelim.l (main): Pass NULL as the fifth + argument to getopt_long rather than requiring an unused variable. + +Tue Sep 11 13:49:33 BST 2007 Clytie Siddall + + * po/vi.po: Update from Translation Project. + +Mon Sep 10 10:29:40 BST 2007 Colin Watson + + * docs/TODO: Miscellaneous updates. + +Mon Sep 10 10:26:57 BST 2007 Colin Watson + + * docs/INSTALL.autoconf: Update to instructions from Autoconf 2.61. + +Mon Sep 10 10:20:23 BST 2007 Colin Watson + + * manual/misc.me (NLS message catalogues): Update Translation + Project URL. + +Mon Sep 10 10:17:43 BST 2007 Colin Watson + + * manual/Makefile: Rename to ... + * manual/Makefile.in: ... this. Write out a version file with the + current version of man-db. + * manual/man_db.me: Use the automatically-generated version file + rather than hardcoding the version. Set the manual version to + simply the version of man-db. + * configure.ac (AC_CONFIG_FILES): Add manual/Makefile. + * GNUmakefile.in (_manual): Distribute manual/Makefile.in rather + than manual/Makefile. + * .bzrignore: Update. + +Mon Sep 10 09:17:17 BST 2007 Colin Watson + + * Version: 2.5.0-pre1. I mistakenly used version 2.4.5-pre1 earlier. + +Mon Sep 10 09:11:05 BST 2007 Clytie Siddall + + * po/vi.po: Update from Translation Project. + +Mon Sep 10 00:15:31 BST 2007 Colin Watson + + * configure.ac (AM_GNU_GETTEXT_VERSION): Upgrade to gettext 0.16.1. + * .bzrignore: Update ignores. + +Sun Sep 9 23:49:37 BST 2007 Daniel Nylander + + * po/sv.po: Update from Translation Project. + +Sun Sep 9 22:50:22 BST 2007 Colin Watson + + * manual/format.me (Format scripts): Adjust for renaming of + tools/mandb_[nt]fmt-script to tools/mandb_fmt-script. + +Sun Sep 9 21:03:25 BST 2007 Colin Watson + + * manual/comp.me (Compressed manual pages): Using compressed manual + pages is perfectly reasonable these days; stop recommending + against it. + +Sun Sep 9 20:57:16 BST 2007 Colin Watson + + * manual/files.me (Displaying latin1 characters on a Linux virtual + terminal): Rename to ... + (Displaying non-ASCII characters on a Linux virtual terminal): ... + this. Mention console-tools as an alternative to kbd. Remove + detailed advice on configuring kbd as it is now woefully out of + date. Recommend the UTF-8 encoding again. + +Sun Sep 9 20:49:59 BST 2007 Colin Watson + + * manual/files.me (NLS manual pages): Update for new per-locale + directory handling. Recommend UTF-8 encoding. + +Sun Sep 9 19:39:36 BST 2007 Colin Watson + + * manual/intro.me (The manual page system): Refer to /usr/share/man + rather than /usr/man. + * manual/sec.me (Package specific manual page sections): Likewise. + * manual/files.me (Manual page hierarchies, Other OS's manual pages, + NLS manual pages): Likewise. + * manual/leader.me: Update copyright years. + +Sun Sep 9 19:24:56 BST 2007 Colin Watson + + * docs/NEWS: Reorder, roughly by importance. + +Sun Sep 9 09:01:30 BST 2007 Colin Watson + + * GNUmakefile.in (_root): Add autogen.sh to the distribution; it's + useful if you need to change autotools input files. + +Sun Sep 9 08:37:04 BST 2007 Colin Watson + + * Version: 2.4.5-pre1 (for translators). + * po/man-db.pot, po/*.po: Update. + +Mon Sep 3 14:34:06 BST 2007 Colin Watson + + * src/manp.c (add_nls_manpath): Handle the POSIX locale the same way + as C. + +Mon Sep 3 13:48:13 BST 2007 Colin Watson + + * man/man1/whatis.man1 (OPTIONS): Refer to whatis rather than + apropos in description of --manpath. + +Mon Sep 3 13:45:30 BST 2007 Nicolas François + + * man/man1/apropos.man1 (ENVIRONMENT): Remove stray space in + description of POSIXLY_CORRECT. Patch from Debian bug #281811. + +Mon Sep 3 13:26:19 BST 2007 Colin Watson + + * src/encodings.c (directory_table): Add Bulgarian -> CP1251 and + Vietnamese -> TCVN5712-1. + * src/lexgrog.l (bg_name, vi_name): Add. + +Mon Sep 3 12:15:55 BST 2007 Colin Watson + + * src/check_mandirs.c (test_manfile): Fix comment typos and + formatting. + +Mon Sep 3 12:01:36 BST 2007 Colin Watson + + * .bzrignore: Update for manual directory renaming. + * GNUmakefile.in (nls_man): Likewise. + +Mon Sep 3 11:56:58 BST 2007 Colin Watson + + * man/de_DE.88591, man/es_ES.88591, man/fr_FR.88591, + man/it_IT.88591, man/ja_JP.eucJP: Rename to ... + * man/de.UTF-8, man/es.UTF-8, man/fr.UTF-8, man/it.UTF-8, + man/ja.UTF-8: ... these. Recode all contents to UTF-8. + * man/Makefile.in (NLS): Adjust directory search. + * man/THANKS: Update credits. + +Mon Sep 3 11:38:11 BST 2007 Colin Watson + + Create and use databases for non-English manual hierarchies (Debian + bug #29448). Extensive changes elsewhere to support this by means of + better UTF-8 handling and knowledge of more languages. + + * src/check_mandirs.c (make_database_directory): New function. + (create_db, update_db): Use it. + (purge_missing): Check that the database exists before starting. + * src/mandb.c (process_manpath): New function, split out from main. + Make the single_filename check aware that the file might be in a + per-locale subdirectory that we aren't processing right now. + (main): Use it. Move man_owner, purged, and strays to file scope. + Build databases for all per-locale subdirectories. + * src/straycats.c (straycats): Constify manpath argument. + * src/whatis.c (main): Sync locale handling with src/man.c, in order + to look up per-locale databases correctly. Based on a patch by + Nicolas François (Debian bug #281811). + * include/manconfig.h.in (straycats): Update prototype. + + * src/man.c (duplicate_candidates): New function to determine + whether candidates are substantially duplicated, and if so in + which direction. The logic is better than before: it now knows how + to compare locales and pick the best available candidate for each + language, and prefers UTF-8 candidates if everything else is + equal. + (add_candidate): Move duplication logic to duplicate_candidates. + Adjust insertion handling so that we can drop old candidates in + favour of new candidates. + * src/manp.c (check_and_give): Remove. + (unpack_locale_bits): New function, inspired by _nl_explode_name + in libintl. + (free_locale_bits): New function. + (add_nls_manpath): Instead of trying individual directories (which + doesn't work so well with character set aliasing), iterate over + all subdirectories of each manpath entry and add all those + matching the current locale's language and (if specified) + territory. This now includes ll.CODESET as well as more + conventional locale names. + * src/manp.h: Declare 'struct locale_bits'. Prototype + unpack_locale_bits and free_locale_bits. + + * src/man.c (lang_dir): Move to ... + * src/util.c (lang_dir): ... here. + * src/lexgrog.l (long_options, args, main): New -E/--encoding + option. + (usage): Document it. + (cs_name, hu_name, ja_name, ru_name): Recode to UTF-8. + (find_name): Add encoding argument. Guess the page's encoding from + its filesystem location (or use encoding if supplied), and add an + iconv command to recode it to UTF-8. + * man/man1/lexgrog.man1 (SYNOPSIS, OPTIONS): Document --encoding. + * src/straycats.c (check_for_stray): Guess the page's encoding from + its filesystem location, and add an iconv command to recode it to + UTF-8. + * src/whatis.c (simple_convert): New function to simplify iconv + handling. + (display): Convert output from UTF-8 to locale charset. + (main): Initialise iconv descriptor. + * include/manconfig.h.in (find_name): Update prototype. + (lang_dir): Add prototype. + * configure.ac: Call AM_ICONV. + * src/Makefile.in (mandb, lexgrog): Add encodings.o. + * src/Makefile.in (whatis, apropos): Add encodings.o and + $(LIBICONV). + + * src/encodings.c (directory_table): Add Serbian -> ISO-8859-5. + * src/lexgrog.l (cs_name, hu_name): Expand character classes + containing non-ASCII characters into the form (a|b|...); flex + doesn't understand Unicode well enough to deal with them + otherwise. + (cs_name, ru_name): Add more possible translations. + (ko_name, sk_name, sr_name, tr_name, zh_CN_name, zh_TW_name): Add. + (find_name_decompressed): Ignore exit status from decompressor + pipeline; iconv may exit non-zero on misencoded pages, but if we + manage to extract a whatis from it anyway then it doesn't really + matter. + + * src/whatis.c (usage): Document -L/--locale. + * man/man1/apropos.man1 (SYNOPSIS, OPTIONS): Likewise. + * man/man1/whatis.man1 (SYNOPSIS, OPTIONS): Likewise. + + * docs/NEWS: Document this. + +Sun Sep 2 01:21:11 BST 2007 Colin Watson + + Add limited character set aliasing support. + + * src/encodings.c (charset_alias_table): New table for common + character set aliases. + (get_canonical_charset_name): New function to inspect + charset_alias_table. + (get_page_encoding): Use get_canonical_charset_name. Adjust FHS + commentary, since we now support its craziness. + (get_standard_output_encoding): Use get_canonical_charset_name. + (get_locale_charset): Likewise. + * src/encodings.h: Prototype get_canonical_charset_name. + + * src/encodings.c (directory_table): Use EUC-CN rather than GB2312 + and BIG5HKSCS rather than BIG5-HKSCS (canonical names according to + glibc's /usr/lib/gconv/gconv-modules). + (charset_table): Likewise. + (compatible_encodings): Likewise. + +Sun Sep 2 00:49:27 BST 2007 Colin Watson + + * lib/decompress.c (decompress_open, decompress_fdopen): Don't start + the returned pipeline. + * lib/decompress.h (decompress_open, decompress_fdopen): Note that + the caller must start the returned pipeline. + * src/lexgrog.l (find_name): Start the decompressor pipeline. + * src/man.c (display): Likewise. + * src/ult_src.c (ult_src): Likewise. + * src/zsoelim.l (open_file): Likewise. + * src/straycats.c (check_for_stray): Append 'col -bx' to the + decompressor pipeline rather than connecting two pipelines + together. Don't call pipeline_wait by hand as pipeline_free will + do this for us now. + +Fri Aug 31 14:52:22 BST 2007 Colin Watson + + * src/man.c (maybe_update_file): Only recache pages automatically if + --update was given. + +Fri Aug 31 04:54:45 BST 2007 Colin Watson + + * lib/pipeline.c (pipeline_free): Call pipeline_wait if the pipeline + is still running. + * lib/pipeline.h (pipeline_free): Document that this may happen. + +Fri Aug 31 04:46:04 BST 2007 Colin Watson + + * src/zsoelim.l (main): Call pipeline_install_sigchld. + +Wed Aug 29 17:12:52 BST 2007 Lars Wirzenius + + * po/fi.po: Adjust translation of "No manual entry for %s" (Debian + bug #320108). + +Wed Aug 29 15:22:54 BST 2007 Clytie Siddall + + * po/vi.po: Update from Translation Project. + +Wed Aug 29 15:18:34 BST 2007 Daniel Nylander + + * po/sv.po: Update from Translation Project. + +Wed Aug 29 12:07:38 BST 2007 Colin Watson + + * docs/NEWS: Reorganise slightly. Document mandb --quiet fixes. + +Wed Aug 29 11:57:59 BST 2007 Colin Watson + + Add an option to apropos to display only items matching all keywords + (thanks, Alfie Costa; Debian bug #259340). + + * src/whatis.c (args, long_options, main): New -a/--and option for + apropos. + (usage): Document it. + (apropos): Store a count of how many times each item has been seen + in the hashtable. If --and was given, only display an item if its + count equals the number of supplied keywords. + (main): Store the number of supplied keywords. Adjust hash free + function. + * man/man1/apropos.man1 (SYNOPSIS, OPTIONS): Document --and. + * docs/NEWS: Document this. + +Wed Aug 29 11:09:31 BST 2007 Colin Watson + + * m4/man-path-progs.m4: Rename to ... + * m4/man-check-progs.m4: ... this. Use AC_CHECK_PROGS rather than + AC_PATH_PROGS. + * configure.ac: Use AC_CHECK_PROGS rather than + AC_PATH_PROG/AC_PATH_PROGS, and MAN_CHECK_PROGS rather than + MAN_PATH_PROGS. This fixes problems due to system utilities moving + around on $PATH (Debian bug #385651). + +Wed Aug 29 10:42:08 BST 2007 Colin Watson + + * configure.ac: Move bogus makefile content ... + * makefile.in: ... here. + +Wed Aug 29 10:15:33 BST 2007 Colin Watson + + * m4/man-path-progs.m4: Define HAVE_WITH-ARG if the program is + found. + * configure.ac: Rely on the above rather than setting HAVE_GZIP, + HAVE_COMPRESS, and HAVE_BZIP2 here. + +Wed Aug 29 09:41:51 BST 2007 Colin Watson + + * src/mandb.c (main): Revert inadvertently-committed debugging + change to straycats logic. + +Wed Aug 29 09:34:50 BST 2007 Colin Watson + + * src/lexgrog.l: Add Indonesian translation of NAME. + +Wed Aug 29 09:29:36 BST 2007 Colin Watson + + * docs/NEWS: Document previous apropos change. + +Wed Aug 29 09:26:23 BST 2007 Colin Watson + + * src/whatis.c (apropos): Add output keys to a hashtable, and skip + any that have already been seen (Debian bug #259338). + (main): Create the hashtable on startup and free it on exit. + +Tue Aug 28 19:16:18 BST 2007 Colin Watson + + * src/man.c (format_display): Wait for the decomp pipeline in the + !format_cmd case too. + +Tue Aug 28 19:07:53 BST 2007 Colin Watson + + * src/man.c (display_catman): Take a decompressor pipeline argument. + Connect it to format_cmd. + (display): Update call to display_catman. + +Tue Aug 28 18:38:31 BST 2007 Colin Watson + + Add a configuration file flag (NOCACHE) to disable cat page caching + (thanks, Ralph Corderoy; Debian bug #196642). + + * src/manp.c (add_to_dirlist): Recognise NOCACHE. + * src/man.c (display): Don't save a cat page if NOCACHE is set. + * src/man_db.conf.in: Document NOCACHE. + * man/man5/manpath.man5 (FORMAT): Document NOCACHE. + * docs/NEWS: Document this. + +Tue Aug 28 17:23:26 BST 2007 Colin Watson + + * docs/NEWS: Bump to 2.5.0; I think there's now enough to justify + that. + +Tue Aug 28 17:19:16 BST 2007 Colin Watson + + Implement and use a decompression library. This allows cat pages to + be saved in the background (Debian bug #18452) and operation with a + read-only /tmp (Debian bug #165499). + + * lib/pipeline.h (struct command): Add support for commands that + consist of calling a function rather than executing a process. + (struct pipeline): Add want_infile and want_outfile members. Note + that infile and outfile default to NULL. Add source, buffer, + buflen, bufmax, line_cache, and peek_offset members. + (command_new_function, command_dump, command_tostring, + pipeline_connect, pipeline_pump, pipeline_read, pipeline_peek, + pipeline_peek_size, pipeline_peek_skip, pipeline_readline, + pipeline_peekline): New prototypes. + (pipeline_join): Update description for want_infile and + want_outfile. + * lib/pipeline.c (command_new, command_dup, command_arg, + command_argv, command_args, command_argstr, command_free): Update + for 'struct command' changes. + (command_new_function, command_dump, command_tostring): New + functions. + (pipeline_new, pipeline_join, pipeline_dump, pipeline_tostring): + Update for 'struct pipeline' changes. + (pipeline_dump): Use command_dump. + (pipeline_tostring): Use command_tostring. + (pipeline_start): Implement want_infile, want_outfile, and + function commands. Make zero-command case work properly (read + directly from input file). Flush all pending stdio output so that + subprocesses don't inherit it. + (pipeline_connect, pipeline_pump, get_block, pipeline_read, + pipeline_peek, pipeline_peek_size, pipeline_peek_skip, get_line, + pipeline_readline, pipeline_peekline): New functions. + + * lib/decompress.c, lib/decompress.h: New files, implementing a + decompression abstraction layer. + * lib/Makefile.in: Always compile decompress.c. + + * src/lexgrog.l (YY_INPUT): Define to read from a 'struct pipeline'. + (find_name): Use decompress_open/decompress_fdopen rather than + older decompression methods. Split handling once we have a + decompressor pipeline out to ... + (find_name_decompressed): ... here. + * src/check_mandirs.c (test_manfile): Remove decompression code; + find_name will handle this itself now. + * src/compression.c (create_ztemp, decompress, remove_ztemp, + get_ztemp): Remove. + * src/man.c (checked_popen): Remove. + (local_man_loop): Remove decompression code. + (get_preprocessors_from_file): Convert to peeking the first line + from a pipeline. + (get_preprocessors): Adjust arguments and + get_preprocessors_from_file call. + (remove_stdintmp, create_stdintmp): Remove. + (make_roff_command): Remove special handling of stdin, now handled + by peeking a pipeline. + (open_cat_stream): Don't start the returned pipeline. + (close_cat_stream): Remove unnecessary COMP_CAT special case. + (format_display_and_save): Take a decompressor pipeline argument. + Simplify by using pipeline_connect and pipeline_pump. + (format_display): Take a decompressor pipeline argument. Use + pipeline_connect and pipeline_pump. + (display): Use decompress_open/decompress_fdopen rather than older + decompression methods. + (display_filesystem, display_database): Drop remove_ztemp calls. + * src/straycats.c (check_for_stray): Use decompression layer. + Rearrange control flow a bit to reduce duplication. Remove use of + temporary file; use find_name_decompressed instead. Only increment + strays if find_name_decompressed succeeds. + (straycats): Remove temporary file creation. + * src/ult_src.c (ult_src): Use pipeline and decompression layers + rather than older decompression methods. + * src/zsoelim.l (YY_INPUT): Define to read from a 'struct pipeline'. + (\"?[^ \t\n\"]+\"?): Call open_file only once; let it worry + about compression extensions. Decrement so_stack_ptr here if + open_file fails rather than having it do it. + (\"?[^ \t\n\"]+\"?): Free the old value of NAME, if set. + (<>): Clean up used pipeline and free NAME. Remove so_delete + handling. + (main): Let open_file handle stdin. + (open_file): Use decompress_open/decompress_fdopen rather than + older decompression methods. Don't decrement so_stack_ptr here on + failure. + + * configure.ac: Remove decompressor variable. Check for gzopen in + libz. + * include/manconfig.h.in (DECOMPRESSOR): Remove. + (comp_list): Declare extern here. + (create_tempfile): Remove. + (decompress, remove_ztemp, get_ztemp): Remove. + (find_name_decompressed): Add prototype. + * lib/tempfile.c (create_tempfile): Remove. We now only need + temporary directory creation. + * src/man_db.conf.in (decompressor): Remove. + + * docs/TODO: Update. + * docs/NEWS: Document this. + +Tue Aug 28 11:14:53 BST 2007 Colin Watson + + * tools/mandb_[nt]fmt-script: Rename to tools/mandb_fmt-script, + which is a rather less hostile filename. + * tools/README: Update. + * GNUmakefile.in: Update. + +Tue Aug 28 10:36:20 BST 2007 Colin Watson + + * src/straycats.c (check_for_stray): Drop privileges while opening + temporary file (previously created with dropped privileges). + +Tue Aug 28 10:31:03 BST 2007 Colin Watson + + * src/straycats.c (straycats): Regain privileges on the error path + too. + +Mon Aug 27 20:13:09 BST 2007 Colin Watson + + * src/compression.c (comp_file): Free compfile if returning NULL. + +Mon Aug 27 20:02:17 BST 2007 Colin Watson + + * lib/pipeline.c (pipeline_wait): Re-raise SIGINT or SIGQUIT if they + terminate a subprocess. + +Mon Aug 27 19:58:19 BST 2007 Colin Watson + + * lib/pipeline.c (pipeline_wait): Return 1 if we fail to close the + pipeline's output. + +Sun Aug 26 23:33:23 BST 2007 Colin Watson + + * src/man.c (format_display): Check whether format_cmd is NULL + before discarding stderr from it. + +Sun Aug 26 21:20:45 BST 2007 Colin Watson + + * src/man.c (checked_popen): Remove unnecessary SECURE_MAN_UID + guard; drop_effective_privs/regain_effective_privs already check + this. + * src/security.c (remove_with_dropped_privs): Likewise. The uid != + ruid check is no longer necessary now that + drop_effective_privs/regain_effective_privs handle nesting + correctly. + +Sun Aug 26 19:40:12 BST 2007 Colin Watson + + * src/man.c (make_roff_command): If MAN_KEEP_FORMATTING is set in + the environment, don't strip formatting characters with col + (Debian bug #340673). + * man/man1/man.man1 (ENVIRONMENT): Document MAN_KEEP_FORMATTING. + * docs/NEWS: Document this. + +Sun Aug 26 16:40:50 BST 2007 Colin Watson + + Suppress warnings in --quiet mode (thanks, Martin Dorey; Debian bugs + #348008, #378428, and #411220). + + * src/check_mandirs.c (test_manfile): Suppress "bad symlink" warning + under --quiet. + * src/ult_src.c (ult_hardlink): Suppress "can't search directory" + warning under --quiet. + (ult_softlink): Suppress "dangling symlinks" and "can't resolve" + warnings under --quiet. + (ult_src): Suppress "can't resolve", "is self referencing", and + "can't open" warnings under --quiet. + * src/lexgrog.l: Declare global quiet variable. + +Sun Aug 26 16:10:26 BST 2007 Colin Watson + + * src/lexgrog.l (main): Skip descriptions with NULL name or whatis. + This causes pages with no description to be flagged as parse + failures, so that automatic scanners can pick them up more easily. + +Sun Aug 26 15:08:45 BST 2007 Colin Watson + + * src/man.c (is_section): Disallow sectional extensions of + alphabetic sections, e.g. n and l from the default configuration + (Debian bug #391977). Also disallow sectional extensions beginning + with a digit (Debian bug #421481). + +Mon Aug 20 00:10:49 BST 2007 Colin Watson + + Discard stderr from formatting processes when outputting to a pager, + to avoid visual corruption from any error messages (thanks, Vincent + Lefevre; Debian bug #372939). + + * lib/pipeline.h (struct command): Add discard_err member. + * lib/pipeline.c (command_new, command_dup): Initialise discard_err. + (pipeline_start): Redirect the child's stderr to /dev/null if + discard_err is set. + * src/man.c (discard_stderr): New function to set discard_err on all + commands in a pipeline. + (format_display_and_save, format_display): Use it on format_cmd. + * docs/NEWS: Document this. + +Sun Aug 19 21:04:24 BST 2007 Colin Watson + + * src/descriptions.c (parse_descriptions): Skip name tokens + containing whitespace, as they are almost never useful as manual + page names. + * man/man1/lexgrog.1 (WHATIS PARSING), docs/NEWS: Document this. + +Sun Aug 19 21:00:20 BST 2007 Colin Watson + + * src/lexgrog.l: Skip over .ft font change requests, and the .Vb and + .Ve definitions used by pod2man to begin and end verbatim mode. + This handles some POD-generated pages better. + +Sun Aug 19 20:48:42 BST 2007 Colin Watson + + Truncate apropos/whatis output to the terminal width by default + (thanks, Dan Jacobson; Debian bug #411721). + + * lib/linelength.c: New file for terminal line length detection, + split out from src/man.c. Unlike the previous implementation, this + does its own memoisation rather than requiring explicit + initialisation. + * lib/linelength.h: Prototype get_line_length. + * lib/Makefile.in: Always compile linelength.c. + * src/man.c (line_length, store_line_length): Remove. + (get_roff_line_length): Use get_line_length. + (main): We no longer need to call store_line_length. + * src/whatis.c (args, long_options, main): New -l/--long option. + (usage): Document it. + (display): Truncate names and descriptions to fit within the + terminal width. + * man/man1/apropos.man1 (SYNOPSIS, OPTIONS, ENVIRONMENT): Document + --long and the MANWIDTH override. + * man/man1/whatis.man1 (SYNOPSIS, OPTIONS, ENVIRONMENT): Likewise. + * docs/NEWS: Document this. + +Tue Jun 26 10:48:45 BST 2007 Colin Watson + + * man/de_DE.88591/man1/man.man1 (UMGEBUNG), + man/de_DE.88591/man8/catman.man8 (BESCHREIBUNG): MANSEC -> MANSECT + (thanks, Holger Kubiak; Debian bug #430635). + +Mon Jun 18 10:19:22 BST 2007 Colin Watson + + * lib/cleanup.c (do_cleanups): Split out signal-safe processing ... + (do_cleanups_sigsafe): ... here. + (sighandler): Call do_cleanups_sigsafe rather than do_cleanups. + (push_cleanup): Add sigsafe argument to allow cleanup functions to + be flagged as non-signal-safe (e.g. freeing memory). + * lib/cleanup.h: Update prototypes. + * libdb/db_gdbm.c (man_gdbm_firstkey): hash_free cleanup is not + signal-safe. + * src/globbing.c (update_directory_cache): hash_free cleanup is not + signal-safe. + (look_for_file): globfree cleanup is not signal-safe. + * src/man.c (open_cat_stream, display_catman): unlink cleanup is + signal-safe. + * src/mandb.c (cleanup): Split out signal-safe processing ... + (cleanup_sigsafe): ... here. + (main): Call cleanup_sigsafe as well as cleanup. + * src/manp.c (read_config_file): free_config_file cleanup is not + signal-safe. + +Mon Jun 18 08:03:30 BST 2007 Colin Watson + + * lib/xstrsignal.c: Include config.h. + +Mon Jun 18 07:50:56 BST 2007 Colin Watson + + * libdb/db_btree.c (btree_close, btree_flopen, btree_replace, + btree_insert, btree_fetch, btree_exists, btree_findkey, + btree_firstkey, btree_nextkey, btree_nextkeydata): Rename dbf to + db to avoid shadowing a global variable. + * libdb/mydbm.h: Update prototypes and btree macros likewise. + +Sat May 26 10:58:11 BST 2007 Colin Watson + + * src/man.c (gripe_no_name): On reflection, borrowing the error + message from gripe_no_man is clearer if a possible section name + was specified. + * po/man-db.pot, po/*.po: Update. + +Sat May 26 10:53:58 BST 2007 Colin Watson + + * po/man-db.pot: Add to revision control. + +Sat May 26 10:52:01 BST 2007 Colin Watson + + * src/man.c (gripe_no_name): Resolve ambiguous error message when + asking for a nonexistent manual page that might also be a section + name (Debian bug #421481). + * po/*.po: Update. + +Sat May 26 10:46:56 BST 2007 Colin Watson + + * src/man.c (gripe_no_name): Complete renaming of section to sect. + +Fri May 25 21:23:05 BST 2007 Colin Watson + + Add (untested) zh_HK support. Thanks to Alex Lau for advice. + + * src/encodings.c (directory_table): Add zh_HK, defaulting to the + BIG5-HKSCS encoding. + (charset_table): Add BIG5-HKSCS, defaulting to the nippon driver. + (compatible_encodings): Recognise BIG5-HKSCS encoding. + (get_roff_encoding): Add special case for zh_HK.UTF-8 locale. + +Wed Apr 11 04:37:35 BST 2007 Colin Watson + + Add MANPAGER support. Thanks to Faidon Liambotis for the suggestion. + + * src/man.c (main): Support MANPAGER, overriding PAGER. + * man/man1/man.man1 (OPTIONS, ENVIRONMENT): Document MANPAGER. + * docs/NEWS: Document this. + +Thu Apr 5 18:00:00 BST 2007 Colin Watson + + * src/lexgrog.l: Break whatis definitions at .IP, .HP, .RS, and .RE + (thanks to Ori Avtalion for the report). + +Mon Mar 5 10:02:01 GMT 2007 Colin Watson + + * src/man_db.conf.in (MANDATORY_MANPATH): Remove /usr/X11R6/man + (Debian bug #413349). + +Sun Mar 4 10:40:49 GMT 2007 Colin Watson + + * libdb/db_gdbm.c (gdbm_exists): Rename dbf to file. + +Sun Mar 4 10:39:14 GMT 2007 Colin Watson + + * libdb/db_store.c (dbstore): Rename basename to base. + +Sun Mar 4 00:51:30 GMT 2007 Colin Watson + + Eliminate variable and function shadowing. + + * configure.ac (CFLAGS): Add -Wshadow if the compiler is GCC. + + * src/manp.c: Don't declare manpathlist here, as it's never used in + this file. + * src/catman.c, src/man.c, src/mandb.c, src/whatis.c: Declare it + here instead. + + * lib/pipeline.c (pipeline_start): Remove duplicate declarations of + set and oset. + * libdb/db_ver.c (dbver): Merge into ... + (dbver_rd): ... this, eliminating a global variable. + (dbver_rd, dbver_wr): Rename dbf to dbfile. + * src/accessdb.c (main): Don't redeclare dbf locally. + * src/check_mandirs.c (gripe_rwopen_failed): Use global database + rather than passing it as an argument. Update all callers. + * src/man.c (gripe_no_name): Rename section to sect. + (add_roff_line_length): Rename save_cat to save_cat_p. + (make_roff_command): Declare cmd only once. + (make_browser): Rename command to pattern. + (display): Rename pause to prompt. + * src/manp.c (get_manpath): Rename to ... + (get_manpath_from_path): ... this. Update all callers. + (manpath): Rename to ... + (get_manpath): ... this. Update all callers. + (add_system_manpath): Rename system to one_system. + * src/manp.h (manpath): Rename to ... + (get_manpath): ... this. + * src/ult_src.c (ult_hardlink): Rename link to base. + (ult_src): Rename basename to base. + * src/whatis.c (apropos): Rename match to got_match. + (search): Return found rather than setting the global variable + status based on it. + (main): Use search's return value, eliminating a global variable. + * src/zsoelim.l (usage): Rename status to exit_status. + (open_file): Rename decompress to decomp. + +Sat Mar 3 22:35:31 GMT 2007 Colin Watson + + * src/manp.c: Declare tmplist as static. + +Wed Feb 28 22:04:04 GMT 2007 Colin Watson + + * lib/pipeline.c (pipeline_start): Close inputs and outputs from + other active pipelines in all subprocesses. + +Wed Feb 28 21:57:24 GMT 2007 Colin Watson + + * lib/pipeline.c (pipeline_start): Don't ignore SIGPIPE in + subprocesses; this has undesirable consequences in some + situations. + (pipeline_wait): Flatten SIGPIPE exit statuses to zero instead. + +Tue Feb 27 20:58:31 GMT 2007 Colin Watson + + * lib/pipeline.c (pipeline_start): Save previous value of SIGQUIT + such that it gets restored as SIGQUIT, not as SIGINT. + +Wed Feb 14 12:20:28 GMT 2007 Colin Watson + + * m4/man-path-progs.m4: New file with MAN_PATH_PROGS macro. + * configure.ac: Use MAN_PATH_PROGS where reasonable (browser, pager, + nroff, eqn, neqn, tbl, col, vgrind, refer, grap, pic, gzip, + compress, bzip2) to allow overriding the default search for + auxiliary program locations. + * docs/NEWS: Document this. + +Wed Feb 14 10:41:28 GMT 2007 Colin Watson + + * acinclude.m4: Remove and split into ... + * m4/man-ansi-sprintf.m4, m4/man-bdb.m4, m4/man-fnmatch.m4, + m4/man-gnu-nroff.m4, m4/man-pclose.m4, m4/man-strsignal.m4: ... + these new files. + * configure.ac (AC_CONFIG_SRCDIR): Use src/man.c rather than + acinclude.m4. + +Wed Feb 14 10:32:28 GMT 2007 Colin Watson + + * libdb/db_lookup.c (make_content): Restore (size_t) cast in + assertion. + +Wed Feb 14 10:30:52 GMT 2007 Colin Watson + + * libdb/db_gdbm.c (man_gdbm_nextkey): Fix MYDBM_DPTR vs. MYDBM_DSIZE + typo. + +Wed Feb 14 09:52:15 GMT 2007 Colin Watson + + * libdb/db_btree.c (test_insert): Use debug function. + + * libdb/mydbm.h (GDBM, NDBM, BTREE): Add MYDBM_DPTR, MYDBM_SET_DPTR, + and MYDBM_DSIZE accessor macros. + (BTREE): Make datum be a typedef for DBT rather than our own + struct, fixing "dereferencing type-punned pointer will break + strict-aliasing rules" warnings from GCC. Adjust MYDBM_DELETE + definition accordingly. + * libdb/db_btree.c (test_insert, btree_findkey, dbstore, dblookup): + Use MYDBM_DPTR, MYDBM_SET_DPTR, and MYDBM_DSIZE macros instead of + accessing dptr and dsize members directly. + * libdb/db_delete.c (dbdelete): Likewise. + * libdb/db_gdbm.c (parent_sortkey_hash_free, sortkey_compare, + man_gdbm_firstkey, man_gdbm_nextkey, gdbm_exists): Likewise. + * libdb/db_lookup.c (copy_datum, make_multi_key, make_content, + dblookup): Likewise. + * libdb/db_store.c (replace_if_necessary, dbstore): Likewise. + * libdb/db_ver.c (dbver, dbver_wr, dbver_rd): Likewise. + * src/accessdb.c (main): Likewise. + * src/catman.c (add_arg, parse_for_sec): Likewise. + * src/check_mandirs.c (update_db_time, reset_db_time, update_db, + purge_pointers, purge_missing): Likewise. + * src/whatis.c (apropos): Likewise. + + * libdb/db_btree.c (btree_fetch, btree_findkey, dbstore, dblookup): + Make sure that datum structures allocated on the stack are zeroed + properly. + * libdb/db_delete.c (dbdelete): Likewise. + * libdb/db_lookup.c (make_multi_key, make_content, dblookup): + Likewise. + * libdb/db_store.c (dbstore): Likewise. + * libdb/db_ver.c (dbver, dbver_wr): Likewise. + * src/check_mandirs.c (update_db_time, reset_db_time, update_db): + Likewise. + +Tue Feb 13 11:02:08 GMT 2007 Colin Watson + + * zsoelim/README: Rename to ... + * src/README.zsoelim: ... this. + * zsoelim/zsoelim.l: Rename to ... + * src/zsoelim.l: ... this. + * zsoelim/Makefile.in: Remove. + * src/Makefile.in: Build, install, and clean zsoelim. + * GNUmakefile.in: Remove references to zsoelim directory. Distribute + src/README.zsoelim. + * configure.ac: Stop producing zsoelim/Makefile. + * docs/HACKING: Remove description of zsoelim directory. + * .bzrignore: Update ignores. + +Tue Feb 13 10:52:33 GMT 2007 Colin Watson + + * zsoelim/zsoelim.l (yywrap): Remove; use %option noyywrap instead. + * zsoelim/Makefile.in (LDLIBS): zsoelim doesn't need to be linked + with LEXLIB any more. + +Mon Feb 12 18:06:42 GMT 2007 Colin Watson + + * src/Makefile.in (LFLAGS), zsoelim/Makefile.in (LFLAGS), + zsoelim/zsoelim.l: Set options using %option rather than using + command-line options. + +Mon Feb 12 17:52:11 GMT 2007 Colin Watson + + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fi.po, + po/fr.po, po/it.po, po/ja.po, po/pl.po, po/pt_BR.po, po/ro.po, + po/ru.po, po/sv.po, po/vi.po: Update. + +Mon Feb 12 17:44:48 GMT 2007 Colin Watson + + * lib/debug.c: New file for debugging functions. + * include/manconfig.h.in: debug -> debug_level; prototype debug and + debug_error. + * lib/Makefile.in (ALL): Add debug.o. + * Update all emissions of debugging messages to use the new + functions where possible; otherwise, debug -> debug_level. + +Mon Feb 12 13:00:42 GMT 2007 Colin Watson + + * src/mandb.c (main): Change "No databases updated" to "No databases + created" now that we're no longer string-frozen. + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fi.po, + po/fr.po, po/it.po, po/ja.po, po/pl.po, po/pt_BR.po, po/ro.po, + po/ru.po, po/sv.po, po/vi.po: Update. + +Mon Feb 12 12:58:10 GMT 2007 Colin Watson + + * po/POTFILES.in: Add src/descriptions_store.c. + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fi.po, + po/fr.po, po/it.po, po/ja.po, po/pl.po, po/pt_BR.po, po/ro.po, + po/ru.po, po/sv.po, po/vi.po: Update. + +Mon Feb 12 12:42:44 GMT 2007 Colin Watson + + * man/es_ES.88591/man1/man.man1 (OPCIONES), + man/it_IT.88591/man1/man.man1 (OPZIONI), + man/ja_JP.eucJP/man1/man.man1 (オプション): Fix soft-hyphen + declarations to avoid error messages from groff. + +Mon Feb 12 10:35:14 GMT 2007 Colin Watson + + * Version: 2.4.4. + * configure.ac, docs/NEWS, man-db.lsm: Update. + +Mon Feb 12 09:20:09 GMT 2007 Colin Watson + + * man/man1/man.man1 (OPTIONS): Stop claiming that -d does not + display any manual pages (thanks, Dan Jacobson; Debian bug + #340910). + +Mon Feb 12 09:04:17 GMT 2007 Colin Watson + + * src/man.c (main): Treat an empty LANGUAGE environment variable as + equivalent to it being unset. + +Sun Feb 11 10:31:04 GMT 2007 Colin Watson + + * docs/NEWS: Add forgotten item about SIGCHLD handling. + +Sat Feb 3 10:08:03 GMT 2007 Giuseppe Sacco + + * man/it_IT.88591/man1/man.man1: Update translation. + * man/THANKS: Update translator credit. + +Mon Jan 29 10:51:09 GMT 2007 Valéry Perrin + + * man/fr_FR.88591: Add French man page translations. + * .bzrignore: Add ignores under man/fr_FR.88591. + * GNUmakefile.in (nls_man): Add fr_FR.88591. + * man/THANKS: Add translator credit. + +Mon Jan 8 13:31:15 GMT 2007 Colin Watson + + Partial update of tempname module from gnulib. (Once we switch to + automake, it will be possible to import it properly.) + + * m4/tempname.m4: New file. + * configure.ac: Use gl_FUNC_GEN_TEMPNAME. + +Mon Jan 8 13:06:42 GMT 2007 Colin Watson + + * docs/ToDo: Rename to ... + * docs/TODO: ... this for consistency with other projects. + * GNUmakefile.in (_docs), docs/README, docs/HACKING: Update + references. + +Mon Jan 8 12:45:33 GMT 2007 Colin Watson + + * configure.ac (AC_PREREQ): Require autoconf 2.59, for gnulib. + +Mon Jan 8 12:37:12 GMT 2007 Colin Watson + + Update setenv module from gnulib. + + * m4/setenv.m4: New file. + * .bzrignore: Ignore only gettextize-generated files in m4 + directory. + * autogen.sh: Pass '-I m4' option to aclocal. + * configure.ac: Use gt_FUNC_SETENV. + * lib/setenv.c, lib/unsetenv.c: Update. + +Mon Jan 8 12:14:59 GMT 2007 Colin Watson + + * acinclude.m4 (MAN_FUNC_STRSIGNAL): Include for + strsignal. + +Mon Jan 8 12:10:08 GMT 2007 Colin Watson + + * acinclude.m4 (MAN_FUNC_FNMATCH): New macro to check whether + fnmatch supports the FNM_CASEFOLD flag (a GNU extension). + * configure.ac: Use it. + +Mon Jan 8 10:39:24 GMT 2007 Colin Watson + + * lib/xsigaction.c: New file: sigaction with EINTR checking. + * include/manconfig.h.in: Add prototype. + * lib/Makefile.in: Build xsigaction. + * lib/cleanup.c (sighandler, trap_signal, untrap_signal): Use + xsigaction instead of bare sigaction. + * lib/pipeline.c (pipeline_start, pipeline_wait, + pipeline_install_sigchld): Use xsigaction instead of + sigaction-plus-EINTR-check. + +Mon Jan 8 09:55:48 GMT 2007 Colin Watson + + * configure.ac: Rename lynx variable to browser. Check for + www-browser (as on Debian) before lynx. + * include/manconfig.h.in: Rename lynx variable to browser. + +Mon Jan 8 09:15:04 GMT 2007 Colin Watson + + * src/mandb.c (main): If no database changes were necessary, then: + don't bother committing database changes or running straycats; + only exit non-zero if the -c option was given; only emit "No + databases updated" message (should be "No databases created" now) + if the -c option was given but not -q, to help automatic + invocation from man. + +Sun Jan 7 23:54:18 GMT 2007 Colin Watson + + * src/man.c (make_roff_command): Don't try to pass -X or -P-g + options to eqn, only troff (Debian bug #327772). + +Sun Jan 7 21:16:57 GMT 2007 Colin Watson + + * man/man1/man.man1 (SYNOPSIS, OPTIONS): Document -X option (thanks, + Sam Morris; Debian bug #360112). + +Sun Jan 7 20:58:16 GMT 2007 Colin Watson + + Add cross-references to mandb in apropos and whatis documentation + (thanks, Phil Endecott; Debian bug #388755). + + * man/man1/apropos.man1 (DESCRIPTION): Mention that the database is + updated by mandb. + (SEE ALSO): Refer to mandb(8). + * man/man1/whatis.man1 (DESCRIPTION, SEE ALSO): Likewise. + +Sun Jan 7 20:51:27 GMT 2007 Colin Watson + + * src/globbing.c (parse_layout): Actually check upper-cased version + of layout rather than creating it and then ignoring it. + +Sun Jan 7 20:48:58 GMT 2007 Colin Watson + + Fix a slew of memory leaks, including a nasty per-search leak in + apropos (Debian bug #368749). + + * include/manconfig.h.in (ATTRIBUTE_UNUSED): Define to an attribute + marking a variable as unused if using GCC 2.4 or newer. + + * lib/error.c (error): Free program_name before exiting. + * src/accessdb.c (main): Put program_name in allocated memory. + * src/wrapper.c (main): Likewise. + * src/Makefile.in: Link wrapper against libman. + + * libdb/db_gdbm.c (man_gdbm_firstkey): Register cleanup function to + free parent_sortkey_hash on exit. + * src/globbing.c (update_directory_cache): Register cleanup function + to free dirent_hash on exit. + (look_for_file): Register cleanup function to free gbuf on exit. + Move freeing of gbuf before each search to ... + (match_in_directory): ... here. + * src/manp.c (free_config_file): New function. + (read_config_file): Register cleanup function to free + configuration file structures on exit. + + * lib/cleanup.c (do_cleanups): Free the stack after processing it. + * lib/hashtable.c (hash_free): Free ht->hashtab as well. + * libdb/db_lookup.c (free_mandata_elements): Add TODO comment about + strange memory handling. + * src/catman.c (parse_for_sec): Free entry. + (main): Free various variables before exiting. + * src/check_mandirs.c (count_glob_matches): Free info.name. + (purge_missing): Free entry rather than just content.dptr (== + entry.addr). + * src/globbing.c (parse_layout): Free upper_layout. + (match_in_directory): Free pattern_start.pattern in early return + case. + * src/man.c (main): Free various variables before exiting. + * src/mandb.c (finish_up, cleanup, mandb, main): Free various + database file names properly. + (main): Remember to assign the result of getcwd_allocated + somewhere. Free various variables before exiting. + * src/manp.c (add_sections): Free section_list; comment was + incorrect. + (add_nls_manpath): Free temp_locale. + (guess_manpath): Constify path. Free result of get_manpath before + returning. + (get_manpath): Constify path. Free tmplist elements. + (create_pathlist): Free result of xstrndup. + (free_pathlist): New function. + * src/manp.h (free_pathlist): Add prototype. + * src/util.c (mkdbname): Don't allocate mkdbname statically; it's + less confusing just to free it each time. + * src/whatis.c (apropos): Initialise and free info. + (search): Free database. + (main): Free regular expression after each search. Free various + variables before exiting. + +Wed Dec 27 13:34:23 GMT 2006 Colin Watson + + Teach lexgrog front-end about pages with multiple name/description + pairs (Debian bug #342834). + + * src/descriptions.c (parse_descriptions): Allow base_name to be + NULL to suppress ensuring that base_name is in the returned list. + (gripe_bad_store, store_descriptions): Move to ... + * src/descriptions_store.c: ... here. + * src/lexgrog.l (main): Use parse_descriptions to split lg.whatis up + into its component descriptions, and display each on a separate + line. + * src/Makefile.in (mandb, lexgrog): Adjust object lists for the + above. + * docs/NEWS: Document this. + +Tue Dec 26 20:52:50 GMT 2006 Colin Watson + + * src/man.c (local_man_loop): Fail with an error message if argv is + a character or block device, as we may well hang trying to read + from it and it almost certainly isn't what the caller intended + anyway (Debian bug #341706). + +Tue Dec 26 20:11:04 GMT 2006 Colin Watson + + * docs/HACKING (Revision control): New section. + * docs/NEWS: Refer to docs/HACKING for bzr archive location. + +Tue Dec 26 20:04:32 GMT 2006 Colin Watson + + * GNUmakefile.in: Distribute configure.ac and docs/HACKING. + +Tue Dec 26 15:06:06 GMT 2006 Colin Watson + + * Version: 2.4.4-pre1 (for translators). + +Tue Dec 26 15:02:33 GMT 2006 Colin Watson + + * po/*.po: Update. + +Tue Dec 26 14:49:56 GMT 2006 Colin Watson + + * libdb/db_store.c, libdb/db_ver.c: Correct gettext.h inclusions. + +Tue Dec 26 14:47:36 GMT 2006 Colin Watson + + * libdb/Makefile.in, src/Makefile.in: Remove .depend directory on + clean, not distclean. + +Tue Dec 26 14:34:25 GMT 2006 Colin Watson + + * autogen.sh: Upgrade to aclocal 1.10. + +Tue Dec 26 14:27:59 GMT 2006 Colin Watson + + * configure.ac (AM_GNU_GETTEXT_VERSION): Upgrade to gettext 0.15. + * lib/gettext.h: Copy from gettext 0.15. + * lib/README: Mention the above. + * lib/pipeline.c, libdb/db_delete.c, libdb/db_lookup.c, + libdb/db_store.c, libdb/db_ver.c, src/accessdb.c, src/catman.c, + src/check_mandirs.c, src/compression.c, src/convert_name.c, + src/descriptions.c, src/encodings.c, src/fake_security.c, + src/filenames.c, src/globbing.c, src/lexgrog.l, src/lexgrog.l.new, + src/man.c, src/mandb.c, src/manp.c, src/manpath.c, src/security.c, + src/straycats.c, src/ult_src.c, src/version.c, src/whatis.c, + src/wrapper.c, zsoelim/zsoelim.l: Include "gettext.h" rather than + . Make sure not to include before + "gettext.h", for portability to Solaris. + * src/wrapper.c: Drop ENABLE_NLS test, now handled by gettext.h. + +Tue Nov 7 11:00:14 PST 2006 Colin Watson + + * src/man.c (make_browser): Remove unnecessary check for browser + being NULL. + * docs/NEWS: Add CVE identifier. + +Mon Nov 6 09:45:49 PST 2006 Colin Watson + + * configure.ac, include/manconfig.h.in: Only prepend "exec " to + WEB_BROWSER if configure found a web browser. + +Mon Nov 6 09:01:13 PST 2006 Colin Watson + + * src/globbing.c: _GNU_SOURCE is defined throughout now, so don't + redefine it. + +Mon Nov 6 08:40:54 PST 2006 Colin Watson + + * docs/NEWS: Document switch to bzr. + +Mon Nov 6 08:34:57 PST 2006 Colin Watson + + * src/man.c (make_browser): Fix buffer overrun if BROWSER contains + multiple %s expansions. Thanks to Jochen Voß for the report. + * docs/NEWS: Document this. + +Sun Nov 5 23:41:45 PST 2006 Colin Watson + + * configure.ac: Call AC_GNU_SOURCE before AC_PROG_CC, as autoconf + objects otherwise (due to macros called by AM_GNU_GETTEXT). Let's + hope using _GNU_SOURCE for everything doesn't break anything ... + +Sat Nov 4 17:24:27 GMT 2006 Colin Watson + + * GNUmakefile.in, docs/HACKING: Update references to configure.in to + say configure.ac instead. + +Sat Nov 4 17:04:54 GMT 2006 Colin Watson + + * configure.ac: Use AS_HELP_STRING throughout. + (AC_PREREQ): Bump to 2.53. + +Sat Nov 4 16:52:20 GMT 2006 Colin Watson + + * configure.in: Rename to configure.ac. + +Sat Nov 4 16:41:59 GMT 2006 Colin Watson + + * autogen.sh: Force the use of aclocal-1.8; at least 1.4 won't work + correctly. + +Fri Oct 20 12:46:41 BST 2006 Colin Watson + + * tools/config.guess: Update to 2006-07-02. + * tools/config.sub: Update to 2006-09-20. + +Sun Sep 17 09:20:33 BST 2006 Colin Watson + + * lib/pipeline.c (pipeline_start): Ignore SIGPIPE in child processes + (Debian bug #387864). + * docs/NEWS: Document this. + +Thu Aug 10 17:23:03 BST 2006 Colin Watson + + * src/encodings.c (get_default_device): Always use utf8 if preconv + is available. + (get_roff_encoding): Skip CJK UTF-8 hack if preconv is available. + * src/man.c (make_roff_command): Use preconv if available to recode + input even if the encoding is detected by means other than looking + at the preprocessor line. Skip iconv preprocessing in that case. + +Thu Aug 10 17:00:21 BST 2006 Colin Watson + + * src/encodings.c (get_groff_preconv): New function, moved from + src/man.c because other functions here are going to need it. + * src/encodings.h (get_groff_preconv): Prototype it. + * src/man.c (make_roff_command): Use it. + +Wed Aug 9 14:58:50 BST 2006 Colin Watson + + * src/man.c (make_roff_command): Set page_encoding to pp_encoding if + available. Plug a memory leak. + +Wed Aug 9 14:45:13 BST 2006 Colin Watson + + * include/manconfig.h.in (GNUC_PREREQ): Check for __GNUC_MINOR__, + not __GNUC_MINOR. + +Wed Aug 9 14:10:57 BST 2006 Colin Watson + + * src/man.c (make_roff_command): Recognise preprocessor encoding + declarations like "-*- coding: utf8 -*-". Invoke the "preconv" + preprocessor for these if available. + +Mon Jul 3 04:54:13 BST 2006 Colin Watson + + * libdb/db_lookup.c (make_content): Break up dsize calculation + differently for legibility. + +Tue Mar 21 11:08:55 GMT 2006 Colin Watson + + Improve portability to Solaris and other systems without setenv. + + * lib/setenv.c, lib/setenv.h, lib/unsetenv.c: Copied from gnulib + 0.0.20051110-1. + * lib/Makefile.in (ALLSRCS): Add setenv.c and unsetenv.c. + * lib/README: Mention the above. + * configure.in: Check for setenv and unsetenv and use the gnulib + versions if they are unavailable. + * src/man.c, src/whatis.c: Include lib/setenv.h. + +Thu Mar 9 08:08:39 GMT 2006 Daniel Nylander + + * po/sv.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +Wed Feb 22 09:44:02 GMT 2006 Colin Watson + + * lib/pipeline.c (command_new_argstr): Skip "exec" at the start of a + command, to make old configuration files work (Debian bug + #353959). + * docs/NEWS: Document this. + +Mon Feb 20 09:33:18 GMT 2006 Henning Makholm + + * src/lexgrog.l: Add Danish translation of NAME. + +Sun Jan 22 19:02:43 GMT 2006 Clytie Siddall + + * po/vi.po: Update from Translation Project. + * po/LINGUAS: Add vi. + * man/THANKS: Add translator credit. + +Sun Jan 22 18:49:16 GMT 2006 Colin Watson + + * man/man1/man.man1, man/es_ES.88591/man1/man.man1, + man/it_IT.88591/man1/man.man1: Fix mistaken use of .l instead of + .I (thanks, Valéry Perrin). + +Thu Jan 19 10:15:33 GMT 2006 Karl Eichwalder + + * po/de.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +Sat Dec 31 16:30:44 GMT 2005 Colin Watson + + * lib/hashtable.c (hash_free): Update function name in debug + message. + +Sun Dec 18 08:57:01 GMT 2005 Yuri Kozlov + + * src/lexgrog.l: Change encoding of Russian translation of NAME to + KOI8-R. + +Sat Dec 10 17:31:45 CET 2005 Giuseppe Sacco + + * Updated italian translation po/it.po + +Mon Nov 14 11:02:54 GMT 2005 Yuri Kozlov + + * src/lexgrog.l: Add Russian translation of NAME. + +Tue Oct 4 10:34:03 BST 2005 Colin Watson + + * tools/chconfig: Start with "#! /" rather than "#!/", for 4.2BSD. + +Wed Sep 21 10:56:22 BST 2005 Colin Watson + + * lib/pipeline.c (pipeline_wait): Queue SIGCHLD for the whole time + we're collecting child process statuses; we need to keep a careful + count of processes. Forget any previous errno before calling + reap_children. Should fix Debian bug #326488. + +Wed Sep 21 10:47:51 BST 2005 Nicolas Velin + + * po/fr.po: Update from Rosetta. + * man/THANKS: Add translator credit. + +Wed Sep 21 10:36:19 BST 2005 OndÅ™ej Surý + + * po/cs.po: Update from Rosetta. + * man/THANKS: Add translator credit. + +Wed Sep 21 10:33:13 BST 2005 Colin Watson + + * man/THANKS: Recode to UTF-8. + +Wed Sep 21 10:10:12 BST 2005 Colin Watson + + * lib/pipeline.c (pipeline_start, pipeline_wait): Ignore SIGINT and + SIGQUIT in the parent while running subprocesses (Debian bug + #328982). + * docs/NEWS: Document this. + +Wed Sep 21 10:04:42 BST 2005 Colin Watson + + * docs/NEWS: Start 2.4.4. + +Wed Sep 21 09:45:48 BST 2005 Colin Watson + + * configure.in: Substitute basename of config_file as + config_file_basename. + * src/man_db.conf.in: Use @config_file_basename@ in header comment. + +Thu Sep 1 14:10:07 BST 2005 Colin Watson + + * lib/pipeline.c (argstr_get_word): Use an enum for quotemode rather + than magic numbers. + +Thu Sep 1 14:04:29 BST 2005 Colin Watson + + * include/manconfig.h.in (ATTRIBUTE_WARN_UNUSED_RESULT): Define to a + function attribute enabling unused result checking if using GCC + 3.4 or newer. + (xmalloc, xrealloc, strappend): Use it. + +Wed Aug 31 01:23:55 BST 2005 Colin Watson + + * src/encodings.c (directory_table): Add Simplified Chinese -> + GB2312 and Traditional Chinese -> BIG5. + (charset_table): Use the nippon device for BIG5, GB2312, and GBK. + (device_table): Assume that the nippon device is + encoding-agnostic, since it handles several encodings now. + (compatible_encodings, get_roff_encoding): Extend the ja_JP.UTF-8 + hack to cover zh_CN.UTF-8, zh_SG.UTF-8, and zh_TW.UTF-8 too. + +Sun Jul 31 16:34:15 BST 2005 Colin Watson + + * docs/COPYING, docs/COPYING.LIB: Update from www.gnu.org to pick up + the FSF's new address. + * Update all other GPL and LGPL notices with the new address (apart + from those in externally-maintained files). + +Wed Jul 27 11:29:02 BST 2005 Colin Watson + + * src/man.c (gripe_no_man): Don't emit a different message in the + troff case; it's extra translation load and nobody really cares + about the distinction. Avoid splitting up a sentence into two + translatable pieces (Debian bug #320111). + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fi.po, + po/fr.po, po/it.po, po/ja.po, po/pl.po, po/pt_BR.po, po/ro.po, + po/ru.po, po/sv.po: Update with msgmerge. + +Tue Jul 26 00:05:02 BST 2005 Colin Watson + + * src/man.c (make_roff_command): Use 'col -b -p -x' rather than just + 'col -b' when stdout is not a terminal. + +Tue Jul 12 02:08:41 BST 2005 Colin Watson + + * include/manconfig.h.in (ATTRIBUTE_MALLOC): Define to a function + attribute enabling malloc return value checking if using GCC 2.96 + or newer. + (xmalloc, xrealloc, xstrdup, xstrndup): Use it. + +Tue Jul 12 01:59:10 BST 2005 Colin Watson + + * include/manconfig.h.in (GNUC_PREREQ): Helper macro borrowed from + glibc. + (ATTRIBUTE_FORMAT_PRINTF): Define to a function attribute enabling + printf-style format string checking if using GCC 2.0 or newer. + (ATTRIBUTE_SENTINEL): Use GNUC_PREREQ. Use __sentinel__ rather + than sentinel to avoid possible clashes with other macros. + * lib/error.h (error): Add printf format attribute. + * lib/xmalloc.c: Include "error.h" rather than redeclaring error. + +Mon Jul 11 18:12:58 BST 2005 Colin Watson + + * lib/pipeline.c (pipeline_wait): Emit a debugging message. + +Mon Jul 11 14:41:52 BST 2005 Colin Watson + + * include/manconfig.h.in: Define ATTRIBUTE_SENTINEL to a function + attribute enabling sentinel checking if using GCC 4.0 or newer. + (strappend): Use it. + * lib/pipeline.h (command_new_args, command_args, + pipeline_new_commands, pipeline_command_args, pipeline_commands): + Likewise. + +Mon Jul 11 14:38:30 BST 2005 Colin Watson + + * lib/Makefile.in, libdb/Makefile.in, src/Makefile.in, + zsoelim/Makefile.in: Stop using -I-; it's deprecated in GCC 4.0, + and it doesn't seem worth the effort of switching to the -iquote + replacement. + +Mon Jul 11 12:02:57 BST 2005 Colin Watson + + * src/man.c (usage): Fix "gditview" typo (Debian bug #317696). + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fi.po, + po/fr.po, po/it.po, po/ja.po, po/pl.po, po/pt_BR.po, po/ro.po, + po/ru.po, po/sv.po: Unfuzzy all translations. + +Fri Jul 8 13:12:29 BST 2005 Ralph Corderoy + + * src/man.c (display): Drop "Reformatting %s, please wait..." + message; it's been years since processing power was low enough for + this to be relevant. + +Mon Jul 4 00:49:36 BST 2005 Colin Watson + + * GNUmakefile.in (EVERYTHING, ALL): List intl before lib, since + intl/Makefile runs config.status and thus recreates lib/Makefile + after lib has been distcleaned. + +Sun Jul 3 22:14:02 BST 2005 Colin Watson + + * Version: 2.4.3. + * configure.in, docs/NEWS, man-db.lsm: Update. + * man-db.lsm: Correct primary download location. + +Sun Jul 3 20:55:13 BST 2005 Colin Watson + + * configure.in: Define HAVE_GZIP, HAVE_COMPRESS, and HAVE_BZIP2 as + appropriate. + * include/comp_src.h.in: Conditionalise compressor list on + HAVE_GZIP, HAVE_COMPRESS, and HAVE_BZIP2 rather than on GUNZIP, + UNCOMPRESS, and BUNZIP2; if a compressor isn't detected, the + latter will end up as empty strings, not undefined. Thanks to Paul + Slootman (Debian bug #196097). + * docs/NEWS: Document this. + +Sun Jul 3 18:58:14 BST 2005 Colin Watson + + * GNUmakefile.in (__distclean): Remove po/Makevars.template. + +Sun Jul 3 18:11:56 BST 2005 Colin Watson + + * docs/NEWS: List more language support since 2.4.2. + +Sun Jul 3 17:45:18 BST 2005 Colin Watson + + * docs/NEWS: Minor clarification. + +Sun Jul 3 17:41:20 BST 2005 Robert Luberda + + * po/pl.po: Update. + +Sun Jul 3 17:39:14 BST 2005 Yuri Kozlov + + * po/ru.po: Update. + +Tue Jun 21 13:58:37 BST 2005 Jordi Mallach + + * po/ca.po: Update from Translation Project. + * man/THANKS: Update e-mail address. + +Mon Jun 20 14:46:22 BST 2005 Colin Watson + + * tools/config.guess, tools/config.sub: Update to 2005-04-22. + +Fri Jun 10 15:05:53 BST 2005 Colin Watson + + * Version: 2.4.3-pre1 (for translators). + +Fri Jun 10 14:53:52 BST 2005 Colin Watson + + * man/THANKS: Add translator credits for it.po, ja.po, pt_BR.po, and + sv.po. + +Fri Jun 10 14:36:36 BST 2005 Colin Watson + + * po/LINGUAS: Add ro. + * man/THANKS: Add translator credit. + * po/fi.po, po/ro.po: Update with msgmerge. + +Fri Jun 10 14:31:42 BST 2005 Eugen Hoanca + + * po/ro.po: New from Translation Project. + +Fri Jun 10 14:29:17 BST 2005 Jordi Mallach + + * po/ca.po: Update from Translation Project. + +Fri Jun 10 14:22:04 BST 2005 Colin Watson + + * po/fi.po: New, from Lauri Nurmi via the Translation Project. + * po/LINGUAS: Add fi. + * man/THANKS: Add translator credit. + +Mon Jun 6 02:15:07 BST 2005 Colin Watson + + * docs/NEWS: Document various changes since this file was last + updated. + +Sun Jun 5 15:47:10 BST 2005 Jeremy C. Reed + + * configure.in: Add support for db4. Check for db3/db_185.h before + db_185.h. + +Sat Jun 4 12:42:26 BST 2005 Colin Watson + + * docs/manpage.example.mdoc: New file. + +Sat Jun 4 12:23:15 BST 2005 Colin Watson + + * po/ru.po: Update with msgmerge. + +Sat Jun 4 12:21:17 BST 2005 Colin Watson + + * po/ru.po: New, from Yuri Kozlov (Debian bug #268584). + * po/LINGUAS: Add ru. + * man/THANKS: Add translator credit. + +Sat Jun 4 12:17:52 BST 2005 Colin Watson + + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fr.po, + po/it.po, po/ja.po, po/pl.po, po/pt_BR.po, po/sv.po: Update with + msgmerge. + +Sat Jun 4 11:48:58 BST 2005 Colin Watson + + * po/pl.po: Fix typo in Last-Translator e-mail address. + +Sat Jun 4 11:46:13 BST 2005 Colin Watson + + * po/pl.po: New, from Robert Luberda (Debian bug #245057). + * po/LINGUAS: Add pl. + * man/THANKS: Add translator credit. + +Sat Jun 4 10:59:29 BST 2005 Colin Watson + + * lib/getcwdalloc.c, lib/getcwdalloc.h: Fix header comments. + +Sat Jun 4 10:55:47 BST 2005 Colin Watson + + * src/lexgrog.l (MAN_NAME): Terminate NAME section parsing on + encountering a macro definition (Debian bug #275562). + +Wed Jan 5 15:08:06 GMT 2005 Colin Watson + + * src/encodings.c (directory_table): Add Turkish -> ISO-8859-9. + +Sun Dec 12 21:48:04 CET 2004 Colin Watson + + * lib/pipeline.c (pipeline_sigchld): Don't bother saving and + restoring errno if SIGCHLD is being queued. + +Mon Nov 8 09:57:27 GMT 2004 Colin Watson + + * lib/pathsearch.c: New file, containing functions for searching + $PATH. + * lib/pathsearch.h: Prototype pathsearch_executable(). + * lib/Makefile.in: Always compile pathsearch.c. + * src/man.c (find_in_path): Remove; replaced by + pathsearch_executable(). + (gripe_no_man): Use pathsearch_executable() instead of + find_in_path(). + +Mon Nov 8 09:52:02 GMT 2004 Colin Watson + + Get rid of plain getcwd(); this allows getting rid of most uses of + PATH_MAX. + + * lib/getcwdalloc.c: New file, providing an allocating version of + getcwd(). + * lib/getcwdalloc.h: Prototype it. + * lib/Makefile.in: Always compile getcwdalloc.c. + + * src/man.c (main, format_display): Use getcwd_allocated() instead + of getcwd(). + * src/mandb.c (main): Likewise. + * src/manp.c (add_dir_to_path_list): Likewise. + +Mon Nov 8 09:40:07 GMT 2004 Colin Watson + + * lib/hashtable.c (null_hash_free): No-op hash_free_ptr provider, + for convenience. + * lib/hashtable.h (null_hash_free): Prototype it. + +Mon Nov 8 09:36:55 GMT 2004 Colin Watson + + * acinclude.m4: Improve quoting to stop aclocal complaining. Improve + indentation. Get rid of unnecessary changequote(). + +Sun Nov 7 16:07:26 GMT 2004 Colin Watson + + * lib/pipeline.c (pipeline_wait): Close pipeline output before + reaping processes, so that writing processes get SIGPIPE. + +Sun Nov 7 16:05:08 GMT 2004 Colin Watson + + * lib/pipeline.c (pipeline_wait): Fix active process debugging + output to include processes without statuses. + +Sun Nov 7 16:01:26 GMT 2004 Colin Watson + + * src/compression.c (decompress): Invalidate file_fd after closing + it. + +Sun Nov 7 15:31:18 GMT 2004 Colin Watson + + * src/man.c (compare_candidates): Compare extensions' positions in + section_list at the same time as sections, but do the lexical + comparison fallback after comparing ids; this restores the + intended ability to use SECTIONS to move extensions out of order + with respect to their parent sections without breaking the earlier + workaround for Debian bug #204249. + +Thu Jul 22 14:46:30 BST 2004 Colin Watson + + * src/check_mandirs.c (testmandirs): Always scan directory if last + is 0 (i.e. creating) to avoid problems on systems with badly + broken clocks set before the epoch. + +Mon Jun 28 03:56:56 BST 2004 Colin Watson + + * src/man.c (man): Free candidate list after displaying it. + +Mon Jun 28 01:19:45 BST 2004 David Weinehall + + * tools/mkcatdirs: Replace XSIish uses of 'test' with more portable + code. + +Thu Apr 1 05:10:50 BST 2004 Colin Watson + + * src/encodings.c (charset_table): Use the latin1 device for + ISO-8859-15, even though that isn't exactly right. + +Thu Apr 1 04:56:02 BST 2004 Colin Watson + + * src/encodings.c (get_page_encoding, get_standard_output_encoding): + Remove trailing , and @ from locale names. + * src/encodings.h (get_page_encoding, get_standard_output_encoding): + Update prototypes: these no longer return const. + * src/man.c (make_roff_command): Free page_encoding and cat_charset. + +Thu Apr 1 00:18:55 BST 2004 Colin Watson + + * src/man.c (do_extern): Pass only options understood by + apropos/whatis, using the pipeline library (Debian bug #207436). + (main): Make optind global. Install SIGINT and SIGCHLD handlers + earlier. Update do_extern call. + * docs/NEWS: Document this. + +Wed Mar 31 23:40:15 BST 2004 Colin Watson + + * src/man.c (make_roff_command): If stdout isn't a terminal, get rid + of formatting characters using GROFF_NO_SGR=1 and 'col -b' + (thanks, Adam Heath). + * docs/NEWS: Document this. + +Thu Mar 25 19:31:02 GMT 2004 Colin Watson + + * src/whatis.c (apropos): Move warning-silencing code to the bottom + of the function, so that it doesn't interfere with declarations. + +Sun Mar 14 03:52:12 UTC 2004 Giuseppe Sacco + + * Updated italian translation (corrected three fuzzy strings) + +Tue Mar 9 10:25:40 GMT 2004 Colin Watson + + * zsoelim/zsoelim.l: Define debug for the benefit of pipeline.c. + (open_file): Use pipeline library. + +Tue Mar 9 01:54:20 GMT 2004 Colin Watson + + * zsoelim/zsoelim.l: Long-overdue style cleanup per docs/HACKING. No + functional changes. + +Tue Mar 9 00:37:23 GMT 2004 Colin Watson + + Roll out the new pipeline library in most programs. + + * src/compression.c (decompress): Use pipeline library. + * src/fake_security.c (do_system_drop_privs): Likewise. + * src/lexgrog.l (main): Initialize pipeline library. + * src/man.c (checked_popen, gripe_system, checked_system, run_mandb, + format_display_and_save, format_display, display_catman, display): + Use pipeline library. + (add_roff_line_length): Append to a command structure rather than + using strappend. + (main): Initialize pipeline library. + (make_roff_command): Return a constructed pipeline instead of a + malloced string. This plugs various hitherto difficult leaks. Drop + support for changing the line length with groff < 1.18, as the + pipeline library can't handle compound commands in pipelines yet. + (make_browser): Return a constructed pipeline instead of a + statically allocated string. The pipeline construction is very + crude for now. + (make_display_command): Return a constructed pipeline instead of a + malloced string. The htmlout case is strange for now (return NULL + and let format_display sort it out). + (tmp_cat_filename): Handle debug > /dev/null here rather than in + open_cat_stream. Construct the temporary cat filename more + sensibly. Open the temporary file and record its file descriptor. + (open_cat_stream): Return a constructed (and started, if COMP_CAT + is defined) pipeline instead of a stream. This gets rid of a + fixed-size buffer associated with security problems in the past, + although it wasn't a vulnerability in itself. + (close_cat_stream): Clean up pipeline rather than stream. + (format_display): The htmlout case ignores disp_cmd and puts the + display pipeline together itself. + (display): When calling format_display_and_save, assert (disp_cmd) + to make sure we aren't in the htmlout case. + * src/man.h (make_roff_command): Drop unnecessary prototype. + * src/mandb.c (main): Initialize pipeline library. + * src/security.c (do_system_drop_privs): Take a pipeline rather than + a string. + * src/security.h (do_system_drop_privs): Update prototype. + * src/straycats.c (check_for_stray): Use pipeline library. + * src/util.c (do_system): Take a pipeline rather than a string. This + becomes a simple synchronous wrapper around pipeline_start and + pipeline_wait. + * src/whatis.c (use_grep): Use pipeline library. + (main): Initialize pipeline library. + + * include/manconfig.h.in (struct pipeline): Declare opaquely. + (do_system): Update prototype. + + * configure.in: Drop 'exec' from default pager; no longer needed + since the pipeline library obviates the use of /bin/sh -c. + + * docs/NEWS: Document all this. + +Mon Mar 8 16:45:27 GMT 2004 Colin Watson + + * src/compression.c (comp_info): If the new want_stem argument is + set, put a copy of the filename without extension in comp->stem + rather than a strange thing in comp->file. This is closer to what + most callers actually want, and removes a lot of memory management + confusion. + (comp_file): Use comp->stem instead of comp->file (previous usage + matched this semantically). + * include/manconfig.h.in (struct compression): Replace 'file' with + 'stem'. + (comp_info): Update prototype. + + * src/convert_name.c (convert_name): Update comp_info call. + * src/filenames.c (filename_info): Fix misuse of basename. Update + comp_info call. + * src/lexgrog.l (find_name): Update comp_info call. + * src/man.c (local_man_loop): Likewise. + * src/straycats.c (check_for_stray): Likewise. + * src/ult_src.c (ult_src): Likewise. + * zsoelim/zsoelim.l (open_file): Don't set comp->file. Add a + clone-and-hack warning. + +Mon Mar 8 16:07:11 GMT 2004 Colin Watson + + * src/compression.c (decompress): Error out if decompression program + not found, as a temporary workaround for poor detection in + configure. + +Mon Mar 8 15:59:29 GMT 2004 Colin Watson + + * src/manp.c (get_catpath): Use xstrdup and strappend rather than + doing memory management by hand. + +Mon Mar 8 11:28:51 GMT 2004 Colin Watson + + * include/manconfig.h.in: Protect against multiple inclusion. + +Mon Mar 8 11:21:05 GMT 2004 Colin Watson + + * lib/pipeline.c (pipeline_dump): Show caller-supplied input and + output file descriptors. + + * lib/pipeline.c (command_free, pipeline_free): Return safely if + argument is NULL. + * lib/pipeline.h (command_free, pipeline_free): Document NULL + arguments as a safe no-op, like free(). + +Mon Mar 8 09:33:08 GMT 2004 Colin Watson + + * docs/manpage.example (DESCRIPTION): ".SS macros" -> ".SS macro". + +Mon Mar 8 00:16:53 GMT 2004 Colin Watson + + * src/man.c (compare_candidates): Instead of comparing extensions + followed by ids, compare pure sections first, then ids, then + extensions. This works around the worst effects of Debian bug + #204249, in which we have an incorrect whatis ref xterm(1) in + /usr/share/man and a correct real xterm(1x) in /usr/X11R6/man. + +Sun Mar 7 23:55:48 GMT 2004 Colin Watson + + * src/man.c (compare_candidates): Keep searching for more specific + extension matches in section_list even after finding one. + +Wed Jan 28 00:15:00 GMT 2004 Colin Watson + + * src/lexgrog.l: Add a terrifying hack to make '.B "..."' work in + NAME sections. lex is really the wrong tool for this job, I feel. + +Tue Jan 27 23:37:58 GMT 2004 Colin Watson + + * src/lexgrog.l: Attempt to fix problems with groff requests + immediately following .SH NAME. All patterns in the MAN_FILE and + MAN_NAME states need to avoid matching trailing newlines, since + they're needed by other patterns to detect beginning-of-line. + + In order to ignore any excess whitespace following .SH NAME, which + is how this problem got created, introduce a MAN_PRENAME start + condition, which just skips over spacing. Some evil use of yyless + is needed to transition properly to the MAN_NAME start condition + from this without eating trailing newlines. + +Tue Jan 27 21:19:41 GMT 2004 Colin Watson + + * src/Makefile.in (LFLAGS): Add -d if LEXGROG_DEBUG=yes. + +Wed Dec 24 10:29:16 UTC 2003 Giuseppe Sacco + + * src/whatis.c (usage): Fix usage message for --section + * updated italian translation. + +Wed Dec 24 10:10:16 GMT 2003 Colin Watson + + * src/whatis.c (usage): Fix usage message for --section, thanks to + Giuseppe Sacco. + +Wed Dec 24 09:14:19 UTC 2003 Giuseppe Sacco + + * Updated italian translation + +Mon Nov 17 22:50:39 GMT 2003 Colin Watson + + * src/globbing.c (match_in_directory): Oops; stop decrementing + bsearched when it reaches the beginning of the cache->names array, + otherwise patterns beginning with a metacharacter cause a + segfault. (The decrement loop is necessary because bsearch() + doesn't specify which element it returns if there are multiple + matches.) + +Mon Nov 17 05:04:54 GMT 2003 Colin Watson + + Speed up mandb's purging functions further, from about 20 seconds to + about 2 seconds on my i386 laptop, by being more intelligent about + calling fnmatch(). + + * src/globbing.c (cache_compare): New function. + (update_directory_cache): Sort the cache. + (pattern_compare): New function. + (match_in_directory): Rather than scanning the whole cache, start + from a point matching the start of the pattern up to the first + metacharacter, and stop once this no longer matches. + + * src/globbing.c (TEST): Include and define _() so that + the test code compiles. + (main): Set program_name before any calls to usage(). + +Sun Nov 16 21:45:24 GMT 2003 Colin Watson + + * docs/HACKING: Mention the new CTYPE() macro. + +Sun Nov 16 21:29:35 GMT 2003 Colin Watson + + * src/convert_name.c (convert_name): Reorganize and clarify. The + alternate argument was confusing and is now gone. Add a new fsstnd + argument which controls whether the "man1" to "cat1" etc. + conversion is performed. That conversion now makes sure that the + directory name starts with "man" before blithely overwriting it. + Treat comp->file as const, since it will be soon. + * src/convert_name.h (convert_name): Update prototype. + * src/man.c (find_cat_file): New logic. First, check for existing + FSSTND cat files; then check for a cat dir based on the ultimate + source, if different from the original (Debian bug #129575); then + check for a cat dir based on the original man page path. + (display): Drop the !local_man_file case which tries to work out + whether to save a cat, as it's not a problem to try regardless of + whether there's already one in a FSSTND location. + (display_filesystem, display_database): Add extra argument to + find_cat_file() so that it knows the original man page path as + distinct from the ultimate source. + (display_filesystem): Remove debugging output, now in + find_cat_file(). + + * docs/ToDo: Remove entry about cleaning up cat file code, now done. + +Sun Nov 16 19:28:38 GMT 2003 Colin Watson + + Add an option to apropos and whatis to allow specification of a + section to search. + + * src/whatis.c (args, long_options, main): New -s/--section option. + (usage): Document it. + (whatis): Tell dblookup_all() to look in the section named by + --section, if present. + (apropos): If --section was given, check that it matches either + info.sec or info.ext for each page. Use info.whatis rather than + parsing the whatis out manually. + * man/man1/apropos.man1 (SYNOPSIS, OPTIONS): Document --section. + * man/man1/whatis.man1 (SYNOPSIS, OPTIONS): Likewise. + + * docs/NEWS: Start 2.4.3. Document the above. + +Sun Nov 16 18:47:46 GMT 2003 Colin Watson + + * include/manconfig.h.in (CTYPE): New macro to help get + calls right. + * libdb/db_lookup.c (name_to_key): Use it. + * src/globbing.c (parse_layout, look_for_file): Likewise. + * src/man.c (manopt_to_env, main): Likewise. + * src/manp.c (add_to_dirlist): Likewise. + * src/ult_src.c (ult_softlink, test_for_include): Likewise. + * src/whatis.c (lower, match, word_fnmatch): Likewise. + +Sun Nov 16 17:06:29 GMT 2003 Colin Watson + + Style cleanups; no functional changes. + + * src/whatis.c (usage, match, apropos, search, main): Add a space + before the open parenthesis in several function calls. + (apropos): The nesting level has got out of control here. Use a + goto and a 'nextpage' label near the end of the loop instead. + +Sun Nov 16 15:49:12 GMT 2003 Erik Andersen + + * src/straycats.c (check_for_stray): Add missing open brace to + non-HAVE_CANONICALIZE_FILE_NAME case. + +Tue Oct 28 16:24:41 GMT 2003 Colin Watson + + * man/Makefile.in: Create new th* variables with capitalized + variants of program names for .TH lines. + * man/de_DE.88591/man1/*.man1, man/de_DE.88591/man5/*.man5, + man/de_DE.88591/man8/*.man8, man/es_ES.88591/man1/*.man1, + man/es_ES.88591/man5/*.man5, man/es_ES.88591/man8/*.man8, + man/it_IT.88591/man1/*.man1, man/it_IT.88591/man5/*.man5, + man/it_IT.88591/man8/*.man8, man/ja_JP.eucJP/man1/*.man1, + man/ja_JP.eucJP/man5/*.man5, man/ja_JP.eucJP/man8/*.man8, + man/man1/*.man1, man/man5/*.man5, man/man8/*.man8: Capitalize all + page titles in .TH lines. + * man/de_DE.88591/man5/manpath.man5: Fix typo: 'man' => 'manpath'. + +Sun Sep 28 20:11:55 BST 2003 Colin Watson + + * man-db.gnu: Remove. This is licensed under the GFDL, whose + freeness is under serious question. I'm not sure if the FSF + actually have standing to claim copyright over this file in the + first place, but it doesn't need to be in CVS here so I don't feel + like arguing about it. + +Sun Sep 21 02:17:43 BST 2003 Colin Watson + + * lib/pipeline.c (pipeline_start): Dump pipeline in debugging mode. + +Sun Sep 21 02:15:17 BST 2003 Colin Watson + + * docs/NEWS: Add a forgotten entry for 2.4.2. + +Sat Sep 20 18:35:54 BST 2003 Colin Watson + + * src/encodings.c (directory_table): Add Galician -> ISO-8859-1, + Indonesian -> ISO-8859-1, Croatian -> ISO-8859-2, and Slovak -> + ISO-8859-2. + +Sat Sep 20 11:57:58 BST 2003 Colin Watson + + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fr.po, + po/it.po, po/ja.po, po/pt_BR.po, po/sv.po: Update with msgmerge + (po/Makevars changed). + +Sat Sep 20 01:07:24 BST 2003 Colin Watson + + * Version: 2.4.2. + * configure.in, docs/NEWS, man-db.gnu, man-db.lsm: Update. + * man-db.gnu: Suggest libgdbm-dev rather than libdb3-dev. + * man-db.lsm: Suggest GDBM. + +Sat Sep 20 00:11:14 BST 2003 Colin Watson + + * src/man.c (make_roff_command): Don't recode output if an explicit + encoding was specified with -E. + +Sat Sep 20 00:09:03 BST 2003 Colin Watson + + * po/.cvsignore: Add stamp-po. + +Fri Sep 19 22:49:14 BST 2003 Colin Watson + + * acinclude.m4 (MAN_CHECK_BDB): Temporarily add $lib to LIBS for + AC_TRY_LINK, not to DBLIBS; but add it to DBLIBS if the test + succeeds. + * configure.in: Simply set DBLIBS rather than appending to it. + +Fri Sep 19 22:20:07 BST 2003 Colin Watson + + * autogen.sh: Run aclocal after autopoint, in accordance with the + autopoint info documentation. + +Fri Sep 19 22:17:18 BST 2003 Colin Watson + + * configure.in (AM_GNU_GETTEXT_VERSION): Upgrade to gettext 0.12.1. + * po/Makevars (MSGID_BUGS_ADDRESS): Set to me. + * po/.cvsignore: Add Makevars.template. + +Fri Sep 19 00:48:07 BST 2003 Colin Watson + + * src/lexgrog.l (MAN_FILE): Accept blank lines immediately following + ".SH NAME". + +Fri Sep 19 00:06:02 BST 2003 Colin Watson + + * man/man8/mandb.man8 (OPTIONS): Improve --filename wording a bit. + +Wed Sep 17 07:17:22 BST 2003 Colin Watson + + Fix case where a page explicitly encoded in UTF-8 has to be recoded + down to a non-ISO-8859-1 legacy encoding for processing by groff and + then back up to UTF-8 for display. + + * src/encodings.c (get_page_encoding): New function, renamed from + get_source_encoding. + (get_source_encoding): Return only the canonical source encoding, + not any explicit encoding in the directory name. This allows us to + take account of differing explicit encoding and canonical encoding + of pages for the purposes of working out which device to use. + (get_roff_encoding): New source_encoding argument, now returned + instead of NULL. + (get_default_device): Pass source_encoding to get_roff_encoding(). + (compatible_encodings): The roff encoding can no longer be NULL. + * src/encodings.h (get_page_encoding): Add prototype. + (get_roff_encoding): Update prototype. + * src/man.c (make_roff_command): Call get_page_encoding(), and + recode from that to roff_encoding, not from source_encoding to + roff_encoding. Pass source_encoding to get_roff_encoding(). + roff_encoding can no longer be NULL. + +Tue Sep 16 22:53:36 BST 2003 Colin Watson + + Purge database entries corresponding to removed stray cat pages. + + * src/check_mandirs.c (purge_normal, purge_whatis): Add TODO notes + for systems where the cat extension differs from the man + extension. + (purge_whatis): Rename manpath to path. New cat argument, passed + through to look_for_file(). + (purge_missing): New catpath argument, passed to look_for_file() + and purge_whatis() in the STRAY_CAT and WHATIS_CAT cases, which + are now handled. + * src/check_mandirs.h (purge_missing): Update prototype. + * src/mandb.c (main): Pass catpath to purge_missing(). + * docs/NEWS: Document this. + +Tue Sep 16 22:37:33 BST 2003 Colin Watson + + Work around the fact that GDBM's firstkey/nextkey interface doesn't + return ordered results. + + * libdb/db_gdbm.c (man_gdbm_open_wrapper): New function. Wraps the + return value from gdbm_open() in a structure that remembers the + file name. + (parent_sortkey_hash_free, sortkey_hash_free): New functions to + free hashtables used here. + (sortkey_compare): New comparison function for qsort(). + (man_gdbm_firstkey): New function. Retrieve all keys using + gdbm_firstkey() and gdbm_nextkey() in advance, sort them into an + ordered hashtable, remember that hashtable for later, and return + the first key. + (man_gdbm_nextkey): New function. Find the previously remembered + ordered hashtable and return the next element from it. + (man_gdbm_close): New function. Clean up remembered data. + * libdb/db_lookup.c (copy_datum): Define even if using GDBM. + (gripe_lock): Explain why this isn't used for GDBM. + * libdb/mydbm.h (man_gdbm_wrapper): New type. + (man_gdbm_open_wrapper, man_gdbm_firstkey, man_gdbm_nextkey, + man_gdbm_close): Add prototypes. + (MYDBM_FILE): Change to man_gdbm_wrapper for GDBM. Adjust all + other MYDBM_* macros to cope with this and use man_gdbm_* + functions where necessary. + (copy_datum): Declare for all database types. Remove __inline__. + * docs/NEWS: Document this. + +Tue Sep 16 01:44:59 BST 2003 Colin Watson + + * src/accessdb.c (main): Free each key after listing it rather than + just leaking it. + +Mon Sep 15 23:45:33 BST 2003 Byrial Ole Jensen + + * po/da.po: Update from Translation Project. + +Mon Sep 15 23:29:33 BST 2003 Colin Watson + + * configure.in: Add --enable-mb-groff option, which defines + MULTIBYTE_GROFF for src/encodings.c. + * docs/NEWS: Document this. + +Mon Sep 15 01:23:00 BST 2003 Colin Watson + + * po/it.po: msgfmt doesn't like "charset=iso8859-1". Use + "charset=iso-8859-1" instead. + +Sun Sep 14 17:48:38 BST 2003 Colin Watson + + * src/encodings.c (get_source_encoding): If the language directory + is unknown (e.g. 'man -l'), guess based on the locale before + falling back to a default. + (get_standard_output_encoding): Likewise. + +Sun Sep 14 16:58:34 BST 2003 Colin Watson + + * src/encodings.c (get_source_encoding): Assume ISO-8859-1 source + encoding if it's unknown (e.g. 'man -l'). + (get_default_device): source_encoding can no longer be NULL. + * src/man.c (make_roff_command): Likewise. + +Sun Sep 14 16:45:43 BST 2003 Colin Watson + + * man/man1/man.man1 (EXAMPLES, ENVIRONMENT, HISTORY): Change a few + stray hyphens to dashes. + +Sun Sep 14 16:37:56 BST 2003 Colin Watson + + * src/encodings.c (get_source_encoding, + get_standard_output_encoding, get_default_device, + get_roff_encoding, get_output_encoding, get_less_charset): + Simplify using new table element struct types. + +Sun Sep 14 16:24:00 BST 2003 Colin Watson + + Make locales like ru_RU.UTF-8 that need the ascii8 device but UTF-8 + output work. This involves a good deal of restructuring. + + * src/encodings.c (directory_table): Remove a completed TODO + comment. + (directory_table, charset_table, device_table): Name array element + struct types in order to abbreviate code later. + (device_table): Split less_charset members out into a new table, + less_charset_table. They really depend on the locale charset, but + aren't quite appropriate for charset_table. Use "iso8859" rather + than "latin1", and add KOI8-R. + (device_table): Add output_encoding member, which is almost the + inverse of charset_table but slightly different for ascii8. + (compatible_encodings): New function to figure out if a source + encoding and a roff encoding are compatible. + (get_default_device): Take new source_encoding argument so that we + can make ru_RU.UTF-8 use the ascii8 device and an iconv pipe + rather than utf8 directly. Drop through to the fallback default + device if none of the predefined entries in charset_table are + compatible when considering the source encoding. + (get_roff_encoding): Split LESSCHARSET handling out into a new + function ... + (get_less_charset): ... here. The caller is expected to set + environment variables rather than having it done by the library. + (get_output_encoding): New function, returning the output encoding + produced by a device. + * src/encodings.h (get_default_device): Update prototype. + (get_output_encoding, get_less_charset): Add prototypes. + * src/man.c (make_roff_command): Update calls to encoding library + for these changes. + +Sun Sep 7 23:10:01 BST 2003 Colin Watson + + Fix decision about whether a given encoding is safe to save as a cat + page. + + * src/encodings.c (directory_table): Add standard_output_encoding + member, used to set the default encoding for cat pages. + (fallback_locale_charset): Remove. + (get_standard_output_encoding): New function. + (get_locale_charset): New function, split out in modified form + from get_default_device(). + (get_default_device): Take a character set as input rather than a + locale. + * src/encodings.h (get_standard_output_encoding, + get_locale_charset): Add prototypes. + (get_default_device): Update prototype. + * src/man.c (make_roff_command): Instead of comparing devices, test + that the default character set for this manual hierarchy is being + used, and don't save cat pages if it isn't. + +Sun Sep 7 11:33:09 +0200 2003 Giuseppe Sacco + + * po/it.po: changed the header of the po file correcting the + charset and the transfer encoding. + +Sat Sep 6 11:53:06 BST 2003 Colin Watson + + * src/encodings.c (get_source_encoding): Implement encodings in + manual hierarchy directory names. Include a mini-rant about the + bizarre specification for these in FHS 2.1, which I've declined to + implement for now. + +Sat Sep 6 11:28:46 BST 2003 Colin Watson + + * src/check_mandirs.c (purge_missing): Call MYDBM_REORG() after + deleting entries. Currently only useful for gdbm. + +Sat Sep 6 00:23:03 BST 2003 Colin Watson + + * acinclude.m4 (MAN_CHECK_BDB): Append to DBLIBS rather than LIBS. + * configure.in: Likewise for gdbm and ndbm tests. Make DBLIBS an + output variable. + * src/Makefile.in: Link only the necessary programs with the + database library. + +Sat Sep 6 00:15:37 BST 2003 Colin Watson + + * libdb/db_lookup.c (make_content): Cast cont.dsize to size_t when + comparing it with the return value of strlen(). Avoids warning + when building with gdbm. + +Thu Sep 4 20:22:21 BST 2003 Christian Rose + + * po/sv.po: Update from Translation Project. + +Fri Aug 29 17:46:40 BST 2003 Michael Piefel + + * po/de.po: Update from Translation Project. + +Fri Aug 29 17:42:15 BST 2003 Giuseppe Sacco + + * po/it.po: Updated after the revision in tp@linux.it. + +Thu Aug 28 11:19:21 BST 2003 Christian Rose + + * po/sv.po: Update from Translation Project. + +Thu Aug 28 00:45:50 BST 2003 Jordi Mallach + + * po/ca.po: Update from Translation Project. + +Thu Aug 28 00:43:33 BST 2003 Christian Rose + + * po/sv.po: Update from Translation Project. + +Thu Aug 28 00:40:09 BST 2003 Colin Watson + + * lib/pipeline.c (pipeline_start): Change "couldn't exec %s" to + "can't execute %s" in line with src/man.c, to make translators' + lives easier. + (pipeline_wait): Separate "%s: %s%s" into two translatable + strings: the "(core dumped)" portion should definitely be + translated. + * src/accessdb.c (usage): Clarify "man_database" to "(The) man + database". + +Thu Aug 28 00:18:46 BST 2003 Colin Watson + + * src/globbing.c (usage): Expand "sec" to "section". + +Wed Aug 27 00:50:07 BST 2003 Giuseppe Sacco + + * po/it.po: Remove all fuzzy translations and insert missed ones. + Now this translation will be reviewed by the Italian translation + project for proofreading. + +Tue Aug 26 20:16:23 BST 2003 Colin Watson + + * Version: 2.4.2-pre1 (for translators). + * docs/NEWS: Mention pipeline library. + +Sat Aug 16 14:07:46 BST 2003 Colin Watson + + * src/lexgrog.l (find_name): Report a sensible error if file is a + directory. + +Fri Aug 15 18:11:06 BST 2003 Colin Watson + + * src/check_mandirs.c (test_manfile): file is const. + * src/check_mandirs.h (test_manfile): Update prototype. + * src/mandb.c (update_one_file): filename is const. + +Fri Aug 15 18:05:37 BST 2003 Colin Watson + + * include/manconfig.h.in: Remove incorrect prototype of basename() + which was hiding several bugs. + * configure.in: Check for . + * lib/pipeline.c, src/accessdb.c, src/catman.c, src/check_mandirs.c, + src/filenames.c, src/lexgrog.l, src/man.c, src/mandb.c, + src/manpath.c, src/straycats.c, src/whatis.c, zsoelim/zsoelim.l: + Include instead of relying on basename() prototype in + manconfig.h. + * src/check_mandirs.c (test_manfile), src/man.c (local_man_loop), + src/straycats.c (check_for_stray): Copy strings before calling + basename() on them. + +Fri Aug 15 00:16:13 BST 2003 Colin Watson + + * src/ult_src.c (ult_hardlink): Return a newly allocated string + rather than messily copying over an existing one (and possibly + corrupting the malloc arena). link and dir are now allocated + rather than being declared as arrays. + (ult_src): Update call to ult_hardlink(). Return 'const char *' to + make sure callers aren't messing about with our memory. + * src/ult_src.h (ult_src): Update prototype. + * src/check_mandirs.c (test_mandirs): ult is const. + * src/lexgrog.l (main): file is const. + * src/man.c (try_section): ult is const. + (display_filesystem, display_database): man_file is const. + +Sat Aug 9 21:30:16 BST 2003 Colin Watson + + * po/POTFILES.in: Add lib/pipeline.c, src/descriptions.c, + src/filenames.c, and src/globbing.c. + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fr.po, + po/it.po, po/ja.po, po/pt_BR.po, po/sv.po: Update with msgmerge. + +Sat Aug 9 18:28:01 BST 2003 Colin Watson + + Replace the old "wait() for one child at a time" approach with a + SIGCHLD-handling edifice that collects children's exit statuses as + they die. + + * lib/pipeline.c (pipeline_new): Initialize statuses. + (pipeline_join): Set statuses to NULL in joined pipeline. + (pipeline_join, pipeline_get_infile, pipeline_get_outfile, + pipeline_start, pipeline_wait): Assert that statuses field is NULL + or non-NULL as appropriate. + (pipeline_free): Free statuses if necessary. + + (pipeline_start): Add p to a new active_pipelines array, to be + used while reaping children. Initialize statuses elements to -1. + Block SIGCHLD while forking children. + (reap_children): New function. Delivers collected exit statuses + into statuses fields of entries in active_pipelines. + (pipeline_wait): Rather than wait()ing manually here, check + whether any statuses have been picked up by the SIGCHLD handler, + and if not call reap_children(). Remove now-obsolete TODO comment. + (pipeline_sigchld): New function, the SIGCHLD handler. + (pipeline_install_sigchld): New function, to be called once per + program. + + (pipeline_start, pipeline_wait): Add minimal debugging + information. + + * lib/pipeline.h: Prototype new functions. + (struct pipeline): New statuses member. + +Sat Aug 9 17:00:12 BST 2003 Colin Watson + + * lib/pipeline.c (command_dup): Copy cmd->nice. + (pipeline_command): Correct condition for growing commands array. + +Mon Aug 4 20:44:16 BST 2003 Colin Watson + + * man/man1/man.man1 (HISTORY): Rearrange text to avoid having + "Wilf." at the end of a line, since groff thinks that's the end of + a sentence and adjusts spacing accordingly. (Alternatively, I + could have used \&.) + +Mon Aug 4 19:35:26 BST 2003 Colin Watson + + * lib/pipeline.c (command_dup): Terminate argv with a NULL. + (command_dup, command_arg): Assert that argc < argv_max after + changing either. + +Mon Aug 4 19:30:22 BST 2003 Colin Watson + + * lib/pipeline.c (pipeline_dump): New function to dump a printable + representation of a pipeline to a stream. + (pipeline_tostring): Likewise, but to a newly allocated string. + * lib/pipeline.h: Prototype these. + +Mon Aug 4 12:03:38 BST 2003 Colin Watson + + * lib/pipeline.c (argstr_get_word): Plug some memory leaks. + +Mon Aug 4 01:05:12 BST 2003 Colin Watson + + * lib/pipeline.c (pipeline_wait): The return value was a bit + groff-specific. Now just return the status of the last command in + the pipeline, as reported by wait(). + +Mon Aug 4 00:31:44 BST 2003 Colin Watson + + Add support for getting stdio streams for input and output. Needs + library support because pipeline_wait() needs to know to close the + stream rather than the underlying file descriptor. + + * lib/pipeline.h (struct pipeline): New infile and outfile members. + (pipeline_get_infile, pipeline_get_outfile): Add prototypes. + * lib/pipeline.c (pipeline_new): Initialize infile and outfile. + (pipeline_join): Likewise. + (pipeline_get_infile, pipeline_get_outfile): New functions. + (pipeline_wait): Check for infile and outfile and fclose() them in + preference to close()ing infd and outfd. Check for errors on + close(). + +Sun Aug 3 23:59:18 BST 2003 Colin Watson + + * lib/pipeline.c (pipeline_start): Use dup2() instead of close() + then dup(). + +Sun Aug 3 23:52:14 BST 2003 Colin Watson + + infd and outfd should now only be set by pipeline_start(). Positive + values in want_in and want_out now indicate caller-supplied file + descriptors, while negative values indicate a request for + pipeline_start() to create a pipe. + + * lib/pipeline.h (struct pipeline): Document this. + * lib/pipeline.c (pipeline_start): Implement it. Caller-supplied + input and output file descriptors previously didn't work properly. + (pipeline_wait): Update TODO comment. + +Sun Aug 3 21:07:46 BST 2003 Colin Watson + + * lib/pipeline.h (struct command): New 'nice' member. + * lib/pipeline.c (command_new): Initialize nice. + (pipeline_start): Change child process priority if nice is set. + +Sun Aug 3 20:50:35 BST 2003 Colin Watson + + * lib/pipeline.c (pipeline_start): Pop all cleanups in child. + +Sun Aug 3 20:47:24 BST 2003 Colin Watson + + * lib/pipeline.c (argstr_get_word, command_new_argstr, + command_argstr, pipeline_command_argstr): New functions to handle + constructing commands from shell-quoted strings, such as those + found in man-db configuration files. They deliberately handle only + a safe subset of shell syntax. + * lib/pipeline.h: Prototype command_new_argstr(), command_argstr(), + and pipeline_command_argstr(). + +Sun Aug 3 19:09:59 BST 2003 Colin Watson + + * lib/pipeline.c (command_dup): New function to duplicate a command. + (pipeline_join): New function to join two pipelines together. + * lib/pipeline.h: Prototype these. + +Sun Aug 3 18:00:59 BST 2003 Colin Watson + + * lib/pipeline.h (struct pipeline): The writeto, readfrom, writefd, + and readfd names turn out to be confusing in calling code. Rename + to want_in, want_out, infd, and outfd respectively. + * lib/pipeline.c (pipeline_new, pipeline_start, pipeline_wait): Use + new names. + +Sun Aug 3 16:35:24 BST 2003 Colin Watson + + Add support in pipeline library for writing input to or reading + output from the whole pipeline. + + * lib/pipeline.c (pipeline_new): Initialize writeto, readfrom, + writefd, and readfd. + (pipeline_start): Create extra pipes as necessary. + (pipeline_wait): Expand TODO comment. Close file descriptors from + extra pipes if necessary. + * lib/pipeline.h (struct pipeline): Add writeto, readfrom, writefd, + and readfd. + +Sun Aug 3 11:15:17 BST 2003 Colin Watson + + * lib/pipeline.c: New pipeline library, adapted from that in groff. + The interface isn't complete yet; in particular, it can't be a + replacement for popen() at the moment. + * lib/pipeline.h: New file with pipeline library interface. + * lib/Makefile.in (ALLSRCS, ALL): Build pipeline. + +Sun Aug 3 11:09:07 BST 2003 Colin Watson + + * acinclude.m4 (MAN_FUNC_STRSIGNAL): New macro to check for the GNU + extension strsignal(). + * configure.in: Use it. + * lib/xstrsignal.c: New file, wrapping strsignal() or sys_siglist + depending on what's available (and with a saner return type than + strsignal()). + * lib/Makefile.in (ALLSRCS, XOBJS): Build xstrsignal. + * include/manconfig.h.in (xstrsignal): Add prototype. + +Sun Aug 3 10:57:55 BST 2003 Colin Watson + + * include/comp_src.h.in: Protect against multiple inclusions. + +Sat Aug 2 19:32:04 BST 2003 Colin Watson + + * docs/NEWS: Document the recent security fixes. + +Sat Aug 2 12:31:24 BST 2003 Colin Watson + + * lib/error.c (error_print_progname): Use a proper prototype. + +Sat Aug 2 01:23:08 BST 2003 Colin Watson + + * tools/checkman: Tolerate spaces in NAME sections, since they occur + in practice and confused checkman before this. Prompted by a + question from James B. Hiller. + +Fri Aug 1 22:06:33 BST 2003 Colin Watson + + Fix vulnerability due to over-permissiveness of DEFINE directive. + + * src/manp.c (DEFINE_USER): New list flag. + (get_def): Note that this must not return DEFINEs set in + ~/.manpath. + (get_def_user): New function, which may return DEFINEs set in + ~/.manpath. + (add_def): Use DEFINE or DEFINE_USER depending on context. + (add_to_dirlist): Update call to add_def(). + * src/manp.h (get_def_user): Add prototype. + + * src/man.c (main): pager and cat are safe for the user to define. + (make_display_command): cat, tr, and decompressor are safe. + * src/straycats.c (check_for_stray): col and decompressor are safe. + * src/whatis.c (use_grep): whatis_grep_flags, + apropos_regex_grep_flags, apropos_grep_flags, and grep are safe. + +Fri Aug 1 01:32:37 BST 2003 Colin Watson + + * src/man.c (main): Minor whitespace cleanups. + +Fri Aug 1 01:05:42 BST 2003 Colin Watson + + * src/manp.c (mkcatdirs): Allocate manname and catname dynamically. + +Wed Jul 30 22:28:13 BST 2003 Colin Watson + + Fix vulnerability 4 posted by Vade 79 on + BugTraq, Message-ID: + <20030729210308.15518.qmail@www.securityfocus.com>. This fix is just + a stopgap measure for now; proper list handling will be added later. + + * src/manp.c (gripe_overlong_list): New function. + (add_dir_to_list): Die gracefully if too many list entries are + added. + (add_dir_to_path_list): Likewise. Take an extra argument for the + head of the list so that we can spot this efficiently. + (create_pathlist): Update calls to add_dir_to_path_list(). + +Wed Jul 30 22:15:16 BST 2003 Colin Watson + + * src/manp.c (gripe_reading_mp_config): This is a fatal error, so + shouldn't be conditional on quiet. + +Wed Jul 30 20:48:57 BST 2003 Colin Watson + + Fix vulnerability 1 posted by Vade 79 on + BugTraq, Message-ID: + <20030729210308.15518.qmail@www.securityfocus.com>. + + * src/manp.c (add_to_dirlist): Limit all sscanf() calls to the + appropriate buffer size. Leave a TODO to say that a replacement + that allocates its own memory would be welcome. + +Wed Jul 30 20:38:40 BST 2003 Colin Watson + + Fix vulnerabilities 2 and 3 posted by Vade 79 + on BugTraq, Message-ID: + <20030729210308.15518.qmail@www.securityfocus.com>. + + * src/ult_src.c (ult_softlink): Return a newly allocated string + rather than copying into fullpath. + (test_for_include): Return a newly allocated string rather than + copying into rel (which was a pointer into part of basename in + ult_src(), and wasn't reallocated in the event that the .so text + was too large). + (ult_src): Allocate basename dynamically rather than using a + static buffer. relative is no longer needed. Update for changes in + ult_softlink() and test_for_include(). + +Wed Jul 30 12:33:25 BST 2003 Colin Watson + + * src/man.c (close_cat_stream): The unlink(tmp_cat_file) cleanup is + only pushed if (!debug), so apply the same condition to popping + it. + +Wed Jul 30 12:21:20 BST 2003 Colin Watson + + * src/descriptions.c (parse_descriptions): Revert this part of + xstrdup(NULL) change from 28 April 2003; head->whatis is undefined + if the else branch was taken. + +Wed Jul 30 10:40:06 BST 2003 Colin Watson + + * src/man.c (find_in_path): Avoid leaking filename for each PATH + element. + +Wed Jul 30 10:36:22 BST 2003 Colin Watson + + * src/compression.c (decompress): Don't free command until after + printing the error message that includes it. + +Wed Jul 30 10:23:50 BST 2003 Colin Watson + + * src/mandb.c (main): Return non-zero with an error message if no + databases were updated. Required so that man knows not to call + mandb over and over again. + +Sat Jun 28 01:26:55 BST 2003 Colin Watson + + * man/it_IT.88591/man1/apropos.man1: Use %date% rather than + %date_it% (which the build system no longer supports). + +Sat Jun 28 00:23:02 BST 2003 Colin Watson + + * man/man1/man.man1: Clarify section 3 as "program libraries" rather + than "system libraries". + +Tue May 6 00:50:25 CEST 2003 Giuseppe Sacco + + * Updated the apropos italian man page. + +Mon May 5 19:47:07 BST 2003 Colin Watson + + * src/man.c (set_term, get_term, store_line_length): Use the + fileno() of stdin and stdout respectively instead of literal 0 and + 1. + * src/ult_src.c (ult_src): Use STRNEQ() instead of strncmp(). + +Mon May 5 18:35:02 BST 2003 Colin Watson + + * src/encodings.c (directory_table): Add Czech -> ISO-8859-2. + +Thu May 1 19:12:54 BST 2003 Colin Watson + + * configure.in (CFLAGS): Add -Wpointer-arith and -Wstrict-prototypes + for gcc. + + * src/man.h: Move prototype from convert_name.c to ... + * src/convert_name.h: ... here (new file). + * src/convert_name.c: Include "convert_name.h". Add some TODO + comments. + * src/man.c: Include "convert_name.h". + + * lib/error.c: Include "error.h". Prototype strerror() fully. + * lib/tempfile.c: Include "manconfig.h" instead of prototyping + strappend() and xstrdup(). Prototype path_search() fully. + * lib/xmalloc.c: Remove most K&R compatibility, since it's not + really supported elsewhere in man-db. + * src/globbing.c: Include "globbing.h". + (match_in_directory): Add static. + * src/man.c (set_term, get_term): Add static. + (int_handler): Move above main(), and add static. + (main): Remove int_handler() prototype. + (make_roff_command, format_display_and_save): Prototype + old_handler fully. + (open_cat_stream, display_catman): Cast to cleanup_fun rather than + to an incomplete prototype. + * src/manp.c (guess_manpath): Add static. + * src/security.c (gripe_set_euid): Prototype fully. + * src/ult_src.c (realpath): Move prototype to the non-STDC_HEADERS + case. + + * src/lexgrog.l: Add '%option warn'. + +Thu May 1 17:39:55 BST 2003 Colin Watson + + * configure.in (CFLAGS): Add -W for gcc. + + * lib/hashtable.c (hash): Change array index type to size_t. + * src/globbing.c (dirent_hash_free, match_in_directory): Likewise. + + * src/check_mandirs.c (purge_pointers): Remove unused manpath + argument. + * src/check_mandirs.h (purge_pointers): Update prototype. + * src/mandb.c (update_one_file): Update call to purge_pointers(). + + * src/catman.c (catman): Remove unused arg_no argument. + (do_catman): Update call to catman(). + * src/man.c (make_roff_command): dir is unused except #ifdef + ALT_EXT_FORMAT. + * src/mandb.c (cleanup): dummy is unused. + * src/ult_src.c (ult_hardlink): Change type of inode to ino_t. + (ult_softlink): mantree is unused. + (ult_src): Update call to ult_softlink(). + * src/whatis.c (apropos): lowpage is unused except #ifdef APROPOS. + * src/wrapper.c (main): argc is unused. + +Thu May 1 16:52:44 BST 2003 Colin Watson + + Remove all assumptions that string literals have type 'char *' + rather than 'const char *'. + + * configure.in (CFLAGS): Add -Wwrite-strings for gcc. + + * lib/tempfile.c (xstrdup): First argument is const. + (path_search): Return 'const char *'. + (create_tempfile, create_tempdir): Copy return value of + path_search() right away rather than after checking for NULL. + + * libdb/db_ver.c (dbver): Take a private copy of VER_KEY. + (dbver_wr): Take private copies of VER_KEY and VER_ID. + + * src/accessdb.c (cat_root): Add const. + * src/catman.c (parse_for_sec): Remove __inline__; add const to both + arguments. Take private copies of "man" and the basic options. + (main): Copy "C" for locale. Make sections etc. 'const char **', + since STD_SECTIONS is an array of 'const char *'. + * src/check_mandirs.c (update_db_time, reset_db_time, update_db): + Take a private copy of KEY. + * src/filenames.c (make_filename): Make type const. + * src/filenames.h (make_filename): Update prototype. + * src/globbing.c (extension, mandir_layout): Add const. + * src/lexgrog.l (fname): Add const. + (find_name): Make filename const. + (main): Set program_name here from argv[0] rather than from a + string literal. + * include/manconfig.h.in (find_name): Update prototype. + * src/man.c (lang_dir): Add static. Copy string literals into ld. + Use xstrndup() rather than copying and then inserting '\0'. + (extension, alt_system_name, section_list, preprocessors, pager, + locale, std_sections, external, gxditview, html_pager): Add const. + (add_roff_line_length): First argument is const. Return a copy of + it if necessary. + (gripe_no_man): Copy external before passing it to basename(). + (main): Copy "C" for internal_locale. Reorganize locale + reinitialization slightly so that locale can be const. + (man_getopt): Set 'const char *' and 'char *' variables to NULL + separately. + (is_section, compare_candidates, man): Use a 'const char **' to + iterate through section_list. + (make_roff_command): Remove __inline__. Take a copy of "" for dev + so that dev is always allocated memory. Handle filter in a more + const-safe way (although there's still a memory leak). + (get_section_list): Remove __inline__. Return 'const char **'. + * src/man.h (get_section_list): Update prototype. + * src/manp.c (get_from_list): Make return value and first argument + const. + (get_def): Make return value and both arguments const. + (get_sections): Return const. + (cat_manpath): Make path and catdir const. + * src/manp.h (get_def, get_sections): Update prototypes. + * src/manpath.c (main): Make alt_system const. + * src/whatis.c (use_grep): Make flags and anchor const. + (main): Make manp and alt_systems const. Copy "C" for locale. + * zsoelim/zsoelim.l (main): Copy argv[0] basename for program_name, + as basename()'s return value may not be long-lived. Copy "-" for + so_name[0]. + + * src/mandb.c (main): Don't bother remembering the return value of + setlocale(). + * src/manpath.c (main): Likewise. + +Mon Apr 28 15:11:28 BST 2003 Colin Watson + + * src/catman.c (main): Don't guard xstrdup() from NULL input, as it + checks itself. + * src/check_mandirs.c (test_manfile): Likewise. + * src/descriptions.c (parse_descriptions): Likewise. + * src/mandb.c (main): Likewise. + * src/whatis.c (main): Likewise. + +Mon Apr 28 09:06:28 BST 2003 Colin Watson + + Introduce a readdir() cache, which substantially speeds up mandb's + purging functions (from 2 minutes to under 45 seconds on my laptop, + and from about 280000 to about 13500 system calls). + + * src/globbing.c (dirent_hash_free, update_directory_cache): New + functions. + (match_in_directory): Use update_directory_cache() rather than + reading the directory on every call. + * docs/NEWS: Document this. + +Mon Apr 28 00:51:11 BST 2003 Colin Watson + + * lib/hashtable.c (hash_lookup): Return the definition rather than + the hash entry structure. This turns out to be a lot more useful. + * lib/hashtable.h (hash_lookup): Update prototype. + * src/man.c (try_db): Simplify; in_cache is no longer needed. Just + assign to the target variable directly. + * src/check_mandirs.c (test_manfile): Likewise. xstrdup() already + checks for NULL input, so don't bother checking here. + +Tue Apr 22 19:56:13 BST 2003 Colin Watson + + * docs/HACKING: New prototypical document for developers. + +Tue Apr 22 19:48:46 BST 2003 Colin Watson + + * src/globbing.c (parse_layout, look_for_file): Add a BSD layout in + which cat pages have the extension .0 (Jeremy C. Reed). More work + is needed elsewhere so that man can write such cat pages, though. + * configure.in (--enable-mandirs): Add BSD layout. + * manual/intro.me (Arguments to configure): Document + --enable-mandirs=BSD. + * README: Sync with manual/intro.me. + +Tue Apr 22 19:38:03 BST 2003 Colin Watson + + * libdb/COPYING.LIB: Remove (obsoleted in favour of + docs/COPYING.LIB). + * GNUmakefile.in (_docs, _libdb): Include COPYING.LIB from docs/ + rather than libdb/. + +Tue Apr 22 19:34:30 BST 2003 Colin Watson + + * tools/mandb_[nt]fmt-script: Correct "# !" to "#! " on the shebang + line. + +Tue Apr 15 18:16:30 BST 2003 Colin Watson + + * src/Makefile.in (LFLAGS): Provide -8 and -B as separate arguments. + flex 2.5.31 is stricter about this. + * zsoelim/Makefile.in (LFLAGS): Likewise. + +Sun Apr 13 14:36:29 BST 2003 Colin Watson + + * src/encodings.c (directory_table): Add Hungarian -> ISO-8859-2. + +Sun Apr 13 13:39:38 BST 2003 Colin Watson + + * src/mandb.c (xcopy): Return 0 if the source file doesn't exist, so + that the caller can go on and silently create a non-existent + database rather than bailing out. + +Sun Apr 13 12:49:33 BST 2003 Colin Watson + + * src/mandb.c: Remove DO_CHOWN define and simply use SECURE_MAN_UID. + +Thu Apr 10 23:51:43 BST 2003 Byrial Ole Jensen + + * po/da.po: Update from Translation Project. + +Mon Apr 7 09:12:27 BST 2003 Colin Watson + + * src/man.c (man): Call local_man_loop() straight away if name + contains a slash. Make the number of pages found an output + argument rather than the return value, so that we can include + local_man_loop()'s return behaviour. + (main): Update throughout for new man() signature. Don't call + local_man_loop() if man() returns an error, as man() now sorts + that out for itself. + * src/man.h (man): Update prototype. + +Mon Apr 7 08:09:08 BST 2003 Colin Watson + + * include/Defines.in: Generate dependencies in .depend rather than + the current directory. Suppress echoing of dependency generation + commands. + * libdb/Makefile.in: Remove .depend directory on distclean. Always + use dependencies (except on clean), not just when --enable-debug + was passed to configure. + * src/Makefile.in: Likewise. Set up $(DEFS_*) variables so that the + correct flags are used when generating dependencies. + * libdb/.cvsignore, src/.cvsignore: Ignore .depend. + + * configure.in: Remove now-redundant --enable-debug option. Remove + search for libefence if --enable-debug is used; using it with + LD_PRELOAD is generally more convenient anyway. + * README, manual/intro.me (Arguments to configure): Remove + documentation for --enable-debug. + * docs/NEWS: Document the removal. + +Mon Apr 7 01:02:27 BST 2003 Colin Watson + + * man/ja_JP.eucJP/man1/man.man1: Replace "%date%" with the Japanese + "ima", meaning "now" or "the present time" (thanks, Liyang Hu). + +Mon Apr 7 00:04:30 BST 2003 Colin Watson + + * configure.in: Don't generate language-specific date variants for + man pages, as that requires all the relevant locales to be + installed on the build machine. Use the ISO 8601 date format + instead. + * include/Defines.in: Remove obsolete substitutions of date_it, + date_es, date_de, and date_fr. + * man/Makefile.in: Likewise. + * man/de_DE.88591/man1/*.man1, man/de_DE.88591/man5/*.man5, + man/de_DE.88591/man8/*.man8, man/es_ES.88591/man1/*.man1, + man/es_ES.88591/man5/*.man5, man/es_ES.88591/man8/*.man8, + man/it_IT.88591/man1/*.man1, man/it_IT.88591/man5/*.man5, + man/it_IT.88591/man8/*.man8 (.TH): Replace "%date_de%", + "%date_es%", and "%date_it%" substitutions by plain "%date%". + * man/man1/man.man1 (HISTORY): "%date%" -> "present day". + * man/it_IT.88591/man1/man.man1 (STORIA): Similarly, "%date_it%" -> + "presente" (present day). + +Sun Apr 6 21:39:36 BST 2003 Colin Watson + + * src/man.c (main): Ignore LANGUAGE if a locale is explicitly + specified using the -L/--locale option. + +Sun Apr 6 20:28:57 BST 2003 Colin Watson + + Revamp locale encoding support. The old code made the incorrect + assumption that the source encoding of manual pages is dependent on + the locale. + + If MULTIBYTE_GROFF is defined then man will assume that it is using + a version of groff with the multibyte patch applied, which supports + some additional locales. + + * src/man.c (lang_table, determine_lang_table): Remove. + (lang_dir): Return "C" if there is no language directory element. + (make_roff_command): Find out the source encoding for the + requested man page and the default device for the current locale, + and use these to select a device more intelligently. Insert an + iconv pipe if the source encoding differs from the input *roff + encoding for the current device. + * src/encodings.c: New file. There are three tables replacing the + old lang_table: directory_table, charset_table, and device_table. + (get_source_encoding): New function, returning the assumed source + encoding for the current page from directory_table. + (get_default_device): New function, returning the default *roff + output device based on the current locale from charset_table. + (get_roff_encoding): New function, returning the input encoding + expected by *roff from device_table. This is always ISO-8859-1 + unless MULTIBYTE_GROFF is defined (this is still a subject of some + debate, and will be UTF-8 for all devices in groff 2). + * src/encodings.h: Prototype new functions. + * src/Makefile.in (man): Add encodings.o. + * docs/NEWS: Document the above. + +Sun Mar 30 23:14:47 BST 2003 Colin Watson + + * man/man1/man.man1 (SYNOPSIS): Both -H and -T take optional + arguments. The fact that they're optional means that no space is + allowed between the option and its argument (thanks to Peter Muir + for that observation). + (OPTIONS): Likewise. Document the 'browser' argument to -H. + Correct a couple of hyphens to dashes. + +Fri Mar 28 09:23:19 GMT 2003 Colin Watson + + * src/man.c (main): Protect ruid/euid debugging statement with + #ifdef SECURE_MAN_UID. + (commit_tmp_cat): Likewise for temporary cat ownership code. + * src/security.c (drop_effective_privs, regain_effective_privs): + priv_drop_count is only declared #ifdef SECURE_MAN_UID. Move the + corresponding directives so that these functions are no-ops if + that symbol isn't defined. + * docs/NEWS: Document this. + +Wed Mar 26 15:04:00 GMT 2003 Colin Watson + + * manual/format.me: Correct location of example external formatter + script. + +Tue Mar 25 04:15:41 GMT 2003 Colin Watson + + * configure.in: Use AC_MSG_NOTICE throughout rather than MAN_ECHO. + Move the definition of MAN_ECHO_VAR to just above its only uses. + +Tue Mar 25 03:44:06 GMT 2003 Giuseppe Sacco + + * po/it.po: Update. + +Tue Mar 25 03:41:13 GMT 2003 Colin Watson + + * src/whatis.c (parse_name): Free lowdbname before returning. + +Tue Mar 25 03:38:39 GMT 2003 Colin Watson + + * lib/strappend.c, lib/xstrdup.c, lib/xstrndup.c: Remove unused + definitions of VOID. + +Sun Mar 16 00:51:12 GMT 2003 Jeremy C. Reed + + * configure.in (--enable-mandirs): Use 'mandirs' rather than + 'mandir', as the latter clashes with an autoconf variable. + +Wed Mar 12 13:17:45 GMT 2003 Colin Watson + + * libdb/db_lookup.c (gripe_bad_multi_key): This function has been + unused since 24 June 2002 (noticed by Giuseppe Sacco). Remove. + * libdb/db_storage.h (gripe_bad_multi_key): Remove prototype. + +Tue Mar 11 21:17:56 GMT 2003 Giuseppe Sacco + + * po/it.po: Update. + +Mon Mar 10 17:20:46 GMT 2003 Colin Watson + + * libdb/db_btree.c, libdb/db_delete.c, libdb/db_gdbm.c, + libdb/db_lookup.c, libdb/db_ndbm.c, libdb/db_storage.h, + libdb/db_store.c, libdb/db_ver.c: Style cleanup (as with src/* on + 28 May 2001). No functional changes. + +Mon Mar 10 15:55:34 GMT 2003 Colin Watson + + * GNUmakefile.in (EVERYTHING, ALL): Move intl ahead of libdb. (Not + 'make -j'-clean, though ...) + * libdb/Makefile.in: Use '$(top_srcdir)' rather than '..' + throughout. Add $(top_srcdir)/intl to the include path if USE_NLS + is set. + +Mon Mar 10 15:24:04 GMT 2003 Colin Watson + + * configure.in (AC_CONFIG_HEADER): Generate config.h rather than + include/config.h. intl/Makefile.in is insistent on config.h being + in the top-level directory. + * GNUmakefile.in, manual/comp.me: Replace 'include/config.h' with + 'config.h' throughout. + * .cvsignore, include/.cvsignore: Update for new config.h and + config.h.in locations. + +Mon Mar 10 15:00:32 GMT 2003 Colin Watson + + * lib/mkdtemp.c: Define __GT_DIR if necessary. + * lib/tempfile.c: Prototype mkstemp() and mkdtemp(). + +Mon Mar 10 14:46:39 GMT 2003 Colin Watson + + * lib/tempname.c: Include "config.h" rather than . + +Mon Mar 3 22:00:03 GMT 2003 Colin Watson + + * src/mandb.c (xcopy): Remove silly calls to fclose() on null + pointers. + +Sun Mar 2 20:37:08 GMT 2003 Colin Watson + + * src/mandb.c (xcopy): Save errno before performing operations that + might change it. Close ifp as well if an error occurs while + opening ofp. + +Fri Feb 28 01:50:21 GMT 2003 Colin Watson + + * src/man.c (find_in_path): path needs to be preserved in order to + be freed safely, or else we segfault. Use a temporary variable for + strsep() instead. + +Mon Feb 24 17:05:25 GMT 2003 Colin Watson + + * man/man1/man.man1 (OPTIONS): Only use the \[shc] character if it's + available, which is the case on groff's latin1 and utf8 devices + but not on others. Otherwise, use \(hy. + +Mon Feb 24 00:17:39 GMT 2003 Colin Watson + + * docs/manpage.example (OPTIONS): Move the note about '\-' versus + '-' from a comment into displayed text. + +Sun Feb 23 00:34:12 GMT 2003 Alexandre Folle de Menezes + + * po/pt_BR.po: Update from Translation Project. + +Sat Feb 22 18:32:58 GMT 2003 Colin Watson + + * acinclude.m4 (MAN_CHECK_BDB): Remove some extra calls to + AC_MSG_RESULT, since AC_CACHE_CHECK already calls that. + +Sat Feb 22 18:10:14 GMT 2003 Morten Brix Pedersen + + * po/da.po: Translate a few more strings. + +Sat Feb 22 18:06:09 GMT 2003 Alexandre Folle de Menezes + + * po/pt_BR.po: Update from Translation Project. + +Sat Feb 22 17:50:55 GMT 2003 Colin Watson + + * src/Makefile.in: Fix typo ("developement" -> "development"). + * src/manp.c (add_to_dirlist): Fix typo ("mach" -> "match"). + +Sat Feb 22 17:41:07 GMT 2003 Colin Watson + + * src/manp.c (read_config_file): If user_config_file is non-NULL, + use it instead of ~/.manpath. Programs can now set the user + configuration file to be used. + + * src/catman.c, src/mandb.c, src/manpath.c, src/whatis.c + (long_options): Add -C/--config-file option. + (usage): Document it. + (main): Handle it. + * src/man.c (long_options): Add -C/--config-file option. + (usage): Document it, along with adding -i and -I to the synopsis. + (man_getopt): Handle it. + * man/man1/apropos.man1, man/man1/man.man1, man/man1/manpath.man1, + man/man1/whatis.man1, man/man8/catman.man8, man/man8/mandb.man8 + (SYNOPSIS): Add -C. + (OPTIONS): Describe -C/--config-file. + + * docs/NEWS: Document this addition. + +Fri Feb 21 18:32:21 GMT 2003 Colin Watson + + * src/Makefile.in (man): lexgrog.o is no longer needed. Removing it + takes 24K off the size of a stripped man binary on Linux/i386. + +Fri Feb 21 18:12:45 GMT 2003 Colin Watson + + * src/mandb.c (xcopy): Improve error handling. + (mandb): Since xcopy() now returns int, handle its return value. + +Fri Feb 21 16:40:26 GMT 2003 Colin Watson + + * src/man.c (find_in_path): New function to look for executables on + the $PATH. + (gripe_no_man): Only emit the "undocumented" message if a + corresponding executable is found on the $PATH. + * docs/NEWS: Document this. + +Fri Feb 21 16:26:00 GMT 2003 Colin Watson + + * docs/NEWS: Preliminary entries for 2.4.2. + +Fri Feb 21 15:49:08 GMT 2003 Colin Watson + + * zsoelim/zsoelim.l: Internationalize usage and error messages. + +Fri Feb 21 15:46:04 GMT 2003 Colin Watson + + * src/check_mandirs.c (gripe_bogus_manpage, make_filename, + filename_info): Move to ... + * src/filenames.c: ... here. + * src/check_mandirs.h: Move corresponding prototypes to ... + * src/filenames.h: ... here. + + * src/check_mandirs.c (purge_pointers): New function to purge any + entries whose pointers refer to a given name. + * src/check_mandirs.h (purge_pointers): Add prototype. + * src/mandb.c (long_options): Add -f/--filename option. + (usage): Document it, along with -t/--test. + (update_one_file): New function to update a single file in an + existing database. + (update_db_wrapper): Call update_one_file() if using --filename. + (main): Handle --filename option. If using --filename, only call + mandb() if the manpath prefix matches. + * man/man8/mandb.man8 (SYNOPSIS): Improve *roff style and document + -p. Add separate call summary for when -f is used. + (OPTIONS): Document -f. + + * lib/hashtable.c (hash_remove): New function to remove an entry + from a hash table. + * lib/hashtable.h (hash_remove): Add prototype. + + * libdb/db_store.c (replace_if_necessary): Replace entries with ids + other than ULT_MAN too, so that their timestamps can be updated. + Add more debugging output. + * src/man.c (need_to_rerun): Remove. + (display_database): Remove code to check whether pages found in + databases are up to date. This is done elsewhere now. + (run_mandb): New function, used instead of updating databases + directly. + (main): Call run_mandb() instead of need_to_rerun(). + (maybe_update_file): New function to check whether a page found in + a database is up to date. If not, use run_mandb() to recache it. + (try_db): Use run_mandb() rather than create_db(). Use #defines + for special return values rather than magic numbers. Check whether + pages are up to date as they're found. + (locate_page): If try_db() returns TRY_DATABASE_UPDATED (i.e. + mandb was called to update some pages), call it again. + (display_pages): Use a switch with named candidate types instead + of an if. + + * src/Makefile.in (DEFS_man.o): Add definition for MANDB. + (man): Database code is no longer needed. Add filenames.o. + (mandb): Add filenames.o. + +Mon Feb 17 23:28:55 GMT 2003 Colin Watson + + * src/manpath.c: Remove unused prototypes. + +Tue Jan 21 01:42:16 GMT 2003 Colin Watson + + * src/mandb.c (xcopy, main): Minor whitespace cleanups. + * src/ult_src.c: Fix typo (loosing -> losing). + +Mon Jan 6 03:25:16 GMT 2003 Colin Watson + + * src/man.c (display_pages): Drop privileges if candp->path is a + user manpath. Inner code generally dropped privileges anyway, + certainly when running external commands, but the absence of this + drop meant that pages in non-world-readable user manpaths could + not be read. + +Mon Jan 6 03:19:57 GMT 2003 Colin Watson + + * lib/error.c (error): Print a backtrace if the BACKTRACE_ON_ERROR + symbol is defined. This undoubtedly isn't portable and is not + intended for production use; it's just a last-resort way to get a + backtrace when the usual methods fail, chiefly when running + setuid. + +Tue Dec 31 04:39:03 GMT 2002 Colin Watson + + * src/man.c (man): If update is set, need_to_rerun() will always + have been called already by now. Remove this redundant code. + +Tue Dec 31 04:26:50 GMT 2002 Colin Watson + + * man/man1/apropos.man1, man/man1/lexgrog.man1, + man/man1/manpath.man1, man/man1/whatis.man1, + man/man1/zsoelim.man1: --version no longer displays author + information. + +Sun Dec 29 19:57:55 GMT 2002 Colin Watson + + * src/check_mandirs.c, src/check_mandirs.h: Move page_description + interface functions to ... + * src/descriptions.c, src/descriptions.h: ... here (new files). + * src/Makefile.in (man, mandb): Link descriptions.o. + + * libdb/db_storage.h: Include libdb/mydbm.h for the datum type. + +Sun Dec 29 19:51:11 GMT 2002 Colin Watson + + * src/lexgrog.l: Add commas between short and long options in usage + output. + + * src/accessdb.c (main): Support -h/--help and -v/--version options. + (usage): Document them. Move MAN_DB outside translatable string. + * man/man8/accessdb.man8 (SYNOPSIS, OPTIONS): Document new options. + (AUTHOR): Add myself. + * src/globbing.c (long_options, args, main): Support -h/--help and + -v/--version options. + (usage): New function. + * zsoelim/zsoelim.l: Support long option forms of -C (--compatible), + -h (--help), and -V (--verbose). + * man/man1/zsoelim.man1: Document long options. + + * src/Makefile.in: Link $(TOOLS) as well as $(PROGS) with version.o. + +Sun Dec 29 19:40:46 GMT 2002 Colin Watson + + Patch partly by Werner Fink . + + * src/whatis.c (args, long_options): Add -v/--verbose option. + (usage): Document it. + (get_whatis): Print pointer loop warnings only if --verbose. + (main): Handle --verbose option. + * man/man1/apropos.man1 (OPTIONS): Document --verbose. + * man/man1/whatis.man1 (OPTIONS): Likewise. + +Sun Dec 22 23:30:12 GMT 2002 Colin Watson + + * src/check_mandirs.c (test_manfile): Initialize the mandata struct + on the stack to zero. + (count_glob_matches): Likewise. + * src/straycats.c (check_for_stray): Likewise. + * src/man.c (try_section): Use infoalloc() (which initializes the + mandata struct to zero) rather than malloc(). This had caused + several uses of uninitialized memory (Debian bug #168584). + + * src/check_mandirs (purge_whatis): Compare info->pointer against + "-", not just its first character. + +Sun Dec 22 19:29:38 GMT 2002 Colin Watson + + * Version: 2.4.1. + * docs/NEWS, man-db.gnu, man-db.lsm: Update. + +Sun Dec 22 18:19:09 GMT 2002 Colin Watson + + * libdb/db_btree.c (btree_findkey): Cast key.dsize to int when using + it as an fprintf() field width. + +Sun Dec 22 18:15:51 GMT 2002 Colin Watson + + Patch inspired by part of SuSE's diff, although not identical. + + * GNUmakefile.in: Export DESTDIR. + * man/Makefile.in, src/Makefile.in, zsoelim/Makefile.in: Honour + DESTDIR when installing and uninstalling files. + +Sun Dec 22 14:14:37 GMT 2002 Colin Watson + + * GNUmakefile.in (dist): Don't update .po files automatically, since + they're kept under revision control. + +Sun Dec 22 13:59:23 GMT 2002 Colin Watson + + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fr.po, + po/it.po, po/ja.po, po/pt_BR.po, po/sv.po: Update with msgmerge. + +Sun Dec 22 13:44:20 GMT 2002 Alexandre Folle de Menezes + + * po/pt_BR.po: Update from Translation Project. + +Sat Dec 21 13:30:43 GMT 2002 Colin Watson + + * src/check_mandirs.c (count_glob_matches): Exclude file names which + fail stat(), such as dangling symlinks. + +Sat Dec 21 03:01:34 GMT 2002 Colin Watson + + * src/check_mandirs.c (count_glob_matches): New function, + sanity-checking results from look_for_file(). This should probably + be done in look_for_file() itself eventually, but that requires + more widespread changes. + (purge_normal, purge_whatis): Use it. + + * src/check_mandirs.c (gripe_bogus_manpage, gripe_rwopen_failed, + filename_info, purge_normal, purge_whatis): Constify arguments. + * src/check_mandirs.h (filename_info): Update prototype. + + * docs/NEWS: Document --enable-mandirs guesswork. + * src/.cvsignore: Add the globbing test executable. + +Fri Dec 20 15:38:48 GMT 2002 Colin Watson + + * src/globbing.c (main): Make the test program compile again, and + add full argument parsing. + * src/Makefile.in (globbing): Link with util.o. + +Fri Dec 20 15:34:51 GMT 2002 Colin Watson + + * configure.in: Guess the --enable-mandirs setting where possible if + it isn't specified explicitly. + +Fri Dec 20 02:28:15 GMT 2002 Colin Watson + + * src/check_mandirs.c (purge_missing): Match database entries + against real filenames using the name field where available, not + the lowercased field. + +Fri Dec 20 02:15:21 GMT 2002 Colin Watson + + * src/mandb.c (mandb): If force_rescan is set, delete the database + and recreate it from scratch. + * src/check_mandirs.c (testmandirs): force_rescan is handled + elsewhere now. + (purge_normal, purge_whatis): Remove inline qualifier. + (check_multi_key): New function to check for broken multi keys + such as those generated by 2.4.0. + (purge_missing): Call check_multi_key() where necessary. + + * src/lexgrog.l (find_name): Revert change of 27 November 2002, as + calling ult_src() inside find_name() breaks mandb (which already + calls ult_src() itself). Instead: + (main): Do the ult_src() resolution here for each element of argv. + + * src/ult_src.c (ult_src): 'name' argument is const. + * src/lexgrog.l (find_name): 'file' argument is const. + * include/manconfig.h.in, src/ult_src.h: Update prototypes. + +Mon Dec 16 05:28:34 GMT 2002 Colin Watson + + From SuSE's diff: + + * lib/error.c: Add 'extern' to prototypes. + * lib/strappend.c, lib/xstrdup.c, lib/xstrndup.c: #include + "manconfig.h" rather than using an explicit prototype. + * lib/xstrdup.c (xstrdup): 'string' should be const. + + * po/cs.po: Fix a format string. + + * src/lexgrog.l: Add Japanese translation of NAME. + * src/man.c: 'wd', 'cwd', and local_man_loop() are static. + +Mon Dec 16 04:30:39 GMT 2002 Colin Watson + + * configure.in: 'test "$foo"' => 'test -n "$foo"' throughout. Taken + from SuSE's diff. + +Wed Dec 4 21:02:48 GMT 2002 Colin Watson + + * man/man1/lexgrog.man1: Replace `, ', and - (for literal dash + rather than hyphen) with \(oq, \(cq, and \- respectively. + (NOTES): lexgrog attempts to handle .so requests now. + +Tue Dec 3 01:39:54 GMT 2002 Colin Watson + + * src/man.c (main): Only set multiple_locale if it's going to be + used. Look at multiple_locale rather than internal_locale when + performing special $LANGUAGE handling. + +Mon Dec 2 14:08:08 GMT 2002 Michael Piefel + + * po/de.po: Fix a missing newline. + +Mon Dec 2 13:58:55 GMT 2002 Michael Piefel + + * po/de.po: Update from Translation Project. + +Fri Nov 29 15:40:21 GMT 2002 Jordi Mallach + + * po/ca.po: Update from Translation Project. + +Wed Nov 27 20:27:59 GMT 2002 Christian Rose + + * po/sv.po: Update from Translation Project. + +Wed Nov 27 02:43:03 GMT 2002 Colin Watson + + * Version: 2.4.1-pre1 (for translators). + * docs/NEWS: Update. + +Wed Nov 27 02:29:42 GMT 2002 Colin Watson + + * src/lexgrog.l (find_name): Call ult_src() to resolve .so links. + * src/Makefile.in: Link ult_src.o into lexgrog. + +Wed Nov 27 01:49:18 GMT 2002 Colin Watson + + * release.sh: Don't pass --copy to autogen.sh, as it's a no-op now. + * po/.cvsignore, tools/.cvsignore: More ignored files. + +Wed Nov 27 01:46:27 GMT 2002 Colin Watson + + * tools/mkinstalldirs: Remove. It's more trouble than it's worth to + store something in CVS that autopoint thinks it controls. + +Wed Nov 27 01:25:52 GMT 2002 Colin Watson + + * po/da.po: Correct some minor typographical mistakes (mostly + missing spaces or newlines at the end of one piece of a string + concatenation). + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fr.po, + po/it.po, po/ja.po, po/pt_BR.po, po/sv.po: Update with msgmerge. + +Wed Nov 27 00:51:47 GMT 2002 Colin Watson + + * man/man1/apropos.man1, man/man1/lexgrog.man1, man/man1/man.man1, + man/man1/manpath.man1, man/man1/whatis.man1, + man/man1/zsoelim.man1, man/man5/manpath.man5, + man/man8/accessdb.man8, man/man8/catman.man8, man/man8/mandb.man8: + Add a .pc request so that the % characters we use for + substitutions don't get translated into page numbers when + formatting the unsubstituted pages. + +Wed Nov 27 00:37:29 GMT 2002 Colin Watson + + * man/man1/lexgrog.man1 (WHATIS PARSING): Add an example of how NAME + sections should be written in mdoc. + +Tue Nov 26 22:57:27 GMT 2002 Colin Watson + + * .cvsignore: Ignore the m4 directory, created by autopoint. + * GNUmakefile.in (_subdirs, _m4): Add m4/*.m4 to the distribution. + (_root): There are no *.h files left in the top-level directory. + (nls_man): de_DE.ascii is gone. + (dist): Use 'cp -p' rather than 'ln', since ln notes that making a + hard link to a symbolic link is not portable. + +Tue Nov 26 03:43:15 GMT 2002 Colin Watson + + * po/pt_BR.po: New from Translation Project. + * po/LINGUAS: Add pt_BR. + +Fri Nov 22 22:06:01 GMT 2002 Morten Brix Pedersen + + * po/da.po: Further updates. + +Sat Nov 16 12:54:29 GMT 2002 Colin Watson + + * docs/manpage.example: Clarify that dashes in options should be + written using '\-', not '-'. + +Thu Nov 14 23:29:14 GMT 2002 Morten Brix Pedersen + + * po/da.po: Update. + +Thu Nov 14 23:26:58 GMT 2002 Colin Watson + + * configure.in: Implement --enable-undoc=COMMAND. + * src/man.c (gripe_no_man): If --enable-undoc=COMMAND was set, print + an additional message referring users to COMMAND. This is mostly + here to support Debian's undocumented(7) page in a nicer way, but + perhaps others will find it useful too. + +Thu Nov 14 04:21:09 GMT 2002 Colin Watson + + * src/Makefile.in: Use @LIBINTL@ rather than @INTLLIBS@. The latter + is deprecated. + +Thu Nov 14 04:17:49 GMT 2002 Colin Watson + + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fr.po, + po/it.po, po/ja.po, po/sv.po: Update with msgmerge. + +Thu Nov 14 04:10:44 GMT 2002 Colin Watson + + * acinclude.m4, configure.in: Include documentation in all calls to + AC_DEFINE and AC_DEFINE_UNQUOTED. Look for acinclude.m4 in + AC_CONFIG_SRCDIR rather than acconfig.h. + * acconfig.h: Remove; the above makes it unnecessary. + * GNUmakefile.in: Remove acconfig.h from stamp-h.in's dependencies. + + * autogen.sh: Run autopoint, not gettextize. autogen.sh no longer + takes an optional --copy argument. + +Thu Nov 14 04:06:41 GMT 2002 Colin Watson + + * po/.cvsignore: Add messages.mo and remove-potcdate.sed. + * po/it.po: Add missing '=' in charset. + +Thu Nov 14 03:53:22 GMT 2002 Colin Watson + + * po/cs.po: Fix an incorrect C format string. + * po/da.po: Fix some out-of-sync C format strings and default PO + file headers. I've contacted the translator about these. + +Thu Nov 14 01:57:42 GMT 2002 Colin Watson + + * man-db.gnu, man-db.lsm: Document the switch from SourceForge to + Savannah. + +Mon Nov 11 01:50:28 GMT 2002 Colin Watson + + * src/man.c (man): Update the count of found pages with the return + value of display_pages(). This should fix the situation where man + finds a matching entry in the database, discovers that it's + actually a dangling symlink, but fails to print an error message + to say that no page was found. + +Mon Nov 11 00:47:38 GMT 2002 Colin Watson + + * man/man1/man.man1 (OPTIONS): Change \[char173] to \[shc]. The + former doesn't appear to display as anything useful these days. + * man/es_ES.88591/man1/man.man1, man/it_IT.88591/man1/man.man1, + man/ja_JP.eucJP/man1/man.man1: Likewise. + +Thu Nov 7 02:18:44 GMT 2002 Colin Watson + + * src/man.c (display): Don't do access() checks on an empty man_file + in the display_to_stdout branch, to avoid problems when running + 'man -X -l -'. Similar code is already in the other branch. Patch + from Peter Muir . + +Thu Nov 7 01:42:52 GMT 2002 Colin Watson + + * docs/NEWS: Further updates for 2.4.1. + * docs/ToDo: I think the new-style database is OK now. + +Thu Nov 7 01:32:29 GMT 2002 Colin Watson + + * src/globbing.c (match_in_directory): Don't use FNM_NOESCAPE flag + to fnmatch(). + (look_for_file): Escape paths and names before passing them to + match_in_directory(). + * src/globbing.h: Update variable names in prototype. + +Wed Oct 23 02:12:43 BST 2002 Colin Watson + + * tools/README: Remove reference to install-manpage. + +Wed Oct 23 02:10:15 BST 2002 Colin Watson + + * tools/install-manpage: Remove. It doesn't work at all as far as I + can see, and at least as far as Debian is concerned dh_installman + does a better job. + * GNUmakefile.in: Remove reference to install-manpage. + +Wed Oct 23 02:03:18 BST 2002 Colin Watson + + Apply proper copyright and licence notices to all source files. + There are no functional changes here, either to the code or to the + applicable licences, merely clarifications. + + * docs/COPYING.LIB: New file, containing version 2.1 of the GNU + LGPL. + +Wed Oct 23 01:56:38 BST 2002 Colin Watson + + * tools/install-sh: Update to the version in automake 1.4-p4, which + includes a full (MIT) licence notice. + +Sat Oct 12 20:16:48 BST 2002 Colin Watson + + A much-needed complete rewrite of splitline(). The previous version + was extremely difficult to debug (see http://bugs.debian.org/123130) + and got info->pointer and info->whatis wrong quite frequently. This + version is much simpler and I hope more correct. + + * src/util.c (trim_spaces): New function. + * include/manconfig.h.in: Prototype trim_spaces(). + + * src/check_mandirs.c (gripe_bad_store): New function. + (splitline): Remove. + (parse_descriptions, store_descriptions, free_descriptions): New + functions, implementing the whatis parsing that used to be in + splitline() and test_manfile(). + (test_manfile): Reduce the complicated loop over splitline() to + calls to the above three functions. Adjust the parsing failure + case to require less deeply nested indentation. + * src/check_mandirs.h: New page_description struct, used to + implement the above. Prototype new functions. + * src/straycats.c: Use the new page_description-based interface. + +Wed Sep 25 00:39:16 BST 2002 Colin Watson + + * man/man1/man.man1 (DESCRIPTION): Clarify the purpose of section 7 + as "Miscellaneous". + +Tue Sep 24 00:22:36 BST 2002 Colin Watson + + * lib/strnlen.c: Don't try to define a weak alias. We aren't libc. + +Mon Sep 16 21:14:26 BST 2002 Colin Watson + + * libdb/mydbm.h: datum.dsize must be size_t, not int. + +Mon Sep 16 01:07:16 BST 2002 Colin Watson + + * src/compression.c (decompress): If the decompressor fails, print + an error message and return NULL rather than exit()ing + immediately. This allows callers to behave more intelligently. + * src/lexgrog.l (find_name): Cope with decompress() returning NULL. + * src/man.c (local_man_loop): Likewise. + * src/ult_src.c (ult_src): Likewise. + +Mon Sep 16 00:25:17 BST 2002 Clint Adams + + * configure.in: Detect bzip2. + * include/comp_src.h.in (comp_list): Include bunzip2 support if + available. + * include/manconfig.h.in: Add BUNZIP2 definition. + +Sun Sep 15 23:53:28 BST 2002 Colin Watson + + Upgrade to gettext 0.11.5. + + * configure.in: Remove ALL_LINGUAS. Add AM_GNU_GETTEXT_VERSION. + * po/LINGUAS: New file. Adds sv to the value of the old ALL_LINGUAS. + * po/Makevars: New file. + * po/POTFILES.in: Add src/fakesecurity.c. Change src/lexgrog.c to + src/lexgrog.l. + * tools/mkinstalldirs: Upgrade to current version. + +Fri Sep 6 23:58:10 BST 2002 Colin Watson + + * src/mandb.c (xcopy): Don't print the error from fopen() if it's + just ENOENT. + +Tue Sep 3 21:53:56 BST 2002 Colin Watson + + * libdb/db_lookup.c (list_extensions): Prevent a theoretical buffer + overflow by allocating names and ext as necessary rather than + using a fixed-length array. + (dblookup): Update callers. + * libdb/db_delete.c (dbdelete): Likewise. + * libdb/db_storage.h: Update prototypes. ENTRIES definition is now + redundant. + +Tue Sep 3 20:26:22 BST 2002 Colin Watson + + * libdb/db_delete.c (dbdelete): Construct new multi_content + correctly (names as well as extensions) when deleting some of its + elements. + +Fri Aug 30 03:11:42 BST 2002 Colin Watson + + * src/man.c (make_roff_command): Restore the fix from 13 July 2001 + that got lost while implementing -E. We need to look up the + correct character set each time a page is displayed, but still + honour any device explicitly set by -E, so test different_encoding + rather than roff_device. + +Thu Aug 29 01:14:19 BST 2002 Colin Watson + + * src/man.c (setenv_less): Export the value of $MAN_PN for the + benefit of other pagers (suggestion from Jeff Sheinberg). + +Thu Aug 29 00:50:54 BST 2002 Colin Watson + + * src/man.c: dbfilters is no longer a global variable. + (get_preprocessors, make_roff_command, display): Take an extra + dbfilters argument. + (local_man_loop, make_roff_command, display, display_filesystem): + Adjust callers. + (display_database): Likewise. Pass in->filter as the dbfilters + argument to display() rather than setting it globally (and + forgetting to set it back to NULL later). + * src/man.h: Update prototypes. + +Sat Aug 17 21:53:38 BST 2002 Colin Watson + + * src/straycats.c (check_for_stray): Initialize info.name and + info.filter. Remove unhelpful __inline__. + +Tue Aug 13 18:25:13 BST 2002 Colin Watson + + * src/man.c (usage): Document new option -W, --where-cat, + --location-cat. + (man_getopt): Accept -W. + (display): -w now just prints man_file, while -W prints cat_file. + If both are given, the two filenames are printed separated by a + space, as -w used to do. + * man/man1/man.man1, docs/NEWS: Document this. + +Sat Aug 10 13:19:34 BST 2002 Colin Watson + + * docs/NEWS: Preliminary entries for 2.4.1. + +Sat Aug 10 13:15:49 BST 2002 Colin Watson + + * lib/hashtable.c (plain_hash_free, hash_install, hash_free): Remove + the type argument and nlist element. All current users can just + use separate hashtables instead. + * lib/hashtable.h: Update prototypes and nlist declaration. + * libdb/db_btree.c: Don't pass dummy type argument to + hash_install(). + + * src/check_mandirs.c, src/man.c: Include "lib/hashtable.h" rather + than "hashtable.h". + * src/check_mandirs.c (test_manfile): Use hashtable functions on the + new static whatis_hash directly rather than the old functions + which implicitly operated on the global man_hash. + (testmandirs): Since we use full paths as hash keys, there's no + need to clear whatis_hash between hierarchies. + * src/man.c (db_hash_free): New function. + (main, try_db): Use hashtable functions on the new static db_hash + directly rather than the old functions which implicitly operated + on the global man_hash. + (try_db, man): Don't clear hashtables before creating a new + database. This used to segfault in some circumstances. + + * src/hashtable.c, src/hashtable.h: Remove. + * src/Makefile.in: Remove mentions of hashtable.o. + +Thu Aug 8 02:05:34 BST 2002 Colin Watson + + * po/sv.po: New from Translation Project. + +Mon Jul 22 01:20:28 BST 2002 Colin Watson + + * src/check_mandirs.c (splitline): Check for pointer underflow when + trimming leading spaces. + +Mon Jul 22 01:18:18 BST 2002 Colin Watson + + * libdb/db_ver.c: Include for strcmp(). + +Wed Jul 17 20:30:30 BST 2002 Colin Watson + + * src/wrapper.c: Include even under --disable-nls. + +Mon Jul 15 14:18:56 BST 2002 Colin Watson + + * src/lexgrog.l: Allow EOF to terminate MAN_NAME cleanly. + +Thu Jul 11 20:45:36 BST 2002 Colin Watson + + * manual/man_db.me: Version 0.7. Remove version number from \*M + string. Set a default page width of 78 ens for nroff output. Add + myself as an author. + * manual/intro.me (man-db): Mention lexgrog. + (The format of manual pages): Ted and Werner now maintain groff. + * manual/sec.me (Specifying a section): Extensions don't have to be + listed unless a special ordering is desired. + * manual/files.me (Other OS's manual pages): --systems, not + --system. + (NLS manual pages): Likewise. Update Daniel Quinlan's e-mail + address. Correct "/usr/man/man" to "/usr/man" in example manpath + output. + (Displaying latin1 characters on a Linux virtual terminal): Set + sample script in a constant-width font. + (Local cat page directory caches): Modification times are now + compared for equality rather than for the cat file being more + recent. + * manual/format.me (GROFF): tools/nroff-script is no longer + provided. + (Pre-format processors (pre-processors)): Mention the lexgrog scan + for preprocessor hints. + * manual/db.me (Contents of an index database): Clarify where the + true case of a name is stored. + (Accessdb): accessdb is compiled by default now. + * manual/misc.me (NLS message catalogues): Point to the Translation + Project. + * manual/*.me: Minor wording improvements. Apply better *roff style + (newline at each sentence break). + + * man/THANKS: Update Jordi Mallach's e-mail address. + +Sun Jul 7 22:19:41 BST 2002 Colin Watson + + * tools/config.guess: Update to 2002-05-29. + * tools/config.sub: Update to 2002-06-21. + * tools/README: Describe config.guess and config.sub. + + * tools/nroff-script: Remove. groff has had this since 1992, and its + version is considerably more up-to-date. + * GNUmakefile.in, tools/README: Remove references to nroff-script. + + * zsoelim/zsoelim.l: -Wall cleanup. Set the nounput option, since we + don't need yyunput(). + (open_file): Make sure the compiler knows that compfile and comp + are always initialized. + +Sat Jul 6 21:30:07 BST 2002 Colin Watson + + * src/man.c (get_roff_line_length): Widen to match groff 1.18's + defaults. + (add_roff_line_length, make_roff_command): Simplify by using en + units rather than inches. + + * src/man.c (main): Slight improvement in the error message for a + missing page. If the name doesn't begin with a digit, never use + gripe_no_name(): having the 'n' section shouldn't mean that 'man + nonexistent' says "What manual page do you want from section + nonexistent?". + + * src/man.c (try_section): Check for ult_src() returning NULL. + +Wed Jul 3 23:46:31 BST 2002 Colin Watson + + * src/manp.c (add_system_manpath): Make sure the loop that scans for + per-system manpaths always makes progress. + +Wed Jul 3 23:14:42 BST 2002 David Martinez Moreno + + * man/THANKS: Update e-mail address. + * po/es.po: Update. + +Sat Jun 29 14:58:08 BST 2002 Colin Watson + + * src/man.c (main): If a section is given but the lookup fails, + check to see if the section is actually a page name. This allows + man page names that begin with a digit to work much more sanely. + (is_section): If a single-character entry in section_list is a + prefix of the requested section name, return successfully. This + means that e.g. '3tcl' is treated as a valid section even if only + '3' is in section_list. + + * src/man.c (is_section), src/man.h (is_section): Constify argument + and return type. + + * src/globbing.c (match_in_directory, look_for_file): Reduce + debugging chatter. + +Wed Jun 26 20:07:56 BST 2002 Colin Watson + + * src/whatis.c (get_whatis): "(unknown)" => "(unknown subject)", + mainly so that translators know the number and gender. + +Wed Jun 26 19:49:49 BST 2002 Colin Watson + + * src/catman.c (usage), src/man.c (usage), src/mandb.c (usage), + src/manpath.c (usage): Make --help output more consistent. + * src/whatis.c (usage): Likewise. "alternate systems" => "alternate + systems'". + +Wed Jun 26 14:47:01 UTC 2002 Colin Watson + + * Version: 2.4.0. + * README: Update or remove references to "man-db-2.3" and similar. + * man-db.gnu: Update and sync with GNU. + * man-db.lsm: Update. + * manual/man_db.me: Replace "2.3.x" with "2.4.x". + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fr.po, + po/it.po, po/ja.po: Update with msgmerge. + +Wed Jun 26 14:09:25 BST 2002 Colin Watson + + * src/lexgrog.l (name_sec): Allow whitespace before any closing + double quote. (rman(1) uses '.SH "NAME "'.) + +Tue Jun 25 00:29:22 BST 2002 Colin Watson + + * docs/NEWS: Translation credits are in man/THANKS. + * man/THANKS: Update. + + * manual/.cvsignore: New file. + +Mon Jun 24 02:53:00 BST 2002 Colin Watson + + * libdb/db_store.c (dbstore): Use \t instead of . to separate + case-variant-names and extensions in multi keys. + * libdb/db_lookup.c (list_extensions): Take an extra 'names' array + argument, and split alternately into that and 'ext'. + (dblookup): Update and simplify accordingly; we don't need the + awkward '.' handling any more. + * libdb/db_delete.c (dbdelete): Likewise. + * libdb/db_storage.h (list_extensions): Update prototype. + + * include/manconfig.h.in: Database format version 2.4.1. + + * manual/db.me (Contents of an index database): Document + case-insensitive name storage format. Bring the documentation of + the database entry format up to date. + * manual/sec.me (Specifying a section): Mention the SECTION + configuration directive. + +Fri Jun 21 10:50:40 UTC 2002 Colin Watson + + * src/check_mandirs.c (make_filename): in->comp may be NULL. + + * po/fr.po: Update from Translation Project. + +Mon Jun 17 09:56:15 UTC 2002 Colin Watson + + * configure.in (ALL_LINGUAS): Add ca. + * src/man.c: Update some comments. + * src/lexgrog.l: Treat \~ as a space. Treat \# as a comment. Treat + .ig as ending the whatis. + +Thu Jun 13 18:16:46 BST 2002 Colin Watson + + * po/ca.po: Some updates after review. + +Wed Jun 12 18:29:18 BST 2002 Colin Watson + + * docs/ToDo: Updates. + * po/ca.po: New from Translation Project. + +Wed Jun 5 14:23:13 BST 2002 Colin Watson + + * po/de.po: Update from Translation Project. + +Tue Jun 4 13:15:09 BST 2002 Colin Watson + + * src/man.c (compare_candidates): Return 0 when asked to compare two + candidates we can't distinguish, not -1. The latter broke + multilingual support. + +Tue Jun 4 01:33:31 BST 2002 Colin Watson + + * Version: 2.3.90 (for translators). + * docs/NEWS: More updates. + * po/cs.po, po/da.po, po/de.po, po/es.po, po/fr.po, po/it.po, + po/ja.po: Update with msgmerge. + +Tue May 28 00:36:55 BST 2002 Colin Watson + + * libdb/db_lookup.c (dblookup): Check the MATCH_CASE flag in the + case of a single entry as well as multiple entries. + +Mon May 27 23:57:26 BST 2002 Colin Watson + + * lib/hashtable.c, lib/hashtable.h: New files, containing the + generic parts of src/hashtable.{c,h}. + * lib/Makefile.in: Add hashtable.c. + * src/hashtable.c (hash, lookup, install): Remove. These functions + have been renamed and moved to lib/hashtable.c. + (free_defn): Rename to man_hash_free and update for new hashtable + API. + (free_hashtab): Update for new hashtable API. + * src/hashtable.h: Update prototypes. + + * libdb/db_btree.c (btree_findkey): Check for entries we've seen + before in the current run. These indicate a corrupt database + containing a loop. + +Thu May 23 01:50:53 BST 2002 Colin Watson + + * lib/cleanup.h: #endif must not be followed by a token on the same + line. + +Thu May 23 00:29:24 BST 2002 Colin Watson + + * src/fake_security.c (get_man_owner): New fake function to match + the real one in src/security.c. + * src/manp.c (mkcatdirs): Chown newly created cat directories to the + MAN_OWNER when running as root. + + * .cvsignore, intl/.cvsignore, po/.cvsignore: Ignore a few more + files. + * src/man_db.conf.in: Correct the heading. + +Wed May 22 00:06:18 BST 2002 Colin Watson + + * libdb/db_store.c (compare_ids): New function, replacing the + FAVOUR() macro. Without this, the last-but-one commit won't + compile ... + (replace_if_necessary): Use it. + * libdb/db_storage.h: Prototype it. + +Mon May 20 03:07:24 BST 2002 Colin Watson + + * src/man.c (setenv_less): New function to set up $LESS. This + honours the new environment variable $MANLESS, which overrides the + usual processing and is copied directly into $LESS. + (make_display_command): Use it. + * man/man1/man.man1 (OPTIONS): Mention $MANLESS alongside the + --prompt option. + (ENVIRONMENT): Document $MANLESS. + +Mon May 20 02:16:43 BST 2002 Colin Watson + + * src/man.c (compare_candidates): Compare id fields as a last + resort, so that, for example, real pages sort ahead of whatis-only + names. + (try_section): Set the id field based on the output of ult_src(). + + * src/man.c (man): When locating pages, don't stop when one is found + in a particular directory and -a wasn't given. That's now the job + of the display code. + +Mon May 20 01:16:02 BST 2002 Colin Watson + + * libdb/db_lookup.c (free_mandata_elements): New function, to be + used rather than freeing the addr field directly. This frees name + as well. + (free_mandata_struct): Use it. + * libdb/db_btree.c (dbstore, dblookup): Likewise. + * libdb/db_store.c (dbstore): Likewise. + * src/whatis.c (whatis): Likewise. + * libdb/db_storage.h: Prototype it. + + * libdb/db_store.c (replace_if_necessary): Rename in and info to + newdata and olddata, which are more comprehensible. Don't check + that the name fields match here - the caller should do that. + (dbstore): Make sure in->name isn't set on entry, and instead set + it to the basename where necessary. Don't set the name field in + multi keys, which use the proper case. + + * src/check_mandirs.c (filename_info): We don't need to examine the + case of base_name here. + +Thu May 16 00:47:05 BST 2002 Colin Watson + + * libdb/db_btree.c (btree_flopen): If O_CREAT isn't set, check + whether we're trying to open a zero-length database and, if so, + return immediately. This works around some pathological behaviour + in Berkeley DB. + +Mon May 6 03:48:17 BST 2002 Colin Watson + + * libdb/db_store.c (FAVOUR): Parenthesize macro arguments. + (dbstore): In situation (3), use the old lookup key for the name + of the corresponding multi key, not the basename (which may be in + the wrong case). + +Sun May 5 17:49:21 BST 2002 Colin Watson + + * src/lexgrog.l: Accept DOS line-ending conventions. + +Sun May 5 15:38:34 BST 2002 Colin Watson + + * libdb/db_delete.c (dbdelete): Don't scribble over the list + returned by list_extensions(). We need it shortly afterwards to + construct the new multi key. + +Fri May 3 19:43:52 BST 2002 Colin Watson + + * include/manconfig.h.in (LESS_OPTS): Add the -R flag, which helps + with displaying the ANSI colour escapes generated by groff 1.18. + +Fri May 3 19:27:40 BST 2002 Colin Watson + + * src/man.c (add_roff_line_length): New function, adding -rLL and + -rLT to the groff command line (supported in groff >= 1.18). + (make_roff_command): Call add_roff_line_length(). The old code to + set .ll and .lt remains for compatibility purposes. + +Wed May 1 02:16:11 BST 2002 Colin Watson + + * src/check_mandirs.c (testmandirs): Include the subdirectory name + in the "Updating index cache" message. + +Wed May 1 02:05:02 BST 2002 Colin Watson + + * libdb/db_store.c: Make sure the check for whether a replace is + necessary in situation (3) behaves as it did before the multi key + format changes. + + * libdb/db_lookup.c (copy_if_set, dash_if_unset): Constify + arguments. + * libdb/db_storage.h: Likewise for prototypes. + * src/convert_name.c (gripe_converting_name): name should be const. + * src/manp.c (get_catpath): suffix should be const. + +Wed May 1 00:14:20 BST 2002 Colin Watson + + * src/globbing.c (match_in_directory): Close the directory after + reading through it. + +Wed May 1 00:02:53 BST 2002 Colin Watson + + Case-(in)sensitivity in database lookups should work properly now. + + * libdb/db_lookup.c (gripe_bad_multi_key): New function. + (make_multi_key): Don't lowercase page any more - that happens + elsewhere. + (list_extensions): We now return names/extensions, not just + extensions. + (dblookup): Multi keys are now formed as "RealCase.1" rather than + just "1". Add a new MATCH_CASE flag which, if set, makes sure the + RealCase part matches. Otherwise the database lookup is + case-insensitive. + (dblookup_exact, dblookup_all): Pass through a match_case flag for + the above. + * libdb/db_delete.c (dbdelete): Cope with new multi key format. + * libdb/db_store.c (dbstore): Construct the multi key from the + original case of the name rather than the lowercased version. Add + the basename to the multi keys created here, as above. + * src/man.c (display_database): Pass match_case flag through to the + database lookup. + (try_db): Likewise. + * src/check_mandirs.c (test_manfile): Make sure lookups are + case-sensitive. + * src/straycats.c (check_for_stray): Likewise. + * src/whatis.c (get_whatis): Likewise. + (whatis): Use a case-insensitive lookup. + + * libdb/db_storage.h (struct mandata): name is no longer const; it + should always be freeable if non-NULL. We no longer use "-" to + indicate it being the same as the requested name, except in the + database itself. + * libdb/db_lookup.c (copy_if_set, dash_if_unset): New functions. + (infoalloc): Zero the newly allocated structure. + (free_mandata_struct): Free name if it's set. + (dbprintf, split_content, make_content, dblookup): Cope with the + new convention for info->name. + * libdb/db_store.c (replace_if_necessary): Likewise. + * src/check_mandirs.c (filename_info): Likewise. + * src/man.c (compare_candidates, add_candidate, display_database): + Likewise. + * src/whatis.c (display): Likewise. + + * libdb/db_storage.h: Update prototypes. + +Mon Apr 29 00:13:58 BST 2002 Colin Watson + + * src/whatis.c (display): Display page names in the correct case + using the new info->name field. + +Mon Apr 29 00:00:38 BST 2002 Colin Watson + + * src/whatis.c (use_grep): Put a space in the grep command before + the flags! + +Sun Apr 28 23:50:22 BST 2002 Colin Watson + + Pass through much of the code adding 'const' where appropriate. This + should help me avoid various memory management bugs. + + Noteworthy changes from this: + + * include/manconfig.h.in (struct compression): prog and ext + generally shouldn't be modified directly. + * libdb/db_lookup.c (make_content): dash really has to stay + constant, or the various things that point to it statically will + break other things badly. + * libdb/db_storage.h (struct mandata): The only pointers here that + should generally be modified directly are next and addr. + * libdb/db_store.c (dbstore): Remove debugging code left from + previous checkin. + * src/check_mandirs.c (splitline): Note that we're deliberately + modifying info->whatis here. + (filename_info): Modify to be more const-friendly. + * src/compression.c (comp_file): Add TODO for comp->file. + * src/man.c (find_cat_file): Drop unused sec argument, and update + callers. + + * include/manconfig.h.in, libdb/db_storage.h, src/hashtable.h, + src/man.h, src/manp.h: Update prototypes for all of the above. + +Fri Apr 26 01:59:46 BST 2002 Colin Watson + + Add case-insensitivity support to the database. + + * libdb/db_storage.h (struct mandata): Add 'name' element. + * libdb/db_lookup.c (dbprintf): Print name. + (split_content): Read name from start of data. + (make_content): Prepend name to each data element. + (name_to_key): New function, converting a name to lowercase for + use in database keys. + (make_multi_key): Use name_to_key(). + (dblookup): Use name_to_key(). If info->name is "-", set it to the + requested key instead. + * libdb/db_delete.c (dbdelete): Use name_to_key(). + * libdb/db_store.c (dbstore): Likewise. + + * src/check_mandirs.c (make_filename): Use in->name if name is NULL. + (filename_info): Fill in info->name with either a new req_name + argument or the supplied base_name. + (test_manfile): Update calls to make_filename() and + filename_info(). + * src/check_mandirs.h: Update prototype. + + * src/man.c (struct candidate): Rename 'name' to 'req_name'. + (display_filesystem, display_database_check): Update accordingly. + (compare_candidates): Sort exact-case matches to the front. + (add_candidate): Update calls to compare_candidate() and + filename_info(). When comparing duplicates, check the name field + in the mandata rather than the requested name. + (try_section): The hack to get the name from info_buffer is no + longer required now that filename_info() fills that in. + (display_filesystem): Update calls to make_filename(). Use the + mandata name for the displayed title rather than the requested + name. Sanity-check in->name != "-". + + * include/manconfig.h.in: Bump the database version to 2.4.0. + + * lib/xstrndup.c: Prototype strnlen(). + +Mon Apr 22 00:00:08 BST 2002 Colin Watson + + * src/globbing.c (match_in_directory): New function, implementing a + limited glob() with optional case-insensitivity. + (look_for_file): Use match_in_directory() rather than glob(). + Accept new match_case argument. + * src/globbing.h: Update prototype. + * src/check_mandirs.c (purge_whatis, purge_missing): Update calls to + look_for_file(). + * src/man.c (usage, man_getopt): Add --ignore-case and --match-case + arguments. + (try_section): Update calls to look_for_file(). + (try_section, display_filesystem, display_database, + display_database_check, display_pages, man): Make sure to use the + candidate name rather than the requested name, so that + case-insensitive lookups work. + * man/man1/man.man1 (OPTIONS): Document --ignore-case and + --match-case. + + * po/.cvsignore: Ignore man-db.pot rather than man_db.pot. + +Thu Apr 18 11:15:11 BST 2002 Matej Vela + + * docs/manpage.example: Use .BR for links to other man pages. + +Wed Apr 3 19:54:03 BST 2002 Colin Watson + + * Rename package from man_db to man-db. + + * docs/NEWS: Start updating for 2.4.0. + +Wed Apr 3 18:44:04 BST 2002 Colin Watson + + * GNUmakefile.in (distclean): Remove autom4te.cache. + +Wed Apr 3 18:40:19 BST 2002 Colin Watson + + * .cvsignore: Add autom4te.cache. + * configure.in: Use AC_LIBOBJ rather than setting LIBOBJS directly. + (--enable-setuid): Use quadrigraphs to get [ and ]. + (--with-config-file): New option. + * include/Defines.in (config_file): Honour --with-config-file + setting. + +Fri Mar 29 21:08:37 GMT 2002 dann frazier + + * docs/manpage.example.sgml: Update copyright year. + +Thu Mar 21 16:22:58 GMT 2002 Colin Watson + + * src/man.c (main): Save the value of $LESS at startup to + $MAN_ORIG_LESS, and use that saved value in preference to $LESS. + This lets recursive invocations of man give less the correct page + titles. + +Wed Mar 20 09:37:11 GMT 2002 Eirik Fuller + + * src/check_mandirs.c (splitline): Don't create a copy of base_name + as pointer_name. + (test_manfile): Be more careful about pointer reuse across calls + to splitline(). + +Mon Feb 11 13:01:07 GMT 2002 Michael Piefel + + * po/de.po: Corrections and updates; convert to UTF-8. + * man/THANKS: Add credit (the contributor of the previous de.po is + unidentified). + +Sun Jan 27 03:31:11 GMT 2002 Colin Watson + + * configure.in (ALL_LINGUAS): Add da. Reorder alphabetically. + +Sat Jan 12 17:55:12 GMT 2002 Colin Watson + + * src/lexgrog.l: Match a line at a time rather than a character at a + time after the end of the NAME section. + + * src/check_mandirs.c (testmandirs): More --debug information. + + * include/manconfig.h.in (LESS_OPTS): Prune duplicate -Pm option. + Set -PM too so it works even when $LESS contains -M. + * src/man.c (make_display_command): Substitute prompt_string into + LESS_OPTS twice to accommodate the above. + +Mon Jan 7 16:16:02 GMT 2002 Colin Watson + + * src/lexgrog.l: Another {blank_eol} fix, thanks to Peter Clay. + +Sun Jan 6 19:05:46 GMT 2002 Colin Watson + + * src/lexgrog.l: Use {blank_eol}, not [blank_eol]. The latter + matches in entirely inappropriate places. + +Sun Dec 23 06:17:47 GMT 2001 Colin Watson + + * src/man.c (long_options, usage, man_getopt): Add a new + -E/--encoding option. It behaves a little like -T, except that it + uses nroff instead of troff and outputs to a pager. + (make_roff_command): Only call determine_lang_table() if + roff_device isn't already set. + (display, try_section, display_filesystem, display_database): + Check for different_encoding. + * man/man1/man.man1 (DEFAULTS, OPTIONS): Document -E. + +Sun Dec 23 05:23:05 GMT 2001 Colin Watson + + * src/man.c (compare_candidates): Compare sections according to + section_list before comparing them lexicographically. + (add_candidate): Do a better job of inserting each entry at the + right place in the list. + +Sun Dec 23 04:47:02 GMT 2001 Colin Watson + + * src/man.c (determine_lang_table): Format man pages in UTF-8 if + that's the current locale's character set. + +Sun Dec 23 02:35:24 GMT 2001 Colin Watson + + * src/man.c (popen, pclose): Move to a separate library file ... + * lib/popen.c: ... here. + * acinclude.m4 (MAN_FUNC_PCLOSE): Use AC_LIBOBJ to conditionally + compile this. + * acconfig.h: Remove BROKEN_PCLOSE definition. + + Major rewrite of man's searching code to make it maintainable and to + prepare for better sorting of displayed man pages. + + * src/man.c (add_candidate): New function to add an item to a list + of candidate pages. + (compare_candidates): New helper function. + (compare_names, compare_mandata_ext): Remove. + (try_section): Use add_candidate() rather than displaying the page + immediately. + (try_db): Likewise. + (display_filesystem): New function to display pages found by + try_section(). + (try_db_section): Rename to display_database(), and use the + candidate structures. + (exist_check): Rename to display_database_check(); use candidates. + (locate_page): Pass the candidate list through to try_section() + and try_db(). + (display_pages): New function to iterate through a candidate list + and display each entry. + (man): Create a candidate list and pass it to locate_page(). + Display pages only after building the full list. + +Mon Dec 17 03:40:48 GMT 2001 Colin Watson + + * man/man8/mandb.man8 (EXIT STATUS): Document mandb's exit codes. + +Mon Dec 17 03:20:15 GMT 2001 Colin Watson + + * src/whatis.c (long_options): Remove duplicate for --exact. + (word_fnmatch): New function. + (parse_whatis): Match using word_fnmatch() if --wildcard but not + --exact was given. + * man/man1/apropos.man1 (OPTIONS): Document this. + (DESCRIPTION): Fix typographical glitch. + +Mon Dec 17 00:53:20 GMT 2001 Colin Watson + + * man/man1/man.man1 (OPTIONS): Mention groff 1.17 and the ps and + utf8 devices. + * man/*/man1/man.man1: Likewise. + +Sun Dec 9 03:31:54 GMT 2001 Morten Brix Pedersen + + * po/da.po: New file. + * man/THANKS: Add credit. + +Sun Dec 9 03:19:57 GMT 2001 Jose Rodriguez + + * src/man.c (main): Initialize program_name before calling error(). + +Fri Dec 7 01:35:31 GMT 2001 Colin Watson + + * configure.in: Detect libdb3, although man-db hasn't been well + tested with it yet. + +Fri Dec 7 00:35:53 GMT 2001 Paul Slootman + + * src/man.c (main): Delete spurious backslashes in prompt_string. + +Wed Nov 21 20:59:14 GMT 2001 Colin Watson + + * po/fr.po: Update from Laurent Pelecq. + * po/.cvsignore: Ignore ChangeLog. + +Wed Nov 21 00:48:50 GMT 2001 Colin Watson + + Keeping generated files like the output of gettextize in CVS is bad. + + * intl/*, po/ChangeLog, po/Makefile.in.in: Remove. + * autogen.sh: Run gettextize. + * release.sh: When releasing, pass --copy to gettextize. + +Wed Nov 21 00:29:26 GMT 2001 Colin Watson + + * src/compression.c (decompress): Free esc_file and esc_filename + once we're finished with them. + + * src/man.c (local_man_loop): If argv is a directory, display a + useful error message rather than letting zsoelim get confused. + +Mon Nov 19 00:53:03 GMT 2001 Colin Watson + + * libdb/db_lookup.c (copy_datum): Explicitly null-terminate + dat.dptr, since C string-manipulation functions are used on it. + +Fri Nov 16 04:28:31 GMT 2001 Colin Watson + + * src/manp.c (add_nls_manpath): Concatenate strings more safely. + + Changes adapted from a patch by OGAWA Hirofumi + : + + * acinclude.m4 (MAN_CHECK_BDB): $LIBS, not LIBS, and quote it while + we're here. + * src/manp.c (pathappend): Use strsep() rather than strtok(). + (cat_manpath): Likewise. + (add_nls_manpath): Likewise. + +Thu Nov 8 11:27:32 GMT 2001 Colin Watson + + * src/man.c (get_preprocessors_from_file): Drop privileges to access + temporary file. + +Wed Nov 7 13:34:38 GMT 2001 Colin Watson + + * src/man.c (format_display): Drop privileges throughout. Don't free + command until after it could have been used for an error message. + +Sun Oct 14 05:23:20 BST 2001 Colin Watson + + * src/version.c: Include for exit(). + * include/manconfig.h.in: Remove spurious orphaned #ifdef. Oops. + + Spanish translation updates from David Martínez : + + * po/es.po, man/es_ES.88591/man1/apropos.man1: Bring up to date. + * man/man1/lexgrog.man1: Fix thinko - s/problems/programs/. + +Tue Sep 25 22:46:45 BST 2001 Colin Watson + + * src/whatis.c (get_whatis): Suppress wrong report of a pointer loop + when the second or subsequent element in a pointer chain points to + itself and has a usable whatis. + +Wed Sep 19 00:47:55 BST 2001 Colin Watson + + * src/man.c (local_man_loop): Drop privileges throughout. + + Documentation corrections thanks to Andreas Dilger + : + + * man/man1/man.man1 and translations (SEE ALSO): Refer to man(7). + * docs/manpage.example, docs/manpage.example.pod, + docs/manpage.example.sgml (SEE ALSO): Move to the end. + (SYNOPSIS, DESCRIPTION, OPTIONS): Add more advice. + * docs/manpage.example (FILES): Restore tabs that had been turned + into spaces. + +Tue Sep 18 03:46:00 BST 2001 Colin Watson + + * lib/xstrndup.c: New file. + * lib/Makefile.in: Build it. + * include/manconfig.h.in: Prototype xstrndup(). + + * src/man.c (compare_names, compare_mandata_ext): New functions. + (try_section): Build title more locally, displaying extensions + correctly. Sort the results of look_for_file(). + (try_db_section): Build title even if NROFF_MISSING is defined. + (try_db): Sort data returned from the database. + (locate_page): Look in the filesystem first and then the database, + rather than the other way round. + + * src/manp.c (checkpath): Remove; it used to resolve symlinks, but + it doesn't do that any more and I don't think it should. + * src/manp.c: Constify arguments to many functions by either being + more careful not to alter them or by duplicating them. + * src/util.c (is_directory): Likewise. + * src/catman.c, src/man.c, src/mandb.c, src/whatis.c (main): + Simplify calls. + * src/manp.h, include/manconfig.h.in: Update prototypes. + * src/manp.h: add_system_manpath() is static now. + + * include/manconfig.h.in: Provide stupid getcwd() emulation with + getwd() if the former isn't available. + * src/man.c (main, format_display): Assume getcwd() is available. + * src/mandb.c (main): Likewise. + * src/manp.c (add_dir_to_path_list): Likewise. + + * src/manp.c (add_dir_to_path_list): The checks that manpaths end in + /man or /MAN were overly anal and never compiled in; remove them. + + * acinclude.m4 (MAN_PROG_GNU_NROFF): More portable shell for ash. + + * src/man.c (lang_table): We use the latin1 alias rather than + iso8859 for all other languages, so do so for Korean too. + + * src/lexgrog.l: Prevent the no-op request '.' from eating text on + the next line. + (find_name): Remove trailing spaces as well as leading ones. + +Fri Sep 7 19:28:12 BST 2001 Colin Watson + + * Version: 2.3.20. + * docs/NEWS: Update. + * po/cs.po, po/de.po, po/es.po, po/fr.po, po/it.po, po/ja.po: + Update. + +Fri Sep 7 00:55:53 BST 2001 Colin Watson + + * GNUmakefile.in (dist): Include other manpage.example formats. + + * lib/tempfile.c (create_tempfile): Create with mode 0600. + * src/check_mandirs.c (test_manfile): Drop privileges for temporary + file operations. + * src/lexgrog.l (find_name): Likewise. + * src/man.c (make_roff_command): Likewise. + * src/straycats.c (check_for_stray): Likewise. + (straycats): Likewise. + * src/ult_src.c (ult_src): Likewise. + +Thu Sep 6 21:54:05 BST 2001 Colin Watson + + * include/Defines.in: Add lexgrog to list of transformed program + names. Adjust sysconfdir detection. + * src/Makefile.in (install): Really install lexgrog by default. + Create the directory config_file is in rather than sysconfdir. + +Wed Sep 5 19:55:01 BST 2001 Colin Watson + + * GNUmakefile.in (dist): Generate a .tar.gz, not a .tgz. + * src/man.c: Korean: roff_device is ascii8, LESSCHARSET is iso8859. + * po/cs.po, po/de.po, po/es.po, po/fr.po, po/it.po, po/ja.po: + Update. + +Wed Sep 5 03:42:18 BST 2001 Colin Watson + + * src/compression.c (decompress): Constify arguments. + * include/manconfig.h.in: Likewise. + + * src/lexgrog.l (find_name): Deal with '-' and compressed files. + * man/man1/lexgrog.man1 (DESCRIPTION): Document this. + (BUGS): Remove (optimism ...). + (NOTES): New section. lexgrog can't parse .so requests. + * src/Makefile.in: Really build lexgrog by default, and add some + objects. + +Wed Sep 5 02:02:20 BST 2001 Colin Watson + + * docs/NEWS: Describe recent changes. + + * man/man1/man.man1 (OPTIONS): Document --html. + (ENVIRONMENT): Document $BROWSER. + * man/man8/mandb.man8 (OPTIONS): Explain that --create implies + --no-purge. + +Tue Sep 4 18:38:23 BST 2001 Colin Watson + + * src/man.c (format_display): If $BROWSER contains several elements + separated by colons, try each in turn until one succeeds. + +Tue Sep 4 02:09:07 BST 2001 Colin Watson + + * src/man.c (format_display): Actually change to the temporary + directory for HTML output. + * src/mandb.c (main): --create implies --no-purge. + +Sat Sep 1 17:40:06 BST 2001 Colin Watson + + * lib/mkdtemp.c, lib/mkstemp.c, lib/tempname.c: New files, taken + from glibc 2.2.4. + * lib/Makefile.in, lib/README: Add them. + * configure.in: Check for mkdtemp() and mkstemp(). + * lib/tempfile.c (path_search): New function, split from + create_tempfile(). Now checks $TMP as well as $TMPDIR, and ensures + that neither is checked when privileges are raised. + (create_tempfile): Use it. Fix the umask around the call to + mkstemp() rather than calling fchmod() after the fact. + (create_tempdir): New function. + * include/manconfig.h.in: Prototype create_tempdir(). + + * src/man.c: --html code needs to be guarded by TROFF_IS_GROFF. + (man_getopt): If -H is given, set troff to 1. Add -H to the + "incompatible options" error message. + (make_roff_command): Revert determine_lang_table() special case. + (format_display): Use a temporary directory for HTML output (groff + tends to output several files, including images). Take an extra + argument, used to set the name of the main output file. + (display): Pass man_file to format_display(). + * src/util.c (remove_directory): New function. + * include/manconfig.h.in: Prototype it. + +Fri Aug 31 22:20:08 BST 2001 Colin Watson + + Initial support for ESR's $BROWSER variable. Not complete yet. + + * src/man.c: Remove ENABLE_HTML guards around all the --html code. + Too many #ifdefs clutter the code, and it should at least be + usable to some extent now. + (main): Check $BROWSER before other ways of finding html_pager. + (man_getopt): If -H is given, set roff_device to "html". Reset + htmlout and html_pager with -D. + (make_roff_command): Don't call determine_lang_table() if htmlout + is set. + (make_browser): New function. + (make_display_command): Add case for htmlout being set. + (format_display_and_save): Rename roff_cmd to format_cmd. + (display_catman): Likewise. + (display): Likewise. Add some cases for htmlout being set (always + format, never save a cat page). Split some code out into + format_display(). + (format_display): New function. + + * src/man.c (main): Save the value of $LESS for later. + (make_display_command): Use setenv() to change $LESS in the + environment rather than nasty shell code. + + * src/man.c (main): Don't loop if $LANGUAGE is set but empty. + (display_catman): Fix segfaults due to strappend() misuse. + * src/manp.c (read_config_file): Print dotmanpath, not home (which + might point to freed memory). + + * src/man.c (main): Tidy up error message. + (store_line_length): Remove duplicate 'int width' declaration. + +Wed Aug 29 20:44:27 BST 2001 Colin Watson + + * man/man8/mandb.man8 (WHATIS PARSING): Move to ... + * man/man1/lexgrog.man1: ... here. + + * po/cs.po, po/de.po, po/es.po, po/fr.po, po/it.po, po/ja.po: Run + msgmerge. + +Wed Aug 29 01:48:53 BST 2001 Colin Watson + + * man/man1/apropos.man1 (ENVIRONMENT): Fix grammar error. + +Wed Aug 29 01:34:33 BST 2001 Colin Watson + + * src/lexgrog.l (usage): New function. + (main): Rewrite. Add command-line options, and make the output + more easily parseable by other programs. By default, the lexgrog + program now only attempts to parse its input as a man page and + only displays the whatis line, although this can be changed on the + command line. + * src/Makefile.in: Include lexgrog in $(PROGS), so that it gets + built by default and linked against version.o. + * man/man1/lexgrog.man1: New man page. Still needs some work. + * man/Makefile.in: Install it. Tolerate it being missing in some + languages (ugly hack). + +Tue Aug 21 01:57:44 BST 2001 Colin Watson + + * src/Makefile.in: Link non-setuid programs against fake_security.o + rather than security.o. + * src/fake_security.c: Add a few stub variables to match recent + security.c changes. + +Tue Aug 21 01:34:49 BST 2001 Colin Watson + + * src/Makefile.in (install): Don't depend on all, so that the + package isn't recompiled when running 'make install' on a machine + with a skewed clock. + Don't install the wrapper. Install man and mandb in $(bindir) + rather than $(libdir)/man-db. + If lexgrog and globbing have been built, install them in + $(libdir)/man-db rather than $(sbindir). + Ensure $(sbindir) and $(libdir)/man-db exist. + +Tue Aug 21 00:40:47 BST 2001 Colin Watson + + * src/man.c (escape_special): Rename to escape_less(). Constify + argument. + (determine_lang_table): Constify argument. Unify some common code. + (make_display_common): Use escape_less() rather than + escape_special(). + * docs/NEWS: Document shell escaping. + +Sun Aug 19 23:56:36 BST 2001 Colin Watson + + * configure.in: Compile with -Wall by default. + * src/compression.c: Include "security.h". + * src/manp.c: Likewise. + * src/check_mandirs.c (purge_whatis): Correct return value when + purging a WHATIS_MAN entry with a missing target. + * src/whatis.c (get_whatis): Remove unused variables 'pointer' and + 'ext'. + * src/man.c: Include for time(). + (local_man_loop): Remove unused variable 'dir'. + (make_roff_command): Remove unused variable 'tmpfile'. + (exist_check): Print 'loc' in pointer format rather than string + format (it's a struct mandata *). + * src/wrapper.c: Include for initgroups(). + +Sun Aug 19 13:16:01 BST 2001 Colin Watson + + * src/manp.c (iterate_over_list): New function (get_from_list() can + only get the first matching element). + (get_manpath): Use iterate_over_list() to get multiple matching + MANPATH_MAP entries. + +Sun Aug 19 13:02:01 BST 2001 Colin Watson + + * src/man.c (popen, pclose): Rely on the BROKEN_PCLOSE check in + configure rather than checking architectures here. + (man_getopt): Wrap the remaining code related to --html in '#ifdef + ENABLE_HTML'. + (make_roff_command): Remove HAS_TROFF and NROFF_MISSING asserts; I + think they're unnecessarily unwieldy here. + (tmp_cat_filename): Constify argument. + (commit_tmp_cat): Constify arguments. + (display_catman): New function, split from display(). + (display): Use display_catman(). Don't shadow status from an outer + scope. + (try_section): Simplify cat page case. + + * src/util.c (escape_shell): New function. + * include/manconfig.h.in: strappend() is no longer in util.c. + Prototype escape_shell(). + * src/man.c (make_roff_command): Use escape_shell() liberally to + protect against strange characters. + (make_display_command): Likewise. Add special handling for $MAN_PN + in the less prompt string, since the environment variable is no + longer parsed by the shell. + (display_catman): Likewise. + (display): Likewise. + * src/whatis.c (use_grep): Likewise. + + * src/catman.c (main): Print a warning if setlocale() fails. + * src/man.c (main): Likewise. + * src/mandb.c (main): Likewise. + * src/manpath.c (main): Likewise. + * src/whatis.c (main): Likewise. + * src/wrapper.c (main): Explain why this doesn't need to warn if + setlocale() fails. + +Thu Aug 9 15:10:26 BST 2001 Colin Watson + + * configure.in: Require autoconf 2.50a (for AS_VAR_*). + * src/wrapper.c: If DEBUG is defined, allow _man and _mandb as + argv[0] names as well as man and mandb, rather than instead of + them. + * docs/NEWS: Document lexgrog improvement. The mkstemp() work was + more an improvement than a fix, as I don't think it was + exploitable. + +Mon Aug 6 02:22:38 BST 2001 Colin Watson + + * src/lexgrog.l: groff requests aren't case-sensitive, so stop the + preprocessor detection thinking they are. + +Mon Aug 6 01:26:26 BST 2001 Colin Watson + + * lib/tempfile.c (create_tempfile): Use mode 0644 rather than mode + 0600 so that it can be read with different privilege levels. + +Thu Aug 2 00:12:41 BST 2001 Colin Watson + + * lib/tempfile.c: New file. create_tempfile() does sane + mkstemp()-like temporary file creation, while searching through + $TMPDIR, P_tmpdir, and /tmp in the style of tempnam(). + * include/manconfig.h.in: Prototype create_tempfile(). + * lib/tempnam.c: Remove, as we no longer use it. + * lib/Makefile.in, lib/README: Remove mentions of tempnam.c, and use + tempfile.c instead. + * configure.in: Don't replace tempnam(). + + * src/compression.c (create_ztemp): Use create_tempfile() rather + than tempnam(). + * src/man.c (create_stdintmp): Likewise. + * zsoelim/zsoelim.l (open_file): Likewise. + * src/straycats.c (straycats): Use create_tempfile() rather than + mkstemp(). + + * src/compression.c (decompress): Call remove_ztemp() rather than + duplicating code. + (remove_ztemp): Only close the fd if it looks valid. + * src/man.c (remove_stdintmp): Remember to free stdin_tmpfile. + + * acinclude.m4: Correct AC_VAR_* to AS_VAR_*. + * src/util.c (is_changed): Fix comment. + + * docs/NEWS: Preliminary entries for 2.3.20. + +Tue Jul 24 02:17:53 BST 2001 Colin Watson + + * docs/manpage.example: Some cleanups. Use more conventional + formatting for references to other man pages. + * docs/manpage.example.pod, docs/manpage.example.sgml: New files. + +Mon Jul 16 16:42:46 BST 2001 Colin Watson + + * src/lexgrog.l: Restore fr_name to the NAME regex. + +Fri Jul 13 11:51:40 BST 2001 Colin Watson + + * man/de_DE.ascii: Remove (Latin-1 variant still exists). + +Fri Jul 13 02:35:39 BST 2001 Colin Watson + + * */.cvsignore: New files. + + * src/man.c (make_roff_command): Look up the correct character set + each time a page is displayed, not just the first time. + +Thu Jul 12 01:11:41 BST 2001 Colin Watson + + * src/lexgrog.l: Split out NAME-matching regex into one regex per + language. Add support for cs, fi, hu, nl, and pl, not forgetting + Latin (for Lingua::Romana::Perligata(3pm), of course). + (add_separator_to_whatis): New function, to allow trimming the + first space from the " - " separator. + (main): Rewrite; find_name()'s prototype changed long ago. + +Tue Jul 10 14:37:51 BST 2001 Colin Watson + + * src/util.c (is_newer): Rename to ... + (is_changed): ... this. We now check whether the cat page has a + different timestamp from the man page, rather than simply whether + it is newer. + Remove hack for archivers that preserve timestamps: it's no longer + needed. + * include/manconfig.h.in: Rename is_newer() prototype to + is_changed(). + + * src/man.c (commit_tmp_cat): Set the modification time of a created + cat page to be the same as the corresponding man page. + (display): stat() the man page so that commit_tmp_cat() can get + its modification time. + Use is_changed() rather than is_newer(). + +Sun Jul 8 16:06:43 BST 2001 Colin Watson + + * src/whatis.c (get_whatis): Allow an entry to point to itself if it + contains a non-empty whatis field. This occasionally happens when + multiple names and descriptions are present, and it's easier to + tolerate this. + (display): If an entry points to itself, don't display the pointer + in square brackets. + + * include/sections.list: Remove; it's no longer needed. + * GNUmakefile.in (dist): Don't install it. + * include/Defines.in: Don't reference it. Also remove definition of + message_catalogue (obsoleted by gettext). + + * include/manconfig.h.in (LESS_OPTS): Don't include $LESS. + * src/man.c (make_display_command): Include $LESS here instead. Put + it after prompt_string rather than before, so that long options in + $LESS work. + +Sat Jul 7 16:32:24 BST 2001 Colin Watson + + * src/man.c (determine_lang_table): Fix silly bracketing typo that + caused none of the lang_table entries to match. + +Thu Jul 5 15:48:42 BST 2001 Colin Watson + + * Version: 2.3.19. + + * docs/NEWS: Update. + * man-db.gnu: Update. Change formatting to something closer to that + currently in the Free Software Directory CVS repository. + * man-db.lsm: Update. + +Thu Jul 5 14:27:17 BST 2001 Colin Watson + + * man/man5/manpath.man5 (FORMAT): MANDB_MAP now only affects + setuidness when in the system configuration file. + * src/man_db.conf.in: Likewise. + + * po/cs.po, po/de.po, po/es.po, po/fr.po, po/it.po, po/ja.po: + Update. + +Wed Jul 4 13:39:40 BST 2001 Colin Watson + + The product of some hacking at the Debian Conference. Enjoy. + + * docs/NEWS: Describe recent changes. + + * include/manconfig.h.in: Add SYSTEM_CAT and USER_CAT defines. + Move includes from security.c to ... + * src/security.h: ... here (new file). + * src/man.c: Include security.h. + * src/mandb.c: Likewise. + * src/security.c: Likewise. + + * src/manp.c (add_mandb_map): Take an additional parameter, user. + Use the new MANDB_MAP_USER flag instead of MANDB_MAP if it is set. + (cat_manpath): Look at user catpaths before system catpaths. + (add_to_dirlist): Take user parameter, passed through to + add_mandb_map(). + (read_config_file): Call add_to_dirlist() with user set for + ~/.manpath, and reset for /etc/manpath.config (security fix). + (get_mandb_manpath): Allow user manpaths. + (global_catpath): Rename to get_catpath(), and only allow it to + handle user catpaths (from ~/.manpath) as well if explicitly + requested. + (is_global_mandir): Note that this is trusted. + * src/manp.h: Reflect renaming of global_catpath() to get_catpath(). + + * src/man.c (need_to_rerun): Use get_catpath() instead of + global_catpath(). + (make_roff_command): Likewise. + (display): Likewise. + (find_cat_file): Likewise. + (try_db_section): Likewise. + (try_db): Likewise. + * src/catman.c (main): Likewise (check only user mandirs). + * src/mandb.c (main): Likewise (check only user mandirs). + * src/straycats.c (straycats): Likewise (check only with user + mandirs). + * src/whatis.c (search): Likewise (check only with user mandirs). + + * src/man.c (need_to_rerun): Use is_global_mandir() rather than + global_catpath() to decide whether to drop privileges. + * src/mandb.c (main): Likewise. Unify common code for system and + user catpaths. + + * src/man.c (make_roff_command): Check catpath even if + global_manpath is false. + (locate_page): Simplify slightly. + + * src/security.c (get_man_owner): New function: gets and caches the + password entry structure for MAN_OWNER. + * src/man.c (commit_tmp_cat): If running as root, chown created cat + pages to MAN_OWNER. + +Sun Jul 1 01:58:33 BST 2001 Colin Watson + + * src/check_mandirs.c (splitline): Don't initialize the pointer + field here; instead, control it from ... + (test_manfile): ... here. + Change the logic for multiple name/description blocks again. + Remove misguided special-casing of the first name in a block. Set + the id field more carefully, depending on string equality instead + of ordering. Avoid scribbling over lg.whatis when a later + splitline() needs it. Don't call splitline() if whatis parsing + failed. + + * src/check_mandirs.c (purge_normal): New function, factored out + from purge_missing(). + (purge_whatis): New function to decide whether to purge a + WHATIS_MAN entry. + (purge_missing): Use both of these. + (testmandirs): purge_whatis() sometimes needs to ensure a + hierarchy is rescanned. Honour this. + Improve indentation levels. + * src/mandb.c (main): Reset force_rescan before each purge. + + * src/lexgrog.l: Treat '..' as a no-op request. + +Sun Jul 1 01:38:13 BST 2001 Colin Watson + + * manual/misc.me (Modes of operation): Mention new requirement to + use --update to update databases. + mandb knows how to delete old entries now, so remove a sentence + saying it can't. + + * src/man.c: More in the quest for sane indentation levels. + + * man/man1/apropos.man1: Textual cleanups. + * man/man1/man.man1: Likewise. + * man/man1/manpath.man1: Likewise. + * man/man1/whatis.man1: Likewise. + * man/man1/zsoelim.man1: Likewise. + * man/man5/manpath.man5: Likewise. + * man/man8/accessdb.man8: Likewise. + * man/man8/catman.man8: Likewise. + + * man-db.lsm: Reformatted as per the LSM.README. + +Thu Jun 28 22:52:04 BST 2001 Colin Watson + + * src/man.c (try_db_section): Downgrade whatis refs warning to a + debugging message, as it's rather noisy for a stable release. + +Thu Jun 28 22:38:41 BST 2001 Colin Watson + + * src/check_mandirs.c (gripe_rwopen_failed): New function. + (testmandirs): Use it. + (purge_missing): New function to purge database entries whose + associated manual pages have been deleted. + * src/check_mandirs.h: Prototype purge_missing(). + + * src/mandb.c (main): New --no-purge option. Unless it is used, + purge_missing() is called on each database before calling mandb(). + Don't call straycats() until after the temporary database has been + moved to its permanent location. Make sure all cleanup code is + called with dropped privileges. + Add statistics message for purged entries, and separate messages + for the benefit of translations. + When --test is given, only assume --quiet if --debug wasn't given. + (usage): Describe --no-purge. + + * src/man.c: Move extension's storage to ... + * src/globbing.c: ... here. + (look_for_file): Constify string arguments. + * src/man.h: Move prototype of look_for_file() to ... + * src/globbing.h: ... here (new file). + + * src/manp.c (pathappend): Only append the new element(s) if any + were left after removing duplicates. + (read_config_file): Make sure what we free was actually allocated. + + * src/Makefile.in (mandb): Link with globbing.o. + + * man/man8/mandb.man8 (OPTIONS): Document --no-purge. + General textual cleanup. + + * src/accessdb.c (main): Move content into a tighter scope. + + * src/security.c (drop_effective_privs): Style nit. + +Thu Jun 28 13:28:13 BST 2001 Colin Watson + + * man/man1/man.man1 (ENVIRONMENT): Document $MANWIDTH. + +Thu Jun 28 13:15:04 BST 2001 Colin Watson + + * src/man.c (store_line_length, get_roff_line_length): New + functions, adapted from Andries Brouwer's man. + (main): Outside catman mode, find out and store the line length. + (make_roff_command): Outside catman mode, retrieve the stored line + length and feed a .ll request into the pipeline if it's + non-standard. We let recent groff handle the page length. + (display): Don't even consider saving the cat page if save_cat is + already false. + (get_preprocessors): If the database says no preprocessors are to + be used, it's OK to save the cat page. + +Thu Jun 28 01:44:02 BST 2001 Colin Watson + + * src/man_db.conf.in (SECTION): Remove guarantee that ties will be + broken in lexical order within sections. It's rather complicated + to be sure of that right now, and it should rarely matter. + + * docs/ToDo: lexgrog learnt how to detect preprocessors ages ago. + +Thu Jun 28 01:02:32 BST 2001 Colin Watson + + * src/manp.c (gripe_stat_file): Downgrade the warning if a manpath + element doesn't exist to a debugging message (affects people + without a /usr/local/share/man, for example). + (read_config_file): Additional debugging message. Free home if it + gets allocated. + +Thu Jun 28 00:35:09 BST 2001 Colin Watson + + The caching cleanup I've been promising for weeks. Here be dragons. + + * src/man.c (man): Only update database caches if --update is given. + (main): --all no longer implies a database update (you can always + use --all --update if you need that). + + * man/man1/man.man1 (OVERVIEW): It's no longer necessarily man's job + to keep the caches up to date; use --update to get that. + (DEFAULTS): Likewise. Some rationale. Mention globbing fallback. + (OPTIONS/--local-file): Fix typo. + (OPTIONS/--update): New description. Only useful with setuid man. + * manual/misc.me (Modes of operation): man will only update database + entries if the --update flag is used. + +Tue Jun 26 22:10:07 BST 2001 Colin Watson + + * src/lexgrog.l: More cleanup. No substantive changes. + * include/manconfig.h.in: Likewise. Also bring xrealloc() prototype + into sync. + + * src/mandb.c (main): Allow root as well as MAN_OWNER to work on + system manpaths. + +Tue Jun 26 03:45:01 BST 2001 Colin Watson + + * src/man_db.conf.in (SECTION): Add a little more advice about where + to list sections with extensions. + + * src/manp.c (add_to_dirlist): Add SECTIONS as an alias for SECTION, + since I keep getting it wrong and I came up with it in the first + place. Both make sense in different situations. + + * src/check_mandirs.c (splitline): Trim trailing spaces off names + and descriptions. If the given base_name contains a comma, only + use the part of the name before it as the target for pointers. + + * src/whatis.c (get_whatis): Unroll recursion into a finite loop to + avoid infinite recursion if the database contains a pointer loop. + Add the page name as an argument so that a warning can be printed. + (display): Pass the new argument to get_whatis(). + (apropos): Recommend 'mandb --create' rather than plain 'mandb' if + the database gets corrupted. + + * src/lexgrog.l: Ignore no-op groff requests (e.g. '.'). + New variable, fill_mode. Reset it when .nf is encountered, set it + when .fi is encountered. + (newline_found): If fill_mode is set, add 0x11 instead of a space. + +Mon Jun 25 02:55:36 BST 2001 Colin Watson + + * docs/NEWS: Describe recent changes. Add dates of old releases. + + * include/manconfig.h.in: Move check_mandirs.c prototypes to ... + * src/check_mandirs.h: ... here (new file). + * src/man.c: Include check_mandirs.h. + * src/mandb.c: Likewise. + * src/man.h (make_filename): Move prototype to check_mandirs.h. + + * src/check_mandirs.c (test_manfile): Split parsing of file names + into mandata structures into a new function ... + (filename_info): ... this. + (test_manfile): Calculate length of file name minus compression + extension separately from the parsing, and do so whether COMP_SRC + is defined or not. + + * src/man.c (try_section): Use filename_info() to find out if the + section of a glob-located file is different from the current + section and is mentioned elsewhere in the configuration file. If + so, ignore that file in the current section. + +Mon Jun 25 01:30:24 BST 2001 Colin Watson + + * src/man.c (man_getopt): Conditionalize gxditview initialization on + TROFF_IS_GROFF. As a bonus, this squashes a compiler warning. + (man): Remove some unreferenced cruft, while I'm in the process of + fixing up multi-character sections. + + * src/Makefile.in: Build intermediate man.o and mandb.o objects, so + that changing other objects just requires a relink. + + * src/globbing.c (look_for_file): Print the layout in debugging mode + only when it's first parsed. + +Sun Jun 24 18:47:20 BST 2001 Colin Watson + + * configure.in (--with-db): Improve help output formatting. + + * manual/intro.me (Arguments to configure): Document + --enable-mandirs. + * README: Update. + + * manual/Makefile ($(manual).html): Improve grohtml invocation. + (realclean): Remove generated .png files. + +Sun Jun 24 17:22:53 BST 2001 Colin Watson + + * src/man.c (try_section): Break if a page has been found and --all + wasn't given. + (try_db): Print extension in debug mode. Compare against requested + section if the extension is a section in its own right, to avoid + duplication. + * src/man_db.conf.in: It's SECTION, not SECTIONS. + + * configure.in: --enable-mandirs=OS defines how the manual page + hierarchy is laid out (GNU, HPUX, Solaris, IRIX). If unset, + globbing behaves as before. + * acconfig.h: Add MANDIR_LAYOUT. + * src/globbing.c (parse_layout): New function. + (look_for_file): Associate each glob with a layout. + + * configure.in: Don't check for off_t (only used by gettext). + +Sat Jun 23 15:23:14 BST 2001 Colin Phipps + + * zsoelim/zsoelim.l (open_file): Supply a format string to error(). + +Sat Jun 23 15:15:41 BST 2001 Colin Watson + + * ult_src.c (ult_src): Restore the original mantree to the start of + basename before calling test_for_include(), in case ult_softlink() + went outside the mantree. + (ult_softlink): Make debugging message print the absolute path. + +Tue Jun 19 02:33:40 BST 2001 Colin Watson + + * src/man.c (man): Allow sections to be more than one character, and + trim them for use in directory names. + * src/manp.c (read_config_file): Read ~/.manpath first, as entries + are added the other way around now. + +Mon Jun 18 18:55:39 BST 2001 Colin Watson + + * src/manp.c (add_sections, get_sections): New functions. + (add_to_dirlist): Recognize new SECTIONS directive. + * src/manp.h (iterate_catlist, start_iterator): Remove (not used). + (get_sections): New prototype. + * src/man.c (get_section_list): Use get_sections() instead of + std_sections if it returns a non-empty list. + * src/man_db.conf.in: Add documentation of SECTIONS, and a default + line. The documentation is still inaccurate (extensions don't work + well yet). + * include/manconfig.h.in (STD_SECTIONS): Reduce to only + single-character sections; the rest will be set in the + configuration file. + + * src/manp.c (add_to_list): Add to the tail rather than the head + (needed for SECTIONS, probably makes other things more intuitive). + (read_config_file): Restore print_list() in debug mode. + + * src/check_mandirs.c: Add copyright notice and change information. + * src/lexgrog.l: Likewise. + * src/man.c: Likewise. + * src/mandb.c: Likewise. + + * src/compression.c (get_ztemp): Remove redundant test. + + * src/man.c (get_preprocessors_from_file): Change an = to ==. + + * src/wrapper.c (main): Cosmetic improvements. + +Sat Jun 16 19:22:51 BST 2001 Colin Watson + + * src/straycats.c (check_for_stray): Check that + canonicalize_file_name() succeeded, not that it failed. (I'm + pretty sure that this is the last instance of this now.) + +Sat Jun 16 18:30:09 BST 2001 Colin Watson + + * libdb/db_store.c: Move id-favouring logic to a macro. If + FAVOUR_STRAYCATS is set, make sure a WHATIS_MAN entry won't + inadvertently replace a STRAY_CAT. + + * configure.in: Don't strip binaries in LDFLAGS (GNU standards). + + * src/check_mandirs.c (testmandirs): Check that opendir() succeeded, + not that it failed! + (testmandirs): Instead of initializing info.pointer here, + initialize it ... + (splitline): ... here. + (testmandirs): Shuffle whatis logic some more, to make sure pages + that really are in the filesystem don't end up as WHATIS_MAN. This + reverts part of the change of 26 May 2001. + + * man/man8/mandb.man8: Document the expected format of NAME sections + for whatis parsing, and some common reasons why parsing fails. + +Tue Jun 12 22:20:17 BST 2001 Colin Watson + + * docs/NEWS: More 2.3.19 stuff. + +Sun Jun 10 14:05:10 BST 2001 Gordon Sadler + + * man/man1/manpath.man1 (ENVIRONMENT): Replace 'semicolon' with + 'colon' throughout. + +Sun Jun 10 13:59:04 BST 2001 Colin Watson + + * src/manp.c (pathappend): Fix infinite loop when adding a manpath + entry which is a substring of an existing entry. + +Sun Jun 10 13:49:02 BST 2001 Colin Watson + + * src/check_mandirs.c (testmandirs): Treat EROFS like EACCES while + opening a database read-write (i.e. only print debug messages). + (create_db): Likewise. + src/man.c (open_cat_stream): Likewise. + (try_db_section): Likewise. + + * src/straycats.c (check_for_stray): Carry on gracefully rather than + exiting if a straycat filter fails. + + * src/manp.c (pathappend): Remove duplicate entries. + + * src/lexgrog.l: Allow .LP, .PP, and .P as well as .br between + whatis definitions. + +Sat Jun 2 14:34:59 BST 2001 Colin Watson + + * configure.in: Give our English man pages the same date format as + the other locales. + + * src/straycats.c: Use 'col -bx' rather than 'col-bx'. + +Mon May 28 14:56:35 BST 2001 Colin Watson + + * include/manconfig.h.in: Since it isn't sensible to define debug + (-d options at run-time do just as well), remove the commented + definition. + * include/manconfig.h.in, src/catman.c, src/check_mandirs.c, + src/compression.c, src/man.c, src/mandb.c, src/manpath.c, + src/whatis.c: Remove instances of '#ifndef debug'. + * src/util.c: debug is already declared extern in manconfig.h. + +Mon May 28 14:30:38 BST 2001 Colin Watson + + * tools/README: Describe chconfig and install-manpage. + * man/man5/manpath.man5, docs/ToDo: Document the DEFINE directive. + + * libdb/db_delete.c, libdb/db_lookup.c, libdb/db_store.c, + src/whatis.c: Remove redundant strtok() declaration. + * src/check_mandirs.c: Declare strpbrk(). + + * src/*: Global style cleanup. Sorry about the large diff, but it + had to happen sometime: I can't stick with the prevailing coding + style when there are several to choose from! No meaningful code + change, although I disentangled a few assignments from if + conditions and rearranged a few other sections. + * po/*: Update accordingly. + +Sun May 27 18:32:41 BST 2001 Colin Watson + + * acinclude.m4 (MAN_CHECK_BDB): New macro to check for Berkeley DB. + * configure.in: Use it. + + * src/check_mandirs.c (test_manfile): Be more accurate about finding + the " - " at the end of a series of whatis names, and make sure to + skip commas between them. Add more commentary. + + * src/man.c (open_cat_stream): Return NULL if the cat page is + unwriteable, rather than wasting time compressing to /dev/null. + (format_display_and_save): Give up if both outing and saving + become false. + +Sun May 27 18:00:00 BST 2001 Colin Watson + + * docs/NEWS: Preliminary entries for 2.3.19. Add current version + number throughout as well as just "Major changes since ...". + * manual/misc.me (Modes of operation): mandb doesn't necessarily + have to be rerun any more, as the filesystem will be checked if + the database doesn't return anything. man and mandb can be built + for setuid operation but installed non-setuid now. + +Sat May 26 15:33:37 BST 2001 Colin Watson + + * manual/README: Note that HTML output is disabled by default. I + don't currently provide a pre-built PostScript manual anywhere. + * manual/misc.me (Credits): Add Fabrizio. + * manual/*: FHS updates. Various boring typo/syntax/whitespace + fixes. + +Sat May 26 15:14:29 BST 2001 Colin Watson + + * GNUmakefile.in, autogen.sh: Put 'timestamp' in stamp-h and + stamp-h.in rather than the date. + + * src/man.c (open_cat_stream): Open the cat file before forking in + order to deal with errors better. Open to /dev/null without + complaining if the cat file is unwriteable. + (close_cat_stream): Only commit the temporary cat if it was + created. + (locate_page): Fall back to the filesystem if nothing was found in + the database (since it might be out of date). + + * src/man.c (try_db_section): If the database can't be opened + read-write due to EACCES, only print a message in debug mode. + * src/check_mandirs.c (testmandirs): Likewise. + (create_db): Likewise. + + * src/check_mandirs.c (test_manfile): Make sure separate whatis keys + each get their own whatis entry. + +Wed May 23 17:06:31 BST 2001 Colin Watson + + * configure.in: Fix PACKAGE and VERSION substitutions. + +Wed May 23 15:51:06 BST 2001 Colin Watson + + * configure.in: Updates for autoconf 2.50. + (AC_PREREQ): Require version 2.1.2. + (AC_INIT): Avoid deprecated use with one argument. + (man_ac_version): Don't work out the autoconf version any more; + inline syntax is all that needed it, and any autoconf since 2.1.2 + will do. + (AC_STDC_HEADERS): Now AC_HEADER_STDC. + (AC_LINK_FILES): No longer needed with newer gettext. + (AC_OUTPUT): Avoid deprecated use with arguments. + Fix instances of underquoting throughout, as the new autoconf is + less tolerant of this. + * include/manconfig.h.in: Remove compatibility code for pre-1995 + autoconf versions. + +Thu May 17 19:11:37 BST 2001 Colin Watson + + * src/man_db.conf.in: Improve documentation of MANDB_MAP. + +Wed May 16 00:09:13 BST 2001 Colin Watson + + * tools/config.sub: Update to today's CVS. + +Wed May 16 00:07:04 BST 2001 Colin Watson + + * A number of minor fixes from SuSE's diff: + + * GNUmakefile.in: Don't prepend ../ to prefix before passing it to + subdirs. + * lib/cleanup.c: HUP and TERM signal handling was mistakenly acting + on INT instead. + * src/lexgrog.l: Replace a few instances of " \t\n" with + "blank_eol". + * src/man.c: Drop privileges before changing back to the original + directory just before exiting (only matters for profiling). + * src/util.c: Undefine MAX before redefining it. + * po/POTFILES.in: Read src/lexgrog.c rather than src/lexgrog.l + (gettext understands C better than lex). + * po/de.po, po/es.po, po/fr.po: Remove a few stray '\r's. + + * I'll look at the zlib bits of the patch soon. From a preliminary + look I'll probably end up rewriting it - I'd prefer more of the + compression stuff actually to go in src/compression.c. + +Tue May 15 22:01:59 BST 2001 Colin Watson + + * src/man.c (get_section_list): Return std_sections if argument to + -S was an empty string or if that or $MANSECT contained only + colons. Previously, man would behave wrongly in the former case + and segfault in the latter. Also remove a redundant xstrdup(). + +Mon May 14 23:46:25 BST 2001 Colin Watson + + * Version: 2.3.18. + + * README: Add contact details. + + * libdb/stamp-h: Removed. + * GNUmakefile.in, libdb/Makefile.in: Updated accordingly. + + * src/man_db.conf.in: FHS 2.1 has /usr/local/share/man as the + location of locally installed man pages rather than + /usr/local/man. Accordingly, the MANDB_MAP for /usr/local/man is + now /var/cache/man/oldlocal, and /usr/local/share/man takes over + /var/cache/man/local. + + * po/cs.po, po/de.po, po/es.po, po/fr.po, po/it.po, po/ja.po: Update + with msgmerge. + +Mon May 14 22:18:32 BST 2001 Colin Watson + + * src/security.c: Count how many times drop_effective_privs() has + been called, and don't actually regain privileges until + regain_effective_privs() has been called an equal number of times. + This should flush out several subtle bugs. + + * src/mandb.c: Call manpath() rather than read_config_file() (this + was changed while merging 2.3b12). Otherwise 'mandb --user-db' + segfaults as manp never gets set. + +Sun May 13 18:34:33 BST 2001 Colin Watson + + * GNUmakefile.in (dist): Don't install po/Makefile.in. + + * src/stamp-h: Removed. + * GNUmakefile.in, src/Makefile.in: Updated accordingly. + + * GNUmakefile.in (distclean): Don't clean configure, src/lexgrog.c, + zsoelim/zsoelim.c. + (realclean): Clean configure here instead. realclean targets in + subdirs already remove the other two. + * zsoelim/Makefile.in (clean): Let realclean remove zsoelim.c. + +Sun May 13 17:17:32 BST 2001 Colin Watson + + * man/Makefile.in: Another try to get NLS installation working + properly. The last change was wrong when LINGUAS was unset. + + * GNUmakefile.in (dist): Install docs/manpage.example. + +Sun May 13 16:54:01 BST 2001 Colin Watson + + * man/Makefile.in: Exclude NLS directories without man pages, as CVS + can't delete directories quite as fully as I'd like. + + * configure.in: No subdirectory Makefiles need ALL_LINGUAS any more. + + * manual/Makefile: Make the location of soelim variable so that + distributions can e.g. use the version in the build directory. + + * manual/Makefile, manual/README: Add an HTML target. Disabled by + default as groff's HTML driver doesn't produce very good output + yet (as of 1.16). + + * include/Defines.in: Only remove /usr from the default sysconfdir + if the prefix is exactly /usr, not something that happens to + contain /usr (like the default /usr/local). + +Sun May 13 13:39:17 BST 2001 Colin Watson + + * man-db.gnu, man-db.lsm: Mention move to SourceForge and the new + URLs for the Debian package pool. + + * man-db.gnu: New architectures (successful Debian ports as of + today). New mailing list for announcements. + +Sun May 13 13:18:56 BST 2001 Colin Watson + + * README: Document FHS changes; correct pointer to + docs/INSTALL.autoconf. + + * docs/INSTALL.autoconf: Update to instructions from automake 1.4. + + * docs/COPYING: Minor fixes from GNU (FSF address, Y2K). + +Sun May 13 13:00:17 BST 2001 Colin Watson + + * GNUmakefile.in (dist): Add include/sections.list. + + * GNUmakefile.in, man/Makefile.in: Cause USE_NLS to be substituted + properly from configure. + + * include/Defines.in: Remove some old gencat definitions. + + * docs/NEWS: Update in preparation for 2.3.18 release. Correct a few + it's -> its typos in earlier entries. + +Sun May 13 02:18:00 BST 2001 Colin Watson + + * autogen.sh: Create stamp-h.in. + + * po/cs.po, po/de.po, po/es.po, po/fr.po, po/it.po, po/ja.po: Update + with msgmerge. + +Sun May 13 02:03:05 BST 2001 Colin Watson + + * docs/ToDo: Most of Wilf's beta code is in now; mention SuSE. + +Sun May 13 01:22:29 BST 2001 Colin Watson + + * docs/manpage.example: New file. + +Sun May 13 01:19:47 BST 2001 Colin Watson + + * include/manconfig.h.in: Bump database version from 2.3.1 to 2.3.2. + * libdb/db_ver.c (dbver_wr): Reformat. + (dbver_rd): Downgrade warnings about wrong version numbers to + debugging messages. + * libdb/db_lookup.c (split_data): Fix fencepost error that would + overlook a missing whatis field. + + * src/man.c (try_db_section): Display warning if whatis refs are + relied upon to find a page. + * libdb/db_storage.h: Note that WHATIS_MAN and WHATIS_CAT are + deprecated. + + * src/accessdb.c (main): Give FHS_CAT_ROOT priority over CAT_ROOT. + * man/man8/accessdb.man8 (DESCRIPTION): Document this. + * man/de_DE.85591/man8/accessdb.man8 (DESCRIPTION): Likewise. + * man/de_DE.ascii/man8/accessdb.man8 (DESCRIPTION): Likewise. + * man/es_ES.88591/man8/accessdb.man8 (DESCRIPTION): Likewise. + * man/it_IT.88591/man8/accessdb.man8 (DESCRIZIONE): Likewise. + + * src/check_mandirs.c (testmandirs): Tidy up database opening code. + + * src/mandb.c (mandb): Don't create a new database if opt_test is + set. + (main): If opt_test is set, just delete the temporary database + rather than moving it into place. + * man/man8/mandb.man8 (OPTIONS): Document --test. + (FILES): Document FHS compliant database locations. + (AUTHOR): Add myself. + + * src/ult_src.c (ult_softlink): Remove overly-cautious check for + non-local symlinks in mantrees. + + * src/whatis.c (apropos): Remove a now redundant test that cont.dptr + is non-NULL. + +Sun May 13 01:00:47 BST 2001 Colin Watson + + * src/whatis.c (apropos): Complain and exit if a data pointer is + NULL. For this, locally undefine BTREE to avoid using optimized + functions, as they don't appear to provide enough error checking + yet. + +Fri May 4 03:59:08 BST 2001 Colin Watson + + * configure.in: Change PACKAGE from man-db to man_db. + + * po/*.po: Update with msgmerge. + + * release.sh: New file (quick release script). + +Fri May 4 03:44:49 BST 2001 Colin Watson + + * acconfig.h: Remove Debian-specific entries. + + * aclocal.m4: Remove, as it's another autogenerated file. + + * autogen.sh: New file (very simple for now). + +Fri May 4 03:34:54 BST 2001 Colin Watson + + * GNUmakefile.in (dist): Update set of installed files somewhat. No + need to build man_db-nls.h any more. + + * man/Makefile.in: Declare ALL_LINGUAS and LINGUAS. + + * src/man.sh: Remove (obsoleted by src/wrapper.c). + +Fri May 4 02:56:30 BST 2001 Colin Watson + + * README: Update for new NLS configuration methods. Reflect renaming + of configuration file from man_db.config to man_db.conf. + +Fri May 4 00:18:23 BST 2001 Colin Watson + + * stamp-h.in: Remove (generated by GNUmakefile). + +Fri May 4 00:17:50 BST 2001 Colin Watson + + * GNUmakefile.in, configure.in, include/Defines.in, + libdb/Makefile.in, libdb/db_delete.c, libdb/db_lookup.c, + libdb/db_store.c, libdb/db_ver.c, man/Makefile.in, + src/Makefile.in, src/lexgrog.l-2.3.8, src/lexgrog.l-2.4a, + src/wrapper.c: Dispose of all the old catgets stuff. Replace with + gettext idioms where appropriate. + + * libdb/man_db-nls.h, src/man_db-nls.h: Remove (obsolete with + gettext). + + * include/config.h.in: Remove (generated by autoheader). + +Thu May 3 01:17:08 BST 2001 Colin Watson + + * GNUmakefile.in: Strip .po from language names; fix it's -> its + typo. + + * configure.in: Stop trying to guess the package name and version + number from the current directory name. + +Wed May 2 18:38:49 BST 2001 Colin Watson + + * src/manp.c: Remove #include of security.h (now merged elsewhere). + (pathappend): Constify second argument. + (mkcatdirs): Eliminate DIRLIST; now takes mandir and catdir as + arguments. + (add_2_dirlist): Rename to add_to_dirlist(); return void, and + otherwise eliminate use of DIRLIST. As mentioned below, we now use + a linked list instead. + (read_config_file): Update accordingly. + + * src/security.c: *uid no longer static for now, as other objects + use them. + * src/man.c: Declare ruid and euid extern here now that security.h + is gone. + + * src/check_mandirs.c (update_db): Close dbf rather than database. + +Wed May 2 17:27:22 BST 2001 Colin Watson + + * acinclude.m4: New file. Restore definitions inadvertently removed + from aclocal.m4 a few changes ago. + * aclocal.m4: Update accordingly with 'aclocal'. + + * config.guess, config.sub: Move to tools directory. + + * configure.in: Move gettext macros below AC_PROG_CC etc. + + * configure.in: Remove Debian-specific code; build dependencies + handle this now. + +Wed May 2 16:41:28 BST 2001 Colin Watson + + * acconfig.h: Removed some definitions gettext used to need. + + * Makefile.in (_root): Added ABOUT-NLS to the distribution. + +Wed May 2 16:31:21 BST 2001 Colin Watson + + * config.guess, config.sub: New files, synced from today's CVS. + +Wed May 2 16:28:02 BST 2001 Colin Watson + + * configure.in, include/Defines.in, man/Makefile.in: Remove use of + curdate. + + * man/it_IT.88591/man1/man.man1, man/ja_JP.eucJP/man1/man.man1, + man/man1/man.man1: s/curdate/date/g. + +Wed May 2 16:15:00 BST 2001 Colin Watson + + * po/POTFILES.in: Added src/accessdb.c and src/wrapper.c. + +Wed May 2 15:53:45 BST 2001 Colin Watson + + * ABOUT-NLS, aclocal.m4, intl/*, po/ChangeLog, po/Makefile.in.in: + Update to gettext 0.10.37 (from 0.10.32). Various additions and + removals. + + * GNUmakefile.in, libdb/Makefile.in, src/Makefile.in: Remove old + gencat/xcat targets. + +Wed May 2 01:33:04 BST 2001 Colin Watson + + * src/mandb.c (main): Initialize security properly, since we may be + setuid, and drop privileges when creating temporary databases in + user-supplied hierarchies. Thanks to Ethan Benson for reporting + this vulnerability. + + * man-db.gnu, man-db.lsm: Add myself as a developer; change + maintainer. + + * libdb/db_lookup.c, src/man.c: Cosmetic fixes. + * src/accessdb.c (usage): Remove spurious space in output. + +Wed May 2 01:02:19 BST 2001 Colin Watson + + * Merging in changes from Wilf's 2.3b12 beta release. + * docs/ChangeLog: Folded in changelog comments. + + * GNUmakefile.in, configure.in: Build configuration file. + * */Makefile.in: Rearrange code for CPPFLAGS and similar. + + * configure.in: Look for grep, seteuid(), setresuid(). + * include/config.h.in: Add HAVE_SETEUID and HAVE_SETRESUID. + * include/manconfig.h.in: Add GREP and various grep flags. + * src/whatis.c: Use GREP rather than "grep". + + * src/man_db.config: Renamed to src/man_db.conf.in. + * src/man_db.conf.in: Add commented out DEFINE directives. + * docs/ToDo: Need to document DEFINE directive. (Also, I (cjwatson) + checked in two other todo items by mistake earlier: inline + pipelines and merging work done by Wilf and Andries.) + * include/Defines.in: CPPFLAGS tweaks; rename config file; %.i rule. + * include/comp_src.h.in: paths.h -> ./manconfig.h. + + * src/security.c, src/man.c: Rewrite seteuid() handling; remove + special "running as root" case. + * src/security.h: Remove; combine previous contents with security.c. + * src/man_db-nls.h: No longer need man_CHOWN. + * include/manconfig.h.in: Add init_security() prototype. + + * src/manp.c: Major rewrite. Replace static storage with linked + list. Improve configuration file handling, replacing get_dirlist() + with read_config_file(). Move some of the more deeply nested bits + of read_config_file() into separate functions like + add_mandb_map(). (cjwatson: This won't compile yet. Fabrizio also + hacked on this heavily, including splitting part of get_dirlist() + out into add_2_dirlist() and adding mkcatdirs(). I've merged these + as best I can for now, but it's still unfinished.) + * src/manp.h: Remove get_dirlist() prototype, add prototypes for + read_config_file() and get_def(). + * src/man.c, src/mandb.c, src/straycats.c, src/whatis.c: Use new + get_defs() functions to pull paths from config file rather than + hard-coding them. + +Fri Apr 27 22:39:34 BST 2001 Colin Watson + + * Merging in changes from Wilf's 2.3.11 release. + * docs/ChangeLog, docs/NEWS: Folded in changelog comments. + + * GNUmakefile.in: Added deroff and manual targets. + * README: Added comment about manual; added notes on configure + flags. + * configure.in: Minor improvement for non-GNU makes. + + * src/lexgrog.l, src/lexgrog.l-2.4a: Allow comments other than at + the beginning of a line. + + * src/manp.c: Replace has_subdirs() with has_mandir(): for $PATH + components not in config, check for ../man as well as man subdirs. + + * zsoelim/zsoelim.l: Use #defines for exit codes. + + * GNUmakefile.in, README, docs/INSTALL.quick, src/man.c: Cosmetic + rearrangements (whitespace, typos, etc.). + +Fri Apr 27 21:36:11 BST 2001 Colin Watson + + * manual/*: Add the source code for the man_db manual from Wilf's + FTP site. + +Fri Apr 27 18:33:17 BST 2001 Colin Watson + + * src/accessdb.c (main): Close the database and set dbf to NULL if + dbver_rd() fails. + * src/check_mandirs.c (update_db): Likewise. + * src/man.c (try_db): Likewise. + * src/straycats.c (straycats): Likewise. + * src/whatis.c (search): Likewise. + +Fri Apr 27 18:10:47 BST 2001 Colin Watson + + * src/lexgrog.l: Detect grap (.G1) and vgrind (.vS). + * include/manconfig.h.in: Add GRAP_FILTER and VGRIND_FILTER to + filter enum. + +Fri Apr 27 18:00:04 BST 2001 Colin Watson + + * New maintainer. + + * man/man1/man.man1 (HISTORY): Update some dates, add myself. + * man/it_IT.88591/man1/man.man1 (HISTORY): Likewise. + * man/ja_JP.eucJP/man1/man.man1 (HISTORY): Likewise. + + * man/de_DE.88591/man1/man.man1 (HISTORY): Update some dates. + * man/de_DE.ascii/man1/man.man1 (HISTORY): Likewise. + * man/es_ES.88591/man1/man.man1 (HISTORY): Likewise. + + * ja_JP.ujis/man1/apropos.man1: Remove (superseded by ja_JP.eucJP). + * ja_JP.ujis/man1/man.man1: Likewise. + * ja_JP.ujis/man1/manpath.man1: Likewise. + * ja_JP.ujis/man1/whatis.man1: Likewise. + * ja_JP.ujis/man1/zsoelim.man1: Likewise. + * ja_JP.ujis/man5/manpath.man5: Likewise. + * ja_JP.ujis/man8/accessdb.man8: Likewise. + * ja_JP.ujis/man8/catman.man8: Likewise. + * ja_JP.ujis/man8/mandb.man8: Likewise. + +Tue Apr 17 15:23:30 BST 2001 Colin Watson + + * End of the Great CVS Sync. + * Debian release 2.3.17.1-3. + + * src/ult_src.c (ult_src): Return an error when ult_softlink() + fails. + + * src/man.c: Use latin1 character set for C and POSIX locales. + + * po/ja.po: Update Japanese translation. + * man/ja_JP.eucJP/man1/apropos.man1: New file, updating Japanese + translation in new character set. + * man/ja_JP.eucJP/man1/man.man1: Likewise. + * man/ja_JP.eucJP/man1/manpath.man1: Likewise. + * man/ja_JP.eucJP/man1/whatis.man1: Likewise. + * man/ja_JP.eucJP/man1/zsoelim.man1: Likewise. + * man/ja_JP.eucJP/man5/manpath.man5: Likewise. + * man/ja_JP.eucJP/man8/accessdb.man8: Likewise. + * man/ja_JP.eucJP/man8/catman.man8: Likewise. + * man/ja_JP.eucJP/man8/mandb.man8: Likewise. + + * man/THANKS: Updated (new Japanese eucJP translation). + + * src/man.c (main): Support LC_MESSAGES being set differently from + other locale categories (internal_locale). + + * src/man.c (main): Multiple locale preferences can be set with + $LANGUAGE. + + * src/version.c (ver): Remove previous maintainer address. + + * configure.in: Find version number correctly. + +Sun Apr 1 14:37:28 BST 2001 Colin Watson + + * Debian release 2.3.17.1-2. + + * src/whatis.c (main): Disable regex searches if -w (wildcard) + option is given. + + * docs/ToDo: Using zlib rather than gzip would be good. + +Sat Mar 31 18:07:46 BST 2001 Colin Watson + + * Debian release 2.3.17.1-1. + + * src/check_mandirs.c (test_manfile): Check if the result of symlink + and hard link resolution is in the cache before looking for .so + links. This provides a substantial speedup when many symlinks + exist in the mantree. + + * src/catman.c (main): Initialize full locale by calling setlocale() + with LC_ALL rather than LC_MESSAGES (GOTO Masanori). Remove manual + getenv() calls accordingly. + * src/man.c (main): Likewise. + * src/mandb.c (main): Likewise. + * src/manpath.c (main): Likewise. + * src/whatis.c (main): Likewise. + + * include/manconfig.h.in: Add 3perl to section names, following 3pm; + Debian is using this to allow other packages to shadow pages from + core Perl packages. + +Wed Feb 28 21:02:41 GMT 2001 Colin Watson + + * Debian release 2.3.17-3.2. + + * configure.in: More fixes for Debian troff and /dev/null input + files. This restores detection of -mandoc macros. + + * man/man1/man.man1 (OPTIONS): Typo: "It's" -> "Its". + * man/man1/zsoelim.man1 (OPTIONS): Likewise. + + * man/man1/man.man1 (OPTIONS): Mention that argument to -M must be + the root of a mantree. + (SEE ALSO): Add reference to man-db manual to explain the above. + +Wed Feb 21 00:54:47 GMT 2001 Colin Watson + + * Debian release 2.3.17-3.1. + + * src/man.c (local_man_loop): Fix format string vulnerability in + printing of error message. + + * src/whatis.c (get_whatis): Fix segfault if whatis reference is + NULL. + + * src/man.c (local_man_loop): chdir() to original working directory + so that 'man -l' works again on relative paths to compressed + pages. + + * src/compression.c (decompress): free() file if the decompressor + failed so that atexit() doesn't try to remove it again. + + * src/mandb.c (main): Reverse sense of -s option to agree with the + documented intent. + + * configure.in: Work around change in the behaviour of Debian nroff, + which no longer accepts /dev/null as an input file. + + * GNUmakefile.in: Restore full clean rules. + +Fri Apr 7 10:50:45 EET 2000 fab (fpolacco@debian.org) + + * Checked in by Colin Watson during SourceForge CVS sync. + + * Upstream changes from Debian changelog (2.3.17-2): + - Commented away call to distclean_root in GNUmakefile: need to + leave the Makefile and configure in the tarball. + - Found and fixed subtle bug which made wrapper uselessly linked + with -ldb2. When invoked by root on a system which enables + group.db, then the call to initgroups() segfaults due to the + libc link to libdb! + + * Other changes not mentioned in Debian changelog: + - man-db.gnu: Update date and prerequisites (libdb2 becomes weak + prerequisite). + - man-db.lsm: New file. + - src/lexgrog.l: Cosmetic changes. + - src/wrapper.c: Add debugging code. + +Fri Apr 7 10:50:45 EET 2000 fab (fpolacco@debian.org) + + * Checked in by Colin Watson during SourceForge CVS sync. + * Version: 2.3.17. + * Upstream changes from Debian changelog: + - Corrected apparent disappearing of option -e in apropos. + - Corrected wrong usage of undocumented option -X which produced + error when passed to filters. This is now parametrized as + optional argument, defaulting to use devX75. Documented in + usage : -X = -TX75, -X100 = -TX100, -X100-12 = -TX100-12. + - Applyed patch submitted by Tomohiro KUBOTA: + - roff_device and LESSCHARSET are determined by user environment + rather than language of manpage for English manpage. + - roff_device "ascii8" is used for non-English/non-ISO-8859-1 + languages. + - Added new check for libdb in configure.in + - Added /usr/local/{share/}man to config file, due to bug in FHS, + thanx to Gregor Hoffleit. + - Added new message catalog po file for cs (czech) (4 new + messages), thanx to Vladimir Michl. + - tired of people continously complaining that man behaves + differently than in RedHat (which is "The Reference Linux", you + all know that), I'll add tbl as default filter for man. This + will fix those three or four manpages that do not take the + burden to declare their dependency on the tbl formatter (usually + because upstream uses RedHat and so ...). Now what would I do if + someone fill a bug against this because of wasting of CPU cicles + for un-necessary filtering on the hundreds of pages that do not + need tbl? I would certainly agree with them. Therefore I will + fix this introducing scanning of manpages a la grog in mandb, + and storing the result in the database. ...[noise of hacking + and debugging]... Well, I did it (use accessdb to see it!). It + took 4 weekend (stolen to the implementation of man 2.4) to + complete and debug. Now you can announce the world that man-db + 2.3.17 knows in advance which filters to run when processing a + manpage which is in the database. + +Wed Mar 22 16:00:16 EET 2000 fab (fpolacco@debian.org) + + * Checked in by Colin Watson during SourceForge CVS sync. + * Version: 2.3.16. + * Upstream changes from Debian changelog: + - Applyed patch submitted by Javier Fernandez-Sanguino Pena to + permit search of trnlated manpages before giving the first + english one found. + +Mon Feb 28 22:09:09 EET 2000 fab (fpolacco@debian.org) + + * Checked in by Colin Watson during SourceForge CVS sync. + * Version: 2.3.13. + * Upstream changes from Debian changelog: + - Applied patch to avoid disappearing of index file during + regeneration. Thanx to Colin Phipps. + - Applied patch to generate secure temporary file in straycat. + Thanx to Colin Phipps. + +Wed Feb 23 22:34:54 EET 2000 fab (fpolacco@debian.org) + + * Version: 2.3.12 + + * New maintainer. + + * find the huge list of changes (in three years) in file + debian/changelog. + +Wed Sep 27 23:59:05 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.3b12 + + * src/manp.c: replace static storage with linked list + + * src/security.h: removed/combined with security.c + + * src/security.c, src/man.c: re-write seteuid() handling: + remove special "running as root" case + + * src/whatis.c: use GREP rather than "grep" + + * include/manconfig.h: many #DEFINE additions + + * configure.in: look for grep, seteuid(), setresuid() + + * GNUmakefile.in, */Makefile.in: minor modifications + + * include/Defines.in: modifications + + * src/man_db.config: renamed as src/man_db.conf.in + + * src/man_db.conf.in: add commented out DEFINE directives. + +Thu Sep 21 19:33:58 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.3.11 + + * manual/*: bundle the source code of the man_db manual + +Wed Sep 20 16:17:19 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/manp.c: replace has_subdirs() with has_mandir(): for $PATH + components not in config, check for ../man as well as man subdirs. + + * various: small bug-fixes from Markus, + Joey (joey@infodrom.north.de), Lionel (cons@dxcern.cern.ch) + + * src/util.c: when checking man/cat timestamps, compare mod time of + cat with latest of mod or create time of man: If untar new man + page with old timestamp, still reformat. + +Thu Jul 13 11:29:32 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.3.10 + + * src/apropos.c: fix for #undef REGEX regarding int regex + + * src/lexgrog.l: default to new version. + + * src/README.lexgrog: new. + + * configure.in: all echo's through MAN_ECHO() for --quiet. + + * various: apply patch from Carl Edman (cedman@princeton.edu), + port to NeXTstep and misc small fixes. + +Fri Jun 16 11:12:08 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.3.9 + +Wed Jun 14 17:08:41 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/man.c (make_display_command): fix command when ascii==1 + + * src/man.c (display): don't return 1 on skip if local_man_file==1 + + * man/Makefile.in: force make to resolve the program name strings + (which are sed commands) once only. + + * configure.in: don't exec pager (too many side effects) + +Sun Jun 4 13:51:22 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.3.8 + + * various: apply patch from CERN to allow globbed support for + HPUX, OSF and SOLARIS system manual page hierarchies. + + * GNUmakefile.in: add hook for `make check' + +Mon May 29 18:57:24 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/whatis.c (main): if $POSIXLY_CORRECT is in effect, + default to case-less extended regex searches for apropos + as specified by POSIX 1 + + * man/man1/apropos.man1: document above change. + + * src/whatis.c (apropos, parse_name): ensure case-less + matching on manual page name aswell as it's whatis for apropos. + + * all manual pages: replace instances of program with %program% + and arrange to do a sed replacement with the actual name of the + program, chosen by the installer. + + * zsoelim/zsoelim.l: fix recursion detector. + + * src/lexgrog.l (newline_found): new. + +Mon May 22 20:07:17 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * nls/de_DE.88591/*.m: from Lars Fenneberg (li@gimli.comlink.de) + + * src/Makefile, libdb/Makefile: fix -DNLS + + * src/man.c (LESS_PROMPT): Make " Manual page" a translatable + message. + + * man/de_DE.ISO_8859-1: rename as man/de_DE.88591 + + * nls/THANKS, man/THANKS: new. + + * src/whatis.c: If $POSIXLY_CORRECT, force apropos to do extended + regex matching. + +Sat May 20 12:27:47 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/man.c: if -f or -k, simply execv() the program, passing + the entire argv[] to it. + + * man/man1/man.man1: document change. + + * src/whatis.c: ignore -f, --whatis, -k and --apropos + +Sat May 13 18:10:50 BST 1995 Markus Armbruster + + * Version: 2.3.7 + + * lib/cleanup.c (pop_all_cleanups): new + * src/man.c, src/security.c: use pop_all_cleanups() in children. + + * general: use fork() instead of vfork() in situations where + vfork() could cause problems. + +Tue May 9 23:30:58 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * manual pages: aesthetic/grammer changes. + + * flex files: process with flex-2.5.2 + +Mon May 8 11:15:07 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * include/manconfig.h.in: #define some exit codes. + * all sources: use the codes. + * English manual pages: add EXIT STATUS section where + appropriate + + * src/man.c (make_display_command): back out execing the pager + as PAGER does not have to be a simple program name. + + * configure.in: prepend "exec " to the default pager. + + * src/mandb.c: fix stupid bug where global databases remain + owned by the creator in all circumstances. Clean up. + + * src/straycats.c, src/check_mandirs.c: homogenized and + re-worded messages emitted by mandb. + +Mon May 8 11:15:07 BST 1995 Markus Armbruster + + * lib/cleanup.c, lib/cleanup.h: new functions. Install + sighandler, initialise and operate a stack of cleanup funcs + callable on exit(). + + * src/mandb.c, src/man.c: modify to use cleanup functions. + +Tue Apr 25 20:21:51 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.3.6 + + * src/whatis.c: new, replaced with edited version from 2.4 alpha + source tree. Apropos now does _real_ word matches. + + * man/man1/apropos.man1: remove description of option -e. + +Mon Apr 24 17:26:54 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/man.c (get_section_list): Ignore empty $MANSECT. + * src/man.c (main): if (!*pager) pager = CAT; + + * libdb/db_storage.h, include/manconfig.h.in, src/check_mandirs.c, + src/straycats.c: small modifications to fix broken + FAVOUR_STRAYCATS behaviour and properly handle situation when + STRAYCAT and WHATIS_CAT share namespace. Move definition of + FAVOUR_STRAYCATS to include/manconfig.h.in. From Zoltan. + + * zsoelim/zsoelim.c: exit 1 on command line file open failure. + + * src/man.c (man_getopt): consolidate incompatible option parsing. + * src/man.c (usage): update wrt. option parsing. + + * src/man.c (display): only prompt/attempt display if found==1. + + * src/man.c (make_display_command): exec the pager. + +Fri Apr 21 15:16:59 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.3.5 (public release) + + * src/whatis.c: fix a couple of problems caused by whatis/apropos + split. + + * configure.in: remove determination of viable gencat program, + always use our own. + +Wed Apr 19 09:53:27 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * GNUmakefile.in: renamed Makefile to differentiate between + GNU make and others. + + * configure.in: create bogus ./makefile to catch non GNU make + programs. + +Mon Apr 17 11:06:32 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.3.4 + + * src/man.c (format_display_and_save): don't save cat if + formatting process fails and/or produces nothing. + +Sat Apr 8 18:02:52 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/mandb.c: change #ifdef SECURE_MAN_UID to + #if defined(SECURE_MAN_UID) && defined(MAN_DB_UPDATES) as the + databases should be owned by their creators if man is not + responsible for updating them. + + * src/man.c: minor changes regarding MAN_DB_UPDATES + + * include/manconfig.h.in: update CATMODE and DBMODE w.r.t. + recent MAN_DB_UPDATES/MAN_CATS definitions. + + * src/mandb.c: changes to operation. Work on a temporary copy of + the database, then rename() to actual database. Catch SIGINT, + SIGTERM and remove the temp copy if necessary. + + * src/compression.c (decompress): kill(getpid(), SIGINT) instead of + exit(0) if child (decompressing man page) fails. + + * src/straycats.c (check_for_stray): kill(getpid(), SIGINT) instead of + exit(0) if child (decompressing cat page) fails. + + * libdb/db_lookup.c (make_content): ndbm limit is 4k not 1k. + +Mon Apr 3 20:52:06 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * docs/NEWS: new + + * README: more Linux-system information. + + * configure.in, acconfig.h: #define NDEBUG if !--enable-debug + + * include/Defines.in: comment out @LEXLIB@, not required in link + stage. + +Sun Apr 2 17:42:02 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.3.3 + + * README: add sections referring to default preprocessors and + system specific notes. + + * xcat/xcat.l, zsoelim,zsoelim.l, src/lexgrog.l: process with + flex-2.5.1 + +Fri Mar 31 17:12:44 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/whatis.c (display): add free(string) + + * src/whatis.c, src/Makefile.in: produce separate object files for + apropos and whatis so that the programs know which one they are + regardless of actual program-filename. + + * All Makefile.in, include/Defines.in: append CPPFLAGS supplied to + ./configure or make to the standard $(CPPFLAGS) variable. + Allows configuring with unusual #include directories, eg. + CPPFLAGS=-I/usr/src/gdbm LDFLAGS=-L/usr/src/gdbm ./configure + + * configure.in (--with-db=LIBRARY): override the default database + interface library on systems having a choice. Options={db,gdbm,ndbm} + + * configure.in: Re: sec 5.6 of the autoconf manual, replace + (if test a=b -o a=c) with + (if test a=b || test a=c) + +Tue Mar 28 16:44:46 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.3b2 + + * lib/flock.c, lib/flock.h: New. flock() wrapper to fcntl() for + systems that lack flock(). + + * xcat/xcat.l: #include "manconfig.h". For systems not supporting + __inline__ + + * include/Defines.in (%.d : %.c): modify rule to account for C + compilers other than gcc + + * All Makefiles.in (cd $dir && $(MAKE)): change to $(MAKE) -C $dir + * nls/Makefile.sub.in: merge into nls/Makefile.in + +Mon Mar 27 22:42:53 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/globbing.c (look_for_file): don't rely on GLOB_NOMATCH as + AIX doesn't have it. + + * configure.in, include/manconfig.h.in (man_ac_version): new, + replaces ac_version and is more robust + * configure.in, aclocal.m4: rename non-autoconf macros so that + future versions of autoconf won't clash + + * gencat/gencat.c, gencat/genlib.c: tidy up header includes and + remove unused variable definitions + + * configure.in: check for gencat + +Mon Mar 27 12:51:47 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version 2.3b1 + + * src/man.c: small HAS_TROFF/NROFF_MISSING changes from Markus. + +Thu Mar 23 18:09:46 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/man.c: man will only _create_ user db's if + MAN_DB_CREATES is #defined (It is not defined by default) + + * add ability to install programs/man pages with transformed names. + ie --program-prefix=PREFIX, + --program-suffix=SUFFIX and + --program-transform-name=EXP + arguments to configure are now observed. + + * src/man.c (try_db): store an info->addr==NULL entry in the + hashtable if we fail to access this db. Only try to open the + db once. If the db access succeeds, but the lookup fails to find + anything, store info==NULL in the hashtable. + + * libdb/db_ver.c (dbver_rd): don't die if wrong version. Issue a + message, return 1 and let the caller decide what to do. + +Mon Mar 20 16:13:23 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/whatis.c (get_whatis): new. Use the pointer member of mandata + structure to access the whatis string. + (display): modify to use get_whatis(). + + * src/checkmandirs.c (splitline): don't store whatis referenced + `whatis' lines in the db. + + * libdb/db_lookup.c (make_content): store a NULL whatis as "" rather + than "-". + +Sun Mar 19 16:37:58 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/lexgrog.l: wipe out roff comment lines (again). + + * src/whatis.c: use BSD style regex if POSIX unavailable. Ignore + --regex if neither available. Fix failed-regex-compilation error + message. + + * lib/regex.c, lib/regex.h: remove + + * configure.in: account for regex changes. + + * libdb/db_delete.c (dbdelete): don't barf on delete request of a + multi-key that is not listed in the main key, return NO_ENTRY. + + * src/man.c (try_section): don't try to delete db entry for missing + straycat. Return 0 and leave that to the caller. + +Sat Mar 18 12:31:48 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Replaced strncasecmp() calls with strncmp(). Removed partial + support for man dirs named .../MAN. + + * lib/{alloca.c,putenv.c,memcmp.c}: new + lib/{getopt.c,getopt1.c,getopt.h,error.c,xstrdup.c,xmalloc.c}: + newer replacements + + * All Makefile.in, include/Defines.in, include/manconfig.h.in: + use standard (GNU coding) installation variables: + bindir, sysconfdir, man?ext, man?dir, localedir, manroot. + These variables, along with prefix and exec_prefix may be specified + on the `make' command line. + + * configure.in: move definition of BINDIR and config_prefix to + include/Defines.in to allow dynamic evaluation. Rename config_prefix + to sysconfdir. + + * libdb/db_lookup.c (list_extensions): fix return count. + + * libdb/db_delete.c (dbdelete): take account of situation + where there were multiple name entries and they are subsequently + deleted. When deleting the last one (which still has a multi-key + entry), delete the standard key too, rather than recomputing it's + content (which would be nothing and cause a "corrupt db" message). + +Fri Mar 17 23:36:44 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/man.c (glob_for_file, make_names): remove + src/globbing.c: new file + lib/glob.c, lib/glob.h, lib/fnmatch.c, lib/fnmatch.h: replacements + from GNU glob.tar.gz + configure.in: glob changes. + Use POSIX glob replacement. + Allow --extension to be used in globbing environment. Don't search + for cats in alternate cat directory if no index. + + * All Makefile.in: add standard (GNU coding) targets: all, clean, + mostlyclean, distclean, realclean, install, uninstall, TAGS, dist + Other configuration/goal modifications + + * Makefile.in: force config.status to do selective re-creation + + * src/zsoelim.l: cater for ".SH \f?NAME\f?" + + * acconfig.m4 (AC_FUNC_PCLOSE), src/man.c (display): small changes + from Markus + + * Makefile.in, README: change `make all' to equal `make nls=off' + rather than `make nls=all' + + * include/Defines.in: move -DDEFAULT_MANROFFSEQ to + include/manconfig.h + + * include/manconfig.h: change inline parsing. Use autoconf-2.2 + +Thu Mar 16 12:38:15 GMT 1995 Markus Armbruster (armbru@pond.sub.org) + + * Version: 2.2a20 + + * zsoelim/zsoelim.l: general fixes + + * configure.in: don't add -lc as library containing db routines. + + * lib/glob.c: ultrix fixes + + * lib/rename.c: replacement + + * lib/strappend.c: small fix and copyright notice + +Wed Mar 15 11:17:58 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/lexgrog.l: modifications to whatis parser, mainly for + stray cats. + + * src/man.c (main): add drop_effective_privs() and + regain_effective_privs() around manpath configuration so that + users' `hidden' manpaths are found and used. + + * substantial configuration changes regarding all Makefiles to + allow `alternate build directory' support. man_db may be built + in *any* directory. Aids multi-architecture builds and testing + of various configuration options. + + * rationalised source files to #include "local_header" and + #include . CPPFLAGS uses -I- to limit -I paths + to "" resolving only. Other alternate build directory mods. + + * src/comp_src.h.in: moved to ./comp_src.h.in + src/manconfig.h, src/path.h.in: combined into ./manconfig.h.in + + * *ensure* that lib/{regex,fnmatch,getopt}.h are only #included + if the replacement c source is used. Otherwise use system routines + and system headers. + + * ./configure.in, acconfig.h, aclocal.m4 (AC_FUNC_PCLOSE, + BROKEN_PCLOSE): new autoconf macro + + * gencat is not installed by default. (cd gencat && make install) + + * tools/mkcatdirs: re-written + tools/checkman: new utility to check for duplicate manual pages + across manual page hierarchies. + + * docs/INSTALL, README: new + + * src/man.c (display): attempt to open tmp_cat_filename(), if + unable, don't try to save cat. + +Sun Mar 12 18:12:13 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version 2.2a19 + + * all source (main): replace mkprogname(%s) with + xstrdup(basename(%s)) + + * src/util.c (strappend): remove + * lib/strappend.c: new + +Mon Mar 6 20:05:27 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/man.c (--local): re-enable support for compressed local + files. eg `man -l foo.1.gz' + + * src/man.c (make_roff_command): Check in alternate catdir then + mandir for external format script if ALT_EXT_FORMAT #defined. + + * zsoelim/zsoelim.l: partial rewrite to mimick GNU soelim + `bad roff request' error behaviour. + +Mon Mar 6 13:51:32 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/man.c: fix SEGV if arg --local used + + * src/man.c (gripe_system): exit with errorcode of failed command + +Sun Mar 5 20:54:13 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version 2.2a18 + + * src/catman.c (main): check individual cat directories for + existence and perms. + + * src/man.c (commit_tmp_cat): fix SEGV + + * src/man.c: NO_MAN_UPDATES & NO_MAN_CATS #defined code + regions for experimental CERN use, untested and incomplete. + + * configure.in, src/Makefile, src/paths.h.in: undo bogus dependance + on NLS for output device=latin1. + + * configure.in (--with-device=): new option to select + default nroff output device. Test that nroff can handle selected + output device (if any). + +Thu Mar 2 19:30:45 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/lexgrog.l (too_big), (add_str_to_whatis), + (add_char_to_whatis): new functions + (find_name): add extra argument. + add string bounds checking, add new condition to terminate NAME + section: \n{W}*\n+.+ + + * src/check_mandirs.c, src/straycats.c, src/manconfig.h: change + callers of find_name(). + + * src/man.c (try_db_section): warn of re-cache failure, but don't + exit. + lots of changes/simplifications w.r.t. global/user hierarchies. + global_manpath == 1 for global hierarchy, global_manpath == 0 for + user. global_manpath is set once we know which hierarchy we are + displaying from. + +Tue Feb 28 13:34:15 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/man.c (display): fix SEGV. + + * src/util.c (strappend): allow realloc of NULL string. + + * src/man.c: replace strappend(xstrdup("string"), ...) with + strappend(NULL, string, ...) + + * src/straycats.c (check_for_stray): allow any supported + straycat compression extension if COMP_SRC is #defined. + Replace static buffers with dynamic. + + * src/check_mandirs.c, src/whatis.c: replace static buffers + with dynamic. + + * src/util.c: (mkdbname): new function. + src/*.c: replace static database[PATH_MAX] with mkdbname() calls. + +Sun Feb 26 20:58:59 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version 2.2a17 + + * src/whatis.c: warn if no index or whatis db's available. + + * src/man.c: Fixes to setuid/privs code regarding user manual + trees and ruid==0 from Markus. + + * configure.in: add checks for AIX, USG, stdlib.h, MINIX, ISC_POSIX + + * lib/glob.c: ensure that _POSIX_VERSION can be defined + +Sun Feb 19 12:38:10 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version 2.2a16 + + * Various portability fixes provided by Philippe Defert + (defert@cern.ch) + + * FSSTND changes regarding /usr, /var/catman searching + + * Some header file re-arrangement to aid user configuration. + +Sun Feb 12 15:00:44 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version 2.2a15 + +Sat Feb 4 10:54:21 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * man(1), manpath(5): revisions. + +Thu Feb 2 23:36:20 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/catman.c (do_access): new + + * src/man.c (do_chown): new + catman changes, don't do_prompt() if print_where==1 + + * src/manp.c: changed an !is_directory() to is_directory() != 1 + +Sat Jan 28 09:39:07 1995 Markus Armbruster (armbru@pond.sub.org) + + * man.c: **changes** ?? + +Sun Jan 22 16:15:04 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version 2.2a14+ + + * configure.in, libdb/mydbm.h libdb/db_gdbm.c: if using gdbm, + explicitly test for gdbm_exists() rather than use header #defines. + + * man/man1/mandb.man1, man/man1/catman.man1: moved to man/man8 and + renamed. + + * apropos(1), whatis(1), manpath(1), zsoelim(1), catman(8), + mandb(8) manual pages: significant revisions. + +Sat Jan 21 14:33:28 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * incorporate Markus' changes with my post 2.2a13 changes. + + * src/version.c (ver): fix, use fprintf() instead of error(). + +Thu 22 Dec 1994 15:12:38 +0100 1994 Markus Armbruster (armbru@pond.sub.org) + + * src/man.c (make_roff_command, make_display_command, + open_cat_stream, close_cat_stream, display, + find_cat_file, checked_system, + get_preprocessors): new functions + + * src/man.c (format_and_display, format_and_display_file, + display_cat_file, parse_roff_directive, + add_directive): removed functions + + * src/man.c (glob_for_file, make_name): made consistent. + + * src/util.c (strappend): new function. + (do_system_command): changed/renamed to do_system(). + + * src/manp.c (global_catpath): replaced/fixed + + * src/security, src/fake_security (do_system_command_drop_privs): + renamed to do_system_dropped_privs(). + + * lib/rename.c: new file + +Mon Jan 9 20:42:38 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * nls/Makefile, man/Makefile: allow for bogus or non existent + native languages passed in $nls. + + * src/man.c (do_prompt): replaced with less friendly but more + portable version. + + * inline directives replaced with __inline__ to be more ansi. + +Mon Dec 19 12:59:28 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.2a14 + + * aclocal.m4, configure.in: don't define variable nroff_device + + * src/Makefile, src/paths.h.in: define GNU_NROFF_DEVICE. + If nls != off, GNU_NROFF_DEVICE=" -Tlatin1" + else, GNU_NROFF_DEVICE=" -Tascii" + + * src/man.c, src/catman.c, src/security.c: #include if + available. _exit() from child rather than exit(). + +Sun Dec 18 17:54:22 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/util.c (basename): removed + lib/basename.c: extracted from src/util.c + configure.in: check for/replace basename function if necessary. + + * src/catman.c (add_arg): replace strdup() with xstrdup(). + + * soelim/soelim.*: renamed zsoelim/zsoelim.* + + * manual pages: reflect soelim - zsoelim name change. + +Fri Dec 16 12:17:48 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * configure.in: correctly determine db header and required library + + * src/man.c (main, do_extern): pass manpath to whatis / apropos in + case man was called with -M or -m. + + * src/catman.c (main): interrogate $MANSECT for manual sections. + + * man/man1/catman.man1, man/man1/man.man1 ($MANSEC): replace with + the correct variable - $MANSECT. + + * src/man.c: new option (-7 or --ascii) passes page through minimal + latin1 to ascii translator. Only useful for nroff written in ascii + and formatted with -Tlatin1. + + * man/man1/man.man1: document it. + + * src/man.c (make_command): new routine to piece together man's + system() call. + +Thu Dec 15 13:52:42 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.2a13 + + * src/catman.c (parse_for_sec): only supply man with -L locale + arguments if locale!=0x0 + + * src/Makefile: fix libmandb.a rule + +Wed Dec 14 22:49:59 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version 2.2a12 + + * major package restructure with creation of new subdirectories + for xcat and the db routines. Allowed split up of single db source + file into some constituent function parts. + + * some Makefile restructuring to allow arbitrary ordering of + subdirectory builds. + + * ./dblib/*, ./xcat/*: new or moved from src/. + + * src/db_storage.c: moved and split up into ./dblib/*.c + src/mydbm.h, db_storage.h: moved into ./dblib + src/nls.h: moved to ./nls.h + src/xcat.c, src/xcat.l, src/Register: moved into ./xcat + +Wed Dec 14 00:17:11 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/manconfig.h: #include for size_t declaration. + + * src/checkmandirs.c (reset_db_time): remove use of strerror() in + debug line for systems without it. + + * src/manp.c: ensure no warnings given if quiet==1 + +Tue Dec 12 22:10:07 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/xcat.l: allow duplicate message id's to exist in single C + source file, do not duplicate in the relative message file or + src/man_db-nls.h. Warn of such duplications as they may be in error. + +Tue Dec 12 19:05:21 GMT 1994 Markus Armbruster (armbru@pond.sub.org) + + * configure.in: fix definition of BINDIR when --prefix not used + + * src/man.c: replace "export foo=bar" with "foo=bar; export foo" in + system() command + + * soelim/Makefile: do not backup old soelim before install + + * lib/error.h: new + + * convert all error message to the form + error(int exitcode, int errno, char *message) + where exitcode!=0 causes exit(exitcode) after message and errno!=0 + causes the error text to be appended to the message. All messages + have ": " prepended. + + * all C source: #include "../lib/error.h" and replace prognam with + program_name. + + * src/db_storage.c (ndbm_flopen, btree_flopen): generalised + (ndbm_trun_open, btree_trunc_open): removed + (ndbm_flclose): new + + * src/gripes.c: functions copied to relevant caller. + src/gripes.c, src/gripes.h: removed + +Sun Dec 11 15:16:42 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.2a11 (not released) + + * src/man.c (main): putenv("LESSCHARSET=latin1"), remove from + less_options[] + + * src/lexgrog.l: translate \\[ ] (escaped space) to space, + accept '\" as *roff comment, + add a space at *roff end-of-line if necessary. + +Sat Dec 10 21:37:41 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * man/man1/catman.man1: new + + * soelim/soelim.man1: new + + * src/man.c (display_cat_file): if (COMP_SRC), support straycats + with any supported compression extension or none at all. + src/man.c (make_cat_file): replace execle() with execve(). + + * src/catman.c: added ARG_MAX support and use execve() instead of + system(). This should now behave on systems with small execve() + argument capacity by batching more, but smaller, man jobs. + + * Makefile: `make all' now equates to `make nls=all' + +Thu Dec 8 00:03:12 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.2a10 + + * src/catman.c: new utility. + src/man.c (main): minor changes wrt --catman flag. + + * src/paths.h.in (MAN_BIN): add definition for catman. + + * dvi/: provide dvi files of the packages' manual pages. + +Tue Dec 6 20:58:19 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * man/man.man1: addition of EXAMPLES section. + + * src/man.c (do_prompt): change message. + src/man.c (need_to_rerun): make -u really force an update. + src/checkmandirs.c (reset_db_time): new function. + + * src/mydbm.h, src/db_storage.c (ndbm_flopen, ndbm_trunc_flopen): + provide file locking mechanism for ndbm. + src/db_storage.c (btree_trunc_flopen): renamed (btree_trunc_open), + add mode argument to open() call. + + * src/db_storage.c (make_content): add `static' to declaration of + (dash). + + * src/man.c (try_db_section): ensure db found file entry is + consistent with the physical file, if not, update the db entry + before proceeding. Cache consistency should be getting much better + in a wide variety of circumstances now. This check is not performed + for straycats. + +Tue Dec 6 12:05:57 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * man/man.man1, man/mandb.man1: large changes. + + * aclocal.m4, configure.in (AC_PROG_GNU_ROFF): test for GNU nroff + src/man.c: Do not use col with GNU nroff -Tlatin1 as (a) it is not + needed: see grotty(1) and (b) it is not 8 bit clean. continuation + dashes should now reappear. + +Wed Nov 23 16:49:48 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/check_mandirs.c (test_manfile): Provide better checking for + the existence of both foo.1 and foo.1.gz type problems. This should + catch any problems earlier and relieve the db interface code of the + job of identifying such problems. + + * src/man.c (manopt_to_env): cater for $MANOPT option arguments + that contain spaces (for -r). + src/man.c (man_getopt): revise, change duplicate option behaviour, + modify -[tTZ] handling and add option -D. + src/man/man1/man.man1: document. + + * src/man.c: create LESS_OPTS and LESS_PROMPT and move their + definitions to src/paths.h[.in]. + + * configure.in: append -s by default to whatever pager is found. + favour db.h and -ldb above gdbm.h and -lgdbm. + N.B. + db creates index.bt + gdbm creates index.db + ndbm creates index.dir and index.pag + +Wed Nov 23 16:46:59 GMT 1994 Zoltan Hidvegi (hzoli@cs.elte.hu) + + * src/man.c: changes relating to (less_options) and (prompt). Add + command line support for less' prompt: option -r. + + * man/man1/man.man1: document it. + +Sat Nov 19 20:19:39 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.2a9 + + * src/mydbm.h, src/db_storage.c: incorporate completely new + database type: a binary tree method using the Berkeley db-1.85.1 + library. Currently experimental and is not used by default, it has + the potential of enhanced speed and easy maintenance as it allows + storage of identical keys, thus reducing the amount of work necessary + to store and lookup multi sectional manual pages such as manpath.1 + and manpath.5. During initial tests, the `walk through' algorithm, + used in apropos searches was 65% faster and the general database + open function is 100% faster when compared with gdbm-1.7.3. + + * src/whatis.c (apropos): #define-optimised for btree database type. + + * src/convert_name.c (convert_name): reorder actions to stop certain + catfiles ending up with a double compression extension, for + instance: foo.1.gz.gz. + + * src/Makefile, src/man.c: enable -DNO_DEFAULT_TBL_OR_COL as an + experiment. + +Fri Nov 18 21:00:47 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.2a8 (not released) + + * configure.in (config_file, config_prefix): Fix behaviour. + + * src/*.[cl], soelim/soelim.l: + s,malloc,xmalloc,g + s,realloc,xrealloc,g + s,strdup,xstrdup,g + src/manconfig.h: remove redefinitions of malloc, realloc and strdup. + +Thu Nov 17 22:01:11 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/lexgrog.l: changed catfile whatis extraction rules to be a + little more forgiving. Increased char array size from 1024 to 2048. + + * mkcatdirs: shell script to create relative cat dirs. + + * src/$PROGS: replaced all occurances of `optional_argument' with + `required_argument' in (long_options). + + * src/man.c, src/compression.c, src/straycats.c: ensure that a + failed child process is recognised and dealt with (normally exit(0)). + + * src/man.c (make_cat_file): removed need to filter-then-copy if not + setuid. [untested] + + * src/man.c, src/mandb.c (main): optional profiling support if + __profile__ defined. + + * configure.in (config_file, config_prefix): don't work unless + --prefix= is a command line option, temporarily setting + them to /etc/man_db.config and /etc respectively. + +Wed Nov 16 20:34:54 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.2a7 + + * src/man.c (format_and_display_file): Fix bug which caused + `man -l -' to fail. Produce sensible error message when -l file + is inaccessable. Allow compressed manual pages to be specified when + using -l (must have correct extension) + + * soelim/soelim.l (main): ensure (progname) is the basename of + argv[0] . + + * src/manpath.c (main): remove local declaration of (quiet). + add `--global' option. + +Wed Nov 16 20:29:20 GMT 1994 Markus Armbruster (armbru@pond.sub.org) + + * configure.in: if $prefix=/usr, put config file in /etc else + put it in $prefix/etc + src/manconfig.h (CONFIG_FILE): move to paths.h.in + + * src/nls.h (LC_MESSAGES): define as (LC_ALL) in all cases where + (LC_MESSAGES) is not defined in + + * src/lexgrog.l: #include "manconfig.h" to redefine strdup() to + xstrdup() + +Tue Nov 15 21:38:19 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/manp.c (is_global_mandir): new + src/man.c (locate_page): use it instead of (global_catpath) + + * src/*.h: add suitable predicates to function prototype + declarations + moved all function declarations to header files + src/compression.h.in: renamed to comp_src.h.in + +Mon Nov 14 18:17:48 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.2a6 + + * src/hashtable.c, src/hashtable.h (struct nlist): replaced + (union) member with (void *) and simplified. Modified users. + + * src/man.c (make_cat_file): fixed NULL ptr reference in call to + (execle) + src/man.c: determined and fixed memory leaks using Checker. + +Mon Nov 14 03:33:37 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/db_storage.c (replace_if_necessary, split_data, + list_extensions): new + src/db_storage.c (free_content): replaced with (free_mandata_struct) + all callers changed + src/db_storage.c (split_content_keep, split_content_temp): replaced + with (split_content) + +Sun Nov 13 13:50:46 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/nls.h: change of macros, add (NLS_INIT, EXIT_FUNC) + src/*.c: removed (NLS_CLOSE) macros, adjustments due to above + src/version.c (close_catalogue): new + configure.in (AC_HAVE_FUNCS): (atexit, on_exit) + + * getmandbver.c: removed + +Sat Nov 12 14:18:02 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/security.h: new, contains security macros from src/manconfig.h + src/manconfig.h: removed security macros + src/security.c, src/security.h: replaced (SYSV_SAVED_IDS) with + (BROKEN_LINUX_SAVED_IDS) + + * src/paths.h.in, src/compression.h.in, configure.in: changed + compression defines + src/paths.h.in: defined (STD_SECTIONS), got rid of (MANPATH_MAIN) + src/*.c: removed all (MANPATH_MAIN) defines + configure.in: added (COMP_CAT) and (COMP_SRC) definitions + src/manconfig.h: removed (COMP_SRC) definition + + * All manual pages: Fixed to be compatible with native *roff + implementations having a request argument limit of 6 + + * src/db_storage.c (gripe_extract_data, gripe_corrupt_data): + new routines + + * All Makefiles: add (exec_prefix, mandir, bindir) where necessary + +Sat Nov 12 13:38:59 GMT 1994 Markus Armbruster (armbru@pond.sub.org) + + * soelim/Makefile (install): made more portable + + * src/manconfig.h: changes to (POSIX_SAVED_IDS) definition + + * src/man.c (main): removed unnecessary #ifdef conditions regading + (SECURE_MANUID) + +Sat Nov 12 13:24:17 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/ult_src.c (ult_src): no longer follow an absolute .so include + src/ult_src.c (test_for_include): new + +Fri Nov 11 10:16:32 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/man.c (manopt_to_env): generalised + + * src/man.c (do_extern): removed (gripe_alloc) call, + modified callers + src/manp.c: removed (gripe_alloc) calls, general tidy + src/gripes.c (gripe_alloc): removed + + * src/ult_src.c (ult_src): fixed loop when (buf) != NULL + changed absolute .so include actions + configure.in (AC_HAVE_FUNCS): removed (memmove) + + * src/mydbm.h (copy_datum): added references + src/db_storage.c (copy_datum): added function + Fixes for `native ndbm' data corruption by Markus Armbruster + + * src/Makefile: removed dbver.o as dependency of manpath + + * aclocal.m4 (AC_FUNC_SPRINTF_COUNT): new file and macro + configure.in: use it + acconfig.h: add (SPRINTF_CHARCOUNT) + src/check_mandirs (add_dir_entries): use it + src/whatis.c (display): use it + + * src/check_mandirs.c (test_mandirs): added a (free(exists)) + + * src/straycats.c (check_for_stray): Fixes regarding straycats + with no compression extension + +Fri Nov 11 00:29:15 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * lib/xmalloc.c, lib/xstrdup.c, lib/error.c: replaced + lib/strdup.c: removed + lib/strstr.c: replaced + lib/strsep.c, lib/strspn.c, lib/strcspn.c, lib/ansidecl.h: new + configure.in (AC_REPLACE_FUNCS): with respect to above + + * src/check_mandirs.c (testmandirs): (free_hashtab) only if + necessary + +Thu Nov 10 11:07:52 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.2a5 + + * src/man.c (usage, man_getopt, parse_roff_directive, ditroff): + add `-Z' option + man/man1/man.man1: document it + +Wed Nov 9 20:16:35 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * configure.in (prefix, nroff, neqn, groff, soelim, CFLAGS, + LDFLAGS): portability changes. + Suggestions from Markus Armbruster + gencat/Makefile (CFLAGS, LDFLAGS): definitions removed + + * soelim/Makefile (install): procedural changes + + * src/ult_src.c (ult_softlink): changes regarding S_ISLNK + + * src/manconfig.h: #define __inline + + * src/man.c, src/whatis.c, src/nls.c (LC_MESSAGES): define + as LC_ALL if necessary + +Tue Nov 8 23:17:22 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/version.c (ver): aesthetic changes + * src/man.c, src/whatis.c, src/manpath.c, src/mandb.c (usage, ver): + calling changes + + * src/version.h, src/update_db: removed + + * src/convert_name.c (conver_name): argument changes + src/man.c (format_and_display): caller of above changed + (need_to_rerun, locate_page): new functions to split (man) + (format_and_display_nosave): renamed to format_and_display_file + + * soelim/soelim.l (usage, ver): new functions + removal of NLS dependence + + * Version: 2.2a4 diff --git a/FAQ b/FAQ new file mode 100644 index 0000000..702fc56 --- /dev/null +++ b/FAQ @@ -0,0 +1,67 @@ +Frequently Asked Questions +-------------------------- + +Why use man-db instead of man? +============================== + +The man (currently http://primates.ximian.com/~flucifredi/man/) and man-db +packages forked from a common code base in the mid-1990s. The original goal +of man-db was, as indicated by the name, to add database caching to manual +page searches. The increase in computer performance has considerably +outpaced the growth of manual page collections, so some people now ask what +the point is of using man-db rather than man. + +These days, the database is indeed not such an important difference between +man-db and man, but there are several other areas where man-db does a +significantly better job than man: + + * Internationalisation + + man uses the obsolete catgets system for translations of the messages + emitted by its programs, which cannot deal with the user using a + different output encoding (e.g. UTF-8) from that provided by the + translators. man-db uses gettext, which is more correct and robust. + + In order to support many cases of non-English manual pages, man requires + manual hardcoding of iconv pipelines (or similar) and *roff device names + in its configuration file, and cannot operate correctly in environments + involving a variety of encodings. man-db handles all this out of the + box. + + * Security and code quality + + Security matters because both man and man-db can be installed setuid to + a special user, and also because man is sometimes used in semi-trusted + or untrusted contexts, such as from CGI scripts. + + Both man and man-db spend a lot of time calling external programs, often + in pipelines. man does so by assembling strings which it then feeds to + the shell; this approach is nowadays well-known to be fragile and prone + to security vulnerabilities. man-db has been redesigned from top to + bottom to have safe and correct command execution, using a special + "libpipeline" library. + + * Performance + + Happily, dealing with manual pages is not normally a + performance-critical task these days; manual pages can normally be found + and rendered comfortably within expected interactive response times. + However, there are a few cases that are still more difficult, such as + 'man -K' to perform a full-text search on all manual pages. Neither man + nor man-db includes a proper full-text search engine, but there is + nevertheless a significant performance difference here: man-db performs + this search at least three times as quickly as man, and in some cases + much better than that. (On the test system, man took five minutes to + search all manual pages, severely degrading interactive performance of + the rest of the system for that time; man-db took around 40 seconds.) + + * Maintenance + + At the time of writing (February 2012), man-db has had ten full releases + since the start of 2008 with substantial feature work, while man has had + one release with a few minor changes. + +I have great respect for the people who maintain man, but as a project it +has fallen badly behind. Rather than continuing to struggle along with +complicated patch sets, those distributions that still use man would +probably be better off switching to man-db. diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..82f2235 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,92 @@ +## Process this file with automake to produce Makefile.in +## +## Copyright (C) 1994, 1995 Graeme Wilford. +## Copyright (C) 2001, 2002, 2003, 2005, 2006, 2007, 2009, 2010, 2011, 2012 +## Colin Watson. +## +## This file is part of man-db. +## +## man-db 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. +## +## man-db 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 man-db; if not, write to the Free Software Foundation, +## Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +if HAVE_GNULIB_PO +GNULIB_PO = gl/po +endif + +SUBDIRS = docs gl/lib $(GNULIB_PO) init lib libdb src man manual po tools + +dist_noinst_DATA = FAQ README.md +noinst_HEADERS = include/manconfig.h + +EXTRA_DIST = \ + .gitignore \ + ChangeLog-2013 \ + bootstrap \ + bootstrap.conf \ + patches/argp-domain.patch + +# These macro files are imported by gnulib-tool, but at present not used. We +# include them in the distribution anyway for maximum consistency. +EXTRA_DIST += \ + gl/m4/glibc2.m4 \ + gl/m4/intdiv0.m4 \ + gl/m4/intl.m4 \ + gl/m4/intldir.m4 \ + gl/m4/intmax.m4 \ + gl/m4/inttypes-pri.m4 \ + gl/m4/lcmessage.m4 \ + gl/m4/math_h.m4 \ + gl/m4/printf-posix.m4 \ + gl/m4/sockpfaf.m4 \ + gl/m4/uintmax_t.m4 \ + gl/m4/visibility.m4 + +# Installing in --enable-setuid mode (the default) requires root; disable +# this so that distcheck can be run as non-root. +# The defaults for systemdsystemunitdir and systemdtmpfilesdir are +# intentionally not prefix-sensitive, but we need to adjust them in order +# for distcheck to pass. +AM_DISTCHECK_CONFIGURE_FLAGS = \ + --disable-setuid \ + --with-systemdsystemunitdir=\$${prefix}/lib/systemd/system \ + --with-systemdtmpfilesdir=\$${prefix}/lib/tmpfiles.d + +# We deliberately leave the configuration file in place on uninstall, since +# it may contain local customisations. +distuninstallcheck_listfiles = \ + find . -type f -print | grep -v 'etc/man_db\.conf' + +# Note that autopoint installs into the first directory here. Yes, this +# means that it installs into gl/m4, so we always run gnulib-tool after +# autopoint, at least for now. See +# https://lists.gnu.org/archive/html/bug-gnulib/2009-03/msg00154.html and +# thread. +ACLOCAL_AMFLAGS = -I gl/m4 -I m4 + +dist-hook: gen-ChangeLog + +gen_start_date = 2013-12-09 00:52 +.PHONY: gen-ChangeLog +gen-ChangeLog: + $(AM_V_GEN)if test -d .git; then \ + $(top_srcdir)/build-aux/gitlog-to-changelog \ + --format='%s%n%n%b%n' \ + --since="$(gen_start_date)" > $(distdir)/cl-t; \ + rm -f $(distdir)/ChangeLog; \ + mv $(distdir)/cl-t $(distdir)/ChangeLog; \ + fi + +update-po: + $(MAKE) -C po update-po + $(MAKE) -C man/po4a update-po diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..678c96a --- /dev/null +++ b/Makefile.in @@ -0,0 +1,2643 @@ +# Makefile.in generated by automake 1.17 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2024 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@ + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +am__rm_f = rm -f $(am__rm_f_notfound) +am__rm_rf = rm -rf $(am__rm_f_notfound) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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@ +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/man-arg-automatic-create.m4 \ + $(top_srcdir)/m4/man-arg-automatic-update.m4 \ + $(top_srcdir)/m4/man-arg-cache-owner.m4 \ + $(top_srcdir)/m4/man-arg-cats.m4 \ + $(top_srcdir)/m4/man-arg-config-file.m4 \ + $(top_srcdir)/m4/man-arg-db.m4 \ + $(top_srcdir)/m4/man-arg-device.m4 \ + $(top_srcdir)/m4/man-arg-mandirs.m4 \ + $(top_srcdir)/m4/man-arg-manual.m4 \ + $(top_srcdir)/m4/man-arg-override-dir.m4 \ + $(top_srcdir)/m4/man-arg-sections.m4 \ + $(top_srcdir)/m4/man-arg-setuid.m4 \ + $(top_srcdir)/m4/man-arg-snapdir.m4 \ + $(top_srcdir)/m4/man-arg-systemdsystemunitdir.m4 \ + $(top_srcdir)/m4/man-arg-systemdtmpfilesdir.m4 \ + $(top_srcdir)/m4/man-arg-undoc.m4 $(top_srcdir)/m4/man-bdb.m4 \ + $(top_srcdir)/m4/man-check-progs.m4 \ + $(top_srcdir)/m4/man-compress-lib.m4 \ + $(top_srcdir)/m4/man-gnu-nroff.m4 \ + $(top_srcdir)/m4/man-heirloom-nroff.m4 \ + $(top_srcdir)/m4/man-libseccomp.m4 \ + $(top_srcdir)/m4/man-linguas.m4 $(top_srcdir)/m4/man-po4a.m4 \ + $(top_srcdir)/m4/man-tar-sort-name.m4 \ + $(top_srcdir)/m4/man-trans-subst.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/__inline.m4 \ + $(top_srcdir)/gl/m4/absolute-header.m4 \ + $(top_srcdir)/gl/m4/alloca.m4 $(top_srcdir)/gl/m4/argp.m4 \ + $(top_srcdir)/gl/m4/asm-underscore.m4 \ + $(top_srcdir)/gl/m4/assert_h.m4 $(top_srcdir)/gl/m4/btowc.m4 \ + $(top_srcdir)/gl/m4/builtin-expect.m4 \ + $(top_srcdir)/gl/m4/c-bool.m4 $(top_srcdir)/gl/m4/c32rtomb.m4 \ + $(top_srcdir)/gl/m4/calloc.m4 \ + $(top_srcdir)/gl/m4/canonicalize.m4 \ + $(top_srcdir)/gl/m4/chdir-long.m4 $(top_srcdir)/gl/m4/chown.m4 \ + $(top_srcdir)/gl/m4/clock_time.m4 $(top_srcdir)/gl/m4/close.m4 \ + $(top_srcdir)/gl/m4/closedir.m4 $(top_srcdir)/gl/m4/codeset.m4 \ + $(top_srcdir)/gl/m4/ctype_h.m4 $(top_srcdir)/gl/m4/d-ino.m4 \ + $(top_srcdir)/gl/m4/d-type.m4 $(top_srcdir)/gl/m4/dirent_h.m4 \ + $(top_srcdir)/gl/m4/dirfd.m4 \ + $(top_srcdir)/gl/m4/double-slash-root.m4 \ + $(top_srcdir)/gl/m4/dup.m4 $(top_srcdir)/gl/m4/dup2.m4 \ + $(top_srcdir)/gl/m4/eealloc.m4 $(top_srcdir)/gl/m4/environ.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/error_h.m4 \ + $(top_srcdir)/gl/m4/exponentd.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/extern-inline.m4 \ + $(top_srcdir)/gl/m4/fchdir.m4 $(top_srcdir)/gl/m4/fcntl-o.m4 \ + $(top_srcdir)/gl/m4/fcntl.m4 $(top_srcdir)/gl/m4/fcntl_h.m4 \ + $(top_srcdir)/gl/m4/fdopendir.m4 \ + $(top_srcdir)/gl/m4/filenamecat.m4 \ + $(top_srcdir)/gl/m4/flexmember.m4 \ + $(top_srcdir)/gl/m4/float_h.m4 $(top_srcdir)/gl/m4/flock.m4 \ + $(top_srcdir)/gl/m4/fnmatch.m4 \ + $(top_srcdir)/gl/m4/fnmatch_h.m4 $(top_srcdir)/gl/m4/free.m4 \ + $(top_srcdir)/gl/m4/fstat.m4 $(top_srcdir)/gl/m4/fstatat.m4 \ + $(top_srcdir)/gl/m4/getcwd-abort-bug.m4 \ + $(top_srcdir)/gl/m4/getcwd-path-max.m4 \ + $(top_srcdir)/gl/m4/getcwd.m4 $(top_srcdir)/gl/m4/getdelim.m4 \ + $(top_srcdir)/gl/m4/getdtablesize.m4 \ + $(top_srcdir)/gl/m4/getline.m4 $(top_srcdir)/gl/m4/getlogin.m4 \ + $(top_srcdir)/gl/m4/getlogin_r.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/getprogname.m4 \ + $(top_srcdir)/gl/m4/getrandom.m4 \ + $(top_srcdir)/gl/m4/gettext.m4 $(top_srcdir)/gl/m4/gettime.m4 \ + $(top_srcdir)/gl/m4/gettimeofday.m4 \ + $(top_srcdir)/gl/m4/glob.m4 $(top_srcdir)/gl/m4/glob_h.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/host-cpu-c-abi.m4 \ + $(top_srcdir)/gl/m4/iconv.m4 $(top_srcdir)/gl/m4/idpriv.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/inline.m4 \ + $(top_srcdir)/gl/m4/intlmacosx.m4 \ + $(top_srcdir)/gl/m4/intmax_t.m4 \ + $(top_srcdir)/gl/m4/inttypes.m4 \ + $(top_srcdir)/gl/m4/inttypes_h.m4 $(top_srcdir)/gl/m4/ioctl.m4 \ + $(top_srcdir)/gl/m4/isblank.m4 $(top_srcdir)/gl/m4/iswblank.m4 \ + $(top_srcdir)/gl/m4/iswctype.m4 \ + $(top_srcdir)/gl/m4/iswdigit.m4 \ + $(top_srcdir)/gl/m4/iswpunct.m4 \ + $(top_srcdir)/gl/m4/iswxdigit.m4 \ + $(top_srcdir)/gl/m4/langinfo_h.m4 \ + $(top_srcdir)/gl/m4/largefile.m4 $(top_srcdir)/gl/m4/lchown.m4 \ + $(top_srcdir)/gl/m4/lib-ignore.m4 \ + $(top_srcdir)/gl/m4/lib-ld.m4 $(top_srcdir)/gl/m4/lib-link.m4 \ + $(top_srcdir)/gl/m4/lib-prefix.m4 \ + $(top_srcdir)/gl/m4/libtool.m4 \ + $(top_srcdir)/gl/m4/libunistring-base.m4 \ + $(top_srcdir)/gl/m4/limits-h.m4 \ + $(top_srcdir)/gl/m4/localcharset.m4 \ + $(top_srcdir)/gl/m4/locale-fr.m4 \ + $(top_srcdir)/gl/m4/locale-ja.m4 \ + $(top_srcdir)/gl/m4/locale-zh.m4 \ + $(top_srcdir)/gl/m4/locale_h.m4 \ + $(top_srcdir)/gl/m4/localeconv.m4 $(top_srcdir)/gl/m4/lock.m4 \ + $(top_srcdir)/gl/m4/lstat.m4 $(top_srcdir)/gl/m4/ltoptions.m4 \ + $(top_srcdir)/gl/m4/ltsugar.m4 \ + $(top_srcdir)/gl/m4/ltversion.m4 \ + $(top_srcdir)/gl/m4/lt~obsolete.m4 \ + $(top_srcdir)/gl/m4/malloc.m4 $(top_srcdir)/gl/m4/malloca.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/mbrtoc32.m4 $(top_srcdir)/gl/m4/mbrtowc.m4 \ + $(top_srcdir)/gl/m4/mbsinit.m4 \ + $(top_srcdir)/gl/m4/mbsrtowcs.m4 \ + $(top_srcdir)/gl/m4/mbstate_t.m4 $(top_srcdir)/gl/m4/mbtowc.m4 \ + $(top_srcdir)/gl/m4/memchr.m4 $(top_srcdir)/gl/m4/memmem.m4 \ + $(top_srcdir)/gl/m4/mempcpy.m4 $(top_srcdir)/gl/m4/memrchr.m4 \ + $(top_srcdir)/gl/m4/minmax.m4 $(top_srcdir)/gl/m4/mkdir.m4 \ + $(top_srcdir)/gl/m4/mkdtemp.m4 $(top_srcdir)/gl/m4/mkstemp.m4 \ + $(top_srcdir)/gl/m4/mmap-anon.m4 $(top_srcdir)/gl/m4/mode_t.m4 \ + $(top_srcdir)/gl/m4/msvc-inval.m4 \ + $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ + $(top_srcdir)/gl/m4/multiarch.m4 $(top_srcdir)/gl/m4/musl.m4 \ + $(top_srcdir)/gl/m4/nanosleep.m4 \ + $(top_srcdir)/gl/m4/nl_langinfo.m4 $(top_srcdir)/gl/m4/nls.m4 \ + $(top_srcdir)/gl/m4/nocrash.m4 \ + $(top_srcdir)/gl/m4/nonblocking.m4 \ + $(top_srcdir)/gl/m4/nullptr.m4 $(top_srcdir)/gl/m4/off64_t.m4 \ + $(top_srcdir)/gl/m4/off_t.m4 \ + $(top_srcdir)/gl/m4/open-cloexec.m4 \ + $(top_srcdir)/gl/m4/open-slash.m4 $(top_srcdir)/gl/m4/open.m4 \ + $(top_srcdir)/gl/m4/openat.m4 $(top_srcdir)/gl/m4/opendir.m4 \ + $(top_srcdir)/gl/m4/pathmax.m4 $(top_srcdir)/gl/m4/pipe.m4 \ + $(top_srcdir)/gl/m4/po.m4 $(top_srcdir)/gl/m4/printf.m4 \ + $(top_srcdir)/gl/m4/progtest.m4 $(top_srcdir)/gl/m4/pselect.m4 \ + $(top_srcdir)/gl/m4/pthread-once.m4 \ + $(top_srcdir)/gl/m4/pthread-spin.m4 \ + $(top_srcdir)/gl/m4/pthread_h.m4 \ + $(top_srcdir)/gl/m4/pthread_rwlock_rdlock.m4 \ + $(top_srcdir)/gl/m4/pthread_sigmask.m4 \ + $(top_srcdir)/gl/m4/raise.m4 $(top_srcdir)/gl/m4/rawmemchr.m4 \ + $(top_srcdir)/gl/m4/readdir.m4 $(top_srcdir)/gl/m4/readlink.m4 \ + $(top_srcdir)/gl/m4/readlinkat.m4 \ + $(top_srcdir)/gl/m4/realloc.m4 \ + $(top_srcdir)/gl/m4/reallocarray.m4 \ + $(top_srcdir)/gl/m4/regex.m4 $(top_srcdir)/gl/m4/rename.m4 \ + $(top_srcdir)/gl/m4/renameat.m4 \ + $(top_srcdir)/gl/m4/rewinddir.m4 $(top_srcdir)/gl/m4/rmdir.m4 \ + $(top_srcdir)/gl/m4/save-cwd.m4 $(top_srcdir)/gl/m4/sched_h.m4 \ + $(top_srcdir)/gl/m4/select.m4 $(top_srcdir)/gl/m4/setenv.m4 \ + $(top_srcdir)/gl/m4/setlocale_null.m4 \ + $(top_srcdir)/gl/m4/sigaction.m4 \ + $(top_srcdir)/gl/m4/signal_h.m4 \ + $(top_srcdir)/gl/m4/signalblocking.m4 \ + $(top_srcdir)/gl/m4/sigpipe.m4 $(top_srcdir)/gl/m4/size_max.m4 \ + $(top_srcdir)/gl/m4/sleep.m4 $(top_srcdir)/gl/m4/socketlib.m4 \ + $(top_srcdir)/gl/m4/sockets.m4 $(top_srcdir)/gl/m4/socklen.m4 \ + $(top_srcdir)/gl/m4/ssize_t.m4 \ + $(top_srcdir)/gl/m4/stat-time.m4 $(top_srcdir)/gl/m4/stat.m4 \ + $(top_srcdir)/gl/m4/stdalign.m4 $(top_srcdir)/gl/m4/stdarg.m4 \ + $(top_srcdir)/gl/m4/stddef_h.m4 $(top_srcdir)/gl/m4/stdint.m4 \ + $(top_srcdir)/gl/m4/stdint_h.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ + $(top_srcdir)/gl/m4/stdlib_h.m4 $(top_srcdir)/gl/m4/stpcpy.m4 \ + $(top_srcdir)/gl/m4/strcase.m4 \ + $(top_srcdir)/gl/m4/strcasestr.m4 \ + $(top_srcdir)/gl/m4/strchrnul.m4 $(top_srcdir)/gl/m4/strdup.m4 \ + $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/strerrorname_np.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/strings_h.m4 \ + $(top_srcdir)/gl/m4/strndup.m4 $(top_srcdir)/gl/m4/strnlen.m4 \ + $(top_srcdir)/gl/m4/strsep.m4 \ + $(top_srcdir)/gl/m4/sys_cdefs_h.m4 \ + $(top_srcdir)/gl/m4/sys_file_h.m4 \ + $(top_srcdir)/gl/m4/sys_ioctl_h.m4 \ + $(top_srcdir)/gl/m4/sys_random_h.m4 \ + $(top_srcdir)/gl/m4/sys_select_h.m4 \ + $(top_srcdir)/gl/m4/sys_socket_h.m4 \ + $(top_srcdir)/gl/m4/sys_stat_h.m4 \ + $(top_srcdir)/gl/m4/sys_time_h.m4 \ + $(top_srcdir)/gl/m4/sys_types_h.m4 \ + $(top_srcdir)/gl/m4/sys_uio_h.m4 \ + $(top_srcdir)/gl/m4/sysexits.m4 \ + $(top_srcdir)/gl/m4/tempname.m4 \ + $(top_srcdir)/gl/m4/termios_h.m4 \ + $(top_srcdir)/gl/m4/threadlib.m4 $(top_srcdir)/gl/m4/time_h.m4 \ + $(top_srcdir)/gl/m4/timespec.m4 $(top_srcdir)/gl/m4/uchar_h.m4 \ + $(top_srcdir)/gl/m4/unicase_h.m4 \ + $(top_srcdir)/gl/m4/unictype_h.m4 \ + $(top_srcdir)/gl/m4/uninorm_h.m4 \ + $(top_srcdir)/gl/m4/unistd-safer.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 $(top_srcdir)/gl/m4/unlink.m4 \ + $(top_srcdir)/gl/m4/unlinkat.m4 $(top_srcdir)/gl/m4/utime.m4 \ + $(top_srcdir)/gl/m4/utime_h.m4 $(top_srcdir)/gl/m4/utimens.m4 \ + $(top_srcdir)/gl/m4/utimes.m4 \ + $(top_srcdir)/gl/m4/vasnprintf.m4 \ + $(top_srcdir)/gl/m4/visibility.m4 \ + $(top_srcdir)/gl/m4/vsnprintf.m4 \ + $(top_srcdir)/gl/m4/warn-on-use.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_h.m4 \ + $(top_srcdir)/gl/m4/wcrtomb.m4 $(top_srcdir)/gl/m4/wctype.m4 \ + $(top_srcdir)/gl/m4/wctype_h.m4 $(top_srcdir)/gl/m4/wint_t.m4 \ + $(top_srcdir)/gl/m4/wmemchr.m4 $(top_srcdir)/gl/m4/wmempcpy.m4 \ + $(top_srcdir)/gl/m4/xalloc.m4 $(top_srcdir)/gl/m4/xgetcwd.m4 \ + $(top_srcdir)/gl/m4/xsize.m4 $(top_srcdir)/gl/m4/xstrndup.m4 \ + $(top_srcdir)/gl/m4/xvasprintf.m4 \ + $(top_srcdir)/gl/m4/zzgnulib.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(dist_noinst_DATA) $(noinst_HEADERS) \ + $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(dist_noinst_DATA) +HEADERS = $(noinst_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir distdir-am dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \ + config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +DIST_SUBDIRS = docs gl/lib gl/po init lib libdb src man manual po \ + tools +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/build-aux/ar-lib $(top_srcdir)/build-aux/compile \ + $(top_srcdir)/build-aux/config.guess \ + $(top_srcdir)/build-aux/config.rpath \ + $(top_srcdir)/build-aux/config.sub \ + $(top_srcdir)/build-aux/install-sh \ + $(top_srcdir)/build-aux/ltmain.sh \ + $(top_srcdir)/build-aux/missing ABOUT-NLS COPYING NEWS.md \ + README.md build-aux/ar-lib build-aux/compile \ + build-aux/config.guess build-aux/config.rpath \ + build-aux/config.sub build-aux/install-sh build-aux/ltmain.sh \ + build-aux/missing +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -700 -exec chmod u+rwx {} ';' \ + ; rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +GZIP_ENV = -9 +DIST_ARCHIVES = $(distdir).tar.xz +DIST_TARGETS = dist-xz +# Exists only to be overridden by the user if desired. +AM_DISTCHECK_DVI_TARGET = dvi +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = \ + find . \( -type f -a \! \ + \( -name .nfs* -o -name .smb* -o -name .__afs* \) \) -print +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALLOCA_H = @ALLOCA_H@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +ARFLAGS = @ARFLAGS@ +ASM_SYMBOL_PREFIX = @ASM_SYMBOL_PREFIX@ +ASSERT_H = @ASSERT_H@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CLOCK_TIME_LIB = @CLOCK_TIME_LIB@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CXX_HAS_CHAR8_TYPE = @CXX_HAS_CHAR8_TYPE@ +CXX_HAS_UCHAR_TYPES = @CXX_HAS_UCHAR_TYPES@ +CYGPATH_W = @CYGPATH_W@ +DBLIBS = @DBLIBS@ +DBTYPE = @DBTYPE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIR_HAS_FD_MEMBER = @DIR_HAS_FD_MEMBER@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILECMD = @FILECMD@ +FLOAT_H = @FLOAT_H@ +FNMATCH_H = @FNMATCH_H@ +GETLOGIN_LIB = @GETLOGIN_LIB@ +GETOPT_CDEFS_H = @GETOPT_CDEFS_H@ +GETOPT_H = @GETOPT_H@ +GETRANDOM_LIB = @GETRANDOM_LIB@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLOB_H = @GLOB_H@ +GL_CFLAG_ALLOW_WARNINGS = @GL_CFLAG_ALLOW_WARNINGS@ +GL_CFLAG_GNULIB_WARNINGS = @GL_CFLAG_GNULIB_WARNINGS@ +GL_GNULIB_ABORT_DEBUG = @GL_GNULIB_ABORT_DEBUG@ +GL_GNULIB_ACCEPT = @GL_GNULIB_ACCEPT@ +GL_GNULIB_ACCEPT4 = @GL_GNULIB_ACCEPT4@ +GL_GNULIB_ACCESS = @GL_GNULIB_ACCESS@ +GL_GNULIB_ALIGNED_ALLOC = @GL_GNULIB_ALIGNED_ALLOC@ +GL_GNULIB_ALPHASORT = @GL_GNULIB_ALPHASORT@ +GL_GNULIB_ATOLL = @GL_GNULIB_ATOLL@ +GL_GNULIB_BIND = @GL_GNULIB_BIND@ +GL_GNULIB_BTOC32 = @GL_GNULIB_BTOC32@ +GL_GNULIB_BTOWC = @GL_GNULIB_BTOWC@ +GL_GNULIB_C32ISALNUM = @GL_GNULIB_C32ISALNUM@ +GL_GNULIB_C32ISALPHA = @GL_GNULIB_C32ISALPHA@ +GL_GNULIB_C32ISBLANK = @GL_GNULIB_C32ISBLANK@ +GL_GNULIB_C32ISCNTRL = @GL_GNULIB_C32ISCNTRL@ +GL_GNULIB_C32ISDIGIT = @GL_GNULIB_C32ISDIGIT@ +GL_GNULIB_C32ISGRAPH = @GL_GNULIB_C32ISGRAPH@ +GL_GNULIB_C32ISLOWER = @GL_GNULIB_C32ISLOWER@ +GL_GNULIB_C32ISPRINT = @GL_GNULIB_C32ISPRINT@ +GL_GNULIB_C32ISPUNCT = @GL_GNULIB_C32ISPUNCT@ +GL_GNULIB_C32ISSPACE = @GL_GNULIB_C32ISSPACE@ +GL_GNULIB_C32ISUPPER = @GL_GNULIB_C32ISUPPER@ +GL_GNULIB_C32ISXDIGIT = @GL_GNULIB_C32ISXDIGIT@ +GL_GNULIB_C32RTOMB = @GL_GNULIB_C32RTOMB@ +GL_GNULIB_C32SNRTOMBS = @GL_GNULIB_C32SNRTOMBS@ +GL_GNULIB_C32SRTOMBS = @GL_GNULIB_C32SRTOMBS@ +GL_GNULIB_C32STOMBS = @GL_GNULIB_C32STOMBS@ +GL_GNULIB_C32SWIDTH = @GL_GNULIB_C32SWIDTH@ +GL_GNULIB_C32TOB = @GL_GNULIB_C32TOB@ +GL_GNULIB_C32TOLOWER = @GL_GNULIB_C32TOLOWER@ +GL_GNULIB_C32TOUPPER = @GL_GNULIB_C32TOUPPER@ +GL_GNULIB_C32WIDTH = @GL_GNULIB_C32WIDTH@ +GL_GNULIB_C32_APPLY_MAPPING = @GL_GNULIB_C32_APPLY_MAPPING@ +GL_GNULIB_C32_APPLY_TYPE_TEST = @GL_GNULIB_C32_APPLY_TYPE_TEST@ +GL_GNULIB_C32_GET_MAPPING = @GL_GNULIB_C32_GET_MAPPING@ +GL_GNULIB_C32_GET_TYPE_TEST = @GL_GNULIB_C32_GET_TYPE_TEST@ +GL_GNULIB_CALLOC_GNU = @GL_GNULIB_CALLOC_GNU@ +GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ +GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ +GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ +GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ +GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ +GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ +GL_GNULIB_CLOSEDIR = @GL_GNULIB_CLOSEDIR@ +GL_GNULIB_CONNECT = @GL_GNULIB_CONNECT@ +GL_GNULIB_COPY_FILE_RANGE = @GL_GNULIB_COPY_FILE_RANGE@ +GL_GNULIB_CREAT = @GL_GNULIB_CREAT@ +GL_GNULIB_CTIME = @GL_GNULIB_CTIME@ +GL_GNULIB_DIRFD = @GL_GNULIB_DIRFD@ +GL_GNULIB_DPRINTF = @GL_GNULIB_DPRINTF@ +GL_GNULIB_DUP = @GL_GNULIB_DUP@ +GL_GNULIB_DUP2 = @GL_GNULIB_DUP2@ +GL_GNULIB_DUP3 = @GL_GNULIB_DUP3@ +GL_GNULIB_DUPLOCALE = @GL_GNULIB_DUPLOCALE@ +GL_GNULIB_DZPRINTF = @GL_GNULIB_DZPRINTF@ +GL_GNULIB_ENVIRON = @GL_GNULIB_ENVIRON@ +GL_GNULIB_EUIDACCESS = @GL_GNULIB_EUIDACCESS@ +GL_GNULIB_EXECL = @GL_GNULIB_EXECL@ +GL_GNULIB_EXECLE = @GL_GNULIB_EXECLE@ +GL_GNULIB_EXECLP = @GL_GNULIB_EXECLP@ +GL_GNULIB_EXECV = @GL_GNULIB_EXECV@ +GL_GNULIB_EXECVE = @GL_GNULIB_EXECVE@ +GL_GNULIB_EXECVP = @GL_GNULIB_EXECVP@ +GL_GNULIB_EXECVPE = @GL_GNULIB_EXECVPE@ +GL_GNULIB_EXPLICIT_BZERO = @GL_GNULIB_EXPLICIT_BZERO@ +GL_GNULIB_FACCESSAT = @GL_GNULIB_FACCESSAT@ +GL_GNULIB_FCHDIR = @GL_GNULIB_FCHDIR@ +GL_GNULIB_FCHMODAT = @GL_GNULIB_FCHMODAT@ +GL_GNULIB_FCHOWNAT = @GL_GNULIB_FCHOWNAT@ +GL_GNULIB_FCLOSE = @GL_GNULIB_FCLOSE@ +GL_GNULIB_FCNTL = @GL_GNULIB_FCNTL@ +GL_GNULIB_FDATASYNC = @GL_GNULIB_FDATASYNC@ +GL_GNULIB_FDOPEN = @GL_GNULIB_FDOPEN@ +GL_GNULIB_FDOPENDIR = @GL_GNULIB_FDOPENDIR@ +GL_GNULIB_FFLUSH = @GL_GNULIB_FFLUSH@ +GL_GNULIB_FFS = @GL_GNULIB_FFS@ +GL_GNULIB_FFSL = @GL_GNULIB_FFSL@ +GL_GNULIB_FFSLL = @GL_GNULIB_FFSLL@ +GL_GNULIB_FGETC = @GL_GNULIB_FGETC@ +GL_GNULIB_FGETS = @GL_GNULIB_FGETS@ +GL_GNULIB_FLOCK = @GL_GNULIB_FLOCK@ +GL_GNULIB_FNMATCH = @GL_GNULIB_FNMATCH@ +GL_GNULIB_FOPEN = @GL_GNULIB_FOPEN@ +GL_GNULIB_FOPEN_GNU = @GL_GNULIB_FOPEN_GNU@ +GL_GNULIB_FPRINTF = @GL_GNULIB_FPRINTF@ +GL_GNULIB_FPRINTF_POSIX = @GL_GNULIB_FPRINTF_POSIX@ +GL_GNULIB_FPURGE = @GL_GNULIB_FPURGE@ +GL_GNULIB_FPUTC = @GL_GNULIB_FPUTC@ +GL_GNULIB_FPUTS = @GL_GNULIB_FPUTS@ +GL_GNULIB_FREAD = @GL_GNULIB_FREAD@ +GL_GNULIB_FREE_POSIX = @GL_GNULIB_FREE_POSIX@ +GL_GNULIB_FREOPEN = @GL_GNULIB_FREOPEN@ +GL_GNULIB_FSCANF = @GL_GNULIB_FSCANF@ +GL_GNULIB_FSEEK = @GL_GNULIB_FSEEK@ +GL_GNULIB_FSEEKO = @GL_GNULIB_FSEEKO@ +GL_GNULIB_FSTAT = @GL_GNULIB_FSTAT@ +GL_GNULIB_FSTATAT = @GL_GNULIB_FSTATAT@ +GL_GNULIB_FSYNC = @GL_GNULIB_FSYNC@ +GL_GNULIB_FTELL = @GL_GNULIB_FTELL@ +GL_GNULIB_FTELLO = @GL_GNULIB_FTELLO@ +GL_GNULIB_FTRUNCATE = @GL_GNULIB_FTRUNCATE@ +GL_GNULIB_FUTIMENS = @GL_GNULIB_FUTIMENS@ +GL_GNULIB_FWRITE = @GL_GNULIB_FWRITE@ +GL_GNULIB_FZPRINTF = @GL_GNULIB_FZPRINTF@ +GL_GNULIB_GETC = @GL_GNULIB_GETC@ +GL_GNULIB_GETCHAR = @GL_GNULIB_GETCHAR@ +GL_GNULIB_GETCWD = @GL_GNULIB_GETCWD@ +GL_GNULIB_GETDELIM = @GL_GNULIB_GETDELIM@ +GL_GNULIB_GETDOMAINNAME = @GL_GNULIB_GETDOMAINNAME@ +GL_GNULIB_GETDTABLESIZE = @GL_GNULIB_GETDTABLESIZE@ +GL_GNULIB_GETENTROPY = @GL_GNULIB_GETENTROPY@ +GL_GNULIB_GETGROUPS = @GL_GNULIB_GETGROUPS@ +GL_GNULIB_GETHOSTNAME = @GL_GNULIB_GETHOSTNAME@ +GL_GNULIB_GETLINE = @GL_GNULIB_GETLINE@ +GL_GNULIB_GETLOADAVG = @GL_GNULIB_GETLOADAVG@ +GL_GNULIB_GETLOGIN = @GL_GNULIB_GETLOGIN@ +GL_GNULIB_GETLOGIN_R = @GL_GNULIB_GETLOGIN_R@ +GL_GNULIB_GETOPT_POSIX = @GL_GNULIB_GETOPT_POSIX@ +GL_GNULIB_GETPAGESIZE = @GL_GNULIB_GETPAGESIZE@ +GL_GNULIB_GETPASS = @GL_GNULIB_GETPASS@ +GL_GNULIB_GETPASS_GNU = @GL_GNULIB_GETPASS_GNU@ +GL_GNULIB_GETPEERNAME = @GL_GNULIB_GETPEERNAME@ +GL_GNULIB_GETPROGNAME = @GL_GNULIB_GETPROGNAME@ +GL_GNULIB_GETRANDOM = @GL_GNULIB_GETRANDOM@ +GL_GNULIB_GETSOCKNAME = @GL_GNULIB_GETSOCKNAME@ +GL_GNULIB_GETSOCKOPT = @GL_GNULIB_GETSOCKOPT@ +GL_GNULIB_GETSUBOPT = @GL_GNULIB_GETSUBOPT@ +GL_GNULIB_GETTIMEOFDAY = @GL_GNULIB_GETTIMEOFDAY@ +GL_GNULIB_GETUMASK = @GL_GNULIB_GETUMASK@ +GL_GNULIB_GETUSERSHELL = @GL_GNULIB_GETUSERSHELL@ +GL_GNULIB_GLOB = @GL_GNULIB_GLOB@ +GL_GNULIB_GRANTPT = @GL_GNULIB_GRANTPT@ +GL_GNULIB_GROUP_MEMBER = @GL_GNULIB_GROUP_MEMBER@ +GL_GNULIB_IMAXABS = @GL_GNULIB_IMAXABS@ +GL_GNULIB_IMAXDIV = @GL_GNULIB_IMAXDIV@ +GL_GNULIB_IOCTL = @GL_GNULIB_IOCTL@ +GL_GNULIB_ISATTY = @GL_GNULIB_ISATTY@ +GL_GNULIB_ISBLANK = @GL_GNULIB_ISBLANK@ +GL_GNULIB_ISWBLANK = @GL_GNULIB_ISWBLANK@ +GL_GNULIB_ISWCTYPE = @GL_GNULIB_ISWCTYPE@ +GL_GNULIB_ISWDIGIT = @GL_GNULIB_ISWDIGIT@ +GL_GNULIB_ISWPUNCT = @GL_GNULIB_ISWPUNCT@ +GL_GNULIB_ISWXDIGIT = @GL_GNULIB_ISWXDIGIT@ +GL_GNULIB_LCHMOD = @GL_GNULIB_LCHMOD@ +GL_GNULIB_LCHOWN = @GL_GNULIB_LCHOWN@ +GL_GNULIB_LINK = @GL_GNULIB_LINK@ +GL_GNULIB_LINKAT = @GL_GNULIB_LINKAT@ +GL_GNULIB_LISTEN = @GL_GNULIB_LISTEN@ +GL_GNULIB_LOCALECONV = @GL_GNULIB_LOCALECONV@ +GL_GNULIB_LOCALENAME_UNSAFE = @GL_GNULIB_LOCALENAME_UNSAFE@ +GL_GNULIB_LOCALTIME = @GL_GNULIB_LOCALTIME@ +GL_GNULIB_LSEEK = @GL_GNULIB_LSEEK@ +GL_GNULIB_LSTAT = @GL_GNULIB_LSTAT@ +GL_GNULIB_MALLOC_GNU = @GL_GNULIB_MALLOC_GNU@ +GL_GNULIB_MALLOC_POSIX = @GL_GNULIB_MALLOC_POSIX@ +GL_GNULIB_MBRLEN = @GL_GNULIB_MBRLEN@ +GL_GNULIB_MBRTOC16 = @GL_GNULIB_MBRTOC16@ +GL_GNULIB_MBRTOC32 = @GL_GNULIB_MBRTOC32@ +GL_GNULIB_MBRTOWC = @GL_GNULIB_MBRTOWC@ +GL_GNULIB_MBSCASECMP = @GL_GNULIB_MBSCASECMP@ +GL_GNULIB_MBSCASESTR = @GL_GNULIB_MBSCASESTR@ +GL_GNULIB_MBSCHR = @GL_GNULIB_MBSCHR@ +GL_GNULIB_MBSCSPN = @GL_GNULIB_MBSCSPN@ +GL_GNULIB_MBSINIT = @GL_GNULIB_MBSINIT@ +GL_GNULIB_MBSLEN = @GL_GNULIB_MBSLEN@ +GL_GNULIB_MBSNCASECMP = @GL_GNULIB_MBSNCASECMP@ +GL_GNULIB_MBSNLEN = @GL_GNULIB_MBSNLEN@ +GL_GNULIB_MBSNRTOC32S = @GL_GNULIB_MBSNRTOC32S@ +GL_GNULIB_MBSNRTOWCS = @GL_GNULIB_MBSNRTOWCS@ +GL_GNULIB_MBSPBRK = @GL_GNULIB_MBSPBRK@ +GL_GNULIB_MBSPCASECMP = @GL_GNULIB_MBSPCASECMP@ +GL_GNULIB_MBSRCHR = @GL_GNULIB_MBSRCHR@ +GL_GNULIB_MBSRTOC32S = @GL_GNULIB_MBSRTOC32S@ +GL_GNULIB_MBSRTOWCS = @GL_GNULIB_MBSRTOWCS@ +GL_GNULIB_MBSSEP = @GL_GNULIB_MBSSEP@ +GL_GNULIB_MBSSPN = @GL_GNULIB_MBSSPN@ +GL_GNULIB_MBSSTR = @GL_GNULIB_MBSSTR@ +GL_GNULIB_MBSTOC32S = @GL_GNULIB_MBSTOC32S@ +GL_GNULIB_MBSTOK_R = @GL_GNULIB_MBSTOK_R@ +GL_GNULIB_MBSTOWCS = @GL_GNULIB_MBSTOWCS@ +GL_GNULIB_MBSZERO = @GL_GNULIB_MBSZERO@ +GL_GNULIB_MBTOWC = @GL_GNULIB_MBTOWC@ +GL_GNULIB_MDA_ACCESS = @GL_GNULIB_MDA_ACCESS@ +GL_GNULIB_MDA_CHDIR = @GL_GNULIB_MDA_CHDIR@ +GL_GNULIB_MDA_CHMOD = @GL_GNULIB_MDA_CHMOD@ +GL_GNULIB_MDA_CLOSE = @GL_GNULIB_MDA_CLOSE@ +GL_GNULIB_MDA_CREAT = @GL_GNULIB_MDA_CREAT@ +GL_GNULIB_MDA_DUP = @GL_GNULIB_MDA_DUP@ +GL_GNULIB_MDA_DUP2 = @GL_GNULIB_MDA_DUP2@ +GL_GNULIB_MDA_ECVT = @GL_GNULIB_MDA_ECVT@ +GL_GNULIB_MDA_EXECL = @GL_GNULIB_MDA_EXECL@ +GL_GNULIB_MDA_EXECLE = @GL_GNULIB_MDA_EXECLE@ +GL_GNULIB_MDA_EXECLP = @GL_GNULIB_MDA_EXECLP@ +GL_GNULIB_MDA_EXECV = @GL_GNULIB_MDA_EXECV@ +GL_GNULIB_MDA_EXECVE = @GL_GNULIB_MDA_EXECVE@ +GL_GNULIB_MDA_EXECVP = @GL_GNULIB_MDA_EXECVP@ +GL_GNULIB_MDA_EXECVPE = @GL_GNULIB_MDA_EXECVPE@ +GL_GNULIB_MDA_FCLOSEALL = @GL_GNULIB_MDA_FCLOSEALL@ +GL_GNULIB_MDA_FCVT = @GL_GNULIB_MDA_FCVT@ +GL_GNULIB_MDA_FDOPEN = @GL_GNULIB_MDA_FDOPEN@ +GL_GNULIB_MDA_FILENO = @GL_GNULIB_MDA_FILENO@ +GL_GNULIB_MDA_GCVT = @GL_GNULIB_MDA_GCVT@ +GL_GNULIB_MDA_GETCWD = @GL_GNULIB_MDA_GETCWD@ +GL_GNULIB_MDA_GETPID = @GL_GNULIB_MDA_GETPID@ +GL_GNULIB_MDA_GETW = @GL_GNULIB_MDA_GETW@ +GL_GNULIB_MDA_ISATTY = @GL_GNULIB_MDA_ISATTY@ +GL_GNULIB_MDA_LSEEK = @GL_GNULIB_MDA_LSEEK@ +GL_GNULIB_MDA_MEMCCPY = @GL_GNULIB_MDA_MEMCCPY@ +GL_GNULIB_MDA_MKDIR = @GL_GNULIB_MDA_MKDIR@ +GL_GNULIB_MDA_MKTEMP = @GL_GNULIB_MDA_MKTEMP@ +GL_GNULIB_MDA_OPEN = @GL_GNULIB_MDA_OPEN@ +GL_GNULIB_MDA_PUTENV = @GL_GNULIB_MDA_PUTENV@ +GL_GNULIB_MDA_PUTW = @GL_GNULIB_MDA_PUTW@ +GL_GNULIB_MDA_READ = @GL_GNULIB_MDA_READ@ +GL_GNULIB_MDA_RMDIR = @GL_GNULIB_MDA_RMDIR@ +GL_GNULIB_MDA_STRDUP = @GL_GNULIB_MDA_STRDUP@ +GL_GNULIB_MDA_SWAB = @GL_GNULIB_MDA_SWAB@ +GL_GNULIB_MDA_TEMPNAM = @GL_GNULIB_MDA_TEMPNAM@ +GL_GNULIB_MDA_TZSET = @GL_GNULIB_MDA_TZSET@ +GL_GNULIB_MDA_UMASK = @GL_GNULIB_MDA_UMASK@ +GL_GNULIB_MDA_UNLINK = @GL_GNULIB_MDA_UNLINK@ +GL_GNULIB_MDA_UTIME = @GL_GNULIB_MDA_UTIME@ +GL_GNULIB_MDA_WCSDUP = @GL_GNULIB_MDA_WCSDUP@ +GL_GNULIB_MDA_WRITE = @GL_GNULIB_MDA_WRITE@ +GL_GNULIB_MEMCHR = @GL_GNULIB_MEMCHR@ +GL_GNULIB_MEMMEM = @GL_GNULIB_MEMMEM@ +GL_GNULIB_MEMPCPY = @GL_GNULIB_MEMPCPY@ +GL_GNULIB_MEMRCHR = @GL_GNULIB_MEMRCHR@ +GL_GNULIB_MEMSET_EXPLICIT = @GL_GNULIB_MEMSET_EXPLICIT@ +GL_GNULIB_MKDIR = @GL_GNULIB_MKDIR@ +GL_GNULIB_MKDIRAT = @GL_GNULIB_MKDIRAT@ +GL_GNULIB_MKDTEMP = @GL_GNULIB_MKDTEMP@ +GL_GNULIB_MKFIFO = @GL_GNULIB_MKFIFO@ +GL_GNULIB_MKFIFOAT = @GL_GNULIB_MKFIFOAT@ +GL_GNULIB_MKNOD = @GL_GNULIB_MKNOD@ +GL_GNULIB_MKNODAT = @GL_GNULIB_MKNODAT@ +GL_GNULIB_MKOSTEMP = @GL_GNULIB_MKOSTEMP@ +GL_GNULIB_MKOSTEMPS = @GL_GNULIB_MKOSTEMPS@ +GL_GNULIB_MKSTEMP = @GL_GNULIB_MKSTEMP@ +GL_GNULIB_MKSTEMPS = @GL_GNULIB_MKSTEMPS@ +GL_GNULIB_MKTIME = @GL_GNULIB_MKTIME@ +GL_GNULIB_NANOSLEEP = @GL_GNULIB_NANOSLEEP@ +GL_GNULIB_NL_LANGINFO = @GL_GNULIB_NL_LANGINFO@ +GL_GNULIB_NONBLOCKING = @GL_GNULIB_NONBLOCKING@ +GL_GNULIB_OBSTACK_PRINTF = @GL_GNULIB_OBSTACK_PRINTF@ +GL_GNULIB_OBSTACK_PRINTF_POSIX = @GL_GNULIB_OBSTACK_PRINTF_POSIX@ +GL_GNULIB_OBSTACK_ZPRINTF = @GL_GNULIB_OBSTACK_ZPRINTF@ +GL_GNULIB_OPEN = @GL_GNULIB_OPEN@ +GL_GNULIB_OPENAT = @GL_GNULIB_OPENAT@ +GL_GNULIB_OPENDIR = @GL_GNULIB_OPENDIR@ +GL_GNULIB_OVERRIDES_STRUCT_STAT = @GL_GNULIB_OVERRIDES_STRUCT_STAT@ +GL_GNULIB_PCLOSE = @GL_GNULIB_PCLOSE@ +GL_GNULIB_PERROR = @GL_GNULIB_PERROR@ +GL_GNULIB_PIPE = @GL_GNULIB_PIPE@ +GL_GNULIB_PIPE2 = @GL_GNULIB_PIPE2@ +GL_GNULIB_POPEN = @GL_GNULIB_POPEN@ +GL_GNULIB_POSIX_MEMALIGN = @GL_GNULIB_POSIX_MEMALIGN@ +GL_GNULIB_POSIX_OPENPT = @GL_GNULIB_POSIX_OPENPT@ +GL_GNULIB_PREAD = @GL_GNULIB_PREAD@ +GL_GNULIB_PRINTF = @GL_GNULIB_PRINTF@ +GL_GNULIB_PRINTF_POSIX = @GL_GNULIB_PRINTF_POSIX@ +GL_GNULIB_PSELECT = @GL_GNULIB_PSELECT@ +GL_GNULIB_PTHREAD_COND = @GL_GNULIB_PTHREAD_COND@ +GL_GNULIB_PTHREAD_MUTEX = @GL_GNULIB_PTHREAD_MUTEX@ +GL_GNULIB_PTHREAD_MUTEX_TIMEDLOCK = @GL_GNULIB_PTHREAD_MUTEX_TIMEDLOCK@ +GL_GNULIB_PTHREAD_ONCE = @GL_GNULIB_PTHREAD_ONCE@ +GL_GNULIB_PTHREAD_RWLOCK = @GL_GNULIB_PTHREAD_RWLOCK@ +GL_GNULIB_PTHREAD_SIGMASK = @GL_GNULIB_PTHREAD_SIGMASK@ +GL_GNULIB_PTHREAD_SPIN = @GL_GNULIB_PTHREAD_SPIN@ +GL_GNULIB_PTHREAD_THREAD = @GL_GNULIB_PTHREAD_THREAD@ +GL_GNULIB_PTHREAD_TSS = @GL_GNULIB_PTHREAD_TSS@ +GL_GNULIB_PTSNAME = @GL_GNULIB_PTSNAME@ +GL_GNULIB_PTSNAME_R = @GL_GNULIB_PTSNAME_R@ +GL_GNULIB_PUTC = @GL_GNULIB_PUTC@ +GL_GNULIB_PUTCHAR = @GL_GNULIB_PUTCHAR@ +GL_GNULIB_PUTENV = @GL_GNULIB_PUTENV@ +GL_GNULIB_PUTS = @GL_GNULIB_PUTS@ +GL_GNULIB_PWRITE = @GL_GNULIB_PWRITE@ +GL_GNULIB_QSORT_R = @GL_GNULIB_QSORT_R@ +GL_GNULIB_RAISE = @GL_GNULIB_RAISE@ +GL_GNULIB_RAND = @GL_GNULIB_RAND@ +GL_GNULIB_RANDOM = @GL_GNULIB_RANDOM@ +GL_GNULIB_RANDOM_R = @GL_GNULIB_RANDOM_R@ +GL_GNULIB_RAWMEMCHR = @GL_GNULIB_RAWMEMCHR@ +GL_GNULIB_READ = @GL_GNULIB_READ@ +GL_GNULIB_READDIR = @GL_GNULIB_READDIR@ +GL_GNULIB_READLINK = @GL_GNULIB_READLINK@ +GL_GNULIB_READLINKAT = @GL_GNULIB_READLINKAT@ +GL_GNULIB_REALLOCARRAY = @GL_GNULIB_REALLOCARRAY@ +GL_GNULIB_REALLOC_GNU = @GL_GNULIB_REALLOC_GNU@ +GL_GNULIB_REALLOC_POSIX = @GL_GNULIB_REALLOC_POSIX@ +GL_GNULIB_REALPATH = @GL_GNULIB_REALPATH@ +GL_GNULIB_RECV = @GL_GNULIB_RECV@ +GL_GNULIB_RECVFROM = @GL_GNULIB_RECVFROM@ +GL_GNULIB_REMOVE = @GL_GNULIB_REMOVE@ +GL_GNULIB_RENAME = @GL_GNULIB_RENAME@ +GL_GNULIB_RENAMEAT = @GL_GNULIB_RENAMEAT@ +GL_GNULIB_REWINDDIR = @GL_GNULIB_REWINDDIR@ +GL_GNULIB_RMDIR = @GL_GNULIB_RMDIR@ +GL_GNULIB_RPMATCH = @GL_GNULIB_RPMATCH@ +GL_GNULIB_SCANDIR = @GL_GNULIB_SCANDIR@ +GL_GNULIB_SCANF = @GL_GNULIB_SCANF@ +GL_GNULIB_SCHED_YIELD = @GL_GNULIB_SCHED_YIELD@ +GL_GNULIB_SECURE_GETENV = @GL_GNULIB_SECURE_GETENV@ +GL_GNULIB_SELECT = @GL_GNULIB_SELECT@ +GL_GNULIB_SEND = @GL_GNULIB_SEND@ +GL_GNULIB_SENDTO = @GL_GNULIB_SENDTO@ +GL_GNULIB_SETENV = @GL_GNULIB_SETENV@ +GL_GNULIB_SETHOSTNAME = @GL_GNULIB_SETHOSTNAME@ +GL_GNULIB_SETLOCALE = @GL_GNULIB_SETLOCALE@ +GL_GNULIB_SETLOCALE_NULL = @GL_GNULIB_SETLOCALE_NULL@ +GL_GNULIB_SETSOCKOPT = @GL_GNULIB_SETSOCKOPT@ +GL_GNULIB_SHUTDOWN = @GL_GNULIB_SHUTDOWN@ +GL_GNULIB_SIGABBREV_NP = @GL_GNULIB_SIGABBREV_NP@ +GL_GNULIB_SIGACTION = @GL_GNULIB_SIGACTION@ +GL_GNULIB_SIGDESCR_NP = @GL_GNULIB_SIGDESCR_NP@ +GL_GNULIB_SIGNAL_H_SIGPIPE = @GL_GNULIB_SIGNAL_H_SIGPIPE@ +GL_GNULIB_SIGPROCMASK = @GL_GNULIB_SIGPROCMASK@ +GL_GNULIB_SLEEP = @GL_GNULIB_SLEEP@ +GL_GNULIB_SNPRINTF = @GL_GNULIB_SNPRINTF@ +GL_GNULIB_SNZPRINTF = @GL_GNULIB_SNZPRINTF@ +GL_GNULIB_SOCKET = @GL_GNULIB_SOCKET@ +GL_GNULIB_SPRINTF_POSIX = @GL_GNULIB_SPRINTF_POSIX@ +GL_GNULIB_STAT = @GL_GNULIB_STAT@ +GL_GNULIB_STDIO_H_NONBLOCKING = @GL_GNULIB_STDIO_H_NONBLOCKING@ +GL_GNULIB_STDIO_H_SIGPIPE = @GL_GNULIB_STDIO_H_SIGPIPE@ +GL_GNULIB_STPCPY = @GL_GNULIB_STPCPY@ +GL_GNULIB_STPNCPY = @GL_GNULIB_STPNCPY@ +GL_GNULIB_STRCASESTR = @GL_GNULIB_STRCASESTR@ +GL_GNULIB_STRCHRNUL = @GL_GNULIB_STRCHRNUL@ +GL_GNULIB_STRDUP = @GL_GNULIB_STRDUP@ +GL_GNULIB_STRERROR = @GL_GNULIB_STRERROR@ +GL_GNULIB_STRERRORNAME_NP = @GL_GNULIB_STRERRORNAME_NP@ +GL_GNULIB_STRERROR_R = @GL_GNULIB_STRERROR_R@ +GL_GNULIB_STRFTIME = @GL_GNULIB_STRFTIME@ +GL_GNULIB_STRNCAT = @GL_GNULIB_STRNCAT@ +GL_GNULIB_STRNDUP = @GL_GNULIB_STRNDUP@ +GL_GNULIB_STRNLEN = @GL_GNULIB_STRNLEN@ +GL_GNULIB_STRPBRK = @GL_GNULIB_STRPBRK@ +GL_GNULIB_STRPTIME = @GL_GNULIB_STRPTIME@ +GL_GNULIB_STRSEP = @GL_GNULIB_STRSEP@ +GL_GNULIB_STRSIGNAL = @GL_GNULIB_STRSIGNAL@ +GL_GNULIB_STRSTR = @GL_GNULIB_STRSTR@ +GL_GNULIB_STRTOD = @GL_GNULIB_STRTOD@ +GL_GNULIB_STRTOF = @GL_GNULIB_STRTOF@ +GL_GNULIB_STRTOIMAX = @GL_GNULIB_STRTOIMAX@ +GL_GNULIB_STRTOK_R = @GL_GNULIB_STRTOK_R@ +GL_GNULIB_STRTOL = @GL_GNULIB_STRTOL@ +GL_GNULIB_STRTOLD = @GL_GNULIB_STRTOLD@ +GL_GNULIB_STRTOLL = @GL_GNULIB_STRTOLL@ +GL_GNULIB_STRTOUL = @GL_GNULIB_STRTOUL@ +GL_GNULIB_STRTOULL = @GL_GNULIB_STRTOULL@ +GL_GNULIB_STRTOUMAX = @GL_GNULIB_STRTOUMAX@ +GL_GNULIB_STRVERSCMP = @GL_GNULIB_STRVERSCMP@ +GL_GNULIB_SYMLINK = @GL_GNULIB_SYMLINK@ +GL_GNULIB_SYMLINKAT = @GL_GNULIB_SYMLINKAT@ +GL_GNULIB_SYSTEM_POSIX = @GL_GNULIB_SYSTEM_POSIX@ +GL_GNULIB_SZPRINTF = @GL_GNULIB_SZPRINTF@ +GL_GNULIB_TCGETSID = @GL_GNULIB_TCGETSID@ +GL_GNULIB_TIME = @GL_GNULIB_TIME@ +GL_GNULIB_TIMEGM = @GL_GNULIB_TIMEGM@ +GL_GNULIB_TIMESPEC_GET = @GL_GNULIB_TIMESPEC_GET@ +GL_GNULIB_TIMESPEC_GETRES = @GL_GNULIB_TIMESPEC_GETRES@ +GL_GNULIB_TIME_R = @GL_GNULIB_TIME_R@ +GL_GNULIB_TIME_RZ = @GL_GNULIB_TIME_RZ@ +GL_GNULIB_TMPFILE = @GL_GNULIB_TMPFILE@ +GL_GNULIB_TOWCTRANS = @GL_GNULIB_TOWCTRANS@ +GL_GNULIB_TRUNCATE = @GL_GNULIB_TRUNCATE@ +GL_GNULIB_TTYNAME_R = @GL_GNULIB_TTYNAME_R@ +GL_GNULIB_TZNAME = @GL_GNULIB_TZNAME@ +GL_GNULIB_TZSET = @GL_GNULIB_TZSET@ +GL_GNULIB_UNICASE_EMPTY_PREFIX_CONTEXT_DLL_VARIABLE = @GL_GNULIB_UNICASE_EMPTY_PREFIX_CONTEXT_DLL_VARIABLE@ +GL_GNULIB_UNICASE_EMPTY_SUFFIX_CONTEXT_DLL_VARIABLE = @GL_GNULIB_UNICASE_EMPTY_SUFFIX_CONTEXT_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_CC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_CC_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_CF_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_CF_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_CN_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_CN_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_CO_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_CO_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_CS_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_CS_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_C_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_C_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_LC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_LC_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_LL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_LL_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_LM_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_LM_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_LO_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_LO_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_LT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_LT_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_LU_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_LU_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_L_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_L_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_MC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_MC_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_ME_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_ME_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_MN_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_MN_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_M_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_M_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_ND_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_ND_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_NL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_NL_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_NO_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_NO_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_N_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_N_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_PC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_PC_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_PD_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_PD_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_PE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_PE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_PF_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_PF_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_PI_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_PI_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_PO_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_PO_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_PS_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_PS_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_P_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_P_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_SC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_SC_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_SK_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_SK_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_SM_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_SM_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_SO_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_SO_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_S_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_S_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_ZL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_ZL_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_ZP_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_ZP_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_ZS_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_ZS_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_CATEGORY_Z_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_Z_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_ALPHABETIC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_ALPHABETIC_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_ASCII_HEX_DIGIT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_ASCII_HEX_DIGIT_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_BIDI_ARABIC_DIGIT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_ARABIC_DIGIT_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_BIDI_ARABIC_RIGHT_TO_LEFT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_ARABIC_RIGHT_TO_LEFT_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_BIDI_BLOCK_SEPARATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_BLOCK_SEPARATOR_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_BIDI_BOUNDARY_NEUTRAL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_BOUNDARY_NEUTRAL_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_BIDI_COMMON_SEPARATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_COMMON_SEPARATOR_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_BIDI_CONTROL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_CONTROL_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_BIDI_EMBEDDING_OR_OVERRIDE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_EMBEDDING_OR_OVERRIDE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_BIDI_EUROPEAN_DIGIT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_EUROPEAN_DIGIT_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_BIDI_EUR_NUM_SEPARATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_EUR_NUM_SEPARATOR_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_BIDI_EUR_NUM_TERMINATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_EUR_NUM_TERMINATOR_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_BIDI_LEFT_TO_RIGHT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_LEFT_TO_RIGHT_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_BIDI_NON_SPACING_MARK_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_NON_SPACING_MARK_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_BIDI_OTHER_NEUTRAL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_OTHER_NEUTRAL_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_BIDI_PDF_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_PDF_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_BIDI_SEGMENT_SEPARATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_SEGMENT_SEPARATOR_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_BIDI_WHITESPACE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_WHITESPACE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_CASED_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_CASED_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_CASE_IGNORABLE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_CASE_IGNORABLE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_CASEFOLDED_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_CASEFOLDED_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_CASEMAPPED_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_CASEMAPPED_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_LOWERCASED_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_LOWERCASED_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_TITLECASED_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_TITLECASED_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_UPPERCASED_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_UPPERCASED_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_COMBINING_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_COMBINING_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_COMPOSITE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_COMPOSITE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_CURRENCY_SYMBOL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_CURRENCY_SYMBOL_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_DASH_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_DASH_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_DECIMAL_DIGIT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_DECIMAL_DIGIT_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_DEPRECATED_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_DEPRECATED_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_DIACRITIC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_DIACRITIC_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_COMPONENT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_COMPONENT_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_MODIFIER_BASE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_MODIFIER_BASE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_MODIFIER_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_MODIFIER_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_PRESENTATION_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_PRESENTATION_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_EXTENDED_PICTOGRAPHIC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_EXTENDED_PICTOGRAPHIC_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_EXTENDER_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_EXTENDER_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_FORMAT_CONTROL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_FORMAT_CONTROL_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_GRAPHEME_BASE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_GRAPHEME_BASE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_GRAPHEME_EXTEND_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_GRAPHEME_EXTEND_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_GRAPHEME_LINK_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_GRAPHEME_LINK_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_HEX_DIGIT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_HEX_DIGIT_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_HYPHEN_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_HYPHEN_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_IDEOGRAPHIC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_IDEOGRAPHIC_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_IDS_BINARY_OPERATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_IDS_BINARY_OPERATOR_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_IDS_TRINARY_OPERATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_IDS_TRINARY_OPERATOR_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_IDS_UNARY_OPERATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_IDS_UNARY_OPERATOR_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_ID_COMPAT_MATH_CONTINUE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_ID_COMPAT_MATH_CONTINUE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_ID_COMPAT_MATH_START_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_ID_COMPAT_MATH_START_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_ID_CONTINUE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_ID_CONTINUE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_ID_START_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_ID_START_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_IGNORABLE_CONTROL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_IGNORABLE_CONTROL_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_ISO_CONTROL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_ISO_CONTROL_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_JOIN_CONTROL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_JOIN_CONTROL_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_LEFT_OF_PAIR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_LEFT_OF_PAIR_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_LINE_SEPARATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_LINE_SEPARATOR_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_LOGICAL_ORDER_EXCEPTION_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_LOGICAL_ORDER_EXCEPTION_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_LOWERCASE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_LOWERCASE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_MATH_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_MATH_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_NON_BREAK_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_NON_BREAK_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_NOT_A_CHARACTER_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_NOT_A_CHARACTER_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_NUMERIC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_NUMERIC_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_OTHER_ALPHABETIC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_OTHER_ALPHABETIC_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_OTHER_DEFAULT_IGNORABLE_CODE_POINT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_OTHER_DEFAULT_IGNORABLE_CODE_POINT_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_OTHER_GRAPHEME_EXTEND_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_OTHER_GRAPHEME_EXTEND_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_OTHER_ID_CONTINUE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_OTHER_ID_CONTINUE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_OTHER_ID_START_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_OTHER_ID_START_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_OTHER_LOWERCASE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_OTHER_LOWERCASE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_OTHER_MATH_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_OTHER_MATH_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_OTHER_UPPERCASE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_OTHER_UPPERCASE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_PAIRED_PUNCTUATION_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_PAIRED_PUNCTUATION_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_PARAGRAPH_SEPARATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_PARAGRAPH_SEPARATOR_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_PATTERN_SYNTAX_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_PATTERN_SYNTAX_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_PATTERN_WHITE_SPACE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_PATTERN_WHITE_SPACE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_PREPENDED_CONCATENATION_MARK_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_PREPENDED_CONCATENATION_MARK_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_PRIVATE_USE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_PRIVATE_USE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_PUNCTUATION_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_PUNCTUATION_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_QUOTATION_MARK_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_QUOTATION_MARK_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_RADICAL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_RADICAL_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_REGIONAL_INDICATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_REGIONAL_INDICATOR_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_SENTENCE_TERMINAL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_SENTENCE_TERMINAL_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_SOFT_DOTTED_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_SOFT_DOTTED_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_SPACE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_SPACE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_TERMINAL_PUNCTUATION_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_TERMINAL_PUNCTUATION_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_TITLECASE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_TITLECASE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_UNASSIGNED_CODE_VALUE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_UNASSIGNED_CODE_VALUE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_UNIFIED_IDEOGRAPH_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_UNIFIED_IDEOGRAPH_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_UPPERCASE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_UPPERCASE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_VARIATION_SELECTOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_VARIATION_SELECTOR_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_WHITE_SPACE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_WHITE_SPACE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_XID_CONTINUE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_XID_CONTINUE_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_XID_START_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_XID_START_DLL_VARIABLE@ +GL_GNULIB_UNICTYPE_PROPERTY_ZERO_WIDTH_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_ZERO_WIDTH_DLL_VARIABLE@ +GL_GNULIB_UNINORM_NFC_DLL_VARIABLE = @GL_GNULIB_UNINORM_NFC_DLL_VARIABLE@ +GL_GNULIB_UNINORM_NFD_DLL_VARIABLE = @GL_GNULIB_UNINORM_NFD_DLL_VARIABLE@ +GL_GNULIB_UNINORM_NFKC_DLL_VARIABLE = @GL_GNULIB_UNINORM_NFKC_DLL_VARIABLE@ +GL_GNULIB_UNINORM_NFKD_DLL_VARIABLE = @GL_GNULIB_UNINORM_NFKD_DLL_VARIABLE@ +GL_GNULIB_UNISTD_H_GETOPT = @GL_GNULIB_UNISTD_H_GETOPT@ +GL_GNULIB_UNISTD_H_NONBLOCKING = @GL_GNULIB_UNISTD_H_NONBLOCKING@ +GL_GNULIB_UNISTD_H_SIGPIPE = @GL_GNULIB_UNISTD_H_SIGPIPE@ +GL_GNULIB_UNLINK = @GL_GNULIB_UNLINK@ +GL_GNULIB_UNLINKAT = @GL_GNULIB_UNLINKAT@ +GL_GNULIB_UNLOCKPT = @GL_GNULIB_UNLOCKPT@ +GL_GNULIB_UNSETENV = @GL_GNULIB_UNSETENV@ +GL_GNULIB_USLEEP = @GL_GNULIB_USLEEP@ +GL_GNULIB_UTIME = @GL_GNULIB_UTIME@ +GL_GNULIB_UTIMENSAT = @GL_GNULIB_UTIMENSAT@ +GL_GNULIB_VASPRINTF = @GL_GNULIB_VASPRINTF@ +GL_GNULIB_VASZPRINTF = @GL_GNULIB_VASZPRINTF@ +GL_GNULIB_VDPRINTF = @GL_GNULIB_VDPRINTF@ +GL_GNULIB_VDZPRINTF = @GL_GNULIB_VDZPRINTF@ +GL_GNULIB_VFPRINTF = @GL_GNULIB_VFPRINTF@ +GL_GNULIB_VFPRINTF_POSIX = @GL_GNULIB_VFPRINTF_POSIX@ +GL_GNULIB_VFSCANF = @GL_GNULIB_VFSCANF@ +GL_GNULIB_VFZPRINTF = @GL_GNULIB_VFZPRINTF@ +GL_GNULIB_VPRINTF = @GL_GNULIB_VPRINTF@ +GL_GNULIB_VPRINTF_POSIX = @GL_GNULIB_VPRINTF_POSIX@ +GL_GNULIB_VSCANF = @GL_GNULIB_VSCANF@ +GL_GNULIB_VSNPRINTF = @GL_GNULIB_VSNPRINTF@ +GL_GNULIB_VSNZPRINTF = @GL_GNULIB_VSNZPRINTF@ +GL_GNULIB_VSPRINTF_POSIX = @GL_GNULIB_VSPRINTF_POSIX@ +GL_GNULIB_VSZPRINTF = @GL_GNULIB_VSZPRINTF@ +GL_GNULIB_VZPRINTF = @GL_GNULIB_VZPRINTF@ +GL_GNULIB_WCPCPY = @GL_GNULIB_WCPCPY@ +GL_GNULIB_WCPNCPY = @GL_GNULIB_WCPNCPY@ +GL_GNULIB_WCRTOMB = @GL_GNULIB_WCRTOMB@ +GL_GNULIB_WCSCASECMP = @GL_GNULIB_WCSCASECMP@ +GL_GNULIB_WCSCAT = @GL_GNULIB_WCSCAT@ +GL_GNULIB_WCSCHR = @GL_GNULIB_WCSCHR@ +GL_GNULIB_WCSCMP = @GL_GNULIB_WCSCMP@ +GL_GNULIB_WCSCOLL = @GL_GNULIB_WCSCOLL@ +GL_GNULIB_WCSCPY = @GL_GNULIB_WCSCPY@ +GL_GNULIB_WCSCSPN = @GL_GNULIB_WCSCSPN@ +GL_GNULIB_WCSDUP = @GL_GNULIB_WCSDUP@ +GL_GNULIB_WCSFTIME = @GL_GNULIB_WCSFTIME@ +GL_GNULIB_WCSLEN = @GL_GNULIB_WCSLEN@ +GL_GNULIB_WCSNCASECMP = @GL_GNULIB_WCSNCASECMP@ +GL_GNULIB_WCSNCAT = @GL_GNULIB_WCSNCAT@ +GL_GNULIB_WCSNCMP = @GL_GNULIB_WCSNCMP@ +GL_GNULIB_WCSNCPY = @GL_GNULIB_WCSNCPY@ +GL_GNULIB_WCSNLEN = @GL_GNULIB_WCSNLEN@ +GL_GNULIB_WCSNRTOMBS = @GL_GNULIB_WCSNRTOMBS@ +GL_GNULIB_WCSPBRK = @GL_GNULIB_WCSPBRK@ +GL_GNULIB_WCSRCHR = @GL_GNULIB_WCSRCHR@ +GL_GNULIB_WCSRTOMBS = @GL_GNULIB_WCSRTOMBS@ +GL_GNULIB_WCSSPN = @GL_GNULIB_WCSSPN@ +GL_GNULIB_WCSSTR = @GL_GNULIB_WCSSTR@ +GL_GNULIB_WCSTOK = @GL_GNULIB_WCSTOK@ +GL_GNULIB_WCSWIDTH = @GL_GNULIB_WCSWIDTH@ +GL_GNULIB_WCSXFRM = @GL_GNULIB_WCSXFRM@ +GL_GNULIB_WCTOB = @GL_GNULIB_WCTOB@ +GL_GNULIB_WCTOMB = @GL_GNULIB_WCTOMB@ +GL_GNULIB_WCTRANS = @GL_GNULIB_WCTRANS@ +GL_GNULIB_WCTYPE = @GL_GNULIB_WCTYPE@ +GL_GNULIB_WCWIDTH = @GL_GNULIB_WCWIDTH@ +GL_GNULIB_WGETCWD = @GL_GNULIB_WGETCWD@ +GL_GNULIB_WMEMCHR = @GL_GNULIB_WMEMCHR@ +GL_GNULIB_WMEMCMP = @GL_GNULIB_WMEMCMP@ +GL_GNULIB_WMEMCPY = @GL_GNULIB_WMEMCPY@ +GL_GNULIB_WMEMMOVE = @GL_GNULIB_WMEMMOVE@ +GL_GNULIB_WMEMPCPY = @GL_GNULIB_WMEMPCPY@ +GL_GNULIB_WMEMSET = @GL_GNULIB_WMEMSET@ +GL_GNULIB_WRITE = @GL_GNULIB_WRITE@ +GL_GNULIB_ZPRINTF = @GL_GNULIB_ZPRINTF@ +GL_GNULIB__EXIT = @GL_GNULIB__EXIT@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIBHEADERS_OVERRIDE_CHAR16_T = @GNULIBHEADERS_OVERRIDE_CHAR16_T@ +GNULIBHEADERS_OVERRIDE_CHAR32_T = @GNULIBHEADERS_OVERRIDE_CHAR32_T@ +GNULIBHEADERS_OVERRIDE_CHAR8_T = @GNULIBHEADERS_OVERRIDE_CHAR8_T@ +GNULIBHEADERS_OVERRIDE_WINT_T = @GNULIBHEADERS_OVERRIDE_WINT_T@ +GREP = @GREP@ +HARD_LOCALE_LIB = @HARD_LOCALE_LIB@ +HAVE_ACCEPT4 = @HAVE_ACCEPT4@ +HAVE_ALIGNED_ALLOC = @HAVE_ALIGNED_ALLOC@ +HAVE_ALLOCA_H = @HAVE_ALLOCA_H@ +HAVE_ALPHASORT = @HAVE_ALPHASORT@ +HAVE_ATOLL = @HAVE_ATOLL@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_C32RTOMB = @HAVE_C32RTOMB@ +HAVE_C99_STDINT_H = @HAVE_C99_STDINT_H@ +HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ +HAVE_CHOWN = @HAVE_CHOWN@ +HAVE_CLOSEDIR = @HAVE_CLOSEDIR@ +HAVE_COPY_FILE_RANGE = @HAVE_COPY_FILE_RANGE@ +HAVE_CRTDEFS_H = @HAVE_CRTDEFS_H@ +HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@ +HAVE_DECL_ECVT = @HAVE_DECL_ECVT@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_EXECVPE = @HAVE_DECL_EXECVPE@ +HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ +HAVE_DECL_FCLOSEALL = @HAVE_DECL_FCLOSEALL@ +HAVE_DECL_FCVT = @HAVE_DECL_FCVT@ +HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ +HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@ +HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ +HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ +HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ +HAVE_DECL_GCVT = @HAVE_DECL_GCVT@ +HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ +HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ +HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ +HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ +HAVE_DECL_GETLOGIN = @HAVE_DECL_GETLOGIN@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ +HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ +HAVE_DECL_GETW = @HAVE_DECL_GETW@ +HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ +HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ +HAVE_DECL_INITSTATE = @HAVE_DECL_INITSTATE@ +HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ +HAVE_DECL_PROGRAM_INVOCATION_NAME = @HAVE_DECL_PROGRAM_INVOCATION_NAME@ +HAVE_DECL_PUTW = @HAVE_DECL_PUTW@ +HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ +HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ +HAVE_DECL_SETSTATE = @HAVE_DECL_SETSTATE@ +HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ +HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ +HAVE_DECL_TCGETSID = @HAVE_DECL_TCGETSID@ +HAVE_DECL_TRUNCATE = @HAVE_DECL_TRUNCATE@ +HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ +HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ +HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ +HAVE_DECL_WCSDUP = @HAVE_DECL_WCSDUP@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DIRENT_H = @HAVE_DIRENT_H@ +HAVE_DPRINTF = @HAVE_DPRINTF@ +HAVE_DUP3 = @HAVE_DUP3@ +HAVE_DUPLOCALE = @HAVE_DUPLOCALE@ +HAVE_ERROR = @HAVE_ERROR@ +HAVE_ERROR_AT_LINE = @HAVE_ERROR_AT_LINE@ +HAVE_ERROR_H = @HAVE_ERROR_H@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_EXECVPE = @HAVE_EXECVPE@ +HAVE_EXPLICIT_BZERO = @HAVE_EXPLICIT_BZERO@ +HAVE_FACCESSAT = @HAVE_FACCESSAT@ +HAVE_FCHDIR = @HAVE_FCHDIR@ +HAVE_FCHMODAT = @HAVE_FCHMODAT@ +HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ +HAVE_FCNTL = @HAVE_FCNTL@ +HAVE_FDATASYNC = @HAVE_FDATASYNC@ +HAVE_FDOPENDIR = @HAVE_FDOPENDIR@ +HAVE_FEATURES_H = @HAVE_FEATURES_H@ +HAVE_FFS = @HAVE_FFS@ +HAVE_FFSL = @HAVE_FFSL@ +HAVE_FFSLL = @HAVE_FFSLL@ +HAVE_FLOCK = @HAVE_FLOCK@ +HAVE_FNMATCH = @HAVE_FNMATCH@ +HAVE_FNMATCH_H = @HAVE_FNMATCH_H@ +HAVE_FREELOCALE = @HAVE_FREELOCALE@ +HAVE_FSEEKO = @HAVE_FSEEKO@ +HAVE_FSTATAT = @HAVE_FSTATAT@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTELLO = @HAVE_FTELLO@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_FUTIMENS = @HAVE_FUTIMENS@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETENTROPY = @HAVE_GETENTROPY@ +HAVE_GETGROUPS = @HAVE_GETGROUPS@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETLOGIN = @HAVE_GETLOGIN@ +HAVE_GETOPT_H = @HAVE_GETOPT_H@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETPASS = @HAVE_GETPASS@ +HAVE_GETPROGNAME = @HAVE_GETPROGNAME@ +HAVE_GETRANDOM = @HAVE_GETRANDOM@ +HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ +HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ +HAVE_GETUMASK = @HAVE_GETUMASK@ +HAVE_GLOB = @HAVE_GLOB@ +HAVE_GLOB_H = @HAVE_GLOB_H@ +HAVE_GLOB_PATTERN_P = @HAVE_GLOB_PATTERN_P@ +HAVE_GRANTPT = @HAVE_GRANTPT@ +HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ +HAVE_ICONV = @HAVE_ICONV@ +HAVE_IMAXABS = @HAVE_IMAXABS@ +HAVE_IMAXDIV = @HAVE_IMAXDIV@ +HAVE_IMAXDIV_T = @HAVE_IMAXDIV_T@ +HAVE_INITSTATE = @HAVE_INITSTATE@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_ISBLANK = @HAVE_ISBLANK@ +HAVE_ISWBLANK = @HAVE_ISWBLANK@ +HAVE_ISWCNTRL = @HAVE_ISWCNTRL@ +HAVE_LANGINFO_ALTMON = @HAVE_LANGINFO_ALTMON@ +HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@ +HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@ +HAVE_LANGINFO_H = @HAVE_LANGINFO_H@ +HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@ +HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@ +HAVE_LCHMOD = @HAVE_LCHMOD@ +HAVE_LCHOWN = @HAVE_LCHOWN@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LINKAT = @HAVE_LINKAT@ +HAVE_LSTAT = @HAVE_LSTAT@ +HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOC16 = @HAVE_MBRTOC16@ +HAVE_MBRTOC32 = @HAVE_MBRTOC32@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSLEN = @HAVE_MBSLEN@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MBTOWC = @HAVE_MBTOWC@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_MEMSET_EXPLICIT = @HAVE_MEMSET_EXPLICIT@ +HAVE_MKDIRAT = @HAVE_MKDIRAT@ +HAVE_MKDTEMP = @HAVE_MKDTEMP@ +HAVE_MKFIFO = @HAVE_MKFIFO@ +HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ +HAVE_MKNOD = @HAVE_MKNOD@ +HAVE_MKNODAT = @HAVE_MKNODAT@ +HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ +HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ +HAVE_MKSTEMP = @HAVE_MKSTEMP@ +HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ +HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ +HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@ +HAVE_OFF64_T = @HAVE_OFF64_T@ +HAVE_OPENAT = @HAVE_OPENAT@ +HAVE_OPENDIR = @HAVE_OPENDIR@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_PCLOSE = @HAVE_PCLOSE@ +HAVE_PIPE = @HAVE_PIPE@ +HAVE_PIPE2 = @HAVE_PIPE2@ +HAVE_POPEN = @HAVE_POPEN@ +HAVE_POSIX_MEMALIGN = @HAVE_POSIX_MEMALIGN@ +HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ +HAVE_POSIX_SIGNALBLOCKING = @HAVE_POSIX_SIGNALBLOCKING@ +HAVE_PREAD = @HAVE_PREAD@ +HAVE_PSELECT = @HAVE_PSELECT@ +HAVE_PTHREAD_ATTR_DESTROY = @HAVE_PTHREAD_ATTR_DESTROY@ +HAVE_PTHREAD_ATTR_GETDETACHSTATE = @HAVE_PTHREAD_ATTR_GETDETACHSTATE@ +HAVE_PTHREAD_ATTR_INIT = @HAVE_PTHREAD_ATTR_INIT@ +HAVE_PTHREAD_ATTR_SETDETACHSTATE = @HAVE_PTHREAD_ATTR_SETDETACHSTATE@ +HAVE_PTHREAD_CONDATTR_DESTROY = @HAVE_PTHREAD_CONDATTR_DESTROY@ +HAVE_PTHREAD_CONDATTR_INIT = @HAVE_PTHREAD_CONDATTR_INIT@ +HAVE_PTHREAD_COND_BROADCAST = @HAVE_PTHREAD_COND_BROADCAST@ +HAVE_PTHREAD_COND_DESTROY = @HAVE_PTHREAD_COND_DESTROY@ +HAVE_PTHREAD_COND_INIT = @HAVE_PTHREAD_COND_INIT@ +HAVE_PTHREAD_COND_SIGNAL = @HAVE_PTHREAD_COND_SIGNAL@ +HAVE_PTHREAD_COND_TIMEDWAIT = @HAVE_PTHREAD_COND_TIMEDWAIT@ +HAVE_PTHREAD_COND_WAIT = @HAVE_PTHREAD_COND_WAIT@ +HAVE_PTHREAD_CREATE = @HAVE_PTHREAD_CREATE@ +HAVE_PTHREAD_CREATE_DETACHED = @HAVE_PTHREAD_CREATE_DETACHED@ +HAVE_PTHREAD_DETACH = @HAVE_PTHREAD_DETACH@ +HAVE_PTHREAD_EQUAL = @HAVE_PTHREAD_EQUAL@ +HAVE_PTHREAD_EXIT = @HAVE_PTHREAD_EXIT@ +HAVE_PTHREAD_GETSPECIFIC = @HAVE_PTHREAD_GETSPECIFIC@ +HAVE_PTHREAD_H = @HAVE_PTHREAD_H@ +HAVE_PTHREAD_JOIN = @HAVE_PTHREAD_JOIN@ +HAVE_PTHREAD_KEY_CREATE = @HAVE_PTHREAD_KEY_CREATE@ +HAVE_PTHREAD_KEY_DELETE = @HAVE_PTHREAD_KEY_DELETE@ +HAVE_PTHREAD_MUTEXATTR_DESTROY = @HAVE_PTHREAD_MUTEXATTR_DESTROY@ +HAVE_PTHREAD_MUTEXATTR_GETROBUST = @HAVE_PTHREAD_MUTEXATTR_GETROBUST@ +HAVE_PTHREAD_MUTEXATTR_GETTYPE = @HAVE_PTHREAD_MUTEXATTR_GETTYPE@ +HAVE_PTHREAD_MUTEXATTR_INIT = @HAVE_PTHREAD_MUTEXATTR_INIT@ +HAVE_PTHREAD_MUTEXATTR_SETROBUST = @HAVE_PTHREAD_MUTEXATTR_SETROBUST@ +HAVE_PTHREAD_MUTEXATTR_SETTYPE = @HAVE_PTHREAD_MUTEXATTR_SETTYPE@ +HAVE_PTHREAD_MUTEX_DESTROY = @HAVE_PTHREAD_MUTEX_DESTROY@ +HAVE_PTHREAD_MUTEX_INIT = @HAVE_PTHREAD_MUTEX_INIT@ +HAVE_PTHREAD_MUTEX_LOCK = @HAVE_PTHREAD_MUTEX_LOCK@ +HAVE_PTHREAD_MUTEX_RECURSIVE = @HAVE_PTHREAD_MUTEX_RECURSIVE@ +HAVE_PTHREAD_MUTEX_ROBUST = @HAVE_PTHREAD_MUTEX_ROBUST@ +HAVE_PTHREAD_MUTEX_TIMEDLOCK = @HAVE_PTHREAD_MUTEX_TIMEDLOCK@ +HAVE_PTHREAD_MUTEX_TRYLOCK = @HAVE_PTHREAD_MUTEX_TRYLOCK@ +HAVE_PTHREAD_MUTEX_UNLOCK = @HAVE_PTHREAD_MUTEX_UNLOCK@ +HAVE_PTHREAD_ONCE = @HAVE_PTHREAD_ONCE@ +HAVE_PTHREAD_PROCESS_SHARED = @HAVE_PTHREAD_PROCESS_SHARED@ +HAVE_PTHREAD_RWLOCKATTR_DESTROY = @HAVE_PTHREAD_RWLOCKATTR_DESTROY@ +HAVE_PTHREAD_RWLOCKATTR_INIT = @HAVE_PTHREAD_RWLOCKATTR_INIT@ +HAVE_PTHREAD_RWLOCK_DESTROY = @HAVE_PTHREAD_RWLOCK_DESTROY@ +HAVE_PTHREAD_RWLOCK_INIT = @HAVE_PTHREAD_RWLOCK_INIT@ +HAVE_PTHREAD_RWLOCK_RDLOCK = @HAVE_PTHREAD_RWLOCK_RDLOCK@ +HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK = @HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK@ +HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK = @HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK@ +HAVE_PTHREAD_RWLOCK_TRYRDLOCK = @HAVE_PTHREAD_RWLOCK_TRYRDLOCK@ +HAVE_PTHREAD_RWLOCK_TRYWRLOCK = @HAVE_PTHREAD_RWLOCK_TRYWRLOCK@ +HAVE_PTHREAD_RWLOCK_UNLOCK = @HAVE_PTHREAD_RWLOCK_UNLOCK@ +HAVE_PTHREAD_RWLOCK_WRLOCK = @HAVE_PTHREAD_RWLOCK_WRLOCK@ +HAVE_PTHREAD_SELF = @HAVE_PTHREAD_SELF@ +HAVE_PTHREAD_SETSPECIFIC = @HAVE_PTHREAD_SETSPECIFIC@ +HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@ +HAVE_PTHREAD_SPINLOCK_T = @HAVE_PTHREAD_SPINLOCK_T@ +HAVE_PTHREAD_SPIN_DESTROY = @HAVE_PTHREAD_SPIN_DESTROY@ +HAVE_PTHREAD_SPIN_INIT = @HAVE_PTHREAD_SPIN_INIT@ +HAVE_PTHREAD_SPIN_LOCK = @HAVE_PTHREAD_SPIN_LOCK@ +HAVE_PTHREAD_SPIN_TRYLOCK = @HAVE_PTHREAD_SPIN_TRYLOCK@ +HAVE_PTHREAD_SPIN_UNLOCK = @HAVE_PTHREAD_SPIN_UNLOCK@ +HAVE_PTHREAD_T = @HAVE_PTHREAD_T@ +HAVE_PTSNAME = @HAVE_PTSNAME@ +HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ +HAVE_PWRITE = @HAVE_PWRITE@ +HAVE_QSORT_R = @HAVE_QSORT_R@ +HAVE_RAISE = @HAVE_RAISE@ +HAVE_RANDOM = @HAVE_RANDOM@ +HAVE_RANDOM_H = @HAVE_RANDOM_H@ +HAVE_RANDOM_R = @HAVE_RANDOM_R@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READDIR = @HAVE_READDIR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_READLINKAT = @HAVE_READLINKAT@ +HAVE_REALLOCARRAY = @HAVE_REALLOCARRAY@ +HAVE_REALPATH = @HAVE_REALPATH@ +HAVE_RENAMEAT = @HAVE_RENAMEAT@ +HAVE_REWINDDIR = @HAVE_REWINDDIR@ +HAVE_RPMATCH = @HAVE_RPMATCH@ +HAVE_SA_FAMILY_T = @HAVE_SA_FAMILY_T@ +HAVE_SCANDIR = @HAVE_SCANDIR@ +HAVE_SCHED_H = @HAVE_SCHED_H@ +HAVE_SCHED_YIELD = @HAVE_SCHED_YIELD@ +HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ +HAVE_SETENV = @HAVE_SETENV@ +HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ +HAVE_SETSTATE = @HAVE_SETSTATE@ +HAVE_SIGABBREV_NP = @HAVE_SIGABBREV_NP@ +HAVE_SIGACTION = @HAVE_SIGACTION@ +HAVE_SIGDESCR_NP = @HAVE_SIGDESCR_NP@ +HAVE_SIGHANDLER_T = @HAVE_SIGHANDLER_T@ +HAVE_SIGINFO_T = @HAVE_SIGINFO_T@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SIGSET_T = @HAVE_SIGSET_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASECMP = @HAVE_STRCASECMP@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRERRORNAME_NP = @HAVE_STRERRORNAME_NP@ +HAVE_STRINGS_H = @HAVE_STRINGS_H@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRPTIME = @HAVE_STRPTIME@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRTOD = @HAVE_STRTOD@ +HAVE_STRTOF = @HAVE_STRTOF@ +HAVE_STRTOL = @HAVE_STRTOL@ +HAVE_STRTOLD = @HAVE_STRTOLD@ +HAVE_STRTOLL = @HAVE_STRTOLL@ +HAVE_STRTOUL = @HAVE_STRTOUL@ +HAVE_STRTOULL = @HAVE_STRTOULL@ +HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ +HAVE_STRUCT_SCHED_PARAM = @HAVE_STRUCT_SCHED_PARAM@ +HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@ +HAVE_STRUCT_SOCKADDR_STORAGE = @HAVE_STRUCT_SOCKADDR_STORAGE@ +HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY = @HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY@ +HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYMLINK = @HAVE_SYMLINK@ +HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ +HAVE_SYSEXITS_H = @HAVE_SYSEXITS_H@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_CDEFS_H = @HAVE_SYS_CDEFS_H@ +HAVE_SYS_FILE_H = @HAVE_SYS_FILE_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_IOCTL_H = @HAVE_SYS_IOCTL_H@ +HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_RANDOM_H = @HAVE_SYS_RANDOM_H@ +HAVE_SYS_SELECT_H = @HAVE_SYS_SELECT_H@ +HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@ +HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_SYS_UIO_H = @HAVE_SYS_UIO_H@ +HAVE_TERMIOS_H = @HAVE_TERMIOS_H@ +HAVE_TIMEGM = @HAVE_TIMEGM@ +HAVE_TIMESPEC_GET = @HAVE_TIMESPEC_GET@ +HAVE_TIMESPEC_GETRES = @HAVE_TIMESPEC_GETRES@ +HAVE_TIMEZONE_T = @HAVE_TIMEZONE_T@ +HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@ +HAVE_UCHAR_H = @HAVE_UCHAR_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNISTRING_WOE32DLL_H = @HAVE_UNISTRING_WOE32DLL_H@ +HAVE_UNLINKAT = @HAVE_UNLINKAT@ +HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ +HAVE_USLEEP = @HAVE_USLEEP@ +HAVE_UTIME = @HAVE_UTIME@ +HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ +HAVE_UTIME_H = @HAVE_UTIME_H@ +HAVE_VASPRINTF = @HAVE_VASPRINTF@ +HAVE_VDPRINTF = @HAVE_VDPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCPCPY = @HAVE_WCPCPY@ +HAVE_WCPNCPY = @HAVE_WCPNCPY@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ +HAVE_WCSCAT = @HAVE_WCSCAT@ +HAVE_WCSCHR = @HAVE_WCSCHR@ +HAVE_WCSCMP = @HAVE_WCSCMP@ +HAVE_WCSCOLL = @HAVE_WCSCOLL@ +HAVE_WCSCPY = @HAVE_WCSCPY@ +HAVE_WCSCSPN = @HAVE_WCSCSPN@ +HAVE_WCSDUP = @HAVE_WCSDUP@ +HAVE_WCSFTIME = @HAVE_WCSFTIME@ +HAVE_WCSLEN = @HAVE_WCSLEN@ +HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ +HAVE_WCSNCAT = @HAVE_WCSNCAT@ +HAVE_WCSNCMP = @HAVE_WCSNCMP@ +HAVE_WCSNCPY = @HAVE_WCSNCPY@ +HAVE_WCSNLEN = @HAVE_WCSNLEN@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSPBRK = @HAVE_WCSPBRK@ +HAVE_WCSRCHR = @HAVE_WCSRCHR@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WCSSPN = @HAVE_WCSSPN@ +HAVE_WCSSTR = @HAVE_WCSSTR@ +HAVE_WCSTOK = @HAVE_WCSTOK@ +HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ +HAVE_WCSXFRM = @HAVE_WCSXFRM@ +HAVE_WCTRANS_T = @HAVE_WCTRANS_T@ +HAVE_WCTYPE_H = @HAVE_WCTYPE_H@ +HAVE_WCTYPE_T = @HAVE_WCTYPE_T@ +HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE_WMEMCHR = @HAVE_WMEMCHR@ +HAVE_WMEMCMP = @HAVE_WMEMCMP@ +HAVE_WMEMCPY = @HAVE_WMEMCPY@ +HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ +HAVE_WMEMPCPY = @HAVE_WMEMPCPY@ +HAVE_WMEMSET = @HAVE_WMEMSET@ +HAVE_WORKING_C32RTOMB = @HAVE_WORKING_C32RTOMB@ +HAVE_WORKING_MBRTOC32 = @HAVE_WORKING_MBRTOC32@ +HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@ +HAVE_XLOCALE_H = @HAVE_XLOCALE_H@ +HAVE__EXIT = @HAVE__EXIT@ +IGNORE_UNUSED_LIBRARIES_CFLAGS = @IGNORE_UNUSED_LIBRARIES_CFLAGS@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@ +INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LC_COLLATE_IMPLEMENTED = @LC_COLLATE_IMPLEMENTED@ +LC_MONETARY_IMPLEMENTED = @LC_MONETARY_IMPLEMENTED@ +LC_NUMERIC_IMPLEMENTED = @LC_NUMERIC_IMPLEMENTED@ +LC_TIME_IMPLEMENTED = @LC_TIME_IMPLEMENTED@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBCOMPRESS = @LIBCOMPRESS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMAN_EXPORT_LDFLAGS = @LIBMAN_EXPORT_LDFLAGS@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPMULTITHREAD = @LIBPMULTITHREAD@ +LIBPTHREAD = @LIBPTHREAD@ +LIBS = @LIBS@ +LIBSOCKET = @LIBSOCKET@ +LIBSTDTHREAD = @LIBSTDTHREAD@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIBUNISTRING_UNICASE_H = @LIBUNISTRING_UNICASE_H@ +LIBUNISTRING_UNICTYPE_H = @LIBUNISTRING_UNICTYPE_H@ +LIBUNISTRING_UNINORM_H = @LIBUNISTRING_UNINORM_H@ +LIBUNISTRING_UNISTR_H = @LIBUNISTRING_UNISTR_H@ +LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@ +LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ +LIB_GETLOGIN = @LIB_GETLOGIN@ +LIB_GETRANDOM = @LIB_GETRANDOM@ +LIB_HARD_LOCALE = @LIB_HARD_LOCALE@ +LIB_MBRTOWC = @LIB_MBRTOWC@ +LIB_NANOSLEEP = @LIB_NANOSLEEP@ +LIB_NL_LANGINFO = @LIB_NL_LANGINFO@ +LIB_PTHREAD = @LIB_PTHREAD@ +LIB_PTHREAD_SIGMASK = @LIB_PTHREAD_SIGMASK@ +LIB_SCHED_YIELD = @LIB_SCHED_YIELD@ +LIB_SELECT = @LIB_SELECT@ +LIB_SETLOCALE_NULL = @LIB_SETLOCALE_NULL@ +LIMITS_H = @LIMITS_H@ +LINGUAS = @LINGUAS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@ +LOCALENAME_ENHANCE_LOCALE_FUNCS = @LOCALENAME_ENHANCE_LOCALE_FUNCS@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@ +LOCALE_JA = @LOCALE_JA@ +LOCALE_ZH_CN = @LOCALE_ZH_CN@ +LTALLOCA = @LTALLOCA@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBTHREAD = @LTLIBTHREAD@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANDIR_LAYOUT = @MANDIR_LAYOUT@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MAN_SUBDIRS = @MAN_SUBDIRS@ +MBRTOWC_LIB = @MBRTOWC_LIB@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NANOSLEEP_LIB = @NANOSLEEP_LIB@ +NEXT_ASSERT_H = @NEXT_ASSERT_H@ +NEXT_AS_FIRST_DIRECTIVE_ASSERT_H = @NEXT_AS_FIRST_DIRECTIVE_ASSERT_H@ +NEXT_AS_FIRST_DIRECTIVE_CTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_CTYPE_H@ +NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ERROR_H = @NEXT_AS_FIRST_DIRECTIVE_ERROR_H@ +NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ +NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@ +NEXT_AS_FIRST_DIRECTIVE_FNMATCH_H = @NEXT_AS_FIRST_DIRECTIVE_FNMATCH_H@ +NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ +NEXT_AS_FIRST_DIRECTIVE_GLOB_H = @NEXT_AS_FIRST_DIRECTIVE_GLOB_H@ +NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@ +NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@ +NEXT_AS_FIRST_DIRECTIVE_LIMITS_H = @NEXT_AS_FIRST_DIRECTIVE_LIMITS_H@ +NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@ +NEXT_AS_FIRST_DIRECTIVE_PTHREAD_H = @NEXT_AS_FIRST_DIRECTIVE_PTHREAD_H@ +NEXT_AS_FIRST_DIRECTIVE_SCHED_H = @NEXT_AS_FIRST_DIRECTIVE_SCHED_H@ +NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ +NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ +NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_SYSEXITS_H = @NEXT_AS_FIRST_DIRECTIVE_SYSEXITS_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_FILE_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_FILE_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_IOCTL_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_IOCTL_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_UIO_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_UIO_H@ +NEXT_AS_FIRST_DIRECTIVE_TERMIOS_H = @NEXT_AS_FIRST_DIRECTIVE_TERMIOS_H@ +NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ +NEXT_AS_FIRST_DIRECTIVE_UCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_UCHAR_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_UTIME_H = @NEXT_AS_FIRST_DIRECTIVE_UTIME_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@ +NEXT_CTYPE_H = @NEXT_CTYPE_H@ +NEXT_DIRENT_H = @NEXT_DIRENT_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ERROR_H = @NEXT_ERROR_H@ +NEXT_FCNTL_H = @NEXT_FCNTL_H@ +NEXT_FLOAT_H = @NEXT_FLOAT_H@ +NEXT_FNMATCH_H = @NEXT_FNMATCH_H@ +NEXT_GETOPT_H = @NEXT_GETOPT_H@ +NEXT_GLOB_H = @NEXT_GLOB_H@ +NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ +NEXT_LANGINFO_H = @NEXT_LANGINFO_H@ +NEXT_LIMITS_H = @NEXT_LIMITS_H@ +NEXT_LOCALE_H = @NEXT_LOCALE_H@ +NEXT_PTHREAD_H = @NEXT_PTHREAD_H@ +NEXT_SCHED_H = @NEXT_SCHED_H@ +NEXT_SIGNAL_H = @NEXT_SIGNAL_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDDEF_H = @NEXT_STDDEF_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STDIO_H = @NEXT_STDIO_H@ +NEXT_STDLIB_H = @NEXT_STDLIB_H@ +NEXT_STRINGS_H = @NEXT_STRINGS_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_SYSEXITS_H = @NEXT_SYSEXITS_H@ +NEXT_SYS_FILE_H = @NEXT_SYS_FILE_H@ +NEXT_SYS_IOCTL_H = @NEXT_SYS_IOCTL_H@ +NEXT_SYS_RANDOM_H = @NEXT_SYS_RANDOM_H@ +NEXT_SYS_SELECT_H = @NEXT_SYS_SELECT_H@ +NEXT_SYS_SOCKET_H = @NEXT_SYS_SOCKET_H@ +NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ +NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ +NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ +NEXT_SYS_UIO_H = @NEXT_SYS_UIO_H@ +NEXT_TERMIOS_H = @NEXT_TERMIOS_H@ +NEXT_TIME_H = @NEXT_TIME_H@ +NEXT_UCHAR_H = @NEXT_UCHAR_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_UTIME_H = @NEXT_UTIME_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NEXT_WCTYPE_H = @NEXT_WCTYPE_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NULLPTR_T_NEEDS_STDDEF = @NULLPTR_T_NEEDS_STDDEF@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PO4A = @PO4A@ +POSUB = @POSUB@ +PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PRIPTR_PREFIX = @PRIPTR_PREFIX@ +PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ +PTHREAD_SIGMASK_LIB = @PTHREAD_SIGMASK_LIB@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_ABORT = @REPLACE_ABORT@ +REPLACE_ACCESS = @REPLACE_ACCESS@ +REPLACE_ALIGNED_ALLOC = @REPLACE_ALIGNED_ALLOC@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_C32RTOMB = @REPLACE_C32RTOMB@ +REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ +REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ +REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHMOD = @REPLACE_CHMOD@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@ +REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ +REPLACE_CREAT = @REPLACE_CREAT@ +REPLACE_CTIME = @REPLACE_CTIME@ +REPLACE_DIRFD = @REPLACE_DIRFD@ +REPLACE_DPRINTF = @REPLACE_DPRINTF@ +REPLACE_DUP = @REPLACE_DUP@ +REPLACE_DUP2 = @REPLACE_DUP2@ +REPLACE_DUP3 = @REPLACE_DUP3@ +REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@ +REPLACE_ERROR = @REPLACE_ERROR@ +REPLACE_ERROR_AT_LINE = @REPLACE_ERROR_AT_LINE@ +REPLACE_EXECL = @REPLACE_EXECL@ +REPLACE_EXECLE = @REPLACE_EXECLE@ +REPLACE_EXECLP = @REPLACE_EXECLP@ +REPLACE_EXECV = @REPLACE_EXECV@ +REPLACE_EXECVE = @REPLACE_EXECVE@ +REPLACE_EXECVP = @REPLACE_EXECVP@ +REPLACE_EXECVPE = @REPLACE_EXECVPE@ +REPLACE_FACCESSAT = @REPLACE_FACCESSAT@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_FCHMODAT = @REPLACE_FCHMODAT@ +REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ +REPLACE_FCLOSE = @REPLACE_FCLOSE@ +REPLACE_FCNTL = @REPLACE_FCNTL@ +REPLACE_FDATASYNC = @REPLACE_FDATASYNC@ +REPLACE_FDOPEN = @REPLACE_FDOPEN@ +REPLACE_FDOPENDIR = @REPLACE_FDOPENDIR@ +REPLACE_FFLUSH = @REPLACE_FFLUSH@ +REPLACE_FFSLL = @REPLACE_FFSLL@ +REPLACE_FNMATCH = @REPLACE_FNMATCH@ +REPLACE_FOPEN = @REPLACE_FOPEN@ +REPLACE_FOPEN_FOR_FOPEN_GNU = @REPLACE_FOPEN_FOR_FOPEN_GNU@ +REPLACE_FPRINTF = @REPLACE_FPRINTF@ +REPLACE_FPURGE = @REPLACE_FPURGE@ +REPLACE_FREE = @REPLACE_FREE@ +REPLACE_FREELOCALE = @REPLACE_FREELOCALE@ +REPLACE_FREOPEN = @REPLACE_FREOPEN@ +REPLACE_FSEEK = @REPLACE_FSEEK@ +REPLACE_FSEEKO = @REPLACE_FSEEKO@ +REPLACE_FSTAT = @REPLACE_FSTAT@ +REPLACE_FSTATAT = @REPLACE_FSTATAT@ +REPLACE_FTELL = @REPLACE_FTELL@ +REPLACE_FTELLO = @REPLACE_FTELLO@ +REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ +REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETDELIM = @REPLACE_GETDELIM@ +REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ +REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ +REPLACE_GETENTROPY = @REPLACE_GETENTROPY@ +REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ +REPLACE_GETLINE = @REPLACE_GETLINE@ +REPLACE_GETLOADAVG = @REPLACE_GETLOADAVG@ +REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_GETPASS = @REPLACE_GETPASS@ +REPLACE_GETPASS_FOR_GETPASS_GNU = @REPLACE_GETPASS_FOR_GETPASS_GNU@ +REPLACE_GETPROGNAME = @REPLACE_GETPROGNAME@ +REPLACE_GETRANDOM = @REPLACE_GETRANDOM@ +REPLACE_GETSUBOPT = @REPLACE_GETSUBOPT@ +REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ +REPLACE_GETUSERSHELL = @REPLACE_GETUSERSHELL@ +REPLACE_GLOB = @REPLACE_GLOB@ +REPLACE_GLOB_PATTERN_P = @REPLACE_GLOB_PATTERN_P@ +REPLACE_GMTIME = @REPLACE_GMTIME@ +REPLACE_IMAXABS = @REPLACE_IMAXABS@ +REPLACE_IMAXDIV = @REPLACE_IMAXDIV@ +REPLACE_INITSTATE = @REPLACE_INITSTATE@ +REPLACE_IOCTL = @REPLACE_IOCTL@ +REPLACE_ISATTY = @REPLACE_ISATTY@ +REPLACE_ISWBLANK = @REPLACE_ISWBLANK@ +REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@ +REPLACE_ISWDIGIT = @REPLACE_ISWDIGIT@ +REPLACE_ISWPUNCT = @REPLACE_ISWPUNCT@ +REPLACE_ISWXDIGIT = @REPLACE_ISWXDIGIT@ +REPLACE_ITOLD = @REPLACE_ITOLD@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LINK = @REPLACE_LINK@ +REPLACE_LINKAT = @REPLACE_LINKAT@ +REPLACE_LOCALECONV = @REPLACE_LOCALECONV@ +REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ +REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_LSTAT = @REPLACE_LSTAT@ +REPLACE_MALLOC_FOR_MALLOC_GNU = @REPLACE_MALLOC_FOR_MALLOC_GNU@ +REPLACE_MALLOC_FOR_MALLOC_POSIX = @REPLACE_MALLOC_FOR_MALLOC_POSIX@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOC16 = @REPLACE_MBRTOC16@ +REPLACE_MBRTOC32 = @REPLACE_MBRTOC32@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MBSTOWCS = @REPLACE_MBSTOWCS@ +REPLACE_MBTOWC = @REPLACE_MBTOWC@ +REPLACE_MB_CUR_MAX = @REPLACE_MB_CUR_MAX@ +REPLACE_MEMCHR = @REPLACE_MEMCHR@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_MEMPCPY = @REPLACE_MEMPCPY@ +REPLACE_MEMSET_EXPLICIT = @REPLACE_MEMSET_EXPLICIT@ +REPLACE_MKDIR = @REPLACE_MKDIR@ +REPLACE_MKFIFO = @REPLACE_MKFIFO@ +REPLACE_MKFIFOAT = @REPLACE_MKFIFOAT@ +REPLACE_MKNOD = @REPLACE_MKNOD@ +REPLACE_MKNODAT = @REPLACE_MKNODAT@ +REPLACE_MKOSTEMP = @REPLACE_MKOSTEMP@ +REPLACE_MKOSTEMPS = @REPLACE_MKOSTEMPS@ +REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ +REPLACE_MKTIME = @REPLACE_MKTIME@ +REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ +REPLACE_NEWLOCALE = @REPLACE_NEWLOCALE@ +REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@ +REPLACE_NULL = @REPLACE_NULL@ +REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ +REPLACE_OPEN = @REPLACE_OPEN@ +REPLACE_OPENAT = @REPLACE_OPENAT@ +REPLACE_OPENDIR = @REPLACE_OPENDIR@ +REPLACE_PERROR = @REPLACE_PERROR@ +REPLACE_PIPE2 = @REPLACE_PIPE2@ +REPLACE_POPEN = @REPLACE_POPEN@ +REPLACE_POSIX_MEMALIGN = @REPLACE_POSIX_MEMALIGN@ +REPLACE_POSIX_OPENPT = @REPLACE_POSIX_OPENPT@ +REPLACE_PREAD = @REPLACE_PREAD@ +REPLACE_PRINTF = @REPLACE_PRINTF@ +REPLACE_PSELECT = @REPLACE_PSELECT@ +REPLACE_PTHREAD_ATTR_DESTROY = @REPLACE_PTHREAD_ATTR_DESTROY@ +REPLACE_PTHREAD_ATTR_GETDETACHSTATE = @REPLACE_PTHREAD_ATTR_GETDETACHSTATE@ +REPLACE_PTHREAD_ATTR_INIT = @REPLACE_PTHREAD_ATTR_INIT@ +REPLACE_PTHREAD_ATTR_SETDETACHSTATE = @REPLACE_PTHREAD_ATTR_SETDETACHSTATE@ +REPLACE_PTHREAD_CONDATTR_DESTROY = @REPLACE_PTHREAD_CONDATTR_DESTROY@ +REPLACE_PTHREAD_CONDATTR_INIT = @REPLACE_PTHREAD_CONDATTR_INIT@ +REPLACE_PTHREAD_COND_BROADCAST = @REPLACE_PTHREAD_COND_BROADCAST@ +REPLACE_PTHREAD_COND_DESTROY = @REPLACE_PTHREAD_COND_DESTROY@ +REPLACE_PTHREAD_COND_INIT = @REPLACE_PTHREAD_COND_INIT@ +REPLACE_PTHREAD_COND_SIGNAL = @REPLACE_PTHREAD_COND_SIGNAL@ +REPLACE_PTHREAD_COND_TIMEDWAIT = @REPLACE_PTHREAD_COND_TIMEDWAIT@ +REPLACE_PTHREAD_COND_WAIT = @REPLACE_PTHREAD_COND_WAIT@ +REPLACE_PTHREAD_CREATE = @REPLACE_PTHREAD_CREATE@ +REPLACE_PTHREAD_DETACH = @REPLACE_PTHREAD_DETACH@ +REPLACE_PTHREAD_EQUAL = @REPLACE_PTHREAD_EQUAL@ +REPLACE_PTHREAD_EXIT = @REPLACE_PTHREAD_EXIT@ +REPLACE_PTHREAD_GETSPECIFIC = @REPLACE_PTHREAD_GETSPECIFIC@ +REPLACE_PTHREAD_JOIN = @REPLACE_PTHREAD_JOIN@ +REPLACE_PTHREAD_KEY_CREATE = @REPLACE_PTHREAD_KEY_CREATE@ +REPLACE_PTHREAD_KEY_DELETE = @REPLACE_PTHREAD_KEY_DELETE@ +REPLACE_PTHREAD_MUTEXATTR_DESTROY = @REPLACE_PTHREAD_MUTEXATTR_DESTROY@ +REPLACE_PTHREAD_MUTEXATTR_GETROBUST = @REPLACE_PTHREAD_MUTEXATTR_GETROBUST@ +REPLACE_PTHREAD_MUTEXATTR_GETTYPE = @REPLACE_PTHREAD_MUTEXATTR_GETTYPE@ +REPLACE_PTHREAD_MUTEXATTR_INIT = @REPLACE_PTHREAD_MUTEXATTR_INIT@ +REPLACE_PTHREAD_MUTEXATTR_SETROBUST = @REPLACE_PTHREAD_MUTEXATTR_SETROBUST@ +REPLACE_PTHREAD_MUTEXATTR_SETTYPE = @REPLACE_PTHREAD_MUTEXATTR_SETTYPE@ +REPLACE_PTHREAD_MUTEX_DESTROY = @REPLACE_PTHREAD_MUTEX_DESTROY@ +REPLACE_PTHREAD_MUTEX_INIT = @REPLACE_PTHREAD_MUTEX_INIT@ +REPLACE_PTHREAD_MUTEX_LOCK = @REPLACE_PTHREAD_MUTEX_LOCK@ +REPLACE_PTHREAD_MUTEX_TIMEDLOCK = @REPLACE_PTHREAD_MUTEX_TIMEDLOCK@ +REPLACE_PTHREAD_MUTEX_TRYLOCK = @REPLACE_PTHREAD_MUTEX_TRYLOCK@ +REPLACE_PTHREAD_MUTEX_UNLOCK = @REPLACE_PTHREAD_MUTEX_UNLOCK@ +REPLACE_PTHREAD_ONCE = @REPLACE_PTHREAD_ONCE@ +REPLACE_PTHREAD_RWLOCKATTR_DESTROY = @REPLACE_PTHREAD_RWLOCKATTR_DESTROY@ +REPLACE_PTHREAD_RWLOCKATTR_INIT = @REPLACE_PTHREAD_RWLOCKATTR_INIT@ +REPLACE_PTHREAD_RWLOCK_DESTROY = @REPLACE_PTHREAD_RWLOCK_DESTROY@ +REPLACE_PTHREAD_RWLOCK_INIT = @REPLACE_PTHREAD_RWLOCK_INIT@ +REPLACE_PTHREAD_RWLOCK_RDLOCK = @REPLACE_PTHREAD_RWLOCK_RDLOCK@ +REPLACE_PTHREAD_RWLOCK_TIMEDRDLOCK = @REPLACE_PTHREAD_RWLOCK_TIMEDRDLOCK@ +REPLACE_PTHREAD_RWLOCK_TIMEDWRLOCK = @REPLACE_PTHREAD_RWLOCK_TIMEDWRLOCK@ +REPLACE_PTHREAD_RWLOCK_TRYRDLOCK = @REPLACE_PTHREAD_RWLOCK_TRYRDLOCK@ +REPLACE_PTHREAD_RWLOCK_TRYWRLOCK = @REPLACE_PTHREAD_RWLOCK_TRYWRLOCK@ +REPLACE_PTHREAD_RWLOCK_UNLOCK = @REPLACE_PTHREAD_RWLOCK_UNLOCK@ +REPLACE_PTHREAD_RWLOCK_WRLOCK = @REPLACE_PTHREAD_RWLOCK_WRLOCK@ +REPLACE_PTHREAD_SELF = @REPLACE_PTHREAD_SELF@ +REPLACE_PTHREAD_SETSPECIFIC = @REPLACE_PTHREAD_SETSPECIFIC@ +REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@ +REPLACE_PTHREAD_SPIN_DESTROY = @REPLACE_PTHREAD_SPIN_DESTROY@ +REPLACE_PTHREAD_SPIN_INIT = @REPLACE_PTHREAD_SPIN_INIT@ +REPLACE_PTHREAD_SPIN_LOCK = @REPLACE_PTHREAD_SPIN_LOCK@ +REPLACE_PTHREAD_SPIN_TRYLOCK = @REPLACE_PTHREAD_SPIN_TRYLOCK@ +REPLACE_PTHREAD_SPIN_UNLOCK = @REPLACE_PTHREAD_SPIN_UNLOCK@ +REPLACE_PTSNAME = @REPLACE_PTSNAME@ +REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ +REPLACE_PUTENV = @REPLACE_PUTENV@ +REPLACE_PWRITE = @REPLACE_PWRITE@ +REPLACE_QSORT_R = @REPLACE_QSORT_R@ +REPLACE_RAISE = @REPLACE_RAISE@ +REPLACE_RAND = @REPLACE_RAND@ +REPLACE_RANDOM = @REPLACE_RANDOM@ +REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ +REPLACE_READ = @REPLACE_READ@ +REPLACE_READDIR = @REPLACE_READDIR@ +REPLACE_READLINK = @REPLACE_READLINK@ +REPLACE_READLINKAT = @REPLACE_READLINKAT@ +REPLACE_REALLOCARRAY = @REPLACE_REALLOCARRAY@ +REPLACE_REALLOC_FOR_REALLOC_GNU = @REPLACE_REALLOC_FOR_REALLOC_GNU@ +REPLACE_REALLOC_FOR_REALLOC_POSIX = @REPLACE_REALLOC_FOR_REALLOC_POSIX@ +REPLACE_REALPATH = @REPLACE_REALPATH@ +REPLACE_REMOVE = @REPLACE_REMOVE@ +REPLACE_RENAME = @REPLACE_RENAME@ +REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ +REPLACE_REWINDDIR = @REPLACE_REWINDDIR@ +REPLACE_RMDIR = @REPLACE_RMDIR@ +REPLACE_SCHED_YIELD = @REPLACE_SCHED_YIELD@ +REPLACE_SELECT = @REPLACE_SELECT@ +REPLACE_SETENV = @REPLACE_SETENV@ +REPLACE_SETHOSTNAME = @REPLACE_SETHOSTNAME@ +REPLACE_SETLOCALE = @REPLACE_SETLOCALE@ +REPLACE_SETSTATE = @REPLACE_SETSTATE@ +REPLACE_SLEEP = @REPLACE_SLEEP@ +REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ +REPLACE_SPRINTF = @REPLACE_SPRINTF@ +REPLACE_STAT = @REPLACE_STAT@ +REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ +REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ +REPLACE_STPCPY = @REPLACE_STPCPY@ +REPLACE_STPNCPY = @REPLACE_STPNCPY@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRERRORNAME_NP = @REPLACE_STRERRORNAME_NP@ +REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ +REPLACE_STRFTIME = @REPLACE_STRFTIME@ +REPLACE_STRNCAT = @REPLACE_STRNCAT@ +REPLACE_STRNDUP = @REPLACE_STRNDUP@ +REPLACE_STRNLEN = @REPLACE_STRNLEN@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_STRTOD = @REPLACE_STRTOD@ +REPLACE_STRTOF = @REPLACE_STRTOF@ +REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@ +REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ +REPLACE_STRTOL = @REPLACE_STRTOL@ +REPLACE_STRTOLD = @REPLACE_STRTOLD@ +REPLACE_STRTOLL = @REPLACE_STRTOLL@ +REPLACE_STRTOUL = @REPLACE_STRTOUL@ +REPLACE_STRTOULL = @REPLACE_STRTOULL@ +REPLACE_STRTOUMAX = @REPLACE_STRTOUMAX@ +REPLACE_STRUCT_LCONV = @REPLACE_STRUCT_LCONV@ +REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ +REPLACE_STRVERSCMP = @REPLACE_STRVERSCMP@ +REPLACE_SYMLINK = @REPLACE_SYMLINK@ +REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@ +REPLACE_TIME = @REPLACE_TIME@ +REPLACE_TIMEGM = @REPLACE_TIMEGM@ +REPLACE_TIMESPEC_GET = @REPLACE_TIMESPEC_GET@ +REPLACE_TIMESPEC_GETRES = @REPLACE_TIMESPEC_GETRES@ +REPLACE_TMPFILE = @REPLACE_TMPFILE@ +REPLACE_TOWLOWER = @REPLACE_TOWLOWER@ +REPLACE_TRUNCATE = @REPLACE_TRUNCATE@ +REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ +REPLACE_TZSET = @REPLACE_TZSET@ +REPLACE_UNLINK = @REPLACE_UNLINK@ +REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ +REPLACE_UNSETENV = @REPLACE_UNSETENV@ +REPLACE_USLEEP = @REPLACE_USLEEP@ +REPLACE_UTIME = @REPLACE_UTIME@ +REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ +REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ +REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ +REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ +REPLACE_VPRINTF = @REPLACE_VPRINTF@ +REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ +REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSCMP = @REPLACE_WCSCMP@ +REPLACE_WCSFTIME = @REPLACE_WCSFTIME@ +REPLACE_WCSNCMP = @REPLACE_WCSNCMP@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCSSTR = @REPLACE_WCSSTR@ +REPLACE_WCSTOK = @REPLACE_WCSTOK@ +REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCTOMB = @REPLACE_WCTOMB@ +REPLACE_WCTRANS = @REPLACE_WCTRANS@ +REPLACE_WCTYPE = @REPLACE_WCTYPE@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WMEMCMP = @REPLACE_WMEMCMP@ +REPLACE_WMEMPCPY = @REPLACE_WMEMPCPY@ +REPLACE_WRITE = @REPLACE_WRITE@ +REPLACE__EXIT = @REPLACE__EXIT@ +SCHED_YIELD_LIB = @SCHED_YIELD_LIB@ +SED = @SED@ +SELECT_LIB = @SELECT_LIB@ +SETLOCALE_NULL_LIB = @SETLOCALE_NULL_LIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +SMALL_WCHAR_T = @SMALL_WCHAR_T@ +STDARG_H = @STDARG_H@ +STDCKDINT_H = @STDCKDINT_H@ +STDDEF_H = @STDDEF_H@ +STDDEF_NOT_IDEMPOTENT = @STDDEF_NOT_IDEMPOTENT@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +SYSEXITS_H = @SYSEXITS_H@ +SYS_IOCTL_H_HAVE_WINSOCK2_H = @SYS_IOCTL_H_HAVE_WINSOCK2_H@ +SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ +SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ +TBL_X_FORMAT = @TBL_X_FORMAT@ +TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ +TIME_H_DEFINES_TIME_UTC = @TIME_H_DEFINES_TIME_UTC@ +TRANS_APROPOS = @TRANS_APROPOS@ +TRANS_APROPOS_UPPER = @TRANS_APROPOS_UPPER@ +TRANS_CATMAN = @TRANS_CATMAN@ +TRANS_CATMAN_UPPER = @TRANS_CATMAN_UPPER@ +TRANS_LEXGROG = @TRANS_LEXGROG@ +TRANS_LEXGROG_UPPER = @TRANS_LEXGROG_UPPER@ +TRANS_MAN = @TRANS_MAN@ +TRANS_MANCONV = @TRANS_MANCONV@ +TRANS_MANCONV_UPPER = @TRANS_MANCONV_UPPER@ +TRANS_MANDB = @TRANS_MANDB@ +TRANS_MANDB_UPPER = @TRANS_MANDB_UPPER@ +TRANS_MANPATH = @TRANS_MANPATH@ +TRANS_MANPATH_UPPER = @TRANS_MANPATH_UPPER@ +TRANS_MAN_RECODE = @TRANS_MAN_RECODE@ +TRANS_MAN_RECODE_UPPER = @TRANS_MAN_RECODE_UPPER@ +TRANS_MAN_UPPER = @TRANS_MAN_UPPER@ +TRANS_WHATIS = @TRANS_WHATIS@ +TRANS_WHATIS_UPPER = @TRANS_WHATIS_UPPER@ +TRANS_ZSOELIM = @TRANS_ZSOELIM@ +TRANS_ZSOELIM_UPPER = @TRANS_ZSOELIM_UPPER@ +TROFF = @TROFF@ +UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@ +UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@ +UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ +UNISTD_H_DEFINES_STRUCT_TIMESPEC = @UNISTD_H_DEFINES_STRUCT_TIMESPEC@ +UNISTD_H_HAVE_SYS_RANDOM_H = @UNISTD_H_HAVE_SYS_RANDOM_H@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ +WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ +WINDOWS_STAT_INODES = @WINDOWS_STAT_INODES@ +WINDOWS_STAT_TIMESPEC = @WINDOWS_STAT_TIMESPEC@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__rm_f_notfound = @am__rm_f_notfound@ +am__tar = @am__tar@ +am__untar = @am__untar@ +am__xargs_n = @am__xargs_n@ +bindir = @bindir@ +browser = @browser@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +bzip2 = @bzip2@ +cache_top_owner = @cache_top_owner@ +cat = @cat@ +col = @col@ +compress = @compress@ +compressor = @compressor@ +config_file = @config_file@ +config_file_basename = @config_file_basename@ +config_file_dirname = @config_file_dirname@ +datadir = @datadir@ +datarootdir = @datarootdir@ +date = @date@ +docdir = @docdir@ +dvidir = @dvidir@ +eqn = @eqn@ +exec_prefix = @exec_prefix@ +gl_LIBOBJDEPS = @gl_LIBOBJDEPS@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJDEPS = @gltests_LIBOBJDEPS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +gltests_WITNESS = @gltests_WITNESS@ +grap = @grap@ +grep = @grep@ +gzip = @gzip@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +libpipeline_CFLAGS = @libpipeline_CFLAGS@ +libpipeline_LIBS = @libpipeline_LIBS@ +libseccomp_CFLAGS = @libseccomp_CFLAGS@ +libseccomp_LIBS = @libseccomp_LIBS@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lzip = @lzip@ +lzma = @lzma@ +man_mode = @man_mode@ +man_owner = @man_owner@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +neqn = @neqn@ +nroff = @nroff@ +oldincludedir = @oldincludedir@ +override_dir = @override_dir@ +pager = @pager@ +pdfdir = @pdfdir@ +pic = @pic@ +preconv = @preconv@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +refer = @refer@ +roff_version = @roff_version@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sections = @sections@ +sharedstatedir = @sharedstatedir@ +snapdir = @snapdir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +systemdsystemunitdir = @systemdsystemunitdir@ +systemdtmpfilesdir = @systemdtmpfilesdir@ +target_alias = @target_alias@ +tbl = @tbl@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +tr = @tr@ +troff = @troff@ +troff_as_troff_input = @troff_as_troff_input@ +troff_is_groff = @troff_is_groff@ +vgrind = @vgrind@ +xz = @xz@ +zstd = @zstd@ +@HAVE_GNULIB_PO_TRUE@GNULIB_PO = gl/po +SUBDIRS = docs gl/lib $(GNULIB_PO) init lib libdb src man manual po tools +dist_noinst_DATA = FAQ README.md +noinst_HEADERS = include/manconfig.h + +# These macro files are imported by gnulib-tool, but at present not used. We +# include them in the distribution anyway for maximum consistency. +EXTRA_DIST = .gitignore ChangeLog-2013 bootstrap bootstrap.conf \ + patches/argp-domain.patch gl/m4/glibc2.m4 gl/m4/intdiv0.m4 \ + gl/m4/intl.m4 gl/m4/intldir.m4 gl/m4/intmax.m4 \ + gl/m4/inttypes-pri.m4 gl/m4/lcmessage.m4 gl/m4/math_h.m4 \ + gl/m4/printf-posix.m4 gl/m4/sockpfaf.m4 gl/m4/uintmax_t.m4 \ + gl/m4/visibility.m4 + +# Installing in --enable-setuid mode (the default) requires root; disable +# this so that distcheck can be run as non-root. +# The defaults for systemdsystemunitdir and systemdtmpfilesdir are +# intentionally not prefix-sensitive, but we need to adjust them in order +# for distcheck to pass. +AM_DISTCHECK_CONFIGURE_FLAGS = \ + --disable-setuid \ + --with-systemdsystemunitdir=\$${prefix}/lib/systemd/system \ + --with-systemdtmpfilesdir=\$${prefix}/lib/tmpfiles.d + + +# We deliberately leave the configuration file in place on uninstall, since +# it may contain local customisations. +distuninstallcheck_listfiles = \ + find . -type f -print | grep -v 'etc/man_db\.conf' + + +# Note that autopoint installs into the first directory here. Yes, this +# means that it installs into gl/m4, so we always run gnulib-tool after +# autopoint, at least for now. See +# https://lists.gnu.org/archive/html/bug-gnulib/2009-03/msg00154.html and +# thread. +ACLOCAL_AMFLAGS = -I gl/m4 -I m4 +gen_start_date = 2013-12-09 00:52 +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign 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__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + $(AM_V_at)rm -f stamp-h1 + $(AM_V_GEN)cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) + $(AM_V_GEN)($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + $(AM_V_at)rm -f stamp-h1 + $(AM_V_at)touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + 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 || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + $(am__remove_distdir) + $(AM_V_at)$(MKDIR_P) "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-zstd: distdir + tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_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*) \ + eval GZIP= gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + *.tar.zst*) \ + zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$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) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) $(HEADERS) config.h +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -$(am__rm_f) $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_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-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) all install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am clean clean-cscope clean-generic \ + clean-libtool cscope cscopelist-am ctags ctags-am dist \ + dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \ + dist-tarZ dist-xz dist-zip dist-zstd distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +dist-hook: gen-ChangeLog +.PHONY: gen-ChangeLog +gen-ChangeLog: + $(AM_V_GEN)if test -d .git; then \ + $(top_srcdir)/build-aux/gitlog-to-changelog \ + --format='%s%n%n%b%n' \ + --since="$(gen_start_date)" > $(distdir)/cl-t; \ + rm -f $(distdir)/ChangeLog; \ + mv $(distdir)/cl-t $(distdir)/ChangeLog; \ + fi + +update-po: + $(MAKE) -C po update-po + $(MAKE) -C man/po4a update-po + +# 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: + +# Tell GNU make to disable its built-in pattern rules. +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% diff --git a/NEWS.md b/NEWS.md new file mode 100644 index 0000000..2712ddf --- /dev/null +++ b/NEWS.md @@ -0,0 +1,1866 @@ +man-db 2.13.1 (2 May 2025) +========================== + +Fixes: + + * Fix various minor formatting issues in manual pages. + * Tolerate additional spaces in preprocessor strings. + * Fix check for generated source files in out-of-tree builds. + * Fix building with the `musl` C library. + +Improvements: + + * Recognize another Ukrainian translation of the `NAME` section. + * Increase the maximum size of the `NAME` section from 8192 to 16384 bytes. + +man-db 2.13.0 (29 August 2024) +============================== + +Compatibility notes: + + * Drop support for versions of groff before 1.21 (released on 2010-12-31). + +Fixes: + + * Fix `man-suffixed-extension` test failure when not using the GNU + hierarchy organization. + * Fix `-Wmissing-variable-declarations` warnings with GCC 14. + * Fix `-Wflex-array-member-not-at-end` warning with GCC 14. + +Improvements: + + * Upgrade to Gnulib `stable-202407`. + * Support running the test suite against an installed package; this is + useful for systems such as Debian's autopkgtest framework. + +man-db 2.12.1 (5 April 2024) +============================ + +Fixes: + + * Fix excessive cleanup of `/var/cache/man` by `systemd-tmpfiles`. + +Improvements: + + * `man` matches the display width more accurately to the configured width. + * Upgrade to Gnulib `stable-202401`. + * Mention `groff`'s `pdf` device in `man(1)`. + * Speed up `seccomp` filter slightly. + * Document how to format pages using italic rather than underlined text. + +Compatibility notes: + + * Remove the obsolete `chconfig` tool for converting man-db configuration + files to the FHS. This transition took place almost 25 years ago (at + least in Debian), so it's not worth keeping it around now. + +man-db 2.12.0 (23 September 2023) +================================= + +Fixes: + + * Fix some manual page portability issues with groff 1.23.0. + * Fix test failures when a working `iconv` is not available. + * Ensure that timestamps read from the database can go past the year 2038, + even on systems where this is not the default. + * Fix `manpath` not parsing `PATH` entries with trailing slash correctly + for guessing `MANPATH` entries. + * More accurately document the behaviour of passing file names as arguments + to `man` without the `-l`/`--local-file` option. + * Avoid duplicate cleanup of old cat pages by both `man-db.service` and + `systemd-tmpfiles-clean.service`. + +Improvements: + + * Update system call lists in `seccomp` sandbox from `systemd`. + * Upgrade to Gnulib `stable-202307`. + * Work around the Firebuild accelerator in `seccomp` sandbox: if this is in + use then we need to allow some socket-related system calls. + * `man -K` now deduplicates search results that point to the same page. + * Warn if `mandb` drops to `--user-db` mode due to running as the wrong + user. + * Change section title recommendations in `man(1)` to mention `STANDARDS` + rather than `CONFORMING TO`, in line with `man-pages(7)`. + * Add a `STANDARDS` section to `man(1)` itself. + * Document that `man -K` may suffer from false negatives as well as false + positives. + * Take advantage of newer `groff` facilities to implement `man + --no-hyphenation` and `man --no-justification`, if available. + * `man -f` and `man -k` now pass any `-r`/`--regex` or `-w`/`--wildcard` + options on to `whatis` and `apropos` respectively. + * Always pass a line length to `nroff`, even if we believe that it matches + the default. + * Allow disabling `groff` warnings via `man --warnings`, by prefixing a + warning name with `!`. + +man-db 2.11.2 (8 January 2023) +============================== + +Fixes: + + * Fix compile and test failures when `troff` is not `groff`. + * Fix segfault in typical uses of `man` when `nroff` is not installed. + * Fix crash in `mandb` when processing stray cats. + +Improvements: + + * Check for stray cats even if no manual pages in a given manpath were + changed. + +man-db 2.11.1 (15 November 2022) +================================ + +Build: + + * Transfer Git repository to https://gitlab.com/man-db/man-db. + +Fixes: + + * SECURITY: Replace `$` characters in page names with `?` when constructing + `less` prompts. + * Silence error message when processing an empty manual page hierarchy with + a nonexistent cache directory. + * `man(1)` now sorts whatis references below real pages, even if the whatis + references are from a section with higher priority. + +Improvements: + + * Add section `3type` to the default section list just after `2`. This is + used by the Linux man-pages package. + * Recognize more Hungarian translations of the `NAME` section. + +man-db 2.11.0 (15 October 2022) +=============================== + +Fixes: + + * `mandb` now correctly records filters in the database if it uses cached + whatis information. + * Upgrade Gnulib, fixing syntax error on glibc systems with GCC 11. + * The `CATWIDTH` configuration file directive now overrides `MINCATWIDTH` + and `MAXCATWIDTH`. + * Database entries for links were often incorrectly stored as if they were + entries for the ultimate source of the page. They are now stored with + the correct type. + * Store links in the database using the section and extension of the link + rather than of the ultimate source file. + * Consider pages for adding to the database even if they seem to already + exist; this performance optimization is no longer needed due to caching, + and it produced inconsistent results in some unusual cases. + * `man` now runs any required preprocessors in the same order that `groff` + does, rather than trusting the order of filters in a page's preprocessor + string. + * Fix building on MinGW. (I haven't been able to test this; help from + MinGW experts would be welcome.) + +Improvements: + + * Add more recognized case variants for localized versions of the `NAME` + section. + * Maintain multi keys in sorted order, improving database reproducibility. + * Pick a more consistent name for the target of a whatis entry in the + database. + * Extend rules for when to replace one database entry with another, + producing more stable behaviour. + * Fully reorganize databases after writing them, allowing the reproduction + of bitwise-identical databases regardless of scan order (at least with + GDBM). + +man-db 2.10.2 (17 March 2022) +============================= + +Build: + + * Regenerating man-db's build system now explicitly requires Automake >= + 1.14. (This was already the case since at least man-db 2.10.0, but was + previously undocumented.) + +Fixes: + + * Make `man -H` sleep for a few seconds after starting the browser, since + it may background itself before loading files (Dr. Werner Fink). + * If an override directory is configured using `--with-override-dir`, it is + now applied more consistently when building the manpath, and whether a + page was found in an override directory is considered when sorting + candidates for display (Mihail Konev). + +Improvements: + + * Make the man-db manual build reproducible. + * Add some hardening options to the `systemd` service. + * `configure` now has a `--with-snapdir` option, for use on systems where + `snapd` is configured to use a directory other than `/snap`. + +man-db 2.10.1 (10 February 2022) +================================ + +Fixes: + + * Fix occasional `mandb-symlink-target-timestamp` test failure. + * Fix inadvertent reliance on a GCC extension that caused build failures + with Clang. + * Fix building without `iconv`. + * Fix building on Cygwin. + +man-db 2.10.0 (4 February 2022) +=============================== + +Build: + + * Move Git repository to GitLab (https://gitlab.com/cjwatson/man-db). + * Building man-db now requires a C99 compiler. + * Building man-db now requires Autoconf >= 2.64. + +Fixes: + + * Manpath deduplication no longer mishandles the case where another entry + in the manpath is a suffix of a candidate path to append. + * Fix potential crash in path searching if `getcwd` fails for reasons other + than running out of memory. + * Fix crash in `globbing` test tool if run with no non-option arguments. + * `lexgrog` now produces output in the user's locale. + * Downgrade "malformed .lf request" warning to a debug message and rephrase + it somewhat, since `.lf` requests can use `*roff` arithmetic expressions + and we can't reasonably parse those. + * Avoid modifying the database without changing its mtime, which had been + possible since 2.7.0 if `mandb`'s purge phase found work to do but the + main phase didn't, and which confused some backup systems into reporting + possible filesystem corruption. + * `man` no longer inadvertently modifies the `MANSECT` environment variable + before passing it on to its subprocesses. + * `mandb` now stores the mtime of link targets as the mtime of their + corresponding database entries, rather than sometimes storing the mtime + of the link instead. + * Since man-db 2.4.2, `man` has behaved as if the `-l` option was given if + a manual page argument contains a slash. Since man-db 2.5.6, this has + interacted slightly poorly with the subpage feature, emitting spurious + error messages if given multiple manual page arguments some of which + include a slash. `man` no longer emits spurious error messages in this + case. + +Improvements: + + * Reduce overhead of `MAN_DISABLE_SECCOMP=1` compared to building without + `libseccomp`. + * Document `MAN_DISABLE_SECCOMP` and `PIPELINE_DEBUG` environment variables + in `man(1)`. + * Add `man-pages(7)` reference to `man(1)`. + * Recognize Arabic and Persian translations of the `NAME` section. + * Delay the `systemd` timer using `RandomizedDelaySec`, so that multiple + containers/VMs on the same host are less prone to running `mandb` all at + the same time. + * Significantly improve `mandb(8)` and `man -K` performance in the common + case where pages are of moderate size and compressed using `zlib`: `mandb + -c` goes from 344 seconds to 10 seconds on a test system. + +man-db 2.9.4 (8 February 2021) +============================== + +Improvements: + + * Recognise Romanian translations of the NAME section. + * Treat `\[en]` (etc.) as another synonym for `\-` in NAME sections, + alongside the existing `\(en` (etc.). + +Fixes: + + * Make the `seccomp` sandbox work better with libcs such as `musl` (S. + Gilles). + * Make the `seccomp` sandbox allow `clock_gettime64` as well as + `clock_gettime` (S. Gilles). + +man-db 2.9.3 (22 June 2020) +=========================== + +Fixes: + + * Fix manual page translation infrastructure to compare `po4a` versions + with more than two components correctly. + * Avoid incorrect markup in `man(1)` with `po4a >= 0.58`. + +man-db 2.9.2 (1 June 2020) +========================== + +Fixes: + + * Fix `man -X75-12` and `man -X100-12` to set the document font size (using + `-rS12`) as well as the device (using `-TX75-12` or `-TX100-12`). + * Fix incompatibility of `man -X` and friends with the `seccomp` sandbox. + +Improvements: + + * Add a bug tracker link to man-db's own manual pages. + * Add support for `zstd`-compressed manual pages, thanks to Bernhard + Rosenkränzer. + +man-db 2.9.1 (25 February 2020) +=============================== + +Improvements: + + * Drop `fdutimens` patch for GNU/Hurd; the bug it was working around was + fixed in glibc 2.28. + * Add `MANDB_MAP` entry mapping `/snap/man` to `/var/cache/man/snap`. + +man-db 2.9.0 (23 October 2019) +============================== + +Fixes: + + * `man --recode` and `manconv` now adjust encoding declarations on the + first line of their input to refer to the new encoding. + * Fix comparison of candidate manual pages to correctly handle the case + where the language elements are the same and match the locale, but the + territory elements differ. + +Improvements: + + * Many typographical improvements to man-db's own manual pages, largely + thanks to Bjarni Ingi Gislason. + * Rewrite parts of `man(1)` to make it a more accessible introduction. + * If run with no arguments or only a section, `man` now suggests running + `man man`. + * `man` now understands the `(
)` form on its command line, + so for example `man 'chmod(2)'` is now the same as `man 2 chmod`. While + this requires more quoting, it may also be more convenient when copying + and pasting cross-references to manual pages. + * `manconv` now guesses the input encoding based on the file name if it is + not explicitly specified. + * There is a new `man-recode` program. It fulfils a purpose similar to + `man --recode`, but has an interface designed for bulk conversion and so + can be much faster when used on a large number of pages. + +Compatibility notes: + + * Remove the ability to undefine `COMP_SRC` at build-time to disable + reading compressed manual pages. This was always only a + micro-optimisation, and it wasn't worth the extra code complexity. You + can still configure without any compressors (either by not having them + available at build time, or by configuring with `--with-gzip=` etc.) to + achieve much the same practical effect, although the test suite still + requires at least `gunzip`. + +man-db 2.8.7 (26 August 2019) +============================= + +Fixes: + + * Further workarounds for ESET File Security: allow `sendmsg` when it is in + use. + * The `seccomp` sandbox now causes disallowed system calls to return + `EPERM` rather than raising `SIGSYS`, in the hope of being less + disruptive to preload hacks. + * Make `seccomp` sandbox allow `getrandom`, used by Hardened Malloc. + * `man` no longer saves cat pages if `--no-hyphenation` or + `--no-justification` is used. + * Move decompression code out of `libman`. This should really fix a link + failure using the Darwin linker (unsuccessfully attempted in 2.8.6), and + possibly on other platforms too. + * Pass the database file name around in function parameters, rather than + storing it in a global variable with an unresolved symbol from + `libmandb`. Like the previous item, this fixes a link failure using the + Darwin linker, and possibly on other platforms too. + * Return database entries in sorted order when using NDBM. (This is based + on a similar fix to the GDBM backend in man-db 2.4.2.) + +Improvements: + + * Recognise Esperanto, Tamil, and Ukrainian translations of the `NAME` + section. + +man-db 2.8.6.1 (5 August 2019) +============================== + +Fixes: + + * Fix missing memory copies in `ult_src` that caused segfaults in `mandb`. + +man-db 2.8.6 (3 August 2019) +============================ + +Fixes: + + * If more than one of `../man`, `man`, `../share/man`, and `share/man` + exist relative to a directory on `$PATH`, then all of them are now added + to the automatically-determined manpath; previously, only the first was + considered. + * Remove arbitrary limit on manpath size. + * The `systemd` database maintenance service now runs `mandb` with the + `--quiet` option, avoiding excess log messages. + * Default to `--without-systemdsystemunitdir` and + `--without-systemdtmpfilesdir` on non-Linux systems. + * Fix failure to link `libman` using the Darwin linker. + * `apropos -w` now works when given a non-lower-case pattern. + +Improvements: + + * Convert most list and hash table code to Gnulib's container types: these + are more flexible and normally more concise than home-grown equivalents. + * There is a new configure option `--disable-manual`, which causes the + man-db manual not to be built or installed. + +man-db 2.8.5 (5 January 2019) +============================= + +Build: + + * Building man-db now requires Autoconf >= 2.63 and Automake >= 1.11.2. + +Fixes: + + * Fix build with Berkeley DB. + * Fail to configure if `flex` is needed but missing. + * Fix the comment in the first line of the configuration file in the case + where `configure` was not given a `--with-config-file` option. + * Fix several resource and memory leaks. + * Fix handling of `\-` in the right-hand side of a `NAME` section. + * Work around Microsoft's proprietary "System Center Endpoint Protection" + antivirus program in the seccomp sandbox. + +Improvements: + + * Ship a `systemd` timer to perform daily database maintenance. + * Allow disabling the installation of the `systemd` `tmpfiles` snippet and + the `systemd` timer by configuring with `--with-systemdtmpfilesdir=no` + and `--with-systemdsystemunitdir=no` respectively. + +man-db 2.8.4 (27 July 2018) +=========================== + +Fixes: + + * Rely on decompressors reading from their standard input rather than + redundantly passing them the input file on their command line. This + works better with downstream AppArmor confinement of decompressors. + * Fix invalid syntax in `tmpfiles.d/man-db.conf` when configured with + `--disable-cache-owner`. + * Make `seccomp` sandbox allow `sched_getaffinity`, sometimes used by `xz`. + * Check for `mandb_nfmt` and `mandb_tfmt` in the manual page hierarchy as + documented, not in the current directory. This was broken by the + working-directory-handling changes in 2.8.3. Note that this change means + that `man -l` will never use an external formatter (which was never + documented behaviour and was surely a bad idea). + * Make `seccomp` sandbox allow some shared memory operations across the + board rather than just when ESET File Security is in use; the Astrill VPN + seems to require something similar, and there are doubtless other such + preload hacks. + * Some versions of ESET File Security call `msgget` and `msgsnd`; if this + program is in use, then allow those. + +man-db 2.8.3 (5 April 2018) +=========================== + +Fixes: + + * Make `seccomp` sandbox allow `madvise`, since that's used by `lbzip2`. + * Make `seccomp` sandbox allow `kill` and `tgkill` outright, since `groff` + uses `kill` to pass on signals to its child processes. + * Make `seccomp` sandbox allow sibling architectures on + `x86`/`x86_64`/`x32`, since people sometimes mix and match architectures + there for performance reasons. + * Fix version check in locale macro loading to tolerate `groff` release + candidates. + * `man` now only changes working directory in child processes, so never + fails due to being unable to change back to its original working + directory. + * `accessdb`, `apropos`, and `lexgrog` no longer emit spurious `gettext` + headers in their `--help` output when localised. + +man-db 2.8.2 (28 February 2018) +=============================== + +Fixes: + + * Make `seccomp` sandbox allow `kill` and `tgkill` when the signal is + directed at the current process or one of its threads; this is needed by + `xz`. + * Make `seccomp` sandbox allow `ioctl(fd, TIOCGWINSZ)`, since that's used + by `musl`. + * Work around the proprietary "ESET File Security" antivirus program in + `seccomp` sandbox: if this is in use then we need to allow some + socket-related system calls. + * Work around the `snoopy` `execve()` wrapper and logger in `seccomp` + sandbox: if this is in use then we need to allow some socket-related + system calls. + * Interpret `EFAULT` from `seccomp_load` as meaning that `seccomp` is + unavailable, since this can be returned by some versions of `qemu-user`. + +man-db 2.8.1 (9 February 2018) +============================== + +Fixes: + + * Fix `seccomp` sandbox build on Linux/POWER. + * Fix `manconv` execution under `seccomp` when `man` is installed setuid. + * Make `seccomp` sandbox allow `mremap` (used by `iconv`, for example). + +Improvements: + + * `configure` now has a `--without-libseccomp` option to disable the use of + `seccomp` even if the library is available. + +man-db 2.8.0 (4 February 2018) +============================== + +Fixes: + + * Fix locale macro loading for Chinese to load the macro file corresponding + to just the language part of the user's locale. + * Honour `--enable-cache-owner` in generated `systemd` `tmpfiles` snippet + rather than hardcoding `man`. + * If `man` adds prefixes to a page to handle such things as disabling + hyphenation, then take account of those when looking for a preprocessor + line at the start of the page. + * Fix a segfault in `man -D --help`. + +Improvements: + + * Treat `\(en` as another synonym for `\-` in NAME sections. + * Confine most subprocesses that handle untrusted data using `seccomp`. + This mainly deals with subprocesses that perform encoding conversions, + (de)compressors, `groff` programs, and a few other odds and ends. + `groff` programs use a slightly more permissive filter since they need to + create temporary files, so additional path-based confinement (e.g. using + AppArmor) is still useful. + + If this goes wrong, then `MAN_DISABLE_SECCOMP=1` can be set in the + environment to disable it, but please report any such problem as a bug. + + * `man` now falls back to `cat` if the compile-time default pager is not + executable. + +man-db 2.7.6.1 (12 December 2016) +================================= + +Fixes: + + * Don't `chmod` `CACHEDIR.TAG` if it doesn't exist. + * Correct installation of Swedish manual pages. + +man-db 2.7.6 (11 December 2016) +=============================== + +Fixes: + + * Fix build warnings with Perl 5.22. + * Document that `man -K` searches page source, not rendered text. + * Fix a long-standing bug in man-db's internal cleanup stack mechanism: if + a cleanup function was pushed unexpectedly between a push/pop pair, then + popping the stack would remove the wrong cleanup function and chaos could + ensue. Avoid this by being more precise about which cleanup function + should be popped. + * SECURITY: Eliminate dangerous setgid-root directories. In the default + configuration, cache files and directories are now owned by `man:man` + rather than `man:root`; `man` and `mandb` are now setgid `man` as well as + setuid `man` (except in the `--disable-setuid` case). This is a much + simpler and safer solution to the original problem that caused my + predecessor to make directories setgid `root`, and doesn't introduce any + interesting new privilege since the `man` group's only real purpose is to + be the `man` user's primary group and nothing in cache directories is + group-writeable. + + Maintainers of distribution packages should take care to review their + installation rules in light of this change. + + As far as I know this has no CVE ID, but it is described + [here](https://www.halfdog.net/Security/2015/SetgidDirectoryPrivilegeEscalation/). + + * Fix manual page translation infrastructure to render tables correctly + with `po4a` 0.47. + +Improvements: + + * `man` now understands the `.
` form on its command line, so + for example `man chmod.2` is now the same as `man 2 chmod`. (Contributed + by Mihail Konev.) + * The owner of cache files is now configured separately from whether `man` + and `mandb` are installed setuid, using the `--enable-cache-owner[=USER]` + option. + +man-db 2.7.5 (6 November 2015) +============================== + +Fixes: + + * Adjust line number when inserting extra roff input. + * Disable roff input insertion with `--recode`. + * Build text manual with `LC_ALL=C`, to help reproducible builds. + +man-db 2.7.4 (8 October 2015) +============================= + +Fixes: + + * Fix crash when eliminating manpath duplicates if canonicalising a manpath + entry fails. + * Fix a build system bug that sometimes caused substitutions in manual + pages to be left unexpanded. + * `man` exits with status 3 rather than 0 if its formatting command exits + non-zero, even if its display command exits zero. + * `man` honours `MANWIDTH` in conjunction with the `-Z` option, to make it + easier to diagnose warnings in manual pages. + +man-db 2.7.3 (9 September 2015) +=============================== + +Fixes: + + * Tools that consider the terminal line length now try the `TIOCGWINSZ` + ioctl on `/dev/tty` as well as standard input/output. + * `mandb` does a better job of coping with index files having incorrect + ownership. + * Squeeze blank lines internally rather than relying on the pager + supporting the `-s` option. + * Fix use-after-free in `ult_src`. + * Fix crash when running from a missing and unreadable current directory, + such as an orphaned subdirectory of `/proc`. + * Restore the ability to use `man -a` noninteractively. + +man-db 2.7.2 (16 August 2015) +============================= + +Fixes: + + * `man -k` and `man -f` now pass any provided `-l` option through to the + underlying `apropos`/`whatis` programs. + * `apropos` and `whatis` no longer truncate names if long output was + requested. + * The database handle is no longer stored in a global variable, fixing a + class of possible double-close bugs. + +man-db 2.7.1 (7 November 2014) +============================== + +Fixes: + + * Various portability fixes for Solaris, contributed by Peter Bray. + * `man` now runs correctly when its current working directory has been + deleted. (As a result of this fix, man-db now requires `libpipeline >= + 1.4.0`.) + * `man -a` sends its prompts to `/dev/tty` rather than to `stderr`, and + likewise reads replies from `/dev/tty` rather than from `stdin`. + +man-db 2.7.0.2 (28 September 2014) +================================== + +Fixes: + + * Be more careful to avoid using or double-closing closed database handles. + Fixes test suite failures on some systems. + * Patch the `fdutimens` function imported from Gnulib to work around a + libc bug in GNU/Hurd. + +man-db 2.7.0.1 (24 September 2014) +================================== + +Fixes: + + * Fix test suite in the case where the system supports high-precision + timestamps but the file system containing the build directory does not. + +man-db 2.7.0 (22 September 2014) +================================ + +Upgrading from previous versions: + + * For the first time since version 2.4.0, the database format has changed + slightly, so you will need to run `mandb --create` after installing the + new version to rebuild your databases from scratch. (Distribution + packages should do this automatically for system databases.) + +Fixes: + + * `lexgrog` now filters terminal escape sequences out of cat pages before + trying to parse them. + * Tools that consider the terminal line length now prioritise the `COLUMNS` + environment variable above the `TIOCGWINSZ` ioctl. + * Manpath elements are no longer canonicalised before being inserted into + the search path; this caused the use of incorrect catpaths in some cases. + This was broken by the `LANGUAGE`-handling fixes in 2.5.4. + +Improvements: + + * Ship a `systemd` `tmpfiles` snippet to clean up old cat files after a + week. + * The modification time of manual databases is now simply stored in the + mtime of the database files themselves, rather than using a special row. + This makes databases reproducible between otherwise-identical + installations, as long as the underlying database has predictable + behaviour. As a bonus, man-db now uses high-precision timestamps to + determine whether it needs to update databases. + * Timestamps of manual pages are also now stored in the database with high + precision and compared accordingly. + * Files are now ordered by first physical extent before reading them, for + substantial performance improvements in operations such as `mandb` and + `man -K`. + * `man -H` shows a better error message if no browser is configured. + * `zsoelim` is now installed in `$pkglibexecdir`, to avoid clashes with + other packages. + +man-db 2.6.7.1 (10 April 2014) +============================== + +Fixes: + + * Remove test suite dependency on `realpath(1)`. + +man-db 2.6.7 (10 April 2014) +============================ + +Fixes: + + * Fix a test failure when configured with `--enable-undoc`. + * Run the pager in `man`'s original working directory rather than in the + manual hierarchy. (As a result of this fix, man-db now requires + libpipeline >= 1.3.0.) + * `mandb` only creates a cache directory tag if the catpath is different + from the manpath, since it should only be created in directories that + consist entirely of cached information. + +man-db 2.6.6 (23 January 2014) +============================== + +man-db is now revision-controlled using git (https://git-scm.com/). See +`docs/HACKING` for the location of the repository. + +Fixes: + + * `apropos`'s `--and` option now works again; it was broken by the + optimisations in 2.6.2. + * Restore compatibility with Automake 1.10. + * Improve support for translation of common elements of help messages. + * Don't issue error messages when the database refers to a page that no + longer exists. + * Pass macro and hyphenation language tags to `groff` again (broken in + 2.6.5). + +Improvements: + + * `./configure --with-override-dir=OVERRIDE` arranges to look for manual + pages in `DIR/OVERRIDE` before each path element `DIR`. + +man-db 2.6.5 (27 June 2013) +=========================== + +Fixes: + + * `man`'s `--warnings` option works again on systems with versions of + `groff` that support it (broken in 2.6.4). + * `man` automatically falls back to `C.UTF-8` and then `en_US.UTF-8` if + trying to find a UTF-8 locale on a system without + `/usr/share/i18n/SUPPORTED`. + +man-db 2.6.4 (23 June 2013) +=========================== + +Fixes: + + * `man(1)` and `catman(8)` now document the default section list set at + configure time. + * Build fixes for Automake 1.13. + * man-db 2.6.0 arranged to search the full manpath when expanding `.so` + directives in manual pages (so that `.so name.1` works as well as `.so + man1/name.1`), but this incorrectly did not take effect for manual pages + that consist only of a `.so` directive. This is now fixed. + +Improvements: + + * The `MANLESS` environment variable is now treated as if it were a default + value for the `-r` option to `man`: occurrences of the text `$MAN_PN` are + expanded, and explicitly using the `-r` option overrides the default. + * The (unfortunately still hardcoded) maximum length for paths to manual + page hierarchies in the configuration file is now 511 characters rather + than 49. + * `MANPATH` entries now undergo `glob(7)`-style wildcard expansion, + allowing entries such as `/opt/*/man`. + +man-db 2.6.3 (17 September 2012) +================================ + +Fixes: + + * Build fixes for glibc 2.16 and Automake 1.12. + +man-db 2.6.2 (18 June 2012) +=========================== + +Fixes: + + * `apropos` prints an error message and returns non-zero when it finds no + matches. (Regression introduced in 2.5.1.) + * The presence of a 64-bit GDBM database on the manpath no longer causes a + 32-bit `man` process to exit with a fatal error. + +Improvements: + + * `apropos` is much faster when run with many arguments. + * `whatis` may be given the full path to an executable as an argument, in + which case it will look up the base name of that executable in the + appropriate parts of the manpath. + +man-db 2.6.1 (14 February 2012) +=============================== + +Fixes: + + * `--with-db=db*` and `--with-db=ndbm` compile again. + * Translated manual pages are no longer displayed starting with a spurious + blank line. + * `straycats` tries to ensure that `col` is invoked with `LC_CTYPE` set to + a UTF-8 locale. + * Fix double-free in `mandb` when encountering a symlink outside the manual + hierarchy, thanks to Peter Schiffer. + +Improvements: + + * `mandb` creates a cache directory tag, per the [Cache Directory Tagging + Standard](http://www.brynosaurus.com/cachedir/). + * Add support for Lzip-compressed manual pages, thanks to Matias A. Fonzo. + * Running `man -w` (with a new `--path` alias) without a name now prints + the manpath, for compatibility with other `man` implementations. The + `vim` viewdoc plugin makes use of this. + +man-db 2.6.0.2 (13 April 2011) +============================== + +Fixes: + + * Fix a segfault when scanning links to empty pages. + * Once we've seen at least one record in a page's `NAME` section, ignore + any further records that don't include a `whatis` description, as they + tend to be noise. + +man-db 2.6.0.1 (10 April 2011) +============================== + +Fixes: + + * Ensure that the target of a symlink or `.so` chain is always recorded as + a real page. + * Read a user-specified configuration file even if `HOME` is unset. + +man-db 2.6.0 (9 April 2011) +=========================== + +Fixes: + + * Fix build with versions of GNU `ld` that default to + `--no-copy-dt-needed-entries`. + * Fix failure to display manual pages in some encodings when installed + setuid. + * Wrap long table cells in `man(1)`, fixing test failures with `groff` + 1.21. + * If an explicit section is passed to `man`, then pages that match that + section exactly will be preferred over pages that only have that section + as a prefix. + * Fix a segfault when `man -K` tries to display certain pages. + * Fix a segfault in some situations when processes are killed by `SIGHUP`, + `SIGINT`, or `SIGTERM`. + +Improvements: + + * As promised in the release notes for man-db 2.5.8, man-db no longer ships + its own copy of + [libpipeline](https://libpipeline.gitlab.io/libpipeline/). You must + build and install that library separately. + * Search the full manpath when expanding `.so` directives in manual pages. + As part of this, `.so name.1` should now work as well as `.so + man1/name.1`. + * `lexgrog` handles roff named glyphs and `perldoc` strings in `NAME` + sections. + * `man` no longer starts a pager if standard output is not a tty. + * The `-s` option to `whatis` and `apropos` now takes a colon- or + comma-separated list of sections, similar to `man -S`. + * `mandb` error output is neater when `stderr` is not a terminal. + * Add basic support for the implementation of `nroff`/`troff` in the + Heirloom Documentation Tools. Title lengths are not properly set as yet, + and many features are untested. + * `mandb` removes `cat*` and NLS subdirectories of `cat` directories whose + corresponding `man` directories no longer exist. + * `mandb` forces `SIGPIPE` back to its default disposition on startup, to + avoid noisy output in case it was started in a context where `SIGPIPE` + was ignored. + * `SECTION` entries in a user configuration file now override those in the + system configuration file, rather than appending to them. + * The default `less` prompt now includes "(press h for help or q to quit)" + to help novices find their way around. + * man-db may now be built to use Berkeley DB version 5 (`--with-db=db5`). + +man-db 2.5.9 (17 November 2010) +=============================== + +Fixes: + + * Fix test failures on some systems. A change made in 2.5.8 was overly + sensitive to directory ordering. + * Configuring with `--disable-nls` works again. + +man-db 2.5.8 (15 November 2010) +=============================== + +Fixes: + + * Fix assertion failure on `man -l` with an uncompressed page and any of + `--no-hyphenation`, `--no-justification`, or a non-English page. + * 2.5.7 introduced a regression when running `catman` in some locales, most + notably in the C locale: while converting the output to UTF-8, `iconv` + was run after the compressor rather than before it. This release fixes + that. + +Improvements: + + * Add support for XZ-compressed manual pages, thanks to Darren Salt. + * Try underscore-separated subpages as well as hyphen-separated ones, + thanks to Tanguy Ortolo. + * Build `libman` and `libmandb` as shared libraries, reducing installed + footprint by about 200K (at least on GNU/Linux). + * `libintl` is no longer shipped with man-db. If your system does not + already have GNU `libintl` installed and you want man-db's messages to be + translated, then please install [GNU + libintl](https://www.gnu.org/software/gettext/) separately. + * Warnings about unrecognised locales are now suppressed if the + `DPKG_RUNNING_VERSION` environment variable is set (i.e. man-db is + running within a Debian package's maintainer script), since the system + locales are often out of sync with the C library in that context. Thanks + to the Debian Perl maintainers for the idea. + * Allow building with an external + [libpipeline](https://libpipeline.gitlab.io/libpipeline/), which has been + split out from man-db. This is a transitional measure: a future version + of man-db will stop shipping its own copy of `libpipeline`. + * `mandb` should no longer repeatedly rescan manual page hierarchies when a + `whatis` entry turns into a broken link. + +man-db 2.5.7 (16 February 2010) +=============================== + +Fixes: + + * If a subprocess exits before `man` manages to read all the output from + it, it now drains the output file descriptor rather than immediately + discarding it. + * If `/usr/share/i18n/SUPPORTED` is available, `man` attempts to use it to + ensure that `LC_CTYPE` is set to an appropriate locale for the selected + character set when invoking `col`. This fixes `LANG=C man -E UTF-8`, as + used by lintian. + * Don't run tests if cross-compiling. + * Fix possible `mandb` crash when `MAN_MUST_CREATE` is unset. + +Improvements: + + * `man` can now tell `nroff` to disable justification if the + `--no-justification` option is used. + * If the full path to an executable is given as an argument, `man` will try + looking up the corresponding manual page in the appropriate part of the + manpath, rather than just trying to format the text of the executable as + a manual page. + * In the GNU manual hierarchy layout, search `man` directories as + well as just `man` (e.g. `/usr/share/man/man3p` as well as + `/usr/share/man/man3`). + * By request, `man` now prefers getting a page from the best manual section + over getting a page in the correct language. + * All programs now support a `MAN_DEBUG` environment variable which can be + used in place of the `-d`/`--debug` option. This is useful in some + situations where a program is being called deep in a process tree. + * man-db now builds with heirloom-doctools, thanks to Diego Pettenò of + Gentoo. + * Add support for emulating `pipe()` with `socketpair()`, which is faster + on some systems; thanks to Werner Fink of SUSE. + * Cat pages are now always saved in UTF-8, and converted to the proper + encoding at display time, which means that cat pages can now be saved + regardless of locale. Note that a consequence of this is that cat pages + now include formatting information (e.g. overstriking) and need to be + run through `col(1)` before display. + +man-db 2.5.6 (26 August 2009) +============================= + +Fixes: + + * Exact-section database lookups were incorrectly returning all database + entries whose section names were prefixes of the requested section name. + In some cases this could confuse `mandb` into never believing that the + database was up to date. + * Fix handling of pages with comma-separated names ("foo, bar, baz") in + their `NAME` sections, broken by a change in 2.5.0 (!) to ignore manual + page names containing spaces. + * Fixed a buffer overflow in the pipeline library's line-reading functions. + I don't believe this to be exploitable: at worst we might believe that + there's some garbage at the end of manual pages (whose contents are + untrusted anyway) and this bug typically resulted in a failed assertion + the next time anything tried to read a line. + * Plugged two substantial memory leaks in the pipeline library. + * `whatis` and `apropos` only display any given manual page, or pointers to + it, once. + * `man` now sets `less(1)`'s environment up correctly for manual pages + encoded in CP1251. + * `manconv` no longer confuses situations such as "this UTF-8 character is + not representable in the target encoding" with "this text is not in + UTF-8". + +Improvements: + + * The default configuration file now includes section 0, used on some + systems to document C library header files. + * `make check` now passes in the presence of a UTF-8-aware `col`, such as + that in util-linux-ng. + * The `man -K` option is now supported to search the full text of all + manual pages. This was inspired by a similar option in the other `man` + package (currently at version 1.6f) currently maintained by Federico + Lucifredi and formerly by Andries Brouwer, but I took advantage of + man-db's pipeline library to implement it entirely in-process, without + having to start a separate `grep` process for every manual page. In my + tests with fairly typical searches across variously all manual pages or + just one section, man-db's implementation ran between 3 and 10 times + faster. + * Database directories are now only created when there are corresponding + manual page directories, not just because they're mentioned in the + configuration file. + * By default, `man` will now try to interpret pairs of manual page names + given on the command line as equivalent to a single manual page name + containing a hyphen (e.g. `man foo bar` => `foo-bar(1)`). This supports + the common pattern of programs that implement a number of subcommands, + allowing them to provide manual pages for each that can be accessed using + similar syntax as would be used to invoke the subcommands themselves. + Suggested by H. Peter Anvin, Federico Lucifredi, and others on the git + mailing list. + * The build process is now quieter by default. Use `./configure + --disable-silent-rules` or `make V=0` if you don't like this or your + `make(1)` doesn't support the non-standard extension required. + * `make install` now installs the manual. + * `manconv` understands a wider range of Emacs-style coding tags. + * Recommendations to change `MAN_DB_CREATES`, `MAN_DB_UPDATES`, and + `MAN_CATS` `#define` options in `manconfig.h` have been replaced by new + `configure` options `--enable-automatic-create`, + `--disable-automatic-update`, and `--disable-cats` respectively. Note + that automatic user database creation is now off by default, as it is + often too slow for the usefulness it adds; use + `--enable-automatic-create` to enable it. + +man-db 2.5.5 (14 March 2009) +============================ + +Fixes: + + * Pages that declare a non-default encoding in their preprocessor lines are + now handled correctly. + * Fix an uninitialised variable when sorting manual page candidates that + could lead to excessive memory allocation and possible crashes. + +Improvements: + + * man-db's `make check` now tests that all its own manual pages format + without errors or warnings from `groff`, to ensure a better-quality + release. + +man-db 2.5.4 (24 February 2009) +=============================== + +Fixes: + + * Build fixes for systems without GNU Make, and for systems without + `gettext`; this successfully covers at least FreeBSD. + * The `distclean` target now works if `po4a` isn't installed. + * Exit as soon as possible if database writes return `ENOSPC`. + * `lexgrog` now stops on any unrecognised roff request, rather than + continuing and often littering the database with garbage. + * `man` no longer requires both standard input and standard output to be + terminals in order to use the terminal line length. The line length from + standard output is preferred if available. + * The manpath was built completely wrongly when multiple entries were + present in `LANGUAGE`: duplicates were handled strangely, and languages + were effectively iterated in reverse order. It should be rather more + sensible now. + +Improvements: + + * The `MAN_KEEP_STDERR` environment variable can now be used to override + `man`'s default of discarding `stderr` when `stdout` is a terminal. + * Handling of terminal widths for cat pages is now configurable, using the + `MINCATWIDTH`, `MAXCATWIDTH`, and `CATWIDTH` configuration file + directives. + * `man -a` now detects duplicate manual page candidates more reliably, and + sorts them better. + * Belarusian, Estonian, Greek, Latvian, Lithuanian, Macedonian, Romanian, + Slovenian, and Ukrainian pages are now supported. + * `man` can now search for pages using regular expressions (with `--regex`) + or shell wildcards (with `--wildcard`). By default this searches both + page names and descriptions, like `apropos`, but if the `--names-only` + option is used then it searches page names only, like `whatis`. + * `man` can now tell `nroff` to disable hyphenation if the + `--no-hyphenation` option is used. + * man-db already searched for manual pages in `../man` and `man` + directories relative to each `$PATH` component; it now searches in + `../share/man` and `share/man` directories too. + * Groff 1.20 was recently released, including the `preconv` preprocessor. + Although man-db has supported `preconv` to some extent since 2.4.4, + man-db's `configure` now detects its presence and infers that `groff` + supports Unicode input using it; `man` also now takes slightly better + advantage of `preconv` than before. + * Per-locale `groff` macros are now loaded if possible, allowing us to take + advantage of such things as localised versions of predefined strings and + language-aware hyphenation. This only works with Groff 1.20.2 or better + (not yet released), since earlier versions did not allow us to suppress + warnings in the event that the appropriate macro file is not available. + +man-db 2.5.3 (17 November 2008) +=============================== + +Fixes: + + * Cleaned up a number of possible crashes, memory leaks, and missing error + checks found by the Coverity Scan project. + * Fix build if `MAN_CATS` is undefined. + * If the `LINGUAS` environment variable is set while running `configure`, + it now controls building and installation of localised manual pages as + well as program translations. + * The `LANGUAGE` environment variable is now tokenised properly, rather + than only taking the first two characters of each element. + * Fix build if `--disable-nls` is used or `iconv` is not available. + * `man` now correctly propagates the exit code of `whatis` or `apropos` + when called with the `-f` or `-k` option respectively. + +Improvements: + + * A number of inconsistencies and readability problems with man-db's own + manual pages have been cleaned up, thanks mainly to Yuri Kozlov. + * Reduce the number of warnings emitted when using an unrecognised locale. + * `manconv` and `zsoelim` are now called internally rather than by + executing external programs, to improve performance. + * man-db now uses GDBM (`--with-db=gdbm`) in preference to Berkeley DB + (`--with-db=db` or `--with-db=dbN` where `N` is 1, 2, 3, or 4) by + default, since hardware improvements have rendered Berkeley DB's speed + advantages negligible for our purposes and the relatively frequent + `SONAME` and on-disk format changes are not worth the hassle. + Distributors should note that if they follow this change then they will + need to arrange for databases to be rebuilt on upgrade to this version. + * Manual pages may now be compressed with LZMA (although this is probably + only worth it for very large pages). + * Duplicate manual page hierarchies due to symlinks (e.g. `/usr/man` -> + `/usr/share/man`) are detected and removed from the search order. + * A locale modifier (e.g. `@latin`) in a directory name must now match the + locale if the former is set, in addition to the language and territory. + * Bare `.so` includes (e.g. `.so foo.1` rather than `.so man1/foo.1`) now + work, although only within the same manual page hierarchy for now. + +man-db 2.5.2 (5 May 2008) +========================= + +Fixes: + + * `man -H` (without a browser argument) was completely broken in 2.5.1 and + is now fixed. + * `man` no longer breaks in Japanese locales when using `less` as a pager. + +Improvements: + + * The `--encoding` option to `man` can now take a true character encoding + rather than a `*roff` device; the latter was an unreliable, inflexible, + and awkward way to select an output encoding. The old semantics are + still supported for backward compatibility. + * Whatis parsing stops at `.ie` or `.if` conditionals. + * CJK locale specifications where the codeset component is equivalent to + but not stringwise-identical to UTF-8 (e.g. `zh_CN.utf8`) are handled + better. + * `man(1)`'s `OPTIONS` section is ordered more comprehensibly. + * `apropos`, `lexgrog`, `man`, `mandb`, and `whatis` ignore encoding + conversion errors for the last possible encoding of the source page. + This helps, for example, with pages including misencoded non-ASCII names + of authors; it usually seems better to allow these pages to pass with + small errors than to break them entirely. + +man-db 2.5.1 (28 January 2008) +============================== + +Fixes: + + * The manual is now built automatically, avoiding some ordering problems on + `make distclean`. + * Manual pages are converted to the proper input encoding for `troff` + output as well as `nroff` output. + * The `-t`, `-T`, `-X`, and `-Z` options to `man` work again; in 2.5.0, + they read input from `stdin` rather than from the manual page. + * `apropos` and `whatis` no longer segfault when given an explicit locale + using `-L`. + * `man` now understands that `groff`'s `ascii` device takes ASCII input, + not ISO-8859-1. + * `man` no longer discards `stderr` when writing to a file or a pipe; this + was broken by an overenthusiastic change in 2.5.0. + * `manconv` now falls back to the next encoding in its list if any + characters in an entire 64KB block fail to decode using the current + encoding, as was originally intended. + * `manconv` is more careful about extracting `coding:` directives from + manual pages. + * Ctrl-C and Ctrl-\ now work again at the prompt issued by `man -a`. + +Improvements: + + * There is a new `--with-sections` `configure` option to change the default + value of `SECTION` in the configuration file. + * Automake is now used to generate Makefiles. Among other things, this + fixes `VPATH` builds and some bugs in dependency generation, and should + allow building with non-GNU versions of make. + * man-db now uses the Gnulib portability library, allowing the removal of + earlier haphazard portability code. While this results in a somewhat + larger source distribution, it makes man-db easier to maintain and should + make it easier to build on systems to which the maintainer does not have + access. + * In the process of switching to Gnulib, the last vestiges of pre-C89 + support have been removed; they were documented to be broken anyway. + * If the `MANROFFOPT` environment variable is set, `man` now appends its + value to the `*roff` command line. + * `man` now accepts a `--recode` option to output a source manual page + converted to a specified encoding. + * For compatibility with System V, `man` accepts `-s` as an alias for `-S`, + and permits sections to be comma-separated as well as colon-separated. + * All programs, except the obsolete `wrapper`, now accept a `--debug` + option. (`accessdb`, `lexgrog`, and `zsoelim` were lacking it.) + * `man` now accepts a `--warnings` option to enable `groff` warnings. + +man-db 2.5.0 (7 October 2007) +============================= + +Fixes: + + * `mandb --quiet` now suppresses several more warnings. + * The output of `apropos` no longer includes duplicates when multiple + search terms are used. + +Improvements: + + * Databases are now created for non-English manual hierarchies. All + database entries should be encoded in UTF-8; man-db converts from the + character set of the manual hierarchy and to the character set specified + in the user's locale as necessary. + * Per-locale directory handling has been improved. Directories such as + `fr.UTF-8` may be used for occasions when it is appropriate to specify + the character set but not the country, and so a full locale name is + inconvenient. + * There is a new `manconv` program which can try multiple possible + encodings for a file, thus allowing UTF-8 manual pages to be installed in + any directory even without an explicit encoding declaration. + * A decompression library is now in place. This allows man-db to use + `zlib` to decompress gzipped files, and allows most of its uses of + temporary files to be removed. The only remaining exceptions are cat + file creation (which uses a temporary file in the cat tree rather than in + `/tmp`) and viewing HTML manual pages (which uses a temporary directory). + Otherwise, man-db should now work fine even with a read-only `/tmp` + during system recovery. + * Cat pages are now saved in the background while the pager is active, so + `man` will only need to block afterwards if the pager is exited very + quickly. + * `--with-*` options are now available at `configure` time for most of the + auxiliary program locations that you might want to override. + * `man` now supports the `MANPAGER` environment variable, overriding + `PAGER`. + * `apropos`/`whatis` output is now truncated to the terminal width by + default. As with `man`, this may be overridden using the `MANWIDTH` + environment variable. + * `lexgrog` now ignores alleged manual page names containing spaces, as + these usually indicate parsing errors or ill-formed `NAME` sections and + they clutter up `apropos` output badly. I'm only aware of one legitimate + counterexample, the Intercal compiler "oo, ick", which no longer appears + to be known by that name anyway; let me know if there are any others. + * `man` now discards `stderr` from formatting subprocesses when outputting + to a pager, to avoid visual corruption from any error messages. + * If the `MAN_KEEP_FORMATTING` environment variable is set to any non-empty + value, then `man` will preserve formatting characters in its output even + when standard output is not a terminal. This may be useful for programs + such as `pinfo` that call `man` and can interpret its formatted output. + * Setting `NOCACHE` in the configuration file now prevents `man` from ever + creating cat pages automatically. + * `apropos` now accepts the `--and` option to display only items that match + all the supplied keywords. + +man-db 2.4.4 (12 February 2007) +=============================== + +man-db is now revision-controlled using +[bzr](https://bazaar.canonical.com/). See `docs/HACKING` for the location +of the archive (including all CVS history, imported by Canonical). + +Fixes: + + * SECURITY: Fix a buffer overrun if using `-H` and the designated web + browser (argument to `-H` or `$BROWSER`) contains multiple `%s` + expansions. This is CVE-2006-4250. + * Ignore `SIGINT` and `SIGQUIT` while running subprocesses, so that typing + Ctrl-C doesn't kill `less` (broken in 2.4.3). + * Similarly, ignore `SIGPIPE` in subprocesses. + * Various fixes to `SIGCHLD` handling in pipeline library, preventing + "waitpid failed: No child processes" errors. + * Skip `exec` in configuration file commands (perhaps left over from old + installations), which the pipeline execution library cannot handle + directly. + +Improvements: + + * Add support for Chinese in the `--enable-mb-groff` case. + * `lexgrog` now handles pages with multiple descriptions more usefully, by + displaying one description per output line. + +man-db 2.4.3 (3 July 2005) +========================== + +Fixes: + + * Avoid problems creating databases on systems with badly broken clocks set + before the Unix epoch. + * Fix detection of decompression programs, so that `man` doesn't attempt to + execute man pages when it doesn't have a corresponding decompression + program. + +Improvements: + + * `apropos` and `whatis` now accept a `--section` option to restrict their + search to a particular manual section. + * The pipeline execution library is now used for most calls to external + programs, avoiding use of the shell. + * When `stdout` is not a terminal, man pages will be formatted in plain + text without the use of backspace or ANSI formatting characters. + * When invoking `apropos` (`man -k`) or `whatis` (`man -f`) as external + programs, `man` now only passes through command-line options understood + by the respective programs. + * Improve handling of locales with versions and/or modifiers. + * Add support for Croatian, Galician, Indonesian, Slovak, and Turkish + pages. + * man-db may now be built to use Berkeley DB version 4 (`--with-db=db4`). + +Compatibility notes: + + * Setting the line length of manual pages now requires `groff` 1.18 or + later. + +man-db 2.4.2 (20 September 2003) +================================ + +Fixes: + + * SECURITY: Fix a number of buffer overruns in configuration file handling, + ultimate source location, and `MANPATH` processing. This is CVE + CAN-2003-0620. + * SECURITY: Restrict the use of the `DEFINE` directive in `~/.manpath` to + code running with dropped privilege. Previously, the `compressor` + variable could be used to run arbitrary code with raised privilege. This + is CVE CAN-2003-0645. + * Make sure to initialize `mandata` structures to zero. The uses of + uninitialized memory resulting from this had been leading to random + segfaults. + * Drop privileges in order to be able to read pages in non-world-readable + user manpaths while setuid. + * `man` can be built with `--disable-setuid` again. + * `man`'s locale support has been revamped. The encoding of source manual + pages is no longer related to the encoding of the input passed to `*roff` + or to `*roff`'s terminal output device. These frequently differ, + especially in UTF-8 locales but in other circumstances as well, and a + "just send 8-bit data" approach is no longer adequate. If you are using + a version of `groff` with the Debian multibyte patch applied, pass the + `--enable-mb-groff` option to configure. + * When using GDBM, `accessdb` and `apropos` did not return database entries + in sorted order, since GDBM's key traversal interface is not + lexicographically ordered. The database layer has been corrected to cope + with this. + * Directories found in strange places in manual hierarchies don't crash + `mandb`. + +Improvements: + + * `man` now calls `mandb` to update databases rather than doing it itself. + This leaves cat pages as the sole remaining reason for `man` to be + setuid. + * The "undocumented" message is only displayed if a corresponding + executable is found on the `$PATH`. + * All programs that read `~/.manpath` now take a `-C` option to cause them + to read a different user configuration file instead. + * The `--enable-debug` option to `configure` has been removed. man-db's + `Makefile`s now always calculate full dependencies for C files. + * `mandb` caches the contents of directories, significantly speeding up the + purging of obsolete entries. + * `mandb` now knows how to purge database entries corresponding to removed + stray cat pages. + * In addition, a pipeline execution library has been written, which will + make it possible to eliminate all or almost all use of the shell in a + future release. Unfortunately, time pressures due to the security issues + above meant that the pipeline library was not well enough tested for use + in this release, so it is present but unused. That will be the first + item for 2.4.3. + +man-db 2.4.1 (22 December 2002) +=============================== + +The man-db CVS repository has moved from sourceforge.net to +savannah.nongnu.org. + +Fixes: + + * Don't enter an infinite loop when the `SYSTEM` environment variable is + set. + * `man` doesn't segfault when trying to follow a broken symlink. + * `mandb` no longer corrupts databases when deleting entries that are part + of multi keys. + * Prevent a possible buffer overflow when encountering large multi keys. + * Man page names are escaped when globbing, so `[(1)` can now be found even + if the database is not up to date. + * Correct an `access()` check that led to `man -X -l -` producing no + output. + * `lexgrog` can now cope with man pages containing only a `.so` link. + * Manual hierarchies with a specific encoding are put into the search path + in the correct order. A bug in `$LANGUAGE` handling had formerly meant + that `de` would take precedence over `de_DE.UTF-8`. + +Improvements: + + * `man`'s behaviour when searching for page names that begin with a digit + has been made more intuitive, as has its treatment of section names that + are extensions of ones mentioned in the configuration file but are not + themselves explicitly named as sections. + * The default line length for pages formatted for terminal output has been + increased (reducing margin size) to match the default in `groff` 1.18. + * Proofread the manual. + * The `-w` flag to `man` has been changed to display the name of only the + source `nroff` file. A `-W` flag has been introduced which displays the + name of the cat file as well. If both flags are given to `man`, it will + behave as before. + * If `bzip2` is installed, pages compressed with `bzip2` can now be + displayed. + * Add support for displaying an additional message when no man page is + found, which can be used to direct users to a generic "undocumented" + page. + * The manual hierarchy layout will now be guessed where possible if an + explicit `--enable-mandirs` argument is not passed to `configure`. + +man-db 2.4.0 (26 June 2002) +=========================== + +I have changed the package name to man-db, as the underscore was awkward. + +Upgrading from version 2.3.x: + + * The database format has changed slightly, so you will need to run `mandb + --create` after installing the new version to rebuild your databases from + scratch. (Distribution packages should do this automatically for system + databases.) + +Fixes: + + * The GNU `nroff` test in `configure` now works when `/bin/sh` is `ash`. + * When scanning pages for `NAME` sections, `lexgrog` and `mandb` no longer + accidentally eat the line after each occurrence of the no-op request `.`. + * `man --local` drops privileges throughout to avoid problems with + non-world-readable home directories. + * Newly created cat directories are `chown`ed to the `man` user when + running as root. + * `man --html` no longer creates its temporary file with raised privileges, + so that it now works with a setuid `man`. + * `man` detects preprocessors correctly when setuid. + * Various segfault fixes: explicitly null-terminate data returned by the + Berkeley DB library to avoid some rare crashes; don't reuse a freed + pointer in some cases of pages with multiple names; handle `MANPATH`s + containing `::` more safely. + * Correctly parse manual pages using DOS line-ending conventions. + * Work around a misfeature in Berkeley DB: it pauses for several seconds if + asked to read a zero-length database, on the assumption that somebody is + still writing the metadata page. `man` is generally better off just + ignoring the database in this case. + * Work around corrupted databases in the case where the `nextkey` pointer + chain contains a loop. + +Improvements: + + * `man` looks in the filesystem followed by the database, rather than the + other way round. Unix filesystems are quite good databases for this + purpose, and the `man` database is only superior when looking up names + that don't have associated links in the filesystem. + * `apropos --wildcard --exact` makes sure wildcards match an entire + description or page name, unlike `apropos --wildcard` which may match on + word boundaries too. + * `man`'s page-searching code has been substantially rearranged, and now + only starts displaying pages when it has finished searching for + candidates. This allows pages to be sorted more sensibly. + * Manual pages are formatted in UTF-8 if that is the current locale's + character set. The `-E` option is now available to force a particular + encoding. Note that some versions of (e.g.) `less` have problems + displaying UTF-8 in conjunction with backspace characters; `groff` 1.18 + should alleviate this by using ANSI colour escapes instead. + * The `less` prompt string sets `-PM` as well as `-Pm`. + * Invoking `man` from within `less` now sets the correct page title in the + inner `less`. + * Unless the `--match-case` option is used, `man` will search for pages + case-insensitively. + * Update the mechanism for setting the line length so that it also works + with `groff` 1.18. + * The `-R` switch is added to the `less` prompt string, which is needed to + display the ANSI colour escapes generated by `groff` 1.18 correctly. + * The `$MANLESS` environment variable may be used to override the normal + creation of the `less` prompt string. + * Translation updates for French, German, and Spanish, and a new Catalan + translation. See `man/THANKS`. + +man\_db-2.3.20 (7 September 2001) +================================= + +Fixes: + + * A typo in 2.3.19 caused character sets for many languages to be detected + incorrectly. This especially affected multibyte languages. + * Long options in the environment variable `LESS` are handled correctly. + * When checking if cat pages need to be updated, check for different + timestamps rather than whether the cat page is newer, as otherwise we + were confused by tools like `tar` that preserve timestamps in their + archives. Each cat page is now set to have the same mtime as its + corresponding man page. + * Look up the correct character set each time a page is displayed rather + than just the first time, in case pages in several different character + sets are viewed in a single session. + * `groff` requests are no longer assumed to be case-insensitive when + scanning for preprocessors, so for example `mdoc`'s `.Eq` request isn't + mistaken for the `.EQ` which introduces `eqn` commands. + * Escape arguments passed to the shell that might contain dangerous + characters. + * Avoid an infinite loop if the `LANGUAGE` environment variable is set but + empty. + * The `--create` option to `mandb` now implies `--no-purge`. + * Temporary files are handled with more secure permissions. + +Improvements: + + * Use a variant of `mkstemp()` rather than `tempnam()`, to avoid classic + race conditions. (I don't believe the races were usefully exploitable.) + * Tolerate `whatis` entries in a database that point to themselves. + * Detect more translations of the `NAME` section. + * Add examples of man pages written in POD and SGML. + * `lexgrog` is now installed in `/usr/bin` by default, with proper argument + parsing, an improved output format, and a man page. It is expected to be + used by programs that need to validate man pages. + * The `-H` (`--html`) option to `man` is now compiled in by default, and + supports the BROWSER specification (as + [documented](http://www.tuxedo.org/~esr/BROWSER/) and + [amended](https://www.dwheeler.com/browse/secure_browser.html)). + +man\_db-2.3.19 (5 July 2001) +============================ + +Fixes: + + * The user configuration file `~/.manpath` is no longer trusted when + deciding whether to drop privileges. In the process, user cat directory + handling has been improved. + * Commands of the form `man -S "" foo` formerly emptied the list of + acceptable sections and then searched the database anyway, and commands + of the form `man -S ::: foo` segfaulted. Both now use the standard list + of sections. + * The `HUP` and `TERM` signals are now handled better. + * `straycats` processing invokes `col -bx` rather than `col-bx`. + * The `root` user is now correctly allowed to update databases in system + manpaths. + * `apropos` and `whatis` no longer enter infinite recursion if a database + contains an entry pointing to itself. + +Improvements: + + * When compiled with `--enable-setuid`, `man` and `mandb` can be installed + non-setuid. In this mode, they will be unable to write cat pages in + system directories or to modify system databases, but will otherwise + operate correctly. This allows a single binary package to support setuid + and non-setuid modes of operation. + * The ordering of manual sections is read from `SECTION` directives in the + configuration file rather than being hard-coded. + * The `MANDB_MAP` configuration file directive is documented more clearly. + * Multiple `whatis` entries separated by commas, break requests, and/or + paragraph requests are handled more intelligently. + * Fill control requests (`.nf` and `.fi`) cause `lexgrog` to assume a break + at each newline. + * Duplicate manpath entries (often generated in the course of national + language support) are removed, so that `man -a` works better. + * man\_db's binaries are installed unstripped by default. + * Since supporting certain layouts of manual page hierarchies causes + problems for others, the layout is now selectable via `configure`. The + default is to try all layouts. + * `man` only does an on-the-fly update of the database caches when the + `--update` option is given. + * Manual pages are displayed with a line length appropriate to the current + terminal. If a non-standard line length is used (i.e. the terminal is + not between 66 and 80 characters wide) then cat pages will not be saved. + * `mandb` tries to purge obsolete entries from its databases. Using the + `--create` flag should now usually only be necessary in cases of database + corruption. + +man\_db-2.3.18 (14 May 2001) +============================ + +man\_db-2.3.18 is an interim release under new maintenance by Colin Watson, +merging much of the work done by former maintainers (Graeme Wilford and +Fabrizio Polacco). It incorporates several years of changes made in the +Debian GNU/Linux distribution's package of man\_db. + +Here are a few highlights, with the names of the maintainers responsible for +them. As I am documenting after the fact of other people's changes of a few +years ago, I have undoubtedly missed a number of fixes and improvements; I +promise to keep track of these as I go along in future. + +Fixes: + + * Multiple security fixes, including better handling of temporary files, a + format string vulnerability fix, and more careful dropping of privileges + when running setuid. [Fabrizio, Colin] + * Databases no longer disappear temporarily while they are being + regenerated. [Fabrizio] + * Corrected handling of locale environment variables. Setting several + colon-separated locales in `$LANGUAGE` also works now. [Colin] + * `whatis` and `apropos` are more careful about the possibility of a + corrupted database. [Fabrizio, Colin] + +Improvements: + + * If `root` has private manual hierarchies, cat pages generated from them + are no longer chowned to a less-privileged user. [Wilf] + * Rewrote configuration file handling, adding `DEFINE` directives to set + paths to external programs. The configuration file is now called + `man_db.conf`. [Wilf] + * Support FHS paths (`/usr/share/man` and `/var/cache/man`) in preference + to FSSTND paths (`/usr/man` and `/var/catman`). [Fabrizio] + * Converted from `catgets` to GNU `gettext` for national language support. + [Fabrizio, Colin] + * Several new and improved localized message catalogues and translated man + pages. [Fabrizio, Colin, other contributors] + * Added `accessdb` utility, which displays the contents of a manual page + database. [Fabrizio] + * Added user configuration file `~/.manpath`, with the same syntax as the + global configuration file. [Fabrizio] + * Leading or trailing colons in the `MANPATH` environment variable cause + the manpath derived from configuration files to be prepended or appended + respectively. A double colon in the middle of the environment variable + causes the configuration file manpath to be inserted between the colons. + [Fabrizio] + * Added experimental `-H` and `-Thtml` options to take advantage of + `groff`'s new HTML driver. [Fabrizio] + * `lexgrog` now scans manual pages to guess which preprocessors are needed. + [Fabrizio] + * Create cat directories on the fly if necessary. [Fabrizio] + * Supply a wrapper which explicitly drops privileges to uid `man` if `man` + or `mandb` is run as root. In the future, splitting out setuid functions + into a separate helper process may remove the need for this paranoia. + [Fabrizio] + * Add `--test` option to `mandb`, which merely reports errors in manual + page hierarchies rather than actually creating or updating a database. + [Fabrizio, Colin] + * Manual pages may now be symlinks outside the mantree. This should pose + no significant security concerns, and utilities such as GNU stow create + such symlinks. [Colin] + * Deprecate `whatis` references for `man`, and display a warning if + displaying a page relies on going through a `whatis` reference. They + often lead to confusingly non-obviously-deterministic behaviour, and + guaranteeing that `man` will honour them even when the database is out of + date causes performance problems. [Colin] + +man\_db-2.3.11 (21 September 1995) +================================== + + * The man\_db manual is bundled in source form. + * Components of `$PATH` not in the config file were checked for `man` + subdirectories. Now they are also checked for `../man`. + * Untarring a new manual page (with a timestamp older than the relative cat + file) over the original did *not* cause `man`/`catman` to reformat the + replacement. This is changed. As a side effect, untarring an unchanged + man file over the original will also cause a reformat. + +man\_db-2.3.10 (13 July 1995) +============================= + +Fixes: + + * Global databases were not owned by setuid owner (if applicable). As a + consequence only `mandb` could update the databases unless `man` was run + by superuser. Stupid bug. + * The keyword passed to `apropos` _never_ matched the first word of any + whatis line. + * `FAVOUR_STRAYCATS` code (if enabled), did not work properly. + * `zsoelim` did not work as advertised. + +Improvements: + + * `man` removes its temporary files upon abnormal termination. + * `apropos` does proper word matching rather than the fuzzy matching of + 2.3.5. E.g. supplying any of the keywords: `ld.so`, `a.out`, `dynamic`, + `linker` or `loader` will match the following entry: + + ld.so (8) - a.out dynamic linker/loader + + whereas `a.out` and `loader` used to fail. + + * `man`/`whatis`/`apropos` return with exit code 16 if manual page/file or + keyword is not matched. Previously exit code 0 was used making it + difficult for callers to know if the lookup was successful. + * Addition of German message catalogue. + * `apropos` and `man -k` do POSIX specified regex matching rather than + keyword searches if the environment variable `POSIXLY_CORRECT` is + defined. + * Added glob-only support of native system manual hierarchies on HP-UX, OSF + and Solaris operating systems. Improved the `whatis` parsing code to + cope with majority of HP-UX manual pages. + * Ported to NeXTstep. + +man\_db-2.3.5 (21 April 1995) +============================= + +Added support for: + + * Non-standard section names i.e. multi-character + + * Compressed manual pages. + + A new utility `zsoelim` is included to correctly handle `nroff` `.so` + requests that point to a file which has been compressed. + + * Compressed stray cats. + + By definition, stray cats are not re-creatable as they have no relative + source manual page. As they may have non-default compression extensions + and may reside on read-only media, stray cats have the same compression + support as manual pages. + + * FSSTND proposed "extension" support. + + Specific package manual pages may be installed in the standard sections + but with a package-unique extension appended as in `exit(3tcl)` - + `../man/man3/exit.3tcl`. Using the command `man -e tcl exit` would then + display an `exit` manual page with a `tcl` extension, if available. Of + course, `man 3tcl exit` works as always. + + * FSSTND proposed NLS man subdirectories of the form + `.../man//man/`. + + * NLS message catalogue hooks. + + Provision has been made for the programs to emit their messages in a + language dependent form. + + * `whatis` referred manual pages. + + Some manual pages contain relevant information for commands or programs + that would not otherwise reference the page. The `whatis` part of the + manual page is used to create virtual links to these pages by all of the + names mentioned within it. Examples include names such as `.` and `:` + referencing the local shell manual page. + + * `catman` utility, used to pre-format the manual pages into cat pages. + + * Operating systems other than Linux. + + man\_db has been reported to compile on the following platforms: Linux, + SunOS, Solaris, Ultrix, OSF, HP-UX, AIX, IRIX (although portability does + not extend to support of native manual tree structures on some of these + systems, e.g. HP-UX). + + * Berkeley DB library routines. + + This complements the support of both `gdbm` and `ndbm` which already + existed. DB databases may be shared across platforms. + + * `$MANOPTS` environment variable. + + The environment variable `MANOPTS` may be set to any string in command + line option/argument format. It is parsed by `man(1)` prior to its + actual command line. + + * Per manual hierarchy cat directory locations. + + It is possible to redirect your cat pages to other directories or even + other file systems. + + * Per manual hierarchy `nroff`/`[tg]roff` format scripts. + + Ability to create custom formatter scripts that are called by `man(1)` to + enable format/display of non-standard manual pages or manual pages + requiring a special macro package. + + * Extension of `man -l`. + + Arguments following `-l` are interpreted as local files requiring format + and display. Extensions are: + + - `man -l -` formats and displays `stdin`. + - `man -l foo.1.gz` decompresses, formats and displays `foo.1.gz`. + + * Latin1 manual pages/choice of `nroff` output device. + + * Viewing of ASCII manual pages formatted for a latin1 output device on a 7 + bit ASCII terminal (`-7`). + + * `whatis` and `apropos` utilities support regex and wildcard matching. + + * `checkman`. + + Shell script utility that will find and display duplicated manual pages + found across manual page hierarchies. + + * `mkcatdirs`. + + Shell script utility to create appropriate cat directories after + installation and setup. + +Conceptual improvements: + + * Replacement of single database with multiple modular databases. Easier + integration of additional information into the databases in the future. + + * Both user and global databases share the same name `index.`, + where `` could be `bt`, `db`, or `pag` and `dir`. + + * Databases contain `whatis` text. + + `makewhatis` and text `whatis` databases are redundant, although `whatis` + and `apropos` will use the text `whatis` database for information if they + cannot read from a relevant index database. + + * Straycats handled without need for 'placeholders'. + + * Friendly `less(1)` prompt. + + If `man(1)` uses `less(1)` as its pager (dependent on both static and + dynamic factors), the prompt is modified to suit the manual page being + displayed. The modification performed is also changeable by the user. + + * man\_db manual. + + man\_db has a manual that covers the setup, maintenance and use of a + generic online manual page system. + + * Modes of operation. + + The man\_db utilities can be compiled with various modes of operation in + mind. E.g. `man` can be stopped from updating databases and/or creating + cat files in situations where security is extremely important. See the + man\_db manual for details. + +Speed improvements: + + * Background compression/saving of cat files. + + Cat files are compressed and saved in the background, whilst the user is + able to browse the formatted page directly. + + * Merge of `straycats` and `makewhatis` into `mandb`. + + While `mandb` has slowed, it now incorporates `makewhatis` and + `straycats` functionality and is much faster as a whole. 2.0a2 used + `grep`/`awk`, 2.2 used C regex and 2.3 now uses `lex` sourced C to strip + out the `whatis` information from the raw man or cat files. + + * Berkeley DB support. + + Provides lower database initialisation overhead as compared with `gdbm`. + + * Extremely fast `whatis(1)` searches. + + `whatis(1)` uses keyed database lookups to retrieve whatis strings for + standard (non regex/wildcard) searches. + +Fixes: + + * Correct handling of `$MANSECT`. + + The environment variable `MANSECT` is no longer ignored. + + * Acknowledgement of `$MANPATH` order. + + manpath elements are searched in the order specified. diff --git a/README.md b/README.md new file mode 100644 index 0000000..3ced64c --- /dev/null +++ b/README.md @@ -0,0 +1,316 @@ +# The man-db manual pager suite + + https://gitlab.com/man-db/man-db + + https://man-db.gitlab.io/man-db/ + +Please read the man-db manual, included in the manual subdirectory of this +distribution. It contains configuration details and other aspects of this +manual pager suite that are not duplicated or relevant in this README. +Check manual/README for details of the formatters required. + + * Read docs/INSTALL.autoconf for generic options to configure. (If you + cloned man-db from git, then run `./bootstrap` to create this file.) + * Read docs/INSTALL.quick if you know all about man-db. + * Read NEWS.md for visible changes since the last public release. + * Read ChangeLog for details of recent source code changes. + * Read docs/TODO for future plans. + +The C source requires an C99 compiler. + + +## Copyright and licensing + +Copyright (C) 1990, 1991 John W. Eaton. + +Copyright (C) 1994, 1995 Markus Armbruster. + +Copyright (C) 1994, 1995 Graeme W. Wilford. (Wilf.) + +Copyright (C) 1995 Carl Edman. + +Copyright (C) 1996, 1997, 1998, 2000 Fabrizio Polacco. + +Copyright (C) 2001-2024 Colin Watson. + +Copyright (C) 1984, 1989, 1990, 1991, 1992, 1995, 1996, 1997, 1998, 1999, + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010, 2011, 2012 Free Software Foundation, Inc. + +man-db 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. + +man-db 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 man-db; if not, write to the Free Software Foundation, +Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +In addition, man-db incorporates Gnulib, copyrighted by the Free Software +Foundation and others. Note that much of Gnulib is distributed under the GNU +General Public License version 3 or later. This means that, although +man-db's own source code is licensed under GPL v2 or later, the work as a +whole falls under the terms of the GPL v3 or later. Unless you take special +pains to remove the GPL v3 portions, you must therefore follow the terms and +conditions of the GPL v3 or later when distributing man-db. + + +## Notice regarding current state of FHS (Linux/?BSD) + +As of May 13th, 2001, the last public release of the Filesystem Hierarchy +Standard proposed the root of the manual page hierarchy as `/usr/share` and +the root of the writable cat hierarchy as `/var/cache/man` for the purposes +of man-to-cat filename translation. As such, the following are defined in +`./include/manconfig.h`: + +```c +#define FHS_CAT_ROOT "/var/cache/man" /* required by fsstnd() */ +#define FHS_MAN_ROOT "/usr/share" /* required by fsstnd() */ +``` + +For compatibility with the old FSSTND, the following locations are also +defined: + +```c +#define CAT_ROOT "/var/catman" /* required by fsstnd() */ +#define MAN_ROOT "/usr" /* required by fsstnd() */ +``` + +Should these locations change, simply define the paths accordingly and +recompile. Other FHS changes relating to man/cat paths will not be +compatible with this version of man-db. + + +## Non-generic arguments to configure + +To allow the configuration program, configure, to be non-interactive, it can +be passed various options to alter the default settings. Generic configure +options are discussed in docs/INSTALL.autoconf. The following list of +options is extracted from the man-db manual. It is strongly recommended +that relevant sections of the manual are read if any of these options are +used. + +* `--enable-cache-owner[=ARG]` + + By default, system-wide cache files will be owned by user man. Use this + option with an argument to change the cache file owner. + +* `--disable-cache-owner` + + Use this option to leave the ownership of system-wide cache files + unconstrained. Users will be allowed to modify them. + +* `--disable-setuid` + + By default, man will be installed as a setuid program to the user that + owns the system-wide cache files. Use this option to install man as a + non-setuid program instead. + +* `--enable-mandirs=OS` + + By default, man-db supports manual page directories in any of several + layouts used by free and proprietary versions of UNIX. However, in + certain cases, this can cause man-db to find the wrong page by mistake, + especially when the names of some manual pages on the system contain + periods. Use this option with an argument of GNU, HPUX, IRIX, Solaris, + or BSD (or more than one of these, separated by commas) to support only + the layouts typically used on each of those systems. Note that man-db is + not currently capable of writing cat pages in the proper BSD layout. + +* `--with-device=DEVICE` + + Use this flag to alter the default output device used by NROFF. DEVICE is + passed to NROFF with the -T option. configure will test that NROFF will + run with the supplied device argument. + +* `--with-db=LIBRARY` + + configure will look for database interface libraries in the order gdbm, + Berkeley DB and finally ndbm and will #define appropriate variables + relative to the first one found. To override the built-in order on + platforms having a choice of interface library, use this option to + specify which library to use. + +* `--enable-automatic-create` + + If this flag is used, man will automatically create index databases for + users' private manual page hierarchies. + +* `--disable-automatic-update` + + Normally, man will update entries in index databases if it finds newly + installed manual pages (if the --update flag is used) or delete entries + if manual pages are removed. This flag suppresses this behaviour. + +* `--disable-cats` + + Normally, man will automatically try to create cat files corresponding to + manual files when a manual page is read. This flag suppresses this + behaviour. + +* `--disable-manual` + + Don't build or install the man-db manual. This may be useful when + cross-compiling, or to reduce the installation size. + + +## Installation + +Configure man-db: + +* **Read** `docs/INSTALL.autoconf` regarding `./configure` options. + +* **Run** `./configure --help` to see what `--enable` and `--with` + options may be useful. + +* **Run** `./configure` with the appropriate options and environment + variable settings. + +**Browse** or **edit** the following files that were created by the +configuration process: + +* `include/manconfig.h` regarding the default section list and other + specific definitions. + +* `lib/compression.c` if the default compressor support is + inadequate for your requirements. (Usually `.Z` [compress], + `.z`, `.gz` [gzip].) + +configure will determine your system's ability to use native language +support (NLS) message catalogues. You may set the environment variable +`LINGUAS` to limit the set of translations installed. `LINGUAS` should +contain a space-separated list of two-letter language identifiers. To +compile man-db with no support for message catalogues, simply pass the +`--disable-nls` option to configure. N.B. This is not related to man's +ability to display NLS manual pages, support for which is compiled in by +default. + +Build man-db: + +* **Run** `make` to compile man-db with the set of translations chosen + when running `./configure`. + +Sort out the man-db configuration file. + +* **Run** `./src/man -l man/man5/manpath.5` from the root of this + distribution to read the man-db configuration file details. + +* **Edit** `./src/man_db.conf` to your local requirements. + +Install the package. + +* (gain superuser privileges for the rest of the steps) + +* **Run** `make install` to install the utilities and manual pages. + +Initialise the index databases for all manpaths marked as global in the +man-db configuration file. + +* **Run** `mandb` (this step is equivalent to running straycats and + makewhatis too). + +The following steps are optional / dependent on local conventions. + +* **Acknowledge** any warnings emitted by mandb. Bogus manual pages + are not included in the database and may be a waste of space. + Those pages without correctly formatted "whatis" lines are + included, but will have a whatis entry of "(unknown)" + +* `cd tools` and **run** `mkcatdirs -t` to see if you have all of the + required cat directories. `mkcatdirs` without an option will + display a usage message. + +* `cd tools` and **run** `checkman` with an argument of colon-separated + manual page hierarchies to cross check for duplicated manual + pages. If no argument is given, your default `$MANPATH` will be + used. + + The output of `checkman` may be piped into a file and used as an + argument to `rm`; the "is newer than" messages are directed to + standard error. E.g. `checkman > dups` + + If you are confident that the duplicates found are indeed + duplicates, you can back them up and delete them to save space. + + At this point, running `checkman` again may yield further duplicates + that were ignored the first time. + +* **Run** `catman` with appropriate options to create any/all cat files + that you would like pre-formatted. + + +## Multiple build directories + +It is possible to build man-db in a directory other than the directory +containing this file (and all of the program sources). This is particularly +useful if compiling on multiple architectures or testing various +configuration options as only a single copy of the sources is required. + +To enable this support, simply change directory to where you would like to +build the package and run the configure program in this directory +*from there*. Further information about this support can be found in the +generic install document `docs/INSTALL.autoconf`. + + +## Makefile targets and variables + +The standard GNU Makefile targets: `all`, `install`, `uninstall`, +`mostlyclean`, `clean`, `distclean`, `realclean` and `TAGS` are available in +every Makefile- supported directory. In addition, the master Makefile has +the `dist` target to create a compressed and tarred distribution file. + +During the configuration process, `configure` sets the installation +variables, `prefix` and `exec_prefix`. These are then used to form other +variables such as `bindir` and `sysconfdir`. To change any of these or +other standard GNU install variables dynamically, issue the `make` command +with variable expressions as arguments, eg. `make prefix=/usr/local/packages` + +N.B. If `prefix=/usr` (either statically or dynamically), then +`sysconfdir=/etc` instead of the usual `$(prefix)/etc`. To force +`sysconfdir` to be `/usr/etc`, set it on the make command line. + + +## Default preprocessors + +man-db uses a manual page directed preprocessor system, that is, each manual +page may request preprocessing by a selection of preprocessors. Some +systems' manual pages do not come with this information built in. In such +circumstances, it is advisable to set a default list of preprocessors that +each manual page should be passed through, so that those requiring special +processing are readable. To achieve this, set `DEFAULT_MANROFFSEQ` (found in +`include/manconfig.h`) to the appropriate preprocessor string, after running +configure, but prior to compilation. This is not necessary for the +following systems whose default preprocessing requirements are known. + +* Known not to require `DEFAULT_MANROFFSEQ`: + + Linux, SunOS + +* Known to require `#define DEFAULT_MANROFFSEQ "t"`: + + Ultrix + +* Known to require `#define DEFAULT_MANROFFSEQ "te"`: + + HP-UX, OSF/1 + +If unsure of the default preprocessors required by a system, the standard +system's man(1) manual page may provide an answer. + + +## Contacting the maintainer + +The current maintainer of man-db is Colin Watson . +Please feel free to contact me with any queries or problems you may have. +You can report bugs here: + + https://gitlab.com/man-db/man-db/-/issues + +Bugs from before the migration to GitLab may be found here: + + https://savannah.nongnu.org/bugs/?group=man-db diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..2d01bf4 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,2022 @@ +# generated automatically by aclocal 1.17 -*- Autoconf -*- + +# Copyright (C) 1996-2024 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 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. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.72],, +[m4_warning([this file was generated for autoconf 2.72. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# pkg.m4 - Macros to locate and use pkg-config. -*- Autoconf -*- +# serial 12 (pkg-config-0.29.2) + +dnl Copyright © 2004 Scott James Remnant . +dnl Copyright © 2012-2015 Dan Nicholson +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. + +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +dnl +dnl See the "Since" comment for each macro you use to see what version +dnl of the macros you require. +m4_defun([PKG_PREREQ], +[m4_define([PKG_MACROS_VERSION], [0.29.2]) +m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) +])dnl PKG_PREREQ + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])dnl PKG_PROG_PKG_CONFIG + +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurrence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl have to call PKG_CHECK_EXISTS manually +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])dnl _PKG_CONFIG + +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])dnl _PKG_SHORT_ERRORS_SUPPORTED + + +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $2]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])dnl PKG_CHECK_MODULES + + +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC + + +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_INSTALLDIR + + +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_NOARCH_INSTALLDIR + + +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])dnl PKG_CHECK_VAR + +dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------ +dnl +dnl Prepare a "--with-" configure option using the lowercase +dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and +dnl PKG_CHECK_MODULES in a single macro. +AC_DEFUN([PKG_WITH_MODULES], +[ +m4_pushdef([with_arg], m4_tolower([$1])) + +m4_pushdef([description], + [m4_default([$5], [build with ]with_arg[ support])]) + +m4_pushdef([def_arg], [m4_default([$6], [auto])]) +m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) +m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) + +m4_case(def_arg, + [yes],[m4_pushdef([with_without], [--without-]with_arg)], + [m4_pushdef([with_without],[--with-]with_arg)]) + +AC_ARG_WITH(with_arg, + AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, + [AS_TR_SH([with_]with_arg)=def_arg]) + +AS_CASE([$AS_TR_SH([with_]with_arg)], + [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], + [auto],[PKG_CHECK_MODULES([$1],[$2], + [m4_n([def_action_if_found]) $3], + [m4_n([def_action_if_not_found]) $4])]) + +m4_popdef([with_arg]) +m4_popdef([description]) +m4_popdef([def_arg]) + +])dnl PKG_WITH_MODULES + +dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ----------------------------------------------- +dnl +dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES +dnl check._[VARIABLE-PREFIX] is exported as make variable. +AC_DEFUN([PKG_HAVE_WITH_MODULES], +[ +PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) + +AM_CONDITIONAL([HAVE_][$1], + [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) +])dnl PKG_HAVE_WITH_MODULES + +dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------------------ +dnl +dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after +dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make +dnl and preprocessor variable. +AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], +[ +PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) + +AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], + [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) +])dnl PKG_HAVE_DEFINE_WITH_MODULES + +# Copyright (C) 2002-2024 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_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.17' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.17], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.17])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# Copyright (C) 2011-2024 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_AR([ACT-IF-FAIL]) +# ------------------------- +# Try to determine the archiver interface, and trigger the ar-lib wrapper +# if it is needed. If the detection of archiver interface fails, run +# ACT-IF-FAIL (default is to abort configure with a proper error message). +AC_DEFUN([AM_PROG_AR], +[AC_BEFORE([$0], [LT_INIT])dnl +AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl +AC_BEFORE([$0], [AC_PROG_AR])dnl +AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([ar-lib])dnl +AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) +: ${AR=ar} +: ${ARFLAGS=cr} + +AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], + [AC_LANG_PUSH([C]) + am_cv_ar_interface=ar + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], + [am_ar_try='$AR $ARFLAGS libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([am_ar_try]) + if test "$ac_status" -eq 0; then + am_cv_ar_interface=ar + else + am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([am_ar_try]) + if test "$ac_status" -eq 0; then + am_cv_ar_interface=lib + else + am_cv_ar_interface=unknown + fi + fi + rm -f conftest.lib libconftest.a + ]) + AC_LANG_POP([C])]) + +case $am_cv_ar_interface in +ar) + ;; +lib) + # Microsoft lib, so override with the ar-lib wrapper script. + # FIXME: It is wrong to rewrite AR. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__AR in this case, + # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something + # similar. + AR="$am_aux_dir/ar-lib $AR" + ;; +unknown) + m4_default([$1], + [AC_MSG_ERROR([could not determine $AR interface])]) + ;; +esac +AC_SUBST([AR])dnl +]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2024 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. + +# 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. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_COND_IF -*- Autoconf -*- + +# Copyright (C) 2008-2024 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_COND_IF +# _AM_COND_ELSE +# _AM_COND_ENDIF +# -------------- +# These macros are only used for tracing. +m4_define([_AM_COND_IF]) +m4_define([_AM_COND_ELSE]) +m4_define([_AM_COND_ENDIF]) + +# AM_COND_IF(COND, [IF-TRUE], [IF-FALSE]) +# --------------------------------------- +# If the shell condition COND is true, execute IF-TRUE, otherwise execute +# IF-FALSE. Allow automake to learn about conditional instantiating macros +# (the AC_CONFIG_FOOS). +AC_DEFUN([AM_COND_IF], +[m4_ifndef([_AM_COND_VALUE_$1], + [m4_fatal([$0: no such condition "$1"])])dnl +_AM_COND_IF([$1])dnl +if test -z "$$1_TRUE"; then : + m4_n([$2])[]dnl +m4_ifval([$3], +[_AM_COND_ELSE([$1])dnl +else + $3 +])dnl +_AM_COND_ENDIF([$1])dnl +fi[]dnl +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2024 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_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $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) 1999-2024 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. + + +# 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, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[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". + rm -rf conftest.dir + 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_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + 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 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # 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. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + 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 + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj 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 thus: + # 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_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2024 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_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + AS_CASE([$CONFIG_FILES], + [*\'*], [eval set x "$CONFIG_FILES"], + [*], [set x $CONFIG_FILES]) + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`AS_DIRNAME(["$am_mf"])` + am_filepart=`AS_BASENAME(["$am_mf"])` + AM_RUN_LOG([cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles]) || am_rc=$? + done + if test $am_rc -ne 0; then + AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE="gmake" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking).]) + fi + AS_UNSET([am_dirpart]) + AS_UNSET([am_filepart]) + AS_UNSET([am_mf]) + AS_UNSET([am_rc]) + rm -f conftest-deps.mk +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking is enabled. +# This creates each '.Po' and '.Plo' makefile fragment that we'll need in +# order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2024 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 macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# 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.65])dnl +m4_ifdef([_$0_ALREADY_INIT], + [m4_fatal([$0 expanded multiple times +]m4_defn([_$0_ALREADY_INIT]))], + [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])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 +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +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], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])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]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). 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])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi +AC_SUBST([CTAGS]) +if test -z "$ETAGS"; then + ETAGS=etags +fi +AC_SUBST([ETAGS]) +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi +AC_SUBST([CSCOPE]) + +AC_REQUIRE([_AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +AC_REQUIRE([_AM_PROG_RM_F]) +AC_REQUIRE([_AM_PROG_XARGS_N]) + +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# 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_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2024 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 +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2024 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. + +# 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-2024 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_MAKE_INCLUDE() +# ----------------- +# Check whether make has an 'include' directive that can support all +# the idioms we need for our automatic dependency tracking code. +AC_DEFUN([AM_MAKE_INCLUDE], +[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) + AS_CASE([$?:`cat confinc.out 2>/dev/null`], + ['0:this is the am__doit target'], + [AS_CASE([$s], + [BSD], [am__include='.include' am__quote='"'], + [am__include='include' am__quote=''])]) + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +AC_MSG_RESULT([${_am_result}]) +AC_SUBST([am__include])]) +AC_SUBST([am__quote])]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2024 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_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2024 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], +[m4_foreach_w([_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])]) + +# Copyright (C) 1999-2024 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_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2022-2024 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_RM_F +# --------------- +# Check whether 'rm -f' without any arguments works. +# https://bugs.gnu.org/10828 +AC_DEFUN([_AM_PROG_RM_F], +[am__rm_f_notfound= +AS_IF([(rm -f && rm -fr && rm -rf) 2>/dev/null], [], [am__rm_f_notfound='""']) +AC_SUBST(am__rm_f_notfound) +]) + +# Copyright (C) 2001-2024 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_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2024 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_SLEEP_FRACTIONAL_SECONDS +# ---------------------------- +AC_DEFUN([_AM_SLEEP_FRACTIONAL_SECONDS], [dnl +AC_CACHE_CHECK([whether sleep supports fractional seconds], + am_cv_sleep_fractional_seconds, [dnl +AS_IF([sleep 0.001 2>/dev/null], [am_cv_sleep_fractional_seconds=yes], + [am_cv_sleep_fractional_seconds=no]) +])]) + +# _AM_FILESYSTEM_TIMESTAMP_RESOLUTION +# ----------------------------------- +# Determine the filesystem's resolution for file modification +# timestamps. The coarsest we know of is FAT, with a resolution +# of only two seconds, even with the most recent "exFAT" extensions. +# The finest (e.g. ext4 with large inodes, XFS, ZFS) is one +# nanosecond, matching clock_gettime. However, it is probably not +# possible to delay execution of a shell script for less than one +# millisecond, due to process creation overhead and scheduling +# granularity, so we don't check for anything finer than that. (See below.) +AC_DEFUN([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION], [dnl +AC_REQUIRE([_AM_SLEEP_FRACTIONAL_SECONDS]) +AC_CACHE_CHECK([filesystem timestamp resolution], + am_cv_filesystem_timestamp_resolution, [dnl +# Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `[ls -t conftest.ts[12]]` && + { + test "$[]*" != "X conftest.ts1 conftest.ts2" || + test "$[]*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # 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". + _AS_ECHO_UNQUOTED( + ["Bad output from ls -t: \"`[ls -t conftest.ts[12]]`\""], + [AS_MESSAGE_LOG_FD]) + AC_MSG_FAILURE([ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment.]) +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$[]2" = conftest.ts3 && + test "$[]3" = conftest.ts2 && + test "$[]4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) +])]) + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_REQUIRE([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION]) +# This check should not be cached, as it may vary across builds of +# different projects. +AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# 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). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + 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 + test "$[]2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +AC_MSG_RESULT([$am_build_env_is_sane]) +if test "$am_build_env_is_sane" = no; then + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +AS_IF([test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1],, [dnl + ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! +]) +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2024 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_SILENT_RULES +# ---------------- +# Enable less verbose build rules support. +AC_DEFUN([_AM_SILENT_RULES], +[AM_DEFAULT_VERBOSITY=1 +AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +dnl Delay evaluation of AM_DEFAULT_VERBOSITY to the end to allow multiple calls +dnl to AM_SILENT_RULES to change the default value. +AC_CONFIG_COMMANDS_PRE([dnl +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +])dnl +]) + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Set the default verbosity level to DEFAULT ("yes" being less verbose, "no" or +# empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_REQUIRE([_AM_SILENT_RULES]) +AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1])]) + +# Copyright (C) 2001-2024 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_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="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2024 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_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2024 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_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. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test x$am_uid = xunknown; then + AC_MSG_WARN([ancient id detected; assuming current UID is ok, but dist-ustar might not work]) + elif test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test x$gm_gid = xunknown; then + AC_MSG_WARN([ancient id detected; assuming current GID is ok, but dist-ustar might not work]) + elif test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + 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 + 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' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # 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 + + # 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 + fi + done + rm -rf conftest.dir + + 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 + +# Copyright (C) 2022-2024 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_XARGS_N +# ---------------- +# Check whether 'xargs -n' works. It should work everywhere, so the fallback +# is not optimized at all as we never expect to use it. +AC_DEFUN([_AM_PROG_XARGS_N], +[AC_CACHE_CHECK([xargs -n works], am_cv_xargs_n_works, [dnl +AS_IF([test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3"], [am_cv_xargs_n_works=yes], [am_cv_xargs_n_works=no])]) +AS_IF([test "$am_cv_xargs_n_works" = yes], [am__xargs_n='xargs -n'], [dnl + am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "$@" "$am__xargs_n_arg"; done; }' +])dnl +AC_SUBST(am__xargs_n) +]) + +m4_include([m4/man-arg-automatic-create.m4]) +m4_include([m4/man-arg-automatic-update.m4]) +m4_include([m4/man-arg-cache-owner.m4]) +m4_include([m4/man-arg-cats.m4]) +m4_include([m4/man-arg-config-file.m4]) +m4_include([m4/man-arg-db.m4]) +m4_include([m4/man-arg-device.m4]) +m4_include([m4/man-arg-mandirs.m4]) +m4_include([m4/man-arg-manual.m4]) +m4_include([m4/man-arg-override-dir.m4]) +m4_include([m4/man-arg-sections.m4]) +m4_include([m4/man-arg-setuid.m4]) +m4_include([m4/man-arg-snapdir.m4]) +m4_include([m4/man-arg-systemdsystemunitdir.m4]) +m4_include([m4/man-arg-systemdtmpfilesdir.m4]) +m4_include([m4/man-arg-undoc.m4]) +m4_include([m4/man-bdb.m4]) +m4_include([m4/man-check-progs.m4]) +m4_include([m4/man-compress-lib.m4]) +m4_include([m4/man-gnu-nroff.m4]) +m4_include([m4/man-heirloom-nroff.m4]) +m4_include([m4/man-libseccomp.m4]) +m4_include([m4/man-linguas.m4]) +m4_include([m4/man-po4a.m4]) +m4_include([m4/man-tar-sort-name.m4]) +m4_include([m4/man-trans-subst.m4]) +m4_include([gl/m4/00gnulib.m4]) +m4_include([gl/m4/__inline.m4]) +m4_include([gl/m4/absolute-header.m4]) +m4_include([gl/m4/alloca.m4]) +m4_include([gl/m4/argp.m4]) +m4_include([gl/m4/asm-underscore.m4]) +m4_include([gl/m4/assert_h.m4]) +m4_include([gl/m4/btowc.m4]) +m4_include([gl/m4/builtin-expect.m4]) +m4_include([gl/m4/c-bool.m4]) +m4_include([gl/m4/c32rtomb.m4]) +m4_include([gl/m4/calloc.m4]) +m4_include([gl/m4/canonicalize.m4]) +m4_include([gl/m4/chdir-long.m4]) +m4_include([gl/m4/chown.m4]) +m4_include([gl/m4/clock_time.m4]) +m4_include([gl/m4/close.m4]) +m4_include([gl/m4/closedir.m4]) +m4_include([gl/m4/codeset.m4]) +m4_include([gl/m4/ctype_h.m4]) +m4_include([gl/m4/d-ino.m4]) +m4_include([gl/m4/d-type.m4]) +m4_include([gl/m4/dirent_h.m4]) +m4_include([gl/m4/dirfd.m4]) +m4_include([gl/m4/double-slash-root.m4]) +m4_include([gl/m4/dup.m4]) +m4_include([gl/m4/dup2.m4]) +m4_include([gl/m4/eealloc.m4]) +m4_include([gl/m4/environ.m4]) +m4_include([gl/m4/errno_h.m4]) +m4_include([gl/m4/error.m4]) +m4_include([gl/m4/error_h.m4]) +m4_include([gl/m4/exponentd.m4]) +m4_include([gl/m4/extensions.m4]) +m4_include([gl/m4/extern-inline.m4]) +m4_include([gl/m4/fchdir.m4]) +m4_include([gl/m4/fcntl-o.m4]) +m4_include([gl/m4/fcntl.m4]) +m4_include([gl/m4/fcntl_h.m4]) +m4_include([gl/m4/fdopendir.m4]) +m4_include([gl/m4/filenamecat.m4]) +m4_include([gl/m4/flexmember.m4]) +m4_include([gl/m4/float_h.m4]) +m4_include([gl/m4/flock.m4]) +m4_include([gl/m4/fnmatch.m4]) +m4_include([gl/m4/fnmatch_h.m4]) +m4_include([gl/m4/free.m4]) +m4_include([gl/m4/fstat.m4]) +m4_include([gl/m4/fstatat.m4]) +m4_include([gl/m4/getcwd-abort-bug.m4]) +m4_include([gl/m4/getcwd-path-max.m4]) +m4_include([gl/m4/getcwd.m4]) +m4_include([gl/m4/getdelim.m4]) +m4_include([gl/m4/getdtablesize.m4]) +m4_include([gl/m4/getline.m4]) +m4_include([gl/m4/getlogin.m4]) +m4_include([gl/m4/getlogin_r.m4]) +m4_include([gl/m4/getopt.m4]) +m4_include([gl/m4/getprogname.m4]) +m4_include([gl/m4/getrandom.m4]) +m4_include([gl/m4/gettext.m4]) +m4_include([gl/m4/gettime.m4]) +m4_include([gl/m4/gettimeofday.m4]) +m4_include([gl/m4/glob.m4]) +m4_include([gl/m4/glob_h.m4]) +m4_include([gl/m4/gnulib-common.m4]) +m4_include([gl/m4/gnulib-comp.m4]) +m4_include([gl/m4/host-cpu-c-abi.m4]) +m4_include([gl/m4/iconv.m4]) +m4_include([gl/m4/idpriv.m4]) +m4_include([gl/m4/include_next.m4]) +m4_include([gl/m4/inline.m4]) +m4_include([gl/m4/intlmacosx.m4]) +m4_include([gl/m4/intmax_t.m4]) +m4_include([gl/m4/inttypes.m4]) +m4_include([gl/m4/inttypes_h.m4]) +m4_include([gl/m4/ioctl.m4]) +m4_include([gl/m4/isblank.m4]) +m4_include([gl/m4/iswblank.m4]) +m4_include([gl/m4/iswctype.m4]) +m4_include([gl/m4/iswdigit.m4]) +m4_include([gl/m4/iswpunct.m4]) +m4_include([gl/m4/iswxdigit.m4]) +m4_include([gl/m4/langinfo_h.m4]) +m4_include([gl/m4/largefile.m4]) +m4_include([gl/m4/lchown.m4]) +m4_include([gl/m4/lib-ignore.m4]) +m4_include([gl/m4/lib-ld.m4]) +m4_include([gl/m4/lib-link.m4]) +m4_include([gl/m4/lib-prefix.m4]) +m4_include([gl/m4/libtool.m4]) +m4_include([gl/m4/libunistring-base.m4]) +m4_include([gl/m4/limits-h.m4]) +m4_include([gl/m4/localcharset.m4]) +m4_include([gl/m4/locale-fr.m4]) +m4_include([gl/m4/locale-ja.m4]) +m4_include([gl/m4/locale-zh.m4]) +m4_include([gl/m4/locale_h.m4]) +m4_include([gl/m4/localeconv.m4]) +m4_include([gl/m4/lock.m4]) +m4_include([gl/m4/lstat.m4]) +m4_include([gl/m4/ltoptions.m4]) +m4_include([gl/m4/ltsugar.m4]) +m4_include([gl/m4/ltversion.m4]) +m4_include([gl/m4/lt~obsolete.m4]) +m4_include([gl/m4/malloc.m4]) +m4_include([gl/m4/malloca.m4]) +m4_include([gl/m4/manywarnings.m4]) +m4_include([gl/m4/mbrtoc32.m4]) +m4_include([gl/m4/mbrtowc.m4]) +m4_include([gl/m4/mbsinit.m4]) +m4_include([gl/m4/mbsrtowcs.m4]) +m4_include([gl/m4/mbstate_t.m4]) +m4_include([gl/m4/mbtowc.m4]) +m4_include([gl/m4/memchr.m4]) +m4_include([gl/m4/memmem.m4]) +m4_include([gl/m4/mempcpy.m4]) +m4_include([gl/m4/memrchr.m4]) +m4_include([gl/m4/minmax.m4]) +m4_include([gl/m4/mkdir.m4]) +m4_include([gl/m4/mkdtemp.m4]) +m4_include([gl/m4/mkstemp.m4]) +m4_include([gl/m4/mmap-anon.m4]) +m4_include([gl/m4/mode_t.m4]) +m4_include([gl/m4/msvc-inval.m4]) +m4_include([gl/m4/msvc-nothrow.m4]) +m4_include([gl/m4/multiarch.m4]) +m4_include([gl/m4/musl.m4]) +m4_include([gl/m4/nanosleep.m4]) +m4_include([gl/m4/nl_langinfo.m4]) +m4_include([gl/m4/nls.m4]) +m4_include([gl/m4/nocrash.m4]) +m4_include([gl/m4/nonblocking.m4]) +m4_include([gl/m4/nullptr.m4]) +m4_include([gl/m4/off64_t.m4]) +m4_include([gl/m4/off_t.m4]) +m4_include([gl/m4/open-cloexec.m4]) +m4_include([gl/m4/open-slash.m4]) +m4_include([gl/m4/open.m4]) +m4_include([gl/m4/openat.m4]) +m4_include([gl/m4/opendir.m4]) +m4_include([gl/m4/pathmax.m4]) +m4_include([gl/m4/pipe.m4]) +m4_include([gl/m4/po.m4]) +m4_include([gl/m4/printf.m4]) +m4_include([gl/m4/progtest.m4]) +m4_include([gl/m4/pselect.m4]) +m4_include([gl/m4/pthread-once.m4]) +m4_include([gl/m4/pthread-spin.m4]) +m4_include([gl/m4/pthread_h.m4]) +m4_include([gl/m4/pthread_rwlock_rdlock.m4]) +m4_include([gl/m4/pthread_sigmask.m4]) +m4_include([gl/m4/raise.m4]) +m4_include([gl/m4/rawmemchr.m4]) +m4_include([gl/m4/readdir.m4]) +m4_include([gl/m4/readlink.m4]) +m4_include([gl/m4/readlinkat.m4]) +m4_include([gl/m4/realloc.m4]) +m4_include([gl/m4/reallocarray.m4]) +m4_include([gl/m4/regex.m4]) +m4_include([gl/m4/rename.m4]) +m4_include([gl/m4/renameat.m4]) +m4_include([gl/m4/rewinddir.m4]) +m4_include([gl/m4/rmdir.m4]) +m4_include([gl/m4/save-cwd.m4]) +m4_include([gl/m4/sched_h.m4]) +m4_include([gl/m4/select.m4]) +m4_include([gl/m4/setenv.m4]) +m4_include([gl/m4/setlocale_null.m4]) +m4_include([gl/m4/sigaction.m4]) +m4_include([gl/m4/signal_h.m4]) +m4_include([gl/m4/signalblocking.m4]) +m4_include([gl/m4/sigpipe.m4]) +m4_include([gl/m4/size_max.m4]) +m4_include([gl/m4/sleep.m4]) +m4_include([gl/m4/socketlib.m4]) +m4_include([gl/m4/sockets.m4]) +m4_include([gl/m4/socklen.m4]) +m4_include([gl/m4/ssize_t.m4]) +m4_include([gl/m4/stat-time.m4]) +m4_include([gl/m4/stat.m4]) +m4_include([gl/m4/stdalign.m4]) +m4_include([gl/m4/stdarg.m4]) +m4_include([gl/m4/stddef_h.m4]) +m4_include([gl/m4/stdint.m4]) +m4_include([gl/m4/stdint_h.m4]) +m4_include([gl/m4/stdio_h.m4]) +m4_include([gl/m4/stdlib_h.m4]) +m4_include([gl/m4/stpcpy.m4]) +m4_include([gl/m4/strcase.m4]) +m4_include([gl/m4/strcasestr.m4]) +m4_include([gl/m4/strchrnul.m4]) +m4_include([gl/m4/strdup.m4]) +m4_include([gl/m4/strerror.m4]) +m4_include([gl/m4/strerrorname_np.m4]) +m4_include([gl/m4/string_h.m4]) +m4_include([gl/m4/strings_h.m4]) +m4_include([gl/m4/strndup.m4]) +m4_include([gl/m4/strnlen.m4]) +m4_include([gl/m4/strsep.m4]) +m4_include([gl/m4/sys_cdefs_h.m4]) +m4_include([gl/m4/sys_file_h.m4]) +m4_include([gl/m4/sys_ioctl_h.m4]) +m4_include([gl/m4/sys_random_h.m4]) +m4_include([gl/m4/sys_select_h.m4]) +m4_include([gl/m4/sys_socket_h.m4]) +m4_include([gl/m4/sys_stat_h.m4]) +m4_include([gl/m4/sys_time_h.m4]) +m4_include([gl/m4/sys_types_h.m4]) +m4_include([gl/m4/sys_uio_h.m4]) +m4_include([gl/m4/sysexits.m4]) +m4_include([gl/m4/tempname.m4]) +m4_include([gl/m4/termios_h.m4]) +m4_include([gl/m4/threadlib.m4]) +m4_include([gl/m4/time_h.m4]) +m4_include([gl/m4/timespec.m4]) +m4_include([gl/m4/uchar_h.m4]) +m4_include([gl/m4/unicase_h.m4]) +m4_include([gl/m4/unictype_h.m4]) +m4_include([gl/m4/uninorm_h.m4]) +m4_include([gl/m4/unistd-safer.m4]) +m4_include([gl/m4/unistd_h.m4]) +m4_include([gl/m4/unlink.m4]) +m4_include([gl/m4/unlinkat.m4]) +m4_include([gl/m4/utime.m4]) +m4_include([gl/m4/utime_h.m4]) +m4_include([gl/m4/utimens.m4]) +m4_include([gl/m4/utimes.m4]) +m4_include([gl/m4/vasnprintf.m4]) +m4_include([gl/m4/visibility.m4]) +m4_include([gl/m4/vsnprintf.m4]) +m4_include([gl/m4/warn-on-use.m4]) +m4_include([gl/m4/warnings.m4]) +m4_include([gl/m4/wchar_h.m4]) +m4_include([gl/m4/wcrtomb.m4]) +m4_include([gl/m4/wctype.m4]) +m4_include([gl/m4/wctype_h.m4]) +m4_include([gl/m4/wint_t.m4]) +m4_include([gl/m4/wmemchr.m4]) +m4_include([gl/m4/wmempcpy.m4]) +m4_include([gl/m4/xalloc.m4]) +m4_include([gl/m4/xgetcwd.m4]) +m4_include([gl/m4/xsize.m4]) +m4_include([gl/m4/xstrndup.m4]) +m4_include([gl/m4/xvasprintf.m4]) +m4_include([gl/m4/zzgnulib.m4]) diff --git a/bootstrap b/bootstrap new file mode 100755 index 0000000..ac9433e --- /dev/null +++ b/bootstrap @@ -0,0 +1,1570 @@ +#! /bin/sh +# DO NOT EDIT! GENERATED AUTOMATICALLY! + +# Bootstrap this package from checked-out sources. + +scriptversion=2024-04-13.15; # UTC + +# Copyright (C) 2003-2024 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 3 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, see . + +# Originally written by Paul Eggert. The canonical version of this +# script is maintained as top/bootstrap in gnulib. However, to be +# useful to your package, you should place a copy of it under version +# control in the top-level directory of your package. The intent is +# that all customization can be done with a bootstrap.conf file also +# maintained in your version control; gnulib comes with a template +# build-aux/bootstrap.conf to get you started. + +# Please report bugs or propose patches to bug-gnulib@gnu.org. + +me="$0" +medir=`dirname "$me"` + +# Read the function library and the configuration. + +# A library of shell functions for autopull.sh, autogen.sh, and bootstrap. + +scriptlibversion=2024-06-29.23; # UTC + +# Copyright (C) 2003-2024 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 3 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, see . + +# Originally written by Paul Eggert. The canonical version of this +# script is maintained as top/bootstrap-funclib.sh in gnulib. However, +# to be useful to your package, you should place a copy of it under +# version control in the top-level directory of your package. The +# intent is that all customization can be done with a bootstrap.conf +# file also maintained in your version control; gnulib comes with a +# template build-aux/bootstrap.conf to get you started. + +nl=' +' + +# Ensure file names are sorted consistently across platforms. +LC_ALL=C +export LC_ALL + +# Honor $PERL, but work even if there is none. +PERL="${PERL-perl}" + +default_gnulib_url=https://git.savannah.gnu.org/git/gnulib.git + +# Copyright year, for the --version output. +copyright_year=`echo "$scriptlibversion" | sed -e 's/[^0-9].*//'` +copyright="Copyright (C) ${copyright_year} Free Software Foundation, Inc. +License GPLv3+: GNU GPL version 3 or later . +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law." + +# warnf_ FORMAT-STRING ARG1... +warnf_ () +{ + warnf_format_=$1 + shift + nl=' +' + case $* in + *$nl*) me_=$(printf "$me"|tr "$nl|" '??') + printf "$warnf_format_" "$@" | sed "s|^|$me_: |" ;; + *) printf "$me: $warnf_format_" "$@" ;; + esac >&2 +} + +# warn_ WORD1... +warn_ () +{ + # If IFS does not start with ' ', set it and emit the warning in a subshell. + case $IFS in + ' '*) warnf_ '%s\n' "$*";; + *) (IFS=' '; warn_ "$@");; + esac +} + +# die WORD1... +die() { warn_ "$@"; exit 1; } + +# ------------------------------ Configuration. ------------------------------ + +# Directory that contains package-specific gnulib modules and/or overrides. +local_gl_dir=gl + +# Name of the Makefile.am +# XXX Not used. +gnulib_mk=gnulib.mk + +# List of gnulib modules needed. +gnulib_modules= + +# Any gnulib files needed that are not in modules. +gnulib_files= + +# A function to be called for each unrecognized option. Returns 0 if +# the option in $1 has been processed by the function. Returns 1 if +# the option has not been processed by the function. Override it via +# your own definition in bootstrap.conf +bootstrap_option_hook() { return 1; } + +# A function to be called in order to print the --help information +# corresponding to user-defined command-line options. +bootstrap_print_option_usage_hook() { :; } + +# A function to be called at the end of autopull.sh. +# Override it via your own definition in bootstrap.conf. +bootstrap_post_pull_hook() { :; } + +# A function to be called right after gnulib-tool is run. +# Override it via your own definition in bootstrap.conf. +bootstrap_post_import_hook() { :; } + +# A function to be called after everything else in this script. +# Override it via your own definition in bootstrap.conf. +bootstrap_epilogue() { :; } + +# The command to download all .po files for a specified domain into a +# specified directory. Fill in the first %s with the destination +# directory and the second with the domain name. +po_download_command_format=\ +"wget --mirror --level=1 -nd -nv -A.po -P '%s' \ + https://translationproject.org/latest/%s/" + +# Prefer a non-empty tarname (4th argument of AC_INIT if given), else +# fall back to the package name (1st argument with munging). +extract_package_name=' + /^AC_INIT(\[*/{ + s/// + /^[^,]*,[^,]*,[^,]*,[ []*\([^][ ,)]\)/{ + s//\1/ + s/[],)].*// + p + q + } + s/[],)].*// + s/^GNU // + y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ + s/[^abcdefghijklmnopqrstuvwxyz0123456789_]/-/g + p + } +' +package=$(${AUTOCONF:-autoconf} --trace AC_INIT:\$4 configure.ac 2>/dev/null) +if test -z "$package"; then + package=$(sed -n "$extract_package_name" configure.ac) \ + || die 'cannot find package name in configure.ac' +fi +gnulib_name=lib$package + +build_aux=build-aux +source_base=lib +m4_base=m4 +doc_base=doc +tests_base=tests +gnulib_extra_files=" + build-aux/install-sh + build-aux/mdate-sh + build-aux/texinfo.tex + build-aux/depcomp + build-aux/config.guess + build-aux/config.sub + doc/INSTALL +" + +# Additional gnulib-tool options to use. Use "\newline" to break lines. +gnulib_tool_option_extras= + +# Other locale categories that need message catalogs. +EXTRA_LOCALE_CATEGORIES= + +# Additional xgettext options to use. Use "\\\newline" to break lines. +XGETTEXT_OPTIONS='\\\ + --flag=_:1:pass-c-format\\\ + --flag=N_:1:pass-c-format\\\ + --flag=error:3:c-format --flag=error_at_line:5:c-format\\\ +' + +# Package bug report address and copyright holder for gettext files +COPYRIGHT_HOLDER='Free Software Foundation, Inc.' +MSGID_BUGS_ADDRESS=bug-$package@gnu.org + +# Files we don't want to import. +# XXX Not used. +excluded_files= + +# File that should exist in the top directory of a checked out hierarchy, +# but not in a distribution tarball. +checkout_only_file=README-hacking + +# Set this to '.cvsignore .gitignore' in bootstrap.conf if you want +# those files to be generated in directories like lib/, m4/, and po/. +# Or set it to 'auto' to make this script select which to use based +# on which version control system (if any) is used in the source directory. +vc_ignore=auto + +# Set this to true in bootstrap.conf to enable --bootstrap-sync by +# default. +bootstrap_sync=false + +# Override the default configuration, if necessary. +# Make sure that bootstrap.conf is sourced from the current directory +# if we were invoked as "sh bootstrap". +conffile=`dirname "$me"`/bootstrap.conf +test -r "$conffile" && . "$conffile" + +# ------------------------- Build-time prerequisites ------------------------- + +check_exists() { + if test "$1" = "--verbose"; then + ($2 --version /dev/null 2>&1 + if test $? -ge 126; then + # If not found, run with diagnostics as one may be + # presented with env variables to set to find the right version + ($2 --version /dev/null 2>&1 + fi + + test $? -lt 126 +} + +# Note this deviates from the version comparison in automake +# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a +# but this should suffice as we won't be specifying old +# version formats or redundant trailing .0 in bootstrap.conf. +# If we did want full compatibility then we should probably +# use m4_version_compare from autoconf. +sort_ver() { # sort -V is not generally available + ver1="$1" + ver2="$2" + + # split on '.' and compare each component + i=1 + while : ; do + p1=$(echo "$ver1" | cut -d. -f$i) + p2=$(echo "$ver2" | cut -d. -f$i) + if [ ! "$p1" ]; then + echo "$1 $2" + break + elif [ ! "$p2" ]; then + echo "$2 $1" + break + elif [ ! "$p1" = "$p2" ]; then + if [ "$p1" -gt "$p2" ] 2>/dev/null; then # numeric comparison + echo "$2 $1" + elif [ "$p2" -gt "$p1" ] 2>/dev/null; then # numeric comparison + echo "$1 $2" + else # numeric, then lexicographic comparison + lp=$(printf "%s\n%s\n" "$p1" "$p2" | LANG=C sort -n | tail -n1) + if [ "$lp" = "$p2" ]; then + echo "$1 $2" + else + echo "$2 $1" + fi + fi + break + fi + i=$(($i+1)) + done +} + +get_version_sed=' +# Move version to start of line. +s/.*[v ]\([0-9]\)/\1/ + +# Skip lines that do not start with version. +/^[0-9]/!d + +# Remove characters after the version. +s/[^.a-z0-9-].*// + +# The first component must be digits only. +s/^\([0-9]*\)[a-z-].*/\1/ + +#the following essentially does s/5.005/5.5/ +s/\.0*\([1-9]\)/.\1/g +p +q' + +get_version() { + app=$1 + + $app --version >/dev/null 2>&1 || { $app --version; return 1; } + + $app --version 2>&1 | sed -n "$get_version_sed" +} + +check_versions() { + ret=0 + + while read app req_ver; do + # We only need libtoolize from the libtool package. + if test "$app" = libtool; then + app=libtoolize + fi + # Exempt git if git is not needed. + if test "$app" = git; then + $check_git || continue + fi + # Honor $APP variables ($TAR, $AUTOCONF, etc.) + appvar=$(echo $app | LC_ALL=C tr '[a-z]-' '[A-Z]_') + test "$appvar" = TAR && appvar=AMTAR + case $appvar in + GZIP) ;; # Do not use $GZIP: it contains gzip options. + PERL::*) ;; # Keep perl modules as-is + *) eval "app=\${$appvar-$app}" ;; + esac + + # Handle the still-experimental Automake-NG programs specially. + # They remain named as the mainstream Automake programs ("automake", + # and "aclocal") to avoid gratuitous incompatibilities with + # preexisting usages (by, say, autoreconf, or custom autogen.sh + # scripts), but correctly identify themselves (as being part of + # "GNU automake-ng") when asked their version. + case $app in + automake-ng|aclocal-ng) + app=${app%-ng} + ($app --version | grep '(GNU automake-ng)') >/dev/null 2>&1 || { + warn_ "Error: '$app' not found or not from Automake-NG" + ret=1 + continue + } ;; + # Another check is for perl modules. These can be written as + # e.g. perl::XML::XPath in case of XML::XPath module, etc. + perl::*) + # Extract module name + app="${app#perl::}" + if ! $PERL -m"$app" -e 'exit 0' >/dev/null 2>&1; then + warn_ "Error: perl module '$app' not found" + ret=1 + fi + continue + ;; + esac + if [ "$req_ver" = "-" ]; then + # Merely require app to exist; not all prereq apps are well-behaved + # so we have to rely on $? rather than get_version. + if ! check_exists --verbose $app; then + warn_ "Error: '$app' not found" + ret=1 + fi + else + # Require app to produce a new enough version string. + inst_ver=$(get_version $app) + if [ ! "$inst_ver" ]; then + warn_ "Error: '$app' not found" + ret=1 + else + latest_ver=$(sort_ver $req_ver $inst_ver | cut -d' ' -f2) + if [ ! "$latest_ver" = "$inst_ver" ]; then + warnf_ '%s\n' \ + "Error: '$app' version == $inst_ver is too old" \ + " '$app' version >= $req_ver is required" + ret=1 + fi + fi + fi + done + + return $ret +} + +print_versions() { + echo "Program Min_version" + echo "----------------------" + printf %s "$buildreq" + echo "----------------------" + # can't depend on column -t +} + +# check_build_prerequisites check_git +check_build_prerequisites() +{ + check_git="$1" + + # gnulib-tool requires at least automake and autoconf. + # If either is not listed, add it (with minimum version) as a prerequisite. + case $buildreq in + *automake*) ;; + *) buildreq="automake 1.9 +$buildreq" ;; + esac + case $buildreq in + *autoconf*) ;; + *) buildreq="autoconf 2.59 +$buildreq" ;; + esac + + # When we can deduce that gnulib-tool will require patch, + # and when patch is not already listed as a prerequisite, add it, too. + if test -d "$local_gl_dir" \ + && ! find "$local_gl_dir" -name '*.diff' -exec false {} +; then + case $buildreq in + *patch*) ;; + *) buildreq="patch - +$buildreq" ;; + esac + fi + + if ! printf '%s' "$buildreq" | check_versions; then + echo >&2 + if test -f README-prereq; then + die "See README-prereq for how to get the prerequisite programs" + else + die "Please install the prerequisite programs" + fi + fi + + # Warn the user if autom4te appears to be broken; this causes known + # issues with at least gettext 0.18.3. + probe=$(echo 'm4_quote([hi])' | autom4te -l M4sugar -t 'm4_quote:$%' -) + if test "x$probe" != xhi; then + warn_ "WARNING: your autom4te wrapper eats stdin;" + warn_ "if bootstrap fails, consider upgrading your autotools" + fi +} + +# find_tool ENVVAR NAMES... +# ------------------------- +# Search for a required program. Use the value of ENVVAR, if set, +# otherwise find the first of the NAMES that can be run. +# If found, set ENVVAR to the program name, die otherwise. +# +# FIXME: code duplication, see also gnu-web-doc-update. +find_tool () +{ + find_tool_envvar=$1 + shift + find_tool_names=$@ + eval "find_tool_res=\$$find_tool_envvar" + if test x"$find_tool_res" = x; then + for i; do + if check_exists $i; then + find_tool_res=$i + break + fi + done + fi + if test x"$find_tool_res" = x; then + warn_ "one of these is required: $find_tool_names;" + die "alternatively set $find_tool_envvar to a compatible tool" + fi + eval "$find_tool_envvar=\$find_tool_res" + eval "export $find_tool_envvar" +} + +# --------------------- Preparing GNULIB_SRCDIR for use. --------------------- +# This is part of autopull.sh, but bootstrap needs it too, for self-upgrading. + +# cleanup_gnulib fails, removing the directory $gnulib_path first. +cleanup_gnulib() { + status=$? + rm -fr "$gnulib_path" + exit $status +} + +git_modules_config () { + test -f .gitmodules && git config --file .gitmodules "$@" +} + +prepare_GNULIB_SRCDIR () +{ + if test -n "$GNULIB_SRCDIR"; then + # Use GNULIB_SRCDIR directly. + # We already checked that $GNULIB_SRCDIR references a directory. + # Verify that it contains a gnulib checkout. + test -f "$GNULIB_SRCDIR/gnulib-tool" \ + || die "Error: --gnulib-srcdir or \$GNULIB_SRCDIR is specified," \ + "but does not contain gnulib-tool" + if test -n "$GNULIB_REVISION" && $use_git; then + # The 'git checkout "$GNULIB_REVISION"' command succeeds if the + # GNULIB_REVISION is a commit hash that exists locally, or if it is + # branch name that can be fetched from origin. It fails, however, + # if the GNULIB_REVISION is a commit hash that only exists in + # origin. In this case, we need a 'git fetch' and then retry + # 'git checkout "$GNULIB_REVISION"'. + (cd "$GNULIB_SRCDIR" \ + && { git checkout "$GNULIB_REVISION" 2>/dev/null \ + || { git fetch origin && git checkout "$GNULIB_REVISION"; } + } + ) || exit $? + fi + else + if ! $use_git; then + die "Error: --no-git is specified," \ + "but neither --gnulib-srcdir nor \$GNULIB_SRCDIR is specified" + fi + if git submodule -h | grep -- --reference > /dev/null; then + : + else + die "git version is too old, git >= 1.6.4 is required" + fi + gnulib_path=$(git_modules_config submodule.gnulib.path) + if test -n "$gnulib_path"; then + # A submodule 'gnulib' is configured. + # Get gnulib files. Populate $gnulib_path, updating the submodule. + if test -n "$GNULIB_REFDIR" && test -d "$GNULIB_REFDIR"/.git; then + # Use GNULIB_REFDIR as a reference. + echo "$0: getting gnulib files..." + git submodule update --init --reference "$GNULIB_REFDIR" "$gnulib_path"\ + || exit $? + else + # GNULIB_REFDIR is not set or not usable. Ignore it. + if git_modules_config submodule.gnulib.url >/dev/null; then + echo "$0: getting gnulib files..." + git submodule init -- "$gnulib_path" || exit $? + git submodule update -- "$gnulib_path" || exit $? + else + die "Error: submodule 'gnulib' has no configured url" + fi + fi + else + gnulib_path='gnulib' + if test ! -d "$gnulib_path"; then + # The subdirectory 'gnulib' does not yet exist. Clone into it. + echo "$0: getting gnulib files..." + trap cleanup_gnulib HUP INT PIPE TERM + gnulib_url=${GNULIB_URL:-$default_gnulib_url} + shallow= + if test -z "$GNULIB_REVISION"; then + if git clone -h 2>&1 | grep -- --depth > /dev/null; then + shallow='--depth 2' + fi + git clone $shallow "$gnulib_url" "$gnulib_path" \ + || cleanup_gnulib + else + if git fetch -h 2>&1 | grep -- --depth > /dev/null; then + shallow='--depth 2' + fi + mkdir -p "$gnulib_path" + # Only want a shallow checkout of $GNULIB_REVISION, but git does not + # support cloning by commit hash. So attempt a shallow fetch by commit + # hash to minimize the amount of data downloaded and changes needed to + # be processed, which can drastically reduce download and processing + # time for checkout. If the fetch by commit fails, a shallow fetch can + # not be performed because we do not know what the depth of the commit + # is without fetching all commits. So fall back to fetching all + # commits. + git -C "$gnulib_path" init + git -C "$gnulib_path" remote add origin "$gnulib_url" + git -C "$gnulib_path" fetch $shallow origin "$GNULIB_REVISION" \ + || git -C "$gnulib_path" fetch origin \ + || cleanup_gnulib + git -C "$gnulib_path" reset --hard FETCH_HEAD + (cd "$gnulib_path" && git checkout "$GNULIB_REVISION") \ + || cleanup_gnulib + fi + trap - HUP INT PIPE TERM + else + # The subdirectory 'gnulib' already exists. + if test -n "$GNULIB_REVISION"; then + if test -d "$gnulib_path/.git"; then + # The 'git checkout "$GNULIB_REVISION"' command succeeds if the + # GNULIB_REVISION is a commit hash that exists locally, or if it is + # branch name that can be fetched from origin. It fails, however, + # if the GNULIB_REVISION is a commit hash that only exists in + # origin. In this case, we need a 'git fetch' and then retry + # 'git checkout "$GNULIB_REVISION"'. + (cd "$gnulib_path" \ + && { git checkout "$GNULIB_REVISION" 2>/dev/null \ + || { git fetch origin && git checkout "$GNULIB_REVISION"; } + } + ) || exit $? + else + die "Error: GNULIB_REVISION is specified in bootstrap.conf," \ + "but '$gnulib_path' contains no git history" + fi + fi + fi + fi + # Verify that $gnulib_path contains a gnulib checkout. + test -f "$gnulib_path/gnulib-tool" \ + || die "Error: '$gnulib_path' is supposed to contain a gnulib checkout," \ + "but does not contain gnulib-tool" + GNULIB_SRCDIR=$gnulib_path + fi + # $GNULIB_SRCDIR now points to the version of gnulib to use, and + # we no longer need to use git or $gnulib_path below here. +} + +# -------- Upgrading bootstrap to the version found in GNULIB_SRCDIR. -------- + +upgrade_bootstrap () +{ + if test -f "$medir"/bootstrap-funclib.sh; then + update_lib=true + { cmp -s "$medir"/bootstrap "$GNULIB_SRCDIR/top/bootstrap" \ + && cmp -s "$medir"/bootstrap-funclib.sh \ + "$GNULIB_SRCDIR/top/bootstrap-funclib.sh" \ + && cmp -s "$medir"/autopull.sh "$GNULIB_SRCDIR/top/autopull.sh" \ + && cmp -s "$medir"/autogen.sh "$GNULIB_SRCDIR/top/autogen.sh"; \ + } + else + update_lib=false + cmp -s "$medir"/bootstrap "$GNULIB_SRCDIR/build-aux/bootstrap" + fi || { + if $update_lib; then + echo "$0: updating bootstrap & companions and restarting..." + else + echo "$0: updating bootstrap and restarting..." + fi + case $(sh -c 'echo "$1"' -- a) in + a) ignored=--;; + *) ignored=ignored;; + esac + u=$update_lib + exec sh -c \ + '{ if '$u' && test -f "$1"; then cp "$1" "$3"; else cp "$2" "$3"; fi; } && + { if '$u' && test -f "$4"; then cp "$4" "$5"; else rm -f "$5"; fi; } && + { if '$u' && test -f "$6"; then cp "$6" "$7"; else rm -f "$7"; fi; } && + { if '$u' && test -f "$8"; then cp "$8" "$9"; else rm -f "$9"; fi; } && + shift && shift && shift && shift && shift && + shift && shift && shift && shift && + exec "${CONFIG_SHELL-/bin/sh}" "$@"' \ + $ignored \ + "$GNULIB_SRCDIR/top/bootstrap" "$GNULIB_SRCDIR/build-aux/bootstrap" \ + "$medir/bootstrap" \ + "$GNULIB_SRCDIR/top/bootstrap-funclib.sh" "$medir/bootstrap-funclib.sh" \ + "$GNULIB_SRCDIR/top/autopull.sh" "$medir/autopull.sh" \ + "$GNULIB_SRCDIR/top/autogen.sh" "$medir/autogen.sh" \ + "$0" "$@" --no-bootstrap-sync + } +} + +# ---------------------------------------------------------------------------- + +if test x"$gnulib_modules$gnulib_files$gnulib_extra_files" = x; then + use_gnulib=false +else + use_gnulib=true +fi + +# -------- Fetch auxiliary files from the network. -------------------------- + +autopull_usage() { + cat </dev/null 2>&1 && unset CDPATH + + # Parse options. + + # Use git to update gnulib sources + use_git=true + + for option + do + case $option in + --help) + autopull_usage + return;; + --version) + set -e + echo "autopull.sh $scriptlibversion" + echo "$copyright" + return 0 + ;; + --skip-po) + SKIP_PO=t;; + --force) + checkout_only_file=;; + --bootstrap-sync) + bootstrap_sync=true;; + --no-bootstrap-sync) + bootstrap_sync=false;; + --no-git) + use_git=false;; + *) + bootstrap_option_hook $option || die "$option: unknown option";; + esac + done + + $use_git || test -n "$GNULIB_SRCDIR" \ + || die "Error: --no-git requires \$GNULIB_SRCDIR environment variable" \ + "or --gnulib-srcdir option" + test -z "$GNULIB_SRCDIR" || test -d "$GNULIB_SRCDIR" \ + || die "Error: \$GNULIB_SRCDIR environment variable" \ + "or --gnulib-srcdir option is specified," \ + "but does not denote a directory" + + if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then + die "Running this script from a non-checked-out distribution is risky." + fi + + check_build_prerequisites $use_git + + if $use_gnulib || $bootstrap_sync; then + prepare_GNULIB_SRCDIR + if $bootstrap_sync; then + upgrade_bootstrap "$@" + fi + fi + + # Find sha1sum, named gsha1sum on MacPorts, shasum on Mac OS X 10.6. + # Also find the compatible sha1 utility on the BSDs + if test x"$SKIP_PO" = x; then + find_tool SHA1SUM sha1sum gsha1sum shasum sha1 + fi + + # See if we can use gnulib's git-merge-changelog merge driver. + if $use_git && test -d .git && check_exists git; then + if git config merge.merge-changelog.driver >/dev/null ; then + : + elif check_exists git-merge-changelog; then + echo "$0: initializing git-merge-changelog driver" + git config merge.merge-changelog.name 'GNU-style ChangeLog merge driver' + git config merge.merge-changelog.driver 'git-merge-changelog %O %A %B' + else + echo "$0: consider installing git-merge-changelog from gnulib" + fi + fi + + case $SKIP_PO in + '') + if test -d po; then + update_po_files po $package || return + fi + + if test -d runtime-po; then + update_po_files runtime-po $package-runtime || return + fi;; + esac + + # --------------------------------------------------------------------------- + + bootstrap_post_pull_hook \ + || die "bootstrap_post_pull_hook failed" + + # Don't proceed if there are uninitialized submodules. In particular, + # autogen.sh will remove dangling links, which might be links into + # uninitialized submodules. + # But it's OK if the 'gnulib' submodule is uninitialized, as long as + # GNULIB_SRCDIR is set. + if $use_git; then + # Uninitialized submodules are listed with an initial dash. + uninitialized=`git submodule | grep '^-' | awk '{ print $2 }'` + if test -n "$GNULIB_SRCDIR"; then + uninitialized=`echo "$uninitialized" | grep -v '^gnulib$'` + fi + if test -n "$uninitialized"; then + uninit_comma=`echo "$uninitialized" | tr '\n' ',' | sed -e 's|,$|.|'` + die "Some git submodules are not initialized: "$uninit_comma \ + "Either use option '--no-git'," \ + "or run 'git submodule update --init' and bootstrap again." + fi + fi + + if test -f "$medir"/autogen.sh; then + echo "$0: done. Now you can run '$medir/autogen.sh'." + fi +} + +# ----------------------------- Get translations. ----------------------------- + +download_po_files() { + subdir=$1 + domain=$2 + echo "$me: getting translations into $subdir for $domain..." + cmd=$(printf "$po_download_command_format" "$subdir" "$domain") + eval "$cmd" +} + +# Mirror .po files to $po_dir/.reference and copy only the new +# or modified ones into $po_dir. Also update $po_dir/LINGUAS. +# Note po files that exist locally only are left in $po_dir but will +# not be included in LINGUAS and hence will not be distributed. +update_po_files() { + # Directory containing primary .po files. + # Overwrite them only when we're sure a .po file is new. + po_dir=$1 + domain=$2 + + # Mirror *.po files into this dir. + # Usually contains *.s1 checksum files. + ref_po_dir="$po_dir/.reference" + + test -d $ref_po_dir || mkdir $ref_po_dir || return + download_po_files $ref_po_dir $domain \ + && ls "$ref_po_dir"/*.po 2>/dev/null | + sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS" || return + + langs=$(cd $ref_po_dir && echo *.po | sed 's/\.po//g') + test "$langs" = '*' && langs=x + for po in $langs; do + case $po in x) continue;; esac + new_po="$ref_po_dir/$po.po" + cksum_file="$ref_po_dir/$po.s1" + if ! test -f "$cksum_file" || + ! test -f "$po_dir/$po.po" || + ! $SHA1SUM -c "$cksum_file" < "$new_po" > /dev/null 2>&1; then + echo "$me: updated $po_dir/$po.po..." + cp "$new_po" "$po_dir/$po.po" \ + && $SHA1SUM < "$new_po" > "$cksum_file" || return + fi + done +} + +# -------- Generate files automatically from existing sources. -------------- + +autogen_usage() { + cat < /dev/null 2>&1 + elif test -d .svn; then + svn log -r HEAD "$file" > /dev/null 2>&1 + elif test -d CVS; then + grep -F "/${file##*/}/" "$parent/CVS/Entries" 2>/dev/null | + grep '^/[^/]*/[0-9]' > /dev/null + else + warn_ "no version control for $file?" + false + fi +} + +# Strip blank and comment lines to leave significant entries. +gitignore_entries() { + sed '/^#/d; /^$/d' "$@" +} + +# If $STR is not already on a line by itself in $FILE, insert it at the start. +# Entries are inserted at the start of the ignore list to ensure existing +# entries starting with ! are not overridden. Such entries support +# whitelisting exceptions after a more generic blacklist pattern. +insert_if_absent() { + file=$1 + str=$2 + test -f $file || touch $file + test -r $file || die "Error: failed to read ignore file: $file" + duplicate_entries=$(gitignore_entries $file | sort | uniq -d) + if [ "$duplicate_entries" ] ; then + die "Error: Duplicate entries in $file: " $duplicate_entries + fi + linesold=$(gitignore_entries $file | wc -l) + linesnew=$( { echo "$str"; cat $file; } | gitignore_entries | sort -u | wc -l) + if [ $linesold != $linesnew ] ; then + { echo "$str" | cat - $file > $file.bak && mv $file.bak $file; } \ + || die "insert_if_absent $file $str: failed" + fi +} + +# Adjust $PATTERN for $VC_IGNORE_FILE and insert it with +# insert_if_absent. +insert_vc_ignore() { + vc_ignore_file="$1" + pattern="$2" + case $vc_ignore_file in + *.gitignore) + # A .gitignore entry that does not start with '/' applies + # recursively to subdirectories, so prepend '/' to every + # .gitignore entry. + pattern=$(echo "$pattern" | sed s,^,/,);; + esac + insert_if_absent "$vc_ignore_file" "$pattern" +} + +symlink_to_dir() +{ + src=$1/$2 + dst=${3-$2} + + test -f "$src" && { + + # If the destination directory doesn't exist, create it. + # This is required at least for "lib/uniwidth/cjk.h". + dst_dir=$(dirname "$dst") + if ! test -d "$dst_dir"; then + mkdir -p "$dst_dir" + + # If we've just created a directory like lib/uniwidth, + # tell version control system(s) it's ignorable. + # FIXME: for now, this does only one level + parent=$(dirname "$dst_dir") + for dot_ig in x $vc_ignore; do + test $dot_ig = x && continue + ig=$parent/$dot_ig + insert_vc_ignore $ig "${dst_dir##*/}/" + done + fi + + if $copy; then + { + test ! -h "$dst" || { + echo "$me: rm -f $dst" && + rm -f "$dst" + } + } && + test -f "$dst" && + cmp -s "$src" "$dst" || { + echo "$me: cp -fp $src $dst" && + cp -fp "$src" "$dst" + } + else + # Leave any existing symlink alone, if it already points to the source, + # so that broken build tools that care about symlink times + # aren't confused into doing unnecessary builds. Conversely, if the + # existing symlink's timestamp is older than the source, make it afresh, + # so that broken tools aren't confused into skipping needed builds. See + # . + test -h "$dst" && + src_ls=$(ls -diL "$src" 2>/dev/null) && set $src_ls && src_i=$1 && + dst_ls=$(ls -diL "$dst" 2>/dev/null) && set $dst_ls && dst_i=$1 && + test "$src_i" = "$dst_i" && + both_ls=$(ls -dt "$src" "$dst") && + test "X$both_ls" = "X$dst$nl$src" || { + dot_dots= + case $src in + /*) ;; + *) + case /$dst/ in + *//* | */../* | */./* | /*/*/*/*/*/) + die "invalid symlink calculation: $src -> $dst";; + /*/*/*/*/) dot_dots=../../../;; + /*/*/*/) dot_dots=../../;; + /*/*/) dot_dots=../;; + esac;; + esac + + echo "$me: ln -fs $dot_dots$src $dst" && + ln -fs "$dot_dots$src" "$dst" + } + fi + } +} + +# Regenerate all autogeneratable files that are omitted from the +# version control repository. In particular, regenerate all +# aclocal.m4, config.h.in, Makefile.in, configure files with new +# versions of autoconf or automake. +autogen() +{ + # Ensure that CDPATH is not set. Otherwise, the output from cd + # would cause trouble in at least one use below. + (unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + # Environment variables that may be set by the user. + : "${AUTOPOINT=autopoint}" + : "${AUTORECONF=autoreconf}" + + if test "$vc_ignore" = auto; then + vc_ignore= + test -d .git && vc_ignore=.gitignore + test -d CVS && vc_ignore="$vc_ignore .cvsignore" + fi + + + # Parse options. + + # Whether to use copies instead of symlinks. + copy=false + + for option + do + case $option in + --help) + autogen_usage + return;; + --version) + set -e + echo "autogen.sh $scriptlibversion" + echo "$copyright" + return 0 + ;; + --force) + checkout_only_file=;; + --copy) + copy=true;; + *) + bootstrap_option_hook $option || die "$option: unknown option";; + esac + done + + test -z "$GNULIB_SRCDIR" || test -d "$GNULIB_SRCDIR" \ + || die "Error: \$GNULIB_SRCDIR environment variable or --gnulib-srcdir" \ + "option is specified, but does not denote a directory" + + if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then + die "Running this script from a non-checked-out distribution is risky." + fi + + if $use_gnulib; then + if test -z "$GNULIB_SRCDIR"; then + gnulib_path=$(test -f .gitmodules && + git config --file .gitmodules submodule.gnulib.path) + test -z "$gnulib_path" && gnulib_path=gnulib + GNULIB_SRCDIR=$gnulib_path + fi + fi + + # Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac. + found_aux_dir=no + grep '^[ ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'])' configure.ac \ + >/dev/null && found_aux_dir=yes + grep '^[ ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \ + >/dev/null && found_aux_dir=yes + test $found_aux_dir = yes \ + || die "configure.ac lacks 'AC_CONFIG_AUX_DIR([$build_aux])'; add it" + + # If $build_aux doesn't exist, create it now, otherwise some bits + # below will malfunction. If creating it, also mark it as ignored. + if test ! -d $build_aux; then + mkdir $build_aux + for dot_ig in x $vc_ignore; do + test $dot_ig = x && continue + insert_vc_ignore $dot_ig $build_aux/ + done + fi + + check_build_prerequisites false + + use_libtool=0 + # We'd like to use grep -E, to see if any of LT_INIT, + # AC_PROG_LIBTOOL, AM_PROG_LIBTOOL is used in configure.ac, + # but that's not portable enough (e.g., for Solaris). + grep '^[ ]*A[CM]_PROG_LIBTOOL' configure.ac >/dev/null \ + && use_libtool=1 + grep '^[ ]*LT_INIT' configure.ac >/dev/null \ + && use_libtool=1 + if test $use_libtool = 1; then + find_tool LIBTOOLIZE glibtoolize libtoolize + fi + + if $use_gnulib; then + gnulib_tool=$GNULIB_SRCDIR/gnulib-tool + <$gnulib_tool || return + fi + + # NOTE: we have to be careful to run both autopoint and libtoolize + # before gnulib-tool, since gnulib-tool is likely to provide newer + # versions of files "installed" by these two programs. + # Then, *after* gnulib-tool (see below), we have to be careful to + # run autoreconf in such a way that it does not run either of these + # two just-pre-run programs. + + # Import from gettext. + with_gettext=yes + grep '^[ ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \ + with_gettext=no + + if test $with_gettext = yes || test $use_libtool = 1; then + + tempbase=.bootstrap$$ + trap "rm -f $tempbase.0 $tempbase.1" HUP INT PIPE TERM + + > $tempbase.0 > $tempbase.1 && + find . ! -type d -print | sort > $tempbase.0 || return + + if test $with_gettext = yes; then + # Released autopoint has the tendency to install macros that have been + # obsoleted in current gnulib, so run this before gnulib-tool. + echo "$0: $AUTOPOINT --force" + $AUTOPOINT --force || return + fi + + # Autoreconf runs aclocal before libtoolize, which causes spurious + # warnings if the initial aclocal is confused by the libtoolized + # (or worse out-of-date) macro directory. + # libtoolize 1.9b added the --install option; but we support back + # to libtoolize 1.5.22, where the install action was default. + if test $use_libtool = 1; then + install= + case $($LIBTOOLIZE --help) in + *--install*) install=--install ;; + esac + echo "running: $LIBTOOLIZE $install --copy" + $LIBTOOLIZE $install --copy + fi + + find . ! -type d -print | sort >$tempbase.1 + old_IFS=$IFS + IFS=$nl + for file in $(comm -13 $tempbase.0 $tempbase.1); do + IFS=$old_IFS + parent=${file%/*} + version_controlled_file "$parent" "$file" || { + for dot_ig in x $vc_ignore; do + test $dot_ig = x && continue + ig=$parent/$dot_ig + insert_vc_ignore "$ig" "${file##*/}" + done + } + done + IFS=$old_IFS + + rm -f $tempbase.0 $tempbase.1 + trap - HUP INT PIPE TERM + fi + + # Import from gnulib. + + if $use_gnulib; then + gnulib_tool_options="\ + --no-changelog\ + --aux-dir=$build_aux\ + --doc-base=$doc_base\ + --lib=$gnulib_name\ + --m4-base=$m4_base/\ + --source-base=$source_base/\ + --tests-base=$tests_base\ + --local-dir=$local_gl_dir\ + $gnulib_tool_option_extras\ + " + if test $use_libtool = 1; then + case "$gnulib_tool_options " in + *' --libtool '*) ;; + *) gnulib_tool_options="$gnulib_tool_options --libtool" ;; + esac + fi + echo "$0: $gnulib_tool $gnulib_tool_options --import ..." + $gnulib_tool $gnulib_tool_options --import $gnulib_modules \ + || die "gnulib-tool failed" + + for file in $gnulib_files; do + symlink_to_dir "$GNULIB_SRCDIR" $file \ + || die "failed to symlink $file" + done + fi + + bootstrap_post_import_hook \ + || die "bootstrap_post_import_hook failed" + + # Remove any dangling symlink matching "*.m4" or "*.[ch]" in some + # gnulib-populated directories. Such .m4 files would cause aclocal to fail. + # The following requires GNU find 4.2.3 or newer. Considering the usual + # portability constraints of this script, that may seem a very demanding + # requirement, but it should be ok. Ignore any failure, which is fine, + # since this is only a convenience to help developers avoid the relatively + # unusual case in which a symlinked-to .m4 file is git-removed from gnulib + # between successive runs of this script. + find "$m4_base" "$source_base" \ + -depth \( -name '*.m4' -o -name '*.[ch]' \) \ + -type l -xtype l -delete > /dev/null 2>&1 + + # Invoke autoreconf with --force --install to ensure upgrades of tools + # such as ylwrap. + AUTORECONFFLAGS="--verbose --install --force -I $m4_base $ACLOCAL_FLAGS" + AUTORECONFFLAGS="$AUTORECONFFLAGS --no-recursive" + + # Tell autoreconf not to invoke autopoint or libtoolize; they were run above. + echo "running: AUTOPOINT=true LIBTOOLIZE=true $AUTORECONF $AUTORECONFFLAGS" + AUTOPOINT=true LIBTOOLIZE=true $AUTORECONF $AUTORECONFFLAGS \ + || die "autoreconf failed" + + # Get some extra files from gnulib, overriding existing files. + for file in $gnulib_extra_files; do + case $file in + */INSTALL) dst=INSTALL;; + build-aux/*) dst=$build_aux/${file#build-aux/};; + *) dst=$file;; + esac + symlink_to_dir "$GNULIB_SRCDIR" $file $dst \ + || die "failed to symlink $file" + done + + if test $with_gettext = yes; then + # Create gettext configuration. + echo "$0: Creating po/Makevars from po/Makevars.template ..." + rm -f po/Makevars + sed ' + /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/ + /^COPYRIGHT_HOLDER *=/s/=.*/= '"$COPYRIGHT_HOLDER"'/ + /^MSGID_BUGS_ADDRESS *=/s|=.*|= '"$MSGID_BUGS_ADDRESS"'| + /^XGETTEXT_OPTIONS *=/{ + s/$/ \\/ + a\ + '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+} + } + ' po/Makevars.template >po/Makevars \ + || die 'cannot generate po/Makevars' + + # If the 'gettext' module is in use, grab the latest Makefile.in.in. + # If only the 'gettext-h' module is in use, assume autopoint already + # put the correct version of this file into place. + case $gnulib_modules in + *gettext-h*) ;; + *gettext*) + cp $GNULIB_SRCDIR/build-aux/po/Makefile.in.in po/Makefile.in.in \ + || die "cannot create po/Makefile.in.in" + ;; + esac + + if test -d runtime-po; then + # Similarly for runtime-po/Makevars, but not quite the same. + rm -f runtime-po/Makevars + sed ' + /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/ + /^subdir *=.*/s/=.*/= runtime-po/ + /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/ + /^XGETTEXT_OPTIONS *=/{ + s/$/ \\/ + a\ + '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+} + } + ' po/Makevars.template >runtime-po/Makevars \ + || die 'cannot generate runtime-po/Makevars' + + # Copy identical files from po to runtime-po. + (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po) + fi + fi + + bootstrap_epilogue + + echo "$0: done. Now you can run './configure'." +} + +# ---------------------------------------------------------------------------- + +# Local Variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptlibversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: + +usage() { + cat <. + + +GNULIB_REVISION=0ba13435a9362bec0ff5fd0830907b9fac723e41 + +# gnulib modules used by this package. +gnulib_modules=" + argp + array-list + attribute + c99 + canonicalize + closedir + dirent + dirname + error + fcntl-h + flock + fnmatch-gnu + fstat + getline + gettext-h + gitlog-to-changelog + glob + gnupload + hash-map + hash-pjw-bare + hash-set + havelib + idpriv-drop + idpriv-droptemp + lchown + lib-ignore + linkedhash-list + localcharset + manywarnings + memmem + minmax + mkdtemp + mkstemp + nanosleep + nonblocking + nullptr + openat + opendir + progname + raise + rbtree-list + regex + rename + renameat + setenv + sigaction + signal-h + sigpipe + sigprocmask + stat-time + stdbool + stpcpy + strcase + strcasestr + strerror + strsep + tempname + termios + timespec + unlinkat + utimens + verror + warnings + xalloc + xgetcwd + xlist + xmap + xset + xstdopen + xstrndup + xvasprintf + year2038-recommended +" + +gnulib_tool_option_extras="\ + --no-conditional-dependencies \ + --libtool \ + --macro-prefix=gl \ + --no-vc-files \ +" + +# bootstrap's --skip-po option really just controls its own downloads, but +# it's somewhat useful to provide a way to skip the downloads performed by +# gnulib-tool as well. Since we always suppress bootstrap's downloads due +# to maintaining man-db's own translations manually, we need to parse the +# command line ourselves to find out whether --skip-po was explicitly +# passed. +explicit_skip_po= +for option; do + case $option in + --skip-po) + explicit_skip_po=t + ;; + esac +done + +if [ -z "$explicit_skip_po" ]; then + gnulib_tool_option_extras="$gnulib_tool_option_extras --po-base=gl/ref-po --po-domain=man-db" +fi + +# This doesn't currently exist, but we set it to avoid confusion with 'gl' +# as the local output directory. +local_gl_dir=gnulib-local + +gnulib_name=libgnu +source_base=gl/lib +m4_base=gl/m4 + +COPYRIGHT_HOLDER='Colin Watson ' +MSGID_BUGS_ADDRESS="$COPYRIGHT_HOLDER" + +# Additional xgettext options to use. Use "\\\newline" to break lines. +XGETTEXT_OPTIONS=$XGETTEXT_OPTIONS'\\\ + --from-code=UTF-8\\\ + --flag=debug:1:c-format\\\ + --flag=debug_error:1:c-format\\\ + --flag=fatal:2:c-format\\\ +' + +checkout_only_file= +copy=true +vc_ignore= + +SKIP_PO=t + +# Build prerequisites +buildreq="\ +autoconf 2.64 +automake 1.14 +autopoint 0.18.3 +gettext 0.18.3 +git 1.5.5 +tar - +" + +bootstrap_post_import_hook () { + patch -s -p1 gl/po/Makevars + if ls gl/ref-po/*.po >/dev/null 2>&1; then + cp -a gl/ref-po/*.po gl/po/ + fi + rm -rf gl/ref-po + fi +} + +bootstrap_epilogue () { + # If --copy is not used, then INSTALL may be a symbolic link, in which + # case a simple "mv" could leave it pointing to the wrong target. Arrange + # (reasonably portably) for the target to end up as a regular file no + # matter what. + rm -f docs/INSTALL.autoconf + cp -Lp INSTALL docs/INSTALL.autoconf + rm -f INSTALL +} diff --git a/build-aux/ar-lib b/build-aux/ar-lib new file mode 100755 index 0000000..1521987 --- /dev/null +++ b/build-aux/ar-lib @@ -0,0 +1,279 @@ +#! /bin/sh +# Wrapper for Microsoft lib.exe + +me=ar-lib +scriptversion=2024-06-19.01; # UTC + +# Copyright (C) 2010-2024 Free Software Foundation, Inc. +# Written by Peter Rosin . +# +# 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, see . + +# 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. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + + +# func_error message +func_error () +{ + echo "$me: $1" 1>&2 + exit 1 +} + +file_conv= + +# func_file_conv build_file +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN* | MSYS*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv in + mingw) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin | msys) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_at_file at_file operation archive +# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE +# for each of them. +# When interpreting the content of the @FILE, do NOT use func_file_conv, +# since the user would need to supply preconverted file names to +# binutils ar, at least for MinGW. +func_at_file () +{ + operation=$2 + archive=$3 + at_file_contents=`cat "$1"` + eval set x "$at_file_contents" + shift + + for member + do + $AR -NOLOGO $operation:"$member" "$archive" || exit $? + done +} + +case $1 in + '') + func_error "no command. Try '$0 --help' for more information." + ;; + -h | --h*) + cat <. +GNU Automake home page: . +General help using GNU software: . +EOF + exit $? + ;; + -v | --v*) + echo "$me (GNU Automake) $scriptversion" + exit $? + ;; +esac + +if test $# -lt 3; then + func_error "you must specify a program, an action and an archive" +fi + +AR=$1 +shift +while : +do + if test $# -lt 2; then + func_error "you must specify a program, an action and an archive" + fi + case $1 in + -lib | -LIB \ + | -ltcg | -LTCG \ + | -machine* | -MACHINE* \ + | -subsystem* | -SUBSYSTEM* \ + | -verbose | -VERBOSE \ + | -wx* | -WX* ) + AR="$AR $1" + shift + ;; + -nologo | -NOLOGO) + # We always invoke AR with -nologo, so don't need to add it again. + shift + ;; + *) + action=$1 + shift + break + ;; + esac +done +orig_archive=$1 +shift +func_file_conv "$orig_archive" +archive=$file + +# strip leading dash in $action +action=${action#-} + +delete= +extract= +list= +quick= +replace= +index= +create= + +while test -n "$action" +do + case $action in + d*) delete=yes ;; + x*) extract=yes ;; + t*) list=yes ;; + q*) quick=yes ;; + r*) replace=yes ;; + s*) index=yes ;; + S*) ;; # the index is always updated implicitly + c*) create=yes ;; + u*) ;; # TODO: don't ignore the update modifier + v*) ;; # TODO: don't ignore the verbose modifier + *) + func_error "unknown action specified" + ;; + esac + action=${action#?} +done + +case $delete$extract$list$quick$replace,$index in + yes,* | ,yes) + ;; + yesyes*) + func_error "more than one action specified" + ;; + *) + func_error "no action specified" + ;; +esac + +if test -n "$delete"; then + if test ! -f "$orig_archive"; then + func_error "archive not found" + fi + for member + do + case $1 in + @*) + func_at_file "${1#@}" -REMOVE "$archive" + ;; + *) + func_file_conv "$1" + $AR -NOLOGO -REMOVE:"$file" "$archive" || exit $? + ;; + esac + done + +elif test -n "$extract"; then + if test ! -f "$orig_archive"; then + func_error "archive not found" + fi + if test $# -gt 0; then + for member + do + case $1 in + @*) + func_at_file "${1#@}" -EXTRACT "$archive" + ;; + *) + func_file_conv "$1" + $AR -NOLOGO -EXTRACT:"$file" "$archive" || exit $? + ;; + esac + done + else + $AR -NOLOGO -LIST "$archive" | tr -d '\r' | sed -e 's/\\/\\\\/g' \ + | while read member + do + $AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $? + done + fi + +elif test -n "$quick$replace"; then + if test ! -f "$orig_archive"; then + if test -z "$create"; then + echo "$me: creating $orig_archive" + fi + orig_archive= + else + orig_archive=$archive + fi + + for member + do + case $1 in + @*) + func_file_conv "${1#@}" + set x "$@" "@$file" + ;; + *) + func_file_conv "$1" + set x "$@" "$file" + ;; + esac + shift + shift + done + + if test -n "$orig_archive"; then + $AR -NOLOGO -OUT:"$archive" "$orig_archive" "$@" || exit $? + else + $AR -NOLOGO -OUT:"$archive" "$@" || exit $? + fi + +elif test -n "$list"; then + if test ! -f "$orig_archive"; then + func_error "archive not found" + fi + $AR -NOLOGO -LIST "$archive" || exit $? +fi diff --git a/build-aux/compile b/build-aux/compile new file mode 100755 index 0000000..49b3d05 --- /dev/null +++ b/build-aux/compile @@ -0,0 +1,351 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2024-06-19.01; # UTC + +# Copyright (C) 1999-2024 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# 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, see . + +# 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. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN* | MSYS*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/* | msys/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.lo | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +GNU Automake home page: . +General help using GNU software: . +EOF + exit $? + ;; + -v | --v*) + echo "compile (GNU Automake) $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + clang-cl | *[/\\]clang-cl | clang-cl.exe | *[/\\]clang-cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/build-aux/config.guess b/build-aux/config.guess new file mode 100755 index 0000000..f6d217a --- /dev/null +++ b/build-aux/config.guess @@ -0,0 +1,1812 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2024 Free Software Foundation, Inc. + +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2024-01-01' + +# 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 +# the Free Software Foundation, either version 3 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, see . +# +# 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. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess +# +# Please send patches to . + + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system '$me' is run on. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2024 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try '$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +# Just in case it came from the environment. +GUESS= + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still +# use 'HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 + : "${TMPDIR=/tmp}" + # shellcheck disable=SC2039,SC3028 + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c89 c99 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD=$driver + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if test -f /.attbin/uname ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case $UNAME_SYSTEM in +Linux|GNU|GNU/*) + LIBC=unknown + + set_cc_for_build + cat <<-EOF > "$dummy.c" + #if defined(__ANDROID__) + LIBC=android + #else + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #elif defined(__GLIBC__) + LIBC=gnu + #elif defined(__LLVM_LIBC__) + LIBC=llvm + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif + #endif + #endif + EOF + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu + fi + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + echo unknown)` + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case $UNAME_MACHINE_ARCH in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case $UNAME_MACHINE_ARCH in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case $UNAME_VERSION in + Debian*) + release='-gnu' + ;; + *) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + GUESS=$machine-${os}${release}${abi-} + ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; + *:MidnightBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; + *:ekkoBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; + *:SolidBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; + *:OS108:*:*) + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; + macppc:MirBSD:*:*) + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; + *:MirBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; + *:Sortix:*:*) + GUESS=$UNAME_MACHINE-unknown-sortix + ;; + *:Twizzler:*:*) + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; + *:Redox:*:*) + GUESS=$UNAME_MACHINE-unknown-redox + ;; + mips:OSF1:*.*) + GUESS=mips-dec-osf1 + ;; + alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case $ALPHA_CPU_TYPE in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; + Amiga*:UNIX_System_V:4.0:*) + GUESS=m68k-unknown-sysv4 + ;; + *:[Aa]miga[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; + *:[Mm]orph[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-morphos + ;; + *:OS/390:*:*) + GUESS=i370-ibm-openedition + ;; + *:z/VM:*:*) + GUESS=s390-ibm-zvmoe + ;; + *:OS400:*:*) + GUESS=powerpc-ibm-os400 + ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + GUESS=arm-unknown-riscos + ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + GUESS=hppa1.1-hitachi-hiuxmpp + ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; + NILE*:*:*:dcosx) + GUESS=pyramid-pyramid-svr4 + ;; + DRS?6000:unix:4.0:6*) + GUESS=sparc-icl-nx6 + ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; + s390x:SunOS:*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; + sun4H:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + set_cc_for_build + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; + sun4*:SunOS:*:*) + case `/usr/bin/arch -k` in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like '4.1.3-JL'. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; + sun3*:SunOS:*:*) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 + case `/bin/arch` in + sun3) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun4) + GUESS=sparc-sun-sunos$UNAME_RELEASE + ;; + esac + ;; + aushp:SunOS:*:*) + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; + m68k:machten:*:*) + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; + powerpc:machten:*:*) + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; + RISC*:Mach:*:*) + GUESS=mips-dec-mach_bsd4.3 + ;; + RISC*:ULTRIX:*:*) + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; + VAX*:ULTRIX*:*:*) + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; + Motorola:PowerMAX_OS:*:*) + GUESS=powerpc-motorola-powermax + ;; + Motorola:*:4.3:PL8-*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:Power_UNIX:*:*) + GUESS=powerpc-harris-powerunix + ;; + m88k:CX/UX:7*:*) + GUESS=m88k-harris-cxux7 + ;; + m88k:*:4*:R4*) + GUESS=m88k-motorola-sysv4 + ;; + m88k:*:3*:R3*) + GUESS=m88k-motorola-sysv3 + ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 + then + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x + then + GUESS=m88k-dg-dgux$UNAME_RELEASE + else + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE + fi + else + GUESS=i586-dg-dgux$UNAME_RELEASE + fi + ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + GUESS=m88k-dolphin-sysv3 + ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + GUESS=m88k-motorola-sysv3 + ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + GUESS=m88k-tektronix-sysv3 + ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + GUESS=m68k-tektronix-bsd + ;; + *:IRIX*:*:*) + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + GUESS=i386-ibm-aix + ;; + ia64:AIX:*:*) + if test -x /usr/bin/oslevel ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + then + GUESS=$SYSTEM_NAME + else + GUESS=rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + GUESS=rs6000-ibm-aix3.2.4 + else + GUESS=rs6000-ibm-aix3.2 + fi + ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if test -x /usr/bin/lslpp ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; + *:AIX:*:*) + GUESS=rs6000-ibm-aix + ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + GUESS=romp-ibm-bsd4.4 + ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + GUESS=rs6000-bull-bosx + ;; + DPX/2?00:B.O.S.:*:*) + GUESS=m68k-bull-sysv3 + ;; + 9000/[34]??:4.3bsd:1.*:*) + GUESS=m68k-hp-bsd + ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + GUESS=m68k-hp-bsd4.4 + ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if test -x /usr/bin/getconf; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case $sc_cpu_version in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case $sc_kernel_bits in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if test "$HP_ARCH" = ""; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if test "$HP_ARCH" = hppa2.0w + then + set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; + 3050*:HI-UX:*:*) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=unknown-hitachi-hiuxwe2 + ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + GUESS=hppa1.1-hp-bsd + ;; + 9000/8??:4.3bsd:*:*) + GUESS=hppa1.0-hp-bsd + ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + GUESS=hppa1.0-hp-mpeix + ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + GUESS=hppa1.1-hp-osf + ;; + hp8??:OSF1:*:*) + GUESS=hppa1.0-hp-osf + ;; + i*86:OSF1:*:*) + if test -x /usr/sbin/sysversion ; then + GUESS=$UNAME_MACHINE-unknown-osf1mk + else + GUESS=$UNAME_MACHINE-unknown-osf1 + fi + ;; + parisc*:Lites*:*:*) + GUESS=hppa1.1-hp-lites + ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + GUESS=c1-convex-bsd + ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + GUESS=c34-convex-bsd + ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + GUESS=c38-convex-bsd + ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + GUESS=c4-convex-bsd + ;; + CRAY*Y-MP:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; + CRAY*[A-Z]90:*:*:*) + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; + CRAY*T3E:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; + CRAY*SV1:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; + *:UNICOS/mp:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; + sparc*:BSD/OS:*:*) + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; + *:BSD/OS:*:*) + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi + else + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf + fi + ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; + i*:CYGWIN*:*) + GUESS=$UNAME_MACHINE-pc-cygwin + ;; + *:MINGW64*:*) + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; + *:MINGW*:*) + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; + *:MSYS*:*) + GUESS=$UNAME_MACHINE-pc-msys + ;; + i*:PW*:*) + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; + *:Interix*:*) + case $UNAME_MACHINE in + x86) + GUESS=i586-pc-interix$UNAME_RELEASE + ;; + authenticamd | genuineintel | EM64T) + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; + IA64) + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; + esac ;; + i*:UWIN*:*) + GUESS=$UNAME_MACHINE-pc-uwin + ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + GUESS=x86_64-pc-cygwin + ;; + prep*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; + *:GNU:*:*) + # the GNU system + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-pc-managarm-mlibc" + ;; + *:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" + ;; + *:Minix:*:*) + GUESS=$UNAME_MACHINE-unknown-minix + ;; + aarch64:Linux:*:*) + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __ARM_EABI__ + #ifdef __ARM_PCS_VFP + ABI=eabihf + #else + ABI=eabi + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; + esac + fi + GUESS=$CPU-unknown-linux-$LIBCABI + ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arm*:Linux:*:*) + set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi + else + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf + fi + fi + ;; + avr32*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + cris:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + crisv32:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + e2k:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + frv:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + hexagon:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:Linux:*:*) + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; + ia64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + k1om:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:cos:*:*) + GUESS=$UNAME_MACHINE-unknown-cos + ;; + kvx:mbr:*:*) + GUESS=$UNAME_MACHINE-unknown-mbr + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m32r*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m68*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + mips:Linux:*:* | mips64:Linux:*:*) + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + MIPS_ENDIAN=el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + MIPS_ENDIAN= + #else + MIPS_ENDIAN= + #endif + #endif +EOF + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } + ;; + mips64el:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + openrisc*:Linux:*:*) + GUESS=or1k-unknown-linux-$LIBC + ;; + or32:Linux:*:* | or1k*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + padre:Linux:*:*) + GUESS=sparc-unknown-linux-$LIBC + ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + GUESS=hppa64-unknown-linux-$LIBC + ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; + esac + ;; + ppc64:Linux:*:*) + GUESS=powerpc64-unknown-linux-$LIBC + ;; + ppc:Linux:*:*) + GUESS=powerpc-unknown-linux-$LIBC + ;; + ppc64le:Linux:*:*) + GUESS=powerpc64le-unknown-linux-$LIBC + ;; + ppcle:Linux:*:*) + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + s390:Linux:*:* | s390x:Linux:*:*) + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; + sh64*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sh*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + tile*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + vax:Linux:*:*) + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; + x86_64:Linux:*:*) + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __i386__ + ABI=x86 + #else + #ifdef __ILP32__ + ABI=x32 + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + x86) CPU=i686 ;; + x32) LIBCABI=${LIBC}x32 ;; + esac + fi + GUESS=$CPU-pc-linux-$LIBCABI + ;; + xtensa*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + GUESS=i386-sequent-sysv4 + ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; + i*86:OS/2:*:*) + # If we were able to find 'uname', then EMX Unix compatibility + # is probably installed. + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; + i*86:XTS-300:*:STOP) + GUESS=$UNAME_MACHINE-unknown-stop + ;; + i*86:atheos:*:*) + GUESS=$UNAME_MACHINE-unknown-atheos + ;; + i*86:syllable:*:*) + GUESS=$UNAME_MACHINE-pc-syllable + ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; + i*86:*DOS:*:*) + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL + fi + ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv32 + fi + ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + GUESS=i586-pc-msdosdjgpp + ;; + Intel:Mach:3*:*) + GUESS=i386-pc-mach3 + ;; + paragon:*:*:*) + GUESS=i860-intel-osf1 + ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 + fi + ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + GUESS=m68010-convergent-sysv + ;; + mc68k:UNIX:SYSTEM5:3.51m) + GUESS=m68k-convergent-sysv + ;; + M680?0:D-NIX:5.3:*) + GUESS=m68k-diab-dnix + ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 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) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; + mc68030:UNIX_System_V:4.*:*) + GUESS=m68k-atari-sysv4 + ;; + TSUNAMI:LynxOS:2.*:*) + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; + rs6000:LynxOS:2.*:*) + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; + SM[BE]S:UNIX_SV:*:*) + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; + RM*:ReliantUNIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + RM*:SINIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + GUESS=$UNAME_MACHINE-sni-sysv4 + else + GUESS=ns32k-sni-sysv + fi + ;; + PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort + # says + GUESS=i586-unisys-sysv4 + ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + GUESS=hppa1.1-stratus-sysv4 + ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + GUESS=i860-stratus-sysv4 + ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=$UNAME_MACHINE-stratus-vos + ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=hppa1.1-stratus-vos + ;; + mc68*:A/UX:*:*) + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; + news*:NEWS-OS:6*:*) + GUESS=mips-sony-newsos6 + ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if test -d /usr/nec; then + GUESS=mips-nec-sysv$UNAME_RELEASE + else + GUESS=mips-unknown-sysv$UNAME_RELEASE + fi + ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + GUESS=powerpc-be-beos + ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + GUESS=powerpc-apple-beos + ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + GUESS=i586-pc-beos + ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + GUESS=i586-pc-haiku + ;; + ppc:Haiku:*:*) # Haiku running on Apple PowerPC + GUESS=powerpc-apple-haiku + ;; + *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) + GUESS=$UNAME_MACHINE-unknown-haiku + ;; + SX-4:SUPER-UX:*:*) + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; + SX-5:SUPER-UX:*:*) + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; + SX-6:SUPER-UX:*:*) + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; + SX-7:SUPER-UX:*:*) + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; + SX-8:SUPER-UX:*:*) + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; + SX-8R:SUPER-UX:*:*) + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; + SX-ACE:SUPER-UX:*:*) + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; + Power*:Rhapsody:*:*) + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; + *:Rhapsody:*:*) + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; + arm64:Darwin:*:*) + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build + fi + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE + fi + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; + *:QNX:*:4*) + GUESS=i386-pc-qnx + ;; + NEO-*:NONSTOP_KERNEL:*:*) + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; + NSE-*:NONSTOP_KERNEL:*:*) + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; + NSR-*:NONSTOP_KERNEL:*:*) + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; + NSV-*:NONSTOP_KERNEL:*:*) + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; + NSX-*:NONSTOP_KERNEL:*:*) + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; + *:NonStop-UX:*:*) + GUESS=mips-compaq-nonstopux + ;; + BS2000:POSIX*:*:*) + GUESS=bs2000-siemens-sysv + ;; + DS/*:UNIX_System_V:*:*) + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "${cputype-}" = 386; then + UNAME_MACHINE=i386 + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype + fi + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; + *:TOPS-10:*:*) + GUESS=pdp10-unknown-tops10 + ;; + *:TENEX:*:*) + GUESS=pdp10-unknown-tenex + ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + GUESS=pdp10-dec-tops20 + ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + GUESS=pdp10-xkl-tops20 + ;; + *:TOPS-20:*:*) + GUESS=pdp10-unknown-tops20 + ;; + *:ITS:*:*) + GUESS=pdp10-unknown-its + ;; + SEI:*:*:SEIUX) + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; + *:DragonFly:*:*) + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; + esac ;; + *:XENIX:*:SysV) + GUESS=i386-pc-xenix + ;; + i*86:skyos:*:*) + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; + i*86:rdos:*:*) + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; + x86_64:VMkernel:*:*) + GUESS=$UNAME_MACHINE-unknown-esx + ;; + amd64:Isilon\ OneFS:*:*) + GUESS=x86_64-unknown-onefs + ;; + *:Unleashed:*:*) + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; + *:Ironclad:*:*) + GUESS=$UNAME_MACHINE-unknown-ironclad + ;; +esac + +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + +# No uname command or uname output not recognized. +set_cc_for_build +cat > "$dummy.c" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + +echo "$0: unable to guess system type" >&2 + +case $UNAME_MACHINE:$UNAME_SYSTEM in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 <&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" +EOF +fi + +exit 1 + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/build-aux/config.rpath b/build-aux/config.rpath new file mode 100755 index 0000000..58870bd --- /dev/null +++ b/build-aux/config.rpath @@ -0,0 +1,751 @@ +#! /bin/sh +# Output a system dependent set of variables, describing how to set the +# run time search path of shared libraries in a binary (executable or +# shared library). +# +# Copyright 1996-2024 Free Software Foundation, Inc. +# Taken from GNU libtool, 2001 +# Originally by Gordon Matzigkeit , 1996 +# +# 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. + +# Known limitations: +# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer +# than 256 bytes, otherwise the compiler driver will dump core. The only +# known workaround is to choose shorter directory names for the build +# directory and/or the installation directory. + +# func_usage +# outputs to stdout the --help usage message. +func_usage () +{ + echo "\ +Usage: config.rpath [OPTION] HOST + +Prints shell variable assignments that describe how to hardcode a directory +for the lookup of shared libraries into a binary (executable or shared library). + +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. + +Options: + --help print this help and exit + --version print version information and exit + +Send patches and bug reports to ." +} + +# func_version +# outputs to stdout the --version message. +func_version () +{ + echo "config.rpath (GNU gnulib, module havelib)" + echo "Copyright (C) 2024 Free Software Foundation, Inc. +License: All-Permissive. +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law." + echo + printf 'Written by %s.\n' "Bruno Haible" +} + +# func_fatal_error message +# outputs to stderr a fatal error message, and terminates the program. +func_fatal_error () +{ + echo "config.rpath: *** $1" 1>&2 + echo "config.rpath: *** Stop." 1>&2 + exit 1 +} + +# Command-line option processing. +while test $# -gt 0; do + case "$1" in + --help | --hel | --he | --h ) + func_usage + exit 0 ;; + --version | --versio | --versi | --vers | --ver | --ve | --v ) + func_version + exit 0 ;; + -- ) # Stop option processing + shift; break ;; + -* ) + func_fatal_error "unrecognized option: $1" + ;; + * ) + break ;; + esac +done + +if test $# -gt 1; then + func_fatal_error "too many arguments" +fi +if test $# -lt 1; then + func_fatal_error "too few arguments" +fi + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +shrext=.so + +host="$1" +host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +# Code taken from libtool.m4's _LT_CC_BASENAME. + +for cc_temp in $CC""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` + +# Code taken from libtool.m4's _LT_COMPILER_PIC. + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix*) + wl='-Wl,' + ;; + mingw* | cygwin* | pw32* | os2* | cegcc*) + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6* | nonstopux*) + wl='-Wl,' + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + ecc*) + wl='-Wl,' + ;; + icc* | ifort*) + wl='-Wl,' + ;; + lf95*) + wl='-Wl,' + ;; + nagfor*) + wl='-Wl,-Wl,,' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + wl='-Wl,' + ;; + ccc*) + wl='-Wl,' + ;; + xl* | bgxl* | bgf* | mpixl*) + wl='-Wl,' + ;; + como) + wl='-lopt=' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ F* | *Sun*Fortran*) + wl= + ;; + *Sun\ C*) + wl='-Wl,' + ;; + esac + ;; + esac + ;; + newsos6) + ;; + *nto* | *qnx*) + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + rdos*) + ;; + solaris*) + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + wl='-Qoption ld ' + ;; + *) + wl='-Wl,' + ;; + esac + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3*) + wl='-Wl,' + ;; + sysv4*MP*) + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + wl='-Wl,' + ;; + unicos*) + wl='-Wl,' + ;; + uts4*) + ;; + esac +fi + +# Code taken from libtool.m4's _LT_LINKER_SHLIBS. + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +case "$host_os" in + cygwin* | mingw* | pw32* | cegcc*) + # 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 + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + # Unlike libtool, we use -rpath here, not --rpath, since the documented + # option of GNU ld is called -rpath, not --rpath. + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + case "$host_os" in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + fi + ;; + amigaos*) + case "$host_cpu" in + powerpc) + ;; + m68k) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + cygwin* | mingw* | pw32* | cegcc*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + haiku*) + ;; + interix[3-9]*) + hardcode_direct=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + netbsd*) + ;; + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + else + ld_shlibs=no + fi + ;; + esac + ;; + sunos4*) + hardcode_direct=yes + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = no; then + hardcode_libdir_flag_spec= + 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 + ;; + aix[4-9]*) + 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].*|aix[5-9]*) + 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 + : + else + # We have old collect2 + hardcode_direct=unsupported + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + fi + # Begin _LT_AC_SYS_LIBPATH_AIX. + echo 'int main () { return 0; }' > conftest.c + ${CC} ${LDFLAGS} conftest.c -o conftest + aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + fi + if test -z "$aix_libpath"; then + aix_libpath="/usr/lib:/lib" + fi + rm -f conftest.c conftest + # End _LT_AC_SYS_LIBPATH_AIX. + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + fi + fi + ;; + amigaos*) + case "$host_cpu" in + powerpc) + ;; + m68k) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + bsdi[45]*) + ;; + cygwin* | mingw* | pw32* | cegcc*) + # 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=no + if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then + : + else + ld_shlibs=no + fi + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + freebsd2.[01]*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd* | dragonfly* | midnightbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + hpux10*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + hpux11*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + ;; + *) + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + irix5* | irix6* | nonstopux*) + 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=: + ;; + *nto* | *qnx*) + ;; + openbsd*) + if test -f /usr/libexec/ld.so; then + 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 + else + ld_shlibs=no + 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=: + ;; + solaris*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + sunos4*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + sysv4) + case $host_vendor in + sni) + hardcode_direct=yes # is this really true??? + ;; + siemens) + hardcode_direct=no + ;; + motorola) + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + ;; + sysv4.3*) + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + ;; + sysv5* | sco3.2v5* | sco5v6*) + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. +# Unlike libtool.m4, here we don't care about _all_ names of the library, but +# only about the one the linker finds when passed -lNAME. This is the last +# element of library_names_spec in libtool.m4, or possibly two of them if the +# linker has special search rules. +library_names_spec= # the last element of library_names_spec in libtool.m4 +libname_spec='lib$name' +case "$host_os" in + aix3*) + library_names_spec='$libname.a' + ;; + aix[4-9]*) + library_names_spec='$libname$shrext' + ;; + amigaos*) + case "$host_cpu" in + powerpc*) + library_names_spec='$libname$shrext' ;; + m68k) + library_names_spec='$libname.a' ;; + esac + ;; + beos*) + library_names_spec='$libname$shrext' + ;; + bsdi[45]*) + library_names_spec='$libname$shrext' + ;; + cygwin* | mingw* | pw32* | cegcc*) + shrext=.dll + library_names_spec='$libname.dll.a $libname.lib' + ;; + darwin* | rhapsody*) + shrext=.dylib + library_names_spec='$libname$shrext' + ;; + dgux*) + library_names_spec='$libname$shrext' + ;; + freebsd[23].*) + library_names_spec='$libname$shrext$versuffix' + ;; + freebsd* | dragonfly* | midnightbsd*) + library_names_spec='$libname$shrext' + ;; + gnu*) + library_names_spec='$libname$shrext' + ;; + haiku*) + library_names_spec='$libname$shrext' + ;; + hpux9* | hpux10* | hpux11*) + case $host_cpu in + ia64*) + shrext=.so + ;; + hppa*64*) + shrext=.sl + ;; + *) + shrext=.sl + ;; + esac + library_names_spec='$libname$shrext' + ;; + interix[3-9]*) + library_names_spec='$libname$shrext' + ;; + irix5* | irix6* | nonstopux*) + library_names_spec='$libname$shrext' + case "$host_os" in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + ;; + linux*oldld* | linux*aout* | linux*coff*) + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + library_names_spec='$libname$shrext' + ;; + knetbsd*-gnu) + library_names_spec='$libname$shrext' + ;; + netbsd*) + library_names_spec='$libname$shrext' + ;; + newsos6) + library_names_spec='$libname$shrext' + ;; + *nto* | *qnx*) + library_names_spec='$libname$shrext' + ;; + openbsd*) + library_names_spec='$libname$shrext$versuffix' + ;; + os2*) + libname_spec='$name' + shrext=.dll + library_names_spec='$libname.a' + ;; + osf3* | osf4* | osf5*) + library_names_spec='$libname$shrext' + ;; + rdos*) + ;; + solaris*) + library_names_spec='$libname$shrext' + ;; + sunos4*) + library_names_spec='$libname$shrext$versuffix' + ;; + sysv4 | sysv4.3*) + library_names_spec='$libname$shrext' + ;; + sysv4*MP*) + library_names_spec='$libname$shrext' + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + library_names_spec='$libname$shrext' + ;; + tpf*) + library_names_spec='$libname$shrext' + ;; + uts4*) + library_names_spec='$libname$shrext' + ;; +esac + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` +shlibext=`echo "$shrext" | sed -e 's,^\.,,'` +escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_library_names_spec=`echo "X$library_names_spec" | 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"` + +LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. +# +# 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. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2024 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try '$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Split fields of configuration type +# shellcheck disable=SC2162 +saved_IFS=$IFS +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 + ;; + *-*-*-*) + basic_machine=$field1-$field2 + basic_os=$field3-$field4 + ;; + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two + # parts + maybe_os=$field2-$field3 + case $maybe_os in + nto-qnx* | linux-* | uclinux-uclibc* \ + | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ + | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ + | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ + | windows-* ) + basic_machine=$field1 + basic_os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + basic_os=linux-android + ;; + *) + basic_machine=$field1-$field2 + basic_os=$field3 + ;; + esac + ;; + *-*) + # A lone config we happen to match not fitting any pattern + case $field1-$field2 in + decstation-3100) + basic_machine=mips-dec + basic_os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Prevent following clause from handling this valid os + sun*os*) + basic_machine=$field1 + basic_os=$field2 + ;; + zephyr*) + basic_machine=$field1-unknown + basic_os=$field2 + ;; + # Manufacturers + dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ + | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ + | unicom* | ibm* | next | hp | isi* | apollo | altos* \ + | convergent* | ncr* | news | 32* | 3600* | 3100* \ + | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ + | ultra | tti* | harris | dolphin | highlevel | gould \ + | cbm | ns | masscomp | apple | axis | knuth | cray \ + | microblaze* | sim | cisco \ + | oki | wec | wrs | winbond) + basic_machine=$field1-$field2 + basic_os= + ;; + *) + basic_machine=$field1 + basic_os=$field2 + ;; + esac + ;; + esac + ;; + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + basic_os=bsd + ;; + a29khif) + basic_machine=a29k-amd + basic_os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + basic_os=scout + ;; + alliant) + basic_machine=fx80-alliant + basic_os= + ;; + altos | altos3068) + basic_machine=m68k-altos + basic_os= + ;; + am29k) + basic_machine=a29k-none + basic_os=bsd + ;; + amdahl) + basic_machine=580-amdahl + basic_os=sysv + ;; + amiga) + basic_machine=m68k-unknown + basic_os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + basic_os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + basic_os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + basic_os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + basic_os=bsd + ;; + aros) + basic_machine=i386-pc + basic_os=aros + ;; + aux) + basic_machine=m68k-apple + basic_os=aux + ;; + balance) + basic_machine=ns32k-sequent + basic_os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + basic_os=linux + ;; + cegcc) + basic_machine=arm-unknown + basic_os=cegcc + ;; + convex-c1) + basic_machine=c1-convex + basic_os=bsd + ;; + convex-c2) + basic_machine=c2-convex + basic_os=bsd + ;; + convex-c32) + basic_machine=c32-convex + basic_os=bsd + ;; + convex-c34) + basic_machine=c34-convex + basic_os=bsd + ;; + convex-c38) + basic_machine=c38-convex + basic_os=bsd + ;; + cray) + basic_machine=j90-cray + basic_os=unicos + ;; + crds | unos) + basic_machine=m68k-crds + basic_os= + ;; + da30) + basic_machine=m68k-da30 + basic_os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + basic_os= + ;; + delta88) + basic_machine=m88k-motorola + basic_os=sysv3 + ;; + dicos) + basic_machine=i686-pc + basic_os=dicos + ;; + djgpp) + basic_machine=i586-pc + basic_os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + basic_os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + basic_os=ose + ;; + gmicro) + basic_machine=tron-gmicro + basic_os=sysv + ;; + go32) + basic_machine=i386-pc + basic_os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + basic_os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + basic_os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + basic_os=hms + ;; + harris) + basic_machine=m88k-harris + basic_os=sysv3 + ;; + hp300 | hp300hpux) + basic_machine=m68k-hp + basic_os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp + basic_os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp + basic_os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + basic_os=proelf + ;; + i386mach) + basic_machine=i386-mach + basic_os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi + basic_os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + basic_os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + basic_os=sysv + ;; + merlin) + basic_machine=ns32k-utek + basic_os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + basic_os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + basic_os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + basic_os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + basic_os=coff + ;; + morphos) + basic_machine=powerpc-unknown + basic_os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + basic_os=moxiebox + ;; + msdos) + basic_machine=i386-pc + basic_os=msdos + ;; + msys) + basic_machine=i686-pc + basic_os=msys + ;; + mvs) + basic_machine=i370-ibm + basic_os=mvs + ;; + nacl) + basic_machine=le32-unknown + basic_os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + basic_os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + basic_os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + basic_os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + basic_os=newsos + ;; + news1000) + basic_machine=m68030-sony + basic_os=newsos + ;; + necv70) + basic_machine=v70-nec + basic_os=sysv + ;; + nh3000) + basic_machine=m68k-harris + basic_os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + basic_os=cxux + ;; + nindy960) + basic_machine=i960-intel + basic_os=nindy + ;; + mon960) + basic_machine=i960-intel + basic_os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + basic_os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + basic_os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + basic_os=ose + ;; + os68k) + basic_machine=m68k-none + basic_os=os68k + ;; + paragon) + basic_machine=i860-intel + basic_os=osf + ;; + parisc) + basic_machine=hppa-unknown + basic_os=linux + ;; + psp) + basic_machine=mipsallegrexel-sony + basic_os=psp + ;; + pw32) + basic_machine=i586-unknown + basic_os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + basic_os=rdos + ;; + rdos32) + basic_machine=i386-pc + basic_os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + basic_os=coff + ;; + sa29200) + basic_machine=a29k-amd + basic_os=udi + ;; + sei) + basic_machine=mips-sei + basic_os=seiux + ;; + sequent) + basic_machine=i386-sequent + basic_os= + ;; + sps7) + basic_machine=m68k-bull + basic_os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + basic_os= + ;; + stratus) + basic_machine=i860-stratus + basic_os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + basic_os= + ;; + sun2os3) + basic_machine=m68000-sun + basic_os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + basic_os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + basic_os= + ;; + sun3os3) + basic_machine=m68k-sun + basic_os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + basic_os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + basic_os= + ;; + sun4os3) + basic_machine=sparc-sun + basic_os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + basic_os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + basic_os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + basic_os= + ;; + sv1) + basic_machine=sv1-cray + basic_os=unicos + ;; + symmetry) + basic_machine=i386-sequent + basic_os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + basic_os=unicos + ;; + t90) + basic_machine=t90-cray + basic_os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + basic_os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + basic_os=tpf + ;; + udi29k) + basic_machine=a29k-amd + basic_os=udi + ;; + ultra3) + basic_machine=a29k-nyu + basic_os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + basic_os=none + ;; + vaxv) + basic_machine=vax-dec + basic_os=sysv + ;; + vms) + basic_machine=vax-dec + basic_os=vms + ;; + vsta) + basic_machine=i386-pc + basic_os=vsta + ;; + vxworks960) + basic_machine=i960-wrs + basic_os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + basic_os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + basic_os=vxworks + ;; + xbox) + basic_machine=i686-pc + basic_os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + basic_os=unicos + ;; + *) + basic_machine=$1 + basic_os= + ;; + esac + ;; +esac + +# Decode 1-component or ad-hoc basic machines +case $basic_machine in + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond + ;; + op50n) + cpu=hppa1.1 + vendor=oki + ;; + op60c) + cpu=hppa1.1 + vendor=oki + ;; + ibm*) + cpu=i370 + vendor=ibm + ;; + orion105) + cpu=clipper + vendor=highlevel + ;; + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple + ;; + pmac | pmac-mpw) + cpu=powerpc + vendor=apple + ;; + + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + cpu=m68000 + vendor=att + ;; + 3b*) + cpu=we32k + vendor=att + ;; + bluegene*) + cpu=powerpc + vendor=ibm + basic_os=cnk + ;; + decsystem10* | dec10*) + cpu=pdp10 + vendor=dec + basic_os=tops10 + ;; + decsystem20* | dec20*) + cpu=pdp10 + vendor=dec + basic_os=tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + cpu=m68k + vendor=motorola + ;; + dpx2*) + cpu=m68k + vendor=bull + basic_os=sysv3 + ;; + encore | umax | mmax) + cpu=ns32k + vendor=encore + ;; + elxsi) + cpu=elxsi + vendor=elxsi + basic_os=${basic_os:-bsd} + ;; + fx2800) + cpu=i860 + vendor=alliant + ;; + genix) + cpu=ns32k + vendor=ns + ;; + h3050r* | hiux*) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + cpu=m68000 + vendor=hp + ;; + hp9k3[2-9][0-9]) + cpu=m68k + vendor=hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + i*86v32) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv32 + ;; + i*86v4*) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv4 + ;; + i*86v) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv + ;; + i*86sol2) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=solaris2 + ;; + j90 | j90-cray) + cpu=j90 + vendor=cray + basic_os=${basic_os:-unicos} + ;; + iris | iris4d) + cpu=mips + vendor=sgi + case $basic_os in + irix*) + ;; + *) + basic_os=irix4 + ;; + esac + ;; + miniframe) + cpu=m68000 + vendor=convergent + ;; + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + basic_os=mint + ;; + news-3600 | risc-news) + cpu=mips + vendor=sony + basic_os=newsos + ;; + next | m*-next) + cpu=m68k + vendor=next + case $basic_os in + openstep*) + ;; + nextstep*) + ;; + ns2*) + basic_os=nextstep2 + ;; + *) + basic_os=nextstep3 + ;; + esac + ;; + np1) + cpu=np1 + vendor=gould + ;; + op50n-* | op60c-*) + cpu=hppa1.1 + vendor=oki + basic_os=proelf + ;; + pa-hitachi) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + pbd) + cpu=sparc + vendor=tti + ;; + pbb) + cpu=m68k + vendor=tti + ;; + pc532) + cpu=ns32k + vendor=pc532 + ;; + pn) + cpu=pn + vendor=gould + ;; + power) + cpu=power + vendor=ibm + ;; + ps2) + cpu=i386 + vendor=ibm + ;; + rm[46]00) + cpu=mips + vendor=siemens + ;; + rtpc | rtpc-*) + cpu=romp + vendor=ibm + ;; + sde) + cpu=mipsisa32 + vendor=sde + basic_os=${basic_os:-elf} + ;; + simso-wrs) + cpu=sparclite + vendor=wrs + basic_os=vxworks + ;; + tower | tower-32) + cpu=m68k + vendor=ncr + ;; + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu + ;; + w65) + cpu=w65 + vendor=wdc + ;; + w89k-*) + cpu=hppa1.1 + vendor=winbond + basic_os=proelf + ;; + none) + cpu=none + vendor=none + ;; + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine + ;; + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` + ;; + + *-*) + # shellcheck disable=SC2162 + saved_IFS=$IFS + IFS="-" read cpu vendor <&2 + exit 1 + ;; + esac + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $vendor in + digital*) + vendor=dec + ;; + commodore*) + vendor=cbm + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if test x"$basic_os" != x +then + +# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just +# set os. +obj= +case $basic_os in + gnu/linux*) + kernel=linux + os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` + ;; + os2-emx) + kernel=os2 + os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` + ;; + nto-qnx*) + kernel=nto + os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` + ;; + *-*) + # shellcheck disable=SC2162 + saved_IFS=$IFS + IFS="-" read kernel os <&2 + fi + ;; + *) + echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 + exit 1 + ;; +esac + +case $obj in + aout* | coff* | elf* | pe*) + ;; + '') + # empty is fine + ;; + *) + echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 + exit 1 + ;; +esac + +# Here we handle the constraint that a (synthetic) cpu and os are +# valid only in combination with each other and nowhere else. +case $cpu-$os in + # The "javascript-unknown-ghcjs" triple is used by GHC; we + # accept it here in order to tolerate that, but reject any + # variations. + javascript-ghcjs) + ;; + javascript-* | *-ghcjs) + echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 + exit 1 + ;; +esac + +# As a final step for OS-related things, validate the OS-kernel combination +# (given a valid OS), if there is a kernel. +case $kernel-$os-$obj in + linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ + | linux-mlibc*- | linux-musl*- | linux-newlib*- \ + | linux-relibc*- | linux-uclibc*- ) + ;; + uclinux-uclibc*- ) + ;; + managarm-mlibc*- | managarm-kernel*- ) + ;; + windows*-msvc*-) + ;; + -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ + | -uclibc*- ) + # These are just libc implementations, not actual OSes, and thus + # require a kernel. + echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 + exit 1 + ;; + -kernel*- ) + echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 + exit 1 + ;; + *-kernel*- ) + echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 + exit 1 + ;; + *-msvc*- ) + echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 + exit 1 + ;; + kfreebsd*-gnu*- | kopensolaris*-gnu*-) + ;; + vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) + ;; + nto-qnx*-) + ;; + os2-emx-) + ;; + *-eabi*- | *-gnueabi*-) + ;; + none--*) + # None (no kernel, i.e. freestanding / bare metal), + # can be paired with an machine code file format + ;; + -*-) + # Blank kernel with real OS is always fine. + ;; + --*) + # Blank kernel and OS with real machine code file format is always fine. + ;; + *-*-*) + echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 + exit 1 + ;; +esac + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +case $vendor in + unknown) + case $cpu-$os in + *-riscix*) + vendor=acorn + ;; + *-sunos*) + vendor=sun + ;; + *-cnk* | *-aix*) + vendor=ibm + ;; + *-beos*) + vendor=be + ;; + *-hpux*) + vendor=hp + ;; + *-mpeix*) + vendor=hp + ;; + *-hiux*) + vendor=hitachi + ;; + *-unos*) + vendor=crds + ;; + *-dgux*) + vendor=dg + ;; + *-luna*) + vendor=omron + ;; + *-genix*) + vendor=ns + ;; + *-clix*) + vendor=intergraph + ;; + *-mvs* | *-opened*) + vendor=ibm + ;; + *-os400*) + vendor=ibm + ;; + s390-* | s390x-*) + vendor=ibm + ;; + *-ptx*) + vendor=sequent + ;; + *-tpf*) + vendor=ibm + ;; + *-vxsim* | *-vxworks* | *-windiss*) + vendor=wrs + ;; + *-aux*) + vendor=apple + ;; + *-hms*) + vendor=hitachi + ;; + *-mpw* | *-macos*) + vendor=apple + ;; + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) + vendor=atari + ;; + *-vos*) + vendor=stratus + ;; + esac + ;; +esac + +echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" +exit + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/build-aux/depcomp b/build-aux/depcomp new file mode 100755 index 0000000..1f0aa97 --- /dev/null +++ b/build-aux/depcomp @@ -0,0 +1,792 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2024-06-19.01; # UTC + +# Copyright (C) 1999-2024 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, see . + +# 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. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +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 outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +GNU Automake home page: . +General help using GNU software: . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp (GNU Automake) $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +alpha=${upper}${lower} + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +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" + +# Avoid interference from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsolete pre-3.x GCC compilers. +## but also to in-use compilers like IBM xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The second -e expression handles DOS-style file names with drive + # letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +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. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + 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 \'. + # 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" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies 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$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/build-aux/gitlog-to-changelog b/build-aux/gitlog-to-changelog new file mode 100755 index 0000000..49e7ef9 --- /dev/null +++ b/build-aux/gitlog-to-changelog @@ -0,0 +1,516 @@ +#!/bin/sh +#! -*-perl-*- + +# Convert git log output to ChangeLog format. + +# Copyright (C) 2008-2024 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 3 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, see . +# +# Written by Jim Meyering + +# This is a prologue that allows running a perl script as an executable +# on systems that are compliant to a POSIX version before POSIX:2017. +# On such systems, the usual invocation of an executable through execlp() +# or execvp() fails with ENOEXEC if it is a script that does not start +# with a #! line. The script interpreter mentioned in the #! line has +# to be /bin/sh, because on GuixSD systems that is the only program that +# has a fixed file name. The second line is essential for perl and is +# also useful for editing this file in Emacs. The next two lines below +# are valid code in both sh and perl. When executed by sh, they re-execute +# the script through the perl program found in $PATH. The '-x' option +# is essential as well; without it, perl would re-execute the script +# through /bin/sh. When executed by perl, the next two lines are a no-op. +eval 'exec perl -wSx "$0" "$@"' + if 0; + +my $VERSION = '2023-06-24 21:59'; # UTC +# The definition above must lie within the first 8 lines in order +# for the Emacs time-stamp write hook (at end) to update it. +# If you change this file with Emacs, please let the write hook +# do its job. Otherwise, update this string manually. + +use strict; +use warnings; +use Getopt::Long; +use POSIX qw(strftime); + +(my $ME = $0) =~ s|.*/||; + +# use File::Coda; # https://meyering.net/code/Coda/ +END { + defined fileno STDOUT or return; + close STDOUT and return; + warn "$ME: failed to close standard output: $!\n"; + $? ||= 1; +} + +sub usage ($) +{ + my ($exit_code) = @_; + my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR); + if ($exit_code != 0) + { + print $STREAM "Try '$ME --help' for more information.\n"; + } + else + { + print $STREAM < ChangeLog + $ME -- -n 5 foo > last-5-commits-to-branch-foo + +SPECIAL SYNTAX: + +The following types of strings are interpreted specially when they appear +at the beginning of a log message line. They are not copied to the output. + + Copyright-paperwork-exempt: Yes + Append the "(tiny change)" notation to the usual "date name email" + ChangeLog header to mark a change that does not require a copyright + assignment. + Co-authored-by: Joe User + List the specified name and email address on a second + ChangeLog header, denoting a co-author. + Signed-off-by: Joe User + These lines are simply elided. + +In a FILE specified via --amend, comment lines (starting with "#") are ignored. +FILE must consist of pairs where SHA is a 40-byte SHA1 (alone on +a line) referring to a commit in the current project, and CODE refers to one +or more consecutive lines of Perl code. Pairs must be separated by one or +more blank line. + +Here is sample input for use with --amend=FILE, from coreutils: + +3a169f4c5d9159283548178668d2fae6fced3030 +# fix typo in title: +s/all tile types/all file types/ + +1379ed974f1fa39b12e2ffab18b3f7a607082202 +# Due to a bug in vc-dwim, I mis-attributed a patch by Paul to myself. +# Change the author to be Paul. Note the escaped "@": +s,Jim .*>,Paul Eggert , + +EOF + } + exit $exit_code; +} + +# If the string $S is a well-behaved file name, simply return it. +# If it contains white space, quotes, etc., quote it, and return the new string. +sub shell_quote($) +{ + my ($s) = @_; + if ($s =~ m![^\w+/.,-]!) + { + # Convert each single quote to '\'' + $s =~ s/\'/\'\\\'\'/g; + # Then single quote the string. + $s = "'$s'"; + } + return $s; +} + +sub quoted_cmd(@) +{ + return join (' ', map {shell_quote $_} @_); +} + +# Parse file F. +# Comment lines (starting with "#") are ignored. +# F must consist of pairs where SHA is a 40-byte SHA1 +# (alone on a line) referring to a commit in the current project, and +# CODE refers to one or more consecutive lines of Perl code. +# Pairs must be separated by one or more blank line. +sub parse_amend_file($) +{ + my ($f) = @_; + + open F, '<', $f + or die "$ME: $f: failed to open for reading: $!\n"; + + my $fail; + my $h = {}; + my $in_code = 0; + my $sha; + while (defined (my $line = )) + { + $line =~ /^\#/ + and next; + chomp $line; + $line eq '' + and $in_code = 0, next; + + if (!$in_code) + { + $line =~ /^([[:xdigit:]]{40})$/ + or (warn "$ME: $f:$.: invalid line; expected an SHA1\n"), + $fail = 1, next; + $sha = lc $1; + $in_code = 1; + exists $h->{$sha} + and (warn "$ME: $f:$.: duplicate SHA1\n"), + $fail = 1, next; + } + else + { + $h->{$sha} ||= ''; + $h->{$sha} .= "$line\n"; + } + } + close F; + + $fail + and exit 1; + + return $h; +} + +# git_dir_option $SRCDIR +# +# From $SRCDIR, the --git-dir option to pass to git (none if $SRCDIR +# is undef). Return as a list (0 or 1 element). +sub git_dir_option($) +{ + my ($srcdir) = @_; + my @res = (); + if (defined $srcdir) + { + my $qdir = shell_quote $srcdir; + my $cmd = "cd $qdir && git rev-parse --show-toplevel"; + my $qcmd = shell_quote $cmd; + my $git_dir = qx($cmd); + defined $git_dir + or die "$ME: cannot run $qcmd: $!\n"; + $? == 0 + or die "$ME: $qcmd had unexpected exit code or signal ($?)\n"; + chomp $git_dir; + push @res, "--git-dir=$git_dir/.git"; + } + @res; +} + +{ + my $since_date; + my $until_date; + my $format_string = '%s%n%b%n'; + my $amend_file; + my $append_dot = 0; + my $cluster = 1; + my $ignore_matching; + my $ignore_line; + my $strip_tab = 0; + my $strip_cherry_pick = 0; + my $srcdir; + GetOptions + ( + help => sub { usage 0 }, + version => sub { print "$ME version $VERSION\n"; exit }, + 'since=s' => \$since_date, + 'until=s' => \$until_date, + 'format=s' => \$format_string, + 'amend=s' => \$amend_file, + 'append-dot' => \$append_dot, + 'cluster!' => \$cluster, + 'ignore-matching=s' => \$ignore_matching, + 'ignore-line=s' => \$ignore_line, + 'strip-tab' => \$strip_tab, + 'strip-cherry-pick' => \$strip_cherry_pick, + 'srcdir=s' => \$srcdir, + ) or usage 1; + + defined $since_date + and unshift @ARGV, "--since=$since_date"; + defined $until_date + and unshift @ARGV, "--until=$until_date"; + + # This is a hash that maps an SHA1 to perl code (i.e., s/old/new/) + # that makes a correction in the log or attribution of that commit. + my $amend_code = defined $amend_file ? parse_amend_file $amend_file : {}; + + my @cmd = ('git', + git_dir_option $srcdir, + qw(log --log-size), + '--pretty=format:%H:%ct %an <%ae>%n%n'.$format_string, @ARGV); + open PIPE, '-|', @cmd + or die ("$ME: failed to run '". quoted_cmd (@cmd) ."': $!\n" + . "(Is your Git too old? Version 1.5.1 or later is required.)\n"); + + my $prev_multi_paragraph; + my $prev_date_line = ''; + my @prev_coauthors = (); + my @skipshas = (); + while (1) + { + defined (my $in = ) + or last; + $in =~ /^log size (\d+)$/ + or die "$ME:$.: Invalid line (expected log size):\n$in"; + my $log_nbytes = $1; + + my $log; + my $n_read = read PIPE, $log, $log_nbytes; + $n_read == $log_nbytes + or die "$ME:$.: unexpected EOF\n"; + + # Extract leading hash. + my ($sha, $rest) = split ':', $log, 2; + defined $sha + or die "$ME:$.: malformed log entry\n"; + $sha =~ /^[[:xdigit:]]{40}$/ + or die "$ME:$.: invalid SHA1: $sha\n"; + + my $skipflag = 0; + if (@skipshas) + { + foreach(@skipshas) + { + if ($sha =~ /^$_/) + { + $skipflag = $_; + last; + } + } + } + + # If this commit's log requires any transformation, do it now. + my $code = $amend_code->{$sha}; + if (defined $code) + { + eval 'use Safe'; + my $s = new Safe; + # Put the unpreprocessed entry into "$_". + $_ = $rest; + + # Let $code operate on it, safely. + my $r = $s->reval("$code") + or die "$ME:$.:$sha: failed to eval \"$code\":\n$@\n"; + + # Note that we've used this entry. + delete $amend_code->{$sha}; + + # Update $rest upon success. + $rest = $_; + } + + # Remove lines inserted by "git cherry-pick". + if ($strip_cherry_pick) + { + $rest =~ s/^\s*Conflicts:\n.*//sm; + $rest =~ s/^\s*\(cherry picked from commit [\da-f]+\)\n//m; + } + + my @line = split /[ \t]*\n/, $rest; + my $author_line = shift @line; + defined $author_line + or die "$ME:$.: unexpected EOF\n"; + $author_line =~ /^(\d+) (.*>)$/ + or die "$ME:$.: Invalid line " + . "(expected date/author/email):\n$author_line\n"; + + # Format 'Copyright-paperwork-exempt: Yes' as a standard ChangeLog + # '(tiny change)' annotation. + my $tiny = (grep (/^(?:Copyright-paperwork-exempt|Tiny-change):\s+[Yy]es$/, @line) + ? ' (tiny change)' : ''); + + my $date_line = sprintf "%s %s$tiny\n", + strftime ("%Y-%m-%d", localtime ($1)), $2; + + my @coauthors = grep /^Co-authored-by:.*$/, @line; + # Omit meta-data lines we've already interpreted. + @line = grep !/^(?:Signed-off-by:[ ].*>$ + |Co-authored-by:[ ] + |Copyright-paperwork-exempt:[ ] + |Tiny-change:[ ] + )/x, @line; + + # Remove leading and trailing blank lines. + if (@line) + { + while ($line[0] =~ /^\s*$/) { shift @line; } + while ($line[$#line] =~ /^\s*$/) { pop @line; } + } + + # Handle Emacs gitmerge.el "skipped" commits. + # Yes, this should be controlled by an option. So sue me. + if ( grep /^(; )?Merge from /, @line ) + { + my $found = 0; + foreach (@line) + { + if (grep /^The following commit.*skipped:$/, $_) + { + $found = 1; + ## Reset at each merge to reduce chance of false matches. + @skipshas = (); + next; + } + if ($found && $_ =~ /^([[:xdigit:]]{7,}) [^ ]/) + { + push ( @skipshas, $1 ); + } + } + } + + # Ignore commits that match the --ignore-matching pattern, if specified. + if (defined $ignore_matching && @line && $line[0] =~ /$ignore_matching/) + { + $skipflag = 1; + } + elsif ($skipflag) + { + ## Perhaps only warn if a pattern matches more than once? + warn "$ME: warning: skipping $sha due to $skipflag\n"; + } + + if (! $skipflag) + { + if (defined $ignore_line && @line) + { + @line = grep ! /$ignore_line/, @line; + while ($line[$#line] =~ /^\s*$/) { pop @line; } + } + + # Record whether there are two or more paragraphs. + my $multi_paragraph = grep /^\s*$/, @line; + + # Format 'Co-authored-by: A U Thor ' lines in + # standard multi-author ChangeLog format. + for (@coauthors) + { + s/^Co-authored-by:\s*/\t /; + s/\s*/ + or warn "$ME: warning: missing email address for " + . substr ($_, 5) . "\n"; + } + + # If clustering of commit messages has been disabled, if this header + # would be different from the previous date/name/etc. header, + # or if this or the previous entry consists of two or more paragraphs, + # then print the header. + if ( ! $cluster + || $date_line ne $prev_date_line + || "@coauthors" ne "@prev_coauthors" + || $multi_paragraph + || $prev_multi_paragraph) + { + $prev_date_line eq '' + or print "\n"; + print $date_line; + @coauthors + and print join ("\n", @coauthors), "\n"; + } + $prev_date_line = $date_line; + @prev_coauthors = @coauthors; + $prev_multi_paragraph = $multi_paragraph; + + # If there were any lines + if (@line == 0) + { + warn "$ME: warning: empty commit message:\n" + . " commit $sha\n $date_line\n"; + } + else + { + if ($append_dot) + { + # If the first line of the message has enough room, then + if (length $line[0] < 72) + { + # append a dot if there is no other punctuation or blank + # at the end. + $line[0] =~ /[[:punct:]\s]$/ + or $line[0] .= '.'; + } + } + + # Remove one additional leading TAB from each line. + $strip_tab + and map { s/^\t// } @line; + + # Prefix each non-empty line with a TAB. + @line = map { length $_ ? "\t$_" : '' } @line; + + print "\n", join ("\n", @line), "\n"; + } + } + + defined ($in = ) + or last; + $in ne "\n" + and die "$ME:$.: unexpected line:\n$in"; + } + + close PIPE + or die "$ME: error closing pipe from " . quoted_cmd (@cmd) . "\n"; + # FIXME-someday: include $PROCESS_STATUS in the diagnostic + + # Complain about any unused entry in the --amend=F specified file. + my $fail = 0; + foreach my $sha (sort keys %$amend_code) + { + warn "$ME:$amend_file: unused entry: $sha\n"; + $fail = 1; + } + + exit $fail; +} + +# Local Variables: +# mode: perl +# indent-tabs-mode: nil +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-line-limit: 50 +# time-stamp-start: "my $VERSION = '" +# time-stamp-format: "%:y-%02m-%02d %02H:%02M" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "'; # UTC" +# End: diff --git a/build-aux/gnupload b/build-aux/gnupload new file mode 100755 index 0000000..298a676 --- /dev/null +++ b/build-aux/gnupload @@ -0,0 +1,480 @@ +#!/bin/sh +# Sign files and upload them. + +scriptversion=2022-01-27.18; # UTC + +# Copyright (C) 2004-2024 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, see . + +# Originally written by Alexandre Duret-Lutz . +# The master copy of this file is maintained in the gnulib Git repository. +# Please send bug reports and feature requests to bug-gnulib@gnu.org. + +set -e + +GPG=gpg +# Choose the proper version of gpg, so as to avoid a +# "gpg-agent is not available in this session" error +# when gpg-agent is version 2 but gpg is still version 1. +# FIXME-2020: remove, once all major distros ship gpg version 2 as /usr/bin/gpg +gpg_agent_version=`(gpg-agent --version) 2>/dev/null | sed -e '2,$d' -e 's/^[^0-9]*//'` +case "$gpg_agent_version" in + 2.*) + gpg_version=`(gpg --version) 2>/dev/null | sed -e '2,$d' -e 's/^[^0-9]*//'` + case "$gpg_version" in + 1.*) + if (type gpg2) >/dev/null 2>/dev/null; then + # gpg2 is present. + GPG=gpg2 + else + # gpg2 is missing. Ubuntu users should install the package 'gnupg2'. + echo "WARNING: Using 'gpg', which is too old. You should install 'gpg2'." 1>&2 + fi + ;; + esac + ;; +esac + +GPG="${GPG} --batch --no-tty" +conffile=.gnuploadrc +to= +dry_run=false +replace= +symlink_files= +delete_files= +delete_symlinks= +collect_var= +dbg= +nl=' +' + +usage="Usage: $0 [OPTION]... [CMD] FILE... [[CMD] FILE...] + +Sign all FILES, and process them at the destinations specified with --to. +If CMD is not given, it defaults to uploading. See examples below. + +Commands: + --delete delete FILES from destination + --symlink create symbolic links + --rmsymlink remove symbolic links + -- treat the remaining arguments as files to upload + +Options: + --to DEST specify a destination DEST for FILES + (multiple --to options are allowed) + --user NAME sign with key NAME + --replace allow replacements of existing files + --symlink-regex[=EXPR] use sed script EXPR to compute symbolic link names + -n, --dry-run do nothing, show what would have been done + (including the constructed directive file) + --version output version information and exit + -h, --help print this help text and exit + +If --symlink-regex is given without EXPR, then the link target name +is created by replacing the version information with '-latest', e.g.: + foo-1.3.4.tar.gz -> foo-latest.tar.gz + +Recognized destinations are: + alpha.gnu.org:DIRECTORY + savannah.gnu.org:DIRECTORY + savannah.nongnu.org:DIRECTORY + ftp.gnu.org:DIRECTORY + build directive files and upload files by FTP + download.gnu.org.ua:{alpha|ftp}/DIRECTORY + build directive files and upload files by SFTP + [user@]host:DIRECTORY upload files with scp + +Options and commands are applied in order. If the file $conffile exists +in the current working directory, its contents are prepended to the +actual command line options. Use this to keep your defaults. Comments +(#) and empty lines in $conffile are allowed. + + +gives some further background. + +Examples: +1. Upload foobar-1.0.tar.gz to ftp.gnu.org: + gnupload --to ftp.gnu.org:foobar foobar-1.0.tar.gz + +2. Upload foobar-1.0.tar.gz and foobar-1.0.tar.xz to ftp.gnu.org: + gnupload --to ftp.gnu.org:foobar foobar-1.0.tar.gz foobar-1.0.tar.xz + +3. Same as above, and also create symbolic links to foobar-latest.tar.*: + gnupload --to ftp.gnu.org:foobar \\ + --symlink-regex \\ + foobar-1.0.tar.gz foobar-1.0.tar.xz + +4. Create a symbolic link foobar-latest.tar.gz -> foobar-1.0.tar.gz + and likewise for the corresponding .sig file: + gnupload --to ftp.gnu.org:foobar \\ + --symlink foobar-1.0.tar.gz foobar-latest.tar.gz \\ + foobar-1.0.tar.gz.sig foobar-latest.tar.gz.sig + or (equivalent): + gnupload --to ftp.gnu.org:foobar \\ + --symlink foobar-1.0.tar.gz foobar-latest.tar.gz \\ + --symlink foobar-1.0.tar.gz.sig foobar-latest.tar.gz.sig + +5. Upload foobar-0.9.90.tar.gz to two sites: + gnupload --to alpha.gnu.org:foobar \\ + --to sources.redhat.com:~ftp/pub/foobar \\ + foobar-0.9.90.tar.gz + +6. Delete oopsbar-0.9.91.tar.gz and upload foobar-0.9.91.tar.gz + (the -- terminates the list of files to delete): + gnupload --to alpha.gnu.org:foobar \\ + --to sources.redhat.com:~ftp/pub/foobar \\ + --delete oopsbar-0.9.91.tar.gz \\ + -- foobar-0.9.91.tar.gz + +gnupload executes a program ncftpput to do the transfers; if you don't +happen to have an ncftp package installed, the ncftpput-ftp script in +the build-aux/ directory of the gnulib package +(https://savannah.gnu.org/projects/gnulib) may serve as a replacement. + +Send patches and bug reports to ." + +copyright_year=`echo "$scriptversion" | sed -e 's/[^0-9].*//'` +copyright="Copyright (C) ${copyright_year} Free Software Foundation, Inc. +License GPLv2+: GNU GPL version 2 or later . +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law." + +# Read local configuration file +if test -r "$conffile"; then + echo "$0: Reading configuration file $conffile" + conf=`sed 's/#.*$//;/^$/d' "$conffile" | tr "\015$nl" ' '` + eval set x "$conf \"\$@\"" + shift +fi + +while test -n "$1"; do + case $1 in + -*) + collect_var= + case $1 in + -h | --help) + echo "$usage" + exit $? + ;; + --to) + if test -z "$2"; then + echo "$0: Missing argument for --to" 1>&2 + exit 1 + elif echo "$2" | grep 'ftp-upload\.gnu\.org' >/dev/null; then + echo "$0: Use ftp.gnu.org:PKGNAME or alpha.gnu.org:PKGNAME" >&2 + echo "$0: for the destination, not ftp-upload.gnu.org (which" >&2 + echo "$0: is used for direct ftp uploads, not with gnupload)." >&2 + echo "$0: See --help and its examples if need be." >&2 + exit 1 + else + to="$to $2" + shift + fi + ;; + --user) + if test -z "$2"; then + echo "$0: Missing argument for --user" 1>&2 + exit 1 + else + GPG="$GPG --local-user $2" + shift + fi + ;; + --delete) + collect_var=delete_files + ;; + --replace) + replace="replace: true" + ;; + --rmsymlink) + collect_var=delete_symlinks + ;; + --symlink-regex=*) + symlink_expr=`expr "$1" : '[^=]*=\(.*\)'` + ;; + --symlink-regex) + symlink_expr='s|-[0-9][0-9\.]*\(-[0-9][0-9]*\)\{0,1\}\.|-latest.|' + ;; + --symlink) + collect_var=symlink_files + ;; + -n | --dry-run) + dry_run=: + ;; + --version) + echo "gnupload $scriptversion" + echo "$copyright" + exit 0 + ;; + --) + shift + break + ;; + -*) + echo "$0: Unknown option '$1', try '$0 --help'" 1>&2 + exit 1 + ;; + esac + ;; + *) + if test -z "$collect_var"; then + break + else + eval "$collect_var=\"\$$collect_var $1\"" + fi + ;; + esac + shift +done + +dprint() +{ + echo "Running $* ..." +} + +if $dry_run; then + dbg=dprint +fi + +if test -z "$to"; then + echo "$0: Missing destination sites" >&2 + exit 1 +fi + +if test -n "$symlink_files"; then + x=`echo "$symlink_files" | sed 's/[^ ]//g;s/ //g'` + if test -n "$x"; then + echo "$0: Odd number of symlink arguments" >&2 + exit 1 + fi +fi + +if test $# = 0; then + if test -z "${symlink_files}${delete_files}${delete_symlinks}"; then + echo "$0: No file to upload" 1>&2 + exit 1 + fi +else + # Make sure all files exist. We don't want to ask + # for the passphrase if the script will fail. + for file + do + if test ! -f $file; then + echo "$0: Cannot find '$file'" 1>&2 + exit 1 + elif test -n "$symlink_expr"; then + linkname=`echo $file | sed "$symlink_expr"` + if test -z "$linkname"; then + echo "$0: symlink expression produces empty results" >&2 + exit 1 + elif test "$linkname" = $file; then + echo "$0: symlink expression does not alter file name" >&2 + exit 1 + fi + fi + done +fi + +# Make sure passphrase is not exported in the environment. +unset passphrase +unset passphrase_fd_0 +GNUPGHOME=${GNUPGHOME:-$HOME/.gnupg} + +# Reset PATH to be sure that echo is a built-in. We will later use +# 'echo $passphrase' to output the passphrase, so it is important that +# it is a built-in (third-party programs tend to appear in 'ps' +# listings with their arguments...). +# Remember this script runs with 'set -e', so if echo is not built-in +# it will exit now. +if $dry_run || grep -q "^use-agent" $GNUPGHOME/gpg.conf; then :; else + PATH=/empty echo -n "Enter GPG passphrase: " + stty -echo + read -r passphrase + stty echo + echo + passphrase_fd_0="--passphrase-fd 0" +fi + +if test $# -ne 0; then + for file + do + echo "Signing $file ..." + rm -f $file.sig + echo "$passphrase" | $dbg $GPG $passphrase_fd_0 -ba -o $file.sig $file + done +fi + + +# mkdirective DESTDIR BASE FILE STMT +# Arguments: See upload, below +mkdirective () +{ + stmt="$4" + if test -n "$3"; then + stmt=" +filename: $3$stmt" + fi + + cat >${2}.directive<&2 + fi + $dbg ncftpput savannah.gnu.org /incoming/savannah/$destdir $files + ;; + savannah.nongnu.org:*) + if test -z "$files"; then + echo "$0: warning: standalone directives not applicable for $dest" >&2 + fi + $dbg ncftpput savannah.nongnu.org /incoming/savannah/$destdir $files + ;; + download.gnu.org.ua:alpha/*|download.gnu.org.ua:ftp/*) + destdir_p1=`echo "$destdir" | sed 's,^[^/]*/,,'` + destdir_topdir=`echo "$destdir" | sed 's,/.*,,'` + mkdirective "$destdir_p1" "$base" "$file" "$stmt" + echo "$passphrase" | $dbg $GPG $passphrase_fd_0 --clearsign $base.directive + for f in $files $base.directive.asc + do + echo put $f + done | $dbg sftp -b - download.gnu.org.ua:/incoming/$destdir_topdir + ;; + /*) + dest_host=`echo "$dest" | sed 's,:.*,,'` + mkdirective "$destdir" "$base" "$file" "$stmt" + echo "$passphrase" | $dbg $GPG $passphrase_fd_0 --clearsign $base.directive + $dbg cp $files $base.directive.asc $dest_host + ;; + *) + if test -z "$files"; then + echo "$0: warning: standalone directives not applicable for $dest" >&2 + fi + $dbg scp $files $dest + ;; + esac + rm -f $base.directive $base.directive.asc +} + +##### +# Process any standalone directives +stmt= +if test -n "$symlink_files"; then + stmt="$stmt +`mksymlink $symlink_files`" +fi + +for file in $delete_files +do + stmt="$stmt +archive: $file" +done + +for file in $delete_symlinks +do + stmt="$stmt +rmsymlink: $file" +done + +if test -n "$stmt"; then + for dest in $to + do + destdir=`echo $dest | sed 's/[^:]*://'` + upload "$dest" "$destdir" "`hostname`-$$" "" "$stmt" + done +fi + +# Process actual uploads +for dest in $to +do + for file + do + echo "Uploading $file to $dest ..." + stmt= + # + # allowing file replacement is all or nothing. + if test -n "$replace"; then stmt="$stmt +$replace" + fi + # + files="$file $file.sig" + destdir=`echo $dest | sed 's/[^:]*://'` + if test -n "$symlink_expr"; then + linkname=`echo $file | sed "$symlink_expr"` + stmt="$stmt +symlink: $file $linkname +symlink: $file.sig $linkname.sig" + fi + upload "$dest" "$destdir" "$file" "$file" "$stmt" "$files" + done +done + +exit 0 + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/build-aux/install-sh b/build-aux/install-sh new file mode 100755 index 0000000..b1d7a6f --- /dev/null +++ b/build-aux/install-sh @@ -0,0 +1,541 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2024-06-19.01; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +# Create dirs (including intermediate dirs) using mode 755. +# This is like GNU 'install' as of coreutils 8.32 (2020). +mkdir_umask=22 + +backupsuffix= +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -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. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve data modification time) + -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. + -p pass -p to $cpprog. + -s $stripprog installed files. + -S SUFFIX attempt to back up existing files, with suffix SUFFIX. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG + +By default, rm is invoked with -f; when overridden with RMPROG, +it's up to you to specify -f if you want it. + +If -S is not specified, no backups are attempted. + +Report bugs to . +GNU Automake home page: . +General help using GNU software: ." + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -p) cpprog="$cpprog -p";; + + -s) stripcmd=$stripprog;; + + -S) backupsuffix="$2" + shift;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 (GNU Automake) $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + # Don't chown directories that already exist. + if test $dstdir_status = 0; then + chowncmd="" + fi + else + + # Waiting for this to be detected by the "$cpprog $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 + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + # The $RANDOM variable is not portable (e.g., dash). Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + + trap ' + ret=$? + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null + exit $ret + ' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p'. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibility with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && + { test -z "$stripcmd" || { + # Create $dsttmp read-write so that cp doesn't create it read-only, + # which would cause strip to fail. + if test -z "$doit"; then + : >"$dsttmp" # No need to fork-exec 'touch'. + else + $doit touch "$dsttmp" + fi + } + } && + $doit_exec $cpprog "$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. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # If $backupsuffix is set, and the file being installed + # already exists, attempt a backup. Don't worry if it fails, + # e.g., if mv doesn't support -f. + if test -n "$backupsuffix" && test -f "$dst"; then + $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null + fi + + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/build-aux/ltmain.sh b/build-aux/ltmain.sh new file mode 100755 index 0000000..7271130 --- /dev/null +++ b/build-aux/ltmain.sh @@ -0,0 +1,11523 @@ +#! /usr/bin/env sh +## DO NOT EDIT - This file generated from ./build-aux/ltmain.in +## by inline-source v2019-02-19.15 + +# libtool (GNU libtool) 2.5.4 +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996-2019, 2021-2024 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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, see . + + +PROGRAM=libtool +PACKAGE=libtool +VERSION="2.5.4 Debian-2.5.4-4" +package_revision=2.5.4 + + +## ------ ## +## Usage. ## +## ------ ## + +# Run './libtool --help' for help with using this script from the +# command line. + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# After configure completes, it has a better idea of some of the +# shell tools we need than the defaults used by the functions shared +# with bootstrap, so set those here where they can still be over- +# ridden by the user, but otherwise take precedence. + +: ${AUTOCONF="autoconf"} +: ${AUTOMAKE="automake"} + + +## -------------------------- ## +## Source external libraries. ## +## -------------------------- ## + +# Much of our low-level functionality needs to be sourced from external +# libraries, which are installed to $pkgauxdir. + +# Set a version string for this script. +scriptversion=2024-12-01.17; # UTC + +# General shell script boiler plate, and helper functions. +# Written by Gary V. Vaughan, 2004 + +# This is free software. There is NO warranty; not even for +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# Copyright (C) 2004-2019, 2021, 2023-2024 Bootstrap Authors +# +# This file is dual licensed under the terms of the MIT license +# , and GPL version 2 or later +# . You must apply one of +# these licenses when using or redistributing this software or any of +# the files within it. See the URLs above, or the file `LICENSE` +# included in the Bootstrap distribution for the full license texts. + +# Please report bugs or propose patches to: +# + + +## ------ ## +## Usage. ## +## ------ ## + +# Evaluate this file near the top of your script to gain access to +# the functions and variables defined here: +# +# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh +# +# If you need to override any of the default environment variable +# settings, do that before evaluating this file. + + +## -------------------- ## +## Shell normalisation. ## +## -------------------- ## + +# Some shells need a little help to be as Bourne compatible as possible. +# Before doing anything else, make sure all that help has been provided! + +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac +fi + +# NLS nuisances: We save the old values in case they are required later. +_G_user_locale= +_G_safe_locale= +for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test set = \"\${$_G_var+set}\"; then + save_$_G_var=\$$_G_var + $_G_var=C + export $_G_var + _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" + _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" + fi" +done +# These NLS vars are set unconditionally (bootstrap issue #24). Unset those +# in case the environment reset is needed later and the $save_* variant is not +# defined (see the code above). +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL + +# Make sure IFS has a sensible default +sp=' ' +nl=' +' +IFS="$sp $nl" + +# There are apparently some systems that use ';' as a PATH separator! +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# func_unset VAR +# -------------- +# Portably unset VAR. +# In some shells, an 'unset VAR' statement leaves a non-zero return +# status if VAR is already unset, which might be problematic if the +# statement is used at the end of a function (thus poisoning its return +# value) or when 'set -e' is active (causing even a spurious abort of +# the script in this case). +func_unset () +{ + { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; } +} + + +# Make sure CDPATH doesn't cause `cd` commands to output the target dir. +func_unset CDPATH + +# Make sure ${,E,F}GREP behave sanely. +func_unset GREP_OPTIONS + + +## ------------------------- ## +## Locate command utilities. ## +## ------------------------- ## + + +# func_executable_p FILE +# ---------------------- +# Check that FILE is an executable regular file. +func_executable_p () +{ + test -f "$1" && test -x "$1" +} + + +# func_path_progs PROGS_LIST CHECK_FUNC [PATH] +# -------------------------------------------- +# Search for either a program that responds to --version with output +# containing "GNU", or else returned by CHECK_FUNC otherwise, by +# trying all the directories in PATH with each of the elements of +# PROGS_LIST. +# +# CHECK_FUNC should accept the path to a candidate program, and +# set $func_check_prog_result if it truncates its output less than +# $_G_path_prog_max characters. +func_path_progs () +{ + _G_progs_list=$1 + _G_check_func=$2 + _G_PATH=${3-"$PATH"} + + _G_path_prog_max=0 + _G_path_prog_found=false + _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} + for _G_dir in $_G_PATH; do + IFS=$_G_save_IFS + test -z "$_G_dir" && _G_dir=. + for _G_prog_name in $_G_progs_list; do + for _exeext in '' .EXE; do + _G_path_prog=$_G_dir/$_G_prog_name$_exeext + func_executable_p "$_G_path_prog" || continue + case `"$_G_path_prog" --version 2>&1` in + *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; + *) $_G_check_func $_G_path_prog + func_path_progs_result=$func_check_prog_result + ;; + esac + $_G_path_prog_found && break 3 + done + done + done + IFS=$_G_save_IFS + test -z "$func_path_progs_result" && { + echo "no acceptable sed could be found in \$PATH" >&2 + exit 1 + } +} + + +# We want to be able to use the functions in this file before configure +# has figured out where the best binaries are kept, which means we have +# to search for them ourselves - except when the results are already set +# where we skip the searches. + +# Unless the user overrides by setting SED, search the path for either GNU +# sed, or the sed that truncates its output the least. +test -z "$SED" && { + _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for _G_i in 1 2 3 4 5 6 7; do + _G_sed_script=$_G_sed_script$nl$_G_sed_script + done + echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed + _G_sed_script= + + func_check_prog_sed () + { + _G_path_prog=$1 + + _G_count=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo '' >> conftest.nl + "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin" + rm -f conftest.sed + SED=$func_path_progs_result +} + + +# Unless the user overrides by setting GREP, search the path for either GNU +# grep, or the grep that truncates its output the least. +test -z "$GREP" && { + func_check_prog_grep () + { + _G_path_prog=$1 + + _G_count=0 + _G_path_prog_max=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo 'GREP' >> conftest.nl + "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin" + GREP=$func_path_progs_result +} + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# All uppercase variable names are used for environment variables. These +# variables can be overridden by the user before calling a script that +# uses them if a suitable command of that name is not already available +# in the command search PATH. + +: ${CP="cp -f"} +: ${ECHO="printf %s\n"} +: ${EGREP="$GREP -E"} +: ${FGREP="$GREP -F"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} + + +## -------------------- ## +## Useful sed snippets. ## +## -------------------- ## + +sed_dirname='s|/[^/]*$||' +sed_basename='s|^.*/||' + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' + +# Same as above, but do not quote variable references. +sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' + +# Sed substitution that converts a w32 file name or path +# that contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-'\' parameter expansions in output of sed_double_quote_subst that +# were '\'-ed in input to the same. If an odd number of '\' preceded a +# '$' in input to sed_double_quote_subst, that '$' was protected from +# expansion. Since each input '\' is now two '\'s, look for any number +# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. +_G_bs='\\' +_G_bs2='\\\\' +_G_bs4='\\\\\\\\' +_G_dollar='\$' +sed_double_backslash="\ + s/$_G_bs4/&\\ +/g + s/^$_G_bs2$_G_dollar/$_G_bs&/ + s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g + s/\n//g" + +# require_check_ifs_backslash +# --------------------------- +# Check if we can use backslash as IFS='\' separator, and set +# $check_ifs_backshlash_broken to ':' or 'false'. +require_check_ifs_backslash=func_require_check_ifs_backslash +func_require_check_ifs_backslash () +{ + _G_save_IFS=$IFS + IFS='\' + _G_check_ifs_backshlash='a\\b' + for _G_i in $_G_check_ifs_backshlash + do + case $_G_i in + a) + check_ifs_backshlash_broken=false + ;; + '') + break + ;; + *) + check_ifs_backshlash_broken=: + break + ;; + esac + done + IFS=$_G_save_IFS + require_check_ifs_backslash=: +} + + +## ----------------- ## +## Global variables. ## +## ----------------- ## + +# Except for the global variables explicitly listed below, the following +# functions in the '^func_' namespace, and the '^require_' namespace +# variables initialised in the 'Resource management' section, sourcing +# this file will not pollute your global namespace with anything +# else. There's no portable way to scope variables in Bourne shell +# though, so actually running these functions will sometimes place +# results into a variable named after the function, and often use +# temporary variables in the '^_G_' namespace. If you are careful to +# avoid using those namespaces casually in your sourcing script, things +# should continue to work as you expect. And, of course, you can freely +# overwrite any of the functions or variables defined here before +# calling anything to customize them. + +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +# Allow overriding, eg assuming that you follow the convention of +# putting '$debug_cmd' at the start of all your functions, you can get +# bash to show function call trace with: +# +# debug_cmd='echo "${FUNCNAME[0]} $*" >&2' bash your-script-name +debug_cmd=${debug_cmd-":"} +exit_cmd=: + +# By convention, finish your script with: +# +# exit $exit_status +# +# so that you can set exit_status to non-zero if you want to indicate +# something went wrong during execution without actually bailing out at +# the point of failure. +exit_status=$EXIT_SUCCESS + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath=$0 + +# The name of this program. +progname=`$ECHO "$progpath" |$SED "$sed_basename"` + +# Make sure we have an absolute progpath for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` + progdir=`cd "$progdir" && pwd` + progpath=$progdir/$progname + ;; + *) + _G_IFS=$IFS + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS=$_G_IFS + test -x "$progdir/$progname" && break + done + IFS=$_G_IFS + test -n "$progdir" || progdir=`pwd` + progpath=$progdir/$progname + ;; +esac + + +## ----------------- ## +## Standard options. ## +## ----------------- ## + +# The following options affect the operation of the functions defined +# below, and should be set appropriately depending on run-time para- +# meters passed on the command line. + +opt_dry_run=false +opt_quiet=false +opt_verbose=false + +# Categories 'all' and 'none' are always available. Append any others +# you will pass as the first argument to func_warning from your own +# code. +warning_categories= + +# By default, display warnings according to 'opt_warning_types'. Set +# 'warning_func' to ':' to elide all warnings, or func_fatal_error to +# treat the next displayed warning as a fatal error. +warning_func=func_warn_and_continue + +# Set to 'all' to display all warnings, 'none' to suppress all +# warnings, or a space delimited list of some subset of +# 'warning_categories' to display only the listed warnings. +opt_warning_types=all + + +## -------------------- ## +## Resource management. ## +## -------------------- ## + +# This section contains definitions for functions that each ensure a +# particular resource (a file, or a non-empty configuration variable for +# example) is available, and if appropriate to extract default values +# from pertinent package files. Call them using their associated +# 'require_*' variable to ensure that they are executed, at most, once. +# +# It's entirely deliberate that calling these functions can set +# variables that don't obey the namespace limitations obeyed by the rest +# of this file, in order that that they be as useful as possible to +# callers. + + +# require_term_colors +# ------------------- +# Allow display of bold text on terminals that support it. +require_term_colors=func_require_term_colors +func_require_term_colors () +{ + $debug_cmd + + test -t 1 && { + # COLORTERM and USE_ANSI_COLORS environment variables take + # precedence, because most terminfo databases neglect to describe + # whether color sequences are supported. + test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} + + if test 1 = "$USE_ANSI_COLORS"; then + # Standard ANSI escape sequences + tc_reset='' + tc_bold=''; tc_standout='' + tc_red=''; tc_green='' + tc_blue=''; tc_cyan='' + else + # Otherwise trust the terminfo database after all. + test -n "`tput sgr0 2>/dev/null`" && { + tc_reset=`tput sgr0` + test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` + tc_standout=$tc_bold + test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` + test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` + test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` + test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` + test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` + } + fi + } + + require_term_colors=: +} + + +## ----------------- ## +## Function library. ## +## ----------------- ## + +# This section contains a variety of useful functions to call in your +# scripts. Take note of the portable wrappers for features provided by +# some modern shells, which will fall back to slower equivalents on +# less featureful shells. + + +# func_append VAR VALUE +# --------------------- +# Append VALUE onto the existing contents of VAR. + + + # _G_HAVE_PLUSEQ_OP + # Can be empty, in which case the shell is probed, "yes" if += is + # usable or anything else if it does not work. +if test -z "$_G_HAVE_PLUSEQ_OP" && \ + __PLUSEQ_TEST="a" && \ + __PLUSEQ_TEST+=" b" 2>/dev/null && \ + test "a b" = "$__PLUSEQ_TEST"; then + _G_HAVE_PLUSEQ_OP=yes +fi + +if test yes = "$_G_HAVE_PLUSEQ_OP" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_append () + { + $debug_cmd + + eval "$1+=\$2" + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_append () + { + $debug_cmd + + eval "$1=\$$1\$2" + } +fi + + +# func_append_quoted VAR VALUE +# ---------------------------- +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +if test yes = "$_G_HAVE_PLUSEQ_OP"; then + eval 'func_append_quoted () + { + $debug_cmd + + func_quote_arg pretty "$2" + eval "$1+=\\ \$func_quote_arg_result" + }' +else + func_append_quoted () + { + $debug_cmd + + func_quote_arg pretty "$2" + eval "$1=\$$1\\ \$func_quote_arg_result" + } +fi + + +# func_append_uniq VAR VALUE +# -------------------------- +# Append unique VALUE onto the existing contents of VAR, assuming +# entries are delimited by the first character of VALUE. For example: +# +# func_append_uniq options " --another-option option-argument" +# +# will only append to $options if " --another-option option-argument " +# is not already present somewhere in $options already (note spaces at +# each end implied by leading space in second argument). +func_append_uniq () +{ + $debug_cmd + + eval _G_current_value='`$ECHO $'$1'`' + _G_delim=`expr "$2" : '\(.\)'` + + case $_G_delim$_G_current_value$_G_delim in + *"$2$_G_delim"*) ;; + *) func_append "$@" ;; + esac +} + + +# func_arith TERM... +# ------------------ +# Set func_arith_result to the result of evaluating TERMs. + test -z "$_G_HAVE_ARITH_OP" \ + && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ + && _G_HAVE_ARITH_OP=yes + +if test yes = "$_G_HAVE_ARITH_OP"; then + eval 'func_arith () + { + $debug_cmd + + func_arith_result=$(( $* )) + }' +else + func_arith () + { + $debug_cmd + + func_arith_result=`expr "$@"` + } +fi + + +# func_basename FILE +# ------------------ +# Set func_basename_result to FILE with everything up to and including +# the last / stripped. +if test yes = "$_G_HAVE_XSI_OPS"; then + # If this shell supports suffix pattern removal, then use it to avoid + # forking. Hide the definitions single quotes in case the shell chokes + # on unsupported syntax... + _b='func_basename_result=${1##*/}' + _d='case $1 in + */*) func_dirname_result=${1%/*}$2 ;; + * ) func_dirname_result=$3 ;; + esac' + +else + # ...otherwise fall back to using sed. + _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' + _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` + if test "X$func_dirname_result" = "X$1"; then + func_dirname_result=$3 + else + func_append func_dirname_result "$2" + fi' +fi + +eval 'func_basename () +{ + $debug_cmd + + '"$_b"' +}' + + +# func_dirname FILE APPEND NONDIR_REPLACEMENT +# ------------------------------------------- +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +eval 'func_dirname () +{ + $debug_cmd + + '"$_d"' +}' + + +# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT +# -------------------------------------------------------- +# Perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value returned in "$func_basename_result" +# For efficiency, we do not delegate to the functions above but instead +# duplicate the functionality here. +eval 'func_dirname_and_basename () +{ + $debug_cmd + + '"$_b"' + '"$_d"' +}' + + +# func_echo ARG... +# ---------------- +# Echo program name prefixed message. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_echo_all ARG... +# -------------------- +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + + +# func_echo_infix_1 INFIX ARG... +# ------------------------------ +# Echo program name, followed by INFIX on the first line, with any +# additional lines not showing INFIX. +func_echo_infix_1 () +{ + $debug_cmd + + $require_term_colors + + _G_infix=$1; shift + _G_indent=$_G_infix + _G_prefix="$progname: $_G_infix: " + _G_message=$* + + # Strip color escape sequences before counting printable length + for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" + do + test -n "$_G_tc" && { + _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` + _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` + } + done + _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes + + func_echo_infix_1_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_infix_1_IFS + $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 + _G_prefix=$_G_indent + done + IFS=$func_echo_infix_1_IFS +} + + +# func_error ARG... +# ----------------- +# Echo program name prefixed message to standard error. +func_error () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 +} + + +# func_fatal_error ARG... +# ----------------------- +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + $debug_cmd + + func_error "$*" + exit $EXIT_FAILURE +} + + +# func_grep EXPRESSION FILENAME +# ----------------------------- +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $debug_cmd + + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_len STRING +# --------------- +# Set func_len_result to the length of STRING. STRING may not +# start with a hyphen. + test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_len () + { + $debug_cmd + + func_len_result=${#1} + }' +else + func_len () + { + $debug_cmd + + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` + } +fi + + +# func_mkdir_p DIRECTORY-PATH +# --------------------------- +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + $debug_cmd + + _G_directory_path=$1 + _G_dir_list= + + if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then + + # Protect directory names starting with '-' + case $_G_directory_path in + -*) _G_directory_path=./$_G_directory_path ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$_G_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list in case some portion of path contains whitespace. + _G_dir_list=$_G_directory_path:$_G_dir_list + + # If the last portion added has no slash in it, the list is done + case $_G_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` + done + _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` + + func_mkdir_p_IFS=$IFS; IFS=: + for _G_dir in $_G_dir_list; do + IFS=$func_mkdir_p_IFS + # mkdir can fail with a 'File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$_G_dir" 2>/dev/null || : + done + IFS=$func_mkdir_p_IFS + + # Bail out if we (or some other process) failed to create a directory. + test -d "$_G_directory_path" || \ + func_fatal_error "Failed to create '$1'" + fi +} + + +# func_mktempdir [BASENAME] +# ------------------------- +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, BASENAME is the basename for that directory. +func_mktempdir () +{ + $debug_cmd + + _G_template=${TMPDIR-/tmp}/${1-$progname} + + if test : = "$opt_dry_run"; then + # Return a directory name, but don't create it in dry-run mode + _G_tmpdir=$_G_template-$$ + else + + # If mktemp works, use that first and foremost + _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` + + if test ! -d "$_G_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + _G_tmpdir=$_G_template-${RANDOM-0}$$ + + func_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$_G_tmpdir" + umask $func_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$_G_tmpdir" || \ + func_fatal_error "cannot create temporary directory '$_G_tmpdir'" + fi + + $ECHO "$_G_tmpdir" +} + + +# func_normal_abspath PATH +# ------------------------ +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +func_normal_abspath () +{ + $debug_cmd + + # These SED scripts presuppose an absolute path with a trailing slash. + _G_pathcar='s|^/\([^/]*\).*$|\1|' + _G_pathcdr='s|^/[^/]*||' + _G_removedotparts=':dotsl + s|/\./|/|g + t dotsl + s|/\.$|/|' + _G_collapseslashes='s|/\{1,\}|/|g' + _G_finalslash='s|/*$|/|' + + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` + while :; do + # Processed it all yet? + if test / = "$func_normal_abspath_tpath"; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result"; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + + +# func_notquiet ARG... +# -------------------- +# Echo program name prefixed message only when not in quiet mode. +func_notquiet () +{ + $debug_cmd + + $opt_quiet || func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + + +# func_relative_path SRCDIR DSTDIR +# -------------------------------- +# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. +func_relative_path () +{ + $debug_cmd + + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=$func_dirname_result + if test -z "$func_relative_path_tlibdir"; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test -n "$func_stripname_result"; then + func_append func_relative_path_result "/$func_stripname_result" + fi + + # Normalisation. If bindir is libdir, return '.' else relative path. + if test -n "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + fi + + test -n "$func_relative_path_result" || func_relative_path_result=. + + : +} + + +# func_quote_portable EVAL ARG +# ---------------------------- +# Internal function to portably implement func_quote_arg. Note that we still +# keep attention to performance here so we as much as possible try to avoid +# calling sed binary (so far O(N) complexity as long as func_append is O(1)). +func_quote_portable () +{ + $debug_cmd + + $require_check_ifs_backslash + + func_quote_portable_result=$2 + + # one-time-loop (easy break) + while true + do + if $1; then + func_quote_portable_result=`$ECHO "$2" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` + break + fi + + # Quote for eval. + case $func_quote_portable_result in + *[\\\`\"\$]*) + # Fallback to sed for $func_check_bs_ifs_broken=:, or when the string + # contains the shell wildcard characters. + case $check_ifs_backshlash_broken$func_quote_portable_result in + :*|*[\[\*\?]*) + func_quote_portable_result=`$ECHO "$func_quote_portable_result" \ + | $SED "$sed_quote_subst"` + break + ;; + esac + + func_quote_portable_old_IFS=$IFS + for _G_char in '\' '`' '"' '$' + do + # STATE($1) PREV($2) SEPARATOR($3) + set start "" "" + func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy + IFS=$_G_char + for _G_part in $func_quote_portable_result + do + case $1 in + quote) + func_append func_quote_portable_result "$3$2" + set quote "$_G_part" "\\$_G_char" + ;; + start) + set first "" "" + func_quote_portable_result= + ;; + first) + set quote "$_G_part" "" + ;; + esac + done + done + IFS=$func_quote_portable_old_IFS + ;; + *) ;; + esac + break + done + + func_quote_portable_unquoted_result=$func_quote_portable_result + case $func_quote_portable_result in + # double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # many bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_portable_result=\"$func_quote_portable_result\" + ;; + esac +} + + +# func_quotefast_eval ARG +# ----------------------- +# Quote one ARG (internal). This is equivalent to 'func_quote_arg eval ARG', +# but optimized for speed. Result is stored in $func_quotefast_eval. +if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then + printf -v _GL_test_printf_tilde %q '~' + if test '\~' = "$_GL_test_printf_tilde"; then + func_quotefast_eval () + { + printf -v func_quotefast_eval_result %q "$1" + } + else + # Broken older Bash implementations. Make those faster too if possible. + func_quotefast_eval () + { + case $1 in + '~'*) + func_quote_portable false "$1" + func_quotefast_eval_result=$func_quote_portable_result + ;; + *) + printf -v func_quotefast_eval_result %q "$1" + ;; + esac + } + fi +else + func_quotefast_eval () + { + func_quote_portable false "$1" + func_quotefast_eval_result=$func_quote_portable_result + } +fi + + +# func_quote_arg MODEs ARG +# ------------------------ +# Quote one ARG to be evaled later. MODEs argument may contain zero or more +# specifiers listed below separated by ',' character. This function returns two +# values: +# i) func_quote_arg_result +# double-quoted (when needed), suitable for a subsequent eval +# ii) func_quote_arg_unquoted_result +# has all characters that are still active within double +# quotes backslashified. Available only if 'unquoted' is specified. +# +# Available modes: +# ---------------- +# 'eval' (default) +# - escape shell special characters +# 'expand' +# - the same as 'eval'; but do not quote variable references +# 'pretty' +# - request aesthetic output, i.e. '"a b"' instead of 'a\ b'. This might +# be used later in func_quote to get output like: 'echo "a b"' instead +# of 'echo a\ b'. This is slower than default on some shells. +# 'unquoted' +# - produce also $func_quote_arg_unquoted_result which does not contain +# wrapping double-quotes. +# +# Examples for 'func_quote_arg pretty,unquoted string': +# +# string | *_result | *_unquoted_result +# ------------+-----------------------+------------------- +# " | \" | \" +# a b | "a b" | a b +# "a b" | "\"a b\"" | \"a b\" +# * | "*" | * +# z="${x-$y}" | "z=\"\${x-\$y}\"" | z=\"\${x-\$y}\" +# +# Examples for 'func_quote_arg pretty,unquoted,expand string': +# +# string | *_result | *_unquoted_result +# --------------+---------------------+-------------------- +# z="${x-$y}" | "z=\"${x-$y}\"" | z=\"${x-$y}\" +func_quote_arg () +{ + _G_quote_expand=false + case ,$1, in + *,expand,*) + _G_quote_expand=: + ;; + esac + + case ,$1, in + *,pretty,*|*,expand,*|*,unquoted,*) + func_quote_portable $_G_quote_expand "$2" + func_quote_arg_result=$func_quote_portable_result + func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result + ;; + *) + # Faster quote-for-eval for some shells. + func_quotefast_eval "$2" + func_quote_arg_result=$func_quotefast_eval_result + ;; + esac +} + + +# func_quote MODEs ARGs... +# ------------------------ +# Quote all ARGs to be evaled later and join them into single command. See +# func_quote_arg's description for more info. +func_quote () +{ + $debug_cmd + _G_func_quote_mode=$1 ; shift + func_quote_result= + while test 0 -lt $#; do + func_quote_arg "$_G_func_quote_mode" "$1" + if test -n "$func_quote_result"; then + func_append func_quote_result " $func_quote_arg_result" + else + func_append func_quote_result "$func_quote_arg_result" + fi + shift + done +} + + +# func_stripname PREFIX SUFFIX NAME +# --------------------------------- +# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_stripname () + { + $debug_cmd + + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary variable first. + func_stripname_result=$3 + func_stripname_result=${func_stripname_result#"$1"} + func_stripname_result=${func_stripname_result%"$2"} + }' +else + func_stripname () + { + $debug_cmd + + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; + esac + } +fi + + +# func_show_eval CMD [FAIL_EXP] +# ----------------------------- +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + func_quote_arg pretty,expand "$_G_cmd" + eval "func_notquiet $func_quote_arg_result" + + $opt_dry_run || { + eval "$_G_cmd" + _G_status=$? + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_show_eval_locale CMD [FAIL_EXP] +# ------------------------------------ +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + $opt_quiet || { + func_quote_arg expand,pretty "$_G_cmd" + eval "func_echo $func_quote_arg_result" + } + + $opt_dry_run || { + eval "$_G_user_locale + $_G_cmd" + _G_status=$? + eval "$_G_safe_locale" + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_tr_sh +# ---------- +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + $debug_cmd + + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_verbose ARG... +# ------------------- +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $debug_cmd + + $opt_verbose && func_echo "$*" + + : +} + + +# func_warn_and_continue ARG... +# ----------------------------- +# Echo program name prefixed warning message to standard error. +func_warn_and_continue () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 +} + + +# func_warning CATEGORY ARG... +# ---------------------------- +# Echo program name prefixed warning message to standard error. Warning +# messages can be filtered according to CATEGORY, where this function +# elides messages where CATEGORY is not listed in the global variable +# 'opt_warning_types'. +func_warning () +{ + $debug_cmd + + # CATEGORY must be in the warning_categories list! + case " $warning_categories " in + *" $1 "*) ;; + *) func_internal_error "invalid warning category '$1'" ;; + esac + + _G_category=$1 + shift + + case " $opt_warning_types " in + *" $_G_category "*) $warning_func ${1+"$@"} ;; + esac +} + + +# func_sort_ver VER1 VER2 +# ----------------------- +# 'sort -V' is not generally available. +# Note this deviates from the version comparison in automake +# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a +# but this should suffice as we won't be specifying old +# version formats or redundant trailing .0 in bootstrap.conf. +# If we did want full compatibility then we should probably +# use m4_version_compare from autoconf. +func_sort_ver () +{ + $debug_cmd + + printf '%s\n%s\n' "$1" "$2" \ + | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n +} + +# func_lt_ver PREV CURR +# --------------------- +# Return true if PREV and CURR are in the correct order according to +# func_sort_ver, otherwise false. Use it like this: +# +# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." +func_lt_ver () +{ + $debug_cmd + + test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: +#! /bin/sh + +# A portable, pluggable option parser for Bourne shell. +# Written by Gary V. Vaughan, 2010 + +# This is free software. There is NO warranty; not even for +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# Copyright (C) 2010-2019, 2021, 2023-2024 Bootstrap Authors +# +# This file is dual licensed under the terms of the MIT license +# , and GPL version 2 or later +# . You must apply one of +# these licenses when using or redistributing this software or any of +# the files within it. See the URLs above, or the file `LICENSE` +# included in the Bootstrap distribution for the full license texts. + +# Please report bugs or propose patches to: +# + +# Set a version string for this script. +scriptversion=2019-02-19.15; # UTC + + +## ------ ## +## Usage. ## +## ------ ## + +# This file is a library for parsing options in your shell scripts along +# with assorted other useful supporting features that you can make use +# of too. +# +# For the simplest scripts you might need only: +# +# #!/bin/sh +# . relative/path/to/funclib.sh +# . relative/path/to/options-parser +# scriptversion=1.0 +# func_options ${1+"$@"} +# eval set dummy "$func_options_result"; shift +# ...rest of your script... +# +# In order for the '--version' option to work, you will need to have a +# suitably formatted comment like the one at the top of this file +# starting with '# Written by ' and ending with '# Copyright'. +# +# For '-h' and '--help' to work, you will also need a one line +# description of your script's purpose in a comment directly above the +# '# Written by ' line, like the one at the top of this file. +# +# The default options also support '--debug', which will turn on shell +# execution tracing (see the comment above debug_cmd below for another +# use), and '--verbose' and the func_verbose function to allow your script +# to display verbose messages only when your user has specified +# '--verbose'. +# +# After sourcing this file, you can plug in processing for additional +# options by amending the variables from the 'Configuration' section +# below, and following the instructions in the 'Option parsing' +# section further down. + +## -------------- ## +## Configuration. ## +## -------------- ## + +# You should override these variables in your script after sourcing this +# file so that they reflect the customisations you have added to the +# option parser. + +# The usage line for option parsing errors and the start of '-h' and +# '--help' output messages. You can embed shell variables for delayed +# expansion at the time the message is displayed, but you will need to +# quote other shell meta-characters carefully to prevent them being +# expanded when the contents are evaled. +usage='$progpath [OPTION]...' + +# Short help message in response to '-h' and '--help'. Add to this or +# override it after sourcing this library to reflect the full set of +# options your script accepts. +usage_message="\ + --debug enable verbose shell tracing + -W, --warnings=CATEGORY + report the warnings falling in CATEGORY [all] + -v, --verbose verbosely report processing + --version print version information and exit + -h, --help print short or long help message and exit +" + +# Additional text appended to 'usage_message' in response to '--help'. +long_help_message=" +Warning categories include: + 'all' show all warnings + 'none' turn off all the warnings + 'error' warnings are treated as fatal errors" + +# Help message printed before fatal option parsing errors. +fatal_help="Try '\$progname --help' for more information." + + + +## ------------------------- ## +## Hook function management. ## +## ------------------------- ## + +# This section contains functions for adding, removing, and running hooks +# in the main code. A hook is just a list of function names that can be +# run in order later on. + +# func_hookable FUNC_NAME +# ----------------------- +# Declare that FUNC_NAME will run hooks added with +# 'func_add_hook FUNC_NAME ...'. +func_hookable () +{ + $debug_cmd + + func_append hookable_fns " $1" +} + + +# func_add_hook FUNC_NAME HOOK_FUNC +# --------------------------------- +# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must +# first have been declared "hookable" by a call to 'func_hookable'. +func_add_hook () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not accept hook functions." ;; + esac + + eval func_append ${1}_hooks '" $2"' +} + + +# func_remove_hook FUNC_NAME HOOK_FUNC +# ------------------------------------ +# Remove HOOK_FUNC from the list of hook functions to be called by +# FUNC_NAME. +func_remove_hook () +{ + $debug_cmd + + eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' +} + + +# func_propagate_result FUNC_NAME_A FUNC_NAME_B +# --------------------------------------------- +# If the *_result variable of FUNC_NAME_A _is set_, assign its value to +# *_result variable of FUNC_NAME_B. +func_propagate_result () +{ + $debug_cmd + + func_propagate_result_result=: + if eval "test \"\${${1}_result+set}\" = set" + then + eval "${2}_result=\$${1}_result" + else + func_propagate_result_result=false + fi +} + + +# func_run_hooks FUNC_NAME [ARG]... +# --------------------------------- +# Run all hook functions registered to FUNC_NAME. +# It's assumed that the list of hook functions contains nothing more +# than a whitespace-delimited list of legal shell function names, and +# no effort is wasted trying to catch shell meta-characters or preserve +# whitespace. +func_run_hooks () +{ + $debug_cmd + + _G_rc_run_hooks=false + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not support hook functions." ;; + esac + + eval _G_hook_fns=\$$1_hooks; shift + + for _G_hook in $_G_hook_fns; do + func_unset "${_G_hook}_result" + eval $_G_hook '${1+"$@"}' + func_propagate_result $_G_hook func_run_hooks + if $func_propagate_result_result; then + eval set dummy "$func_run_hooks_result"; shift + fi + done +} + + + +## --------------- ## +## Option parsing. ## +## --------------- ## + +# In order to add your own option parsing hooks, you must accept the +# full positional parameter list from your hook function. You may remove +# or edit any options that you action, and then pass back the remaining +# unprocessed options in '_result', escaped +# suitably for 'eval'. +# +# The '_result' variable is automatically unset +# before your hook gets called; for best performance, only set the +# *_result variable when necessary (i.e. don't call the 'func_quote' +# function unnecessarily because it can be an expensive operation on some +# machines). +# +# Like this: +# +# my_options_prep () +# { +# $debug_cmd +# +# # Extend the existing usage message. +# usage_message=$usage_message' +# -s, --silent don'\''t print informational messages +# ' +# # No change in '$@' (ignored completely by this hook). Leave +# # my_options_prep_result variable intact. +# } +# func_add_hook func_options_prep my_options_prep +# +# +# my_silent_option () +# { +# $debug_cmd +# +# args_changed=false +# +# # Note that, for efficiency, we parse as many options as we can +# # recognise in a loop before passing the remainder back to the +# # caller on the first unrecognised argument we encounter. +# while test $# -gt 0; do +# opt=$1; shift +# case $opt in +# --silent|-s) opt_silent=: +# args_changed=: +# ;; +# # Separate non-argument short options: +# -s*) func_split_short_opt "$_G_opt" +# set dummy "$func_split_short_opt_name" \ +# "-$func_split_short_opt_arg" ${1+"$@"} +# shift +# args_changed=: +# ;; +# *) # Make sure the first unrecognised option "$_G_opt" +# # is added back to "$@" in case we need it later, +# # if $args_changed was set to 'true'. +# set dummy "$_G_opt" ${1+"$@"}; shift; break ;; +# esac +# done +# +# # Only call 'func_quote' here if we processed at least one argument. +# if $args_changed; then +# func_quote eval ${1+"$@"} +# my_silent_option_result=$func_quote_result +# fi +# } +# func_add_hook func_parse_options my_silent_option +# +# +# my_option_validation () +# { +# $debug_cmd +# +# $opt_silent && $opt_verbose && func_fatal_help "\ +# '--silent' and '--verbose' options are mutually exclusive." +# } +# func_add_hook func_validate_options my_option_validation +# +# You'll also need to manually amend $usage_message to reflect the extra +# options you parse. It's preferable to append if you can, so that +# multiple option parsing hooks can be added safely. + + +# func_options_finish [ARG]... +# ---------------------------- +# Finishing the option parse loop (call 'func_options' hooks ATM). +func_options_finish () +{ + $debug_cmd + + func_run_hooks func_options ${1+"$@"} + func_propagate_result func_run_hooks func_options_finish +} + + +# func_options [ARG]... +# --------------------- +# All the functions called inside func_options are hookable. See the +# individual implementations for details. +func_hookable func_options +func_options () +{ + $debug_cmd + + _G_options_quoted=false + + for my_func in options_prep parse_options validate_options options_finish + do + func_unset func_${my_func}_result + func_unset func_run_hooks_result + eval func_$my_func '${1+"$@"}' + func_propagate_result func_$my_func func_options + if $func_propagate_result_result; then + eval set dummy "$func_options_result"; shift + _G_options_quoted=: + fi + done + + $_G_options_quoted || { + # As we (func_options) are top-level options-parser function and + # nobody quoted "$@" for us yet, we need to do it explicitly for + # caller. + func_quote eval ${1+"$@"} + func_options_result=$func_quote_result + } +} + + +# func_options_prep [ARG]... +# -------------------------- +# All initialisations required before starting the option parse loop. +# Note that when calling hook functions, we pass through the list of +# positional parameters. If a hook function modifies that list, and +# needs to propagate that back to rest of this script, then the complete +# modified list must be put in 'func_run_hooks_result' before returning. +func_hookable func_options_prep +func_options_prep () +{ + $debug_cmd + + # Option defaults: + opt_verbose=false + opt_warning_types= + + func_run_hooks func_options_prep ${1+"$@"} + func_propagate_result func_run_hooks func_options_prep +} + + +# func_parse_options [ARG]... +# --------------------------- +# The main option parsing loop. +func_hookable func_parse_options +func_parse_options () +{ + $debug_cmd + + _G_parse_options_requote=false + # this just eases exit handling + while test $# -gt 0; do + # Defer to hook functions for initial option parsing, so they + # get priority in the event of reusing an option name. + func_run_hooks func_parse_options ${1+"$@"} + func_propagate_result func_run_hooks func_parse_options + if $func_propagate_result_result; then + eval set dummy "$func_parse_options_result"; shift + # Even though we may have changed "$@", we passed the "$@" array + # down into the hook and it quoted it for us (because we are in + # this if-branch). No need to quote it again. + _G_parse_options_requote=false + fi + + # Break out of the loop if we already parsed every option. + test $# -gt 0 || break + + # We expect that one of the options parsed in this function matches + # and thus we remove _G_opt from "$@" and need to re-quote. + _G_match_parse_options=: + _G_opt=$1 + shift + case $_G_opt in + --debug|-x) debug_cmd='set -x' + func_echo "enabling shell trace mode" >&2 + $debug_cmd + ;; + + --no-warnings|--no-warning|--no-warn) + set dummy --warnings none ${1+"$@"} + shift + ;; + + --warnings|--warning|-W) + if test $# = 0 && func_missing_arg $_G_opt; then + _G_parse_options_requote=: + break + fi + case " $warning_categories $1" in + *" $1 "*) + # trailing space prevents matching last $1 above + func_append_uniq opt_warning_types " $1" + ;; + *all) + opt_warning_types=$warning_categories + ;; + *none) + opt_warning_types=none + warning_func=: + ;; + *error) + opt_warning_types=$warning_categories + warning_func=func_fatal_error + ;; + *) + func_fatal_error \ + "unsupported warning category: '$1'" + ;; + esac + shift + ;; + + --verbose|-v) opt_verbose=: ;; + --version) func_version ;; + -\?|-h) func_usage ;; + --help) func_help ;; + + # Separate optargs to long options (plugins may need this): + --*=*) func_split_equals "$_G_opt" + set dummy "$func_split_equals_lhs" \ + "$func_split_equals_rhs" ${1+"$@"} + shift + ;; + + # Separate optargs to short options: + -W*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-v*|-x*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) _G_parse_options_requote=: ; break ;; + -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; + *) set dummy "$_G_opt" ${1+"$@"}; shift + _G_match_parse_options=false + break + ;; + esac + + if $_G_match_parse_options; then + _G_parse_options_requote=: + fi + done + + if $_G_parse_options_requote; then + # save modified positional parameters for caller + func_quote eval ${1+"$@"} + func_parse_options_result=$func_quote_result + fi +} + + +# func_validate_options [ARG]... +# ------------------------------ +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +func_hookable func_validate_options +func_validate_options () +{ + $debug_cmd + + # Display all warnings if -W was not given. + test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" + + func_run_hooks func_validate_options ${1+"$@"} + func_propagate_result func_run_hooks func_validate_options + + # Bail if the options were screwed! + $exit_cmd $EXIT_FAILURE +} + + + +## ----------------- ## +## Helper functions. ## +## ----------------- ## + +# This section contains the helper functions used by the rest of the +# hookable option parser framework in ascii-betical order. + + +# func_fatal_help ARG... +# ---------------------- +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + eval \$ECHO \""$fatal_help"\" + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + + +# func_help +# --------- +# Echo long help message to standard output and exit. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message" + exit 0 +} + + +# func_missing_arg ARGNAME +# ------------------------ +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $debug_cmd + + func_error "Missing argument for '$1'." + exit_cmd=exit +} + + +# func_split_equals STRING +# ------------------------ +# Set func_split_equals_lhs and func_split_equals_rhs shell variables +# after splitting STRING at the '=' sign. +test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=${1%%=*} + func_split_equals_rhs=${1#*=} + if test "x$func_split_equals_lhs" = "x$1"; then + func_split_equals_rhs= + fi + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` + func_split_equals_rhs= + test "x$func_split_equals_lhs=" = "x$1" \ + || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` + } +fi #func_split_equals + + +# func_split_short_opt SHORTOPT +# ----------------------------- +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"} + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_name=`expr "x$1" : 'x\(-.\)'` + func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` + } +fi #func_split_short_opt + + +# func_usage +# ---------- +# Echo short help message to standard output and exit. +func_usage () +{ + $debug_cmd + + func_usage_message + $ECHO "Run '$progname --help |${PAGER-more}' for full usage" + exit 0 +} + + +# func_usage_message +# ------------------ +# Echo short help message to standard output. +func_usage_message () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + echo + $SED -n 's|^# || + /^Written by/{ + x;p;x + } + h + /^Written by/q' < "$progpath" + echo + eval \$ECHO \""$usage_message"\" +} + + +# func_version +# ------------ +# Echo version message to standard output and exit. +# The version message is extracted from the calling file's header +# comments, with leading '# ' stripped: +# 1. First display the progname and version +# 2. Followed by the header comment line matching /^# Written by / +# 3. Then a blank line followed by the first following line matching +# /^# Copyright / +# 4. Immediately followed by any lines between the previous matches, +# except lines preceding the intervening completely blank line. +# For example, see the header comments of this file. +func_version () +{ + $debug_cmd + + printf '%s\n' "$progname $scriptversion" + $SED -n ' + /^# Written by /!b + s|^# ||; p; n + + :fwd2blnk + /./ { + n + b fwd2blnk + } + p; n + + :holdwrnt + s|^# || + s|^# *$|| + /^Copyright /!{ + /./H + n + b holdwrnt + } + + s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| + G + s|\(\n\)\n*|\1|g + p; q' < "$progpath" + + exit $? +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: + +# Set a version string. +scriptversion='(GNU libtool) 2.5.4' + +# func_version +# ------------ +# Echo version message to standard output and exit. +func_version () +{ + $debug_cmd + + year=`date +%Y` + + cat < +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. + +Originally written by Gordon Matzigkeit, 1996 +(See AUTHORS for complete contributor listing) +EOF + + exit $? +} + + +# func_echo ARG... +# ---------------- +# Libtool also displays the current mode in messages, so override +# funclib.sh func_echo with this custom definition. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" + done + IFS=$func_echo_IFS +} + + +## ---------------- ## +## Options parsing. ## +## ---------------- ## + +# Hook in the functions to make sure our own options are parsed during +# the option parsing loop. + +usage='$progpath [OPTION]... [MODE-ARG]...' + +# Short help message in response to '-h'. +usage_message="Options: + --config show all configuration variables + --debug enable verbose shell tracing + -n, --dry-run display commands without modifying any files + --features display basic configuration information + --finish use operation '--mode=finish' + --mode=MODE use operation mode MODE + --no-finish don't update shared library cache + --no-quiet, --no-silent print default informational messages + --no-warnings equivalent to '-Wnone' + --preserve-dup-deps don't remove duplicate dependency libraries + --quiet, --silent don't print informational messages + --reorder-cache=DIRS reorder shared library cache for preferred DIRS + --tag=TAG use configuration variables from tag TAG + -v, --verbose print more informational messages than default + --version print version information + -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] + -h, --help, --help-all print short, long, or detailed help message +" + +# Additional text appended to 'usage_message' in response to '--help'. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. When passed as first option, +'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. +Try '$progname --help --mode=MODE' for a more detailed description of MODE. + +When reporting a bug, please describe a test case to reproduce it and +include the following information: + + host-triplet: $host + shell: $SHELL + compiler: $LTCC + compiler flags: $LTCFLAGS + linker: $LD (gnu? $with_gnu_ld) + version: $progname $scriptversion Debian-2.5.4-4 + automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` + autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` + +Report bugs to . +GNU libtool home page: . +General help using GNU software: ." + exit 0 +} + + +# func_lo2o OBJECT-NAME +# --------------------- +# Transform OBJECT-NAME from a '.lo' suffix to the platform specific +# object suffix. + +lo2o=s/\\.lo\$/.$objext/ +o2lo=s/\\.$objext\$/.lo/ + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_lo2o () + { + case $1 in + *.lo) func_lo2o_result=${1%.lo}.$objext ;; + * ) func_lo2o_result=$1 ;; + esac + }' + + # func_xform LIBOBJ-OR-SOURCE + # --------------------------- + # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) + # suffix to a '.lo' libtool-object suffix. + eval 'func_xform () + { + func_xform_result=${1%.*}.lo + }' +else + # ...otherwise fall back to using sed. + func_lo2o () + { + func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` + } + + func_xform () + { + func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` + } +fi + + +# func_fatal_configuration ARG... +# ------------------------------- +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func_fatal_error ${1+"$@"} \ + "See the $PACKAGE documentation for more information." \ + "Fatal configuration error." +} + + +# func_config +# ----------- +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + + +# func_features +# ------------- +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test yes = "$build_libtool_libs"; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test yes = "$build_old_libs"; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + + +# func_enable_tag TAGNAME +# ----------------------- +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname=$1 + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf=/$re_begincf/,/$re_endcf/p + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + + +# func_check_version_match +# ------------------------ +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# libtool_options_prep [ARG]... +# ----------------------------- +# Preparation for options parsed by libtool. +libtool_options_prep () +{ + $debug_mode + + # Option defaults: + opt_config=false + opt_dlopen= + opt_dry_run=false + opt_help=false + opt_mode= + opt_reorder_cache=false + opt_preserve_dup_deps=false + opt_quiet=false + opt_finishing=true + opt_warning= + + nonopt= + preserve_args= + + _G_rc_lt_options_prep=: + + _G_rc_lt_options_prep=: + + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + *) + _G_rc_lt_options_prep=false + ;; + esac + + if $_G_rc_lt_options_prep; then + # Pass back the list of options. + func_quote eval ${1+"$@"} + libtool_options_prep_result=$func_quote_result + fi +} +func_add_hook func_options_prep libtool_options_prep + + +# libtool_parse_options [ARG]... +# --------------------------------- +# Provide handling for libtool specific options. +libtool_parse_options () +{ + $debug_cmd + + _G_rc_lt_parse_options=false + + # Perform our own loop to consume as many options as possible in + # each iteration. + while test $# -gt 0; do + _G_match_lt_parse_options=: + _G_opt=$1 + shift + case $_G_opt in + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + + --config) func_config ;; + + --dlopen|-dlopen) + opt_dlopen="${opt_dlopen+$opt_dlopen +}$1" + shift + ;; + + --preserve-dup-deps) + opt_preserve_dup_deps=: ;; + + --features) func_features ;; + + --finish) set dummy --mode finish ${1+"$@"}; shift ;; + + --help) opt_help=: ;; + + --help-all) opt_help=': help-all' ;; + + --mode) test $# = 0 && func_missing_arg $_G_opt && break + opt_mode=$1 + case $1 in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument '$1' for $_G_opt" + exit_cmd=exit + ;; + esac + shift + ;; + + --no-finish) + opt_finishing=false + func_append preserve_args " $_G_opt" + ;; + + --no-silent|--no-quiet) + opt_quiet=false + func_append preserve_args " $_G_opt" + ;; + + --no-warnings|--no-warning|--no-warn) + opt_warning=false + func_append preserve_args " $_G_opt" + ;; + + --no-verbose) + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --reorder-cache) + opt_reorder_cache=true + shared_lib_dirs=$1 + if test -n "$shared_lib_dirs"; then + case $1 in + # Must begin with /: + /*) ;; + + # Catch anything else as an error (relative paths) + *) func_error "invalid argument '$1' for $_G_opt" + func_error "absolute paths are required for $_G_opt" + exit_cmd=exit + ;; + esac + fi + shift + ;; + + --silent|--quiet) + opt_quiet=: + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --tag) test $# = 0 && func_missing_arg $_G_opt && break + opt_tag=$1 + func_append preserve_args " $_G_opt $1" + func_enable_tag "$1" + shift + ;; + + --verbose|-v) opt_quiet=false + opt_verbose=: + func_append preserve_args " $_G_opt" + ;; + + # An option not handled by this hook function: + *) set dummy "$_G_opt" ${1+"$@"} ; shift + _G_match_lt_parse_options=false + break + ;; + esac + $_G_match_lt_parse_options && _G_rc_lt_parse_options=: + done + + if $_G_rc_lt_parse_options; then + # save modified positional parameters for caller + func_quote eval ${1+"$@"} + libtool_parse_options_result=$func_quote_result + fi +} +func_add_hook func_parse_options libtool_parse_options + + +# func_warning ARG... +# ------------------- +# Libtool warnings are not categorized, so override funclib.sh +# func_warning with this simpler definition. +func_warning () +{ + if $opt_warning; then + $debug_cmd + $warning_func ${1+"$@"} + fi +} + + +# libtool_validate_options [ARG]... +# --------------------------------- +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +libtool_validate_options () +{ + # save first non-option argument + if test 0 -lt $#; then + nonopt=$1 + shift + fi + + # preserve --debug + test : = "$debug_cmd" || func_append preserve_args " --debug" + + case $host_os in + # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 + # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 + cygwin* | mingw* | windows* | pw32* | cegcc* | solaris2* | os2*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + test yes != "$build_libtool_libs" \ + && test yes != "$build_old_libs" \ + && func_fatal_configuration "not configured to build any kind of library" + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test execute != "$opt_mode"; then + func_error "unrecognized option '-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help=$help + help="Try '$progname --help --mode=$opt_mode' for more information." + } + + # Pass back the unparsed argument list + func_quote eval ${1+"$@"} + libtool_validate_options_result=$func_quote_result +} +func_add_hook func_validate_options libtool_validate_options + + +# Process options as early as possible so that --help and --version +# can return quickly. +func_options ${1+"$@"} +eval set dummy "$func_options_result"; shift + + + +## ----------- ## +## Main. ## +## ----------- ## + +magic='%%%MAGIC variable%%%' +magic_exe='%%%MAGIC EXE variable%%%' + +# Global variables. +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# func_generated_by_libtool +# True iff stdin has been generated by Libtool. This function is only +# a basic sanity check; it will hardly flush out determined imposters. +func_generated_by_libtool_p () +{ + $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if 'file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case $lalib_p_line in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test yes = "$lalib_p" +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + test -f "$1" && + $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $debug_cmd + + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# 'FILE.' does not work on cygwin managed mounts. +func_source () +{ + $debug_cmd + + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case $lt_sysroot:$1 in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result='='$func_stripname_result + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $debug_cmd + + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with '--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=$1 + if test yes = "$build_libtool_libs"; then + write_lobj=\'$2\' + else + write_lobj=none + fi + + if test yes = "$build_old_libs"; then + write_oldobj=\'$3\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, windows, cygwin, or some other w32 environment. Relies on a +# correctly configured wine environment available, with the winepath program +# in $build's $PATH. Assumes ARG has no leading or trailing path separator +# characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $debug_cmd + + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result= + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result"; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $debug_cmd + + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $debug_cmd + + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $debug_cmd + + if test -z "$2" && test -n "$1"; then + func_error "Could not determine host file name corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result=$1 + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $debug_cmd + + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " '$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result=$3 + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $debug_cmd + + case $4 in + $1 ) func_to_host_path_result=$3$func_to_host_path_result + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +# func_convert_delimited_path PATH ORIG_DELIMITER NEW_DELIMITER +# Replaces a delimiter for a given path. +func_convert_delimited_path () +{ + converted_path=`$ECHO "$1" | $SED "s#$2#$3#g"` +} +# end func_convert_delimited_path + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via '$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $debug_cmd + + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $debug_cmd + + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result=$1 +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result=$func_convert_core_msys_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result=$func_convert_core_file_wine_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via '$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $debug_cmd + + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd=func_convert_path_$func_stripname_result + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $debug_cmd + + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result=$1 +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_msys_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_path_wine_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_dll_def_p FILE +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with _LT_DLL_DEF_P in libtool.m4 +func_dll_def_p () +{ + $debug_cmd + + func_dll_def_p_tmp=`$SED -n \ + -e 's/^[ ]*//' \ + -e '/^\(;.*\)*$/d' \ + -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ + -e q \ + "$1"` + test DEF = "$func_dll_def_p_tmp" +} + + +# func_reorder_shared_lib_cache DIRS +# Reorder the shared library cache by unconfiguring previous shared library cache +# and configuring preferred search directories before previous search directories. +# Previous shared library cache: /usr/lib /usr/local/lib +# Preferred search directories: /tmp/testing +# Reordered shared library cache: /tmp/testing /usr/lib /usr/local/lib +func_reorder_shared_lib_cache () +{ + $debug_cmd + + case $host_os in + openbsd*) + get_search_directories=`PATH="$PATH:/sbin" ldconfig -r | $GREP "search directories" | $SED "s#.*search directories:\ ##g"` + func_convert_delimited_path "$get_search_directories" ':' '\ ' + save_search_directories=$converted_path + func_convert_delimited_path "$1" ':' '\ ' + + # Ensure directories exist + for dir in $converted_path; do + # Ensure each directory is an absolute path + case $dir in + /*) ;; + *) func_error "Directory '$dir' is not an absolute path" + exit $EXIT_FAILURE ;; + esac + # Ensure no trailing slashes + func_stripname '' '/' "$dir" + dir=$func_stripname_result + if test -d "$dir"; then + if test -n "$preferred_search_directories"; then + preferred_search_directories="$preferred_search_directories $dir" + else + preferred_search_directories=$dir + fi + else + func_error "Directory '$dir' does not exist" + exit $EXIT_FAILURE + fi + done + + PATH="$PATH:/sbin" ldconfig -U $save_search_directories + PATH="$PATH:/sbin" ldconfig -m $preferred_search_directories $save_search_directories + get_search_directories=`PATH="$PATH:/sbin" ldconfig -r | $GREP "search directories" | $SED "s#.*search directories:\ ##g"` + func_convert_delimited_path "$get_search_directories" ':' '\ ' + reordered_search_directories=$converted_path + + $ECHO "Original: $save_search_directories" + $ECHO "Reordered: $reordered_search_directories" + exit $EXIT_SUCCESS + ;; + *) + func_error "--reorder-cache is not supported for host_os=$host_os." + exit $EXIT_FAILURE + ;; + esac +} +# end func_reorder_shared_lib_cache + + +# func_mode_compile arg... +func_mode_compile () +{ + $debug_cmd + + # Get the compilation command and the source file. + base_compile= + srcfile=$nonopt # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg=$arg + arg_mode=normal + ;; + + target ) + libobj=$arg + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify '-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs=$IFS; IFS=, + for arg in $args; do + IFS=$save_ifs + func_append_quoted lastarg "$arg" + done + IFS=$save_ifs + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg=$srcfile + srcfile=$arg + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with '-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj=$func_basename_result + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from '$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test yes = "$build_libtool_libs" \ + || func_fatal_configuration "cannot build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_arg pretty "$libobj" + test "X$libobj" != "X$func_quote_arg_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name '$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname=$func_basename_result + xdir=$func_dirname_result + lobj=$xdir$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test yes = "$build_old_libs"; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | windows* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test no = "$compiler_c_o"; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext + lockfile=$output_obj.lock + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test yes = "$need_locks"; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test warn = "$need_locks"; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_arg pretty "$srcfile" + qsrcfile=$func_quote_arg_result + + # Only build a PIC object if we are building libtool libraries. + if test yes = "$build_libtool_libs"; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test no != "$pic_mode"; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test yes = "$suppress_opt"; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test yes = "$build_old_libs"; then + if test yes != "$pic_mode"; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test yes = "$compiler_c_o"; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test no != "$need_locks"; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test compile = "$opt_mode" && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a '.o' file suitable for static linking + -static only build a '.o' file suitable for static linking + -Wc,FLAG + -Xcompiler FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a 'standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix '.c' with the +library object suffix, '.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to '-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the '--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the 'install' or 'cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE use a list of object files found in FILE to specify objects + -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wa,FLAG + -Xassembler FLAG pass linker-specific FLAG directly to the assembler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with '-') are ignored. + +Every other argument is treated as a filename. Files ending in '.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in '.la', then a libtool library is created, +only library objects ('.lo' files) may be specified, and '-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created +using 'ar' and 'ranlib', or on Windows using 'lib'. + +If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode '$opt_mode'" + ;; + esac + + echo + $ECHO "Try '$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test : = "$opt_help"; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | $SED -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + $SED '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# If option '--reorder-cache', reorder the shared library cache and exit. +if $opt_reorder_cache; then + func_reorder_shared_lib_cache $shared_lib_dirs +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $debug_cmd + + # The first argument is the command name. + cmd=$nonopt + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "'$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "'$file' was not linked with '-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir=$func_dirname_result + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir=$func_dirname_result + ;; + + *) + func_warning "'-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir=$absdir + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic=$magic + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file=$progdir/$program + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file=$progdir/$program + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if $opt_dry_run; then + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + else + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd=\$cmd$args + fi +} + +test execute = "$opt_mode" && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $debug_cmd + + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "'$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument '$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and '=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs" && $opt_finishing; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_quiet && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + if test "false" = "$opt_finishing"; then + echo + echo "NOTE: finish_cmds were not executed during testing, so you must" + echo "manually run ldconfig to add a given test directory, LIBDIR, to" + echo "the search path for generated executables." + fi + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the '-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the '$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the '$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the '$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test finish = "$opt_mode" && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $debug_cmd + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac + then + # Aesthetically quote it. + func_quote_arg pretty "$nonopt" + install_prog="$func_quote_arg_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_arg pretty "$arg" + func_append install_prog "$func_quote_arg_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=false + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=: ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test X-m = "X$prev" && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_arg pretty "$arg" + func_append install_prog " $func_quote_arg_result" + if test -n "$arg2"; then + func_quote_arg pretty "$arg2" + fi + func_append install_shared_prog " $func_quote_arg_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the '$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_arg pretty "$install_override_mode" + func_append install_shared_prog " -m $func_quote_arg_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=: + if $isdir; then + destdir=$dest + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir=$func_dirname_result + destname=$func_basename_result + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "'$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "'$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir=$func_dirname_result + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Strip any trailing slash from the destination. + func_stripname '' '/' "$libdir" + destlibdir=$func_stripname_result + + func_stripname '' '/' "$destdir" + s_destdir=$func_stripname_result + + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "X$s_destdir" | $Xsed -e "s%$destlibdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking '$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname=$1 + shift + + srcname=$realname + test -n "$relink_command" && srcname=${realname}T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme=$stripme + case $host_os in + cygwin* | mingw* | windows* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme= + ;; + esac + ;; + os2*) + case $realname in + *_dll.a) + tstripme= + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try 'ln -sf' first, because the 'ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib=$destdir/$realname + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name=$func_basename_result + instname=$dir/${name}i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest=$destfile + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to '$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test yes = "$build_old_libs"; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext= + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=.exe + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw* | *windows*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script '$wrapper'" + + finalize=: + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "'$lib' has not been installed in '$libdir'" + finalize=false + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test no = "$fast_install" && test -n "$relink_command"; then + $opt_dry_run || { + if $finalize; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file=$func_basename_result + outputname=$tmpdir/$file + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_quiet || { + func_quote_arg expand,pretty "$relink_command" + eval "func_echo $func_quote_arg_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink '$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file=$outputname + else + func_warning "cannot relink '$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name=$func_basename_result + + # Set up the ranlib parameters. + oldlib=$destdir/$name + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run '$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test install = "$opt_mode" && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $debug_cmd + + my_outputname=$1 + my_originator=$2 + my_pic_p=${3-false} + my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms=${my_outputname}S.c + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist=$output_objdir/$my_outputname.nm + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* External symbol declarations for the compiler. */\ +" + + if test yes = "$dlself"; then + func_verbose "generating symbol list for '$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from '$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols=$output_objdir/$outputname.exp + $opt_dry_run || { + $RM $export_symbols + eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *windows* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *windows* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from '$dlprefile'" + func_basename "$dlprefile" + name=$func_basename_result + case $host in + *cygwin* | *mingw* | *windows* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename= + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname"; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename=$func_basename_result + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename"; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + case $host in + i[3456]86-*-mingw32*) + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + ;; + *) + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/__nm_//' >> '$nlist'" + ;; + esac + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + func_show_eval '$RM "${nlist}I"' + if test -n "$global_symbol_to_import"; then + eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[];\ +" + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ +static void lt_syminit(void) +{ + LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; + for (; symbol->name; ++symbol) + {" + $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" + echo >> "$output_objdir/$my_dlsyms" "\ + } +}" + fi + echo >> "$output_objdir/$my_dlsyms" "\ +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{ {\"$my_originator\", (void *) 0}," + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ + {\"@INIT@\", (void *) <_syminit}," + fi + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + $my_pic_p && pic_flag_for_symtable=" $pic_flag" + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' + + # Transform the symbol file into the correct name. + symfileobj=$output_objdir/${my_outputname}S.$objext + case $host in + *cygwin* | *mingw* | *windows* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for '$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $debug_cmd + + win32_libid_type=unknown + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|pe-aarch64)' >/dev/null; then + case $nm_interface in + "MS dumpbin") + if func_cygming_ms_implib_p "$1" || + func_cygming_gnu_implib_p "$1" + then + win32_nmres=import + else + win32_nmres= + fi + ;; + *) + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s|.*|import| + p + q + } + }'` + ;; + esac + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $debug_cmd + + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $debug_cmd + + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive that possess that section. Heuristic: eliminate + # all those that have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $debug_cmd + + if func_cygming_gnu_implib_p "$1"; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1"; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result= + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $debug_cmd + + f_ex_an_ar_dir=$1; shift + f_ex_an_ar_oldlib=$1 + if test yes = "$lock_old_archive_extraction"; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test yes = "$lock_old_archive_extraction"; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $debug_cmd + + my_gentop=$1; shift + my_oldlibs=${1+"$@"} + my_oldobjs= + my_xlib= + my_xabs= + my_xdir= + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib=$func_basename_result + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir=$my_gentop/$my_xlib_u + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + func_basename "$darwin_archive" + darwin_base_archive=$func_basename_result + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches; do + func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" + $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" + cd "unfat-$$/$darwin_base_archive-$darwin_arch" + func_extract_an_archive "`pwd`" "$darwin_base_archive" + cd "$darwin_curdir" + $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result=$my_oldobjs +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw/windows +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory where it is stored is +# the $objdir directory. This is a cygwin/mingw/windows-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + func_quote_arg pretty "$ECHO" + qECHO=$func_quote_arg_result + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=$qECHO + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ that is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options that match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw* | *-*-windows* | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw/windows when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test yes = "$fast_install"; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + \$ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#if defined _WIN32 && !defined __GNUC__ +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* declarations of non-ANSI functions */ +#if defined __MINGW32__ +# ifdef __STRICT_ANSI__ +_CRTIMP int __cdecl _putenv (const char *); +# endif +#elif defined __CYGWIN__ +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined other_platform || defined ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined _MSC_VER +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +#elif defined __MINGW32__ +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined __CYGWIN__ +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined other platforms ... */ +#endif + +#if defined PATH_MAX +# define LT_PATHMAX PATH_MAX +#elif defined MAXPATHLEN +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ + defined __OS2__ +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free (stale); stale = 0; } \ +} while (0) + +#if defined LT_DEBUGWRAPPER +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + size_t tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined HAVE_DOS_BASED_FILE_SYSTEM + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined HAVE_DOS_BASED_FILE_SYSTEM + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = (size_t) (q - p); + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (STREQ (str, pat)) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + size_t len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + size_t orig_value_len = strlen (orig_value); + size_t add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + size_t len = strlen (new_value); + while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[--len] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw* | windows*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \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" +#define SHELL_SPACE_CHARS " \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" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $debug_cmd + + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_suncc_cstd_abi +# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! +# Several compiler flags select an ABI that is incompatible with the +# Cstd library. Avoid specifying it if any are in CXXFLAGS. +func_suncc_cstd_abi () +{ + $debug_cmd + + case " $compile_command " in + *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) + suncc_use_cstd_abi=no + ;; + *) + suncc_use_cstd_abi=yes + ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $debug_cmd + + case $host in + *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # what system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll that has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + compile_rpath_tail= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + os2dllname= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=false + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + temp_rpath_tail= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + rpath_arg= + single_module=$wl-single_module + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test yes != "$build_libtool_libs" \ + && func_fatal_configuration "cannot build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg=$1 + shift + func_quote_arg pretty,unquoted "$arg" + qarg=$func_quote_arg_unquoted_result + func_append libtool_args " $func_quote_arg_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir=$arg + prev= + continue + ;; + dlfiles|dlprefiles) + $preload || { + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=: + } + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test no = "$dlself"; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test dlprefiles = "$prev"; then + dlself=yes + elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test dlfiles = "$prev"; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols=$arg + test -f "$arg" \ + || func_fatal_error "symbol file '$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex=$arg + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir=$arg + prev= + continue + ;; + mllvm) + # Clang does not use LLVM to link, so we can simply discard any + # '-mllvm $arg' options when doing the link step. + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + if test none != "$pic_object"; then + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + fi + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file '$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + os2dllname) + os2dllname=$arg + prev= + continue + ;; + precious_regex) + precious_files_regex=$arg + prev= + continue + ;; + release) + release=-$arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "argument to -rpath is not absolute: $arg" + ;; + esac + if test rpath = "$prev"; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds=$arg + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xassembler) + func_append compiler_flags " -Xassembler $qarg" + prev= + func_append compile_command " -Xassembler $qarg" + func_append finalize_command " -Xassembler $qarg" + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg=$arg + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "'-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test X-export-symbols = "X$arg"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between '-L' and '$1'" + else + func_fatal_error "need path for '-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of '$dir'" + dir=$absdir + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test X-lc = "X$arg" || test X-lm = "X$arg"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test X-lc = "X$arg" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) + # Do not include libc due to us having libc/libc_r. + test X-lc = "X$arg" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test X-lc = "X$arg" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test X-lc = "X$arg" && continue + ;; + esac + elif test X-lc_r = "X$arg"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -mllvm) + prev=mllvm + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + # -q