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