Accepting request 236790 from Base:System

- 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
------------------------------------------------------------------
- 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

OBS-URL: https://build.opensuse.org/request/show/236790
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/man?expand=0&rev=58
This commit is contained in:
Stephan Kulow 2014-06-25 09:47:14 +00:00 committed by Git OBS Bridge
commit 793adee46b
8 changed files with 280 additions and 133 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:51db85cbbdcb99927865bad4c653a8b18991831e751cc501098a772924e26b47
size 1388944

View File

@ -1,6 +1,12 @@
---
src/man.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git src/man.c src/man.c
index 10bcd4f..5c164ad 100644
--- src/man.c
+++ src/man.c 2012-10-01 14:34:29.003506558 +0000
@@ -2312,21 +2312,23 @@ static void format_display (pipeline *de
+++ src/man.c
@@ -2316,22 +2316,24 @@ static void format_display (pipeline *decomp,
if (!status)
break;
}
@ -21,6 +27,7 @@
htmldir);
free (htmlfile);
free (htmldir);
free (old_cwd);
+ if (!candidate)
+ error (CHILD_FAIL, 0,
+ "couldn't execute any browser from %s",
@ -28,3 +35,6 @@
} else
#endif /* TROFF_IS_GROFF */
/* TODO: check format_cmd status too? */
--
1.8.4.5

View File

