man: Add new man package

A set of documentation tools: man, apropos and whatis

Signed-off-by: Xiaofeng Yan <xiaofeng.yan@windriver.com>
This commit is contained in:
Xiaofeng Yan
2010-09-02 16:39:48 +08:00
committed by Saul Wold
parent e3f492603e
commit 3f71edc3ef
30 changed files with 1040 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
diff -u -r man-1.5g.old/configure man-1.5g/configure
--- man-1.5g.old/configure Wed Apr 7 04:16:05 1999
+++ man-1.5g/configure Mon May 15 15:22:44 2000
@@ -791,7 +791,7 @@
read mode
if test "$mode" != ""; then man_mode=$mode; fi
fi
- man_install_flags="-m $man_mode -o $man_user -g $man_group"
+ man_install_flags=""
fi
# What sections do we anticipate?

View File

@@ -0,0 +1,10 @@
--- gencat/genlib.c 2006-08-02 20:11:44.000000000 +0200
+++ gencat/genlib.c.oden 2008-12-21 19:18:50.000000000 +0100
@@ -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>
#include <stdlib.h>
#ifdef SYSV

View File

@@ -0,0 +1,13 @@
--- man-1.5g/man/Makefile.in.mike Fri Apr 9 13:35:54 1999
+++ man-1.5g/man/Makefile.in Fri Apr 9 13:36:45 1999
@@ -1,8 +1,8 @@
# only executed from a subdir
MAN1 = man whatis apropos
-MAN5 = man.conf
+MAN5 = man.config
MAN8 = makewhatis
-ALL = man.1 whatis.1 apropos.1 man.conf.5
+ALL = man.1 whatis.1 apropos.1 man.config.5
MAYBE8 = makewhatis
.SUFFIXES: .man .1 .5 .8

View File

@@ -0,0 +1,15 @@
--- man-1.5i2/src/makewhatis.sh.initial Tue Jul 3 15:38:39 2001
+++ man-1.5i2/src/makewhatis.sh Tue Jul 3 15:39:39 2001
@@ -81,8 +81,10 @@
continue;;
-s) setsections=1
continue;;
- -u) findarg="-newer /var/cache/man/whatis"
- update=1
+ -u) if [ -e /var/cache/man/whatis ]; then
+ findarg="-newer /var/cache/man/whatis"
+ update=1
+ fi
continue;;
-v) verbose=1
continue;;

View File

@@ -0,0 +1,11 @@
--- src/man.c 2008-12-21 19:17:31.000000000 +0100
+++ src/man.c.oden 2008-12-21 19:17:38.000000000 +0100
@@ -391,7 +391,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 */
*end = '\0';

View File

@@ -0,0 +1,12 @@
--- man-1.5i2/src/man.c.overflow Mon Jun 25 00:01:45 2001
+++ man-1.5i2/src/man.c Mon Jun 25 00:01:45 2001
@@ -381,6 +381,9 @@
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;
}

View File

@@ -0,0 +1,12 @@
--- man-1.5j/msgs/inst.sh.i18n Wed Apr 25 10:40:50 2001
+++ man-1.5j/msgs/inst.sh Wed Apr 25 10:41:17 2001
@@ -27,8 +27,7 @@
for j in $M; do
if [ -f $j ]; then
i=`echo $j | sed -e 's/mess.//; s/.cat//'`
- dest=`echo $locdir | sed -e "s/%N/man/; s/%L/$i/"`
- dest=${PREFIX}$dest
+ dest=${PREFIX}/`echo $locdir | sed -e "s/%N/man/; s/%L/$i/"`
echo "mkdir -p `dirname $dest`"
mkdir -p `dirname $dest`;
echo "install -c -m 644 $j $dest"

View File

@@ -0,0 +1,12 @@
--- man-1.5j/src/man.conf.in.nocache Thu Nov 22 15:07:12 2001
+++ man-1.5j/src/man.conf.in Thu Nov 22 15:07:12 2001
@@ -81,6 +81,9 @@
#
#NOCACHE
#
+# NOCACHE keeps man from creating cache pages
+NOCACHE
+#
# Useful paths - note that COL should not be defined when
# NROFF is defined as "groff -Tascii" or "groff -Tlatin1";
# not only is it superfluous, but it actually damages the output.

View File

