SHA256
1
0
forked from pool/man
OBS User unknown 2008-01-30 17:47:16 +00:00 committed by Git OBS Bridge
parent 4d2dfa5863
commit 5d097a38b0
4 changed files with 139 additions and 48 deletions

View File

@ -36,7 +36,7 @@ if test "$REINIT_MANDB" = yes -o ! -s /var/cache/man/index.db ; then
if test -x /usr/bin/mandb ; then
test -x /usr/bin/safe-rm -a -e /var/cache/man/index.bt && \
/usr/bin/safe-rm /var/cache/man/index.bt
/usr/bin/mandb -q -s 2> /dev/null || {
nice -n 5 ionice -c 3 /usr/bin/mandb -q -s 2> /dev/null || {
echo There seem to be trouble with mandb.
echo
echo please run /usr/bin/mandb an check the output...

View File

@ -52,7 +52,7 @@
# This is not done automatically, since the .po files are stored
# in revision control.
--- configure.ac
+++ configure.ac 2007-12-10 15:33:22.410172000 +0100
+++ configure.ac 2008-01-29 19:07:22.794596510 +0100
@@ -10,17 +10,30 @@ AC_CONFIG_HEADER(config.h)
AC_CANONICAL_HOST
AC_ARG_PROGRAM
@ -200,7 +200,7 @@
#endif /* HAVE_COMPRESS */
--- include/manconfig.h.in
+++ include/manconfig.h.in 2007-12-11 15:32:18.037124000 +0100
+++ include/manconfig.h.in 2008-01-30 11:56:48.181631087 +0100
@@ -73,7 +73,7 @@
#undef MAN_DB_CREATES
@ -261,10 +261,12 @@
#define NOT_FOUND 16 /* No action was taken */
/* System or user catpaths? Allow bitwise disjunctions of these. */
#define SYSTEM_CAT 1
#define USER_CAT 2
+#define FILE_CAT 4
+#define WHATIS_CAT 8
-#define SYSTEM_CAT 1
-#define USER_CAT 2
+#define SYSTEM_CATP 1
+#define USER_CATP 2
+#define FILE_CATP 4
+#define WHATIS_CATP 8
/* string macros */
#define STREQ(a,b) (strcmp(a,b) == 0)
@ -468,6 +470,17 @@
$(INSTALL_PROGRAM) manpath $(DESTDIR)$(bindir)/$(manpath)
$(INSTALL_PROGRAM) catman $(DESTDIR)$(bindir)/$(catman)
$(INSTALL_PROGRAM) whatis $(DESTDIR)$(bindir)/$(whatis)
--- src/catman.c
+++ src/catman.c 2008-01-30 12:02:20.699895492 +0100
@@ -494,7 +494,7 @@ int main (int argc, char *argv[])
char *catpath;
size_t len;
- catpath = get_catpath (*mp, SYSTEM_CAT | USER_CAT);
+ catpath = get_catpath (*mp, SYSTEM_CATP|USER_CATP);
if (catpath) {
if (is_directory (catpath) != 1) {
--- src/check_mandirs.c
+++ src/check_mandirs.c 2007-12-10 13:15:48.608604000 +0100
@@ -391,10 +391,10 @@ static short testmandirs (const char *pa
@ -782,7 +795,7 @@
if (p_lg->type)
BEGIN (CAT_FILE);
--- src/man.c
+++ src/man.c 2007-12-11 17:18:15.773649394 +0100
+++ src/man.c 2008-01-30 11:59:52.020999180 +0100
@@ -98,6 +98,7 @@ static char *cwd;
#include <utime.h>
#include <sys/types.h>
@ -1094,7 +1107,7 @@
char *fmt_prog;
pipeline *p = pipeline_new ();
command *cmd;
@@ -1259,7 +1306,8 @@ static pipeline *make_roff_command (cons
@@ -1259,13 +1306,13 @@ static pipeline *make_roff_command (cons
dir = dir; /* not used unless looking for formatters in catdir */
#endif
@ -1104,7 +1117,14 @@
#ifdef ALT_EXT_FORMAT
/* Check both external formatter locations */
@@ -1318,7 +1366,10 @@ static pipeline *make_roff_command (cons
if (dir) {
- char *catpath = get_catpath
- (dir, global_manpath ? SYSTEM_CAT : USER_CAT);
+ char *catpath = get_catpath (dir, global_manpath ? SYSTEM_CATP : USER_CATP);
/* If we have an alternate catpath */
if (catpath) {
@@ -1318,7 +1365,10 @@ static pipeline *make_roff_command (cons
#define STRC(s, otherwise) ((s) ? (s) : (otherwise))
@ -1116,7 +1136,7 @@
source_encoding = get_source_encoding (lang);
debug ("page_encoding = %s\n", page_encoding);
debug ("source_encoding = %s\n", source_encoding);
@@ -1632,6 +1683,18 @@ static void setenv_less (const char *tit
@@ -1632,6 +1682,18 @@ static void setenv_less (const char *tit
free (less_opts);
}
@ -1135,7 +1155,7 @@
/* Return pipeline to display file. NULL means stdin.
*
* TODO: htmlout case is pretty weird now. I'd like the intelligence to be
@@ -1644,6 +1707,9 @@ static pipeline *make_display_command (c
@@ -1644,6 +1706,9 @@ static pipeline *make_display_command (c
setenv_less (title);
@ -1145,7 +1165,7 @@
if (file) {
if (ascii) {
p = pipeline_new ();
@@ -1686,7 +1752,7 @@ static pipeline *make_display_command (c
@@ -1686,7 +1751,7 @@ static pipeline *make_display_command (c
return p;
}
@ -1154,7 +1174,7 @@
/* return a (malloced) temporary name in cat_file's directory */
static char *tmp_cat_filename (const char *cat_file)
{
@@ -1789,8 +1855,6 @@ static int commit_tmp_cat (const char *c
@@ -1789,8 +1854,6 @@ static int commit_tmp_cat (const char *c
return status;
}
@ -1163,7 +1183,7 @@
/* Return pipeline to write formatted manual page to for saving as cat file. */
static pipeline *open_cat_stream (const char *cat_file)
{
@@ -1864,6 +1928,7 @@ static int close_cat_stream (pipeline *c
@@ -1864,6 +1927,7 @@ static int close_cat_stream (pipeline *c
free (tmp_cat_file);
return status;
}
@ -1171,7 +1191,7 @@
/* TODO: This should all be refactored after work on the decompression
* library is complete.
@@ -1876,6 +1941,7 @@ void discard_stderr (pipeline *p)
@@ -1876,6 +1940,7 @@ void discard_stderr (pipeline *p)
p->commands[i]->discard_err = 1;
}
@ -1179,7 +1199,7 @@
/*
* format a manual page with format_cmd, display it with disp_cmd, and
* save it to cat_file
@@ -2037,6 +2103,7 @@ static void format_display (pipeline *de
@@ -2037,6 +2102,7 @@ static void format_display (pipeline *de
regain_effective_privs ();
}
@ -1187,7 +1207,7 @@
/* "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, pipeline *decomp,
@@ -2074,6 +2141,7 @@ static void display_catman (const char *
@@ -2074,6 +2140,7 @@ static void display_catman (const char *
pop_cleanup();
free (tmpcat);
}
@ -1195,7 +1215,7 @@
/*
* optionally chdir to dir, if necessary update cat_file from man_file
@@ -2096,10 +2164,18 @@ static int display (const char *dir, con
@@ -2096,10 +2163,18 @@ static int display (const char *dir, con
if (dir) {
debug ("chdir %s\n", dir);
@ -1214,7 +1234,7 @@
}
/* define format_cmd */
@@ -2112,11 +2188,10 @@ static int display (const char *dir, con
@@ -2112,11 +2187,10 @@ static int display (const char *dir, con
if (decomp) {
pipeline_start (decomp);
@ -1228,7 +1248,7 @@
/* Get modification time, for commit_tmp_cat(). */
if (man_file && *man_file) {
struct stat stb;
@@ -2125,7 +2200,7 @@ static int display (const char *dir, con
@@ -2125,7 +2199,7 @@ static int display (const char *dir, con
else
man_modtime = stb.st_mtime;
}
@ -1237,7 +1257,7 @@
display_to_stdout = troff;
#ifdef TROFF_IS_GROFF
if (htmlout)
@@ -2236,6 +2311,7 @@ static int display (const char *dir, con
@@ -2236,6 +2310,7 @@ static int display (const char *dir, con
printf ("%s", cat_file);
}
putchar ('\n');
@ -1245,7 +1265,7 @@
} else if (catman) {
if (format) {
if (!save_cat)
@@ -2247,6 +2323,7 @@ static int display (const char *dir, con
@@ -2247,6 +2322,7 @@ static int display (const char *dir, con
display_catman (cat_file, decomp,
format_cmd);
}
@ -1253,7 +1273,7 @@
} else if (format) {
/* no cat or out of date */
pipeline *disp_cmd;
@@ -2296,8 +2373,10 @@ static int display (const char *dir, con
@@ -2296,8 +2372,10 @@ static int display (const char *dir, con
}
}
@ -1266,27 +1286,38 @@
if (!prompt)
prompt = found;
@@ -2338,8 +2417,7 @@ static char *find_cat_file (const char *
@@ -2338,8 +2416,7 @@ static char *find_cat_file (const char *
*/
if (!STREQ (man_file, original)) {
global_manpath = is_global_mandir (man_file);
- cat_path = get_catpath
- (man_file, global_manpath ? SYSTEM_CAT : USER_CAT);
+ cat_path = get_catpath (man_file, (global_manpath ? SYSTEM_CAT : USER_CAT)|FILE_CAT);
+ cat_path = get_catpath (man_file, (global_manpath ? SYSTEM_CATP : USER_CATP)|FILE_CATP);
if (cat_path) {
cat_file = convert_name (cat_path, 0);
@@ -2366,8 +2444,7 @@ static char *find_cat_file (const char *
@@ -2366,8 +2443,7 @@ static char *find_cat_file (const char *
}
global_manpath = is_global_mandir (original);
- cat_path = get_catpath
- (original, global_manpath ? SYSTEM_CAT : USER_CAT);
+ cat_path = get_catpath (original, (global_manpath ? SYSTEM_CAT : USER_CAT)|FILE_CAT);
+ cat_path = get_catpath (original, (global_manpath ? SYSTEM_CATP : USER_CATP)|FILE_CATP);
if (cat_path) {
cat_file = convert_name (cat_path, 0);
@@ -2899,7 +2976,7 @@ static int display_database_check (struc
@@ -2860,9 +2936,7 @@ static int display_database (struct cand
if (access (file, R_OK) != 0) {
char *catpath;
- catpath = get_catpath (candp->path,
- global_manpath ? SYSTEM_CAT
- : USER_CAT);
+ catpath = get_catpath (candp->path, global_manpath ? SYSTEM_CATP : USER_CATP);
if (catpath && strcmp (catpath, candp->path) != 0) {
file = make_filename (catpath, name,
@@ -2899,7 +2973,7 @@ static int display_database_check (struc
#ifdef MAN_DB_UPDATES
if (!exists && !skip) {
debug ("dbdelete_wrapper (%s, %p)\n",
@ -1295,12 +1326,12 @@
dbdelete_wrapper (candp->req_name, candp->source);
}
#endif /* MAN_DB_UPDATES */
@@ -2977,7 +3054,7 @@ static int try_db (const char *manpath,
@@ -2977,7 +3051,7 @@ static int try_db (const char *manpath,
/* find out where our db for this manpath should be */
- catpath = get_catpath (manpath, global_manpath ? SYSTEM_CAT : USER_CAT);
+ catpath = get_catpath (manpath, (global_manpath ? SYSTEM_CAT : USER_CAT)|FILE_CAT);
+ catpath = get_catpath (manpath, (global_manpath ? SYSTEM_CATP : USER_CATP)|FILE_CATP);
if (catpath) {
database = mkdbname (catpath);
free (catpath);
@ -1493,7 +1524,7 @@
# Flags.
# NOCACHE keeps man from creating cat pages.
--- src/mandb.c
+++ src/mandb.c 2007-12-10 14:09:36.898788000 +0100
+++ src/mandb.c 2008-01-30 12:01:40.242753517 +0100
@@ -143,6 +143,8 @@ static const char *xtmpfile;
#ifdef SECURE_MAN_UID
extern uid_t ruid;
@ -1503,7 +1534,24 @@
#endif /* SECURE_MAN_UID */
static char *manpathlist[MAXDIRS];
@@ -497,7 +499,7 @@ static short process_manpath (const char
@@ -463,10 +465,13 @@ static short process_manpath (const char
short amount = 0;
if (global_manpath) { /* system db */
- catpath = get_catpath (manpath, SYSTEM_CAT);
- assert (catpath);
+ catpath = get_catpath (manpath, SYSTEM_CATP);
+ if (!catpath) {
+ error (0, 0, _("warning: no system cat path for man path %s"), manpath);
+ return amount;
+ }
} else { /* user db */
- catpath = get_catpath (manpath, USER_CAT);
+ catpath = get_catpath (manpath, USER_CATP);
if (!catpath)
catpath = xstrdup (manpath);
}
@@ -497,7 +502,7 @@ static short process_manpath (const char
if (!opt_test && amount) {
finish_up ();
#ifdef SECURE_MAN_UID
@ -1512,7 +1560,7 @@
do_chown (man_owner->pw_uid);
#endif /* SECURE_MAN_UID */
}
@@ -610,8 +612,14 @@ int main (int argc, char *argv[])
@@ -610,8 +615,14 @@ int main (int argc, char *argv[])
error (FAIL, 0,
_("the setuid man user \"%s\" does not exist"),
MAN_OWNER);
@ -1530,7 +1578,7 @@
--- src/manp.c
+++ src/manp.c 2007-12-11 15:26:40.430198000 +0100
+++ src/manp.c 2008-01-30 12:01:02.982017854 +0100
@@ -63,6 +63,7 @@
# include <strings.h>
#else /* no string(s) header */
@ -1608,6 +1656,17 @@
return manpath;
}
@@ -1155,8 +1167,8 @@ char *get_catpath (const char *name, int
struct list *list;
for (list = namestore; list; list = list->next)
- if (((cattype & SYSTEM_CAT) && list->flag == MANDB_MAP) ||
- ((cattype & USER_CAT) && list->flag == MANDB_MAP_USER)) {
+ if (((cattype & SYSTEM_CATP) && list->flag == MANDB_MAP) ||
+ ((cattype & USER_CATP) && list->flag == MANDB_MAP_USER)) {
size_t manlen = strlen (list->key);
if (STRNEQ (name, list->key, manlen)) {
const char *suffix = name + manlen;
@@ -1164,16 +1176,30 @@ char *get_catpath (const char *name, int
if (*suffix == '/') {
@ -1624,11 +1683,11 @@
}
catpath = strappend (catpath, suffix, NULL);
- return catpath;
+ if (cattype & FILE_CAT)
+ if (cattype & FILE_CATP)
+ return catpath;
+ if (is_directory (catpath) == 1)
+ return catpath;
+ if ((cattype & WHATIS_CAT) == 0) {
+ if ((cattype & WHATIS_CATP) == 0) {
+ const char locale_delims[] = "_@,.";
+ const char *delim;
+ for (delim = locale_delims; *delim != '\0'; ++delim) {
@ -1730,7 +1789,7 @@
}
--- src/straycats.c
+++ src/straycats.c 2007-12-10 16:03:23.563387000 +0100
+++ src/straycats.c 2008-01-30 11:57:57.562451820 +0100
@@ -48,6 +48,7 @@ extern char *strrchr();
#include <sys/types.h>
@ -1786,6 +1845,15 @@
}
closedir (cdir);
return strays;
@@ -382,7 +386,7 @@ int straycats (const char *manpath)
return 0;
}
- catpath = get_catpath (manpath, SYSTEM_CAT | USER_CAT);
+ catpath = get_catpath (manpath, SYSTEM_CATP|USER_CATP);
/* look in the usual catpath location */
mandir = xstrdup (manpath);
--- src/ult_src.c
+++ src/ult_src.c 2007-12-10 14:34:00.376977000 +0100
@@ -328,12 +328,17 @@ const char *ult_src (const char *name, c
@ -1838,18 +1906,18 @@
#include "libdb/mydbm.h" /* for full definition of MAN_DB */
#include "lib/pipeline.h"
--- src/whatis.c
+++ src/whatis.c 2007-12-11 15:30:48.289713000 +0100
+++ src/whatis.c 2008-01-30 12:01:59.721229159 +0100
@@ -687,7 +687,7 @@ static int search (char *page)
debug ("lower(%s) = \"%s\"\n", page, lowpage);
for (mp = manpathlist; *mp; mp++) {
- catpath = get_catpath (*mp, SYSTEM_CAT | USER_CAT);
+ catpath = get_catpath (*mp, SYSTEM_CAT|USER_CAT|WHATIS_CAT);
+ catpath = get_catpath (*mp, SYSTEM_CATP|USER_CATP|WHATIS_CATP);
if (catpath) {
database = mkdbname (catpath);
--- src/wrapper.c
+++ src/wrapper.c 2008-01-07 13:06:01.941835371 +0100
+++ src/wrapper.c 2008-01-07 13:06:01.941835000 +0100
@@ -25,6 +25,7 @@
#include <stdio.h>
#include <unistd.h>

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
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

View File

@ -23,7 +23,7 @@ BuildRequires: gettext-runtime gettext-tools
BuildRequires: gettext gettext-devel
%endif
Version: 2.5.0
Release: 11
Release: 14
Summary: A Program for Displaying man Pages
License: GPL v2 or later
Group: System/Base
@ -172,15 +172,27 @@ test -d var/catman/ && rm -rf var/catman/ || true
%{_bindir}/apropos
%{_bindir}/catman
%{_bindir}/lexgrog
%if %suse_version > 1030
%attr(0755,root,root) %{_bindir}/man
%attr(0755,root,root) %{_bindir}/mandb
%else
%attr(4755,root,root) %{_bindir}/man
%attr(4755,root,root) %{_bindir}/mandb
%endif
%{_bindir}/manpath
%{_bindir}/whatis
%{_bindir}/zsoelim
%if %suse_version > 1030
%dir %attr(0755,root,root) %{_prefix}/lib/man-db
%attr(0755,root,root) %{_prefix}/lib/man-db/man
%attr(0755,root,root) %{_prefix}/lib/man-db/mandb
%attr(0755,man,man) %{_prefix}/lib/man-db/manconv
%else
%dir %attr(0711,root,root) %{_prefix}/lib/man-db
%attr(0711,root,root) %{_prefix}/lib/man-db/man
%attr(0711,root,root) %{_prefix}/lib/man-db/mandb
%attr(0755,man,man) %{_prefix}/lib/man-db/manconv
%attr(0711,man,man) %{_prefix}/lib/man-db/manconv
%endif
%{_sbindir}/accessdb
%{_datadir}/groff/site-tmac/tmac.andb
%{_datadir}/groff/site-tmac/tmac.andocdb
@ -227,6 +239,10 @@ test -d var/catman/ && rm -rf var/catman/ || true
%{_localstatedir}/adm/fillup-templates/sysconfig.cron-man
%changelog
* Wed Jan 30 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 2008 mkoenig@suse.de
- Fix path in sysconfig.cron-man [#350542]
* Mon Jan 07 2008 werner@suse.de
@ -478,7 +494,7 @@ test -d var/catman/ && rm -rf var/catman/ || true
When using both setlocale(LC_MESSAGES,"") *and*
setlocale(LC_CTYPE,"") but not setlocale(LC_ALL,""),
everything seems to work correctly.
* Tue Dec 05 2000 bk@suse.de
* Wed Dec 06 2000 bk@suse.de
- added %%dir /usr/share/man/{de,es,it,ja}+man[158] to file list
* Fri Sep 15 2000 pthomas@suse.de
- Add 3C++, 3C++std and 8C++ to the list of man sections, the
@ -507,12 +523,12 @@ test -d var/catman/ && rm -rf var/catman/ || true
- patched configure.in to prefer gdbm
* Mon Sep 13 1999 bs@suse.de
- ran old prepare_spec on spec file to switch to new prepare_spec.
* Mon Sep 06 1999 ro@suse.de
* Tue Sep 07 1999 ro@suse.de
- removed (now) conflicting redeclarations from zsoelim.l
* Thu Sep 02 1999 werner@suse.de
- Make man.c work again
- Use RPM_OPT_FLAGS
* Mon Aug 30 1999 werner@suse.de
* Tue Aug 31 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'
@ -526,14 +542,14 @@ test -d var/catman/ && rm -rf var/catman/ || true
- Add allman sub tree to fsstnd tree
* Fri Jul 09 1999 ro@suse.de
- fixed filelist
* Tue Jul 06 1999 werner@suse.de
* Wed Jul 07 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 1999 werner@suse.de
* Thu Jul 01 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/