@ -1,5 +1,11 @@
---
src/mandb.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git src/mandb.c src/mandb.c
index 86b9e97..5b8c57d 100644
--- src/mandb.c
+++ src/mandb.c 2012-10-01 14:30:11.619507260 +0000
+++ src/mandb.c
@@ -37,6 +37,7 @@
#include <errno.h>
#include <sys/types.h>
@ -8,17 +14,15 @@
#include <dirent.h>
#include <unistd.h>
#include <signal.h>
@@ -420,11 +421,20 @@ static int mandb (const char *catpath, c
@@ -422,10 +423,19 @@ static int mandb (const char *catpath, const char *manpath)
char *dbname;
char *cachedir_tag;
struct stat st;
+ int fd;
dbname = mkdbname (catpath);
sprintf (pid, "%d", getpid ());
database = appendstr (NULL, catpath, "/", pid, NULL);
-
+
database = xasprintf ("%s/%d", catpath, getpid ());
+ /* Just for the case that catpath isn't a system catpath */
+ drop_effective_privs ();
+ fd = open (database, O_WRONLY | O_CREAT | O_EXCL, 0644);
@ -30,7 +34,7 @@
if (!quiet)
printf (_("Processing manual pages under %s...\n"), manpath);
@@ -432,6 +442,7 @@ static int mandb (const char *catpath, c
@@ -433,6 +443,7 @@ static int mandb (const char *catpath, const char *manpath)
if (stat (cachedir_tag, &st) == -1 && errno == ENOENT) {
FILE *cachedir_tag_file;
@ -38,7 +42,7 @@
cachedir_tag_file = fopen (cachedir_tag, "w");
if (cachedir_tag_file) {
fputs ("Signature: 8a477f597d28d172789f06886806bc55\n"
@@ -443,6 +454,7 @@ static int mandb (const char *catpath, c
@@ -444,6 +455,7 @@ static int mandb (const char *catpath, const char *manpath)
cachedir_tag_file);
fclose (cachedir_tag_file);
}
@ -46,3 +50,6 @@
}
free (cachedir_tag);
--
1.8.4.5

View File

@ -1,6 +1,14 @@
---
config.h.in | 3 +++
configure.ac | 52 +++++++++++++++++++++++++++++++++++++++++++++
lib/decompress.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 120 insertions(+)
diff --git config.h.in config.h.in
index efa85da..9a3fcc9 100644
--- config.h.in
+++ config.h.in 2012-10-02 09:06:48.591006953 +0000
@@ -674,6 +674,9 @@
+++ config.h.in
@@ -692,6 +692,9 @@
/* Define to 1 if you have the `z' library (-lz). */
#undef HAVE_LIBZ
@ -10,8 +18,10 @@
/* Define to 1 if you have the <linewrap.h> header file. */
#undef HAVE_LINEWRAP_H
diff --git configure.ac configure.ac
index adde408..2daf4a3 100644
--- configure.ac
+++ configure.ac 2012-10-02 09:55:06.783914808 +0000
+++ configure.ac
@@ -98,6 +98,18 @@ AC_ARG_WITH([sections],
sections="$withval"
fi],
@ -31,7 +41,7 @@
AC_ARG_ENABLE([automatic-create],
[AS_HELP_STRING([--enable-automatic-create], [allow man to create user databases on the fly])],
[if test "$enableval" = "yes"
@@ -375,6 +387,46 @@ AC_SUBST([unlzma])
@@ -410,6 +422,46 @@ AC_SUBST([unlzma])
AC_SUBST([unxz])
AC_SUBST([unlzip])
MAN_COMPRESS_LIB([z], [gzopen])
@ -78,11 +88,13 @@
dnl To add more decompressors just follow the scheme above.
# Work out which manual page hierarchy scheme might be in use.
diff --git lib/decompress.c lib/decompress.c
index a176a9d..0057e39 100644
--- lib/decompress.c
+++ lib/decompress.c 2012-10-02 09:05:43.787007258 +0000
@@ -36,6 +36,10 @@
# include "zlib.h"
#endif /* HAVE_LIBZ */
+++ lib/decompress.c
@@ -38,6 +38,10 @@
#include "xvasprintf.h"
+#ifdef HAVE_ZIO
+# include "zio.h"
@ -91,7 +103,7 @@
#include "manconfig.h"
#include "comp_src.h"
#include "pipeline.h"
@@ -66,6 +70,32 @@ static void decompress_zlib (void *data
@@ -68,6 +72,32 @@ static void decompress_zlib (void *data ATTRIBUTE_UNUSED)
#endif /* HAVE_LIBZ */
@ -124,7 +136,7 @@
pipeline *decompress_open (const char *filename)
{
pipecmd *cmd;
@@ -80,6 +110,37 @@ pipeline *decompress_open (const char *f
@@ -82,6 +112,37 @@ pipeline *decompress_open (const char *filename)
if (stat (filename, &st) < 0 || S_ISDIR (st.st_mode))
return NULL;
@ -162,7 +174,7 @@
#ifdef HAVE_LIBZ
filename_len = strlen (filename);
if (filename_len > 3 && STREQ (filename + filename_len - 3, ".gz")) {
@@ -93,7 +154,11 @@ pipeline *decompress_open (const char *f
@@ -95,7 +156,11 @@ pipeline *decompress_open (const char *filename)
}
#endif /* HAVE_LIBZ */
@ -174,3 +186,6 @@
if (ext) {
++ext;
--
1.8.4.5

View File

@ -1,6 +1,28 @@
---
configure.ac | 18 ++++++-
include/comp_src.h.in | 2 +-
lib/security.c | 36 +++++++++++++
lib/util.c | 3 ++
libdb/mydbm.h | 4 +-
mk_catdirs | 30 +++++++++++
src/Makefile.am | 12 ++---
src/check_mandirs.c | 48 ++++++++++++-----
src/lexgrog.l | 121 ++++++++++++++++++++++++++++-------------
src/man.c | 115 ++++++++++++++++++++++++++-------------
src/man_db.conf.in | 145 +++++++++++++++++++++++++++++++++++++++++++++++---
src/mandb.c | 18 +++++--
src/manp.c | 2 +-
src/straycats.c | 13 +++--
src/ult_src.c | 9 +++-
src/ult_src.h | 7 +--
16 files changed, 460 insertions(+), 123 deletions(-)
create mode 100644 mk_catdirs
diff --git configure.ac configure.ac
index 2daf4a3..34ce06e 100644
--- configure.ac
+++ configure.ac 2012-10-09 15:25:13.090345177 +0000
@@ -316,6 +316,14 @@ then
+++ configure.ac
@@ -333,6 +333,14 @@ then
fi
MAN_CHECK_PROGS([eqn], [EQN], [use EQN to preprocess equations], [eqn geqn])
@ -15,7 +37,7 @@
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
@@ -341,9 +349,15 @@ then
@@ -376,9 +384,15 @@ then
compress_ext="gz"
fi
MAN_CHECK_PROGS([compress], [COMPRESS], [use COMPRESS as UNIX compression utility], [compress])
@ -33,8 +55,10 @@
if test -z "$gzip"
then
compressor="$compress -c"
diff --git include/comp_src.h.in include/comp_src.h.in
index 4d6b0e7..7c865e8 100644
--- include/comp_src.h.in
+++ include/comp_src.h.in 2012-10-09 15:25:13.266345026 +0000
+++ include/comp_src.h.in
@@ -53,7 +53,7 @@ struct compression comp_list[] = {
#endif /* HAVE_GZIP */
@ -44,8 +68,10 @@
{UNCOMPRESS, "Z", NULL},
/* Else if we have gzip, incorporate the following */
#elif defined (HAVE_GZIP)
diff --git lib/security.c lib/security.c
index dd2e221..37d0ca7 100644
--- lib/security.c
+++ lib/security.c 2012-10-09 15:25:13.374643928 +0000
+++ lib/security.c
@@ -60,7 +60,10 @@
uid_t ruid; /* initial real user id */
@ -108,9 +134,11 @@
#endif /* SECURE_MAN_UID */
}
diff --git lib/util.c lib/util.c
index 978a16e..3dcf336 100644
--- lib/util.c
+++ lib/util.c 2012-10-09 15:25:13.482578481 +0000
@@ -46,6 +46,9 @@
+++ lib/util.c
@@ -48,6 +48,9 @@
#include "gettext.h"
@ -120,8 +148,10 @@
#include "manconfig.h"
#include "error.h"
diff --git libdb/mydbm.h libdb/mydbm.h
index f0c4784..3538ed4 100644
--- libdb/mydbm.h
+++ libdb/mydbm.h 2012-10-09 15:25:13.574993382 +0000
+++ libdb/mydbm.h
@@ -42,7 +42,7 @@
# include <gdbm.h>
@ -131,7 +161,7 @@
# endif /* !HAVE_GDBM_EXISTS */
/* gdbm_nextkey() is not lexicographically sorted, so we need to keep the
@@ -144,7 +144,7 @@ extern int btree_nextkeydata(DB *db, dat
@@ -144,7 +144,7 @@ extern int btree_nextkeydata(DB *db, datum *key, datum *cont);
# define MYDBM_SET_DPTR(d, value) ((d).data = (char *) (value))
# define MYDBM_DSIZE(d) ((d).size)
# define MYDBM_CTRWOPEN(file) btree_flopen(file, O_TRUNC|O_CREAT|O_RDWR, DBMODE)
@ -140,8 +170,11 @@
# define MYDBM_RWOPEN(file) btree_flopen(file, O_RDWR, DBMODE)
# define MYDBM_RDOPEN(file) btree_flopen(file, O_RDONLY, DBMODE)
# define MYDBM_INSERT(db, key, cont) btree_insert(db, key, cont)
--- mk_catdirs
+++ mk_catdirs 2012-10-09 15:25:13.182344989 +0000
diff --git mk_catdirs mk_catdirs
new file mode 100644
index 0000000..47eaa25
--- /dev/null
+++ mk_catdirs
@@ -0,0 +1,30 @@
+#!/bin/sh
+
@ -173,9 +206,11 @@
+cd ${OLDPWD}
+
+test "$(id -u)" -ne 0 || chown man:man -R ${CACHE}
diff --git src/Makefile.am src/Makefile.am
index 51118a1..0003cbc 100644
--- src/Makefile.am
+++ src/Makefile.am 2012-10-09 15:25:13.666345062 +0000
@@ -167,15 +167,9 @@ apropos$(EXEEXT): whatis$(EXEEXT)
+++ src/Makefile.am
@@ -177,15 +177,9 @@ apropos$(EXEEXT): whatis$(EXEEXT)
all-am: apropos$(EXEEXT)
install-exec-hook:
@ -194,9 +229,11 @@
install-data-hook:
@if test -f $(DESTDIR)$(config_file); then \
diff --git src/check_mandirs.c src/check_mandirs.c
index f954dbf..f9d6314 100644
--- src/check_mandirs.c
+++ src/check_mandirs.c 2012-10-09 15:25:13.758815292 +0000
@@ -354,10 +354,13 @@ static inline void add_dir_entries (cons
+++ src/check_mandirs.c
@@ -354,10 +354,13 @@ static inline void add_dir_entries (const char *path, char *infile)
#ifdef SECURE_MAN_UID
extern uid_t ruid; /* initial real user id */
@ -211,7 +248,7 @@
{
char *manname, *catname;
#ifdef SECURE_MAN_UID
@@ -381,6 +384,8 @@ static void mkcatdirs (const char *mandi
@@ -381,6 +384,8 @@ static void mkcatdirs (const char *mandir, const char *catdir)
#ifdef SECURE_MAN_UID
if (ruid == 0)
chown (catdir, man_owner->pw_uid, 0);
@ -220,7 +257,7 @@
#endif /* SECURE_MAN_UID */
drop_effective_privs ();
}
@@ -391,9 +396,14 @@ static void mkcatdirs (const char *mandi
@@ -391,9 +396,14 @@ static void mkcatdirs (const char *mandir, const char *catdir)
int j;
regain_effective_privs ();
debug ("creating catdir hierarchy %s ", catdir);
@ -238,7 +275,7 @@
if ((is_directory (manname) == 1)
&& (is_directory (catname) != 1)) {
if (mkdir (catname,
@@ -402,11 +412,12 @@ static void mkcatdirs (const char *mandi
@@ -402,11 +412,12 @@ static void mkcatdirs (const char *mandir, const char *catdir)
error (0, 0, _("warning: cannot create catdir %s"), catname);
debug ("warning: cannot create catdir %s\n", catname);
} else
@ -254,7 +291,7 @@
#endif /* SECURE_MAN_UID */
}
}
@@ -498,15 +509,10 @@ static int testmandirs (const char *path
@@ -505,15 +516,10 @@ static int testmandirs (const char *path, const char *catpath, time_t last,
}
if (!quiet) {
@ -271,7 +308,7 @@
}
add_dir_entries (path, mandir->d_name);
MYDBM_CLOSE (dbf);
@@ -674,7 +680,7 @@ int update_db (const char *manpath, cons
@@ -681,7 +687,7 @@ int update_db (const char *manpath, const char *catpath)
return new;
}
@ -280,7 +317,7 @@
return EOF;
}
@@ -856,6 +862,7 @@ static int purge_whatis (const char *pat
@@ -863,6 +869,7 @@ static int purge_whatis (const char *path, int cat, const char *name,
"would delete\n", name, info->ext);
return 1;
}
@ -288,7 +325,7 @@
}
/* Check that multi keys are correctly constructed. */
@@ -919,6 +926,11 @@ int purge_missing (const char *manpath,
@@ -937,6 +944,11 @@ int purge_missing (const char *manpath, const char *catpath)
gripe_rwopen_failed ();
return 0;
}
@ -300,11 +337,10 @@
/* Extract the database mtime. */
key = MYDBM_FIRSTKEY (dbf);
@@ -959,6 +971,14 @@ int purge_missing (const char *manpath,
key = nextkey;
@@ -978,6 +990,14 @@ int purge_missing (const char *manpath, const char *catpath)
continue;
}
+
+ /* Ignore db identifier keys. */
+ if (*key.dptr == '.' && *(key.dptr+1) == 0) {
+ nextkey = MYDBM_NEXTKEY (dbf, key);
@ -312,22 +348,14 @@
+ key = nextkey;
+ continue;
+ }
+
content = MYDBM_FETCH (dbf, key);
if (!MYDBM_DPTR (content)) {
--- src/descriptions_store.c
+++ src/descriptions_store.c 2012-10-09 15:25:13.842344839 +0000
@@ -71,7 +71,7 @@ void store_descriptions (const struct pa
if (trace) {
for (i = 0; i < trace->len; ++i)
- debug ("trace->names[%d] = '%s'\n",
+ debug ("trace->names[%zu] = '%s'\n",
i, trace->names[i]);
}
nextkey = MYDBM_NEXTKEY (dbf, key);
diff --git src/lexgrog.l src/lexgrog.l
index 18c5a5b..9e5fc16 100644
--- src/lexgrog.l
+++ src/lexgrog.l 2012-10-09 15:25:13.934344902 +0000
+++ src/lexgrog.l
@@ -56,7 +56,7 @@
#include "manconv_client.h"
@ -370,7 +398,7 @@
static pipeline *decomp;
@@ -240,7 +241,7 @@ static pipeline *decomp;
@@ -241,7 +242,7 @@ static pipeline *decomp;
%}
%option ecs meta-ecs
@ -379,7 +407,7 @@
%option nostdinit
%option warn
%option noyywrap nounput
@@ -278,8 +279,9 @@ font_change \\f([[:upper:]1-4]|\({upper}
@@ -279,8 +280,9 @@ font_change \\f([[:upper:]1-4]|\({upper}{2})
size_change \\s[+-]?{digit}
style_change ({font_change}{size_change}?|{size_change}{font_change}?)
typeface \.(B[IR]?|I[BR]?|R[BI]|S[BM])
@ -390,7 +418,7 @@
/* Please add to this list if you know how. */
/* Note that, since flex only supports UTF-8 by accident, character classes
@@ -314,7 +316,26 @@ vi_name TÊN
@@ -315,7 +317,26 @@ vi_name TÊN
zh_CN_name 名{blank}?(称|字){blank}?.*
zh_TW_name (名{blank}?(稱|字)|命令名){blank}?.*
name ({bg_name}|{cs_name}|{da_name}|{de_name}|{en_name}|{es_name}|{fi_name}|{fr_name}|{hu_name}|{id_name}|{it_name}|{ja_name}|{ko_name}|{latin_name}|{lt_name}|{nl_name}|{pl_name}|{ru_name}|{sk_name}|{sr_name}|{srlatin_name}|{sv_name}|{tr_name}|{vi_name}|{zh_CN_name}|{zh_TW_name})
@ -418,7 +446,7 @@
/* eptgrv : eqn, pic, tbl, grap, refer, vgrind */
tbl_request \.TS
@@ -328,8 +349,13 @@ vgrind_request \.vS
@@ -329,8 +350,13 @@ vgrind_request \.vS
%%
/* begin NAME section processing */
@ -434,7 +462,7 @@
/* general text matching */
<MAN_FILE>\.[^Ss\r\n].* |
@@ -397,6 +423,7 @@ vgrind_request \.vS
@@ -398,6 +424,7 @@ vgrind_request \.vS
<MAN_NAME>{bol}\.sp{blank}* | /* vertical spacing */
<MAN_NAME>{bol}\.ig{blank}* | /* block comment */
<MAN_NAME>{bol}\.de[1i]?{blank}* | /* macro definition */
@ -442,7 +470,7 @@
<MAN_NAME>{bol}\.i[ef]{blank}* | /* conditional */
<MAN_NAME>{empty}{bol}.+ |
<MAN_NAME><<EOF>> { /* terminate the string */
@@ -434,21 +461,24 @@ vgrind_request \.vS
@@ -435,21 +462,24 @@ vgrind_request \.vS
}
/* No-op requests */
@ -472,7 +500,7 @@
/* escape sequences and special characters */
<MAN_NAME>{
@@ -464,6 +494,7 @@ vgrind_request \.vS
@@ -465,6 +495,7 @@ vgrind_request \.vS
{next}\\[|^&!%acdpruz{}\r\n] /* various useless control chars */
{next}\\[bhlLvx]{blank}*'[^']+' /* various inline functions */
@ -480,7 +508,7 @@
{next}\\\$[1-9] /* interpolate arg */
/* roff named glyphs */
@@ -626,11 +657,8 @@ vgrind_request \.vS
@@ -627,11 +658,8 @@ vgrind_request \.vS
for later processing */
<MAN_NAME>{
{bol}\.br{blank}* |
@ -493,7 +521,7 @@
{bol}\.RS{blank}.* |
{bol}\.RE{blank}.* add_char_to_whatis ((char) 0x11);
}
@@ -645,7 +673,7 @@ vgrind_request \.vS
@@ -646,7 +674,7 @@ vgrind_request \.vS
<MAN_NAME>[[:alnum:]]* add_str_to_whatis (yytext, yyleng);
/* normalise the period (,) separators */
@ -502,7 +530,7 @@
<MAN_NAME>{blank}*,{blank}* add_str_to_whatis (", ", 2);
<CAT_NAME,MAN_NAME>{bol}. {
@@ -661,7 +689,7 @@ vgrind_request \.vS
@@ -662,7 +690,7 @@ vgrind_request \.vS
%%
/* print warning and force scanner to terminate */
@ -511,7 +539,7 @@
{
/* Even though MAX_NAME is a macro expanding to a constant, we
* translate it using ngettext anyway because that will make it
@@ -678,7 +706,7 @@ static void too_big (void)
@@ -679,7 +707,7 @@ static void too_big (void)
}
/* append a string to newname if enough room */
@ -520,7 +548,7 @@
{
if (p_name - newname + length >= MAX_NAME)
too_big ();
@@ -689,8 +717,10 @@ static void add_str_to_whatis (const cha
@@ -690,8 +718,10 @@ static void add_str_to_whatis (const char *string, size_t length)
}
/* append a char to newname if enough room */
@ -532,7 +560,7 @@
if (p_name - newname + 1 >= MAX_NAME)
too_big ();
else if (waiting_for_quote && c == '"')
@@ -702,8 +732,24 @@ static void add_char_to_whatis (unsigned
@@ -703,8 +733,24 @@ static void add_char_to_whatis (unsigned char c)
/* append the " - " separator to newname, trimming the first space if one's
* already there
*/
@ -558,7 +586,7 @@
if (p_name != newname && *(p_name - 1) != ' ')
add_char_to_whatis (' ');
add_str_to_whatis ("- ", 2);
@@ -711,7 +757,7 @@ static void add_separator_to_whatis (voi
@@ -712,7 +758,7 @@ static void add_separator_to_whatis (void)
/* append a word to newname if enough room, ensuring only necessary
surrounding space */
@ -567,7 +595,7 @@
{
if (p_name != newname && *(p_name - 1) != ' ')
add_char_to_whatis (' ');
@@ -721,7 +767,7 @@ static void add_wordn_to_whatis (const c
@@ -722,7 +768,7 @@ static void add_wordn_to_whatis (const char *string, size_t length)
add_str_to_whatis (string, length);
}
@ -576,7 +604,7 @@
{
add_wordn_to_whatis (string, strlen (string));
}
@@ -731,7 +777,7 @@ struct compare_macro_key {
@@ -732,7 +778,7 @@ struct compare_macro_key {
size_t length;
};
@ -585,7 +613,7 @@
{
const struct compare_macro_key *key = left;
const struct macro *value = right;
@@ -749,7 +795,7 @@ static int compare_macro (const void *le
@@ -750,7 +796,7 @@ static int compare_macro (const void *left, const void *right)
return 0;
}
@ -594,7 +622,7 @@
const char *string, size_t length)
{
struct compare_macro_key key;
@@ -763,23 +809,23 @@ static void add_macro_to_whatis (const s
@@ -764,23 +810,23 @@ static void add_macro_to_whatis (const struct macro *macros, size_t n_macros,
add_str_to_whatis (macro->value, strlen (macro->value));
}
@ -622,7 +650,7 @@
{
/* If we are mid p_name and the last added char was not a space,
* best add one.
@@ -855,6 +901,7 @@ int find_name_decompressed (pipeline *p,
@@ -856,6 +902,7 @@ int find_name_decompressed (pipeline *p, const char *filename, lexgrog *p_lg)
fill_mode = 1;
waiting_for_quote = 0;
@ -630,8 +658,10 @@
if (p_lg->type)
BEGIN (CAT_FILE);
diff --git src/man.c src/man.c
index 4715efb..edcd59c 100644
--- src/man.c
+++ src/man.c 2012-10-09 15:26:50.654659512 +0000
+++ src/man.c
@@ -68,6 +68,7 @@ static char *cwd;
#include <utime.h>
#include <sys/types.h>
@ -660,7 +690,7 @@
#if defined _AIX || defined __sgi
char **global_argv;
@@ -244,9 +251,9 @@ static int found_a_stray; /* found a st
@@ -244,9 +251,9 @@ static int found_a_stray; /* found a straycat */
#ifdef MAN_CATS
static char *tmp_cat_file; /* for open_cat_stream(), close_cat_stream() */
static int created_tmp_cat; /* dto. */
@ -671,7 +701,7 @@
# ifdef TROFF_IS_GROFF
static int ditroff;
@@ -607,25 +614,6 @@ static void gripe_no_name (const char *s
@@ -611,25 +618,6 @@ static void gripe_no_name (const char *sect)
exit (FAIL);
}
@ -697,17 +727,18 @@
#if defined(TROFF_IS_GROFF) || defined(HEIRLOOM_NROFF)
static int get_roff_line_length (void)
{
@@ -912,30 +900,43 @@ static int local_man_loop (const char *a
@@ -916,30 +904,43 @@ static int local_man_loop (const char *argv)
display (NULL, "", NULL, "(stdin)", NULL);
else {
struct stat st;
+ char *pwd = cwd;
+ char *file = basename((char*)argv);
-
- if (cwd[0]) {
- debug ("chdir %s\n", cwd);
- if (chdir (cwd)) {
- error (0, errno, _("can't chdir to %s"), cwd);
+ char *pwd = cwd;
+ char *file = basename((char*)argv);
+
+ if (strcmp(argv, file)) {
+ char *dlm;
+ pwd = strdupa(argv);
@ -746,7 +777,7 @@
return NOT_FOUND;
}
@@ -1000,8 +1001,13 @@ executable_out:
@@ -1006,8 +1007,13 @@ executable_out:
argv_abs = xstrdup (argv);
}
lang = lang_dir (argv_abs);
@ -761,7 +792,7 @@
if (local_mf)
error (0, errno, "%s", argv);
exit_status = NOT_FOUND;
@@ -1030,7 +1036,16 @@ int main (int argc, char *argv[])
@@ -1036,7 +1042,16 @@ int main (int argc, char *argv[])
umask (022);
init_locale ();
@ -779,7 +810,7 @@
/* Use LANGUAGE only when LC_MESSAGES locale category is
* neither "C" nor "POSIX". */
if (internal_locale && strcmp (internal_locale, "C") &&
@@ -1095,9 +1110,13 @@ int main (int argc, char *argv[])
@@ -1101,9 +1116,13 @@ int main (int argc, char *argv[])
if (external)
do_extern (argc, argv);
@ -794,7 +825,7 @@
#endif /* SECURE_MAN_UID */
/* close this locale and reinitialise if a new locale was
@@ -1400,7 +1419,8 @@ static const char *get_preprocessors_fro
@@ -1409,7 +1428,8 @@ static char *get_preprocessors_from_file (pipeline *decomp)
if (!line)
return NULL;
@ -803,8 +834,8 @@
+ (strlen(line) == 6 && !strncmp(line, ".\\\" ", 4))) {
const char *newline = strchr (line, '\n');
if (newline)
directive = xstrndup (line + 4, newline - (line + 4));
@@ -1917,6 +1937,18 @@ static void setenv_less (pipecmd *cmd, c
return xstrndup (line + 4, newline - (line + 4));
@@ -1921,6 +1941,18 @@ static void setenv_less (pipecmd *cmd, const char *title)
free (less_opts);
}
@ -823,7 +854,7 @@
static void add_output_iconv (pipeline *p,
const char *source, const char *target)
{
@@ -1972,6 +2004,8 @@ static pipeline *make_display_command (c
@@ -1976,6 +2008,8 @@ static pipeline *make_display_command (const char *encoding, const char *title)
if (pager_cmd) {
setenv_less (pager_cmd, title);
@ -832,7 +863,7 @@
pipeline_command (p, pager_cmd);
}
pipeline_ignore_signals (p, 1);
@@ -1982,7 +2016,7 @@ static pipeline *make_display_command (c
@@ -1986,7 +2020,7 @@ static pipeline *make_display_command (const char *encoding, const char *title)
return p;
}
@ -841,7 +872,7 @@
/* return a (malloced) temporary name in cat_file's directory */
static char *tmp_cat_filename (const char *cat_file)
{
@@ -2084,6 +2118,7 @@ static int commit_tmp_cat (const char *c
@@ -2088,6 +2122,7 @@ static int commit_tmp_cat (const char *cat_file, const char *tmp_cat,
return status;
}
@ -849,7 +880,7 @@
/* TODO: This should all be refactored after work on the decompression
* library is complete.
@@ -2104,7 +2139,6 @@ static void maybe_discard_stderr (pipeli
@@ -2108,7 +2143,6 @@ static void maybe_discard_stderr (pipeline *p)
}
#ifdef MAN_CATS
@ -857,7 +888,7 @@
/* 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)
{
@@ -2338,6 +2372,7 @@ static void format_display (pipeline *de
@@ -2343,6 +2377,7 @@ static void format_display (pipeline *decomp,
regain_effective_privs ();
}
@ -865,7 +896,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,
@@ -2377,6 +2412,7 @@ static void display_catman (const char *
@@ -2382,6 +2417,7 @@ static void display_catman (const char *cat_file, pipeline *decomp,
pop_cleanup();
free (tmpcat);
}
@ -873,7 +904,7 @@
static void disable_hyphenation (void *data ATTRIBUTE_UNUSED)
{
@@ -2529,7 +2565,7 @@ static int display (const char *dir, con
@@ -2535,7 +2571,7 @@ static int display (const char *dir, const char *man_file,
format_cmd = NULL;
decomp_errno = errno;
}
@ -882,7 +913,7 @@
/* Get modification time, for commit_tmp_cat(). */
if (man_file && *man_file) {
struct stat stb;
@@ -2538,7 +2574,7 @@ static int display (const char *dir, con
@@ -2544,7 +2580,7 @@ static int display (const char *dir, const char *man_file,
else
man_modtime = stb.st_mtime;
}
@ -891,7 +922,7 @@
display_to_stdout = troff;
#ifdef TROFF_IS_GROFF
if (htmlout)
@@ -2673,6 +2709,7 @@ static int display (const char *dir, con
@@ -2680,6 +2716,7 @@ static int display (const char *dir, const char *man_file,
}
if (printed)
putchar ('\n');
@ -899,7 +930,7 @@
} else if (catman) {
if (format) {
if (!save_cat)
@@ -2685,6 +2722,7 @@ static int display (const char *dir, con
@@ -2692,6 +2729,7 @@ static int display (const char *dir, const char *man_file,
format_cmd,
formatted_encoding);
}
@ -907,9 +938,9 @@
} else if (format) {
/* no cat or out of date */
pipeline *disp_cmd;
@@ -2743,8 +2781,10 @@ static int display (const char *dir, con
}
}
@@ -2753,8 +2791,10 @@ static int display (const char *dir, const char *man_file,
free (formatted_encoding);
- pipeline_free (format_cmd);
- pipeline_free (decomp);
@ -920,7 +951,7 @@
if (!prompt)
prompt = found;
@@ -2752,7 +2792,6 @@ static int display (const char *dir, con
@@ -2762,7 +2802,6 @@ static int display (const char *dir, const char *man_file,
return found;
}
@ -928,7 +959,7 @@
static char *find_cat_file (const char *path, const char *original,
const char *man_file)
{
@@ -3486,7 +3525,7 @@ static int display_database_check (struc
@@ -3515,7 +3554,7 @@ static int display_database_check (struct candidate *candp)
#ifdef MAN_DB_UPDATES
if (!exists && !skip) {
debug ("dbdelete_wrapper (%s, %p)\n",
@ -937,8 +968,10 @@
dbdelete_wrapper (candp->req_name, candp->source);
}
#endif /* MAN_DB_UPDATES */
diff --git src/man_db.conf.in src/man_db.conf.in
index bc8bb7e..c94b543 100644
--- src/man_db.conf.in
+++ src/man_db.conf.in 2012-10-09 15:25:14.146344181 +0000
+++ src/man_db.conf.in
@@ -20,6 +20,14 @@
MANDATORY_MANPATH /usr/man
MANDATORY_MANPATH /usr/share/man
@ -954,7 +987,7 @@
#---------------------------------------------------------
# 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
@@ -34,8 +42,10 @@ MANPATH_MAP /usr/local/bin /usr/local/man
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
@ -1106,8 +1139,10 @@
#
#---------------------------------------------------------
# Program definitions. These are commented out by default as the value
diff --git src/mandb.c src/mandb.c
index 5b8c57d..58cfeb6 100644
--- src/mandb.c
+++ src/mandb.c 2012-10-09 15:25:14.270344007 +0000
+++ src/mandb.c
@@ -193,6 +193,8 @@ static const char *xtmpfile;
#ifdef SECURE_MAN_UID
extern uid_t ruid;
@ -1117,7 +1152,7 @@
#endif /* SECURE_MAN_UID */
static char *manpathlist[MAXDIRS];
@@ -527,6 +529,8 @@ static int mandb (const char *catpath, c
@@ -528,6 +530,8 @@ static int mandb (const char *catpath, const char *manpath)
return amount;
}
@ -1126,7 +1161,7 @@
static int process_manpath (const char *manpath, int global_manpath,
struct hashtable *tried_catdirs)
{
@@ -560,6 +564,8 @@ static int process_manpath (const char *
@@ -561,6 +565,8 @@ static int process_manpath (const char *manpath, int global_manpath,
database = NULL;
}
@ -1135,7 +1170,7 @@
push_cleanup (cleanup, NULL, 0);
push_cleanup (cleanup_sigsafe, NULL, 1);
if (single_filename) {
@@ -590,7 +596,7 @@ static int process_manpath (const char *
@@ -591,7 +597,7 @@ static int process_manpath (const char *manpath, int global_manpath,
if (!opt_test && amount) {
finish_up ();
#ifdef SECURE_MAN_UID
@ -1161,9 +1196,11 @@
#endif /* SECURE_MAN_UID */
read_config_file (user);
diff --git src/manp.c src/manp.c
index e73e838..22c7ae0 100644
--- src/manp.c
+++ src/manp.c 2012-10-09 15:25:14.378344409 +0000
@@ -907,7 +907,7 @@ static char *def_path (int flag)
+++ src/manp.c
@@ -925,7 +925,7 @@ static char *def_path (int flag)
/* If we have complete config file failure... */
if (!manpath)
@ -1172,8 +1209,10 @@
return manpath;
}
diff --git src/straycats.c src/straycats.c
index 349d57b..9a27ff8 100644
--- src/straycats.c
+++ src/straycats.c 2012-10-09 15:25:14.486844509 +0000
+++ src/straycats.c
@@ -36,6 +36,7 @@
#include <sys/types.h>
#include <sys/stat.h>
@ -1204,9 +1243,11 @@
}
closedir (cdir);
return strays;
diff --git src/ult_src.c src/ult_src.c
index 283aee1..d2eb971 100644
--- src/ult_src.c
+++ src/ult_src.c 2012-10-09 15:25:14.610345084 +0000
@@ -326,12 +326,17 @@ const char *ult_src (const char *name, c
+++ src/ult_src.c
@@ -379,10 +379,15 @@ const char *ult_src (const char *name, const char *path,
}
pipeline_start (decomp);
@ -1222,13 +1263,12 @@
+ (STRNEQ (buffer, ".\\\"", 3) ||
+ STRNEQ (buffer, "'\\\"", 3)));
- if (buffer) {
+ if (buffer && *buffer) {
char *include = test_for_include (buffer);
include = test_for_include (buffer);
if (include) {
const char *ult;
diff --git src/ult_src.h src/ult_src.h
index 6fad470..3cd3a37 100644
--- src/ult_src.h
+++ src/ult_src.h 2012-10-09 15:25:14.714345027 +0000
+++ src/ult_src.h
@@ -22,9 +22,10 @@
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
@ -1243,3 +1283,6 @@
/* Trace of the link chain from a given file. Any names listed here should
* not have WHATIS_MAN entries created for them.
--
1.8.4.5

3
man-db-2.6.6.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7da90f8d8df91e0e682769d50f4bdb905f525b5d0f01e7e5b8cc3c6da45f66c3
size 1448576

View File

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

View File

@ -1,7 +1,7 @@
#
# spec file for package man
#
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -31,7 +31,7 @@ BuildRequires: pkg-config
BuildRequires: po4a
BuildRequires: xz-devel
BuildRequires: zlib-devel
Version: 2.6.3
Version: 2.6.6
Release: 0
Summary: A Program for Displaying man Pages
License: GPL-2.0+
@ -51,14 +51,14 @@ Source2: cron.daily.do_mandb
Source3: cron.daily.clean_catman
Source4: mancoding
Source5: wrapper.c
Patch0: man-db-%{version}.dif
Patch0: man-db-2.6.5.dif
Patch1: man-db-2.6.3-man0.dif
Patch2: man-db-2.3.19deb4.0-groff.dif
Patch4: man-db-2.6.3-section.dif
Patch5: man-db-2.6.3-security4.dif
Patch6: man-db-2.6.3-firefox.dif
Patch5: man-db-2.6.5-security4.dif
Patch6: man-db-2.6.5-firefox.dif
Patch7: man-db-2.6.3-chinese.dif
Patch9: man-db-2.6.3-zio.dif
Patch9: man-db-2.6.5-zio.dif
Patch10: man-db-2.6.3-listall.dif
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%global _sysconfdir /etc
@ -162,6 +162,12 @@ Authors:
gcc $CFLAGS -I gnulib/lib/ -I include/ --include config.h --include configmake.h \
-o wrapper %{S:5} -L gnulib/lib/.libs/ -lgnu
%check
if ! make check; then
cat src/tests/test-suite.log
exit 1
fi
%install
%if %suse_version <= 1030
export MKDIR_P="mkdir -p"
@ -253,7 +259,7 @@ test -d var/catman/ && rm -rf var/catman/ || true
%doc %{_mandir}/man8/*.8.gz
%dir %{_mandir}/id
%defattr(-,man,man)
%{_localstatedir}/cache/man/*
%ghost %{_localstatedir}/cache/man/*
%{_localstatedir}/adm/fillup-templates/sysconfig.cron-man
%changelog