@@ -0,0 +1,57 @@
--- man-1.5j/configure.utf8 Thu Nov 22 15:02:35 2001
+++ man-1.5j/configure Thu Nov 22 15:03:15 2001
@@ -408,9 +408,9 @@
Fgawk=/bin/gawk
Fawk=/bin/gawk
Fmawk=missing
- troff=""
- nroff=""
- jnroff=""
+ troff=/usr/bin/troff
+ nroff=/usr/bin/nroff
+ jnroff=/usr/bin/nroff
eqn=""
neqn=""
jneqn=""
@@ -453,6 +453,8 @@
done
done
Fgroff=/usr/bin/groff
+ Fnroff=/usr/bin/nroff
+ Fjnroff=/usr/bin/nroff
Fgeqn=/usr/bin/geqn
Fgtbl=/usr/bin/gtbl
Fcol=/usr/bin/col
@@ -485,25 +487,25 @@
then
if test $Fnroff = "missing"
then
- nroff="nroff -Tlatin1 -mandoc"
+ nroff="nroff -Tutf8 -mandoc"
else
- nroff="$Fnroff -Tlatin1 -mandoc"
+ nroff="$Fnroff -Tutf8 -mandoc"
fi
troff="troff -mandoc"
echo "Warning: could not find groff"
else
if test $Fnroff = "missing"
then
- nroff="$Fgroff -Tlatin1 -mandoc"
+ nroff="$Fgroff -Tutf8 -mandoc"
else
- nroff="$Fnroff -Tlatin1 -mandoc"
+ nroff="$Fnroff -Tutf8 -mandoc"
fi
troff="$Fgroff -Tps -mandoc"
- jnroff="$Fgroff -Tnippon -mandocj"
+ jnroff="$Fjnroff -Tutf8 -mandocj"
fi
eqn="$Fgeqn -Tps"
- neqn="$Fgeqn -Tlatin1"
- jneqn="$Fgeqn -Tnippon"
+ neqn="$Fgeqn -Tutf8"
+ jneqn="$Fgeqn -Tutf8"
tbl="$Fgtbl"
col="$Fcol"
vgrind="$Fvgrind"

View File

@@ -0,0 +1,11 @@
--- configure 2006-05-01 19:56:14.000000000 +0200
+++ configure.oden 2008-12-21 19:16:50.000000000 +0100
@@ -198,7 +198,7 @@
confdir="${confprefix}/share/misc"
fi
fi
-conffilename="man.conf"
+conffilename="man.config"
if test "$RANDOM" = "$RANDOM"; then
# Plain old Bourne shell.

View File

@@ -0,0 +1,14 @@
--- ./src/apropos.sh.nonascii 2001-11-23 00:30:42.000000000 +0100
+++ ./src/apropos.sh 2002-08-13 15:44:53.000000000 +0200
@@ -18,9 +18,9 @@
# 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

View File

@@ -0,0 +1,20 @@
--- man-1.5j/src/man.c.sofix Thu Nov 22 14:51:44 2001
+++ man-1.5j/src/man.c Thu Nov 22 14:52:44 2001
@@ -300,7 +300,7 @@
if (strlen(name0) >= sizeof(ultname))
return name0;
- strcpy(ultname, name0);
+ strncpy(ultname, name0, BUFSIZE-32);
name = ultname;
again:
@@ -332,7 +332,7 @@
* .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");

View File

@@ -0,0 +1,11 @@
--- ./configure.ad 2003-12-11 19:17:10.000000000 +0100
+++ ./configure 2003-12-11 19:17:27.000000000 +0100
@@ -26,7 +26,7 @@
# (Indeed, -r may cause the terminal to get into funny states.
# Very inconvenient. For viewing pages in strange locales, set LC_*.)
#
-DEFAULTLESSOPT="-is"
+DEFAULTLESSOPT="-isr"
#
# Note that not creating any cat directories (/var/cache/man or so)
# and not making man suid or sgid is recommended.

View File

@@ -0,0 +1,48 @@
--- ./configure.less 2003-12-11 19:18:15.000000000 +0100
+++ ./configure 2003-12-11 19:20:03.000000000 +0100
@@ -401,18 +401,13 @@
if test "$ans" = "false"
then
- for i in more less cmp cat awk gawk mawk
- do
- eval F$i="missing"
- for j in $DEFPATH
- do
- if test -f $j/$i
- then
- eval F$i=$j/$i
- break
- fi
- done
- done
+ Fmore=/bin/more
+ Fless=/usr/bin/less
+ Fcmp=/usr/bin/cmp
+ Fcat=/bin/cat
+ Fgawk=/bin/gawk
+ Fawk=/bin/gawk
+ Fmawk=missing
troff=""
nroff=""
jnroff=""
@@ -457,6 +452,19 @@
fi
done
done
+ Fgroff=/usr/bin/groff
+ Fgeqn=/usr/bin/geqn
+ Fgtbl=/usr/bin/gtbl
+ Fcol=/usr/bin/col
+ Fgrefer=/usr/bin/grefer
+ Fgpic=/usr/bin/gpic
+ Fmore=/bin/more
+ Fless=/usr/bin/less
+ Fcmp=/usr/bin/cmp
+ Fcat=/bin/cat
+ Fgawk=/bin/gawk
+
+
for i in eqn tbl refer pic
do
if test `eval echo \\$Fg$i` = "missing"

View File

