From 5d8a6d1ef2411043db7317e1f34e327d3771301073110d039bc41fd13f1138b2 Mon Sep 17 00:00:00 2001 From: "Dr. Werner Fink" Date: Mon, 11 Nov 2024 09:11:28 +0000 Subject: [PATCH 1/3] - Drop libzio integration (man-db-2.7.1-zio.dif, BuildRequires and flag) to restore acceptable performance (boo#1232837): OBS-URL: https://build.opensuse.org/package/show/Base:System/man?expand=0&rev=157 --- .gitattributes | 23 + .gitignore | 1 + cron.daily.do_mandb | 71 ++ man-db-2.12.1.tar.xz | 3 + man-db-2.12.1.tar.xz.asc | 16 + man-db-2.13.0.tar.xz | 3 + man-db-2.13.0.tar.xz.asc | 16 + man-db-2.3.19deb4.0-groff.dif | 61 + man-db-2.6.3-chinese.dif | 54 + man-db-2.6.3-listall.dif | 225 ++++ man-db-2.6.3-man0.dif | 12 + man-db-2.7.1-zio.dif | 199 ++++ man-db-2.9.4-no-chown.patch | 26 + man-db-2.9.4.patch | 743 ++++++++++++ man-db-create.service | 30 + man-propose-online.patch | 37 + man-rpmlintrc | 4 + man.changes | 2029 +++++++++++++++++++++++++++++++++ man.keyring | 648 +++++++++++ man.spec | 444 ++++++++ manpath.csh | 16 + manpath.sh | 17 + reproducible.patch | 16 + sysconfig.cron-man | 8 + wrapper.c | 175 +++ 25 files changed, 4877 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 cron.daily.do_mandb create mode 100644 man-db-2.12.1.tar.xz create mode 100644 man-db-2.12.1.tar.xz.asc create mode 100644 man-db-2.13.0.tar.xz create mode 100644 man-db-2.13.0.tar.xz.asc create mode 100644 man-db-2.3.19deb4.0-groff.dif create mode 100644 man-db-2.6.3-chinese.dif create mode 100644 man-db-2.6.3-listall.dif create mode 100644 man-db-2.6.3-man0.dif create mode 100644 man-db-2.7.1-zio.dif create mode 100644 man-db-2.9.4-no-chown.patch create mode 100644 man-db-2.9.4.patch create mode 100644 man-db-create.service create mode 100644 man-propose-online.patch create mode 100644 man-rpmlintrc create mode 100644 man.changes create mode 100644 man.keyring create mode 100644 man.spec create mode 100644 manpath.csh create mode 100644 manpath.sh create mode 100644 reproducible.patch create mode 100644 sysconfig.cron-man create mode 100644 wrapper.c diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/cron.daily.do_mandb b/cron.daily.do_mandb new file mode 100644 index 0000000..74fa679 --- /dev/null +++ b/cron.daily.do_mandb @@ -0,0 +1,71 @@ +#!/bin/bash +# +# +# do_mandb. This script was split off cron.daily. +# Please add your local changes to cron.daily.local +# since this file will be overwritten, when updating your system. +# +# Copyright (c) 1996-2002 SuSE GmbH Nuernberg, Germany. +# Copyright (c) 2008 SuSE LINUX Products GmbH Nuernberg, Germany. +# +# please send bugfixes or comments to feedback@suse.de. +# +# Author: Werner Fink , 2008, 2019 +# Burchard Steinbild , 1996 +# Florian La Roche , 1996 +# + +# +# paranoia settings +# +umask 022 + +PATH=/sbin:/bin:/usr/sbin:/usr/bin +export PATH + +# +# get information from /etc/sysconfig/cron +# +if test -f /etc/sysconfig/cron ; then + . /etc/sysconfig/cron +fi + + +# +# now we do the man page stuff +# +if test "$REINIT_MANDB" = yes ; then + if type -p mandb > /dev/null 2>&1 ; then + typeset -r manpaths=$(manpath -g) + typeset -i errors=0 + renice +5 -p $$ > /dev/null || true + ionice -c 3 -p $$ > /dev/null || true + unset MANPATH + IFS=: + for mp in $manpaths; do + test -d "${mp}" || continue + cp=$(MANPATH=$mp manpath -qc) + test -n "${cp}" || continue + test -d "${cp}" || continue + db=${cp}/index.db + if test -e ${db} ; then + path="$(find $mp -follow -newer $db 2>/dev/null)" + test -n "$path" || continue + fi + nice -n 5 ionice -c 3 mandb -qs ${mp} > /dev/null 2>&1 || let errors++ + done + if test $errors -ne 0 ; then + echo There seem to be trouble with mandb. + echo + echo please run mandb and check the output... + fi + fi + # + # some applications need whatis database. If makewhatis exists, call it + # + if type -p makewhatis > /dev/null 2>&1 ; then + makewhatis + fi +fi + +exit 0 diff --git a/man-db-2.12.1.tar.xz b/man-db-2.12.1.tar.xz new file mode 100644 index 0000000..ce73776 --- /dev/null +++ b/man-db-2.12.1.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ddee249daeb78cf92bab794ccd069cc8b575992265ea20e239e887156e880265 +size 2041380 diff --git a/man-db-2.12.1.tar.xz.asc b/man-db-2.12.1.tar.xz.asc new file mode 100644 index 0000000..1d85a7c --- /dev/null +++ b/man-db-2.12.1.tar.xz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCAAdFiEErApP8SYRtvzPAcEROTWH2X2GUAsFAmYPse4ACgkQOTWH2X2G +UAvBxw/7BDtS8DeH3qM05clHDjeiG+/qzopxcRJAgw8OV6t3wcHGy34bjPug3qWo +BWHyT6jYw6tMJK63pSso5b99acB16uOIx480icEk9U8aOMjyaamat3Rdq2aXnM7t +5XybWoGCtIFF9AKJNes7B+SzesjYM6xc1R8YHWu53Ihz9yktVHUtNsQE/aop5tuJ +8G+qapUjNPrnytEUHog+Id7uwXx8/fwU/K+nGsYSVNUrXp833TKsUKmgywWoV9ER +3mS0Qu558MuWFX91o6hxu3dg0aE86oS8Xn/EaX5V9S0TaVtgvj5XgO+ookZFKMbZ +e98j2ZNvWz7vPH9xgAxD7i3/lJJ0UUGLquSAzdFcxKEPjGvhXWdb8AMEMCJJR2VI +lwNlu/0jzGuH+IU6UiIBg2bHA3CJ/AlYuqutwtTZluuXQJlUOkMj1KKTMREKlHCP +Jqhf5ezC9/Hnv6q+fnRZFKDwYZ2UR844QcS5LA5DIEcTiRV41Ixn1nBPV3MnTfNK +UjlaetT5T/xuEXv4yNnE6eLmPyOmFwUD7fd8CBUwX8pA4O41OINKCwp5jOrZvbeZ +okIiCdtbT964YymstD4v+DSbMfvEzw41rzPeV3Zt3Nstb6zq3LyCXhXDM5UIl9VA +f3J7HWzMtZ4/3L8W0sqUTOSW1A0DwCFYigHjSUyGY6ce/kwD6hE= +=5v8w +-----END PGP SIGNATURE----- diff --git a/man-db-2.13.0.tar.xz b/man-db-2.13.0.tar.xz new file mode 100644 index 0000000..16e328a --- /dev/null +++ b/man-db-2.13.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82f0739f4f61aab5eb937d234de3b014e777b5538a28cbd31433c45ae09aefb9 +size 2071032 diff --git a/man-db-2.13.0.tar.xz.asc b/man-db-2.13.0.tar.xz.asc new file mode 100644 index 0000000..c707bf7 --- /dev/null +++ b/man-db-2.13.0.tar.xz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCAAdFiEErApP8SYRtvzPAcEROTWH2X2GUAsFAmbQWvEACgkQOTWH2X2G +UAv41g/9EwS08JyC1q9NY9K/m+dbrweHuNTJOWu9PfBQNmxDD+39uWOcqzf+Wg7S +rorbs1mHbn+6JG/7PcugGcUucSJOPLB36+DJzVXwGip13aJi8WNWqSEV2RtiPsA0 +3DJHvCEB2WcbxbumWxowgpQaWxUy+1FssSCf0ScVqWDc46V8zUWq1rmtgejEOc7m +Eumxc4J+0mhwGx0IB+djjmde/ciqoDQ4ANqLZ7hNMg0+b3l92NRYgBspXfoBjQp9 ++wk1cimgrI1oW9gpmO/wZ4LSwsK7YvhdL+zPRjL6HADQaXlpHY7pkx0X/qhqXplo +eUu7GlWSVF6z813g4MAZGdH03coCGLHfbqMWsRiOwKuefmMQsARPVDFAIJtOfsYz +qo3h5pUf0PzVuzRweuA3laM6dHkVhGmewWyzXSH3MbRUlDK17I7h9gY0dtDw4GWz +S+Ppw1Ar2xiN62G9PDtjkt4v/axNbdKaHEMUBqEuzYmBBaJeKxWkRcmXG5smvFb9 +fsuoyFxh/opd01Kp8QrU3T6iIIhzSr4SLZMFzxZ1ai8d8AzkHwfBNiQAh5Q94Gtp +qYy/mv7jOpDt0QyyaxMO001/9uFD0Sh3w5lRN0SQCJ0T84bxYY+eVMveSg8qlZsE +53sFdxIbqLetvcHx9L4WXlRLdJXqS+YF2wbe5Dwr+MT+1ys3YKY= +=PUlf +-----END PGP SIGNATURE----- diff --git a/man-db-2.3.19deb4.0-groff.dif b/man-db-2.3.19deb4.0-groff.dif new file mode 100644 index 0000000..c91a6a5 --- /dev/null +++ b/man-db-2.3.19deb4.0-groff.dif @@ -0,0 +1,61 @@ +--- groff/tmac.andb ++++ groff/tmac.andb Fri Apr 6 19:08:58 2001 +@@ -0,0 +1,29 @@ ++.\" tmac.(m)andb ++.\" ++.\" This is part of the man(db) package of SuSE Linux ++.\" Author: Werner Fink ++.\" ++.\" Load tmac.an ++.\" ++.mso tmac.an ++.\" ++.\" Remember the original macros for headers and footers ++.\" and Overwrite them. The original footers macros will ++.\" be called at the bitter end. ++.\" ++.rn an-header db@header ++.de an-header ++. if (\\n% == 1) \ ++. db@header ++.. ++.rn an-footer db@footer ++.de an-footer ++.. ++.rn an-p-footer db@p-footer ++.de an-p-footer ++.. ++.de db@end ++. wh -1i db@footer ++. wh -.5i db@p-footer ++.. ++.em db@end +--- groff/tmac.andocdb ++++ groff/tmac.andocdb Fri Apr 6 19:08:58 2001 +@@ -0,0 +1,26 @@ ++.\" tmac.(m)andocdb ++.\" ++.\" This is part of the man(db) package of SuSE Linux ++.\" Author: Werner Fink ++.\" ++.\" Just like tmac.andoc but ++.\" load either tmac.andb or tmac.doc ++.\" ++.if !\n(.g .ab These macros require groff. ++.de Dd ++.rm Dd ++.do mso tmac.doc ++\\*(Dd\\ ++.. ++.de TH ++.rm TH ++.do mso tmac.andb ++\\*(TH\\ ++.. ++.if '\*[.T]'utf8' \{\ ++. char \- \N'45' ++. char - \N'45' ++. char ' \N'39' ++. char ` \N'96' ++.\} ++.. diff --git a/man-db-2.6.3-chinese.dif b/man-db-2.6.3-chinese.dif new file mode 100644 index 0000000..0c9165d --- /dev/null +++ b/man-db-2.6.3-chinese.dif @@ -0,0 +1,54 @@ +--- + lib/encodings.c | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +--- lib/encodings.c ++++ lib/encodings.c 2016-12-15 14:07:01.072034899 +0000 +@@ -227,6 +227,7 @@ static struct charset_entry charset_tabl + { "EUC-CN", "nippon" }, + { "EUC-JP", "nippon" }, + { "EUC-TW", "nippon" }, ++ { "GB18030", "nippon" }, + { "GBK", "nippon" }, + # else /* !MULTIBYTE_GROFF */ + /* If we have a smarter version of groff, this is better dealt with +@@ -314,6 +315,7 @@ static struct less_charset_entry less_ch + + #ifdef MULTIBYTE_GROFF + { "CP1251", "windows", NULL }, ++ { "GB18030", "zh", NULL }, + { "EUC-JP", "iso8859", "japanese-ujis" }, + { "KOI8-R", "koi8-r", NULL }, + /* close enough? */ +@@ -452,6 +454,13 @@ char *get_page_encoding (const char *lan + * roff encoding = ISO-8859-15 + * output encoding = ISO-8859-15 + * ISO-8859-15 -> groff -Tascii8 -> ISO-8859-15 -> iconv -> UTF-8 ++ * ++ * /usr/share/man/zh_CN.GB18030, locale zh_CN.UTF-8 ++ * page encoding = GB18030 ++ * source encoding = GB18030 ++ * roff encoding = UTF-8 ++ * output encoding = UTF-8 ++ * GB18030 -> iconv -> UTF-8 -> groff -Tutf8 -> UTF-8 + */ + const char *get_source_encoding (const char *lang) + { +@@ -620,7 +629,7 @@ static int compatible_encodings (const c + */ + if ((STREQ (input, "BIG5") || STREQ (input, "BIG5HKSCS") || + STREQ (input, "EUC-JP") || +- STREQ (input, "EUC-CN") || STREQ (input, "GBK") || ++ STREQ (input, "EUC-CN") || STREQ (input, "GB18030") || STREQ (input, "GBK") || + STREQ (input, "EUC-KR") || + STREQ (input, "EUC-TW")) && + STREQ (output, "UTF-8")) +@@ -724,7 +733,7 @@ const char *get_roff_encoding (const cha + STRNEQ (ctype, "zh_HK", 5) || + STRNEQ (ctype, "zh_SG", 5) || + STRNEQ (ctype, "zh_TW", 5)) +- roff_encoding = "UTF-8"; ++ roff_encoding = source_encoding; /* "UTF-8"; */ + } + #endif /* MULTIBYTE_GROFF */ + diff --git a/man-db-2.6.3-listall.dif b/man-db-2.6.3-listall.dif new file mode 100644 index 0000000..e70fd0e --- /dev/null +++ b/man-db-2.6.3-listall.dif @@ -0,0 +1,225 @@ +--- + man/man1/man.man1 | 8 ++ + src/man.c | 180 +++++++++++++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 186 insertions(+), 2 deletions(-) + +--- man/man1/man.man1 ++++ man/man1/man.man1 2022-08-17 13:11:29.974677243 +0000 +@@ -1236,6 +1236,14 @@ However, some users want to see them any + .RB $ MAN_KEEP_STDERR + is set to any non-empty value, error output will be displayed as usual. + .TP ++.if !'po4a'hide' .BR MAN_POSIXLY_CORRECT ++If many man pages are available corresponding to the requested one, ++.B %man% ++will display them in a list, unless ++.RB $ MAN_POSIXLY_CORRECT ++is set, in which case the first page in the list will be displayed ++automatically. ++.TP + .if !'po4a'hide' .B MAN_DISABLE_SECCOMP + On Linux, + .B %man% +--- src/man.c ++++ src/man.c 2022-08-17 13:10:07.436205495 +0000 +@@ -3651,12 +3651,141 @@ static int locate_page (const char *manp + return found; + } + ++#ifndef PROMPT_IF_MULTIPLE_SECTIONS ++#define PROMPT_IF_MULTIPLE_SECTIONS 2 /* 0: No prompt; 1: Show possible sections; 2: Do prompt for */ ++#endif ++ ++#if defined(PROMPT_IF_MULTIPLE_SECTIONS) && (PROMPT_IF_MULTIPLE_SECTIONS > 1) ++static sig_atomic_t expired; ++static void handler(int sig) ++{ ++ (void)sig; ++ expired++; ++} ++#endif ++ + static int display_pages (struct candidate *candidates) + { + struct candidate *candp; + int found = 0; ++ int plain = 0; ++ ++#if defined(PROMPT_IF_MULTIPLE_SECTIONS) && (PROMPT_IF_MULTIPLE_SECTIONS > 1) ++ char reqsect[64] = { 0 }; ++ ssize_t len = 0; ++ int index = -1; ++ const char *lext; ++ do { ++ struct sigaction sa; ++ int used = 0x2A; ++ ++ if (findall) ++ break; ++ if (external) ++ break; ++ if ((troff + catman + (print_where || print_where_cat))) ++ break; ++ if (getenv("MAN_POSIXLY_CORRECT")) ++ break; ++ if (!isatty(STDOUT_FILENO)) ++ break; ++ if (!isatty(STDERR_FILENO)) ++ break; ++ if (!isatty(STDIN_FILENO)) ++ break; ++ if (candidates->next == (struct candidate*)0) ++ break; ++ ++ fputs("Man: ", stderr); ++ fputs(_("find all matching manual pages"), stderr); ++ fputs(" (set MAN_POSIXLY_CORRECT to avoid this)", stderr); ++ fputc('\n', stderr); ++ ++ lext = NULL; ++ for (candp = candidates; candp; candp = candp->next) { ++ const struct mandata *info = candp->source; ++ ++ if (lext && STREQ(lext, info->ext)) ++ fprintf(stderr, " %c %s (%s+%d)", used, info->name, info->ext, candp->add_index); ++ else ++ fprintf(stderr, " %c %s (%s)", used, info->name, info->ext); ++ ++ if (info->whatis) ++ fprintf(stderr, "\t%s", info->whatis); ++ fputc('\n', stderr); ++ lext = info->ext; ++ used = ' '; ++ } ++ fputs("Man: ", stderr); ++ fputs(_("What manual page do you want?\n"), stderr); ++ fputs("Man: ", stderr); ++ fflush(stderr); ++ ++ sigemptyset(&sa.sa_mask); ++ sa.sa_flags = SA_RESETHAND; ++ sa.sa_handler = handler; ++ ++ sigaction(SIGALRM, &sa, (struct sigaction*)0); ++ ++ alarm(7); ++ len = read(STDIN_FILENO, reqsect, sizeof(reqsect)-1); ++ alarm(0); ++ ++ if (expired) { ++ tcflush(STDIN_FILENO, TCIFLUSH); ++ fputc('\n', stderr); ++ fflush(stderr); ++ len = 0; ++ break; ++ } ++ if (len > 0) { ++ char * end; ++ if ((end = strchr(reqsect, '\n'))) ++ *end = '\0'; ++ if ((end = strchr(reqsect, '+'))) { ++ plain = 1; ++ *end = '\0'; ++ if (*++end) ++ index = atoi(end); ++ } ++ reqsect[len] = '\0'; ++ len = (ssize_t)strlen(reqsect); ++ ++ for (candp = candidates; candp; candp = candp->next) { ++ if (len == 0) ++ break; ++ if (plain) { ++ const char *base = strrchr(candp->path, '/'); ++ if (base && !STREQ(base, "/man")) ++ continue; ++ } ++ if (index >= 0 && index != candp->add_index) ++ continue; ++ if ((found = STREQ(reqsect, candp->source->ext))) ++ break; ++ } ++ if (!found) ++ len = 0; ++ found = 0; ++ } ++ } while (0); ++#endif + + for (candp = candidates; candp; candp = candp->next) { ++ ++#if defined(PROMPT_IF_MULTIPLE_SECTIONS) && (PROMPT_IF_MULTIPLE_SECTIONS > 1) ++ if (plain) { ++ const char *base = strrchr(candp->path, '/'); ++ if (base && !STREQ(base, "/man")) ++ continue; ++ } ++ if (len) { ++ if (!STREQ(reqsect, candp->source->ext)) ++ continue; ++ if (index >= 0 && index != candp->add_index) ++ continue; ++ } ++#endif + global_manpath = is_global_mandir (candp->path); + if (!global_manpath) + drop_effective_privs (); +@@ -3679,9 +3808,56 @@ static int display_pages (struct candida + regain_effective_privs (); + + if (found && !findall) +- return found; ++ { ++#if defined(PROMPT_IF_MULTIPLE_SECTIONS) && (PROMPT_IF_MULTIPLE_SECTIONS > 0) ++ if (external) ++ goto out; ++ if ((troff + catman + (print_where || print_where_cat))) ++ goto out; ++# if defined(PROMPT_IF_MULTIPLE_SECTIONS) && (PROMPT_IF_MULTIPLE_SECTIONS == 1) ++ if (getenv("MAN_POSIXLY_CORRECT")) ++ goto out; ++# endif ++ if (!isatty(STDOUT_FILENO)) ++ goto out; ++ if (!isatty(STDERR_FILENO)) ++ goto out; ++ /* ++ * Should be able to use the output as done by whatis(1) ++ */ ++# if defined(PROMPT_IF_MULTIPLE_SECTIONS) && (PROMPT_IF_MULTIPLE_SECTIONS == 1) ++ if (candp->next) ++# else ++ if (candp->next && getenv("MAN_POSIXLY_CORRECT")) ++# endif ++ { ++ int used = 0x2A; ++ ++ fputs("Man: ", stderr); ++ fputs(_("find all matching manual pages"), stderr); ++ fputc('\n', stderr); ++ ++ lext = NULL; ++ do { ++ struct mandata *info = candp->source; ++ if (lext && STREQ(lext, info->ext)) ++ fprintf(stderr, " %c %s (%s+%d)", used, info->name, info->ext, candp->add_index); ++ else ++ fprintf(stderr, " %c %s (%s)", used, info->name, info->ext); ++ if (info->whatis) { ++ fprintf(stderr, "\t%s", info->whatis); ++ } ++ fputc('\n', stderr); ++ lext = info->ext; ++ used = ' '; ++ } while ((candp = candp->next)); ++ fflush(stderr); ++ } ++#endif ++ goto out; ++ } + } +- ++out: + return found; + } + diff --git a/man-db-2.6.3-man0.dif b/man-db-2.6.3-man0.dif new file mode 100644 index 0000000..cd6949f --- /dev/null +++ b/man-db-2.6.3-man0.dif @@ -0,0 +1,12 @@ +--- man/man1/man.man1 ++++ man/man1/man.man1 2018-11-23 14:23:22.531297359 +0000 +@@ -93,6 +93,9 @@ numbers of the manual followed by the ty + .TS + tab (@); + l lx. ++0@T{ ++Header files (usually found in \fI/usr/include\fR) ++T} + 1@T{ + Executable programs or shell commands + T} diff --git a/man-db-2.7.1-zio.dif b/man-db-2.7.1-zio.dif new file mode 100644 index 0000000..57e6754 --- /dev/null +++ b/man-db-2.7.1-zio.dif @@ -0,0 +1,199 @@ +--- + config.h.in | 3 ++ + configure.ac | 52 +++++++++++++++++++++++++++++++++++++++++ + src/decompress.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- + 3 files changed, 123 insertions(+), 1 deletion(-) + +--- config.h.in ++++ config.h.in 2024-10-18 12:05:43.927063826 +0000 +@@ -1148,6 +1148,9 @@ + /* Define to 1 if you have the `z' library (-lz). */ + #undef HAVE_LIBZ + ++/* Define to 1 if you have libzio for opening compressed manuals */ ++#undef HAVE_ZIO ++ + /* Define to 1 if the bcrypt library is guaranteed to be present. */ + #undef HAVE_LIB_BCRYPT + +--- configure.ac ++++ configure.ac 2024-10-18 12:05:43.927063826 +0000 +@@ -35,6 +35,18 @@ MAN_ARG_DEVICE + MAN_ARG_DB + MAN_ARG_CONFIG_FILE + MAN_ARG_SECTIONS ++AC_ARG_WITH([zio], ++[AS_HELP_STRING([--with-zio=LIBRARY], [use zlib/libbz2 wrapper library LIBRARY (libzio)])], ++ [if test -z "$withval" -o "$withval" = "yes" ++ then ++ zio=libzio ++ elif test "$withval" = "no" ++ then ++ AC_MSG_ERROR(--with-zio requires an argument) ++ else ++ zio=$withval ++ fi], ++ [: ${zio=no}]) + MAN_ARG_AUTOMATIC_CREATE + MAN_ARG_AUTOMATIC_UPDATE + MAN_ARG_CATS +@@ -374,6 +386,46 @@ AC_DEFINE_UNQUOTED([PROG_UNXZ], ["$unxz" + AC_DEFINE_UNQUOTED([PROG_UNLZIP], ["$unlzip"], [Program to use as unlzip.]) + AC_DEFINE_UNQUOTED([PROG_UNZSTD], ["$unzstd"], [Program to use as unzstd.]) + MAN_COMPRESS_LIB([z], [gzopen]) ++dnl Check for zlib and libbz2 libraries to use this together ++dnl with SUSE's libzio to open compressed info files. ++dnl ++if test "$zio" = "no" || test -n "$zio" ++then ++ AC_CHECK_HEADER(zio.h,[ ++ for lib in ${zio#lib} zio ++ do ++ AC_CHECK_LIB($lib, fzopen, [LIBS="-l$lib $LIBS"; am_cv_libzio=yes]) ++ done ++ ]) ++ if test "$am_cv_libzio" = yes; then ++ AC_DEFINE([COMP_SRC],[],[Define if you have compressors and want to support compressed cat files.]) ++ AC_DEFINE([HAVE_ZIO],[],[Define to 1 if you have libzio for opening compressed manuals]) ++ AC_CHECK_HEADER(zlib.h,[ ++ for lib in z gz ++ do ++ AC_CHECK_LIB($lib, gzopen, [LIBS="$LIBS -Wl,--no-as-needed -l$lib"; break]) ++ done ++ ]) ++ AC_CHECK_HEADER(bzlib.h,[ ++ for lib in bz2 bzip2 ++ do ++ AC_CHECK_LIB($lib, BZ2_bzopen, [LIBS="$LIBS -Wl,--no-as-needed -l$lib"; break]) ++ done ++ ]) ++ AC_CHECK_HEADER(lzmadec.h, [ ++ for lib in lzma lzmadec ++ do ++ AC_CHECK_LIB($lib, lzmadec_open, [LIBS="$LIBS -Wl,--no-as-needed -l$lib"; break]) ++ done ++ ]) ++ AC_CHECK_HEADER(lzma.h, [ ++ for lib in lzma ++ do ++ AC_CHECK_LIB($lib, lzma_easy_encoder, [LIBS="$LIBS -Wl,--no-as-needed -l$lib"; break]) ++ done ++ ]) ++ fi ++fi + dnl To add more decompressors just follow the scheme above. + + # Check for various header files and associated libraries. +--- src/decompress.c ++++ src/decompress.c 2024-10-18 12:11:37.516631374 +0000 +@@ -40,12 +40,17 @@ + + #include "pipeline.h" + ++#include "appendstr.h" + #include "attribute.h" + #include "minmax.h" + #include "xalloc.h" + #include "xstrndup.h" + #include "xvasprintf.h" + ++#ifdef HAVE_ZIO ++# include "zio.h" ++#endif /* HAVE_ZIO */ ++ + #include "manconfig.h" + + #include "compression.h" +@@ -189,6 +194,32 @@ static decompress *decompress_try_zlib ( + # define OPEN_FLAGS_UNUSED MAYBE_UNUSED + #endif /* HAVE_LIBZ */ + ++#ifdef HAVE_ZIO ++ ++static void decompress_zio (void *data) ++{ ++ const char *what = (const char*)data; ++ FILE *file; ++ ++ file = fdzopen(dup (fileno (stdin)), "r", what); ++ if (!file) ++ return; ++ ++ for (;;) { ++ char buffer[4096]; ++ int r = fread(buffer, sizeof(char), sizeof(buffer), file); ++ if (r <= 0) ++ break; ++ if (fwrite (buffer, 1, (size_t) r, stdout) < (size_t) r) ++ break; ++ } ++ ++ fclose(file); ++ return; ++} ++ ++#endif /* HAVE_ZIO */ ++ + decompress *decompress_open (const char *filename, int flags OPEN_FLAGS_UNUSED) + { + pipecmd *cmd; +@@ -203,6 +234,38 @@ decompress *decompress_open (const char + if (stat (filename, &st) < 0 || S_ISDIR (st.st_mode)) + return NULL; + ++#ifdef HAVE_ZIO ++ ext = strrchr (filename, '.'); ++ if (ext) { ++ const char *opt; ++ char *name = NULL; ++ ++ if (STREQ (ext, ".gz")) ++ opt = "g"; ++ else if (STREQ (ext, ".z")) ++ opt = "z"; ++ else if (STREQ (ext, ".bz2")) ++ opt = "b"; ++ else if (STREQ (ext, ".xz")) ++ opt = "x"; ++ else if (STREQ (ext, ".lzma")) ++ opt = "l"; ++ else if (STREQ (ext, ".Z")) ++ opt = "Z"; ++ else ++ goto nozio; ++ ++ /* informational only; no shell quoting concerns */ ++ name = appendstr (NULL, "libzio < ", filename, (void *) 0); ++ cmd = pipecmd_new_function (name, &decompress_zio, NULL, ++ (void *)opt); ++ pipecmd_pre_exec (cmd, sandbox_load, sandbox_free, sandbox); ++ p = pipeline_new_commands (cmd, (void *) 0); ++ free (name); ++ goto got_pipeline; ++ } ++#endif /* HAVE_ZIO */ ++ + #ifdef HAVE_LIBZ + filename_len = strlen (filename); + if (filename_len > 3 && STREQ (filename + filename_len - 3, ".gz")) { +@@ -220,7 +283,11 @@ decompress *decompress_open (const char + } + #endif /* HAVE_LIBZ */ + ++#ifdef HAVE_ZIO ++nozio: ++#else + ext = strrchr (filename, '.'); ++#endif /* HAVE_LIBZ */ + if (ext) { + ++ext; + +@@ -313,7 +380,7 @@ void decompress_inprocess_replace (decom + + void decompress_start (decompress *d) + { +- if (d->tag == DECOMPRESS_PIPELINE) ++ if (d && d->tag == DECOMPRESS_PIPELINE) + pipeline_start (d->u.p); + } + diff --git a/man-db-2.9.4-no-chown.patch b/man-db-2.9.4-no-chown.patch new file mode 100644 index 0000000..18e0263 --- /dev/null +++ b/man-db-2.9.4-no-chown.patch @@ -0,0 +1,26 @@ +Index: man-db-2.10.2/src/Makefile.am +=================================================================== +--- + man-db-2.11.2/src/Makefile.am | 11 +---------- + 1 file changed, 1 insertion(+), 10 deletions(-) + +--- man-db-2.11.2/src/Makefile.am ++++ man-db-2.11.2/src/Makefile.am 2023-08-15 09:13:30.418162015 +0000 +@@ -196,16 +196,7 @@ apropos$(EXEEXT): whatis$(EXEEXT) + all-am: apropos$(EXEEXT) + + install-exec-hook: +- if [ "$(man_owner)" ] && [ "$(man_mode)" = 6755 ]; then \ +- chown $(man_owner):$(man_owner) \ +- $(DESTDIR)$(bindir)/$(TRANS_MAN)$(EXEEXT) \ +- $(DESTDIR)$(bindir)/$(TRANS_MANDB)$(EXEEXT); \ +- fi +- chmod $(man_mode) \ +- $(DESTDIR)$(bindir)/$(TRANS_MAN)$(EXEEXT) \ +- $(DESTDIR)$(bindir)/$(TRANS_MANDB)$(EXEEXT) +- cd $(DESTDIR)$(bindir) && rm -f $(TRANS_APROPOS)$(EXEEXT) && \ +- $(LN_S) $(TRANS_WHATIS)$(EXEEXT) $(TRANS_APROPOS)$(EXEEXT) ++ $(LN_S) $(TRANS_WHATIS) $(DESTDIR)$(bindir)/$(TRANS_APROPOS) + + install-data-hook: + @if test -f $(DESTDIR)$(config_file); then \ diff --git a/man-db-2.9.4.patch b/man-db-2.9.4.patch new file mode 100644 index 0000000..7f1f6ce --- /dev/null +++ b/man-db-2.9.4.patch @@ -0,0 +1,743 @@ +--- + configure.ac | 18 ++++++++++- + lib/security.c | 30 +++++++++++++++++++ + mk_catdirs | 30 +++++++++++++++++++ + src/check_mandirs.c | 33 +++++++++++++-------- + src/lexgrog.l | 64 ++++++++++++++++++++++++++++++----------- + src/man.c | 81 ++++++++++++++++++++++++++++++++++++++++++++++------ + src/man_db.conf.in | 17 ++++++++-- + src/mandb.c | 30 +++++++++++++------ + src/manp.c | 2 - + src/straycats.c | 1 + src/ult_src.c | 9 ++++- + 11 files changed, 261 insertions(+), 54 deletions(-) + +diff --git a/configure.ac b/configure.ac +--- a/configure.ac ++++ b/configure.ac +@@ -275,6 +275,14 @@ fi + + MAN_CHECK_PROGS([eqn], [EQN], [use EQN to preprocess equations], [eqn geqn]) + AC_DEFINE_UNQUOTED([PROG_EQN], ["$eqn"], [Program to use as eqn.]) ++MAN_CHECK_PROGS([geqn], [GEQN], [use GEQN to preprocess equations], [geqn]) ++dnl ++dnl if geqn is found and geqn is identical with eqn we use a GNU eqn ++dnl which its self can use -Tlatin1 ++dnl ++if test -n "$geqn" -a -n "$eqn" ; then ++ test $geqn -ef $eqn && neqn="$eqn -T$nroff_device" ++fi + MAN_CHECK_PROGS([neqn], [NEQN], [use NEQN to preprocess equations for character devices], [neqn gneqn]) + # If we fail to find an neqn, use eqn and try to force it to output for an + # ascii device. As this is only relevant for equations (?), not using latin1 +@@ -325,9 +333,15 @@ then + compress_ext="gz" + fi + MAN_CHECK_PROGS([compress], [COMPRESS], [use COMPRESS as UNIX compression utility], [compress]) +-if test -n "$compress" ++if test -n "$compress" || test -n "$gzip" + then +- uncompress="$compress -dc" ++ if test -n "$gzip" ++ then ++ uncompress="$gzip -dc" ++ elif test -n "$compress" ++ then ++ uncompress="$compress -dc" ++ fi + if test -z "$gzip" + then + compressor="$compress -c" +diff --git a/lib/security.c b/lib/security.c +--- a/lib/security.c ++++ b/lib/security.c +@@ -80,6 +80,11 @@ static void gripe_set_euid (void) + fatal (errno, _ ("can't set effective uid")); + } + ++static inline void gripe_set_egid (void) ++{ ++ fatal (errno, _ ("can't set effective gid")); ++} ++ + #endif /* MAN_OWNER */ + + void init_security (void) +@@ -165,6 +170,31 @@ void regain_effective_privs (void) + uid = euid; + gid = egid; + } ++ if (gid != rgid) { ++# if defined(HAVE_SETRESGID) ++ if (setresgid (rgid, egid, -1) < 0) ++# elif defined(HAVE_SETREGID) ++ if (setregid (rgid, egid) < 0) ++# elif defined(HAVE_SETEGID) ++ if (setegid (rgid) < 0) ++# endif ++ gripe_set_egid(); ++ ++ gid = rgid; ++ } ++ ++ if (gid != egid) { ++# if defined(HAVE_SETRESGID) ++ if (setresgid (egid, rgid, -1)) ++# elif defined(HAVE_SETREGID) ++ if (setregid (egid, rgid) < 0) ++# elif defined(HAVE_SETEGID) ++ if (setegid (egid)) ++# endif ++ gripe_set_egid(); ++ ++ gid = egid; ++ } + #endif /* MAN_OWNER */ + } + +diff --git a/mk_catdirs b/mk_catdirs +--- a/mk_catdirs ++++ b/mk_catdirs +@@ -0,0 +1,30 @@ ++#!/bin/sh ++ ++OLDPWD="`pwd`" ++CACHE="$1/var/cache/man" ++ ++ cats="cat{0,1,2,3,4,5,6,7,8,9,n}" ++locale="{ca,cs,da,de,en,es,et,fi,fr,ga,hu,is,it,ja,ko,nl,no,pl,pt,ru,sk,sr,sv,uk}" ++ dirs="{local,opt}" ++ ++umask 022 ++test -d ${CACHE} && rm -rf ${CACHE} ++mkdir -p ${CACHE} ++ ++catman=false ++grep -qE '#[[:blank:]]*define[[:blank:]]+MAN_CATS' include/manconfig.h && catman=true ++cd ${CACHE} ++if $catman ; then ++ eval echo ${cats} \ ++ ${locale}/${cats} \ ++ ${dirs}/${cats} \ ++ ${dirs}/${locale}/${cats} ++else ++ eval echo ${locale} \ ++ ${dirs} \ ++ ${dirs}/${locale} ++fi | xargs mkdir -p ++sync ++cd ${OLDPWD} ++ ++test "$(id -u)" -ne 0 || chown man:man -R ${CACHE} +diff --git a/src/check_mandirs.c b/src/check_mandirs.c +--- a/src/check_mandirs.c ++++ b/src/check_mandirs.c +@@ -383,7 +383,7 @@ void chown_if_possible (const char *path + #endif /* MAN_OWNER */ + + /* create the catman hierarchy if it doesn't exist */ +-static void mkcatdirs (const char *mandir, const char *catdir) ++void mkcatdirs (const char *mandir, const char *catdir) + { + if (catdir) { + char *manname, *catname; +@@ -412,9 +412,14 @@ static void mkcatdirs (const char *mandi + int j; + regain_effective_privs (); + debug ("creating catdir hierarchy %s ", catdir); +- for (j = 1; j <= 9; j++) { +- catname[strlen (catname) - 1] = '0' + j; +- manname[strlen (manname) - 1] = '0' + j; ++ for (j = 0; j <= 10; j++) { ++ char c; ++ if (j < 10) ++ c = '0' + j; ++ else ++ c = 'n'; ++ catname[strlen (catname) - 1] = c; ++ manname[strlen (manname) - 1] = c; + if ((is_directory (manname) == 1) && + (is_directory (catname) != 1)) { + if (mkdir (catname, 0755) < 0) { +@@ -429,7 +434,7 @@ static void mkcatdirs (const char *mandi + "create catdir %s\n", + catname); + } else +- debug (" cat%d", j); ++ debug (" cat%c", c); + chown_if_possible (catname); + } + } +@@ -573,16 +578,11 @@ static int testmandirs (MYDBM_FILE dbf, + } + + if (!quiet) { +- int tty = isatty (STDERR_FILENO); +- +- if (tty) +- fprintf (stderr, "\r"); + fprintf (stderr, + _ ("Updating index cache for path " + "`%s/%s'. Wait..."), + path, mandir->d_name); +- if (!tty) +- fprintf (stderr, "\n"); ++ fprintf (stderr, "\n"); + } + add_dir_entries (dbf, path, mandir->d_name); + amount++; +@@ -652,7 +652,7 @@ int update_db (MYDBM_FILE dbf, const cha + int new; + + if (!ensure_db_open (dbf) || !sanity_check_db (dbf)) { +- debug ("failed to open %s O_RDONLY\n", dbf->name); ++ debug ("failed to open database %s O_RDONLY\n", dbf->name); + return -1; + } + mtime = MYDBM_GET_TIME (dbf); +@@ -865,6 +865,7 @@ static int purge_whatis (MYDBM_FILE dbf, + name, info->ext); + return 1; + } ++ return 1; + } + + /* Check that multi keys are correctly constructed. */ +@@ -964,6 +965,14 @@ int purge_missing (MYDBM_FILE dbf, const + } + #pragma GCC diagnostic pop + ++ /* Ignore db identifier keys. */ ++ if (*MYDBM_DPTR (key) == '.' && *(key.dptr+1) == 0) { ++ nextkey = MYDBM_NEXTKEY (dbf, key); ++ MYDBM_FREE_DPTR (key); ++ key = nextkey; ++ continue; ++ } ++ + content = MYDBM_FETCH (dbf, key); + if (!MYDBM_DPTR (content)) { + nextkey = MYDBM_NEXTKEY (dbf, key); +diff --git a/src/lexgrog.l b/src/lexgrog.l +--- a/src/lexgrog.l ++++ b/src/lexgrog.l +@@ -70,7 +70,7 @@ + #include "manconv.h" + #include "manconv_client.h" + +-#define YY_READ_BUF_SIZE 1024 ++#define YY_READ_BUF_SIZE YY_BUF_SIZE + #define MAX_NAME 8192 + + /* defines the ordered list of filters detected by lexgrog */ +@@ -227,15 +227,15 @@ static const struct macro perldocs[] = { + { "R\"", "\"" } + }; + +-static void add_str_to_whatis (const char *string, size_t length); +-static void add_char_to_whatis (unsigned char c); +-static void add_separator_to_whatis (void); +-static void add_wordn_to_whatis (const char *string, size_t length); +-static void add_word_to_whatis (const char *string); +-static void add_glyph_to_whatis (const char *string, size_t length); +-static void add_perldoc_to_whatis (const char *string, size_t length); +-static void mdoc_text (const char *string); +-static void newline_found (void); ++static __inline__ void add_str_to_whatis (const char *string, size_t length); ++static __inline__ void add_char_to_whatis (unsigned char c); ++static __inline__ void add_separator_to_whatis (void); ++static __inline__ void add_wordn_to_whatis (const char *string, size_t length); ++static __inline__ void add_word_to_whatis (const char *string); ++static __inline__ void add_glyph_to_whatis (const char *string, size_t length); ++static __inline__ void add_perldoc_to_whatis (const char *string, size_t length); ++static __inline__ void mdoc_text (const char *string); ++static __inline__ void newline_found (void); + + static char newname[MAX_NAME]; + static char *p_name; +@@ -244,6 +244,7 @@ static char filters[MAX_FILTERS]; + + static bool fill_mode; + static bool waiting_for_quote; ++static int have_separator; + + static decompress *decomp; + +@@ -261,7 +262,7 @@ static decompress *decomp; + %} + + %option ecs meta-ecs +-%option 8bit batch caseful never-interactive ++%option 8bit batch caseful never-interactive align + %option nostdinit + %option warn + %option noyywrap nounput +@@ -300,8 +301,9 @@ font_change \\f([[:upper:]1-4]|\({upper} + size_change \\s[+-]?{digit} + style_change ({font_change}{size_change}?|{size_change}{font_change}?) + typeface \.(B[IR]?|I[BR]?|R[BI]|S[BM]) ++paragr \.[PITLH][Pp] + sec_request \.[Ss][HhYySs] +-comment ['.]\\{dbl_quote} ++comment (['.]\\{dbl_quote}|\'\-+|\\&) + + /* Please add to this list if you know how. */ + /* Note that, since flex only supports UTF-8 by accident, character classes +@@ -343,7 +345,26 @@ vi_name T(Ê|ê)[Nn] + zh_CN_name 名{blank}?(称|字){blank}?.* + zh_TW_name (名{blank}?(稱|字)|命令名){blank}?.* + name ({ar_name}|{bg_name}|{cs_name}|{da_name}|{de_name}|{en_name}|{eo_name}|{es_name}|{fa_name}|{fi_name}|{fr_name}|{hu_name}|{id_name}|{it_name}|{ja_name}|{ko_name}|{latin_name}|{lt_name}|{nl_name}|{pl_name}|{ro_name}|{ru_name}|{sk_name}|{sr_name}|{srlatin_name}|{sv_name}|{ta_name}|{tr_name}|{uk_name}|{vi_name}|{zh_CN_name}|{zh_TW_name}) +-name_sec {dbl_quote}?{style_change}?{name}{style_change}?({blank}*{dbl_quote})? ++name_sec {dbl_quote}?{style_change}?{name}{style_change}?({blank}*{dbl_quote})?\r? ++start {sec_request}{blank_eol}+{name_sec} ++ ++N N(\bN)? ++n (N(\bN)?|n(\bn)?) ++a (A(\bA)?|a(\ba)?) ++o (O(\bO)?|o(\bo)?) ++m (M(\bM)?|M(\bM)?) ++e (E(\bE)?|e(\be)?) ++B B(\bB) ++b (B(\bB)?|b(\bb)?) ++r (R(\bR)?|r(\br)?) ++z (Z(\bZ)?|z(\bz)?) ++i (I(\bI)?|i(\bi)?) ++c (C(\bC)?|c(\bc)?) ++h (H(\bH)?|h(\bh)?) ++u (U(\bU)?|u(\bu)?) ++g (G(\bG)?|g(\bg)?) ++ ++cname (({N}({a}|{o}){m}({n}|{e})|{N}{o}{m}|{N}{o}{m}{b}{r}{e}|{B}{e}{z}{e}{i}{c}{h}{n}{u}{n}{g})|{bg_name}|{cs_name}|{hu_name}|{ko_name}|{ru_name}|{sr_name}|{tr_name}|{vi_name}|{ja_name}|{zh_CN_name}|{zh_TW_name}) + + /* eptgrv : eqn, pic, tbl, grap, refer, vgrind */ + tbl_request \.TS +@@ -357,8 +378,13 @@ vgrind_request \.vS + %% + + /* begin NAME section processing */ +-{sec_request}{blank_eol}+{name_sec}{blank}* BEGIN (MAN_PRENAME); +-{empty}{2,}{name}{blank}*{indent} BEGIN (CAT_NAME); ++{ ++ {start}{blank}*{bol}{blank}*{paragr} | /* strange format */ ++ {start}{blank}* { /* default */ ++ BEGIN (MAN_PRENAME); ++ } ++} ++{empty}{2,}{cname}{blank}*{indent} BEGIN (CAT_NAME); + + /* general text matching */ + { +@@ -433,6 +459,7 @@ vgrind_request \.vS + {bol}\.sp{blank}* | /* vertical spacing */ + {bol}\.ig{blank}* | /* block comment */ + {bol}\.de[1i]?{blank}* | /* macro definition */ ++ {bol}\.V[be]{blank}* | /* special in perl pages */ + {bol}\.i[ef]{blank}* | /* conditional */ + {empty}{bol}.+ | + <> { /* terminate the string */ +@@ -480,8 +507,8 @@ vgrind_request \.vS + + /* Toggle fill mode */ + { +- {bol}\.nf.* fill_mode = false; +- {bol}\.fi.* fill_mode = true; ++ {bol}\.(nf|de).* fill_mode = false; ++ {bol}\.(fi|\.).* fill_mode = true; + } + + -{eol}{blank_eol}* /* strip continuations */ +@@ -490,6 +517,9 @@ vgrind_request \.vS + { + {next}{blank}*\\\((mi|hy|em|en){blank}* | + {next}{blank}*\\\[(mi|hy|em|en)\]{blank}* | ++ {bol}\.sp{bol}{blank}+\\-{blank}* | /* strange spacing in NAME section */ ++ {blank}+[-\\]?-{bol} | /* dash at end of line */ ++ {next}{blank_eol}+(\\?-){2}{blank}+ | /* some man pages use -- as dash */ + {next}{blank_eol}+[-\\]-{blank}* | + {next}{blank_eol}*[-\\]-{blank}+ | + {bol}\.Nd{blank}* { +diff --git a/src/man.c b/src/man.c +--- a/src/man.c ++++ b/src/man.c +@@ -56,6 +56,8 @@ + #include + #include + #include ++#include ++#include + + #include "argp.h" + #include "attribute.h" +@@ -118,6 +120,8 @@ + #ifdef MAN_OWNER + extern uid_t ruid; + extern uid_t euid; ++extern gid_t rgid; ++extern gid_t egid; + #endif /* MAN_OWNER */ + + /* the default preprocessor sequence */ +@@ -238,10 +242,10 @@ static int first_arg; + #ifdef MAN_CATS + static char *tmp_cat_file; /* for open_cat_stream(), close_cat_stream() */ + static bool created_tmp_cat; /* dto. */ +-#endif + static int tmp_cat_fd; + static struct timespec man_modtime; /* modtime of man page, for + * commit_tmp_cat() */ ++#endif + + #ifdef TROFF_IS_GROFF + static bool ditroff; +@@ -1569,6 +1573,18 @@ static void setenv_less (pipecmd *cmd, c + free (less_opts); + } + ++static void disable_x(void) ++{ ++ char *bname = basename((char*)pager); ++ if (bname) { ++ if (!strcmp(bname, "less")) ++ unsetenv("DISPLAY"); ++#if 0 ++ free(bname); ++#endif ++ } ++} ++ + static void add_output_iconv (pipeline *p, const char *source, + const char *target) + { +@@ -1697,6 +1713,8 @@ static pipeline *make_display_command (c + + if (pager_cmd) { + setenv_less (pager_cmd, title); ++ if (!htmlout) ++ disable_x(); + pipeline_command (p, pager_cmd); + } + pipeline_ignore_signals (p, 1); +@@ -1707,6 +1725,7 @@ static pipeline *make_display_command (c + return p; + } + ++#ifdef MAN_CATS + /* return a (malloced) temporary name in cat_file's directory */ + static char *tmp_cat_filename (const char *cat_file) + { +@@ -1808,6 +1827,7 @@ static int commit_tmp_cat (const char *c + + return status; + } ++#endif /* MAN_CATS */ + + /* TODO: This should all be refactored after work on the decompression + * library is complete. +@@ -1844,7 +1864,6 @@ static void cleanup_unlink (void *arg) + } + + #ifdef MAN_CATS +- + /* Return pipeline to write formatted manual page to for saving as cat file. */ + static pipeline *open_cat_stream (const char *cat_file, const char *encoding) + { +@@ -2072,6 +2091,7 @@ static void format_display (decompress * + regain_effective_privs (); + } + ++#ifdef MAN_CATS + /* "Display" a page in catman mode, which amounts to saving it. */ + /* TODO: merge with format_display_and_save? */ + static void display_catman (const char *cat_file, decompress *d, +@@ -2117,6 +2137,7 @@ static void display_catman (const char * + pop_cleanup (cleanup_unlink, tmpcat); + free (tmpcat); + } ++#endif /* MAN_CATS */ + + #ifndef TROFF_IS_GROFF + static void disable_hyphenation (void *data MAYBE_UNUSED) +@@ -2327,7 +2348,7 @@ static int display (const char *dir, con + format_cmd = NULL; + decomp_errno = errno; + } +- ++#ifdef MAN_CATS + /* Get modification time, for commit_tmp_cat(). */ + if (man_file && *man_file) { + struct stat stb; +@@ -2337,7 +2358,7 @@ static int display (const char *dir, con + } else + man_modtime = get_stat_mtime (&stb); + } +- ++#endif /* MAN_CATS */ + display_to_stdout = troff; + #ifdef TROFF_IS_GROFF + if (htmlout || gxditview) +@@ -2474,6 +2495,7 @@ static int display (const char *dir, con + } + if (printed) + putchar ('\n'); ++#ifdef MAN_CATS + } else if (catman) { + if (format) { + if (!save_cat) +@@ -2486,6 +2508,7 @@ static int display (const char *dir, con + format_cmd, + formatted_encoding); + } ++#endif /* MAN_CATS */ + } else if (format) { + /* no cat or out of date */ + pipeline *disp_cmd; +@@ -4028,17 +4051,20 @@ static int local_man_loop (const char *a + /* Check that the file exists and isn't e.g. a directory */ + if (stat (argv, &st)) { + error (0, errno, "%s", argv); ++ regain_effective_privs (); + return NOT_FOUND; + } + + if (S_ISDIR (st.st_mode)) { + error (0, EISDIR, "%s", argv); ++ regain_effective_privs (); + return NOT_FOUND; + } + + if (S_ISCHR (st.st_mode) || S_ISBLK (st.st_mode)) { + /* EINVAL is about the best I can do. */ + error (0, EINVAL, "%s", argv); ++ regain_effective_privs (); + return NOT_FOUND; + } + +@@ -4102,6 +4128,11 @@ executable_out: + argv_abs = xstrdup (argv); + } + lang = lang_dir (argv_abs); ++ if (!lang || !*lang) { ++ if (lang) ++ free(lang); ++ lang = xstrdup(internal_locale); ++ } + free (argv_abs); + if (!display (NULL, argv, NULL, argv_base, NULL)) { + if (local_mf) +@@ -4158,9 +4189,25 @@ static void locate_page_in_manpath (cons + { + char *mp; + +- GL_LIST_FOREACH (manpathlist, mp) +- *found += +- locate_page (mp, page_section, page_name, candidates); ++ GL_LIST_FOREACH (manpathlist, mp) { ++ int count = locate_page (mp, page_section, page_name, candidates); ++ if (count == 0) { ++ /* Checking if there has been defined another manpage defined in the ++ * priorities of libalternatives. ++ */ ++ char **alternitives = libalts_get_default_manpages(page_name); ++ for (char **alter = alternitives; *alter; alter++) { ++ char *p_name, *p_section; ++ split_page_name (*alter, &p_name, &p_section); ++ if (p_name && strlen(p_name) > 0 && ++ p_section && strlen(p_section) > 0) ++ count = locate_page (mp, p_section, p_name, candidates); ++ free(*alter); ++ } ++ free(alternitives); ++ } ++ *found += count; ++ } + } + + /* +@@ -4354,7 +4401,16 @@ int main (int argc, char *argv[]) + umask (022); + init_locale (); + +- internal_locale = setlocale (LC_MESSAGES, NULL); ++ internal_locale = setlocale (LC_MESSAGES, ""); ++#if defined(__GLIBC__) ++# if (__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 2) ++ if (!internal_locale) { ++ if ( !(internal_locale = getenv ("LC_ALL")) ++ && !(internal_locale = getenv ("LC_MESSAGES"))) ++ internal_locale = getenv ("LANG"); ++ } ++# endif ++#endif + /* Use LANGUAGE only when LC_MESSAGES locale category is + * neither "C" nor "POSIX". */ + if (internal_locale && strcmp (internal_locale, "C") && +@@ -4399,7 +4455,16 @@ int main (int argc, char *argv[]) + if (external) + do_extern (argc, argv); + ++#ifdef MAN_OWNER ++ if (isatty(fileno(stdin)) && isatty(fileno(stdout))) { ++ tcgetattr(fileno(stdin), &tms); ++ tms_pid = getpid (); ++ if (!tms_set++) ++ atexit(set_term); ++ } ++#else + get_term (); /* stores terminal settings */ ++#endif + + /* close this locale and reinitialise if a new locale was + issued as an argument or in $MANOPT */ +diff --git a/src/man_db.conf.in b/src/man_db.conf.in +--- a/src/man_db.conf.in ++++ b/src/man_db.conf.in +@@ -20,6 +20,14 @@ + MANDATORY_MANPATH /usr/man + MANDATORY_MANPATH /usr/share/man + MANDATORY_MANPATH /usr/local/share/man ++MANDATORY_MANPATH /opt/man ++MANDATORY_MANPATH /opt/dx/man ++MANDATORY_MANPATH /opt/lsb/man ++MANDATORY_MANPATH /opt/cross/share/man ++MANDATORY_MANPATH /opt/mpich/man ++MANDATORY_MANPATH /opt/lsb-tet3-lite/share/man ++MANDATORY_MANPATH /opt/snavigator/man ++MANDATORY_MANPATH /opt/novell/man + #--------------------------------------------------------- + # set up PATH to MANPATH mapping + # ie. what man tree holds man pages for what binary directory. +@@ -34,8 +42,10 @@ MANPATH_MAP /usr/local/bin /usr/local/m + MANPATH_MAP /usr/local/bin /usr/local/share/man + MANPATH_MAP /usr/local/sbin /usr/local/man + MANPATH_MAP /usr/local/sbin /usr/local/share/man +-MANPATH_MAP /usr/X11R6/bin /usr/X11R6/man +-MANPATH_MAP /usr/bin/X11 /usr/X11R6/man ++MANPATH_MAP /usr/X11R6/bin /usr/share/man ++MANPATH_MAP /usr/X11/bin /usr/share/man ++MANPATH_MAP /usr/bin/X11 /usr/share/man ++MANPATH_MAP /usr/bin/mh /usr/share/man + MANPATH_MAP /usr/games /usr/share/man + MANPATH_MAP /opt/bin /opt/man + MANPATH_MAP /opt/sbin /opt/man +@@ -68,7 +78,8 @@ MANDB_MAP /usr/share/man /var/cache/man + MANDB_MAP /usr/local/man /var/cache/man/oldlocal + MANDB_MAP /usr/local/share/man /var/cache/man/local + MANDB_MAP /usr/X11R6/man /var/cache/man/X11R6 +-MANDB_MAP /opt/man /var/cache/man/opt ++MANDB_MAP /opt/man /var/cache/man/oldopt ++MANDB_MAP /opt/share/man /var/cache/man/opt + MANDB_MAP @snapdir@/man /var/cache/man/snap + # + #--------------------------------------------------------- +diff --git a/src/mandb.c b/src/mandb.c +--- a/src/mandb.c ++++ b/src/mandb.c +@@ -205,6 +205,8 @@ struct dbpaths { + #ifdef MAN_OWNER + extern uid_t ruid; + extern uid_t euid; ++extern gid_t rgid; ++extern gid_t egid; + #endif /* MAN_OWNER */ + + static gl_list_t manpathlist; +@@ -627,6 +629,8 @@ static int mandb (struct dbpaths *dbpath + return amount; + } + ++extern void mkcatdirs (const char *, const char *); ++ + static int process_manpath (const char *manpath, bool global_manpath, + gl_map_t tried_catdirs) + { +@@ -668,6 +672,8 @@ static int process_manpath (const char * + } else + run_mandb = true; + ++ mkcatdirs (manpath, catpath); ++ + dbpaths = XZALLOC (struct dbpaths); + push_cleanup ((cleanup_fun) dbpaths_free_elements, dbpaths, 0); + push_cleanup ((cleanup_fun) dbpaths_unlink_tmp, dbpaths, 1); +@@ -686,7 +692,7 @@ static int process_manpath (const char * + if (!opt_test && (amount || new_purged || new_strays)) { + dbpaths_rename_from_tmp (dbpaths); + #ifdef MAN_OWNER +- if (global_manpath) ++ if (global_manpath && (euid == 0 || ruid == 0)) + dbpaths_chown_if_possible (dbpaths); + #endif /* MAN_OWNER */ + reorganize (catpath, global_manpath); +@@ -889,14 +895,20 @@ int main (int argc, char *argv[]) + + #ifdef MAN_OWNER + man_owner = get_man_owner (); +- if (!user && euid != 0 && euid != man_owner->pw_uid) { +- user = true; +- if (!quiet) +- fprintf (stderr, +- _ ("Only the '%s' user can create or update " +- "system-wide databases; acting as if the " +- "--user-db option was used.\n"), +- man_owner->pw_name); ++ if (!user) { ++ if (!ruid && euid != man_owner->pw_uid) { ++ seteuid(man_owner->pw_uid); ++ euid = geteuid(); ++ } ++ if (euid != man_owner->pw_uid) { ++ user = true; ++ if (!quiet) ++ fprintf (stderr, ++ _ ("Only the '%s' user can create or update " ++ "system-wide databases; acting as if the " ++ "--user-db option was used.\n"), ++ man_owner->pw_name); ++ } + } + #endif /* MAN_OWNER */ + +diff --git a/src/manp.c b/src/manp.c +--- a/src/manp.c ++++ b/src/manp.c +@@ -903,7 +903,7 @@ static char *def_path (enum config_flag + + /* If we have complete config file failure... */ + if (!manpath) +- return xstrdup ("/usr/man"); ++ return xstrdup ("/usr/share/man"); + + return manpath; + } +diff --git a/src/straycats.c b/src/straycats.c +--- a/src/straycats.c ++++ b/src/straycats.c +@@ -39,6 +39,7 @@ + #include + #include + #include ++#include + + #include "canonicalize.h" + #include "dirname.h" +diff --git a/src/ult_src.c b/src/ult_src.c +--- a/src/ult_src.c ++++ b/src/ult_src.c +@@ -160,10 +160,15 @@ static char *find_include_directive (cha + } + decompress_start (decomp); + +- /* make sure that we skip over any comments */ ++ /* ++ * make sure that we skip over any comments ++ * ... even if we handle TCL/TK manual pages ++ */ + do { + buffer = decompress_readline (decomp); +- } while (buffer && STRNEQ (buffer, ".\\\"", 3)); ++ } while (buffer && *buffer && ++ (STRNEQ (buffer, ".\\\"", 3) || ++ STRNEQ (buffer, "'\\\"", 3))); + + directive = xstrdup (buffer ? buffer : ""); + diff --git a/man-db-create.service b/man-db-create.service new file mode 100644 index 0000000..d6bc7df --- /dev/null +++ b/man-db-create.service @@ -0,0 +1,30 @@ +[Unit] +Description=Initialize /var/cache/man +DefaultDependencies=no +Wants=local-fs.target +After=local-fs.target +After=systemd-tmpfiles-setup.service +ConditionPathExists=/var/cache/man +ConditionPathExists=!/var/cache/man/index.db + +[Service] +# added automatically, for details please see +# https://en.opensuse.org/openSUSE:Security_Features#Systemd_hardening_effort +ProtectSystem=full +ProtectHome=true +PrivateDevices=true +ProtectHostname=true +ProtectClock=true +ProtectKernelTunables=true +ProtectKernelModules=true +ProtectKernelLogs=true +ProtectControlGroups=true +RestrictRealtime=true +# end of automatic additions +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/mandb --quiet --create + +[Install] +WantedBy=multi-user.target + diff --git a/man-propose-online.patch b/man-propose-online.patch new file mode 100644 index 0000000..b61a090 --- /dev/null +++ b/man-propose-online.patch @@ -0,0 +1,37 @@ +--- + man-db-2.13.0/src/man.c | 9 +++++++-- + man-db-2.13.0/src/tests/man-invalid-db-entry | 2 ++ + 2 files changed, 9 insertions(+), 2 deletions(-) + +--- man-db-2.13.0/src/man.c ++++ man-db-2.13.0/src/man.c 2024-10-18 12:56:52.431247186 +0000 +@@ -769,11 +769,16 @@ static void gripe_no_man (const char *na + } + #endif + +- if (sec) ++ if (sec) { + fprintf (stderr, _ ("No manual entry for %s in section %s\n"), + name, sec); +- else ++ fprintf (stderr, _("Possibly, man page is not installed, try online at: ")); ++ fprintf (stderr, _("https://manpages.opensuse.org/%s.%s\n"), name, sec); ++ } else { + fprintf (stderr, _ ("No manual entry for %s\n"), name); ++ fprintf (stderr, _("Possibly, man page is not installed, try online at: ")); ++ fprintf (stderr, _("https://manpages.opensuse.org/%s\n"), name); ++ } + + #ifdef UNDOC_COMMAND + if (getenv ("MAN_TEST_DISABLE_UNDOCUMENTED") == NULL && +--- man-db-2.13.0/src/tests/man-invalid-db-entry ++++ man-db-2.13.0/src/tests/man-invalid-db-entry 2024-10-18 12:53:16.443176267 +0000 +@@ -25,6 +25,8 @@ run $MANDB -C "$tmpdir/manpath.config" - + rm -f "$tmpdir/usr/share/man/man1/test.1" + + echo "No manual entry for test" > "$tmpdir/1.exp" ++echo "Possibly, man page is not installed, try online at: https://manpages.opensuse.org/test" >> "$tmpdir/1.exp" ++ + LC_ALL=C run $MAN -C "$tmpdir/manpath.config" test 2> "$tmpdir/1.out" + expect_files_equal 'invalid DB entry' "$tmpdir/1.exp" "$tmpdir/1.out" + diff --git a/man-rpmlintrc b/man-rpmlintrc new file mode 100644 index 0000000..9d95a4f --- /dev/null +++ b/man-rpmlintrc @@ -0,0 +1,4 @@ +# We use %posttrans +addFilter(".*W:.*post-without-tmpfile-creation.*/usr/lib/tmpfiles\.d/man-db\.conf.*") +addFilter(".*W:.*name-repeated-in-summary.*man.*") +addFilter(".*E:.*missing-call-to-setgroups-before-setuid.*/usr/lib64/libman-.*\.so.*") diff --git a/man.changes b/man.changes new file mode 100644 index 0000000..aa9972b --- /dev/null +++ b/man.changes @@ -0,0 +1,2029 @@ +------------------------------------------------------------------- +Fri Nov 8 13:58:23 UTC 2024 - Fabian Vogt + +- Drop libzio integration (man-db-2.7.1-zio.dif, BuildRequires and flag) + to restore acceptable performance (boo#1232837): + +------------------------------------------------------------------- +Fri Oct 18 13:04:09 UTC 2024 - Dr. Werner Fink + +- Update to man-db 2.13.0 (29 August 2024) + * Drop support for versions of groff before 1.21 (released on 2010-12-31). + * Fix `man-suffixed-extension` test failure when not using the GNU + hierarchy organization. + * Fix `-Wmissing-variable-declarations` warnings with GCC 14. + * Fix `-Wflex-array-member-not-at-end` warning with GCC 14. + * Upgrade to Gnulib `stable-202407`. + * Support running the test suite against an installed package; this is + useful for systems such as Debian's autopkgtest framework. +- Remove patch man-db-2.6.3-chinese.dif as not supported anymore + due to newer groff versions +- Port patches + * man-db-2.6.3-listall.dif + * man-db-2.7.1-zio.dif + * man-db-2.9.4.patch + * man-propose-online.patch + +------------------------------------------------------------------- +Tue Jun 4 08:10:47 UTC 2024 - Dr. Werner Fink + +- Update to 2.12.1 (5 April 2024) + * Fix excessive cleanup of `/var/cache/man` by `systemd-tmpfiles`. + * `man` matches the display width more accurately to the configured width. + * Upgrade to Gnulib `stable-202401`. + * Mention `groff`'s `pdf` device in `man(1)`. + * Speed up `seccomp` filter slightly. + * Document how to format pages using italic rather than underlined text. + * Remove the obsolete `chconfig` tool for converting man-db configuration + files to the FHS. This transition took place almost 25 years ago (at + least in Debian), so it's not worth keeping it around now. +- Remove patch man-db-2.9.4-alternitive.dif now upstream +- Port the patches + * man-db-2.6.3-listall.dif + * man-db-2.7.1-zio.dif + * man-db-2.9.4.patch + * man-propose-online.patch + +------------------------------------------------------------------- +Mon Feb 19 07:21:59 UTC 2024 - Dr. Werner Fink + +- We don't need anymore systemd-tmpfiles (boo#1219370#c13) + +------------------------------------------------------------------- +Mon Feb 12 09:32:21 UTC 2024 - Dr. Werner Fink + +- Move creation of /var/cache/man into %pre scriplet (boo#1219370) + +------------------------------------------------------------------- +Thu Feb 8 10:48:51 UTC 2024 - Dr. Werner Fink + +- Make lua scriplets more failsafe (boo#1219370) + +------------------------------------------------------------------- +Fri Jan 26 09:26:57 UTC 2024 - Dr. Werner Fink + +- Skip posttrans dependency on systemd to support container without + systemd (boo#1215538) +- Use %(trans)filetriggerin and %(trans)filetriggerpostun to get + an uptodate man database for installed manual pages + +------------------------------------------------------------------- +Sun Oct 1 12:19:14 UTC 2023 - Antonio Teixeira + +- Update to 2.12.0: + * Fix some manual page portability issues with groff 1.23.0. + * Fix test failures when a working `iconv` is not available. + * Ensure that timestamps read from the database can go past the year 2038, + even on systems where this is not the default. + * Fix `manpath` not parsing `PATH` entries with trailing slash correctly + for guessing `MANPATH` entries. + * More accurately document the behaviour of passing file names as arguments + to `man` without the `-l`/`--local-file` option. + * Avoid duplicate cleanup of old cat pages by both `man-db.service` and + `systemd-tmpfiles-clean.service`. + Improvements: + * Update system call lists in `seccomp` sandbox from `systemd`. + * Upgrade to Gnulib `stable-202307`. + * Work around the Firebuild accelerator in `seccomp` sandbox: if this is in + use then we need to allow some socket-related system calls. + * `man -K` now deduplicates search results that point to the same page. + * Warn if `mandb` drops to `--user-db` mode due to running as the wrong + user. + * Change section title recommendations in `man(1)` to mention `STANDARDS` + rather than `CONFORMING TO`, in line with `man-pages(7)`. + * Add a `STANDARDS` section to `man(1)` itself. + * Document that `man -K` may suffer from false negatives as well as false + positives. + * Take advantage of newer `groff` facilities to implement `man + --no-hyphenation` and `man --no-justification`, if available. + * `man -f` and `man -k` now pass any `-r`/`--regex` or `-w`/`--wildcard` + options on to `whatis` and `apropos` respectively. + * Always pass a line length to `nroff`, even if we believe that it matches + the default. + * Allow disabling `groff` warnings via `man --warnings`, by prefixing a + warning name with `!`. +- Drop man-db-groff-1.23.0-warnings.patch +- Refresh man-db-2.9.4.patch + +------------------------------------------------------------------- +Fri Sep 8 19:48:53 UTC 2023 - Antonio Teixeira + +- Add man-db-groff-1.23.0-warnings.patch + * Fix build errors with groff 1.23.0 + +------------------------------------------------------------------- +Sat Aug 26 12:20:42 UTC 2023 - Avinesh Kumar + +- Fix the content in patch file man-propose-online.patch + +------------------------------------------------------------------- +Tue Aug 15 09:31:32 UTC 2023 - Dr. Werner Fink + +- Update to 2.11.2: + * Fix compile and test failures when `troff` is not `groff`. + * Fix segfault in typical uses of `man` when `nroff` is not installed. + * Fix crash in `mandb` when processing stray cats. + * SECURITY: Replace `$` characters in page names with `?` when constructing + `less` prompts. + * Silence error message when processing an empty manual page hierarchy with + a nonexistent cache directory. + * `man(1)` now sorts whatis references below real pages, even if the whatis + references are from a section with higher priority. + * `mandb` now correctly records filters in the database if it uses cached + whatis information. + * Upgrade Gnulib, fixing syntax error on glibc systems with GCC 11. + * The `CATWIDTH` configuration file directive now overrides `MINCATWIDTH` + and `MAXCATWIDTH`. + * Database entries for links were often incorrectly stored as if they were + entries for the ultimate source of the page. They are now stored with + the correct type. + * Store links in the database using the section and extension of the link + rather than of the ultimate source file. + * Consider pages for adding to the database even if they seem to already + exist; this performance optimization is no longer needed due to caching, + and it produced inconsistent results in some unusual cases. + * `man` now runs any required preprocessors in the same order that `groff` + does, rather than trusting the order of filters in a page's preprocessor + string. + * Fix building on MinGW. (I haven't been able to test this; help from + MinGW experts would be welcome.) + Improvements: + * Check for stray cats even if no manual pages in a given manpath were + changed. + * Add section `3type` to the default section list just after `2`. This is + used by the Linux man-pages package. + * Recognize more Hungarian translations of the `NAME` section. + * Add more recognized case variants for localized versions of the `NAME` + section. + * Maintain multi keys in sorted order, improving database reproducibility. + * Pick a more consistent name for the target of a whatis entry in the + database. + * Extend rules for when to replace one database entry with another, + producing more stable behaviour. + * Fully reorganize databases after writing them, allowing the reproduction + of bitwise-identical databases regardless of scan order (at least with + GDBM). +- Port patches + * man-db-2.6.3-chinese.dif + * man-db-2.6.3-listall.dif + * man-db-2.7.1-zio.dif + * man-db-2.9.4-alternitive.dif + * man-db-2.9.4-no-chown.patch + * man-db-2.9.4.patch + * man-propose-online.patch + +------------------------------------------------------------------- +Thu May 25 06:37:13 UTC 2023 - Dr. Werner Fink + +- Remove harden_man-db.service.patch as already done upstream + at the end of the service file man-db.service + +------------------------------------------------------------------- +Mon Apr 3 14:39:03 UTC 2023 - Dominique Leuenberger + +- Add man-propose-online.patch: if patch was not found locally, + propose to read it online, offering a URL where it could possibly + be found. + +------------------------------------------------------------------- +Tue Aug 23 06:13:49 UTC 2022 - Dr. Werner Fink + +- Corrrect some offsets of patch hunks +- Remove change in get-mtime.c as mandb-symlink-target-timestamp + now catch the random format changes + +------------------------------------------------------------------- +Mon Aug 22 21:17:21 UTC 2022 - Dirk Müller + +- update to 2.10.2: + * Regenerating man-db's build system now explicitly requires Automake >= + 1.14. (This was already the case since at least man-db 2.10.0, but was + previously undocumented.) + * Make `man -H` sleep for a few seconds after starting the browser, since + it may background itself before loading files (Dr. Werner Fink). + * If an override directory is configured using `--with-override-dir`, it is + now applied more consistently when building the manpath, and whether a + page was found in an override directory is considered when sorting + candidates for display (Mihail Konev). + * Make the man-db manual build reproducible. + * Add some hardening options to the `systemd` service. + * `configure` now has a `--with-snapdir` option, for use on systems where + `snapd` is configured to use a directory other than `/snap`. + * Fix occasional `mandb-symlink-target-timestamp` test failure. + * Fix inadvertent reliance on a GCC extension that caused build failures + with Clang. + * Fix building without `iconv`. +- drop man-db-2.7.1-firefox.dif (upstream) + +------------------------------------------------------------------- +Thu Aug 18 10:25:21 UTC 2022 - Dr. Werner Fink + +- Avoid that mandb-symlink-target-timestamp fools us + +------------------------------------------------------------------- +Thu Aug 18 09:44:06 UTC 2022 - Dr. Werner Fink + +- Workaround missing groff-full to get refer(1), the bibliographic + preprocessor found + +------------------------------------------------------------------- +Thu Aug 18 08:14:54 UTC 2022 - Dr. Werner Fink + +- Update to man-db 2.10.0 (4 February 2022) + * Manpath deduplication no longer mishandles the case where another entry + in the manpath is a suffix of a candidate path to append. + * Fix potential crash in path searching if `getcwd` fails for reasons other + than running out of memory. + * Fix crash in `globbing` test tool if run with no non-option arguments. + * `lexgrog` now produces output in the user's locale. + * Downgrade "malformed .lf request" warning to a debug message and rephrase + it somewhat, since `.lf` requests can use `*roff` arithmetic expressions + and we can't reasonably parse those. + * Avoid modifying the database without changing its mtime, which had been + possible since 2.7.0 if `mandb`'s purge phase found work to do but the + main phase didn't, and which confused some backup systems into reporting + possible filesystem corruption. + * `man` no longer inadvertently modifies the `MANSECT` environment variable + before passing it on to its subprocesses. + * `mandb` now stores the mtime of link targets as the mtime of their + corresponding database entries, rather than sometimes storing the mtime + of the link instead. + * Since man-db 2.4.2, `man` has behaved as if the `-l` option was given if + a manual page argument contains a slash. Since man-db 2.5.6, this has + interacted slightly poorly with the subpage feature, emitting spurious + error messages if given multiple manual page arguments some of which + include a slash. `man` no longer emits spurious error messages in this + case. + * Reduce overhead of `MAN_DISABLE_SECCOMP=1` compared to building without + `libseccomp`. + * Document `MAN_DISABLE_SECCOMP` and `PIPELINE_DEBUG` environment variables + in `man(1)`. + * Add `man-pages(7)` reference to `man(1)`. + * Recognize Arabic and Persian translations of the `NAME` section. + * Delay the `systemd` timer using `RandomizedDelaySec`, so that multiple + containers/VMs on the same host are less prone to running `mandb` all at + the same time. + * Significantly improve `mandb(8)` and `man -K` performance in the common + case where pages are of moderate size and compressed using `zlib`: `mandb + -c` goes from 344 seconds to 10 seconds on a test system. +- Remove patch man-db-2.7.1-security4.dif as now upstream creates + any missing database +- Remove gnulib-ppc64le.patch as gnulib is uptodate even on ppc64le +- Port patches + * man-db-2.6.3-chinese.dif + * man-db-2.6.3-listall.dif + * man-db-2.6.3-man0.dif + * man-db-2.7.1-zio.dif + * man-db-2.9.4-alternitive.dif + * man-db-2.9.4-no-chown.patch + * man-db-2.9.4.patch + * reproducible.patch + +------------------------------------------------------------------- +Mon Aug 15 16:48:51 UTC 2022 - + +- syntax correction of the preinstall scriptlet to avoid creation + of file /0 (bnc#1202377) + +------------------------------------------------------------------- +Thu Aug 11 11:55:04 UTC 2022 - Dr. Werner Fink + +- Add patch gnulib-ppc64le.patch + * Support ppc64le float128 transition + +------------------------------------------------------------------- +Thu Aug 11 08:56:58 UTC 2022 - Dr. Werner Fink + +- Drop usage of update-alternatives as mandoc does not use it + (nor libalternative) + +------------------------------------------------------------------- +Sat May 7 12:17:53 UTC 2022 - Marcus Meissner + +- switch source url to https + +------------------------------------------------------------------- +Wed Oct 6 11:41:21 UTC 2021 - Johannes Segitz + +- Added hardening to systemd service(s) (bsc#1181400). Added patch(es): + * harden_man-db.service.patch + Modified: + * man-db-create.service + +------------------------------------------------------------------- +Fri Aug 6 13:38:49 UTC 2021 - Dr. Werner Fink + +- Add manpath.sh and manpath.csh below /usr/etc/profile.d + +------------------------------------------------------------------- +Tue May 31 20:59:59 UTC 2021 - Stefan Schubert + +- Add patch man-db-2.9.4-alternitive.dif + * Supporting ALSO new `alternatives` which has the same tasks as + `update-alternatives` but in a simplier way. + +------------------------------------------------------------------- +Mon May 31 19:07:16 UTC 2021 - Ferdinand Thiessen + +- Update to version 2.9.4: + * Add support for zstd-compressed manual pages + * Recognise Esperanto, Romanian, Tamil, and Ukrainian translations + of the NAME section. + * Fix handling of \- in the right-hand side of a NAME section. + * Treat "\[en]" (etc.) as another synonym for "\-" in NAME sections, + alongside the existing "\(en" (etc.). + * Avoid incorrect markup in man(1) with po4a >= 0.58. + * Fix manual page translation infrastructure to compare po4a + versions with more than two components correctly. + * Fix "man -X75-12" and "man -X100-12" to set the document font + size as well as the device + * Fix incompatibility of "man -X" and friends with the seccomp + sandbox. + * man --recode and manconv now adjust encoding declarations on the + first line of their input to refer to the new encoding. + * There is a new "man-recode" program. Which has an interface + designed for bulk conversion and so can be much faster when + used on a large number of pages. + * Fix comparison of candidate manual pages to correctly handle the + case where the language elements are the same and match the + locale, but the territory elements differ. + * If run with no arguments or only a section, man now suggests + running "man man". + * man now understands the (
) form on its command + line, so for example "man 'chmod(2)'" is now the same as + "man 2 chmod". + * manconv now guesses the input encoding based on the file name + if it is not explicitly specified. + * Further workarounds for ESET File Security: allow sendmsg when + it is in use. + * If more than one of "../man", "man", "../share/man", and + "share/man" exist relative to a directory on $PATH, then all of + them are now added to the automatically-determined manpath + * Remove arbitrary limit on manpath size. + * Fix several resource and memory leaks. + * Ship a systemd timer to perform daily database maintenance. + * Fix segfaults in mandb. +- Drop our systemd timer in favor of upstream provided one +- Drop unused mancoding +- Drop upstream fixed man-db-2.6.3-section.dif +- Merge man-MAN_POSIXLY_CORRECT-man1.dif into + man-db-2.6.3-listall.dif as first one is only the documentation + of the latter one +- Seperate man-db-2.9.4-no-chown.patch from man-db-2.8.4.dif +- Update man-db-2.8.4.dif, now called man-db-2.9.4.patch +- Update man-db-2.6.3-man0.dif to be used inside prep section +- Refresh man-db-2.7.1-security4.dif, man-db-2.7.1-zio.dif + +------------------------------------------------------------------- +Fri Jan 22 23:57:39 UTC 2021 - Dirk Müller + +- require only glibc-locale-base + +------------------------------------------------------------------- +Fri Sep 11 19:34:46 UTC 2020 - Antoine Belvire + +- Add migration code to handle upgrade from old version of the man + package not supporting alternative path move (boo#1175919). + +------------------------------------------------------------------- +Sun Aug 30 17:39:08 UTC 2020 - Antoine Belvire + +- Fix usage of update-alternatives (boo#1175919). + +------------------------------------------------------------------- +Thu Aug 27 12:59:12 UTC 2020 - Ludwig Nussel + +- Don't recommend groff-full to avoid pulling in ghostscript etc. + groff-full installs itself when there's groff and + ghostscript-library installed. + +------------------------------------------------------------------- +Thu Aug 27 07:38:06 UTC 2020 - Dr. Werner Fink + +- Set libexecdir at build time for wrapper (boo#1175813) +- Do the same in mandb.service + +------------------------------------------------------------------- +Mon Jun 15 07:49:33 UTC 2020 - Dr. Werner Fink + +- Allow user man to execute the do_mandb script (boo#1172876) + +------------------------------------------------------------------- +Fri Jun 5 15:21:06 UTC 2020 - Dr. Werner Fink + +- Switch to user:group man:man within mandb.service (boo#1172575) + +------------------------------------------------------------------- +Sun May 17 17:37:58 UTC 2020 - Andreas Stieger + +- add upstream signing keys and verify source signature + +------------------------------------------------------------------- +Thu Jan 9 09:40:48 UTC 2020 - Ludwig Nussel + +- Don't mark /etc/alternatives files as %config as that would lead + to stale symlinks on uninstall + +------------------------------------------------------------------- +Wed Nov 6 08:48:22 UTC 2019 - Dr. Werner Fink + +- Avoid racy bash code on waiting on find in do_mandb (boo#1155879) + +------------------------------------------------------------------- +Sun Nov 3 11:37:28 UTC 2019 - Dr. Werner Fink + +- Use %{_prefix}/lib for tmpfiles.d directory to avoid to get this + nonexecutable location below new location of %{_libexecdir} + +------------------------------------------------------------------- +Tue Jun 11 12:49:35 UTC 2019 - Dominique Leuenberger + +- BuildRequire pkgconfig(systemd) instead of systemd: allow OBS to + shortcut the build queues by allowing usage of systemd-mini + +------------------------------------------------------------------- +Tue Apr 30 10:57:35 UTC 2019 - Dr. Werner Fink + +- Make systemd timers and services optional but hold them enabled + as maybe in future all packages providing manual pages might use + a posttrans scriplet to trigger a refresh of the man db (boo#1133762). + +------------------------------------------------------------------- +Tue Apr 30 09:09:19 UTC 2019 - lnussel@suse.de + +- remove %verify(not group) from /var/cache/man, the inconsistent + permissions are fixed in the permissions package (boo#1133678) + +------------------------------------------------------------------- +Fri Mar 8 13:12:07 UTC 2019 - Dr. Werner Fink + +- Ah ... yes, manual pages are also provides by e.g. mandoc + +------------------------------------------------------------------- +Thu Mar 7 07:59:37 UTC 2019 - Dr. Werner Fink + +- Skip %verify(not link mtime) from symbolic links %_bindir even if + those should not hurt but avoid superfluous verify messages + +------------------------------------------------------------------- +Wed Mar 6 13:15:43 UTC 2019 - Dr. Werner Fink + +- Minor corrections on %ghost /var/cache/man and link to apropos + +------------------------------------------------------------------- +Wed Mar 6 11:47:58 UTC 2019 - Dr. Werner Fink + +- Use update-alternatives to allow that man(1), apropos(1), whatis(1) + can be overwritten by an other package like mandoc +- Reintroduce wrapper for man(1) but without mapping to user man to + be able to reset the PATH to the standard for any preprocessor + +------------------------------------------------------------------- +Mon Nov 26 11:37:32 UTC 2018 - Dr. Werner Fink + +- Update to man-db 2.8.4 + * Major changes since man-db 2.8.3: + + Rely on decompressors reading from their standard input rather + than redundantly passing them the input file on their command + line. This works better with downstream AppArmor confinement of + decompressors. + + Fix invalid syntax in tmpfiles.d/man-db.conf when configured with + --disable-cache-owner. + + Make seccomp sandbox allow sched_getaffinity, sometimes used by + xz. + + Check for mandb_nfmt and mandb_tfmt in the manual page hierarchy + as documented, not in the current directory. This was broken by + the working-directory-handling changes in 2.8.3. Note that this + change means that "man -l" will never use an external formatter + (which was never documented behaviour and was surely a bad idea). + + Make seccomp sandbox allow some shared memory operations across + the board rather than just when ESET File Security is in use; the + Astrill VPN seems to require something similar, and there are + doubtless other such preload hacks. + + Some versions of ESET File Security call msgget and msgsnd; if + this program is in use, then allow those. + * Major changes since man-db 2.8.2: + + Make seccomp sandbox allow madvise, since that's used by lbzip2. + + Make seccomp sandbox allow kill and tgkill outright, since groff + uses kill to pass on signals to its child processes. + + Make seccomp sandbox allow sibling architectures on + x86/x86_64/x32, since people sometimes mix and match architectures + there for performance reasons. + + Fix version check in locale macro loading to tolerate groff + release candidates. + + man now only changes working directory in child processes, so + never fails due to being unable to change back to its original + working directory. + + accessdb, apropos, and lexgrog no longer emit spurious gettext + headers in their --help output when localised. + * Major changes since man-db 2.8.1: + + Make seccomp sandbox allow kill and tgkill when the signal is + directed at the current process or one of its threads; this is + needed by xz. + + Make seccomp sandbox allow ioctl(fd, TIOCGWINSZ), since that's used + by musl. + + Work around the proprietary "ESET File Security" antivirus program in + seccomp sandbox: if this is in use then we need to allow some + socket-related system calls. + + Work around the "snoopy" execve() wrapper and logger in seccomp + sandbox: if this is in use then we need to allow some + socket-related system calls. + + Interpret EFAULT from seccomp_load as meaning that seccomp is + unavailable, since this can be returned by some versions of + qemu-user. + * Major changes since man-db 2.8.0: + + Fix seccomp sandbox build on Linux/POWER. + + Fix manconv execution under seccomp when man is installed setuid. + + Make seccomp sandbox allow mremap (used by iconv, for example). + + configure now has a --without-libseccomp option to disable the use + of seccomp even if the library is available. + * Major changes since man-db 2.7.6.1: + + Fix locale macro loading for Chinese to load the macro file + corresponding to just the language part of the user's locale. + + Honour --enable-cache-owner in generated systemd tmpfiles snippet + rather than hardcoding "man". + + If man adds prefixes to a page to handle such things as disabling + hyphenation, then take account of those when looking for a + preprocessor line at the start of the page. + + Fix a segfault in 'man -D --help'. + + Treat "\(en" as another synonym for "\-" in NAME sections. + + Confine most subprocesses that handle untrusted data using + seccomp. This mainly deals with subprocesses that perform + encoding conversions, (de)compressors, groff programs, and a few + other odds and ends. groff programs use a slightly more + permissive filter since they need to create temporary files, so + additional path-based confinement (e.g. using AppArmor) is still + useful. + If this goes wrong, then MAN_DISABLE_SECCOMP=1 can be set in the + environment to disable it, but please report any such problem as a + bug. + + man now falls back to cat if the compile-time default pager is not + executable. + * Major changes since man-db 2.7.6: + + Don't chmod CACHEDIR.TAG if it doesn't exist. + + Correct installation of Swedish manual pages. +- Modify the patches + *man-db-2.6.3-listall.dif + * man-db-2.6.3-man0.dif + * man-db-2.6.3-section.dif + * man-db-2.7.1-firefox.dif + * man-db-2.7.1-security4.dif + * man-db-2.7.1-zio.dif +- Rename patch man-db-2.7.6.dif which is now man-db-2.8.4.dif + +------------------------------------------------------------------- +Fri Nov 9 13:37:43 UTC 2018 - Dr. Werner Fink + +- Add systemd timer service and its timer unit to refresh man + data base daily without using cron (bsc#1115406) + +------------------------------------------------------------------- +Mon Apr 16 14:25:43 UTC 2018 - werner@suse.de + +- Skip cron job for cleaning /var/cache/man as there exists + /usr/lib/tmpfiles.d/man-db.conf + +------------------------------------------------------------------- +Thu Dec 7 17:33:26 CET 2017 - kukuk@suse.de + +- Add man-db-create.service to fill /var/cache/man at bootup + if the directory is empty (required by FHS and for transactional + updates). +- Don't fill /var/cache/man if it does not exist yet (needed for + transactional updates). +- We don't need to package /var/cache/man, systemd-tmpfiles is + creating it already for us. + +------------------------------------------------------------------- +Wed Nov 29 12:44:41 UTC 2017 - werner@suse.de + +- Make /var/cache/man a real directory as in system-user-man the + directory is gone + +------------------------------------------------------------------- +Thu Nov 23 13:40:41 UTC 2017 - rbrown@suse.com + +- Replace references to /var/adm/fillup-templates with new + %_fillupdir macro (boo#1069468) + +------------------------------------------------------------------- +Tue Nov 21 07:45:36 UTC 2017 - werner@suse.de + +- Require package man-pages at build time for testing + +------------------------------------------------------------------- +Thu Feb 16 10:00:30 UTC 2017 - werner@suse.de + +- Use _libexecdir instead of _prefix/lib + +------------------------------------------------------------------- +Sat Jan 21 06:35:30 UTC 2017 - kukuk@suse.com + +- Require user and group man + +------------------------------------------------------------------- +Fri Dec 16 09:37:34 UTC 2016 - werner@suse.de + +- Update to version 2.7.6 + * Many bug fixes + * man understands the .
form on its command line, + so for example 'man chmod.2' is now the same as 'man 2 chmod' + (Contributed by Mihail Konev) + * Document that 'man -K' searches page source, not rendered text +- Rename patch man-db-2.7.1.dif which becomes man-db-2.7.6.dif +- Port the patches + man-MAN_POSIXLY_CORRECT-man1.dif + man-db-2.6.3-chinese.dif + man-db-2.6.3-listall.dif + man-db-2.6.3-section.dif + man-db-2.7.1-firefox.dif + man-db-2.7.1-security4.dif + man-db-2.7.1-zio.dif +- Add an rpmlintrc file man-rpmlintrc as we apply a patch + on generated manual pages +- Do not wrap man anymore (boo#986211) + +------------------------------------------------------------------- +Fri Jun 24 10:06:32 UTC 2016 - werner@suse.de + +- Give man(1) command a home that is let pager less(1) handle its + history (boo#986211) + +------------------------------------------------------------------- +Mon Mar 21 15:04:48 UTC 2016 - bwiedemann@suse.com + +- Add reproducible.patch to fix build-compare (bnc#971922) + +------------------------------------------------------------------- +Mon Jun 8 08:31:52 UTC 2015 - werner@suse.de + +- Allow root to use man command within its home + +------------------------------------------------------------------- +Fri May 29 10:34:37 UTC 2015 - werner@suse.de + +- Own /usr/lib/tmpfiles.d if not owned by package filesystem + +------------------------------------------------------------------- +Thu May 28 12:55:34 UTC 2015 - werner@suse.de + +- Update to version 2.7.1 + For the first time since version 2.4.0, the database format has + changed slightly, so you will need to run 'mandb --create' after + installing the new version to rebuild your databases from scratch. +- Fixes + * Various portability fixes for Solaris, contributed by Peter Bray. + * man now runs correctly when its current working directory has been + deleted. (As a result of this fix, man-db now requires + libpipeline >= 1.4.0.) + * 'man -a' sends its prompts to /dev/tty rather than to stderr, and + likewise reads replies from /dev/tty rather than from stdin. + * Be more careful to avoid using or double-closing closed database + handles. Fixes test suite failures on some systems. + * Patch the fdutimens function imported from Gnulib to work around a + libc bug in GNU/Hurd. + * Fix test suite in the case where the system supports + high-precision timestamps but the file system containing the build + directory does not. + * lexgrog now filters terminal escape sequences out of cat pages + before trying to parse them. + * Tools that consider the terminal line length now prioritise the + COLUMNS environment variable above the TIOCGWINSZ ioctl. + * Manpath elements are no longer canonicalised before being inserted + into the search path; this caused the use of incorrect catpaths in + some cases. This was broken by the LANGUAGE-handling fixes in + 2.5.4. + * Remove test suite dependency on realpath(1). + * Fix a test failure when configured with --enable-undoc. + * Run the pager in man's original working directory rather than in + the manual hierarchy. (As a result of this fix, man-db now + requires libpipeline >= 1.3.0.) + * mandb only creates a cache directory tag if the catpath is + different from the manpath, since it should only be created in + directories that consist entirely of cached information. +- Improvements + * Ship a systemd tmpfiles snippet to clean up old cat files after a + week. + * The modification time of manual databases is now simply stored in + the mtime of the database files themselves, rather than using a + special row. This makes databases reproducible between + otherwise-identical installations, as long as the underlying + database has predictable behaviour. As a bonus, man-db now uses + high-precision timestamps to determine whether it needs to update + databases. + * Timestamps of manual pages are also now stored in the database + with high precision and compared accordingly. + * Files are now ordered by first physical extent before reading + them, for substantial performance improvements in operations such + as mandb and 'man -K'. + * 'man -H' shows a better error message if no browser is configured. + * zsoelim is now installed in $pkglibexecdir, to avoid clashes with + other packages. +- Rename patches + man-db-2.6.5-firefox.dif becomes man-db-2.7.1-firefox.dif + man-db-2.6.5-security4.dif becomes man-db-2.7.1-security4.dif + man-db-2.6.5-zio.dif becomes man-db-2.7.1-zio.dif + man-db-2.6.5.dif becomes man-db-2.7.1.dif + +------------------------------------------------------------------- +Thu Jul 31 08:33:00 UTC 2014 - werner@suse.de + +- The former change had added the patch man-MAN_POSIXLY_CORRECT-man1.dif + +------------------------------------------------------------------- +Tue Jul 29 19:40:08 UTC 2014 - auxsvr@gmail.com + +- Added description of MAN_POSIXLY_CORRECT in man.man1, + patch man-MAN_POSIXLY_CORRECT-man1.dif (bnc#786679) + +------------------------------------------------------------------- +Tue Jun 10 15:13:45 UTC 2014 - werner@suse.de + +- Avoid messages on deleted cache directories bewlow /var/cache/man/ + that is tag them as %ghost (bnc#882030) +- The former submit had rebased the patches + man-db-2.6.3.dif + man-db-2.6.3-security4.dif + man-db-2.6.3-firefox.dif + man-db-2.6.3-zio.dif + which now had renamed to + man-db-2.6.5.dif + man-db-2.6.5-security4.dif + man-db-2.6.5-firefox.dif + man-db-2.6.5-zio.dif + accordingly + +------------------------------------------------------------------ +Tue Apr 8 12:26:37 UTC 2014 - sweet_f_a@gmx.de + +- Update to version 2.6.6 +- Fixes since 2.6.3: + * man(1) and catman(8) now document the default section list set at + configure time. + * Build fixes for Automake 1.13. + * man-db 2.6.0 arranged to search the full manpath when expanding + .so directives in manual pages (so that ".so name.1" works as well + as ".so man1/name.1"), but this incorrectly did not take effect + for manual pages that consist only of a .so directive. This is + now fixed. +- Improvements since 2.6.3: + * The MANLESS environment variable is now treated as if it were a + default value for the -r option to man: occurrences of the text + "$MAN_PN" are expanded, and explicitly using the -r option + overrides the default. + * The (unfortunately still hardcoded) maximum length for paths to + manual page hierarchies in the configuration file is now 511 + characters rather than 49. + * MANPATH entries now undergo glob(7)-style wildcard expansion, + allowing entries such as "/opt/*/man". +- Fixes since 2.6.4: + * man's --warnings option works again on systems with versions of + groff that support it (broken in 2.6.4). + * man automatically falls back to C.UTF-8 and then en_GB.UTF-8 if + trying to find a UTF-8 locale on a system without + /usr/share/i18n/SUPPORTED. +- Fixes since 2.6.5: + * apropos's --and option now works again; it was broken by the + optimisations in 2.6.2. + * Restore compatibility with Automake 1.10. + * Improve support for translation of common elements of help + messages. + * Don't issue error messages when the database refers to a page that + no longer exists. + * Pass macro and hyphenation language tags to groff again (broken in + 2.6.5). +- Improvements since 2.6.5: + * ./configure --with-override-dir=OVERRIDE arranges to look for + manual pages in DIR/OVERRIDE before each path element DIR. +- rebase following patches: + * man-db-2.6.3.dif + * man-db-2.6.3-security4.dif + * man-db-2.6.3-firefox.dif + * man-db-2.6.3-zio.dif +- enable checks + +------------------------------------------------------------------- +Thu Sep 12 11:33:08 UTC 2013 - mvyskocil@suse.com + +- Recommends groff-full to reduce dependencies (bnc#839717) + +------------------------------------------------------------------- +Mon Jun 17 09:23:47 UTC 2013 - werner@suse.de + +- Just be able to print manual pages, that is require groff-full +- Be second owner of /usr/share/groff/site-tmac + +------------------------------------------------------------------- +Mon Apr 22 11:55:06 UTC 2013 - meissner@suse.com + +- remove japanese manpages + +------------------------------------------------------------------- +Tue Apr 16 12:32:31 UTC 2013 - mmeister@suse.com + +- Added url as source. + Please see http://en.opensuse.org/SourceUrls + +------------------------------------------------------------------- +Mon Oct 29 12:55:03 UTC 2012 - werner@suse.de + +- Make shadowed manual pages accessible (bnc#786679) + +------------------------------------------------------------------- +Tue Oct 9 15:20:03 UTC 2012 - werner@suse.de + +- Avoid double free of pointer internal_locale due dup onto + pointer lang + +------------------------------------------------------------------- +Thu Oct 4 09:16:16 UTC 2012 - werner@suse.de + +- Update to version 2.6.3 + * Build fixes for glibc 2.16 and Automake 1.12. + * apropos prints an error message and returns non-zero when it finds + no matches. (Regression introduced in 2.5.1.) + * The presence of a 64-bit GDBM database on the manpath no longer + causes a 32-bit man process to exit with a fatal error. + * apropos is much faster when run with many arguments. + * whatis may be given the full path to an executable as an argument, + in which case it will look up the base name of that executable in + the appropriate parts of the manpath. + * Translated manual pages are no longer displayed starting with a + spurious blank line. + * Fix double-free in mandb when encountering a symlink outside the + manual hierarchy, thanks to Peter Schiffer. + * Running 'man -w' (with a new --path alias) without a name now + prints the manpath, for compatibility with other man + implementations. The vim viewdoc plugin makes use of this. + * Fix a segfault when scanning links to empty pages. + * Once we've seen at least one record in a page's NAME section, + ignore any further records that don't include a whatis + description, as they tend to be noise. + * Ensure that the target of a symlink or .so chain is always recorded + as a real page. + * Read a user-specified configuration file even if HOME is unset. + * Fix failure to display manual pages in some encodings when + installed setuid. + * Wrap long table cells in man(1), fixing test failures with groff + 1.21. + * If an explicit section is passed to man, then pages that match + that section exactly will be preferred over pages that only have + that section as a prefix. + * Fix a segfault when 'man -K' tries to display certain pages. + * Fix a segfault in some situations when processes are killed by + SIGHUP, SIGINT, or SIGTERM. + * As promised in the release notes for man-db 2.5.8, man-db no + longer ships its own copy of libpipeline + (http://libpipeline.nongnu.org/). You must build and install that + library separately. + * Search the full manpath when expanding .so directives in manual + pages. As part of this, '.so name.1' should now work as well as + '.so man1/name.1'. + * lexgrog handles roff named glyphs and perldoc strings in NAME + sections. + * man no longer starts a pager if standard output is not a tty. + * The -s option to whatis and apropos now takes a colon- or + comma-separated list of sections, similar to 'man -S'. + * mandb error output is neater when stderr is not a terminal. + * Add basic support for the implementation of nroff/troff in the + Heirloom Documentation Tools. Title lengths are not properly set + as yet, and many features are untested. + * mandb removes cat* and NLS subdirectories of cat directories whose + corresponding man directories no longer exist. + * mandb forces SIGPIPE back to its default disposition on startup, + to avoid noisy output in case it was started in a context where + SIGPIPE was ignored. + * SECTION entries in a user configuration file now override those in + the system configuration file, rather than appending to them. + * The default less prompt now includes "(press h for help or q to + quit)" to help novices find their way around. + * man-db may now be built to use Berkeley DB version 5 + (--with-db=db5). + * Fix assertion failure on 'man -l' with an uncompressed page and + any of --no-hyphenation, --no-justification, or a non-English + page. + * Try underscore-separated subpages as well as hyphen-separated + ones, thanks to Tanguy Ortolo. + * Build libman and libmandb as shared libraries, reducing installed + footprint by about 200K (at least on GNU/Linux). + * Warnings about unrecognised locales are now suppressed if the + DPKG_RUNNING_VERSION environment variable is set (i.e. man-db is + running within a Debian package's maintainer script), since the + system locales are often out of sync with the C library in that + context. Thanks to the Debian Perl maintainers for the idea. + * Allow building with an external libpipeline + (http://libpipeline.nongnu.org/), which has been split out from + man-db. This is a transitional measure: a future version of + man-db will stop shipping its own copy of libpipeline. + * mandb should no longer repeatedly rescan manual page hierarchies + when a whatis entry turns into a broken link. + * If a subprocess exits before man manages to read all the output + from it, it now drains the output file descriptor rather than + immediately discarding it. + * If /usr/share/i18n/SUPPORTED is available, man attempts to use it + to ensure that LC_CTYPE is set to an appropriate locale for the + selected character set when invoking col. This fixes 'LANG=C man + -E UTF-8', as used by lintian. + * Fix possible mandb crash when MAN_MUST_CREATE is unset. + * man can now tell nroff to disable justification if the + --no-justification option is used. + * If the full path to an executable is given as an argument, man + will try looking up the corresponding manual page in the + appropriate part of the manpath, rather than just trying to format + the text of the executable as a manual page. + * In the GNU manual hierarchy layout, search man + directories as well as just man (e.g. /usr/share/man/man3p as + well as /usr/share/man/man3). + * By request, man now prefers getting a page from the best manual + section over getting a page in the correct language. + * All programs now support a MAN_DEBUG environment variable which + can be used in place of the -d/--debug option. This is useful in + some situations where a program is being called deep in a process + tree. + * Add support for emulating pipe() with socketpair(), which is + faster on some systems; thanks to Werner Fink of SUSE. + * Cat pages are now always saved in UTF-8, and converted to the + proper encoding at display time, which means that cat pages can + now be saved regardless of locale. Note that a consequence of this + is that cat pages now include formatting information (e.g. + overstriking) and need to be run through col(1) before display. + * Exact-section database lookups were incorrectly returning all + database entries whose section names were prefixes of the + requested section name. In some cases this could confuse mandb + into never believing that the database was up to date. + * Fix handling of pages with comma-separated names ("foo, bar, + baz") in their NAME sections, broken by a change in 2.5.0 (!) + to ignore manual page names containing spaces. + * Fixed a buffer overflow in the pipeline library's line-reading + functions. I don't believe this to be exploitable: at worst we + might believe that there's some garbage at the end of manual pages + (whose contents are untrusted anyway) and this bug typically + resulted in a failed assertion the next time anything tried to + read a line. + * Plugged two substantial memory leaks in the pipeline library. + * whatis and apropos only display any given manual page, or pointers + to it, once. + * man now sets less(1)'s environment up correctly for manual pages + encoded in CP1251. + * manconv no longer confuses situations such as "this UTF-8 + character is not representable in the target encoding" with "this + text is not in UTF-8". + * The default configuration file now includes section 0, used on + some systems to document C library header files. + * 'make check' now passes in the presence of a UTF-8-aware col, such + as that in util-linux-ng. + * The 'man -K' option is now supported to search the full text of + all manual pages. This was inspired by a similar option in the + other man package (currently at version 1.6f) currently maintained + by Federico Lucifredi and formerly by Andries Brouwer, but I took + advantage of man-db's pipeline library to implement it entirely + in-process, without having to start a separate grep process for + every manual page. In my tests with fairly typical searches across + variously all manual pages or just one section, man-db's + implementation ran between 3 and 10 times faster. + * Database directories are now only created when there are + corresponding manual page directories, not just because they're + mentioned in the configuration file. + * By default, man will now try to interpret pairs of manual page + names given on the command line as equivalent to a single manual + page name containing a hyphen (e.g. 'man foo bar' => foo-bar(1)). + This supports the common pattern of programs that implement a + number of subcommands, allowing them to provide manual pages for + each that can be accessed using similar syntax as would be used to + invoke the subcommands themselves. Suggested by H. Peter Anvin, + Federico Lucifredi, and others on the git mailing list. + * The build process is now quieter by default. Use './configure + --disable-silent-rules' or 'make V=0' if you don't like this or + your make(1) doesn't support the non-standard extension required. + * manconv understands a wider range of Emacs-style coding tags. + * Recommendations to change MAN_DB_CREATES, MAN_DB_UPDATES, and + MAN_CATS #define options in manconfig.h have been replaced by new + configure options --enable-automatic-create, + --disable-automatic-update, and --disable-cats respectively. Note + that automatic user database creation is now off by default, as it + is often too slow for the usefulness it adds; use + --enable-automatic-create to enable it. + * Pages that declare a non-default encoding in their preprocessor + lines are now handled correctly. + * man-db's 'make check' now tests that all its own manual pages + format without errors or warnings from groff, to ensure a + better-quality release. + * lexgrog now stops on any unrecognised roff request, rather than + continuing and often littering the database with garbage. + * man no longer requires both standard input and standard output to + be terminals in order to use the terminal line length. The line + length from standard output is preferred if available. + * The manpath was built completely wrongly when multiple entries + were present in LANGUAGE: duplicates were handled strangely, and + languages were effectively iterated in reverse order. It should be + rather more sensible now. + * The MAN_KEEP_STDERR environment variable can now be used to + override man's default of discarding stderr when stdout is a + terminal. + * Handling of terminal widths for cat pages is now configurable, + using the MINCATWIDTH, MAXCATWIDTH, and CATWIDTH configuration + file directives. + * 'man -a' now detects duplicate manual page candidates more + reliably, and sorts them better. + * Belarusian, Estonian, Greek, Latvian, Lithuanian, Macedonian, + Romanian, Slovenian, and Ukrainian pages are now supported. + * man can now search for pages using regular expressions (with + --regex) or shell wildcards (with --wildcard). By default this + searches both page names and descriptions, like apropos, but if + the --names-only option is used then it searches page names only, + like whatis. + * man can now tell nroff to disable hyphenation if the + --no-hyphenation option is used. + * man-db already searched for manual pages in ../man and man + directories relative to each $PATH component; it now searches in + ../share/man and share/man directories too. + * Groff 1.20 was recently released, including the 'preconv' + preprocessor. Although man-db has supported preconv to some extent + since 2.4.4, man-db's configure now detects its presence and + infers that groff supports Unicode input using it; man also now + takes slightly better advantage of preconv than before. + * Per-locale groff macros are now loaded if possible, allowing us to + take advantage of such things as localised versions of predefined + strings and language-aware hyphenation. This only works with Groff + 1.20.2 or better (not yet released), since earlier versions did + not allow us to suppress warnings in the event that the + appropriate macro file is not available. + * Cleaned up a number of possible crashes, memory leaks, and missing + error checks found by the Coverity Scan project. + * Fix build if MAN_CATS is undefined. + * If the LINGUAS environment variable is set while running + configure, it now controls building and installation of localised + manual pages as well as program translations. + * The LANGUAGE environment variable is now tokenised properly, + rather than only taking the first two characters of each element. + * Fix build if --disable-nls is used or iconv is not available. + * man now correctly propagates the exit code of whatis or apropos + when called with the -f or -k option respectively. + * A number of inconsistencies and readability problems with man-db's + own manual pages have been cleaned up, thanks mainly to Yuri + Kozlov. + * Reduce the number of warnings emitted when using an unrecognised + locale. + * manconv and zsoelim are now called internally rather than by + executing external programs, to improve performance. + * man-db now uses GDBM (--with-db=gdbm) in preference to Berkeley DB + (--with-db=db or --with-db=dbN where N is 1, 2, 3, or 4) by + default, since hardware improvements have rendered Berkeley DB's + speed advantages negligible for our purposes and the relatively + frequent SONAME and on-disk format changes are not worth the + hassle. Distributors should note that if they follow this change + then they will need to arrange for databases to be rebuilt on + upgrade to this version. + * Duplicate manual page hierarchies due to symlinks (e.g. /usr/man + -> /usr/share/man) are detected and removed from the search order. + * A locale modifier (e.g. @latin) in a directory name must now match + the locale if the former is set, in addition to the language and + territory. + * Bare .so includes (e.g. ".so foo.1" rather than ".so man1/foo.1") + now work, although only within the same manual page hierarchy for + now. + * 'man -H' (without a browser argument) was completely broken in + 2.5.1 and is now fixed. + * man no longer breaks in Japanese locales when using less as a + pager. + * The --encoding option to man can now take a true character + encoding rather than a *roff device; the latter was an unreliable, + inflexible, and awkward way to select an output encoding. The old + semantics are still supported for backward compatibility. + * Whatis parsing stops at .ie or .if conditionals. + * CJK locale specifications where the codeset component is + equivalent to but not stringwise-identical to UTF-8 (e.g. + zh_CN.utf8) are handled better. + * man(1)'s OPTIONS section is ordered more comprehensibly. + * apropos, lexgrog, man, mandb, and whatis ignore encoding + conversion errors for the last possible encoding of the source + page. This helps, for example, with pages including misencoded + non-ASCII names of authors; it usually seems better to allow these + pages to pass with small errors than to break them entirely. + +------------------------------------------------------------------- +Mon Oct 1 13:13:14 UTC 2012 - werner@suse.de + +- Add ChangeLog and COPYING to documentation (bnc #777385) + +------------------------------------------------------------------- +Tue Sep 4 13:44:08 UTC 2012 - coolo@suse.com + +- move man page directories to filesystem + +------------------------------------------------------------------- +Mon Jul 2 05:08:10 UTC 2012 - coolo@suse.com + +- merge the automake 1.12 patches + +------------------------------------------------------------------- +Thu Jun 28 09:48:13 UTC 2012 - i@marguerite.su + +- fix build for openSUSE. + * AM_PROG_AR +- fix 12.2 builds + * replace depreciated am_prog_mkdir_p with ac_prog_mkdir_p. + +------------------------------------------------------------------- +Tue May 29 12:39:10 UTC 2012 - puzel@suse.com + +- fix build with automake-1.12 + - add: automake-1.12.patch + +------------------------------------------------------------------- +Sun Dec 25 22:22:18 UTC 2011 - coolo@suse.com + +- cleanup spec file + +------------------------------------------------------------------- +Thu Dec 1 11:22:35 UTC 2011 - coolo@suse.com + +- add automake as buildrequire to avoid implicit dependency + +------------------------------------------------------------------- +Thu May 26 10:32:14 CEST 2011 - werner@suse.de + +- man requires glibc-locale otherwise manconv does not work + +------------------------------------------------------------------- +Mon Jun 28 06:38:35 UTC 2010 - jengelh@medozas.de + +- use %_smp_mflags + +------------------------------------------------------------------- +Fri Apr 30 13:49:23 CEST 2010 - werner@suse.de + +- Add a hint how to avoid the listall default behaviour of man + +------------------------------------------------------------------- +Sun Dec 13 17:02:44 CET 2009 - jengelh@medozas.de + +- enable parallel building + +------------------------------------------------------------------- +Tue Nov 3 19:09:30 UTC 2009 - coolo@novell.com + +- updated patches to apply with fuzz=0 + +------------------------------------------------------------------- +Tue Sep 22 00:19:11 CEST 2009 - crrodriguez@suse.de + +- tag localized man pages correctly + +------------------------------------------------------------------- +Wed Aug 26 12:53:54 CEST 2009 - mls@suse.de + +- make patch0 usage consistent + +------------------------------------------------------------------- +Mon Aug 3 13:26:52 CEST 2009 - werner@suse.de + +- Remove catman directories from /var/cache (bnc#527434) + +------------------------------------------------------------------- +Fri Jan 16 17:03:24 CET 2009 - werner@suse.de + +- Add ../share/man/ to manpath expansion mentioned by + Matt_Domsch@dell.com, done for man_db by Colin Watson + +------------------------------------------------------------------- +Fri Nov 28 13:15:30 CET 2008 - werner@suse.de + +- For listall patch: add support for multiple man pages in the + same section (bnc#448283) +- Fix bug in listall patch: initialize variable len as this may + break on some system otherwise. + +------------------------------------------------------------------- +Thu Nov 20 18:13:38 CET 2008 - werner@suse.de + +- Skip mandocdb workaround as groff now works in UTF-8 (bnc#446710) +- Replace pipe(2) with socketpair(2) to speed up mandb (bnc#381830) + +------------------------------------------------------------------- +Thu Oct 2 13:03:40 CEST 2008 - werner@suse.de + +- Fix option handling for renice in cron script (bnc#431027) + +------------------------------------------------------------------- +Tue Aug 12 17:41:26 CEST 2008 - werner@suse.de + +- Update to version 2.5.2 + * `man -H' (without a browser argument) was completely broken in + 2.5.1 and is now fixed. + * man no longer breaks in Japanese locales when using less. + * The --encoding option to man can now take a true character + encoding rather than a *roff device; the latter was an + unreliable, inflexible, and awkward way to select an output + encoding. The old semantics are still supported for backward + compatibility. + * Whatis parsing stops at .ie or .if conditionals. + * CJK locale specifications where the codeset component is + equivalent to but not stringwise-identical to UTF-8 (e.g. + zh_CN.utf8) are handled better. + * man(1)'s OPTIONS section is ordered more comprehensibly. + * apropos, lexgrog, man, mandb, and whatis ignore encoding + conversion errors for the last possible encoding of the source + page. This helps, for example, with pages including misencoded + non-ASCII names of authors; it usually seems better to allow + these pages to pass with small errors than to break them + entirely. + +------------------------------------------------------------------- +Thu Jun 5 17:04:01 CEST 2008 - werner@suse.de + +- Show the user if there are more than one manual page found for + the stated item (fate#303433) + +------------------------------------------------------------------- +Tue May 13 15:22:58 CEST 2008 - werner@suse.de + +- Avoid tab stops in section names + +------------------------------------------------------------------- +Wed Apr 23 13:12:12 CEST 2008 - werner@suse.de + +- Use speedup for bnc#381830 only in mandb as man would be break +- Avoid trouble with -Wl,--as-needed therefore fore -lbz2 and -lz + +------------------------------------------------------------------- +Tue Apr 22 15:45:22 CEST 2008 - werner@suse.de + +- Make libzio interface smarter, that is if used only for simple + decompression do not use a pipe (saves 30% mandb run time) + (bnc#381830) +- Make cron.daily.do_mandb smarter, that is check if anything + has changes in the global manual paths that needs to run mandb + (bnc#381830) +- Update to bug fix version 2.5.1 + * The manual is now built automatically, avoiding some ordering + problems on 'make distclean'. + * Manual pages are converted to the proper input encoding for troff + output as well as nroff output. + * The -t, -T, -X, and -Z options to man work again; in 2.5.0, they + read input from stdin rather than from the manual page. + * apropos and whatis no longer segfault when given an explicit + locale using -L. + * man now understands that groff's ascii device takes ASCII input, + not ISO-8859-1. + * man no longer discards stderr when writing to a file or a pipe; + this was broken by an overenthusiastic change in 2.5.0. + * manconv now falls back to the next encoding in its list if any + characters in an entire 64KB block fail to decode using the + current encoding, as was originally intended. + * manconv is more careful about extracting coding: directives from + manual pages. + * Ctrl-C and Ctrl-\ now work again at the prompt issued by 'man -a'. + * There is a new --with-sections configure option to change the + default value of SECTION in the configuration file. + * Automake is now used to generate Makefiles. Among other things, + this fixes VPATH builds and some bugs in dependency generation, + and should allow building with non-GNU versions of make. + * man-db now uses the Gnulib portability library, allowing the + removal of earlier haphazard portability code. While this results + in a somewhat larger source distribution, it makes man-db easier + to maintain and should make it easier to build on systems to which + the maintainer does not have access. + * In the process of switching to Gnulib, the last vestiges of + pre-C89 support have been removed; they were documented to be + broken anyway. + * If the MANROFFOPT environment variable is set, man now appends its + value to the *roff command line. + * man now accepts a --recode option to output a source manual page + converted to a specified encoding. + * For compatibility with System V, man accepts -s as an alias for + -S, and permits sections to be comma-separated as well as + colon-separated. + * man now accepts a --warnings option to enable groff warnings. + +------------------------------------------------------------------- +Tue Feb 26 13:10:39 CET 2008 - werner@suse.de + +- Ensure to find local manual pages even in sub directories + +------------------------------------------------------------------- +Wed Jan 30 12:09:07 CET 2008 - werner@suse.de + +- Make mandb cron job ionice bnc#356792 +- Avoid assert on wrong locale man path +- Do mix bits of get_catpath() with hash tags in man db files + +------------------------------------------------------------------- +Fri Jan 18 15:29:48 CET 2008 - mkoenig@suse.de + +- Fix path in sysconfig.cron-man [#350542] + +------------------------------------------------------------------- +Mon Jan 7 13:08:16 CET 2008 - werner@suse.de + +- Remove suid root from wrapper as we do not cache manual page + anymore (bug #351988) + +------------------------------------------------------------------- +Thu Dec 13 17:07:08 CET 2007 - werner@suse.de + +- Add workaround for gettext 0.17 + +------------------------------------------------------------------- +Mon Dec 10 17:23:04 CET 2007 - werner@suse.de + +- Update to man-db 2.5.0-4 + * No temporary files anymore due usage of pipes + * Our libzio patch is simply to add due this new API + * Better UTF-8 support + * Disable straycats for now +- Add sample script mancoding to show how to use encoding tag + +------------------------------------------------------------------- +Wed Sep 19 13:39:50 CEST 2007 - werner@suse.de + +- Be sure that e.g. /usr/share/man/man3p/open.3p.gz is found before + /usr/share/man/man3/open.3pm.gz by "man 3p open" (bug #310498) + +------------------------------------------------------------------- +Fri Jul 27 12:50:48 CEST 2007 - mfabian@suse.de + +- change BuildRequires to make it build in the openSUSE build + service for versions <= 10.2 as well. + +------------------------------------------------------------------- +Thu Jul 26 14:33:08 CEST 2007 - mfabian@suse.de + +- Bugzilla #292412 comment #47: accept both UTF-8 an legacy + encodings in the man-page sources for Japanese and Chinese + as well. + +------------------------------------------------------------------- +Wed Jul 25 12:09:51 CEST 2007 - mfabian@suse.de + +- Bugzilla #292412 comment #30 and #39: improve Chinese patch. +- use %find_lang macro + +------------------------------------------------------------------- +Thu Jul 19 17:36:07 CEST 2007 - werner@suse.de + +- Add Chinese support to man (bug #292412) + +------------------------------------------------------------------- +Wed Jul 18 15:11:37 CEST 2007 - werner@suse.de + +- Add workaround for html browsers which do their job in + background: do not remove the temporary files to fast (#280613) +- Update to debain patch level 6 which + * includes bug fix for CVE-2006-4250 (bug #262747) + * includes french manual pages + +------------------------------------------------------------------- +Tue Apr 17 10:44:44 CEST 2007 - werner@suse.de + +- Fix heap buffer overflow (CVE-2006-4250, bug #262747) + +------------------------------------------------------------------- +Mon Mar 26 11:38:22 CEST 2007 - rguenther@suse.de + +- Add libbz2-devel and libzio-devel BuildRequires + +------------------------------------------------------------------- +Wed Mar 21 13:35:40 CET 2007 - rguenther@suse.de + +- Remove unused util-linux BuildRequires, added less, zlib-devel + and gdbm-devel BuildRequires + +------------------------------------------------------------------- +Thu Feb 15 13:20:38 CET 2007 - werner@suse.de + +- Remove not used path elements (X11R6, openwin, allman) (#245692) + +------------------------------------------------------------------- +Fri Feb 9 13:16:35 CET 2007 - werner@suse.de + +- Make it build without root privileges, loosing time for texlive + +------------------------------------------------------------------- +Mon Jan 29 16:10:01 CET 2007 - sbrabec@suse.cz + +- Removed references to /opt/gnome. + +------------------------------------------------------------------- +Mon Sep 4 15:40:44 CEST 2006 - rguenther@suse.de + +- Remove unused sharutils dependency. + +------------------------------------------------------------------- +Mon Sep 4 13:11:09 CEST 2006 - rguenther@suse.de + +- Remove lynx build dependency. Set default for AC_PATH_PROG for + lynx to /usr/bin/lynx. + +------------------------------------------------------------------- +Mon Aug 7 15:43:06 CEST 2006 - werner@suse.de + +- Make it work even with new gettext package + +------------------------------------------------------------------- +Thu Aug 3 10:52:50 CEST 2006 - sndirsch@suse.de + +- read also manual pages in man4x subdirectories; required for + conflicting 'mouse' manual page and i810 driver manual page, + which has been moved to man4x directory + +------------------------------------------------------------------- +Wed Jun 14 18:27:48 CEST 2006 - werner@suse.de + +- Update to man-db 2.4.3 patchlevel 3 to get the first part of bug + #183796 fixed. +- Change lex scanner to set sperator ony onece per whatis/apropos + line to get second part of bug #183796 fixed +- Support several language types/locations +- Do not fail on verbatim macro of perl man pages on whatis/apropos +- Do not fail on DOS formated manual pages on whatis/apropos + +------------------------------------------------------------------- +Fri Apr 7 13:05:49 CEST 2006 - werner@suse.de + +- Do not reset terminal if stdout is not a tty (bug #152793) + +------------------------------------------------------------------- +Wed Jan 25 21:30:31 CET 2006 - mls@suse.de + +- converted neededforbuild to BuildRequires + +------------------------------------------------------------------- +Fri Jan 13 15:32:27 CET 2006 - schwab@suse.de + +- Don't strip binaries. + +------------------------------------------------------------------- +Wed Dec 14 16:12:26 CET 2005 - werner@suse.de + +- Make cron job files word readable (bug #138549) + +------------------------------------------------------------------- +Tue Dec 13 18:51:22 CET 2005 - werner@suse.de + +- Add section 0 for header files + +------------------------------------------------------------------- +Wed Jun 1 11:04:56 CEST 2005 - kukuk@suse.de + +- Make cron.daily script names LSB conform + +------------------------------------------------------------------- +Thu Feb 10 16:59:37 CET 2005 - mfabian@suse.de + +- Bugzilla #50694: add another request to tmac.andocdb: + ". char ` \N'96'" + makes sure U+0060 (GRAVE ACCENT) doesn't get replaced by + U+2018 (LEFT SINGLE QUOTATION MARK) + +------------------------------------------------------------------- +Wed Sep 22 19:03:33 CEST 2004 - werner@suse.de + +- Use safe-rm for deleting straycats (bug #45612, comment #14) + +------------------------------------------------------------------- +Thu Sep 9 15:56:34 CEST 2004 - werner@suse.de + +- Be ready for flex-2.5.31 + +------------------------------------------------------------------- +Wed Apr 21 18:16:27 CEST 2004 - werner@suse.de + +- Use libzio together with zlib and libbz2 to support bz2 manual + pages to avoids pipe()/fork()/execve() calls in mandb/man. + +------------------------------------------------------------------- +Tue Mar 16 13:41:00 CET 2004 - werner@suse.de + +- Activate path for bug #35821 due its fixed now. + +------------------------------------------------------------------- +Fri Mar 12 17:12:20 CET 2004 - werner@suse.de + +- Be prepared for bug #35821 + +------------------------------------------------------------------- +Thu Sep 4 17:28:52 CEST 2003 - werner@suse.de + +- It seems that basename(3) results shouldn't be freed even if + the manual page says they should. (bug #30093) + +------------------------------------------------------------------- +Fri Aug 29 15:56:30 CEST 2003 - werner@suse.de + +- Add workaround for less using xselection even if no -A is + specified for bug #29612. Nevertheless less has to be fixed. + +------------------------------------------------------------------- +Wed Aug 20 19:13:50 CEST 2003 - werner@suse.de + +- Update to 2.4.1-13 security only, due missed fixes in previous + patches. + +------------------------------------------------------------------- +Fri Aug 15 15:35:57 CEST 2003 - kukuk@suse.de + +- Use same permissions for man/mandb as in permissions package + +------------------------------------------------------------------- +Thu Aug 7 18:33:41 CEST 2003 - werner@suse.de + +- YaSP: Added more security +- Ensure that no version conflict happens during db purge (#28414) + +------------------------------------------------------------------- +Fri Jul 11 17:59:15 CEST 2003 - werner@suse.de + +- Update to 2.4.1-10 +- Security fix: create the temporary database exclusive + +------------------------------------------------------------------- +Mon Jul 7 14:59:10 CEST 2003 - werner@suse.de + +- Security fix (bug #27474) + +------------------------------------------------------------------- +Fri Jun 20 21:53:29 CEST 2003 - ro@suse.de + +- fix build with current gettext + +------------------------------------------------------------------- +Thu Jun 12 16:14:52 CEST 2003 - olh@suse.de + +- disable sync call in install section + +------------------------------------------------------------------- +Thu Jun 12 11:17:18 CEST 2003 - kukuk@suse.de + +- /var/cache/man is part of filesystem + +------------------------------------------------------------------- +Fri Jan 17 15:20:50 CET 2003 - mfabian@suse.de + +- add another request to tmac.andocdb: ". char ' \N'39'" + makes sure U+0027 (APOSTROPHE) doesn't get replaced by + U+2019 (RIGHT SINGLE QUOTATION MARK) + +------------------------------------------------------------------- +Sun Jan 12 14:13:37 CET 2003 - mfabian@suse.de + +- fix header of de.po to enable gettext to convert to locale + encoding +- fix and update some translations in de.po + +------------------------------------------------------------------- +Wed Jan 8 11:50:47 CET 2003 - werner@suse.de + +- bug #22628 -- add missed meta data within sysconfig file + +------------------------------------------------------------------- +Mon Dec 2 18:33:29 CET 2002 - werner@suse.de + +- Make compress local manuals work if placed in a writable dir for + the user man (bug #22215). + +------------------------------------------------------------------- +Fri Oct 11 18:09:54 CEST 2002 - mfabian@suse.de + +- add another request to tmac.andocdb similar to the one + in the last changelog entry to make the regular minus '-' + (without backslash) get rendered as U+002D (HYPHEN-MINUS) + in man-pages as well. + +------------------------------------------------------------------- +Fri Sep 6 19:27:08 CEST 2002 - mfabian@suse.de + +- add the two lines + .if '\*[.T]'utf8' \ + . char \- \N'45' + to /usr/share/groff/site-tmac/tmac.andocdb in order to get + U+002D (HYPHEN-MINUS) instead of U+2212 (MINUS SIGN) as the + minus sign in front of options in man-pages rendered in UTF-8 + locales. U+2212 (MINUS SIGN) makes searching in man-pages for + options unnecessarily difficult. + +------------------------------------------------------------------- +Fri Aug 23 16:53:50 CEST 2002 - werner@suse.de + +- Use LESSCHARSET=japanese-euc for japanese to support even konsole + (bug #18222) + +------------------------------------------------------------------- +Fri Aug 16 13:51:44 CEST 2002 - werner@suse.de + +- Add PreReq (bug #17927) + +------------------------------------------------------------------- +Wed Jul 31 18:51:16 CEST 2002 - poeml@suse.de + +- add ssl to the list of man sections (bug #17239) + +------------------------------------------------------------------- +Sat Jul 27 15:39:15 CEST 2002 - adrian@suse.de + +- fix neededforbuild + +------------------------------------------------------------------- +Wed Jun 5 12:26:35 CEST 2002 - ro@suse.de + +- run suse_update_config for subdir tools + +------------------------------------------------------------------- +Fri May 10 16:05:29 CEST 2002 - werner@suse.de + +- Use buildroot (fix bug #12158) +- Don't cache utf8 formatted man pages (fix bug #16067) + +------------------------------------------------------------------- +Thu Apr 4 11:20:50 CEST 2002 - ro@suse.de + +- fix for autoconf LIBOBJS vs AC_LIBOBJ + +------------------------------------------------------------------- +Wed Mar 27 16:58:22 CET 2002 - werner@suse.de + +- Add space between grep command and its options for whatis + text file fallback. + +------------------------------------------------------------------- +Thu Mar 14 17:13:54 CET 2002 - werner@suse.de + +- Use nroff asci8 character set for korean (nippon does not work). + +------------------------------------------------------------------- +Wed Feb 6 13:32:03 CET 2002 - ro@suse.de + +- sysconfig/cron_daily -> sysconfig/cron + +------------------------------------------------------------------- +Thu Jan 31 18:41:27 CET 2002 - werner@suse.de + +- Add security patch from Olaf Kirch + +------------------------------------------------------------------- +Thu Jan 31 18:33:02 CET 2002 - ro@suse.de + +- moved cron.daily scripts do_mandb and clean_catman to this pkg + +------------------------------------------------------------------- +Fri Jan 11 18:31:44 CET 2002 - werner@suse.de + +- Add security patch from Thomas Biege + +------------------------------------------------------------------- +Thu Dec 20 14:59:11 CET 2001 - werner@suse.de + +- Check existence of user man + +------------------------------------------------------------------- +Tue Sep 25 14:30:14 CEST 2001 - werner@suse.de + +- Close nonsens bug report #9419 + +------------------------------------------------------------------- +Tue Sep 18 11:32:24 CEST 2001 - werner@suse.de + +- Avoid possible crash in mandb + +------------------------------------------------------------------- +Fri Aug 31 14:14:15 CEST 2001 - werner@suse.de + +- I vote to remove strtok() from ANSI-C: Use strsep() within + pathappend() because thew calling function add_nls_manpath() + uses strtok(). + +------------------------------------------------------------------- +Wed Aug 29 18:47:28 CEST 2001 - werner@suse.de + +- More work on the whatis data base storage + +------------------------------------------------------------------- +Tue Aug 28 20:33:31 CEST 2001 - werner@suse.de + +- Whatis: Avoid error messages caused by buggy manual pages + to see the wrong man pages one may use -v for verbose + +------------------------------------------------------------------- +Thu Aug 16 14:44:04 CEST 2001 - werner@suse.de + +- Global UTF-8 handling instead of two different ways + +------------------------------------------------------------------- +Wed Aug 15 18:47:34 CEST 2001 - werner@suse.de + +- Better UTF-8 man page handling: use curent locale even if we + overwrite man page locale. +- Sometime there is no man page path for local man page files, + therefore force language if not found. + +------------------------------------------------------------------- +Mon Aug 13 16:53:54 CEST 2001 - werner@suse.de + +- Initialize variable used in lexgrog.l + +------------------------------------------------------------------- +Mon Jul 30 13:40:47 CEST 2001 - werner@suse.de + +- Update to vesion 2.3.19deb4.0 +- Port libz patch to this version +- Map UTF-8 man pages to appropiate groff command +- Make it work + +------------------------------------------------------------------- +Sun Jun 17 22:33:11 CEST 2001 - bk@suse.de + +- new location of tmac files is /usr/share/groff/site-tmac, + needed for groff 1.17 and does not work with older versions + +------------------------------------------------------------------- +Thu Jun 7 15:13:49 CEST 2001 - werner@suse.de + +- Fix autoconf trouble + +------------------------------------------------------------------- +Wed May 16 19:30:31 CEST 2001 - werner@suse.de + +- Make xcopy more handy (bug#8499) + +------------------------------------------------------------------- +Tue May 15 13:26:58 CEST 2001 - werner@suse.de + +- Fix segfault on option -S parser + +------------------------------------------------------------------- +Sat Apr 21 21:44:03 CEST 2001 - schwab@suse.de + +- Fix inapproriate mixing of pointer and integers. + +------------------------------------------------------------------- +Mon Apr 9 11:46:00 CEST 2001 - werner@suse.de + +- Make it work + +------------------------------------------------------------------- +Fri Apr 6 19:48:23 CEST 2001 - werner@suse.de + +- Use own tmac groff files to avoid page headers and footers + on ttys only + +------------------------------------------------------------------- +Tue Mar 20 11:03:30 CET 2001 - werner@suse.de + +- Avoid deleting of data bases if we've newer version around + +------------------------------------------------------------------- +Mon Mar 19 18:45:22 CET 2001 - werner@suse.de + +- Remove data bases at install time + +------------------------------------------------------------------- +Mon Mar 19 17:51:07 CET 2001 - werner@suse.de + +- Update to 2.3.17-3.2 + * Port our patches and bugfixes to this new version + * Change the wrapper to use setre(r|g)id and use + this wrapper suid root + +------------------------------------------------------------------- +Thu Feb 8 19:10:04 CET 2001 - werner@suse.de + +- Avoid error() call without format + +------------------------------------------------------------------- +Mon Dec 11 17:15:37 CET 2000 - werner@suse.de + +- Correct depth level of patch + +------------------------------------------------------------------- +Mon Dec 11 12:29:41 GMT 2000 - werner@suse.de + +- Make `setlocale'zing more reliable accordingly to Andreas + Jaeger. + +------------------------------------------------------------------- +Sat Dec 9 02:15:38 CET 2000 - mfabian@suse.de + +- replaced all setlocale(LC_MESSAGES,"") with + setlocale(LC_MESSAGES,"") *and* setlocale(LC_CTYPE,""). + + After the upgrade to Glibc 2.2, 8 bit characters in the + French, Czech, and Japanese messages were displayed as "?". + Changing the setlocale calls in the above way fixed it. + Messages in all languages now display correctly again. + + First I replaced all setlocale(LC_MESSAGES,"") by + setlocale(LC_ALL,""), but this causes problems. In that case, + the messages display correctly, but "LANG=ja_JP man man" + incorrectly displays the English manpage. Strange. + When using both setlocale(LC_MESSAGES,"") *and* + setlocale(LC_CTYPE,"") but not setlocale(LC_ALL,""), + everything seems to work correctly. + +------------------------------------------------------------------- +Tue Dec 5 20:48:29 PST 2000 - bk@suse.de + +- added %dir /usr/share/man/{de,es,it,ja}+man[158] to file list + +------------------------------------------------------------------- +Fri Sep 15 17:15:21 MEST 2000 - pthomas@suse.de + +- Add 3C++, 3C++std and 8C++ to the list of man sections, the + Compaq man pages for C++ use these. + +------------------------------------------------------------------- +Thu May 25 11:45:15 CEST 2000 - werner@suse.de + +- Fix the man path problem (hint from Michael Reichardt + ) +- Make mandir depending on the RPM macro %_mandir +- Make zsoemlin zlib interface functions more compatible to cookie + I/O functions (type changed in new glibc 2.1 and higher) + +------------------------------------------------------------------- +Thu Mar 16 22:10:07 CET 2000 - werner@suse.de + +- Make lexgrog knowing the japanese multibyte string of section NAME +- Make flex use memory aligned tables. + +------------------------------------------------------------------- +Wed Mar 8 22:15:55 CET 2000 - werner@suse.de + +- Security fix in straycats: Check if we got a temporary file! + +------------------------------------------------------------------- +Thu Mar 2 10:33:47 CET 2000 - ro@suse.de + +- added usr/share/man/allman + +------------------------------------------------------------------- +Tue Dec 14 21:18:20 CET 1999 - werner@suse.de + +- New version 2.3.10-69s + * better NLS support +- Add all languages to /etc/manpatch.config before english default +- Make mandb usable only for root (avoid DOS attacks) + +------------------------------------------------------------------- +Fri Nov 26 16:46:16 CET 1999 - ro@suse.de + +- printout full path-name on check + +------------------------------------------------------------------- +Fri Nov 26 16:04:08 CET 1999 - ro@suse.de + +- patched configure.in to prefer gdbm + +------------------------------------------------------------------- +Mon Sep 13 17:23:57 CEST 1999 - bs@suse.de + +- ran old prepare_spec on spec file to switch to new prepare_spec. + +------------------------------------------------------------------- +Mon Sep 6 23:38:44 CEST 1999 - ro@suse.de + +- removed (now) conflicting redeclarations from zsoelim.l + +------------------------------------------------------------------- +Thu Sep 2 20:37:21 CEST 1999 - werner@suse.de + +- Make man.c work again +- Use RPM_OPT_FLAGS + +------------------------------------------------------------------- +Mon Aug 30 23:10:01 MEST 1999 - werner@suse.de + +- Few simple changes + * drop privileges before chdir back into current directory + * do not search for local man page if not given `-l' + +------------------------------------------------------------------- +Mon Jul 19 18:02:32 MEST 1999 - bs@suse.de + +- fixed file list (/var/cache/man) + +------------------------------------------------------------------- +Thu Jul 15 17:29:46 CEST 1999 - werner@suse.de + +- Don't use carriage return but newline in messages. + +------------------------------------------------------------------- +Wed Jul 14 12:29:54 MEST 1999 - kukuk@suse.de + +- Fix %pre section (use rm -rf) + +------------------------------------------------------------------- +Mon Jul 12 14:59:16 CEST 1999 - werner@suse.de + +- Add allman sub tree to fsstnd tree + +------------------------------------------------------------------- +Fri Jul 9 07:57:34 MEST 1999 - ro@suse.de + +- fixed filelist + +------------------------------------------------------------------- +Tue Jul 6 23:01:33 CEST 1999 - werner@suse.de + +- Update to debian version 2.3.10-69i + * Change from /var/catman/ to /var/cache/man/ + * Make /usr/share/man/ possible + * Buildin NLS support +- Fix some debian bugs (sig handlers!) +- Add SuSE bug fixes (sig handler) and zlib feature + +------------------------------------------------------------------- +Wed Jun 30 23:31:03 CEST 1999 - werner@suse.de + +- First changes for SuSE 6.2 + * Use fopencookie in zsoelim if glibc 2.1 or higher to avoid any + possible link attack in /tmp/ + * Kill all possible childs (e.g. gunzip) of zsoelim for glibc 2.0 + to be able to unlink the temporary files during signal handling. + * Use better sig and exit handling + +------------------------------------------------------------------- +Fri Jun 4 21:41:48 CEST 1999 - werner@suse.de + +- Fix security leak in zsoelim +- Set sig and exit handler for removing temporary files +- ToDo: use libz instead of gzip + +------------------------------------------------------------------ +Mon May 3 15:08:05 MEST 1999 - ro@suse.de + +- removed forgotten debug message + +------------------------------------------------------------------- +Thu Mar 11 16:07:26 MET 1999 - werner@suse.de + +- Use -Tlatin1 if eqn is geqn +- Remove the index.bt's in /var/catman before being installed +- Support stupid manual pages using .\" instead of '\" for + preprocessor cockies + +------------------------------------------------------------------- +Thu Mar 11 00:28:20 MET 1999 - werner@suse.de + +- Use db2 if available + +------------------------------------------------------------------- +Wed Mar 10 21:51:14 MET 1999 - werner@suse.de + +- Work around of a buffer/pointer cludge of strncat and strncpy + (glibc/axp) +- Make CAT_FILE work +- ToDo: libdb1 is broken on axp + +------------------------------------------------------------------- +Wed Feb 10 17:20:02 MET 1999 - werner@suse.de + +- Fix the SIGHUP/SIGTERM bug +- Use seteuid for LINUX_VERSION_CODE >= ((1<<16)+(1<<8)+37) +- Remove temp files for man -l even if signaled +- Fix some more possible SIGSEGV's + +------------------------------------------------------------------- +Tue Sep 29 17:07:04 MEST 1998 - ro@suse.de + +- restarted from stable-man: + use usr/include/db1 and libdb1 for db lib + added HAVE_STRSEP to include/config.h.in (this file is broken) + libdb/Makefile.in, src/Makefile.in : removed -I- from CFLAGS + +------------------------------------------------------------------- +Fri Aug 7 11:52:57 MEST 1998 - bs@suse.de + +- added catman dirs for es, fr & it to file list. + +------------------------------------------------------------------- +Thu Aug 6 20:21:23 MEST 1998 - bs@suse.de + +- added es, fr & it. + +------------------------------------------------------------------- +Wed Jul 15 14:09:01 MEST 1998 - bs@suse.de + +- fixed /usr/man/allman/de + +------------------------------------------------------------------------------ +Thu Apr 23 00:27:06 MET DST 1998 - werner@suse.de + + - Fix preprocessor handling: + was missed since libz was used instead of gzip -dc + +------------------------------------------------------------------------------ +Thu Mar 19 17:44:43 MET 1998 - werner@suse.de + + - Use lib(g)z for mandb + * no temporary nroff files for parsing of the manual pages + * handle only the first 4096 bytes from the first .SH down + * now zsoelim gets the gezipped man page without extension + instead a temporary nroff file + * extend lexgrog.l-2.4a to catch most pages as possible + * add -funroll-loop to the compile options, use -O2 + +------------------------------------------------------------------------------ +Fri Jun 6 17:49:08 MEST 1997 - bs@suse.e + +- added allman stuff + diff --git a/man.keyring b/man.keyring new file mode 100644 index 0000000..2ecf2b0 --- /dev/null +++ b/man.keyring @@ -0,0 +1,648 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.9 (GNU/Linux) +Comment: Colin Watson -- Debian developer + +mQINBEpusXcBEAC9dztIdRs2aeoFQ5S5D5V/N0vFwVZTu21S2bVmxwPsVZfvXDCZ +5JINp2vgp42iwYTTHm0pESCwCoxZNZMLQu/zbSOR0QqkCoMI5j61/DOOMbr5d6kR +raxfE7qnb09h3BcXsNHmCyYv9hoFHYoNbyTuOEYHNfeQDOKS1+MtGn2DrRrlYYpG +remLkRjJy1iSPVJWJn866Ljld9MEjGP1dT95QW1dktZ6Mqbvr4mKFexy8ags8gpZ +NdMrdkufPal0+qG0FeKD9WqtHXKEWcjEytbUQMLUiAO4N4/bdR0zwuWuHtVHVfMM +c4zOVgh2llmgROYAF+5WZJaVeKirff1GGzjZNIsXaBgGa5rC5dq3T2P7NFS2/bHY +10gzizNH3NrEK356ml4zEhJDTsAS13xm2SKiDnpwkcLiBEdgtyXEqEZqYiHU6/kB +nT7AG+3dLhD08nUqvaDFzkwybc4dP+Q66PEwmGWz2cXg8Yd1aJ3SMxRVCTf2XLEd +oV+mkUE/LiQYjv1QZH3KST8e4u1SEvZldwA95pSBoQzCs2uNhvIbCCdbuQ026DPA +5e/hU66/pwGG9EfGREKrpNEDTfN0jRdSqS20rcfrmo9HZisEkVpMBtGt91Osk0Wb +FykaMInehgyoyB0yS/ZROSOrvq81VF50YvmxWxa479OXnRpxbyV+xU/6CwARAQAB +tCVDb2xpbiBXYXRzb24gPGNqd2F0c29uQGNhbm9uaWNhbC5jb20+iQI3BBMBCAAh +BQJKbrtyAhsDBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJEDk1h9l9hlALIiEQ +AJCaK1DwVRu1E5iMMhxOEy9ln4k0sk/Kgoy3JsAbJHHGHLnlbFv6Fq4lGnNZn5zz +BfWmPEbjAXTIIbILeuAgbsWP02UUo4qPYJUb/T1OGKPnXZG/V2nbuSI/c+T4E8+b +/S3W/UDYp624U836kfYStbEB/3J7w7eAIbHRJnu9LNSWCWt5xMH9YXehAEPC1n+z +QF1n5SFsJwPkdXAxfoWSJE7o+ojXBsx4nlHB4IlVHxS7ZJ14UnA1DD5OSd0UP0/z +n6bY+Hvic7IrUG06coTbacP9TKyAV+Uhbl9DYlQdJb8J70iFZdp8mZKmg6Shlfgv +A0s+qj3NJLJupGal1IBgfsLmkzrx3/t5l3krRSXtP5hId0zKTP3+HTceODLCKuXE +vQxZHIq8UWK0P6BIE18jXjlTBWbIWjMWK/Hpdj1jl8aaLAPM3Wude20ciY2w/xDS +ZYk0NKHzWyFaEDTx152ItbWQW87WQAGrxNo7yYvAuZHrLuBPyaPOcKBI+KcOtSzK +/8rChdlSwZ2FUDczEBB+/60xzNYBVV7Ou9bNbXq8jXwgWAXO5f3bMJXhFREACEyZ +38xcSEODhpD7sZBIRWqD/Ct0Aha96Rcx6R748VBd0ATkS0Fimsr3y7FgPO6NgIn7 +qRHTJun984IjG7cMpFYaIdja+Jjz7EVhjUrYZ0wctd2OiEYEEBEIAAYFAkpuu+sA +CgkQ9t0zAhD6TNHpvwCghppCWXfDqlvBSBIJce/QwRxMhOMAmwfQh0Gr6idqDx4Y ++VbtOeOoHtR4iEYEEBECAAYFAkpuxMUACgkQH7uVvy2azI7CTgCfYhkFlCdNjZpC +lis5eMR2s/m4s74AoKxJhHS6xzpqSyQgXL2/gI8VDpeXiEYEEBECAAYFAkpvQMAA +CgkQYgOKS92bmRCqBwCeMY9dKI1MeKhqN6Dj34S1fIWqMXIAn0ifLC0zs5a+2acL +wJWpeBo9JLEmiEYEEBECAAYFAkpvTq0ACgkQ1OXtrMAUPS2UigCbBfR6pszzWIyl +XrNoZV9zb5MQZYUAoKl7+bpREhxvcziY0ImNOpDqGoVfiEYEEBECAAYFAkpwCAUA +CgkQQSHHQzFw6+mVqwCffFMGSEN54+73LfKWmKchxi+OrYwAoKX+6nftXIrDqOAG +880g3Elcy8FkiEYEEBECAAYFAkpwY3gACgkQnQYz4bYlCYWvkACgz8KJqbeTcnrw +LtpvKAlTonBq80UAnj28d0yuAHWuKF7LKQS2e6Tb34m+iEYEEBEIAAYFAkpu7UYA +CgkQKN6ufymYLlqTUQCfX88nMThgahUvz05dGgR8VbBiwbAAni5n+emOkkE4f5pb +xoqW+3i6XkpciEYEEBEIAAYFAkpwaysACgkQWN0/4pnhQbQTegCeO2YLdUOt9IDN ++k+hDumiC//MrxEAn3JmIbgC1g9omeRtMzqT3u52yiMHiEYEExEIAAYFAkpxiPkA +CgkQfDt5cIjHwfcFQwCfVJVq5J5jtWN8Nrle0ov5bg6m4/kAnjMymhc+k4OsFBxp +TkutU7xBaAFziEYEExEIAAYFAkpxiSMACgkQfDt5cIjHwfe67ACgh/pmvtDhruBc ++za0j7N4xrTNy+0Ani+/fWVhYz9vxjqsryhbQQp9fKADiQIcBBABAgAGBQJKbtKf +AAoJEO2GBLwG9akfjR4P/2oJIYPWhzq27aunuug9gwCi8vq/hpkpWxKMRLfHrLT8 +8MNGMpQ/cxegCZaJEeHxR+CP7QBnvJ5mFy/dC9eUpVwn6s/y9GCw7bTltxUa2mks +55tbtQycSoaVb4aUirHx32R26WDlDO2JtgbPB1GSuZrPwc7k6Pqqm65ZNZAlipmf +JrluhtgTpAe/7XFSJS4LXtGS6jZNAYy6QgQvSdtkHtb08LSwjx/HwhLxuqOLQ3yL +VFu34+htmbvEXcL0jV8YQARFZyu22GKPLn+HVx+itDn92r5r9JBX92Zuvg8Cf0nU +FARYRozzfKJ8nNQqEbf2gAWx7xDlXNCyGHQwtwPbmlORpZ+QOgNo6VJurxNvitOR +YoMOJJg33/G6E+zOweZx6wzWGw56IcVlOWGi6qoPJ5v20DTx9l+Si8KvfiiE845f +IX3WuTdCYxb5wWT52hWuu+oNWtkhRi9xOMvAgLMfs9v8NTdvdfqI5nMVcEF5SGYd +AzJ5myaKweTDuAFYkL3xOcGWB4WFhg35Q3bNxEn1K5ZbO296pmTdrLFsIA7+QghQ +DDwOEH1ZRxKy0fERPLXgjonX8OcANaYZeDd4dB/KTk/Jis5PklrzShhwoFTWMVYH +sJGYC9jXHA0rnjcLOHYfS8fUy/iXDHuapbI3XYcemdhh9q9JEOrb9DMhPkDtay+v +iQIcBBABAgAGBQJKb067AAoJEIcvcCxNbiWoGEYP/3Mg243o17XGfUFobyezKhA5 +TrDusVbwE1cJl5KSAct8DrjIjUyU2u0VMvm+MZ41cb6fuPvIuLd187jmfUo4+Jci +zXqMXHY5kVsQ3ferP2cgd975aGtDZW75p1Jcrf5hzrFRh5Z6KyoIxUgbcu9768CK +UL+dCYadbYBbH73cDiNnAbfky188ZTiekGnQ7EcsXNxesFtkqU0udtyahQ3H0KX3 +LAbtgKs7j1Zo628w55eCVZhCOlrjEaVS4cs9K42owbubwIeCtH8ikE5xqDX09MLN +3HLpOSxIZZbLwFeQ2GRm8gMFe/nEe3U2KJguoo9ewsoQfXOLgk7/Z9ZidfFo1EtG +Txe9a7q8HMm4jkyLrL8Z/MLDCfRV8abD7ARyMsRJ8uvidFLA3ZZjJ8r29aq13Osj +VgebLDqmEf0LrLTvoyOwKMk46plXVF3DFCXpwfILD0513P8k0R07BJWJy3eI5lFU +RUhco7/IKF4mxPnnodROgN0UyiSLzTF2eZaOowElkJKqPlR22P6yNHQT+EUTd73d +LOwalz3fKYCH0q+kLqVJBa0GKWzpreCKA/QTT2y+t3UiNn3/4TC7pJ4fyWKisE5u +qNKGgFn9dbjo6gLJG/p/WFPiLk52N29jdN9Qp9lJ6eceKD7Uwwr30O9lTMAaM8K8 +3tAEqHAoV4mgTHchgauhiQIcBBABAgAGBQJKcAffAAoJEDIkf7tArR+mUHkQAIMy +ABB7jHrg5W6MbjPfYsgsy4PzdZle7++uiku5nk8ma/DRhz4AckZdvn4tyshNX07z +ex7jwOwyh44vfElx9RHRh6rTijxX+RUB4C10n7Bt+UhFqhlcoB7c7HygJkXknd/J +KqUXrczqqSqxsdcCBCLZnQNFpeJmd3jymVODxNLnrgp8uiaF83h93Fchbu54Gq7m +QrhnltWeOKXGxPXT4QThXnDtO8UnGenSiZX+eoSecSyWMxeaA1z3nu4jzI6mw/U6 +4NA7ok9rpVcwI3wQbOLU5Lo37fds6mewkZ906SgAjKMBOQs7+CeDQKvcYhcXb+ya +VOwb5CSQ1BiabqEvGVYSa3KoyWJi5IIf0km01fYWq899HV+N22vAEcwBYgJE3jlP +lq0XbId2iqdU2lrwySEaGCuYW+neNUabzzP6UIsXEQ8IOdQ5SjPsTxWpaYufBg00 +VVFjEgiYKz8BOBwLPaLFO3SKgJKBaLEIB3+ZhmDluBq5XE9L9WH8oLl3d9wg25BW +vVS7UTkmwayWpYz+Tyb9Y6+XBV9flonEOFr4tzDtLutjr74A5s9rdlrvIRzcQrlv +pTxda/VKaQgdLLg/8FfC82WRlFb+z2aOR27Ng8ZEQeXJPS01Na1i+YOV5adBbAjl +bLF5hYFDgyqt0xa0bvO3+UFf1UrrGvJ+wr1lARumiQIcBBABAgAGBQJKcF3jAAoJ +EGc6A+TB25Ifv7MP/2IYf7cGq8d77cksWNAE5XCEkhypxVZ7TrAxYuf3P9DaJIbt +v7kmCD3aMXXEV21sLQ+lvlk31OsxzbZzYTwcmDxFBHGd0FC2ifGRTVsWwXNhuXgk +dgMxxycCRiWtffA158919M04gnMxF1GS1rwbDCoF9LLQ8NLKSpyzW3WFKaZpGeP9 +wJzcy+6CxgjiNLJZH6+hyO+QEupp5C4uDmGebtmNUvchAgd/A4l9WvGmLWgpQz+K +4bMDNTm05GZzLSMWDRMPxvWdzANlXR9tNZFIlqOXBbPbB5KAoJH8Wk+lXrxQ9LKl +uTlXVZdy+zajliylsjG8LPCo0OpjdxD5yYB9B3UeNd9IakSsVgH51jXbUTGB0duR +KnUiQ2CID59JhKc/SZc8y8FfLf49JvLfiitcc9b6oCmSUdtrAKYOARshlu+U1fft +x5ZWvnKLVzYsIfkpcAAUh5+oOBMsFIjy/XrPaC44e7vB/BzRHMm83ylEpwiKgYzH +hMJTEYEjnJknVGlGits0tnLfERqdiIWwEoLZS3L5CkRflr97yHWrfw7RiasasfDj +9O3ybueo+biN5an01/YAWRbjPPcs2/hBAcC0+6mdWrtmrUvOhuzwMOKn/6WuPZjC +s3tUNWhg9hLMfVpUbnXQd7dnWuW2cbiyQSvU6SQflpab9LJSM21IIWMpMRheiQIc +BBABCAAGBQJKbunoAAoJEDqTYZbAldlBzfQP/2sViwBoTxTdvLrAeYn4lHzh8hTY +ZdkK8n5vVVdXseqMRPVPZ7BYxqOpc4aiqXvX+2VM98qMT4RSUWdj5HVCG1O2fFHl +Y7BAYrKe+Gu5959MUF23WE9/N0ffer8RLlO9smrEHaU9/z1EWig3pey7lzKB1mOz +e1CU2CrEMexhQtYgN1uzN4azGfvEQr4bqlBd+IUnvVrFdG5bAApD7SyWjDAkZIKT +UWy7jP2PIFtD6yIoiXdRDXg+WxlV446vltk2UrrZduO+F3GGhrrSLJLp233GHaos +B2Ul8nXgJQ9D3hTVZcuCpso3h9N2FDYVRbkjx0F3XR2Jda+ZvsbZPqeKOd67a0k7 +VU6wnyu+JaX3KjOSOk/zzSNWTqmnUhvJixk1hlFd03bFMifkVotVf9gu7QBN+9XL +Yh26rRhGiKNLwmOzp1jQavcKa1k/dJw8DLY1rt8/mmd+wDPB+s4FJFng7sZJKuzP +yz8Vutm0Wnm60wx8CLuFUfpXH86XOFx6HEhGzA+erFnF9HDO5UnFyX/e0IXuyxaT +dUm/ThSC/GD6i2jBIt+BsZ5/lRl20wToOfbV00zfZgKo3xRuDKD8WikCrg7qeWVu +wK/EsPsSRT/sQ2bvjB1eqtY3ESooBU1iZl85Xo66wtPWKtz+9jP2USxGEi/6Xadj +0MnjuAL028RK+1vtiQIcBBABCAAGBQJKbu1fAAoJEFdZ81ABqkpkkAYQAIZnw34P +Q+1eup4r6K1xr+phhfOZNdi7qjRIltvMr12/8jIugUuS3m3r7GoJmgsWeqg2t85w +ZaoCR6Xv8Zc6sDA/0CH6aaEKbN8CreCDLye9YubOOmqN7dnQmWzaznDWL1z8DFSf +1rPZmpELauRHVaWe65fJV+MByhlCbFyTHkzID5ofkSC46aRLQxm/C3eWee3h9By8 +n7T6h6L/zjC4+IqzpVFWrlRj2ZZSQElho6Put5/73MvzRKlUO/3TO1LM5itvaokL +0srVT82/IwfbMT10Uc/IU7lr+LIrKd4gBbTAlD6WWn4AzlLkvbuphaGj7YxVnH6S +ntTSZrXkIb3cFaF+oiXRQE5Z1UdSUO6DhdfFiL6gFVLB4/0LaFiqdhyox3XDEB31 +89MtBntUkGaDDKofiU+/qSWfcSfxA7GLBmM7WSj9Ep3xWyyHwgjHp4siv4Xiz18v +69GhPp6azFaTak5q3yhmSxBTj2u6+CEphW6pK4ybUA/Bu8lVu7gnumck/UsVw8d7 +SFor3sK1Px4uPNxWYCLhUmIVmvHrrdmqjJH6vDjukEMlQqowqMrqSkDCJijfe4LQ +CbVmhKc8XLSUjeoN21L7ae7FeZEw6R9AsfIce/PUN7F8yLOsTDOseWQMwVjQCOru +4mTJe34UXDN4WXF4vCM3yBBVP3/zh/t/M92fiQIcBBABCAAGBQJKbxaRAAoJEMXO +XcLFQs1ZLoUP/0FmbPMfKeyHoTdLyX14aXcNZvZy4U8wvTzJLz+Qk5jnaxWiC0Tg +y6zHtonamioR+Pgs8sltcJEXdTIZy8GkXd8tcjlYgZNEw+Cw3FL5yZmXF+Np8a84 +YstwEADVc8Ioj0pIiP10VuxC913ihq1S8Pn179hPAAk932omROsubB0y+deh5UWU +/zyjJ8k5mAjlKEAuc5Uq05R+hyCyEf7T6K2MHrLA+6+IGxxFNZvF1bihcfXLXgfW +RihXJa6Dasp51nTLXkisqFXakQfzEmmAIM9ppsudoDwkBWKzI/YD26qvAdYjlksB +W4qTucnnnQQqxTgVJmQPe7iXKKK4w0rqJqEO7enAwy70Fy4eEZOqLyv3jOV1G20Y +RYQJ9V8jdf11CAtk72nfFs7WZsiSqZrhj64ZCZGcENl8kDdgLCM4FQLgidTMzU3L +541HudnTzGyDR4HifO9KjY9oU5BqtbZl2NjySFzXle+H69TT6AbMMWDX3K/yLbfH +GnsxTKvqODwdDu1avio055xQ7is/x2LtCWQXIagTYnyLL9s2xf0qtA86zwRoeW6c +02tmKIqhUAmoKE4iyfmdco9RI7oHJ8kvUcRm51wvihnlFRkesBAGev8XrkOX+WcE +RfltnGTwLgrhAC9Wll6sZhxNP8ikE5cS/Raymn2lmkti5flK0VoyrGl8iQIcBBAB +CAAGBQJKcGs7AAoJEOpsprlRuFE5BpEP/ir/Hfd9DmKrkScrHsZRCyFQJiU35Ug3 +sBXoIWazBvtMB998XHMUXt63Jh4u/vzLXlxzr3Jt9Eis93vRbT+N8x2qPQGvl8zY +99KFMsypQSc2/Mx+3WIkxX57sEpHrWLwNYycjVpvXQ+hW/Fm2AoDTTtLmuErHuTZ +cGt13ZSSs216JL5oviiZKW8VaZLyg+uZi2Lu+vo8MVt/3LHodIN7ZcPIDeQE6M15 +lnSdrkmx+wL0fUvS0nlK2bqZyDnHnGZyMUtFCY6ZXCZH0OHNcBsdAd0cfgXjhIjP +PgoSI+JPdbjQfg7V0kOr6MuJBXwiAHPyMRHq052tlhKpLopfAMPz+xISA5auWFo2 +9NNdsryrdHzaSGcRSwWiBPLFYgzexQ7fhMQtVvqE//mJ6Etx92oqtEK3lQiWncyE +1NPZtgOj5v8B9taTG6xZR9nF93lmajkWRr4KwSJTIPMQR/jTpsIzIJ81vW03SM87 +G9C2Fvo4w/tZZyadXADgXiGxoiKW2srdKn/DD/bYGJYWVAPQXToRu7XoWoyBHYMe +UAvTDLQF+ymGlgcQc6wo6+wYR4tMluRI59HwyYJNpS78ol3WUA4hzHhb8rSxkpMS +CMRj7oG8P6/foy92482Lzc8ymoqm+DM56QfscJPL/LxJxM+YbV7FN9U51l9Wymza +Ghwle9C3CNhIiQIcBBABCAAGBQJKcbuCAAoJEOtc4ddehRH5D/IP/1DJhkDZkleh +aWvLN2K8LL2aP9Y+xXboDQSDnjXufiN/4DF437ejpB7Vjub1z8Ldnoyp2bmIuYYS +IDLZ+ZKpqsGgCbdnENlI/UMJDBkH+FCFU8EsHlIT2alyMP4eOjnXK1N3/X2383H0 +Gc29stqC5NVo/15/uhHKecTECcMqRJr3mriYOA/+otfTJ+06aIQlksnWlobpAPtD +ymI8nwMaxAZmW07t+DJczqNPxjSSXwRG1dXY1kbPnBysG1y0MsNLh87LpTO/ipfH +6dVJVcRqnEDMebjqOJhHWlolsqyXfgf99GfobvgChFuMceGzpVK7vV+WHr3+0ph4 +tB1K8MgvERPKyj+ZAoE3JP/azz7O4WJQi6488Ug+iYoIMATNATy/tR64yF9Cdqwu +VB/g7hutBUjqh3fanWneZSxo8mv/OCMhrBtg6xtfK/SUm6Yi3tYMEP8D0uz5DtyH +gnP75WC/QJgvuuBnuBCqiNJHVlYFBf9vIxn6ZPj0uQQOgp6A4YITOMmCoj9l47d1 +b3Snwn1jVUz0KJ7FoDMrWuOFpXozqRlcGXilBBVKtL6PvUnigJ60wVuF5gwHLnIr +DsxMhcQb8G86uY4t2wDPCyM1SeR1xbXeSRnz8CiJ85aEy+nCh4SIN/TOgotnoWxX +0CJseIU/QcShp2T5681LYQ67QjX7Uv6biQIcBBMBCAAGBQJKcYonAAoJEFh5eVc0 +QmhOYjQP/jgA9ld0SIZzP1ywVlf9BuejrOXAsm9iyYgGA2rFIsNWNvzJY+3n8vF5 +5F1XD/8Ypsk5QneUPacys5DtF37zXid3Y3M+A+H5paRo1GBhrR21val7vKf2Ifqb +4SL1Eqb6jWA76Vg6scX+72gz2pQbsE62VKaxWssi4dcBObRHg3EgaGVNyHeyIcdo +QhUp096jG385UTQEAQZrSkAN8Yjz6TnCYMiDIWyNyM8StcI1EuIcm0U0Z7WyxPmX +dwksWzf7EYoLSg6D/DGoVmfOe8FxvLSa7+gQxy7eIQ8+VUompBqkfyQ2XBuUR+rO +te+CuWw9SwJXCw8BD2jbfXxGYHf2MTX647WiIF8K14KYsg6NB3Lew9MncwSSnXoS +gGZveD/nRh/FmxyXSu+3SLSiqOqaVuDqbPFVbEUNuSfoQlW07HYTRg/c5QPQ9RrH +neUnis5YEGFy8ovkCA91hWdMbKXIPY7/gKIkUtR/OHRQZB2B1Vn9NGe/whk2QA9D +vFjw+5OKYE6fusk1kngewpPhhNGdgqhQcjS3T782AyW9UoVh+5rlh7Y/ggirK1hU +XxsolP6Cls1oK9YvnJmYENlGYgbtF28x8kvm1TGXRfkcZgEDgv4qovENGfD/leQP +ayJOSXMXFVyhMS6O1jEVw0FqsP9JcTiOyd6MjbHps6qRgLR8xFuLiQIcBBMBCAAG +BQJKcYrgAAoJEFh5eVc0QmhOj/8P/2PAq8qEMrKWu/kobuv89AQ6crQF1a+0KGey +03OsTDwXXttiRUKMZ8D7eBw3L2/Xgmcsypa8fvqRn4Jyo5PaO+Ol0Y++eK+MzkFJ +kTbte3ynvY18NrSquD9Ku/ko33Xp2q6pOMVtzED//Ky2QCBWl0lKajQ3zrk501oI +NcIrKicceY1NYYPdf6GWEyfDABwABgLiKViobMuVnzQFidbL8uhkqi5bWun7yoYT +8y0RVIDb+MisRrVoOaVUbpqz0f/tS4AIZf6cZkdslkHXGBsYBWyhz0Y0DYbQrHgB +M8l5azLzJGpHbQ9x13sa7GXPETJOmWLbdClUhJEzIxyKanWz5nNXvaYRj2eKWqpZ +FvtRdIoLScwoaLlz/PgDi0BG/+2So76nqcUpiMwDCR6FK2cgnvU81AOtq04eiZcw +ARdSioNbKyVSZ6n2nS+gzT50qa27kuXRBk7eNyKg6kCJZe2koxIJT7KqCpbG5pUW +433CU+XOvPu1QnDuPijdaQ8hukibLy4h1s9MzNcSS8nHD8rj0DyCAmtfKeHE16Eq +VZSDtQhRTLA4GksxbMmcy+3SsOcXwQFYq78V6RFCRl+31oKrJYl3Ys1Lt7IZx3bC +uULxcaGCKJOEUX2m21CDV3O4rNHPA+1C2n8E2sGuEq6yMUBM0bTbqhtbJnOdMPzQ +5BtDSzCetC5Db2xpbiBXYXRzb24gPGNqd2F0c29uQGNoaWFyay5ncmVlbmVuZC5v +cmcudWs+iQI3BBMBCAAhBQJKbrF3AhsDBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheA +AAoJEDk1h9l9hlAL3BMQAKrcmOEfa67gm9L5Z2SuPl0vJtKo7Nvlq9LQlAY9fulh +2bAFomoktsWtlckCAsDFzjEPqXxlTCC4+Or37wdCfJwWab30Bmy13O1r9P2VM6RJ +M03Njr4cNncQXnmTj4P1m+R0SM3EQjyPQ1l2PTpowfIU5iTxomAD4Ci7PTWLTgPq +t7LXNeuzjGJ4NyZk4CrYqmSP0KMiObSYkFXLR0GM98evPKAqBp2InyZGg8uBis4b +W2BtxYJaYQB83Ber2suSj6Hu0thdflhF2tQTEc0zfJykQ7mnAfE+lZPI/7M/AGea +DmSJuTqBLf0y+KVckfIQCCAygPhQ6OulQ/u1go8tS1QgvZ/UgpCyRMxSW5cRzf9Q +tm5bURp0qdRH3irHlduj1Bgt2cOG+ypbUzD5uswhdnWQorT3dNjClUnql+Fu1Xms +aXz8IT4JS4lt8ERLCq/T5ewSh3kCwaWY4Ze+IboW57dXoPT6JnNJQnO5zXozAXZu +cMJ3dGJM56LftrD+2tDB9lgU/CYSpVAM2i3Ujd1dcl6M7LfqX9Wqix+JrLLu5dgu +6OJy0UW3O5PQqCgUsCiJVEPJEAbeTGvf90znqg6FE+kjK8gwa79XaSL7SblbdYb3 +UgI5uIrv95++Y54nDZW1jDUtjoSJ3YThsGj9eN1TglGC7GArQHPa79wvpiqjlbh6 +iEYEEBEIAAYFAkpuu+sACgkQ9t0zAhD6TNFgAgCaAviNO9ra/eXBDSR1nWvHjnbz +kCMAn2l9nFHtcGWJjcj81M5uivdv/xKgiEYEEBECAAYFAkpuxMUACgkQH7uVvy2a +zI4oQgCfWGl1I+/VHUSHH5ikmP8D5scs4sEAoInV+U1uQaESJY/c92QYTtwNC0Uj +iEYEEBECAAYFAkpvQMAACgkQYgOKS92bmRBJJgCfXZWUAOJ0nXu3nYa2AyZgZKN+ +TVUAn3Ev++kmlMZjcBW+A0oNFOMAW3qQiEYEEBECAAYFAkpvTq0ACgkQ1OXtrMAU +PS2AFwCeNdGq3Wak01z0mHxa8Wy3K7pg6cEAnAjuoJj+6CDi2pt9Bwnf6aRidWQ1 +iEYEEBECAAYFAkpwCAUACgkQQSHHQzFw6+m6AQCcD5lPOP2DhcD6bhHAOWF5MOh0 +boQAoIYVNkSbIUnxYxIBbJSUFSkgHdvFiEYEEBECAAYFAkpwY3gACgkQnQYz4bYl +CYVp2ACeNTpOC55G+kbIEegS/QhEEP/0qs8AniOgmggP2tKPuOBCTJz9lMxO0Chx +iEYEEBEIAAYFAkpu7UYACgkQKN6ufymYLlp2XwCgmmCHv0BP+NOEUfsMOUpUXsGz +cf0AoKzQxgOtmvHraAxY2UrONMB6F+WOiEYEEBEIAAYFAkpwaysACgkQWN0/4pnh +QbQPTACgmDIf7GsMft4auTIVWKiFioVdqLEAoOMnuyYziv3rhnMV44P+4L6CPHD1 +iEYEExEIAAYFAkpxiQEACgkQfDt5cIjHwfdsBgCfYVillcz/tX+USZE2fLlpgD78 +AYYAoIu28aOCxKEg9csj8TX0ygbXj8s2iEYEExEIAAYFAkpxiSoACgkQfDt5cIjH +wffc9QCcCh5B8Cthwa3g59ORA8TU6sv5KQ0AoKkn285P7FHXKZz3OSFSiBG95ufp +iQIcBBABAgAGBQJKbtKfAAoJEO2GBLwG9akfVVoP/3qEQiXqCySGgzouOlTdGMoH +8l7NQ6AtkhIIPyo2XzVxrTnpdOeVEa26RCz2tGUUosjWTk31+6UA7a87iSIQS6L2 +kwCXYsudynOTPrYB7ouC+ueNR1XdvyNw2Anj07eFSre34ZATTBlpkDE0/5w1GU2a +AsmEMnCaNOE7rsBlw1ohb5V04pRB2Ei5+/PMKMObPM5SnCTwYujqL6uCS9uQIeMr +qBdxty9drUx6emz4UzUcXjBOH69fsYvPvqXiwIQqtfadW63j8OTQvO1mSH3wNF5p +nSvB3Mb/0PU4XuwIgVOu8itlNsVtLjK6fdtUn5A6/OTTY4N0WY4yhZrejiaGVrrI +jdSChFdDIfxhfamFOveoOcVlQBoZlMYCnyERQ2FbzLwxlgydRWzU4BxK001YOI92 +woPd1sgSVxFQMzcA3cgFqqE8o19qAb910cSnUuEiyGzgSOkZR++9PQFnzSVY9mfn +gnGeFSFbLdiOq594tu14hZ0b5xAiRoqfAZjHYH3gCGHPuEJRzow29A1izfjsXtOY +52XxDhU0+b3CXUbTYx7/MbybGS3XV/H9Ko31iOnE8WBwQIbHqmGLoPMLSRsjYh/X +l9UQi/zx0/yJkkvRf+3AQjBUrVLIoN/eJwr3gOJe29Ai4AL6Mv1Y9s0wNVqb87PV +f3nBf3kW9MX3JIJpAjRIiQIcBBABAgAGBQJKb067AAoJEIcvcCxNbiWo9n8P/044 +s5RjfyRxlD7YS6NORzRIYst/xOXQG8/g0s/cw9RgctOxaVf4ztf2c9EWK787KBac +uy6lNIP058m60MgCv3PilHSLKmv1cIi40UmextsYMnmBxn6f7JL9fuxcmGXGYJxr +j1NeKSd2SBRQCh14y4NsJwhzAjKEqw0Vc+BDkl7Jlr0uVDIjmwO9FB1TMeuNxjew +bHrPJ8SyOf/z6g1dWqBHJfVTDspDd9nlXxAD72ltZG5FACmxlah+Zu2beB8FwAdj +CLTJmCj8Mz5OwoYCgUyucqpFlR7L+hGljhQAB7WNyqwoKTmUqmRS6AOdqYyc1R7C +hftypsFYCjIursqNA5k3rFH24aClchtGGPDGDxjhuybYjNMRh5HN7Chd/XqT+FxW +eAWcBbYh9xsjUbc/sQlmc6M/Gfoz2QdH6vgk2+EsMDeyBYhEwhtqeE6WK7uDwh6X +KVj4g0Ijmm40uWwK8OjNxecZf8FhdOLz9UeHJeTjd5wCUEOB9HcUK1oZBIeab25i +06LnyLWzitO9La/Wy0hBwBXl1J6imGpuAlj9LzwgE19vNn47G88B8ARQtO9QEPS1 +MudNL563y00a1CYfUajEK25v3EL6tzcFXTKfaHqMVEhIktehGTZ3pB7QGuqMbif4 +5X89quy/cPqGdcxUhrAApY5RC53YYFylvQmklu1FiQIcBBABAgAGBQJKcAffAAoJ +EDIkf7tArR+m8UQP+wXqCOhrIKsR9EZDYSrXmMAGhQiwwkSss96885alK6qf7Eyn +zokkjsvLZJHkbnyI5V0XduxEG9Vi9dCJImQN2axSgCiRSeqMmVGfQ2KYTx7ZL5yz +A5DEU5/5/kfjmTc18c39OX5wTj4P3/Dd+vMXZz+C+gT7encHVhTn3Mk4EXVOuda0 +U34+EItDsgDF+o3pr2cZOnCHptlr64LAFfV8MRp6Qo4hDJtazqlyHBUti3OQzosW +YgXf1wRiKPvwAJd1PRRc/Vd6BnzCjgWlZPlFZM+G4sG7st10bxEQrkQkDEGnZHRu +jpgbp0iJgUVoqyAoz/hNurtqKbXXnz5sKxF9LogmjgFhqA3JTcCd8oYty+NX7nMC +Wx04ZRVjRscO/kJ0A77/imrOLXTa5pm5IM8NNJOcW9zAtRi3fmCs2PylLlsW2FnL +OEfei55/S1zFNvHodhfZkhe/5pPGvOIHmoiqVpND1yhrfbAG0DgwvTCrLM3vFyuJ +O01nc4J+EqhxSnjbRDOy5OQ5q04BfmeARdMJ43WjM+M2M+MAeHY6EvGnED5QGhKF +8a6UW19IWhk2x74cqqh/L2P5Mins0I+L4+biWdfJTE8LBluUTxYcbTtoha+HJWWt +4ySeDv20lBE61JiKKaQIC5jYg6CGO63r3m1Kkl1VgetyIlAHxZxYskwcOxiDiQIc +BBABAgAGBQJKcF3jAAoJEGc6A+TB25IfSJoQAIdSbYqF/DwWss/9p1QTAsKlmBUv +EAn+J0CKwr9QNFWK+xAr7iV1eq8jkVbRmRClWLKP8CNGtXUNK++E9QvQSHPzhgjB +PBdiy2+JEEDFQQFJ+WMBrJqBPCwZQYZ2UE6svXG5y4bR1xkb6VxyWXj9AP6FV8wR ++pYC9d5PS8jtxp01bR5Pc6KONVrE2TK0lrVVzmeVX1pg+aCMck+imCtyujNw3j1W +5xmQCYGY1cXYC9r8adSITiWYK3nlnynQvQqctAiplSTqnWh1T3asptQB+6SsyCmZ +J+9jj1ZTWPy/wumdh/GLgwJmwrBcCL8bXEg31Wj3aM35Sy3IUL0AdnbgTKvUClHr +eUJaoiPCoc6hLD0yp+g56ZVxGWBkJBhnLEMcbMGWk7a2pBQOt+HL0srWo056soaR +u+NwxbzkcIYZywXN89RBXLDHm38x9/0sfvzKCqj/S5umNR9L0RSWEc4WL2IMrkKD +unVefgWIEUuwi7StZqQGZLG7uIbLPyTAczqNTx3LTMvWNlaCkMUS8EDEHLyMQy0E +gLEcaoTiZA8AjZD7Hsf3oCn3XqSLlTC/zURsUQOUr6YwntLbnkjzz1ll2ZFe1jmy +tI+VvFWsJl96covt5lq7i2CrYSydr0cCEMSdEMQIThUDLg+lwJpMFarO7hXvdjhe +oZv/QKnh5SsZYYIYiQIcBBABCAAGBQJKbunoAAoJEDqTYZbAldlBPEgQAKtiaGfA +KUF94ogRxC+REpoXv0zC+/oKXIzaTYYZPEMpXUjoUd/BWX+nxZGvXRdGds230bfB +Ahq3lSs/5CqY5FNtCQfRRX9XtwRWvDVPJqBEWvHLiUskugU13v/RXZPNu4CZkjq7 +NVtAiD48uwOt5ouOsNrTvQTspG1djQrcBRmvG24lE0wumvPEBTmkZrWQ4edbxfgK +UhLfmSTAUwiyfVE89LPkkRQO2CkWYliNGbXpvUPVnOuqqnDygsMd4byfB04nGcKm +Pl36PGa/rNRUNgMMxE3Wa2mfynqadn0+/TNh7hk0YfvaACI5eTZJnvekmGqIoQHM +ZNd/I3GHxlZD9sGGp2YbfX4u745rJwT/igEAap6RHJOtW+qseo2iAFVRrsb2rQU7 +2/MJibgTt3Wy1eh418CZmCmqPtxUhJSow8l5ZOqNh5kNVdHwUPw9Rpz/+KiM3Wv5 +oWWWjP1WLGGcYN+JgNiQuZxXzaDoLlx7L/xz8Wr3kp+VQESTInS/dhnfPIWj+Z+C +RjNFj0f6RdvI5KYWvj0rlc7B28JJJ0mt05qsWjTzZhQb8CKFBlJQD46WTDlUxfNM +fMCcDF6lf6TKp0JRtOOblePjEflJ2Ipx5osvEqHJthxXZPQSnmekWdynkv+Tqnod ++lEFSYEZ98VKAppcBvB+/QFRn10C22ywUkPCiQIcBBABCAAGBQJKbu1fAAoJEFdZ +81ABqkpkT5QP/1Dqyf1BlgBXjiJMxRGrDiQEhzWtuX5spFs0X0qCaP69tT+kzqKD +o72CulYUa0kDEOUZeaXMazVQIM1EN0oYCYhBVJ9n8w404iq2OpTRLGkMZ7AhGRZF +A/7UihHDFUXC9lc9aarni2QeJtuW2YzIlauwxJQQvH2P0Dh4stVm8hY7VBEaFxqA +xTylr7GiaxDslNlD1ZbIhgaaEbb5N2HhOYPX3NodTlGl4EqAQZEYYkTLsxAS/pMN +Nr01rvgCFiqfrDYIv9IXzxMJwHBLB2BUnfGfU04rrVM0A56V36Gbnp/Gz8jw/pR9 +0WZXwB9yaX1HZv3ihKzyLSRaJ/fv+IJo1dzpAGiaLYeRNmPYmY/vFvIs8F7V2OH7 +QJCEQP7HwMk4R4ckVK3jxPY8vDE8gjXsBomuJ86coUgqwfXx2Ah/4Poz6s8RQ9iP +YllmtczPQiOpVSFQ2Mnn8DMvY/qikHenHqrnS1mDQ1n4qceDnHIbrcScqSCfra/k +xRjeKbkPPyNA/XoB6bBH/RYctvYHpfr840kopklyC1mqwvFEjo+619G9H/hX0Vez +HHI+FRMqfYvxZU/+HoNEAd0ntIBwD3lP4mOXYQGpC/wqORQT7WhNIbu7Jd/d6EIj +LxhR4t2gx0a/NvH+ebn+WSk2kaJ4TRGiBjVzboYCNl+onDYY+hMHNF6NiQIcBBAB +CAAGBQJKbxaRAAoJEMXOXcLFQs1ZuQQP/1dFMO2WIBf+IDQcFOO2aztT6gEwLJPK +hn2CwdShgp/DkC1rsQBbPUPgv7W1bu0N7k6hWBFPDC0TkRXpf9Q0gAUeDgN/aiXS +VqaIAhRq1fWZHXKS1sFRv4X4FdvEbrSGNZ+YGbJK8j9cnv0pOtxE+7k5FEj29EY2 +Coq0uCNZ0/4AoXNKMDc8PxVrBXtua0Iq80J3fXqP3X/dOfFIfjnOJv5eDWvfQmxM +1/CuqkhIvJCQWPZSN8a1CTUYR2zw63kaH7aCm9He5lF6ssrkvcB8RAH/5PDjZ5Ip +fhCEMgB+/HLEJF8NufcXbf0/xF4SZow0gKCtkDis0tQfE4TyFhA99rj8raTq6LfX +oeWf1AIsJC0VJ+trrk73J9oydNwUMaoDsXMXEKyduhiowAo810WpJibhSUAl+s1j +KEosnI6bMY7bLUt+egYWlCDL79VBF0Ff/QBfoboEaRfKoaibHhuYtNfsG7JiNEVM +fo0Vx18iDqQhvM3KM25jnODuNlEUlG63MgfYz+sitTycTsOX7SyI2bWFGorlOr86 +HXjkuWgbV0ey/lk9Oc9U5R90pNx+Zoee5FiyORdbHuyQAIgf7MxaVSzE++2VkNqz +1AZ81YHJLLFb2qfMkqvFjzVbRkwCDCAiZ0ZP8cae3K1B6d9HM/fXSuWaMcfWpL8/ +QnzNt91MBr2NiQIcBBABCAAGBQJKcGs7AAoJEOpsprlRuFE5/gwP/j1u0jYd+/7o +D3ORaEKgWJCOXyYocPf8eEbGIrvnUS3grVWEd+eSeDK8MGye5Ro3aFWX5ug5wLfP +SmMcp9cN36gBUqq8DXBZRLm4PbYKra5hzixlVN7drNKag0t7ZSfKaHBUxdoRYpEW ++2RptuB/POJ8upKrPV+h+H99BO6GCU65DPfT3rJOwL7a8CFJci8ZUHfv+6RbdVlP +2JkJT/TMZL/8ZQzCUi3EvumeAcDAvY+GXrSozrCULzClgmwANo1MBASS1mhs3g3u +8pbOYcxsEH9hU/2etWpX/Jv4/AOk2i1WNYLuMNulI569SrvFs+3DQmO7cSdPPTiu ++l3JOkN4EyKar4fEZvU3tTDpwmetvCtaLDIQQekAmUV6TJR3i4UUeThLxH2PQ1uu +gvE8uECRs9Hp9ZKAJYP9E3Mpplf4eqDl9XD3wdwcac1qQkVMQLJoSb5hjTZXdUGM +f9eUh+cnqTUagOG1LJhYKgME2OJkhxjyKeQuA+xVGfY4bW/PyF8k2ZCRArRi83Qu +qA0lELfwZk9eaBZZVP2zjXoUt1qqainCgVekQq6/lqlqt12N0Wc1AZsz1Qr6x+RU +5HT5Kckg0rn9eA0wDlBr1BslkXoG0r55ZlnbvqfNVwblrARiYZsMxHFhHfgz0xrQ +JsBoRiuiSGJDMftk+F9ka1w5J8RAN8tqiQIcBBABCAAGBQJKcbuCAAoJEOtc4dde +hRH5WuoP/inhgMCYfoNo7Y9yLG8ZZeJJ/DSlIzhGxS0BcfFIkrdF6j+k+9XaDjcj +wxMnfEOw2KK4+VIdBZOnLduB/bD/Z1CSL7ALSYT60auGr2kOZhcpxNd4cpXPI24v +x9URo7gmdUuQYsH9bMWG4F4WFSd2KWinAbODfNOxffwLOuKmvIxRE6pLvSdsP3Fi +CzjcUuBSZ7Q6d6SRWCFmdMfUiELgvtssS88AyzzzkMjPD8sERGdFP1TEgEjPR0nh +KhLXQQIvkcp7NJX8JMhjsz7cX/+xicFFC0rt/Qy/k8Ky+79er7kAjSCHhXD4/cFl ++vMRKveieZDZv+bjfNdgWlVvYWXFAStddgv/Mmz58qDA+eE0HxaDZ9uHqhHjKH/e +GUKe0Uv/EVL0xPkrokQLVY/oYkscTBaPH4GWTRFQTqrZhfHIJMDJjHjYq9zOfCjC +9ukfAFdCe7axhJxIqhIaGbrjJluuhK4aVtBW8D3casPwjDw/cpO3yk6lyzFKr+Hz +MFQL/yx4nRgiHKAVPMOVQ+J+aVW21WJildYXBbaSHzvlDLL4nhZ6HLPhmlaNx5RA +BSTkw/HIAB/bDKRuJCQe48YLuLlBSLbQahNCIaTLFvBRHZcKm5/WFaywm3YSI9LU +JPGujQLaue6juAc9DFZmFOjHVHfrlebcSvvKG0cea5XNjg0BQmIdiQIcBBMBCAAG +BQJKcYoxAAoJEFh5eVc0QmhOh2YP/10PE1EqG0i++nx33u/Exfx+3ZI+YWTZOV3Z +1bOCFtYwapczkX+uTo96X2STckpk1poQ/I6yAZT7v1dJXQaLS8EFzVOhUvYBYWnD +RVjoWZHe9IuM5Ut2ooTSwZJ6S+4mGSP1qzHDWJnumfQfwZDYK0YR7ofW7P3NAVvE +/dBl889S1aNj4iHFfgGKnnDGaaBX8U4VQFdz3FRH9ZEffDhk1HfWtqQimFEZonvP +vj/m5D9vSEWtrwOpCGDEH3NKzBd+9228wrgv1ITdPhwoA+qyxfE0T8NGIYgeczL2 +gtUy82Vl6MrO5yMuvNuiTm+IDdyx4D2OntSGLFeidJyb99rmg6C8ANdPGI/ApM5R +Hy7kktpk8rYUhMeqmUPfhR1CXNxIzIt0RtIXdQJ/niBXd1KCX4WKJ2/MY8UJzldT +DScYJcpbYJcvZWmSrBroVXmX6ooZe1ZdAePSThQV+M69+mbwU3JAChJdDxE+NmHz +BgdhheuJptzTUnTAmvWO0L0QVUx9v+9Y4lvtLR09YyUiF0xz9vXa8XhiwijktGFG +B9/vZIqczM4k6D0976/CfrW0HNSnrJEvGWrAXFAQttdaFn1H/gJypi8NX/PGb8Fs +46gbxAC3wqFxhPC6mHLo2IrgizX/l13OOo7bF3F+6Ps+I2jUmC5KBKVlVICCx6cJ +2lelOaowiQIcBBMBCAAGBQJKcYrqAAoJEFh5eVc0QmhO2CgP/23UQrhRvmSguw3d +YiW73A4l4ZYctRdsp+oHkYoMSG6PqHreW4+jTrSNfLhmwFxzWaQ/3h7KEJbWKqRr +m3qH43dhVbPIz6yplGsVCeVKkYLU4h9BSBHk6nmeUpD94VAWhPmhW+eIgIbnN4wY +slBYW/VW1SyvjBB6+aXEm9ccl19QKutlRxlPfz2IyndPdHNsDcFoR8YOTEK2ECgy +wHwyd6oTZ17m268Aqx6kNwjD1IWh9GenoivzmPOR5tLlTXVo7iJf/u8jSIuY5FCy +XZqjfKoVDIDri0ht7o+p+AT+cJsYp9/GrN3pJlRMEF+dWdhFoVK8yBVfaiJ4sIMD +OhpeEt0dVRlf18jde6/V+Dnqe6q8u5N8Ej0we3miB/52AzfR4o9WcQpOwcUJq6ar +iY7ojrKK7fCNqc/Xv2PJBdeMHCtNiNZ/HPpLQMVqKX1Dr+kF3VVTy+6n0uKcG1dt +1bI4+orGl969d37DIteVQkt74TGpbdP/8EybWfcqe7dnZ3gFBSc9691X1TxnBpo+ +sj2Bcqacs1fh28G0eF3trf8o4Z0UzJ0/ffk9gRnN5ASwEZ+Pd/ThWE7+YISxj8Fv +dNUp4HiE24lbssl8wGGEptyxiTJjKQB4FQFExcewrezZpt3RSA2XEVjioq3qc89k +QebYyp9QelWyb/aoNJznInhfCHa0iQI6BBMBCAAkAhsDBQsJCAcDBRUKCQgLBRYC +AwEAAh4BAheABQJKcvlUAhkBAAoJEDk1h9l9hlALMvYP/1KnVtChI8lv3a7m5prF +E7ZCZ7n/D/mI3fQHp75mz3t0R5SyI6lR0Puk+A1uEnQ++RvTYf/c7JeCO0+GdwX0 +Ck02QBZn0OCWnvM/edc80sRtVMYKNJs/PXc20g6VhHHtU/bliXa8lEid/d3ssD+5 +y4nbh+0KoqVZOjjsDghULe+HZ9pn4jdoxWQ6RSsdtrSfkXrZ6K+tB5ayTPVMhPXQ +JfmOrUNTIw1JC/T/RissZl3HUgxui17JIwfJlVaKsqUweCvKaIS3dYNoT25OYgL3 +IntZkFTh9OI7oejl7zybCe4toPeSydqhFV9V5khVeuMw74wXra/0m8b4Pjd3Asf6 +kt/SI46Hw3etAurStqNLktuXlULUrQgcsMnLJrhncta8Xa7ChnBoH/S29HKJ7U3q +QvMicQyogAjUvzkeVrk+UaYa3bOO9iOik+8wDUT2KR1OHd9SpaqftZ8JbaG7wdF3 +PSvP3T5ibIi1p1Up1ufxAfPl+oOWJxvuBs7Vg/JhW2WkH/Aeqmi+V3yfmSo5/kOU +C+oW6sIgAc5mKBBX77SZ7Vu3qUYUGm/3wj68GcBKmB0uCWgPPcp2Gdj/AC9U8P3M +F4si7gy2ktHHBv9Wpb/mbwA7slAezzoT1HimM++s4KxEUmitD6FjBIDkvYcV9s5n +nCtJ4YOKwd2phaC2xK7Zs7FGtCJDb2xpbiBXYXRzb24gPGNqd2F0c29uQGRlYmlh +bi5vcmc+iQI3BBMBCAAhBQJKbrthAhsDBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheA +AAoJEDk1h9l9hlALw5QP/iLQ1TtkjWdUq+0BD8KP11m+Scx3B+n7k8HGOu46+SBC +QntOPcYsqXJDBFDc66tdexN4AWH49fGVxCN6KtYqVja0TAfNbdTf47YsPCn9cWKh +kNvGUmVzMi5FhK+I5X6PvJpQBs5dvdgq44sFfXBPZUd2ZYIOrBOaxZIsDywSi7ow +5xxLUxxD5EH1w25+cxWnVaHljt283jAeM2kzwW1e2yBmFLS2Fz2tAVDP4XA2aVH6 +TVxjln1B+4v6ojMZfyxBxMiMCYtoCyRUTcF8/WnPr6hrXKWN7PN5YZPGcxXb0dIq +gRc06+g2GNbaNxkkFfksHnOhMhlNgwah68fhYib3zlwZ+1h+TEiy8uEusY6rUTpt +x+1BU2QfoR9olzXDdmDQzD++LFWd2FMq0rp5koxCiGo6vu5qAh5I1gvbEtJ8O2Pu +iM9xNtekEwJG6sqoX1zYBTTjpRPHRBiD6AnQssPus/3/gEoiieFYBpnuTZLlUSsg +ymBdrZDWuqTrL3IpbcEW0QDr4qaN4M19oo/QBWdDn3eXH8V4EVrJm/tvthCRpviD +5tBPiQOQ0hqovlPDgImTCNMmzAka+fOHntfeIcqIs8hUFH/wtG63oybuj6StSTS8 +/uSFlePJbU8UtY19EDKIPx6kTc/t8q2rd6be0iM/pPJECOR2J29SSO41WZkkRqOF +iEYEEBEIAAYFAkpuu+sACgkQ9t0zAhD6TNF5LgCcCfwEI5WRVJ+kWXKRM37cCGqA +uagAn2JqxKvxl3rDZg7BI0Mu78+YU36riEYEEBECAAYFAkpuxMUACgkQH7uVvy2a +zI5lxgCeKZqDPKWlF05W9LL42vsfDni5fyAAoJ2mwFb6pIcVRVIl8O/FIf7hqn7E +iEYEEBECAAYFAkpvQMAACgkQYgOKS92bmRDzwwCdFlB0eLqFhx5YNt/WjMiLUvXl +ZNwAoJ1HggdKez/VR31KiOGFLMfzVXt3iEYEEBECAAYFAkpvTq0ACgkQ1OXtrMAU +PS2FZQCeKB8aBIzmbjhuuKaErwPwtezbDccAoJP7fkk/bWsFaEu90DrkvaRWasQW +iEYEEBECAAYFAkpwCAUACgkQQSHHQzFw6+mkngCfaAXPCdxf3C+mCe7EsohN3uV8 +WLcAnjFbYwU1PpjBudLAxJECt9Efao69iEYEEBECAAYFAkpwY3gACgkQnQYz4bYl +CYUeXQCeI/Xl3fO3mzonVHUTzXc9PRDaLe4AoLCVPhakpKVn2UV3Ob3vGyCASpmG +iEYEEBEIAAYFAkpu7UYACgkQKN6ufymYLloPZACgtw04uHZTsLkgqtiKW/wTbpC7 +xKcAoKfHW6kvjajnYvP2d5Dqq8vrvyVjiEYEEBEIAAYFAkpwaysACgkQWN0/4pnh +QbToEQCgsVzmR/eO+gajWxZJ5PIqyH0g+pYAn1toL33eQgO+0RekGnlWjgQdZtqW +iEYEExEIAAYFAkpxiPsACgkQfDt5cIjHwfcqwQCeMQ4tfQPvKJy4gE6jP3intKNk +TUkAni26GoY6sO84dw+GMgNGpBs8AeysiEYEExEIAAYFAkpxiSYACgkQfDt5cIjH +wfeyGgCfcp8LFVv3HgxrtAWkcsC9CDAbx3cAoJPc13HBSMhksIYIbU4N9PgWxmry +iQIcBBABAgAGBQJKbtKfAAoJEO2GBLwG9akfKQEP/iX/5vg2uImlVqoSDkIU0dev +URXRJC5mWtLtZ3tx26x2QvwXBxgYfWBMAOFjofUIq14ivU2skoorPdD2jtbPYOcI +fupH1K/hfO00LskeKi4tyLOmYpzgOUKzZ0SZRAQ7iWBNySJD9kx0uWP/rTqegAbr +xEPszAgr0H79MXL/Tx4WXwD+zRkr2d3kXIE6xs+vYp735UuoWI8TPbc6giVGjdiO +XrjIyY4HxcmDM/PzK71m3i5F1PBbjjHlDP0rVccDi6cgiTt2Lf2TjXpqihKMgc2K +AfVYBql6rI4L8GBnWzrAjCjywy2kYCrEkM3t+4KUXQzx+Aoct9d0H/auWMiKmeXC +FKz8qfjzlwD/b25to+o43oRkrxzA1dZP3zn4UaVq2PwcUeS653qHye0r1/m+kwH/ +s5Z/L3xtPn4EP9uaC2mNQljh4Y1C2gjIyV2S6SPQMo1Fa8Fj60BQok9tpw9GG0tr +lPdrSxMXYLrRIsinHTmGEtKxSCcw1r0/RjeysVEI8kqze9ATcyf7zIsTXjWZCCTD +lyCd8zv2xXt/JFPQ9Mb2N6eFe5YJQxdf60QLr/LBS2ZKjvAqT3O3Yxt26SWKGro+ +o6BvuBqEdd6ua6M2+THTss51MlyrZO0TAV4D7gOkqWqEtHvKSVVDjGiaWRI8tmrd +fDiwZuJVwf7wJSitUeu3iQIcBBABAgAGBQJKb067AAoJEIcvcCxNbiWoZvAP/iXA +DQXHs2Sx+kY+nAs1t56bwz2Z4wfS1ZwRzZOzT9M/0amUVz7DL/NSHR5pjBLuaagU +0UktUYpdmTfr4wUnugzcbcLbizkfIv59tVNdz6AcaoBobo6R8EnkQKo6i6pjvFt9 +8yww4gwkHaYXKiyGY5/b34mB0B/5qX6VXSWPAgb7VVS3ffEfPZvXT61JJOJWY8xf +Oyd/zQQ11AOwqtLroDn0g4Y5YaWUEgvCiERuInRW9zQ6HOwnDV9IQkA+WH87qnsw +GY58K2x/IstpP2aY1Wshe3/OIPIgBbhiPAvUIjroAziG5eRR7xI6e24h3klCqTvg +3pEp3hPxUM4jsbaPT3XFoSBuEuoxchYg5dzqaw7y+3vh5ZNLhUOQww5s5lXfF5WK ++UzYHPGNNySHhLDYzKRYotQS+9TD7aoXCSTr/bRS4+OSCyMkofIvtmPYGZo+w5vk +jCc+yUFeCfue0jKqFkeK+U3PVum5ErpEsiFa/877HZR+rMV+2n/sQEqUlc3g74oA +hA0fXmjTA6gURdw2VYDdx93JzeugL/lf0QcxwG0RiYNPTcKiOcOmLZQaAiNX9ar2 +0ppREFYfAPmkbFQlt3EnFZZ19OgrzD2lIyjpYGNmUtEAh+/VNOobkYwozqFB65Iw +xSqKvXyDRdDegt9BfJPhGYMeOQcV2g4a/48ys3nciQIcBBABAgAGBQJKcAffAAoJ +EDIkf7tArR+mPAcP/R+dgnzaKyHi8C9yDhR98MBTuK9Z14DHpJ+fm8R1TDdRV8un +wGgN9o2u8xv5JAxQCWM1KzleCQVJJ6ypc0khv1LzmfT+mKrcF8EEA6MPyCQbsTus +nZzSknAh0idea0hvZWRbfMK1o4wb+BJ/qzzfMY6GoQp7+GJrEq/eaqeKN9wu6+u6 +pcsVWxF8oUAawycjI9tFLtaPLvaBLiW/lOiv4xt9qBQMRGTGPw/Eu/sVd+TUZ5+m +S8uSADJP5NIDsz3WxL1dgbrvGM9UPLoNG+2m+0irw/WZIU5I7TYiIKancqqNWQwL +i631Vz88D3yicPUP+uhZRRdP/ekQD6HBS+WkMbB4t9PlMehcErpWflAbAGU5ZeMn +JhVeFKh32yfpiBhu6zlisHH/XSAuX7Io17bz4jsP8zEthzhsxJUbNT8PUxUVIZOD +l/C2YfEyeTK+e4MzmML/hgOQuf8oR15rfIgs/UTggxmfVBKBv+lP/3RhI0S0G29V +0yikz5pZ5auYQri7m/b3j/c40eUH62KvnT0W3LyJAtpBKTceLZbohCajj+DHgwV5 +C38Wp54MK4aMEuM1TJTSyhBGtdSE1lOfKbndsROa4rrRtVhw0d0buzzgYFkhoLJN +ZzvPuP3zEUR7UKKvG9wSEoY5qrj/ePI1lyrtkGTLdkKA3FJTOx/vZEWVmY5viQIc +BBABAgAGBQJKcF3jAAoJEGc6A+TB25IfF2MP/jMDA71JvkZjq4daanPrOm+4AnH5 +LokdnTw4hDW4e30eV3PWjk5WQUx10hcmJgxUEV6ntUl3xRpv5gD9zi/9YN8tuINs +Emltu7xbvkojLHNNMq1tE4fOIj52kT65ce3WSoKIsQzaexDULIfjdVM2CoatMiqh +3OJV8Of1ztuOCAmq3ZdIhDZJarbcqStyW6IQ5gz+BurGMEruqzvEgyC18xuVZlTV +kOIj6MIYffynIopGfQ8B2gz/Nrhh9r8c/0i9o2zK/rjq5gygnBldOFHPqqW3Es3A +Uk0G8gjVeEoV2Lf1JmDY52jhGW598Pwarr17qvFQpTjxZ6Uz4HRAVFG1lgmApyFC +FrAmqHZzABxkdD3eRJvM365OUFDCB9R8ANJw70XQ6VhG6J4Jcidn5OConilDBqot +VxyW9+Uq2rvO+yrC3jwIivFvSFNyFmwbK+jvaObXDW6TWVBk+fT+bbRcXD62QPSf +SjkA5XLgSJnNI/4wYo6Yzlp7VgGeOP8z2nQprQr9hFV6K2iRGOeMzTrLVcldshQr +WYKrJfwp9axwR+LJNvdutG/ehbZOqfqXc+sWBB0eaFA6HLZa1NDlb296DB3prhPv +M4muL8rO5x4mFNMHdTZS57NcAS7MIdolkPYs6MEeWVkoU7fLM5GOwBb5vLfLZa7z +xsS5+W55TayEbEKfiQIcBBABCAAGBQJKbunoAAoJEDqTYZbAldlB+lMQAK4/4/5n +msPyXq6ol1/Q+XlNIc7IHY8tRqfXLwQMxYqH3XKbS0A6VpaBQB6wY+HdAijXe3X3 +iPGtBaadkrwQdSPfBI3P4Hv5BeQavDbTjb2NNlK2P4GX7MKFI8+rqzWZkBLULjZC +seLvBpSs4I4tGtMhxhFS5QsOIlKLv9pAkgPP5/uDdngDTTxrqlEXBravJ0cyIoZr +vVg+sprrchhIH+Q64qc4XZXEcvcI+MYK1v7ssvX2bx007lHiZf/5bi8BBp6q1YmW +QzikGxqRjRRSS2hATVpS6xcRaUEHdPHtJHhqfjA9b9GqQT01pAo/jTR7zlfxsu+a +LwHOKJbBvIwdn8n/uZ4Z2Z50vaJoblXzzQB/KJTuz4h5HsycYMRrDXz4I0zT7XlW +JKNAV/VP0bR3/Dmy/Xj5hQ+7injjhUgCbzxJ+l/vbRqCDX2uStchc1dX/DZaPLiN +nOwzYVo8CgexX/PC9wjn6OBdYmgGSbkpihpeW7kbs4y2nQzpUfabTNP4vnzC2FSd +S5grryLl7AUR7VBoXcpGtWs8N9OX0Yah5XKF7F1kcAeinkgsC0/7MrlzHoauGgEW +yPmXzJK934vzo1adaUDK57FULafmrQ4PfI1/oYSMDfOReX1P6733XvPdN9/PAnEe +DXsHgxQOTsgkE2jOPOWGO9yJN8UdAj00o9kriQIcBBABCAAGBQJKbu1fAAoJEFdZ +81ABqkpkM+UQAMGTaKjC/CrpHNWtnLwydvNAE9L2xZX+qzlaBdDkAZIH/m3WsItS +CysFkGPOchxYro/17MVdKoEI6dy+/DKlfi/VsinLkHgZvlLn9UAi3ld8iCMj4DKP +QmPcdLlO4WAxh79azE39fqnp5oUwuYTWqugniJs459JbJ9LBX37GIvgAq7CJl0si +v0pWSq/hGbWBZ3Nt85DJs2/vhv9aohmfguXWG+VjNCmxSA8bTFstEcoX7F4zlT7i +g/93xNwJwUn09eee0MoOF+niA+Lsmj7SWAvGitnsEUYZ1PfZuC261NsxHdcKIbqQ +aybrIGSubSAVTNpA2R2uaDERvn6mrqMlcqrNJeLTFbQ2i5Mg1iANmjg6Cc00FnKK +x17fBTGC9PN+6YzCvqcuFUwfCRII/Ik1EOpNK/uCoV3ZwCtnBnbVtMO0QbuVMyHm +oSJ3EIEC3qfpz5YQ0o8LA7+LgdbcM6OeU3pYIdg/J82n67S+2qNqHmtItkd3tk4U +44hLibjCei81PnGxAZx/P1NDZnJpVC72KSpGog6Gkb9WB9B9YVnln1YbJz7K/cUn +DHz75eBjeitKaY0T9ZlFSWWGeqsFnsXAnmO+A5vTnZ0LwRQITKvHq934xN5OS8Aj +eqvU1oLwEmHILEHm7YrACk/K5jXymspItt7GkOviS1JhoARWBLTSDjReiQIcBBAB +CAAGBQJKbxaRAAoJEMXOXcLFQs1Zxs4QAKi5G6m3SoGAsd1LmQqCkC9H/zMfrLaG +gXztWbX9jSqPdy459KB/jZLd0FQwEES89hYJz2hrwXsypleuTi87uyUs/oxOZybc +x/kI+Wued638Rjnuzgx7Fkvx6YLpScW4pty4Rqe076gzHgXuTGxS8OcNoQU4eU/2 +XoL7ji9yQTJGlLXiap0URjvMbg9nqczi74SU4Ok88kKVms6MbM2QnRr3h4+HtLyJ +gRENzBMe16kAI14KlmhmJLiD3nO2zcrT5RSplaugrq8rzwrovJ4Q0grLMDH+9C7T +DSCkpBs3NaHPetq3ResEzYqOsphBLF2NdzKw5WnLCRZyugOyeFgrLeRDLNAxbmdr +6KNlfSP3/GSepjmLaXbTP0LlZB0qGk81Tg2YS37tsbDqLexLhIAVg2GR0xLc1W1O +1uuCSC0pRbS2Ych61QGS+BNuSlgDjxOK0XKXMQOEnT3WTWC2c03OTEgzCa9edFQX +tB5IFi5ARrNL1XdRti0NHSjGl41ihxLzp8dTOBf0qsYZoo1+t6oVnJSAPVeudKf1 +dJLft5M6Ugjola53V6UGHfDjK4SoGbnKuKljLpZ9ioDweipxEIrug0bwrynwV6CT +IMaXfuXoSmedfQFSqAq3KSSm5fGtYcdTdatOjKq7viVYrdRtJ/nZwiZtGStzJONA +BN+5UE/JHsv3iQIcBBABCAAGBQJKcGs7AAoJEOpsprlRuFE5vIQP/i9+YdwjD1WP +RbTnGt88qnpK7zbvK8+0i8+ewJfHUIWM50pAmePlOc6mB37nXj769Qc8NhLfoFcr +Kx0Q62kXYCwNLedS4cvmeP8j4J6nz8ysWVNk+svRIe5P3QXZDv5TFvPav9f1HdSS +LdLQsXCOxHwM9BnD5G8R26cyHbWHULkgRiKGS1Xf8h4j3DP3cANp1WoZAT5sXFSQ +1+iIKdeLJrfi8WGI5oRDDAtyDKT0i4Xr3xdtL0c6uH5J8fxwypbBCp8vjueITdku +MjvIPhgAp6I/2mvnL7bn6gMtqzZs1RHAkQgAb+ewPuPT/2qO4YbYZFt8ERsPR9bB +xqufJZr37yHfH2ToFMZj6QPc3sGuOpWJGDZrZYd4rPzQ3TNN+vV3OO2bhRDXgFRe +xAiRkbLCfhSPVecrKRlPMjGMMtZ7ZQMAYnx14m4VpTOO+IzoujkXUngxjbqn0aWb +tAf1VTdvwF2u7CX7NlAPaCxQMue/AWseC7D7/obgNIqyEMq9aJd/a5SGrk7/KE1/ +5jRxCn8OXCxfaL+CbJ/E+tpwBdMrjoefppOftpq9HO9E+wLm1OA1D8MMUjFneCCl +GRQUhJqMClNJ+1tpSpEjyQMxa9ClaOwr76LkQs4C/fXcIBmv6e0N837t0bsls4gb +Q9v6PpXt4h6GDBX1mrkBk8ih0KW212qjiQIcBBABCAAGBQJKcbuCAAoJEOtc4dde +hRH5kv8P/joSGeRtui3/LFTj1wwP58rGgC+SA/7iDbmCiWSDBp9kXlKPCHlcjZRr +qmFq+gOS6dRO1DuJRJga7Hi8/sizlShnQ4aai5VPPXCk11crF5bCgqWpSoV6P5Hm +kJ/pOJLOZ5tRF+dEm3lQggMyxjqvajnASb1dzsVOkVNqOHthE3PPSiQ40wBlB19c +vyT6V+y1Ky0dJ1YHWEwJmmneiqbepiEZv1lpo4K54z9IHEX94Ao/yxBV8HFWEAlb +MtwsZSBMSLPiHRrmoROwqqJzKzU8ucpL63dV+e97rQwsMRsW4bSROcBMDf/EOK12 +V/AXamDFtXlcT6LlBG8MJbV+CrQDCJAVHWykZuVyEJZ/32wpBhX9ZkpV3xfncdCC +akciWSbgW5gzSai/DvcV94X9mTK36p59nKOP+VXv5PQmwU5wyOlVxsAqE2x6aaBD +PF042NrnAfyQV3B75fHbUu4Y1ZQm34goyjpMgzEoRWN5cnhTkumXGWfPWG8hiXh6 +Gv/z+GYuHC2v6cRfx9bEx7fKw7/KjYy0kaIGXbV3oeAehN0gNkYHrHEamHpl+YeH +rqFw0qkaoxe2Xyc1+08g1dbumw5bP8xQhA/A4/iT5PMUg+rUPy805OecQ4nbDJct +/yhIpA9PfbGWcm8UQEoAekyPFtdQNn/65DkkuegA8tiQiWiTMYgciQIcBBMBCAAG +BQJKcYoqAAoJEFh5eVc0QmhOTzIQALfI2ZXqjYQDG/mxVE1ema4P+7UeXcDgA6Hv +8Bq8Bp4tUk3JnOMRraCTQkgCWx43wa1m9iszX5SYQhFLiNOF3yMGoaY5cJN1FGYE +lXSdPK2kxtb4gXNhGkUMYc2UFromF9BVLb4KJh7HXGw0bBRntgUHWczI3KsOj/S6 +zOxFlna1wjupNOtbz1A/PiEvOF7EqMbeICxMF0MuYQ8StcoYaneZwXX2ldtvfxRI +pwGiHtdBCIIdPbzaIch9T3SernYRURK1GGIEdz9iAT/Ou9t0BwGsvCokM3WGp/qX +Wd6+XuTHY2QAAjncUOw5NIkI3/mw1GUG/nu7zh6k9UJytf1rDOGPOw+ElQXO1hUu +PFmpp2Mo//I3TbbK6Zmwv1clrUYZsUXIUe77KoMms0CzVtQwHUnGf5lgybHrStyR +7JWhZtyC2BJsSH/D6b6ogIcdefzxsmIDB2kiR9KVNcmK49gLJLjpnnyCTrf7+E7v +UJ6s0YUF8q1LZPoIJHUkswy5Uas9PI1KuwafGdXu/aopfr8UfTt1qCTl8J1y60ST +tSJDa1vg5UJ3I9llubVCrs4dpayXMre1Z3C+vbUEN77aBHJHukAmdSQ+l1cq/CMN +i5c+xfeCDb5jcpqm1kVmHiLYy91F+/vQgPf3LAae8beehUjyI3rsEiph4fvca9AM +IjR2vpujiQIcBBMBCAAGBQJKcYrjAAoJEFh5eVc0QmhOeoQP/1evDRm6ZSL+Nyb5 +iG5MeyI3FtNkuzI61pz7Rdggliw6MDFnnowkC6jQ43Exmz8P66cknaBcLPs+laR0 +Grien7oQezvnZ9jSx1zNxgpXkvXAX8kmZvUojnW/XjFvz8xyOrjCwBVJooLKnZPv +/Lw2qwbP5FEBZHi9XzzQpnIg8hG+ndXmapVBvDTTbnhY5s9wXauXdRjW9Xl3qSG7 +EcCarmHnfkyjD1FkpNOVEm2YiCMpxBDmppiIGCVnyJH/SQsM2u1CMhtOqKj0/X1p +iOIxw/sh8SniFkuookcCkKe08JEplVH/lU/GHsqAK7i8JbiDjVl98z5xmid7DBNs +D1Ka9SXC80YDwpXs4SBi059Z25NyUrqyUZwk4zP6AxYfZoyxcuMwQ9CnYoLu5e6Q +CN15MHswVeYdPpJ7yqDVEDGSDLWozUh579T2sxV7iXKZl4mwVwgJJzmyS70sTm7O +j0hcCQ7sQbTjp5YX6qM0ukFXyu2wx7PSLXN2mdS2uNweHzh97pT1MmdF7yYpx1Jm +3mM4ZqZL2suI7774kIIGMoVVs8tIubIOnPj6eUrItA0aFJuxtegel0oiqeCkNs/w +FoY0RACUvo+BuTVcEBjX5Vv9I9z41TxKVITxFw+Z3jYnwGF9StU7zbvJPGQAI6jn +AYGWog+ZWqgvFd1194GuKL/sIvxNtCJDb2xpbiBXYXRzb24gPGNqd2F0c29uQHVi +dW50dS5jb20+iQI3BBMBCAAhBQJKbrtqAhsDBQsJCAcDBRUKCQgLBRYCAwEAAh4B +AheAAAoJEDk1h9l9hlALFxcQAIQh9rqpL3KO0p4vecKc4PeKaS9expm4AgCtElhA +AM7aIC2enG96HYIYeqQHsHdbs/PJoWFcQaYWbJbdg6MFOORX76SkII2HbGjf634w +HCAdA62AJEx8+aoyo4vL4Be30OMUqOS/R8lE5C3D9GOEQ3OLoIR2HPmO7VkcN5Ra +fxbRTpuFFqaRJ5Mo7y9iNKKAPMgYhMhW1exS87U9MPUG698ALlMiz+fSqrMBlGJe +Rfoi107438uUJ7ngXbMCTkuubQP6aTDT32rjVM660quip0MxI9YGwKaIDfJVtZx/ +7mnUvg9AkTMbR9S9NKWPK7FM+6bo0AEwQ3HkXrVmrdugtnZR+Fqo6mS/agzBwfGQ +5ipJsDSapOMwBze7dqQfzsx22Pua2+V8Js4zISY/G2LY4F39JC/d8UY7fGPwrAim +PwnOetlNFhTJg9ECgMatrp11VR58uV+MXj/wVslAC55OIVEn/sI+YKIUisM9hvnr +4kK6PpiS+fm/Xte8O3iYyD+J+p+lt6hvESpG6crvCT6i8rkryfriQrktdIFA75RH +yh5b01wEd6OrNiTCkKsmNFxudVfhLYN4EQ3oiaQEEH4tHzYganA5v++JVp7OK0H8 +lamXOJnnyoGnoqXC9/eOKozZkRgQvTaU0UYx2GVp6MSuATqE6NI9YS9SCfJunBg2 +1aTaiEYEEBEIAAYFAkpuu+sACgkQ9t0zAhD6TNGdsACcDpCoNGFqEZ6lGS6G7wQE +50K82gwAn0jhaYmr30ske1bky6vI9FOrWyPkiEYEEBECAAYFAkpuxMUACgkQH7uV +vy2azI75agCgsi3LtA1HQCFPiMoursICPTqggfMAoIElkQRN0sh06BGeRzE4aIGN +KagriEYEEBECAAYFAkpvQMAACgkQYgOKS92bmRDS1gCfZCzV50F0LU9leck8PpYK +eAHC2zwAoJI9GC6+xtc07vjOCznMUJZvzMOMiEYEEBECAAYFAkpvTq0ACgkQ1OXt +rMAUPS2JIACeJUHolfCsoXeGxswfLCQz6x7e54YAoK7/C1+EfX7trZji7kG6W4m7 +KdE4iEYEEBECAAYFAkpwCAUACgkQQSHHQzFw6+kSsQCfTNXG/Nspin0mnK3wKXij +asgi9PUAnAw90qa6EkgDJ8Usjtmsab4eJf+TiEYEEBECAAYFAkpwY3gACgkQnQYz +4bYlCYUjBQCfc4MFlphuIqotBgLuNHYWwpFzQCEAnAhyQDiZcGR/KjO+zFJy6bmS +Lg1uiEYEEBEIAAYFAkpu7UYACgkQKN6ufymYLlra5wCgrFLteglwM87e16JLOFQh +rwhE92YAoKLl6bkCOwU3eJcm+E0d0ZbNkDXWiEYEEBEIAAYFAkpwaysACgkQWN0/ +4pnhQbTR/wCcDKms0wPwotQs3EVdA19Jq2RoxFcAnA33ig+DorkvE4y/N8o7mmgO +f5iriEYEExEIAAYFAkpxiSgACgkQfDt5cIjHwfcsWwCgi3C3w+AFiRRU9qW5rBtK +1iok5IwAnimA2O9LwZ0MfOofmcAh1hagSkV+iQIcBBABAgAGBQJKbtKfAAoJEO2G +BLwG9akfW8UQAJYspovIjXyuekeswPUfa9MazUmeK7ixF3Ar/Joh3Zdyb3thQYmK +Ls5UIkWYRb3IsT/5u+CP/mVCHtHtsuDY2J9n+pnSpiaxHw+Ha6y5FdYFBPy6Tulc +BzJE6l4Bw28MfmOMTW6S28yMGdcasbATktF34mJ2dSWsBeeegv1fUpwbi/EPVJ3A +xYjcWS5tLNXhKAsjz9ekkJ7A5CHfZ1QbSlTduqwCOmWJlcSKnfHdIYIGbLUt1Y+h +KurtvXVzY3H1cdoEb//HQsfRnOZfser9L3PQ9g+YCj0acF2ec/uWDzQnV7+11sDp +uQLmsSF8osENfjQD1GQUX5t8vXNRRP31Oj13dAi5GbqR8/8SpAZ7vNQ6PUG7ovku +/nuuFRvK14YLrpCPFaD4oRhqeNJVPQYWUk6N9xStQEPl77Te5PWe7brpHRpLiF5N +HnCiWPBetSZFnn3o5ZkQF6bCm/Zs2nzBGbPPb3ybEQJH1GhmvgK4MTpAh15tx2AZ +c0U0FkY1596huFiU+cr8U6EEXIZKZilunIwTqriZykW1SOLLHjcAgqv5wJdkxA0C +YPt1bWjbQKCrp1rdJ4jIQLqFSN7UsIPMOUXryxBzc19WvPY0CdplIVUKNzPI6nPI +PayPO4IM54My09/+6ALtr88yw/Y1D0R5b6HvUPK9btw7kRSNViv1Tx/XiQIcBBAB +AgAGBQJKb067AAoJEIcvcCxNbiWoYdkQALIbjCpHVjzijD3htl85GlMhPfyTfu8U +D79RcAgb0V6WSSibHUz+HTVcw0xR4GylPtLtPRm9dBD1kQFc4G7Imbm8yHMn3/oR +EgHdImncxZhkPTZyGylynDx3rjMx1J6m7zDd5gHK+S0wa/0m8FlHaaDBXdnDCuqo +RLNRqXSXgyEkoFqQsMRtF0I55lVysSoU/cb6rOfTVUKFi9q0sEO5hoiqe6xGFbsm +Kgy3hKomHIFFLtsGJ+j7VO0fP6elcm3IGliz+/rV4emQdELN3GQzP1QJaBXRKPOY +aehkphyxLQ3oacnQYJLeY8SUwdzN9te0xDvZi5yc4k1GwOQOHQtkMrd3A71kKGsG +IHtSMWbQxKghLXisKSI27pgMUFvgnT9KGwt3lDYolOH6AjqBiKDvJDql5ukMtZeB +hiCZaYlP/y4ADDVV725+owF3fLJnqG8Fmq80Xfb/1U7NR6cxWSANOI68xg278nR3 +XwS1lk6Z8EXVg2KxOtZ/3pQ6oku/cPEK8rupJyQPz9bPfnP2TydOk+cVpC5mPtO2 +SiY5pup705wqXZbhgSSWrueFNKzA2rUmb9Iu0PzHJ4oMcMmpTD9nrny5/oI2h+wM +AtyIFgLRpUhtilB13CMAfiABxA+bSHgWBsq0SO3rIvm8s5NuJMvAVjS71IlLdk6G +6D+mKlZnfFkTiQIcBBABAgAGBQJKcAffAAoJEDIkf7tArR+mAe4QAIa707jXtMgv +39E09v7o3v7kJRhqVenmYHVCaSd0oNT+1xfJ0S/2LOiBitWrCGVQE7lJL3ZCkOca +iIdR8EuIDIJN8xAMWQBC24d1GzFN7zuFXviVOFKjl/6smM4izDwHtZ13HyO1XnZn +F8/D6XcspyqLGzAkJoquoxd+s5MrHEDMUuS7YNfWIInOZEkcCJMRAhAAb0vEkDFL +ruZ+v4vHXX4Usihw7ARxtSNk23VWWNEWE1QhleQrp6YR8pSlJCW4S2p+5qNc62kl +UuFQWuWMn5eIfNPBpDK2Wva+bDM3mm4BuiGsExLvQfZSgd2WoJ3B67z1mznBUDLH +P9QnQCJf6whbH1r/3FBVptRI3LvDoTWQF9vKQZBzrxCoulWaOBV4Zqyhob8A/QH/ +bl3+It7Tiwzv7QaV5Q4vHClzSx7M/xKycy827towejRD3J6CT4fIqdrrFr6fAaK8 +YRLXh7AL8rba+QwANNy/bEJj7+SQ67/ojDSkZtEjLCSbq9S53oKp94kuxBQVlXEk +w0RVl0Z06UXCrSDNE2EGcuddXiaL6vmUQCz5GnlTMhgbaoa9KNr4LqTLconZac/j +hVYWwiRJjnE0U9O6eFAFZgX+6FfPFY6g8ICGLY23ntSu/kpRY8hX0fmJ1VTQWdcW +teMxiQWjnDsj4Wd+w+k6YisZS5tBXXGRiQIcBBABAgAGBQJKcF3jAAoJEGc6A+TB +25IfcU0P/Aiyoxy46g2FUGpksZ79b0g74O0mlCtgGhdchmJ/ZFAPf9QL4QlT9Cbw +NRqZFpPD1P5njp/z1MHDTZHJ1IZ3bq0fwb2pkHB/9YsxWXZkwR5gtL0aES0SfJvM +NfoqPAV23jS23u0jZviXNozPMKqRb5Ej6IDx8CODrgaYokmkTvRVxwKrL0RbePwb +ngFS5BuzyV7BQsk5ZAR9uHv8AjhpBL++gv8beKZv0A4Uh/NOBcruvXnfgV/hm1W8 +7en4PQAPxrbu9PrhszbYZ0nnXFWC/g3Tw9N5USnxWfvGjN66NU87aau1OG8Tob2X +RXyZ25CtkESD0zjJ+k0zs2v6BF39pcdfNpcR18+hznEKOQIafHjuTK8gOLIFgaY4 ++e6foUPvR6HtpZjJA/sehRATMdT3L3Jc7/+cev/VlnFALVjXFFwoTl7NjwKw1MTA +I22eEH+s3Aio49U471HwyAtOfOCjNQZDUL/9Z1DD2hgKfPg5C1eciNc4offRGux1 +2tSAQm3RTWFz/a2ZceMpY6mWFUP0g08pmgoaidd4i7SqsjtXlhADELJOjFv4LgmD +VaHGNWmrfXqiRKYhJlOmrBjChp43qXRVNvkuCS2IPRmYcWT2CGVT6ueszOnfaJi0 +hRjctVV2Ralu3dWhP/R/3PiWPSQTTQN2OW6MXo1B2KNUmLjvsstTiQIcBBABCAAG +BQJKbunoAAoJEDqTYZbAldlBzTEP/1GbLNlFxngtmlIgBAF3b33vWXY0vH0NV/bJ +allDwIoyD4nwzSA406x/vSn2knbv2g3mBXMBtCYoDHvH0QNUc9Rq3uTNHv6eePip +/WC6GyZsq4V8i6feY2pvnR77TjFBGx+ZlXkWGaEdwRRnrLd1YQTLbOxS4j+atMOH +P5ubshPrb6PDDDlPl83eloXPBqSLvE+0Bf7hy8fa6a4Bows2hjCicZDXFuseseWi +ZVv9FoxHyfFe/RqE4Uhr4kW1zAdQLafGQDFLQgmw5mjaM94TaYKLcM497WDXj9U+ +ObkG+1Az23R04uizobuXWI1hWkCe8UjT5Y1n6grypqjNBD6FV7eN86BLv9tNF73V +jrhNImykI7Ag32CtGm8Fqx+xw76sL8rEMLEz7EYyVkeVVJ0mahfxvzZ0uVQ+GEWO +79z+ERS0GXk/ZUx50s8JEu51szl470pPw00T+Dce/vbcCniy0Q7oamx0dSdd5nok +xLO9Az/Eu8p/5IwotqPZYxhTx8FZseb5G9+rC2u5EysCP1NxBD1UfAlLF2c81vXr +zbGKEQhUiHeV5qGS8LVO3hiklD5SOF4u0DntjyucAuVh8QGzO8IRs23YxpiJk6LL +wY0cy20QBu2XBLJvV4n21Bcr8njKTSyUMj417i91WiCe4998Xbw6nYWLR33LTtOc +6d4+OmrQiQIcBBABCAAGBQJKbu1fAAoJEFdZ81ABqkpkK7kP/Rxgov6SCWmLiIn5 +7r1R6AuDu0HH9VAGG4zBk2M62cwvQ1piuX6FuaKF/EUub3J3x9QGWhLb6tO3OLtf +cIOQIDPzZqUNsM2NlD+E+l/vx2SFJgHbzT4a2hLmsdAmCEZNRT8x7bbnqVJ9hJaS +zPjBVpty6JhZUY9l+VHh+INqvH3u+PxlWk7iEg8J2ReC2zwISBTBZqwnn+k+1zsc +tQkSbv9LTJsNaDLbaP/e3hNb/G3+OmTiVxzGXuA7KsOdp857lAsUCCeHSwtfKoIv +mkkFv2B196Uvl3jZkYY2wEC0YGj4MBrmsukBXzBmtWvU7IPCFB7sGj8BhS6umCMh +2VhfSDJO6uRSCGQtd7F8N+HzJloNMztW6p7IuRXR1MgVOfMHLc9ty5JX1hcHw7xQ +8ybJTXxLbS6yQ1oFN0YYIRY08ybkpFOjaBXY0TwCi5TRj2RhyfhMKdmeuQVBgYvm +Ihw8VnwiZnXL60cH56+b5osaORLS/17YHPralsxZUh1rqmYmXJa+b05J0AMOG2iz +vZL+5/+PyKUJHIum/dFER7RJXv6rr9SC+CCg+7GNLflaVx/HGpqZlp78gootZ1B7 +u1ew/4EFcVDokEbKe++4+bFGBzYddp/a/0XusgFzuNcO41uH60EvFF6DVmy7bV5A +srzqz2/vXLyRYn1iXcdatoHLsHPHiQIcBBABCAAGBQJKbxaRAAoJEMXOXcLFQs1Z +BYgP/1Qee0RvNAbcJh5vrK0kSpPLRjTrOCBojEVMw91Ms850hP6zvZdvMkvrdRoz +Bsl6IQVW2Lhv8xp1vfDItyIcuu+oxmAyH+kstJ32FcMvwhz5oNmOjQwXINSB68SN +EnRyf+bl8midsTgfBkS8syrWDTlSVbGwncTRiJJSGS+x7B3Ef3JXzztgBYwQr19U +mBbgb/dzDM99CJ+0I76f7A3KCq6CJ5pqLbpY1HjZwtzIQiqsyv95OvOpQpzHU31X +JmCVjqtptQD4fFCd3JsZs/LxE6jK9o6QM3Axuoefj6EDarMAacopSKyEsf6qJqKO +hXp1a9nHCUIrYSdA3EFCMGUFZR1jVJH6z2h6TwL+xue0ktZC1UlATaCbHu0yO9L7 +38zcVvQuutcsahFlzbBkithOAuCk11MNBqQ8tQKlHXCmtXZv6izEbRI6ir12usHX +JX48iP/scfE4EPKz2Xgkz9THEjayDoeTiDLT7Oy6YCiCR8IcobmelKdKsz8krT3V +rhhHC0hXs9BAEUGBa+QUsgs6+8dztTnKqto1G8m+XheM87285cn1NKqRJDOQe9ml +rmV2uuEx8NZljJM9vkoy4OTKIMDXL25P982OEnPjdNJ1tZfr8nEizBk7Z/GWTND4 +vooKyaRNun8/f8zqqm8h6CSHZlMmMOw8DmfL01lOC8hQ4MF7iQIcBBABCAAGBQJK +cGs7AAoJEOpsprlRuFE5RJgQALWJqV0eLyP22kBM4mnrJxRRsFV6jlVFzGGhVNlT +D/2/TmMndvEcRKxVTXpwYxTgGTUa1Te4eSl0g23GjZ7SQVqpZ8NU3Fj0qMxGvaJC +4Uoj21CPYU1w2D841xLMGDO+w9IZbowGRJF5qozSB23eISr1ps2B2Fe0rROpaKG1 +RBK3dONpBQXs9GIAKz6EYSkA+zCn2IrF0qhBagD2B+XrJlxGrbjSHVNpjm11D98H +VQNp4Pg35KPuPZn0S0UvN0fb8jhb85IVyan5xrvlv6Ho4PEuZDsBTKdDCCBCc35V +diSQcJOzoaRwWHgYX4wiEv4dagTdDWsxkWB+K6VrzvXdE/jFx3BEhEM65GYImDOy +rUo/mr74MR5FJjs03o7GZtqOGs1js6rfzCWsfZDrGkykg5MU2NxPjHxG/rj7JDMz +ivTQSxfk1KuGq9EBnsyl9/aIPzJYDasq6QRdrEpmRuHi8NL/Nehm2FLQLUcrw/ph +Ew/VgHfkYsel1wb6uOqjQXTIGEZDjOyws1Mx5ouHEXSWIQZ9OxJEBmEemdmDRUqX +P/IxmkDRVTdLnNwP6o0FZdeUK0RKH1A3iQINytHWqvtPpANBhPUnAlvvqtLUHrCj +IB0nhC4gkVYOwBS17L2iG60rSrKsmYVXb9tuG++WwiUvaOumZpvpWiZEeHIbwQek +/aMRiQIcBBABCAAGBQJKcbuCAAoJEOtc4ddehRH5qToQAJYhkTCs2oADJ0iOfDVW +O4SZDCeVQ+NHSmx0uU6j4SaN/+kdqg/kZnv1AtpY+j+KT64wLb4v3acrwmkgp75n +qryJQduCTpXwt6EMA6vWbi/iyrqokL77+5/e/AlNHw2xUvBtP00B/LT2G4V4iWNy +GRbE1ywFbGF84B3pzdWgeLkYrRAo4n+lTIZw7n8xuCYuMuQ99k0uAZTHwpGeUvMy +iFTu8fp4M4z3iuh70D13Oi1o+W+PLWoaNsUTeg3P/aq1iamZJSddZjv2MO6L++RO +doGzDhALnNqSS59nMRFLHvlA06aWuH/KnxLc3ALNV4imrc3rPRSy2w/w4w2lKucM +Rhy0OX0z0k3/5ONyEiYp6UNQpa1hRB427BzutLwhXM9xteM/SCXZuH8BCEtWVrM0 +JU5DNYR8VIE+dvU3kd3luiTd7S+7VdLaCosKhtBpB2irgYOg1H9DeWDvmPWQKBPQ +ots3vW3b2wozG1lo6Qoqk4zy5FtOkZ5ZIQrTST/iyCM3byZZlR4QXWOfrK5jR2tv +lYhIKA8StpWzYakgZeNoGQnbwqvE7w0PCmdCv8vYsNaKKntvyp/q5neWfajrHPtl +IdsyJ6o/LQ/mbkajRsyU018ho49lsSY7yUrQBnnRGSkuzqTpwAxjJqBheTIKgwLs +xVT/eM9xa41UXkjviDSwqLzhiQIcBBMBCAAGBQJKcYotAAoJEFh5eVc0QmhO7ZsP +/3XTQ97QItB2kZe8o0IlthbM5Nj9LXuyNFWmpgoBAjLcgk4h1JDfoNwQGyMPXp1W +oEI1h38zdKW/O7u2PG3n20h3cz7LjMnRXE5BfJLrgyBfbtmjq6Yhw2B5Zyn/vGJj ++iiMn2ee4MnKVQjFF24uzPGs88fsk9Q4beEYGn6befRGRzTL5j/BU6DN4cd3c8cx +9s0kOZN9b1BX23LGXJSX2zWQF1WE0nMUsRGVNWao7Vs6R2aApniiEWp7GgaRVchz +ghx9Ghlp9IPE/teM+mwv/YSpsLHHfSwr3VepyhKWkWW7ml7KgISMNficwLmSK3XB +nbVXTgR5HthFvBrAcSxltL3d5Tro3EjrJdPAYhy3nPvYSi7I4ZV5uh5Gha95vpM7 +aqTSgC4akPW01pjkESfQQnkkRB5DUJY7lA5AqSvcd/MypiwMPsgb75ROP3rkTmLd +y/Gw+fLAC/tNxuQnRsKuEACdzt1kALzwdWIy7PT1BM1ZsP/pP6Db04u4WKCnNhVS +axpaDgCrHWfv3fTMM1XFByd7PgV5sInu0cgkXU8mcmE88j02iluQ+a8kcPjHIqTW +orIdYdb8AkYMZoIp3HZCRT85MCRXsVBd9m/RJX+KAqljixP5Qy1RFbCIu6UEzL2G +uQf1Mflho/mEBl6nvxiWm7146R0QAPr0XSQn33TVZUciuQINBEpuufgBEADmh6GW ++vu8yiOZUfY6XzhONuo1ZNNxHCEOEGPzSI4swV+i9EMlX1sV4Z/7V8flb+tyaXAZ +1TxrqmPBI+i9M7EQsOnqEciHfQBZfNZwPE/lhQ/7/8tBtUnj0wWr9hj6tc0XvCay +8R1eNRHLzl6+qgW875Epx7JuwYFC8l78dsFj11U8gVoJNXVof2GqKXfwdrJhTV76 +TdD9mSZYqF2kb5zk+w7HqugTEkJ1ItZo6zv18GJeusaMRl8Ct9xO/j1yTTGJKMgM +2hyOzPi/CZl4I0eI3MAn7KkuNRhibgYx07Ty8GaTgLuzm58S20OOaIvv1NIodoHX +XBIjzLKIRIpUhzychLMQ3l5CtndCvdq3Ld+2rd8zVYtsUPhzKa9v8kn/oF/KTK7b +eGGRCZVnTDEHDRErIELtN9ESmkmwO1NgxzII8wPhxrhS23qkLQ/MuAnIoHQuF6TM +sWAO62XKcxtYL1qOgou5rIOPfcrrNP4rz/38XR9G4qeuLnBcdJdERLedhCXUdb4Y +iCHppOBKGWoulKJHmiE78c8GXyup+WVy1C2UdkLdWMQaObVDVqBwTNwYqOROfiTG +BDrg2MAbnN4fWVo/njkaPEJyI7evSsOIxddNclCfSWzTh1SP/74wMPLpwb2VFv76 +PdSPyXzralIaVNrVUsk6sPiXVkuXPxpdTGLzfwARAQABiQIfBBgBCAAJBQJKbrn4 +AhsMAAoJEDk1h9l9hlALCHQQAI+vglCmfPCxX6YphkPMoCSGm+14ZYF0Kl/wC2W6 +iB3VC6dE1lrtax5n9H6rh3MIRkcZygl7I4OJ6oD7/reuomdtl/2pviMzqMyqmGg2 +IlU+up6HSNU56p9c6S2I2wDsrRGYAu2X8k2P6Amhm0SdjkX0d+y9/qk+kcgm27le +R1LVvacEEmOFeNNO+/pl+6Tx+EAKXF9xYlSa0A/eWynxw1XBUnmO/ylL2dlrLxIe +vGmoF3hPbBPvmQir+aER0rKdpLC4a7ledytjuAjmTCC/jmE2xBifKERN3W//HVu6 +xvnRTS4LjVIS/dz8cGXrNlYqkje05NF33pEFGR3Pu0fDYxheF9wm2RIuBE8tpi69 +VnE/Cq/7bDMguR3iGJybeeqXQ7/QWBCqUuULz3IKisCA6EWbIzrqiubWQjTu27nE +a9hcbgLj1KffRBS4jTNh82R3v83TYCxgLQEpMQYgqPhDH9xKzeA2aJeBaZPvv9Co +seehcKaJW5ztyuRPKyZiJwEVPV/3LQxXXXen4CL32jp0RV87z3lTk0wMjsLFto9p +BPNliXslGY+D93gG5KncAE+qJ54/rac8AMyLEbcw0yn9dRrgzGdPPECXt17h+kfT +0UP6Iu86ZSf5gFpmJizNvq6m6mmMBcm/zGcgvM7EQ05gugWgkBUCnSfCBM44YT3g +3VAe +=JloC +-----END PGP PUBLIC KEY BLOCK----- diff --git a/man.spec b/man.spec new file mode 100644 index 0000000..23398ad --- /dev/null +++ b/man.spec @@ -0,0 +1,444 @@ +# +# spec file for package man +# +# Copyright (c) 2024 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%global _sysconfdir %{_sysconfdir} +%global _has_tmpfiled %(rpm -q -f %{_prefix}/lib/tmpfiles.d | grep -c filesystem) +#Compat macro for new _fillupdir macro introduced in Nov 2017 +%if ! %{defined _fillupdir} + %define _fillupdir %{_localstatedir}/adm/fillup-templates +%endif +%define add_optflags(a:f:t:p:w:W:d:g:O:A:C:D:E:H:i:M:n:P:U:u:l:s:X:B:I:L:b:V:m:x:c:S:E:o:v:) \ +%global optflags %{optflags} %{**} +%bcond_without sdtimer +Name: man +Version: 2.13.0 +Release: 0 +Summary: A Program for Displaying man Pages +License: GPL-2.0-or-later +Group: System/Base +URL: https://savannah.nongnu.org/projects/man-db +Source0: https://download.savannah.gnu.org/releases/man-db/man-db-%{version}.tar.xz +Source1: https://download.savannah.gnu.org/releases/man-db/man-db-%{version}.tar.xz.asc +Source2: https://savannah.nongnu.org/people/viewgpg.php?user_id=10653#/%{name}.keyring +Source3: sysconfig.cron-man +Source4: cron.daily.do_mandb +Source5: wrapper.c +Source6: man-rpmlintrc +Source7: man-db-create.service +Source8: manpath.csh +Source9: manpath.sh +Patch0: man-db-2.3.19deb4.0-groff.dif +# PATCH-FEATURE-OPENSUSE man-db-2.6.3-listall.dif -- If multiple matching pages are found show a list bnc#786679 +Patch5: man-db-2.6.3-listall.dif +# PATCH-FIX-SUSE Fixes build-compare bnc#971922 +Patch6: reproducible.patch +# PATCH-FIX-OPENSUSE man-db-2.9.4-no-chown.patch -- chown is not allowed as non-root +Patch7: man-db-2.9.4-no-chown.patch +# PATCH-FIX-SUSE collections of changes +Patch8: man-db-2.9.4.patch +# PATCH-FEATURE-OPENSUSE -- Add documentation about man0 section (header files) +Patch9: man-db-2.6.3-man0.dif +# PATCH-FEATURE-OPENSUSE -- Propose to read man pages online +Patch12: man-propose-online.patch +BuildRequires: automake +BuildRequires: flex +BuildRequires: gdbm-devel +BuildRequires: gettext-runtime +BuildRequires: gettext-tools +BuildRequires: groff +BuildRequires: less +BuildRequires: libalternatives-devel +BuildRequires: libpipeline-devel >= 1.5.0 +BuildRequires: lzip +BuildRequires: man-pages +BuildRequires: pkgconfig +BuildRequires: po4a +BuildRequires: zlib-devel +BuildRequires: zstd +BuildRequires: pkgconfig(systemd) +Conflicts: mandoc +Requires: glibc-locale-base +Suggests: glibc-locale +Requires: groff >= 1.18 +Requires: less +Requires(post): %fillup_prereq +Requires(pre): coreutils +Requires(pre): group(man) +Requires(pre): user(man) +Provides: man_db +%if 0%{?suse_version} < 1500 +Requires: cron +%endif + +%description +A program for displaying man pages on the screen or sending them to a +printer (using groff). + +%prep +%setup -q -n man-db-%{version} +%patch -P 0 -b .groff +%patch -P5 -b .listall +%patch -P6 -p1 -b .p6 +%patch -P7 -p1 -b .p7 +%patch -P8 -p1 -b .p8 +%patch -P9 -b .p9 +rm -f configure +%patch -P12 -p1 -b .p12 + +%build +%global optflags %{optflags} -funroll-loops -pipe -Wall + +gettextize --force --copy --no-changelog +SEC=(0 1 n l 8 3 2 5 4 9 6 7 + 1x 3x 4x 5x 6x 8x + 1bind 3bind 5bind 7bind 8bind + 1cn 8cn + 1m 1mh 5mh 8mh + 1netpbm 3netpbm 5netpbm + 0p 1p 3p 3posix + 1pgsql 3pgsql 5pgsql + 3C++ 8C++ + 3blt + 3curses 3ncurses 3form 3menu + 3db 3gdbm 3f 3gk 3paper + 3mm 5mm + 3perl 3pm 3pq + 3qt 3pub 3readline + 1ssl 3ssl 5ssl 7ssl + 3t 3tk 3tcl 3tclx 3tix + 7l 7nr + 8c + Cg g s m +) +SEC="${SEC[@]}" +for d in $(cat man/LINGUAS*) ; do + test -d %{_datadir}/locale/$d || continue + LINGUAS="${LINGUAS:+$LINGUAS }$d" +done +LIBS="-lalternatives" +export LINGUAS LIBS + +# Hack as otherwise +# BuildRequires: groff-full +# is required +mkdir bin +ln -sf /bin/true bin/refer +ln -sf /bin/true bin/w3m +PATH=$PATH:${PWD}/bin +export PATH + +# Create configure +aclocal -I ${PWD} -I ${PWD}/m4 -I ${PWD}/gl/m4 +autoconf -B ${PWD} -B ${PWD}/m4 -B ${PWD}/gl/m4 +automake --add-missing +find -name 'Makefile.*' | xargs \ + sed -ri -e '/^pkglibdir/{ s@^(pkglibdir[[:blank:]]+=[[:blank:]]+\$\(libdir\)).*@\1@p }' +# Configure +%add_optflags -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=500 +%configure \ +%if %{without sdtimer} + --with-systemdtmpfilesdir=no \ + --with-systemdsystemunitdir=no \ +%endif + --enable-cache-owner=man \ + --with-device=utf8 \ + --with-gnu-ld \ + --disable-rpath \ + --disable-automatic-create \ + --enable-automatic-update \ + --enable-mandirs=GNU \ + --disable-cats \ + --enable-threads=posix \ + --enable-mb-groff \ + --with-db=gdbm \ + --enable-nls \ + --with-config-file=%{_sysconfdir}/manpath.config \ + --with-sections="${SEC}" +%make_build nls=all LOCALE_FR_UTF8=fr_FR.UTF-8 +# Fix coding +for man in $(find man/ -type f -a -name '*.[0-9]'); do + pp="$(head -n 1 $man)" + case "$pp" in + \'\\\"*\ -\*-\ coding:\ *\ -\*-) + continue + ;; + \'\\\"*) + sed -ri "1{ s/('\\\\\".*)/\\1 -\*- coding: UTF-8 -\*-/ }" $man + ;; + *) + sed -ri "1 i\ + '\\\\\" -\*- coding: UTF-8 -\*-\ + " $man + esac +done +# +gcc $CFLAGS -I gl/lib/ -I include/ --include config.h \ + -D LOCALEDIR="\"%{_datarootdir}/locale\"" \ + -D LIBEXECDIR="\"%{_libexecdir}\"" -o wrapper %{SOURCE5} -L gl/lib/.libs/ -lgnu + +%check +if ! make check; then + cat src/tests/test-suite.log + exit 1 +fi + +%install +%if 0%{?suse_version} <= 1030 + export MKDIR_P="mkdir -p" +%endif +rm -rf %{buildroot}%{_localstatedir}/cache/man +%make_install nls=all LOCALE_FR_UTF8=fr_FR.UTF-8 +find %{buildroot} -type f -name "*.la" -delete -print +# Move manual +mkdir -p %{buildroot}%{_docdir} +mv %{buildroot}%{_datadir}/doc/man-db %{buildroot}%{_docdir}/man/ +# wrapper which drops roots privileges if root executes mandb +mv -vf %{buildroot}%{_bindir}/mandb %{buildroot}%{_libexecdir}/man-db/ +install -D -m 0755 wrapper %{buildroot}%{_libexecdir}/man-db/ +ln -sf %{_libexecdir}/man-db/wrapper %{buildroot}%{_bindir}/mandb +# Fix man pages +pushd %{buildroot}%{_mandir}/ +rm -rf *.ascii/ +for d in *.UTF-8 ; do + find -name '*.[1-9nlop]' | xargs gzip -9f +done +for d in $(find -name manpath.5%{?ext_man} -printf '%%h ') ; do + ln -sf manpath.5%{?ext_man} $d/manpath.config.5%{?ext_man} +done +# remove japanese pages, as they are in man-pages-ja +# (need to cross verify at some point that they are up to date there) +rm -rf ja +popd + +install -m 644 src/man_db.conf %{buildroot}%{_sysconfdir}/manpath.config +sh ./mk_catdirs %{buildroot} +mkdir -p %{buildroot}%{_datadir}/groff/site-tmac +install -m 0644 groff/tmac.andb %{buildroot}%{_datadir}/groff/site-tmac/ +install -m 0644 groff/tmac.andocdb %{buildroot}%{_datadir}/groff/site-tmac/ +mkdir -p %{buildroot}%{_fillupdir} +mkdir -p %{buildroot}%{_unitdir}/ +%if 0%{?suse_version} < 1500 + mkdir -p %{buildroot}%{_sysconfdir}/cron.daily +%endif + install -m 0644 %{SOURCE3} %{buildroot}%{_fillupdir} +%if 0%{?suse_version} < 1500 + install -m 0744 %{SOURCE4} %{buildroot}%{_sysconfdir}/cron.daily/suse-do_mandb +%else + install -m 0744 %{SOURCE4} %{buildroot}/%{_libexecdir}/man-db/do_mandb +%endif +%if %{with sdtimer} + install -m 0644 %{SOURCE7} %{buildroot}%{_unitdir}/ +%endif + +mkdir -p %{buildroot}%{_prefix}/etc/profile.d +install -m 644 %{SOURCE8} %{buildroot}%{_prefix}/etc/profile.d/ +install -m 644 %{SOURCE9} %{buildroot}%{_prefix}/etc/profile.d/ + +%find_lang man-db --all-name --with-man + +%global trigger_functions %{expand: +-- Check if rpm.execute() as function call is given +if type(rpm.execute) == "function" then + execute = rpm.execute +else + function execute(path, ...) + local pid = posix.fork() + if not pid then + error(path .. ": fork failed: " .. posix.errno() .. "\n") + elseif pid == 0 then + assert(posix.exec(path, ...)) + else + posix.wait(pid) + end + end +end +-- +} + +%if 0%{?suse_version} >= 1699 +%transfiletriggerin -p -- %{_mandir} +%else +%filetriggerin -p -- %{_mandir} +%endif +%trigger_functions +stat = posix.stat("%{_localstatedir}/cache/man/index.db") +if stat then + execute("%{_bindir}/mandb", "--quiet") +else + domkdir = false + stat = posix.stat("%{_localstatedir}/cache/man") + if not stat then + domkdir = true + elseif not (stat.type == "directory") then + domkdir = true + os.remove("%{_localstatedir}/cache/man") + end + if domkdir then + posix.mkdir("%{_localstatedir}/cache/man") + posix.chown("%{_localstatedir}/cache/man", "man", "man") + end + execute("%{_bindir}/mandb", "--quiet", "--create") +end + +%if 0%{?suse_version} >= 1699 +%transfiletriggerpostun -p -- %{_mandir} +%else +%filetriggerpostun -p -- %{_mandir} +%endif +%trigger_functions +stat = posix.stat("%{_localstatedir}/cache/man/index.db") +if stat then + execute("%{_bindir}/mandb", "--quiet") +else + domkdir = false + stat = posix.stat("%{_localstatedir}/cache/man") + if not stat then + domkdir = true + elseif not (stat.type == "directory") then + domkdir = true + os.remove("%{_localstatedir}/cache/man") + end + if domkdir then + posix.mkdir("%{_localstatedir}/cache/man") + posix.chown("%{_localstatedir}/cache/man", "man", "man") + end + execute("%{_bindir}/mandb", "--quiet", "--create") +end + +%pre +test -d var/catman/ && rm -rf var/catman/ || true +%if %{with sdtimer} +%if 0%{?suse_version} >= 1500 +%service_add_pre man-db-create.service man-db.service man-db.timer +%else +%service_add_pre man-db-create.service +%endif +%endif +if test "$1" -gt 0 -a -h %{_sysconfdir}/alternatives/man +then + for ua in man apropos whatis man.1%{ext_man} apropos.1%{ext_man} whatis.1%{ext_man} + do + rm -f %{_sysconfdir}/alternatives/$ua + case "$ua" in + *.1*) + rm -f %{_mandir}/man1/$ua + ;; + *) + rm -f %{_bindir}/$ua + ;; + esac + done +fi +# With fallback for systemdless containers +if test ! -d %{_localstatedir}/cache/man +then + # Simply for systemdless containers + umask 022 + rm -f %{_localstatedir}/cache/man + mkdir -p %{_localstatedir}/cache/man + chown -R man:man %{_localstatedir}/cache/man +fi + +%post +%{fillup_only -an cron} +/sbin/ldconfig +%if %{with sdtimer} +%service_add_post man-db-create.service +%if 0%{?suse_version} >= 1500 +%service_add_post man-db.service man-db.timer +%endif +%endif + +%preun +%if %{with sdtimer} +%service_del_preun man-db-create.service +%if 0%{?suse_version} >= 1500 +%service_del_preun man-db.service man-db.timer +%endif +%endif + +%postun +/sbin/ldconfig +%if %{with sdtimer} +%service_del_postun man-db-create.service +%if 0%{?suse_version} >= 1500 +%service_del_postun man-db.service man-db.timer +%endif +%endif + +%posttrans +if test ! -s %{_localstatedir}/cache/man/index.db +then + mandb --quiet --create || : +fi + +%files -f man-db.lang +%license COPYING +%doc ChangeLog +%doc %{_docdir}/man/man-db-manual* +%config %{_sysconfdir}/manpath.config +%if 0%{?suse_version} < 1500 +%attr(0744,root,root) %{_sysconfdir}/cron.daily/suse-do_mandb +%endif +%dir %{_prefix}/etc/profile.d/ +%{_prefix}/etc/profile.d/manpath.* +%{_bindir}/apropos +%{_bindir}/catman +%{_bindir}/lexgrog +%{_bindir}/man +%{_bindir}/mandb +%{_bindir}/manpath +%{_bindir}/man-recode +%{_bindir}/whatis +%dir %attr(0755,root,root) %{_libexecdir}/man-db +%attr(0755,root,root) %{_libexecdir}/man-db/mandb +%attr(0755,root,root) %{_libexecdir}/man-db/manconv +%attr(0755,root,root) %{_libexecdir}/man-db/globbing +%attr(0755,root,root) %{_libexecdir}/man-db/wrapper +%if 0%{?suse_version} >= 1500 +%attr(0755,root,root) %{_libexecdir}/man-db/do_mandb +%endif +%{_sbindir}/accessdb +%{_libdir}/libman*.so +%{_libexecdir}/man-db/zsoelim +%if 0%{?_has_tmpfiled} == 0 +%dir %{_prefix}/lib/tmpfiles.d +%endif +%{_prefix}/lib/tmpfiles.d/man-db.conf +%if %{with sdtimer} +%{_unitdir}/man-db-create.service +%if 0%{?suse_version} >= 1500 +%{_unitdir}/man-db.service +%{_unitdir}/man-db.timer +%endif +%endif +%dir %{_datadir}/groff/site-tmac +%{_datadir}/groff/site-tmac/tmac.andb +%{_datadir}/groff/site-tmac/tmac.andocdb +%{_mandir}/man1/*.1%{?ext_man} +%{_mandir}/man5/*.5%{?ext_man} +%{_mandir}/man8/*.8%{?ext_man} +%dir %{_mandir}/id +%dir %{_mandir}/sr +%dir %{_mandir}/ro +%dir %{_mandir}/tr +%{_fillupdir}/sysconfig.cron-man +%defattr(-,man,man) +%ghost %{_localstatedir}/cache/man + +%changelog diff --git a/manpath.csh b/manpath.csh new file mode 100644 index 0000000..3f05b25 --- /dev/null +++ b/manpath.csh @@ -0,0 +1,16 @@ +# +# Current manpath +# +if (-x /usr/bin/manpath && ! ${?MANPATHISSET}) then + set _tmpman=`(unsetenv MANPATH; /usr/bin/manpath -q)` + if ( ${?MANPATH} ) then + if (${MANPATH} != ${_tmpman}) then + setenv MANPATH "${MANPATH}:${_tmpman}" + else + setenv MANPATH "${_tmpman}" + endif + else + setenv MANPATH "${_tmpman}" + endif + setenv MANPATHISSET yes +endif diff --git a/manpath.sh b/manpath.sh new file mode 100644 index 0000000..f6c4d0e --- /dev/null +++ b/manpath.sh @@ -0,0 +1,17 @@ +# +# Current manpath +# +if test -x /usr/bin/manpath -a -z "$MANPATHISSET" +then + _tmpenv="$MANPATH" + unset MANPATH + _tmpman="$(/usr/bin/manpath -q)" + if test -n "$_tmpenv" -a "$_tmpenv" != ${_tmpman} ; then + MANPATH="${_tmpenv}:${_tmpman}" + else + MANPATH="${_tmpman}" + fi + unset _tmpenv _tmpman + MANPATHISSET=yes + export MANPATH MANPATHISSET +fi diff --git a/reproducible.patch b/reproducible.patch new file mode 100644 index 0000000..4e45a73 --- /dev/null +++ b/reproducible.patch @@ -0,0 +1,16 @@ +Index: man-db-2.7.1/manual/man_db.me +=================================================================== +--- + man-db-2.10.0/manual/man_db.me | 1 + + 1 file changed, 1 insertion(+) + +--- man-db-2.10.0/manual/man_db.me ++++ man-db-2.10.0/manual/man_db.me 2022-08-17 13:19:13.782077593 +0000 +@@ -8,6 +8,7 @@ + .\" Thu Sep 21 19:22:47 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + .\" + .so version ++.ds td - + .ds U \s-1\fBUNIX\fR\s+1 + .ds N \s-1\fBNROFF\fR\s+1 + .ds T \s-1\fBTROFF\fR\s+1 diff --git a/sysconfig.cron-man b/sysconfig.cron-man new file mode 100644 index 0000000..fa15c55 --- /dev/null +++ b/sysconfig.cron-man @@ -0,0 +1,8 @@ +## Path: System/Cron/Man +## Description: cron configuration for man utility +## Type: yesno +## Default: yes +# +# Should mandb and whatis be recreated by cron.daily ("yes" or "no") +# +REINIT_MANDB=yes diff --git a/wrapper.c b/wrapper.c new file mode 100644 index 0000000..1736265 --- /dev/null +++ b/wrapper.c @@ -0,0 +1,175 @@ +/* + * wrapper.c - wrapper program around man and mandb + * + * Copyright (C) 2000 Fabrizio Polacco + * Copyright (C) 2001, 2002 Colin Watson. + * + * This file is part of man-db. + * + * man-db is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * man-db is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with man-db; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif /* HAVE_CONFIG_H */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "dirname.h" + +#include "gettext.h" +#include +#define _(Text) gettext (Text) + +#include "manconfig.h" + +#ifndef LIBEXECDIR +# define LIBEXECDIR "/usr/lib" +#endif + +/* this list is used to authenticate the program running. + * it is fixed at compile time to avoid a full class of + * dangers ... + */ +static struct { + const char *prog; + const char *run; + const char *user; +} *wlp, wrapped_list[] = +{ /* prog run user */ +#ifdef DEBUG + { "_man", "src/man", "man" }, + { "_mandb", "src/mandb", "man" }, +#endif + { "man", LIBEXECDIR "/man-db/man", "man" }, + { "mandb", LIBEXECDIR "/man-db/mandb", "man" }, + { 0, 0, 0, }}; + +char *program_name; + +int main (int argc, char **argv, char *envp[]) +{ + extern char **environ; + uid_t ruid, euid; + gid_t rgid; + + argc = argc; /* not used */ + + /* We don't warn about this setlocale() call failing, as the program + * we call will do that. + */ + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + bindtextdomain (PACKAGE "-gnulib", LOCALEDIR); + textdomain (PACKAGE); + + /* this wrapper can be run as "man" or as "mandb" */ + program_name = base_name (argv[0]); + + ruid = getuid (); + euid = geteuid(); + rgid = getgid (); + + /* The various preprocessors should be in standard path */ + environ = envp; + setenv("PATH", "/bin:/usr/bin", 1); + envp = environ; + +#ifdef DEBUG + printf ("%s:\n", program_name); +#endif + + for (wlp = wrapped_list; wlp->prog && strcmp (program_name, wlp->prog); ++wlp) + /* __asm__ __volatile__("": : :"memory") */; + if (!wlp->prog) { + fprintf (stderr, _("Don't know which program should I run being >%s<\n"), + program_name); + return -ENOENT; + } +#ifdef DEBUG + printf ("%s\n", wlp->run); +#endif + if (strcmp("man", wlp->prog) == 0) + /* Short cut: do not map man command to an other user */ + goto man; + + if (ruid == 0 || euid == 0) { + static char *dummy_environ[] = { NULL }; + extern char **environ; + struct passwd *pwd; + char *cwd; + + pwd = getpwnam (wlp->user); + if (!pwd) { + fprintf (stderr, _("%s: Failed su to user %s\n"), wlp->prog, wlp->user); + return -EACCES; + } + if (ruid == 0) { + ruid = pwd->pw_uid; + rgid = pwd->pw_gid; + } else { +#ifndef MAN_CATS + /* No permissions required to create files + * under the sub directories of /var/cache/man */ + pwd->pw_uid = ruid; + pwd->pw_gid = rgid; +#endif + } + if ((cwd = get_current_dir_name()) == NULL) { + fprintf (stderr, _("%s: Failed su to user %s\n"), wlp->prog, wlp->user); + return -EACCES; + } + if (setregid (rgid, pwd->pw_gid)) { + fprintf (stderr, _("%s: Failed su to user %s\n"), wlp->prog, wlp->user); + return -EACCES; + } + if (initgroups (wlp->user, rgid)) { + fprintf (stderr, _("%s: Failed su to user %s\n"), wlp->prog, wlp->user); + return -EACCES; + } + if (setreuid (ruid, pwd->pw_uid)) { + fprintf (stderr, _("%s: Failed su to user %s\n"), wlp->prog, wlp->user); + return -EACCES; + } + if (access(cwd, X_OK) < 0 && chdir(pwd->pw_dir)) { + fprintf (stderr, _("%s: Failed su to user %s\n"), wlp->prog, wlp->user); + return -EACCES; + } + free(cwd); + + cwd = getenv("TERM"); + environ = dummy_environ; + setenv("HOME", pwd->pw_dir, 1); + setenv("PATH", "/bin:/usr/bin", 1); + setenv("USER", pwd->pw_name, 1); + setenv("LOGNAME", pwd->pw_name, 1); + if (cwd) + setenv("PWD", cwd, 1); + envp = environ; + } +man: + execve (wlp->run, argv, envp); + perror ("execve"); + return -errno; +} From 59aabc4876bfdb032d21a70bfb1b82ef7386903fb7cc13c8ed8be96050281193 Mon Sep 17 00:00:00 2001 From: "Dr. Werner Fink" Date: Mon, 11 Nov 2024 10:46:06 +0000 Subject: [PATCH 2/3] . OBS-URL: https://build.opensuse.org/package/show/Base:System/man?expand=0&rev=158 --- man-db-2.13.0-no_abort.patch | 60 +++++++++++++ man-db-2.7.1-zio.dif | 166 ++++++++++++++++++++++++----------- man-db-2.9.4.patch | 2 +- man.changes | 8 ++ man.spec | 9 ++ 5 files changed, 192 insertions(+), 53 deletions(-) create mode 100644 man-db-2.13.0-no_abort.patch diff --git a/man-db-2.13.0-no_abort.patch b/man-db-2.13.0-no_abort.patch new file mode 100644 index 0000000..8750cd6 --- /dev/null +++ b/man-db-2.13.0-no_abort.patch @@ -0,0 +1,60 @@ +Avoid abort() in regain_effective_privs() if mandb is called by root +that is always initialize saved_uid and saved_gid! + +--- gl/lib/idpriv-droptemp.c 2024-08-29 13:17:12.000000000 +0200 ++++ gl/lib/idpriv-droptemp.c 2024-11-11 09:55:45.539212073 +0100 +@@ -31,19 +31,24 @@ + static gid_t saved_gid = -1; + #endif + +-int +-idpriv_temp_drop (void) ++void ++idpriv_initial (void) + { +-#if HAVE_GETEUID && HAVE_GETEGID && (HAVE_SETRESUID || HAVE_SETREUID) && (HAVE_SETRESGID || HAVE_SETREGID) +- uid_t uid = getuid (); +- gid_t gid = getgid (); +- + /* Find out about the privileged uid and gid at the first call. */ + if (saved_uid == -1) + saved_uid = geteuid (); + if (saved_gid == -1) + saved_gid = getegid (); ++} ++ ++int ++idpriv_temp_drop (void) ++{ ++#if HAVE_GETEUID && HAVE_GETEGID && (HAVE_SETRESUID || HAVE_SETREUID) && (HAVE_SETRESGID || HAVE_SETREGID) ++ uid_t uid = getuid (); ++ gid_t gid = getgid (); + ++ idpriv_initial (); + /* Drop the gid privilege first, because in some cases the gid privilege + cannot be dropped after the uid privilege has been dropped. */ + +--- gl/lib/idpriv.h 2024-08-29 13:17:12.000000000 +0200 ++++ gl/lib/idpriv.h 2024-11-11 09:50:35.047999910 +0100 +@@ -95,6 +95,9 @@ + + /* For approach 3. */ + ++/* Initialize internal variable saved_uid as well as saved_gid */ ++extern void idpriv_initial (void); ++ + /* Drop the uid and gid privileges of the current process in a way that allows + them to be restored later. + Return 0 if successful, or -1 with errno set upon failure. The recommended +--- lib/security.c 2024-11-11 09:10:13.044830286 +0100 ++++ lib/security.c 2024-11-11 09:51:16.688162468 +0100 +@@ -138,7 +138,8 @@ + gripe_set_euid (); + uid = ruid; + gid = rgid; +- } ++ } else ++ idpriv_initial (); + + priv_drop_count++; + #endif /* MAN_OWNER */ diff --git a/man-db-2.7.1-zio.dif b/man-db-2.7.1-zio.dif index 57e6754..7007f82 100644 --- a/man-db-2.7.1-zio.dif +++ b/man-db-2.7.1-zio.dif @@ -1,11 +1,11 @@ --- - config.h.in | 3 ++ - configure.ac | 52 +++++++++++++++++++++++++++++++++++++++++ - src/decompress.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- - 3 files changed, 123 insertions(+), 1 deletion(-) + config.h.in | 3 + + configure.ac | 52 +++++++++++++++++++++++++++++++++ + src/decompress.c | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- + 3 files changed, 138 insertions(+), 3 deletions(-) --- config.h.in -+++ config.h.in 2024-10-18 12:05:43.927063826 +0000 ++++ config.h.in 2024-11-11 10:43:01.369880933 +0000 @@ -1148,6 +1148,9 @@ /* Define to 1 if you have the `z' library (-lz). */ #undef HAVE_LIBZ @@ -17,7 +17,7 @@ #undef HAVE_LIB_BCRYPT --- configure.ac -+++ configure.ac 2024-10-18 12:05:43.927063826 +0000 ++++ configure.ac 2024-11-11 10:43:01.369880933 +0000 @@ -35,6 +35,18 @@ MAN_ARG_DEVICE MAN_ARG_DB MAN_ARG_CONFIG_FILE @@ -85,7 +85,7 @@ # Check for various header files and associated libraries. --- src/decompress.c -+++ src/decompress.c 2024-10-18 12:11:37.516631374 +0000 ++++ src/decompress.c 2024-11-11 10:44:24.036386441 +0000 @@ -40,12 +40,17 @@ #include "pipeline.h" @@ -104,21 +104,77 @@ #include "manconfig.h" #include "compression.h" -@@ -189,6 +194,32 @@ static decompress *decompress_try_zlib ( +@@ -146,7 +151,11 @@ static void decompress_zlib (void *data + + static decompress *decompress_try_zlib (const char *filename) + { ++#ifdef HAVE_ZIO ++ FILE *file; ++#else + gzFile zlibfile; ++#endif + /* We only ever call this from the parent process (and don't + * currently use threads), and this lets us skip per-file memory + * allocation. +@@ -154,18 +163,32 @@ static decompress *decompress_try_zlib ( + static char buffer[MAX_INPROCESS]; + int len = 0; + ++#ifdef HAVE_ZIO ++ file = fzopen(filename, "r"); ++ if (!file) ++ return NULL; ++#else + zlibfile = gzopen (filename, "r"); + if (!zlibfile) + return NULL; ++#endif + + while (len < MAX_INPROCESS) { + /* Read one more byte than we're prepared to return, in + * order to detect EOF at the right position. The "len >= + * MAX_INPROCESS" check below catches the boundary case. + */ ++#ifdef HAVE_ZIO ++ int r = fread(buffer + len, sizeof(char), MAX_INPROCESS - len, file); ++#else + int r = gzread (zlibfile, buffer + len, MAX_INPROCESS - len); ++#endif + if (r < 0) { ++#ifdef HAVE_ZIO ++ fclose(file); ++#else + gzclose (zlibfile); ++#endif + return NULL; + } else if (r == 0) + break; +@@ -173,7 +196,11 @@ static decompress *decompress_try_zlib ( + len += r; + } + ++#ifdef HAVE_ZIO ++ fclose(file); ++#else + gzclose (zlibfile); ++#endif + if (len >= MAX_INPROCESS) + return NULL; + /* Copy input data so that we don't have potential data corruption +@@ -189,33 +216,86 @@ static decompress *decompress_try_zlib ( # define OPEN_FLAGS_UNUSED MAYBE_UNUSED #endif /* HAVE_LIBZ */ +#ifdef HAVE_ZIO -+ +static void decompress_zio (void *data) +{ + const char *what = (const char*)data; + FILE *file; -+ ++ + file = fdzopen(dup (fileno (stdin)), "r", what); + if (!file) + return; -+ ++ + for (;;) { + char buffer[4096]; + int r = fread(buffer, sizeof(char), sizeof(buffer), file); @@ -127,68 +183,74 @@ + if (fwrite (buffer, 1, (size_t) r, stdout) < (size_t) r) + break; + } -+ ++ + fclose(file); + return; +} -+ +#endif /* HAVE_ZIO */ + decompress *decompress_open (const char *filename, int flags OPEN_FLAGS_UNUSED) { pipecmd *cmd; -@@ -203,6 +234,38 @@ decompress *decompress_open (const char + pipeline *p; + struct stat st; + #ifdef HAVE_LIBZ ++# ifdef HAVE_ZIO ++ char *ext; ++# else + size_t filename_len; ++# endif + #endif /* HAVE_LIBZ */ +- char *ext; + struct compression *comp; + if (stat (filename, &st) < 0 || S_ISDIR (st.st_mode)) return NULL; -+#ifdef HAVE_ZIO + #ifdef HAVE_LIBZ ++# ifdef HAVE_ZIO + ext = strrchr (filename, '.'); -+ if (ext) { -+ const char *opt; ++ if (ext && ( ++ STREQ (ext, ".gz") || ++ STREQ (ext, ".z") || ++ STREQ (ext, ".bz2") || ++ STREQ (ext, ".xz") || ++ STREQ (ext, ".lzma") || ++ STREQ (ext, ".Z") ++ )) { ++# else + filename_len = strlen (filename); + if (filename_len > 3 && STREQ (filename + filename_len - 3, ".gz")) { ++# endif + if (flags & DECOMPRESS_ALLOW_INPROCESS) { + decompress *d = decompress_try_zlib (filename); + if (d) + return d; + } +- ++# ifdef HAVE_ZIO ++ static char opt[2] = {'\0','\0'}; + char *name = NULL; + -+ if (STREQ (ext, ".gz")) -+ opt = "g"; -+ else if (STREQ (ext, ".z")) -+ opt = "z"; -+ else if (STREQ (ext, ".bz2")) -+ opt = "b"; -+ else if (STREQ (ext, ".xz")) -+ opt = "x"; -+ else if (STREQ (ext, ".lzma")) -+ opt = "l"; -+ else if (STREQ (ext, ".Z")) -+ opt = "Z"; -+ else -+ goto nozio; ++ opt[0] = ext[1]; + + /* informational only; no shell quoting concerns */ + name = appendstr (NULL, "libzio < ", filename, (void *) 0); + cmd = pipecmd_new_function (name, &decompress_zio, NULL, + (void *)opt); -+ pipecmd_pre_exec (cmd, sandbox_load, sandbox_free, sandbox); -+ p = pipeline_new_commands (cmd, (void *) 0); -+ free (name); -+ goto got_pipeline; -+ } -+#endif /* HAVE_ZIO */ -+ - #ifdef HAVE_LIBZ - filename_len = strlen (filename); - if (filename_len > 3 && STREQ (filename + filename_len - 3, ".gz")) { -@@ -220,7 +283,11 @@ decompress *decompress_open (const char ++# else + cmd = pipecmd_new_function ("zcat", &decompress_zlib, NULL, + NULL); ++# endif + pipecmd_pre_exec (cmd, sandbox_load, sandbox_free, sandbox); + p = pipeline_new_commands (cmd, nullptr); ++# ifdef HAVE_ZIO ++ free (name); ++# endif + goto got_pipeline; } #endif /* HAVE_LIBZ */ - -+#ifdef HAVE_ZIO -+nozio: -+#else - ext = strrchr (filename, '.'); -+#endif /* HAVE_LIBZ */ - if (ext) { - ++ext; - -@@ -313,7 +380,7 @@ void decompress_inprocess_replace (decom +@@ -313,7 +393,7 @@ void decompress_inprocess_replace (decom void decompress_start (decompress *d) { diff --git a/man-db-2.9.4.patch b/man-db-2.9.4.patch index 7f1f6ce..214019a 100644 --- a/man-db-2.9.4.patch +++ b/man-db-2.9.4.patch @@ -63,7 +63,7 @@ diff --git a/lib/security.c b/lib/security.c #endif /* MAN_OWNER */ void init_security (void) -@@ -165,6 +170,31 @@ void regain_effective_privs (void) +@@ -166,6 +171,31 @@ void regain_effective_privs (void) uid = euid; gid = egid; } diff --git a/man.changes b/man.changes index aa9972b..423df5d 100644 --- a/man.changes +++ b/man.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Mon Nov 11 10:37:45 UTC 2024 - Dr. Werner Fink + +- Readd patch man-db-2.7.1-zio.dif + * Use also in-memory decompression +- Add patch man-db-2.13.0-no_abort.patch + * Avoid abort of mandb due switching to user man if executed by root + ------------------------------------------------------------------- Fri Nov 8 13:58:23 UTC 2024 - Fabian Vogt diff --git a/man.spec b/man.spec index 23398ad..ee85cc6 100644 --- a/man.spec +++ b/man.spec @@ -43,6 +43,10 @@ Source7: man-db-create.service Source8: manpath.csh Source9: manpath.sh Patch0: man-db-2.3.19deb4.0-groff.dif +# PATCH-FIX-SUSE Fix a crash if mandb is directly executed by root +Patch3: man-db-2.13.0-no_abort.patch +# PATCH-FEATURE-OPENSUSE man-db-2.7.1-zio.dif -- Allow using libzio for decompression +Patch4: man-db-2.7.1-zio.dif # PATCH-FEATURE-OPENSUSE man-db-2.6.3-listall.dif -- If multiple matching pages are found show a list bnc#786679 Patch5: man-db-2.6.3-listall.dif # PATCH-FIX-SUSE Fixes build-compare bnc#971922 @@ -92,6 +96,8 @@ printer (using groff). %prep %setup -q -n man-db-%{version} %patch -P 0 -b .groff +%patch -P3 -b .seteuid +%patch -P4 -b .zio %patch -P5 -b .listall %patch -P6 -p1 -b .p6 %patch -P7 -p1 -b .p7 @@ -157,6 +163,7 @@ find -name 'Makefile.*' | xargs \ %endif --enable-cache-owner=man \ --with-device=utf8 \ + --with-zio \ --with-gnu-ld \ --disable-rpath \ --disable-automatic-create \ @@ -355,7 +362,9 @@ then fi %post +%if 0%{?suse_version} < 1500 %{fillup_only -an cron} +%endif /sbin/ldconfig %if %{with sdtimer} %service_add_post man-db-create.service From a2ceae757866aad047726c0dcaa86b20a64c19265fda2788bd8afc7197b7f534 Mon Sep 17 00:00:00 2001 From: "Dr. Werner Fink" Date: Mon, 11 Nov 2024 11:38:14 +0000 Subject: [PATCH 3/3] . OBS-URL: https://build.opensuse.org/package/show/Base:System/man?expand=0&rev=159 --- man.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/man.spec b/man.spec index ee85cc6..f340203 100644 --- a/man.spec +++ b/man.spec @@ -68,6 +68,7 @@ BuildRequires: groff BuildRequires: less BuildRequires: libalternatives-devel BuildRequires: libpipeline-devel >= 1.5.0 +BuildRequires: libzio-devel BuildRequires: lzip BuildRequires: man-pages BuildRequires: pkgconfig