summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-apps/man/files/man-1.5m-redhat-patches.patch')
-rw-r--r--sys-apps/man/files/man-1.5m-redhat-patches.patch223
1 files changed, 223 insertions, 0 deletions
diff --git a/sys-apps/man/files/man-1.5m-redhat-patches.patch b/sys-apps/man/files/man-1.5m-redhat-patches.patch
new file mode 100644
index 000000000000..2e759e0ff3c8
--- /dev/null
+++ b/sys-apps/man/files/man-1.5m-redhat-patches.patch
@@ -0,0 +1,223 @@
+diff -Narup man-1.5k.orig/gencat/genlib.c man-1.5k/gencat/genlib.c
+--- man-1.5k.orig/gencat/genlib.c 1997-12-02 08:23:30.000000000 -0500
++++ man-1.5k/gencat/genlib.c 2002-12-19 09:16:38.000000000 -0500
+@@ -47,6 +47,7 @@ up-to-date. Many thanks.
+ 01/14/91 4 nazgul Off by one on number specified entries
+ */
+
++#undef _GNU_SOURCE
+ #include <stdio.h>
+ #ifdef SYSV
+ #include <sys/types.h>
+diff -Narup man-1.5k.orig/src/apropos.sh man-1.5k/src/apropos.sh
+
+diff -Narup man-1.5k.orig/src/man-getopt.c man-1.5k/src/man-getopt.c
+--- man-1.5k.orig/src/man-getopt.c 2002-07-17 15:32:32.000000000 -0400
++++ man-1.5k/src/man-getopt.c 2002-12-19 09:25:36.000000000 -0500
+@@ -171,7 +171,7 @@ get_options_from_string(const char *s) {
+ char **argvec;
+ int optindsv;
+
+- if (!s)
++ if (!s || *s==0)
+ return;
+
+ /* In order to avoid having a list of options in two places,
+diff -Narup man-1.5k.orig/src/man.c man-1.5k/src/man.c
+--- man-1.5k.orig/src/man.c 2002-07-17 17:33:20.000000000 -0400
++++ man-1.5k/src/man.c 2002-12-19 09:19:05.000000000 -0500
+@@ -300,7 +300,7 @@ ultimate_source (const char *name0) {
+
+ if (strlen(name0) >= sizeof(ultname))
+ return name0;
+- strcpy(ultname, name0);
++ strncpy(ultname, name0, BUFSIZE-32);
+ name = ultname;
+
+ again:
+@@ -332,7 +332,7 @@ again:
+ * .so files - we could glob for all possible extensions,
+ * for now: only try .gz
+ */
+- else if (fp == NULL && get_expander(".gz") &&
++ if (fp == NULL && get_expander(".gz") &&
+ strlen(name)+strlen(".gz") < BUFSIZE) {
+ strcat(name, ".gz");
+ fp = fopen (name, "r");
+@@ -361,7 +361,7 @@ again:
+ beg++;
+
+ end = beg;
+- while (*end != ' ' && *end != '\t' && *end != '\n' && *end != '\0')
++ while (*end != ' ' && *end != '\t' && *end != '\n' && *end != '\0' && (end-buf)<BUFSIZE)
+ end++; /* note that buf is NUL-terminated */
+ /* hence the RH patch is superfluous */
+
+@@ -394,6 +394,9 @@ again:
+ strcat(name, "/");
+ strcat(name, beg);
+ }
++ /* If this is too long, bad things have already happened. *
++ * we should quit IMMEDIATELY. */
++ if(strlen(name)>sizeof(ultname)) _exit(1);
+
+ goto again;
+ }
+@@ -1197,6 +1200,20 @@ main (int argc, char **argv) {
+ #endif
+
+
++ char *s;
++#define CHECK(p, l) s=getenv(p); if(s && (strlen(s)>l)) { fprintf(stderr, "ERROR: Environment variable %s too long!\n", p); exit(1); }
++
++ CHECK("LANG", 32);
++ CHECK("MANPAGER", 128);
++ CHECK("PAGER", 128);
++ CHECK("SYSTEM", 64);
++ CHECK("MANROFFSEQ", 128);
++ CHECK("MANSECT", 128);
++ CHECK("MANPL", 128);
++ CHECK("MAN_HP_DIREXT", 128);
++ CHECK("LANGUAGE", 128);
++ CHECK("LC_MESSAGES", 128);
++
+ #ifndef __FreeBSD__
+ /* Slaven Rezif: FreeBSD-2.2-SNAP does not recognize LC_MESSAGES. */
+ setlocale(LC_CTYPE, ""); /* used anywhere? maybe only isdigit()? */
+
+diff -Narup man-1.5k.orig/src/makewhatis.sh man-1.5k/src/makewhatis.sh
+--- man-1.5k.orig/src/makewhatis.sh 2002-07-17 14:59:05.000000000 -0400
++++ man-1.5k/src/makewhatis.sh 2002-12-19 09:24:14.000000000 -0500
+@@ -41,7 +41,7 @@
+ # and should be first.
+ # It is a bug to add /var/cache/man to DEFCATPATH.
+ dm=
+-for d in /usr/man /usr/share/man
++for d in /usr/share/man /usr/X11R6/man /usr/local/man /usr/man
+ do
+ if [ -d $d ]; then
+ if [ x$dm = x ]; then dm=$d; else dm=$dm:$d; fi
+@@ -49,13 +49,13 @@
+ done
+ DEFMANPATH=$dm
+ dc=
+-for d in /usr/man/preformat /usr/man /usr/share/man/preformat /usr/share/man
++for d in /var/cache/man /usr/share/man/preformat /usr/man/preformat
+ do
+ if [ -d $d ]; then
+ if [ x$dc = x ]; then dc=$d; else dc=$dc:$d; fi
+ fi
+ done
+-DEFCATPATH=$dc
++DEFCATPATH=$dc:$DEFMANPATH
+
+ # In case /usr is read-only, make /usr/man/whatis (etc) a symlink to
+ # something like /var/cache/man/whatis.
+@@ -70,12 +70,12 @@
+ # We try here to be careful (and avoid preconstructed symlinks)
+ # in case makewhatis is run as root, by creating a subdirectory of /tmp.
+
+-TMPFILEDIR=/tmp/whatis.tmp.dir.$$
+-rm -rf TMPFILEDIR
+-if ! mkdir -m 0700 $TMPFILEDIR; then
+- echo Could not create $TMPFILEDIR
+- exit 1;
++TMPFILEDIR=`mktemp -d /tmp/makewhatisXXXXXX`
++if [ $? -ne 0 ]; then
++ echo "$0: Can't create temp file, exiting..."
++ exit 1
+ fi
++chmod 0700 $TMPFILEDIR
+ TMPFILE=$TMPFILEDIR/w
+
+ # make sure TMPFILEDIR is deleted if program is killed or terminates
+@@ -109,8 +109,10 @@
+ continue;;
+ -s) setsections=1
+ continue;;
+- -u) findarg="-ctime 0"
+- update=1
++ -u) if [ -e /var/cache/man/whatis ]; then
++ findarg="-newer /var/cache/man/whatis"
++ update=1
++ fi
+ continue;;
+ -v) verbose=1
+ continue;;
+@@ -149,14 +151,7 @@
+ # first truncate all the whatis files that will be created new,
+ # then only update - we might visit the same directory twice
+ if [ x$update = x ]; then
+- for pages in man cat
+- do
+- eval path="\$$pages"path
+- for mandir in $path
+- do
+- cp /dev/null $mandir/whatis
+- done
+- done
++ cp /dev/null /var/cache/man/whatis
+ fi
+
+ for pages in man cat
+@@ -165,14 +160,10 @@
+ eval path="\$$pages"path
+ for mandir in $path
+ do
+- if [ x$verbose != x ]; then
+- echo "about to enter $mandir" > /dev/stderr
+- fi
+- if [ -s ${mandir}/whatis -a $pages = man -a x$update = x ]; then
+- if [ x$verbose != x ]; then
+- echo skipping $mandir - we did it already > /dev/stderr
+- fi
+- else
++ [ -d "$mandir" ] || continue
++ if [ x$verbose != x ]; then
++ echo "about to enter $mandir" > /dev/stderr
++ fi
+ here=`pwd`
+ cd $mandir
+ for i in $sections
+@@ -391,23 +382,14 @@
+
+ cd $here
+
+- # kludge for Slackware's /usr/man/preformat
+- if [ $mandir = /usr/man/preformat ]
+- then
+- mandir1=/usr/man
+- else
+- mandir1=$mandir
+- fi
+-
+- if [ -f ${mandir1}/whatis ]
++ if [ -f /var/cache/man/whatis ]
+ then
+- cat ${mandir1}/whatis >> $TMPFILE
++ cat /var/cache/man/whatis >> $TMPFILE
+ fi
+- sed '/^$/d' < $TMPFILE | sort | uniq > ${mandir1}/whatis
++ sed '/^$/d' < $TMPFILE | sort | uniq > /var/cache/man/whatis
+
+- chmod 644 ${mandir1}/whatis
++ chmod 644 /var/cache/man/whatis
+ rm $TMPFILE
+- fi
+ done
+ done
+
+--- man-1.5k.orig/src/apropos.sh 2001-11-22 18:30:42.000000000 -0500
++++ man-1.5k/src/apropos.sh 2002-12-19 09:16:09.000000000 -0500
+@@ -18,9 +18,9 @@ program=`basename $0`
+
+ # When man pages in your favorite locale look to grep like binary files
+ # (and you use GNU grep) you may want to add the 'a' option to *grepopt1.
+-aproposgrepopt1='i'
++aproposgrepopt1='ia'
+ aproposgrepopt2=''
+-whatisgrepopt1='iw'
++whatisgrepopt1='iwa'
+ whatisgrepopt2='^'
+ grepopt1=$%apropos_or_whatis%grepopt1
+ grepopt2=$%apropos_or_whatis%grepopt2