@@ -0,0 +1,18 @@
--- man-1.5m2/src/manfile.c_multiple 2006-12-08 23:42:17.000000000 +0100
+++ man-1.5m2/src/manfile.c 2006-12-09 00:00:01.000000000 +0100
@@ -25,9 +25,12 @@
if (a) {
if (*head) {
- p = *head;
- while(p->next)
- p = p->next;
+ for (p = *head; p->next; p = p->next) {
+ if(!strcmp (p->filename, a->filename))
+ return;
+ }
+ if(!strcmp (p->filename, a->filename))
+ return;
p->next = a;
} else
*head = a;

View File

@@ -0,0 +1,11 @@
--- man-1.5m2/configure.color 2006-09-16 18:27:37.000000000 +0200
+++ man-1.5m2/configure 2006-09-16 18:28:44.000000000 +0200
@@ -539,6 +539,8 @@
troff="$troff -c"
nroff="$nroff -c"
jnroff="$jnroff -c"
+else
+ troff="$troff -c"
fi
if [ x$default = x ]; then

View File

@@ -0,0 +1,26 @@
--- man-1.5m2/src/util.c_sigpipe 2006-12-09 13:43:21.000000000 +0100
+++ man-1.5m2/src/util.c 2006-12-09 13:53:13.000000000 +0100
@@ -116,11 +116,14 @@
static int
system1 (const char *command) {
void (*prev_handler)(int) = signal (SIGINT,catch_int);
+ signal (SIGPIPE,SIG_IGN);
int ret = system(command);
/* child terminated with signal? */
if (WIFSIGNALED(ret) &&
- (WTERMSIG(ret) == SIGINT || WTERMSIG(ret) == SIGQUIT))
+ (WTERMSIG(ret) == SIGINT ||
+ WTERMSIG(ret) == SIGPIPE ||
+ WTERMSIG(ret) == SIGQUIT))
exit(1);
/* or we caught an interrupt? */
@@ -128,6 +131,7 @@
exit(1);
signal(SIGINT,prev_handler);
+ signal(SIGPIPE,SIG_DFL);
return ret;
}

View File

@@ -0,0 +1,27 @@
--- man/Makefile.in 2008-12-21 19:19:33.000000000 +0100
+++ man/Makefile.in.oden 2008-12-21 19:19:39.000000000 +0100
@@ -34,6 +34,15 @@
for i in $(MAN8); \
do if test -f $$i.8; then $(INSTALL) $$i.8 $(mandir)/man8/$$i.@man8ext@; fi; done
+install-l10n: $(ALL)
+ mkdir -p $(mandir)/$(SLANG)/man1 $(mandir)/$(SLANG)/man5 $(mandir)/$(SLANG)/man8
+ for i in $(MAN1); \
+ do $(INSTALL) $$i.1 $(mandir)/$(SLANG)/man1/$$i.@man1ext@; done
+ for i in $(MAN5); \
+ do $(INSTALL) $$i.5 $(mandir)/$(SLANG)/man5/$$i.@man5ext@; done
+ for i in $(MAN8); \
+ do if test -f $$i.8; then $(INSTALL) $$i.8 $(mandir)/$(SLANG)/man8/$$i.@man8ext@; fi; done
+
clean:
rm -f core *.in *.@man1ext@ *.@man5ext@ *.@man8ext@ *~
@@ -49,7 +58,7 @@
@for i in @languages@; do if test -d $$i; then echo; \
echo "==== Installing the `cat $$i.txt` man pages. ===="; \
cd $$i; SLANG=/$$i; if test $$SLANG = /en; then SLANG= ; fi; \
- export SLANG; make -f ../Makefile install; cd ..; \
+ export SLANG; make -f ../Makefile install-l10n; cd ..; \
else echo "==== No $$i man pages found. ===="; fi; done
cleansubdirs:

View File

@@ -0,0 +1,141 @@
diff -Naur man-1.6e.orig/src/apropos.sh man-1.6e/src/apropos.sh
--- man-1.6e.orig/src/apropos.sh 2007-05-18 13:49:31.000000000 -0300
+++ man-1.6e/src/apropos.sh 2007-05-18 14:24:33.000000000 -0300
@@ -60,16 +60,56 @@
esac
done
+# list of languages to look for
+LANG_LIST=`echo $LANGUAGE:$LC_ALL:$LC_MESSAGES:$LANG | tr ':' ' '`
+DIR_LIST=""
+for d in /var/cache/man $manpath /usr/lib
+do
+ for l in $LANG_LIST
+ do
+ if [ -d $d/$l ]
+ then
+ # check that the path is not already in the list
+ if ! echo "$DIR_LIST" | grep " $d/$l\b" > /dev/null
+ then
+ DIR_LIST="$DIR_LIST $d/$l"
+ fi
+ fi
+ done
+ DIR_LIST="$DIR_LIST $d"
+ # check that the path is not already in the list
+ if ! echo "$DIR_LIST" | grep " $d\b" > /dev/null
+ then
+ DIR_LIST="$DIR_LIST $d/$l"
+ fi
+done
+
while [ "$1" != "" ]
do
found=0
- for d in /var/cache/man $manpath /usr/lib
+ # in order not to display lines in more than one language for
+ # a same man page; we check that a given man page name
+ # hasn't already been displayed
+ BAZ=""
+ for d in $DIR_LIST
do
if [ -f $d/whatis ]
then
- if grep -"$grepopt1" "$grepopt2""$1" $d/whatis
+ if FOO=`grep -"$grepopt1" "$grepopt2""$1" $d/whatis`
then
- found=1
+ # the LC_ALL=C is needed in case the text is
+ # in a different encoding than the locale
+ BAR=`echo -e "$FOO" | LC_ALL=C sed 's/ - .*$//' | tr ' []' '_' | sort -u`
+ for i in $BAR
+ do
+ if ! echo "$BAZ" | grep "$i" > /dev/null
+ then
+ BAZ="$BAZ $i"
+ i="^`echo $i | sed 's:_\+:\\\(\[_ \]\\\|\\\[\\\|\\\]\\\)\\\+:g'`"
+ echo -e "$FOO" | grep "$i"
+ found=1
+ fi
+ done
# Some people are satisfied with a single occurrence
# But it is better to give all
# break
diff -Naur man-1.6e.orig/src/makewhatis.sh man-1.6e/src/makewhatis.sh
--- man-1.6e.orig/src/makewhatis.sh 2007-05-18 13:49:31.000000000 -0300
+++ man-1.6e/src/makewhatis.sh 2007-05-18 13:50:07.000000000 -0300
@@ -41,12 +41,32 @@
program=`basename $0`
+# this allows to define language specific values fro NAME, DESCRIPTION
+# if not defined, using those default values
+if [ -z "$MAN_NAME" ]
+then
+ MAN_NAME="ИМЕ|NOM|JMÉNO|NAVN|ΟΝΟΜΑ|NOMBRE|NIME|IZENA|NIMI|IME|\
+NÉV|NOME|名前|이름|NAAM|NAZWA|NUME|ИМЯ|MENO|НАЗВА|名称|名稱"
+fi
+if [ -z "$MAN_DESCRIPTION" ]
+then
+ MAN_DESCRIPTION="ОПИСАНИЕ|DESCRIPCIÓ|POPIS|BESKRIVELSE|BESCHREIBUNG|\
+ΠΕΡΙΓΡΑΦΗ|DESCRIPCIÓN|KIRJELDUS|AZALPENA|KUVAUS|OPIS|LEÍRÁS|DESCRIZIONE|\
+説明|설명|BESCHRIJVING|DESCRIÇÃO|DESCRIERE|ОПИС|描述"
+fi
+# make them into awk regexp
+MAN_NAME="^(${MAN_NAME})";
+MAN_DESCRIPTION="^(${MAN_DESCRIPTION})";
+
# In case both /usr/man and /usr/share/man exist, the former is local
# and should be first.
# It is a bug to add /var/cache/man to DEFCATPATH.
dm=
for d in /usr/share/man /usr/man /usr/X11R6/man /usr/local/man
do
+ if [ -n "$LANG" -a -d "$d/$LANG" ]; then
+ if [ x$dm = x ]; then dm="$d/$LANG"; else dm=$dm:"$d/$LANG"; fi
+ fi
if [ -d $d ]; then
if [ x$dm = x ]; then dm=$d; else dm=$dm:$d; fi
fi
@@ -55,6 +75,9 @@
dc=
for d in /var/cache/man /usr/share/man/preformat /usr/man/preformat /usr/share/man /usr/man
do
+ if [ -n "$LANG" -a -d "$d/$LANG" ]; then
+ if [ x$dc = x ]; then dm="$d/$LANG"; else dm=$dc:"$d/$LANG"; fi
+ fi
if [ -d $d ]; then
if [ x$dc = x ]; then dc=$d; else dc=$dc:$d; fi
fi
@@ -194,7 +217,7 @@
section=$i
curdir=$mandir/${pages}$i
export section verbose curdir
- find $mandir/${pages}$i/. -name '*' $findarg0 $findarg -print | $AWK '
+ find $mandir/${pages}$i/. -name '*' $findarg0 $findarg -print | LC_ALL=C $AWK -v MAN_NAME="$MAN_NAME" -v MAN_DESCRIPTION="$MAN_DESCRIPTION" '
function readline() {
if (use_zcat || use_bzcat) {
@@ -261,13 +284,7 @@
gsub(/.\b/, "");
if (($1 ~ /^\.[Ss][Hh]/ &&
($2 ~ /[Nn][Aa][Mm][Ee]/ ||
- $2 ~ /^JM<4A>NO/ || $2 ~ /^NAVN/ || $2 ~ /^NUME/ ||
- $2 ~ /^BEZEICHNUNG/ || $2 ~ /^NOMBRE/ ||
- $2 ~ /^NIMI/ || $2 ~ /^NOM/ || $2 ~ /^IME/ ||
- $2 ~ /^N[<5B>E]V/ || $2 ~ /^NAMA/ || $2 ~ /^̾<><CCBE>/ ||
- $2 ~ /^̾<><CCBE>/ || $2 ~ /^<5E≯<EFBFBD>/ || $2 ~ /^NAZWA/ ||
- $2 ~ /^<5E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/ || $2 ~ /^<5E><><EFBFBD><EFBFBD>/ || $2 ~ /^<5E>W<EFBFBD><57>/ ||
- $2 ~ /^NOME/ || $2 ~ /^NAAM/ || $2 ~ /^<5E><><EFBFBD>/)) ||
+ $2 ~ MAN_NAME )) ||
(pages == "cat" && $1 ~ /^NAME/)) {
if (!insh) {
insh = 1;
@@ -278,6 +295,7 @@
if ($1 ~ /^\.[Ss][HhYS]/ ||
(pages == "cat" &&
($1 ~ /^S[yYeE]/ || $1 ~ /^DESCRIPTION/ ||
+ $1 ~ MAN_DESCRIPTION ||
$1 ~ /^COMMAND/ || $1 ~ /^OVERVIEW/ ||
$1 ~ /^STRUCTURES/ || $1 ~ /^INTRODUCTION/ ||
$0 ~ /^[^ ]/))) {

View File

@@ -0,0 +1,142 @@
diff -Naurp man-1.6e/configure man-1.6e.oden/configure
--- man-1.6e/configure 2008-12-21 19:20:51.000000000 +0100
+++ man-1.6e.oden/configure 2008-12-21 19:20:32.000000000 +0100
@@ -1027,7 +1027,7 @@ then
then
DO_COMPRESSION=true
compress=
- for i in bzip2 gzip bzip tzip pack compress freeze yabba
+ for i in xz lzma bzip2 gzip bzip tzip pack compress freeze yabba
do
eval F$i=missing
for j in $DEFPATH
@@ -1080,6 +1080,8 @@ then
fi
case $compress in
+ *xz*) ext=".xz" ;;
+ *lzma*) ext=".lzma" ;;
*bzip2*) ext=".bz2" ;;
*gzip*) ext=".gz" ;;
*bzip*) ext=".bz" ;;
@@ -1122,7 +1124,7 @@ then
fi
# unconditionally handle uncompression
-UNCOMPRESSORS="gunzip bzip2 pcat zcat fcat unyabba"
+UNCOMPRESSORS="unxz unlzma gunzip bzip2 pcat zcat fcat unyabba"
for i in $UNCOMPRESSORS
do
eval F$i=missing
@@ -1143,6 +1146,14 @@ bzip2=missing
if [ $Fbzip2 != missing ]; then
bzip2="$Fbzip2 -c -d"
fi
+unxz=missing
+if [ $Funxz != missing ]; then
+ unxz="$Funxz -c -d"
+fi
+unlzma=missing
+if [ $Funlzma != missing ]; then
+ unlzma="$Funlzma -c -d"
+fi
pcat="$Fpcat"
zcat="$Fzcat"
fcat="$Ffcat"
@@ -1171,6 +1181,12 @@ if [ x$default = x ]; then
bzip2)
echo "Command to use for .bz2 files (standard bzip2)"
echo $n "[`eval echo \\$$filter`] $c" ;;
+ xz)
+ echo "Command to use for .xz files (standard xz)"
+ echo $n "[`eval echo \\$$filter`] $c" ;;
+ lzma)
+ echo "Command to use for .lzma files (standard lzma)"
+ echo $n "[`eval echo \\$$filter`] $c" ;;
pcat)
echo "Command to use for .z files (pack/unpack)"
echo $n "[`eval echo \\$$filter`] $c" ;;
@@ -1232,6 +1248,8 @@ fi
case $compress_ext in
.gz) decompress=$gunzip ;;
.bz2) decompress=$bzip2 ;;
+ .xz) decompress=$unlzma ;;
+ .lzma) decompress=$unlzma ;;
.z) decompress=$pcat ;;
.Z) decompress=$zcat ;;
.F) decompress=$fcat ;;
@@ -1319,6 +1337,8 @@ s,@pcat@,$pcat,
s,@zcat@,$zcat,
s,@gunzip@,$gunzip,
s,@bzip2@,$bzip2,
+s,@unlzma@,$unlzma,
+s,@unxz@,$unxz,
s,@unyabba@,$unyabba,
s,@compress@,$compress,
s,@compress_ext@,$compress_ext,
diff -Naurp man-1.6e/src/makewhatis.sh man-1.6e.oden/src/makewhatis.sh
--- man-1.6e/src/makewhatis.sh 2008-12-21 19:20:51.000000000 +0100
+++ man-1.6e.oden/src/makewhatis.sh 2008-12-21 19:20:32.000000000 +0100
@@ -220,7 +220,7 @@ do
find $mandir/${pages}$i/. -name '*' $findarg0 $findarg -print | LC_ALL=C $AWK -v MAN_NAME="$MAN_NAME" -v MAN_DESCRIPTION="$MAN_DESCRIPTION" '
function readline() {
- if (use_zcat || use_bzcat) {
+ if (use_zcat || use_bzcat || use_lzcat || use_xzcat) {
result = (pipe_cmd | getline);
if (result < 0) {
print "Pipe error: " pipe_cmd " " ERRNO > "/dev/stderr";
@@ -235,7 +235,7 @@ do
}
function closeline() {
- if (use_zcat || use_bzcat) {
+ if (use_zcat || use_bzcat || use_lzcat || use_xzcat) {
return close(pipe_cmd);
} else {
return close(filename);
@@ -254,7 +254,11 @@ do
match(filename,"\\.z$") || match(filename,"\\.gz$");
if (!use_zcat)
use_bzcat = match(filename,"\\.bz2");
- if (use_zcat || use_bzcat) {
+ if(!use_bzcat)
+ use_lzcat = match(filename,"\\.lzma");
+ if(!use_lzcat)
+ use_xzcat = match(filename,"\\.xz");
+ if (use_zcat || use_bzcat || use_lzcat || use_xz_cat) {
filename_no_gz = substr(filename, 0, RSTART - 1);
} else {
filename_no_gz = filename;
@@ -267,12 +271,16 @@ do
actual_section = section;
}
sub(/\..*/, "", progname);
- if (use_zcat || use_bzcat) {
+ if (use_zcat || use_bzcat || use_lzcat || use_xz_cat) {
if (use_zcat) {
pipe_cmd = "zcat \"" filename "\"";
- } else {
+ } else if (use_bzcat) {
pipe_cmd = "bzcat \"" filename "\"";
- }
+ } else if (use_lzcat) {
+ pipe_cmd = "lzcat \"" filename "\"";
+ } else {
+ pipe_cmd = "xzcat \"" filename "\"";
+ }
# try to avoid suspicious stuff
if (filename ~ /[;&|`$(]/) {
print "ignored strange file name " filename " in " curdir > "/dev/stderr";
diff -Naurp man-1.6e/src/man.conf.in man-1.6e.oden/src/man.conf.in
--- man-1.6e/src/man.conf.in 2008-12-21 19:20:51.000000000 +0100
+++ man-1.6e.oden/src/man.conf.in 2008-12-21 19:20:32.000000000 +0100
@@ -139,6 +139,8 @@ MANSECT @sections@
#
.gz @gunzip@
.bz2 @bzip2@
+.lzma @unlzma@
+.xz @unxz@
.z @pcat@
.Z @zcat@
.F @fcat@

View File

@@ -0,0 +1,27 @@
--- man-1.6e.orig/src/man.conf.in 2005-08-20 20:26:06.000000000 -0300
+++ man-1.6e/src/man.conf.in 2007-05-18 10:30:29.000000000 -0300
@@ -36,11 +36,12 @@
#
# Every automatically generated MANPATH includes these fields
#
-MANPATH /usr/man
MANPATH /usr/share/man
+MANPATH /usr/X11R6/man
MANPATH /usr/local/man
MANPATH /usr/local/share/man
-MANPATH /usr/X11R6/man
+MANPATH /usr/kerberos/man
+MANPATH /usr/man
#
# Uncomment if you want to include one of these by default
#
@@ -67,6 +68,9 @@
MANPATH_MAP /usr/X11R6/bin /usr/X11R6/man
MANPATH_MAP /usr/bin/X11 /usr/X11R6/man
MANPATH_MAP /usr/bin/mh /usr/share/man
+MANPATH_MAP /usr/kerberos/bin /usr/kerberos/man
+MANPATH_MAP /usr/kerberos/sbin /usr/kerberos/man
+
#
# NOAUTOPATH keeps man from automatically adding directories that look like
# manual page directories to the path.

View File

@@ -0,0 +1,11 @@
--- man-1.6e.orig/configure 2006-05-01 14:56:14.000000000 -0300
+++ man-1.6e/configure 2007-05-18 14:35:43.000000000 -0300
@@ -960,7 +960,7 @@
# What sections do we anticipate?
-tmpsections="1 1p 8 2 3 3p 4 5 6 7 9 0p tcl n l p o"
+tmpsections="1 1p 8 2 3 3p 3pm 4 5 6 7 9 0p tcl n l p o"
if [ x$default = x ]; then
echo ""

View File

@@ -0,0 +1,67 @@
--- man-1.6e.orig/src/makewhatis.sh 2006-07-19 01:58:08.000000000 -0300
+++ man-1.6e/src/makewhatis.sh 2007-05-18 10:54:57.000000000 -0300
@@ -124,7 +124,7 @@
continue;;
-s) setsections=1
continue;;
- -u) findarg="-ctime 0"
+ -u) findarg="-newer /var/cache/man/whatis"
update=1
continue;;
-v) verbose=1
@@ -165,14 +165,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
@@ -184,11 +177,6 @@
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
here=`pwd`
cd $mandir
for i in $sections
@@ -407,23 +395,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
- tr -s '\n' < $TMPFILE | sort -u > ${mandir1}/whatis
+ tr -s '\n' < $TMPFILE | sort -u > /var/cache/man/whatis
- chmod 644 ${mandir1}/whatis
+ chmod 644 /var/cache/man/whatis
rm $TMPFILE
- fi
done
done

View File

@@ -0,0 +1,58 @@
diff -Naur man-1.6e.orig/src/makewhatis.sh man-1.6e/src/makewhatis.sh
--- man-1.6e.orig/src/makewhatis.sh 2006-07-19 01:58:08.000000000 -0300
+++ man-1.6e/src/makewhatis.sh 2007-05-18 10:18:31.000000000 -0300
@@ -45,7 +45,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 /usr/X11R6/man /usr/local/man
+for d in /usr/share/man /usr/man /usr/X11R6/man /usr/local/man
do
if [ -d $d ]; then
if [ x$dm = x ]; then dm=$d; else dm=$dm:$d; fi
@@ -53,7 +53,7 @@
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 /usr/share/man /usr/man
do
if [ -d $d ]; then
if [ x$dc = x ]; then dc=$d; else dc=$dc:$d; fi
@@ -76,12 +76,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
diff -Naur man-1.6e.orig/src/man.c man-1.6e/src/man.c
--- man-1.6e.orig/src/man.c 2006-05-01 17:34:22.000000000 -0300
+++ man-1.6e/src/man.c 2007-05-18 10:11:33.000000000 -0300
@@ -1234,7 +1234,6 @@
#endif
-#if 0
{
/* There are no known cases of buffer overflow caused by
excessively long environment variables. In case you find one,
@@ -1257,7 +1256,6 @@
MAN_ICONV_PATH, MAN_ICONV_OPT, MAN_ICONV_INPUT_CHARSET,
MAN_ICONV_OUTPUT_CHARSET, NLSPATH, PATH */
}
-#endif
#ifndef __FreeBSD__

View File

@@ -0,0 +1,156 @@
diff -Naur man-1.6e.orig/catopen/catopen.c man-1.6e/catopen/catopen.c
--- man-1.6e.orig/catopen/catopen.c 2005-08-20 20:26:06.000000000 -0300
+++ man-1.6e/catopen/catopen.c 2007-05-18 11:31:05.000000000 -0300
@@ -9,22 +9,63 @@
extern char *index (const char *, int); /* not always in <string.h> */
extern char *my_malloc(int); /* in util.c */
+/* if the program has sgid/suid privileges then getenv doesn't return
+ * NLSPATH; so we set here a good default value.
+ */
#ifndef DEFAULT_NLSPATH
# if __GLIBC__ >= 2
-# define DEFAULT_NLSPATH "/usr/share/locale/%L/%N"
+# define DEFAULT_NLSPATH "/usr/share/locale/%L/%N:/usr/share/locale/%l_%t/%N:/usr/share/locale/%l/%N"
# else
# define DEFAULT_NLSPATH "/usr/lib/locale/%N/%L"
# endif
#endif
-static nl_catd my_catopenpath(char *name, char *path);
+static nl_catd my_catopenpath(char *name, char *path, char *lang);
static /* this source included in gripes.c */
nl_catd
my_catopen(char *name, int oflag) {
- nl_catd fd;
+ nl_catd fd = (nl_catd) -1;
+
+ /* using first the my_catopenpath, which looks with LANGUAGE
+ * and only if it fails ressort to catopen, it gives better i18n
+ */
+ {
+ char *nlspath, *lang, *s;
- fd = catopen(name, oflag);
+ /*
+ * "If NLSPATH does not exist in the environment, or if a
+ * message catalog cannot be opened in any of the paths specified
+ * by NLSPATH, then an implementation defined default path is used"
+ */
+ nlspath = getenv("NLSPATH");
+ if (!nlspath)
+ nlspath = DEFAULT_NLSPATH;
+
+ lang = getenv("LANGUAGE");
+ if (!lang)
+ lang = getenv("LC_ALL");
+ if (!lang)
+ lang = getenv("LC_MESSAGES");
+ if (!lang)
+ lang = getenv("LANG");
+ if (!lang)
+ lang = "";
+
+ while(*lang && (fd == (nl_catd) -1)) {
+ s = index(lang, ':');
+ if (s) *s = 0;
+ fd = my_catopenpath(name, nlspath, lang);
+ if (s) lang=s+1;
+ else lang = "";
+ }
+ if (fd == (nl_catd) -1)
+ fd = my_catopenpath(name, nlspath, "en");
+ }
+
+ /* still not found, use the system catopen */
+ if (fd == (nl_catd) -1)
+ fd = catopen(name, oflag);
if (fd == (nl_catd) -1 && oflag) {
oflag = 0;
@@ -32,8 +73,6 @@
}
if (fd == (nl_catd) -1) {
- char *nlspath;
-
/* The libc catopen fails - let us see if we can do better */
/* The quotes below are from X/Open, XPG 1987, Vol. 3. */
@@ -58,17 +97,6 @@
#endif
}
- /*
- * "If NLSPATH does not exist in the environment, or if a
- * message catalog cannot be opened in any of the paths specified
- * by NLSPATH, then an implementation defined default path is used"
- */
-
- nlspath = getenv("NLSPATH");
- if (nlspath)
- fd = my_catopenpath(name, nlspath);
- if (fd == (nl_catd) -1)
- fd = my_catopenpath(name, DEFAULT_NLSPATH);
}
return fd;
}
@@ -90,15 +118,13 @@
*
*/
static nl_catd
-my_catopenpath(char *name, char *nlspath) {
- int fd;
+my_catopenpath(char *name, char *nlspath, char *lang) {
nl_catd cfd = (nl_catd) -1;
- char *path0, *path, *s, *file, *lang, *lang_l, *lang_t, *lang_c;
+ char *path0, *path, *s, *file, *lang_l, *lang_t, *lang_c;
int langsz, namesz, sz, lang_l_sz, lang_t_sz, lang_c_sz;
namesz = strlen(name);
- lang = getenv("LANG");
if (!lang)
lang = "";
langsz = strlen(lang);
@@ -194,14 +220,9 @@
path = s+1;
} else
path = 0;
- fd = open(file, O_RDONLY);
- if (fd != -1) {
- /* we found the right catalog - but we don't know the
- type of nl_catd, so close it again and ask libc */
- close(fd);
- cfd = catopen(file, 0);
- break;
- }
+ cfd = catopen(file, 0);
+ if (cfd != (nl_catd) -1)
+ break;
}
free(path0);
diff -Naur man-1.6e.orig/src/manpath.c man-1.6e/src/manpath.c
--- man-1.6e.orig/src/manpath.c 2006-08-03 18:18:33.000000000 -0300
+++ man-1.6e/src/manpath.c 2007-05-18 11:02:48.000000000 -0300
@@ -282,13 +282,14 @@
/* We cannot use "lang = setlocale(LC_MESSAGES, NULL)" or so:
the return value of setlocale is an opaque string. */
/* POSIX prescribes the order: LC_ALL, LC_MESSAGES, LANG */
- if((lang = getenv("LC_ALL")) != NULL)
+ /* LANGUAGE is GNU/Linux and overrules all */
+ if((lang = getenv("LANGUAGE")) != NULL)
split2(dir, lang, add_to_mandirlist_x, perrs);
- if((lang = getenv("LC_MESSAGES")) != NULL)
+ else if((lang = getenv("LC_ALL")) != NULL)
split2(dir, lang, add_to_mandirlist_x, perrs);
- if((lang = getenv("LANG")) != NULL)
+ else if((lang = getenv("LC_MESSAGES")) != NULL)
split2(dir, lang, add_to_mandirlist_x, perrs);
- if((lang = getenv("LANGUAGE")) != NULL)
+ else if((lang = getenv("LANG")) != NULL)
split2(dir, lang, add_to_mandirlist_x, perrs);
add_to_mandirlist_x(dir, 0, perrs);
}

View File

@@ -0,0 +1,37 @@
--- man-1.6e-ro_usr/src/makewhatis.sh 2007-05-18 11:41:50.000000000 -0300
+++ man-1.6e/src/makewhatis.sh 2007-05-18 13:27:16.000000000 -0300
@@ -162,10 +162,15 @@
fi
catpath=`echo ${catpath} | tr : ' '`
+#WHATIS_DIR=$DESTDIR/var/cache/man/`echo $here|sed -e 's!.*/man/!!g'`
+WHATIS_DIR=$DESTDIR/var/cache/man/$LANG
+[[ -d $WHATIS_DIR ]] || mkdir -p $WHATIS_DIR/
+
# 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
- cp /dev/null /var/cache/man/whatis
+ mkdir -p $WHATIS_DIR/
+ /bin/echo -n > $WHATIS_DIR/whatis
fi
for pages in man cat
@@ -395,13 +400,13 @@
cd $here
- if [ -f /var/cache/man/whatis ]
+ if [ -f $WHATIS_DIR/whatis ]
then
- cat /var/cache/man/whatis >> $TMPFILE
+ cat $WHATIS_DIR/whatis >> $TMPFILE
fi
- tr -s '\n' < $TMPFILE | sort -u > /var/cache/man/whatis
+ tr -s '\n' < $TMPFILE | sort -u > $WHATIS_DIR/whatis
- chmod 644 /var/cache/man/whatis
+ chmod 644 $WHATIS_DIR/whatis
rm $TMPFILE
done
done

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,61 @@
DESCRIPTION = "A set of documentation tools: man, apropos and whatis"
SECTION = "console/utils"
HOMEPAGE = "http://primates.ximian.com/~flucifredi/man"
PRIORITY = "required"
LICENSE = "GPLv2"
PR = "r0"
DEPENDS = "groff less"
LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
SRC_URI = "http://primates.ximian.com/~flucifredi/man/man-1.6e.tar.gz \
file://man-1.5k-confpath.patch;striplevel=0 \
file://man-1.5h1-make.patch;striplevel=1 \
file://man-1.5k-nonascii.patch;striplevel=1 \
file://man-1.6e-security.patch;striplevel=1 \
file://man-1.6e-mandirs.patch;striplevel=1 \
file://man-1.5m2-bug11621.patch;striplevel=1 \
file://man-1.5k-sofix.patch;striplevel=1 \
file://man-1.5m2-buildroot.patch;striplevel=1 \
file://man-1.6e-ro_usr.patch;striplevel=1 \
file://man-1.5i2-newline.patch;striplevel=0 \
file://man-1.5j-utf8.patch;striplevel=1 \
file://man-1.5i2-overflow.patch;striplevel=1 \
file://man-1.5j-nocache.patch;striplevel=1 \
file://man-1.5i2-initial.patch;striplevel=1 \
file://man-1.5h1-gencat.patch;striplevel=0 \
file://man-1.5g-nonrootbuild.patch;striplevel=1 \
file://man-1.5m2-tv_fhs.patch;striplevel=0 \
file://man-1.5j-i18n.patch;striplevel=1 \
file://man-1.6e-whatis2.patch;striplevel=1 \
file://man-1.6e-use_i18n_vars_in_a_std_way.patch;striplevel=1 \
file://man-1.5m2-no-color-for-printing.patch;striplevel=1 \
file://man-1.5m2-sigpipe.patch;striplevel=1 \
file://man-1.6e-i18n_whatis.patch;striplevel=1 \
file://man-1.6e-new_sections.patch;striplevel=1 \
file://man-1.6e-lzma+xz-support.patch;striplevel=1 \
file://man*"
do_configure () {
${S}/configure -default -confdir ${D}/etc +sgid +fhs +lang all
}
fakeroot do_install() {
oe_runmake install DESTDIR=${D}
}
do_install_append(){
mkdir -p ${D}/etc/
mkdir -p ${D}${datadir}/man/man5
mkdir -p ${D}${datadir}/man/man7
cp ${S}/src/man.conf ${D}/etc/
cp ${WORKDIR}/man.1.gz ${D}${datadir}/man/man1/
cp ${WORKDIR}/man.7.gz ${D}${datadir}/man/man7/
cp ${WORKDIR}/manpath.5.gz ${D}${datadir}/man/man5/
}
FILES_${PN} += "${datadir}/locale"