aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-extended/man/man/man-1.6e-i18n_whatis.patch
blob: e321325d63f2e02bee5b52c57b0c2526b638d2e3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
Upstream-Status: Pending

Signed-off-by: Scott Garman <scott.a.garman@intel.com>

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�NO/ || $2 ~ /^NAVN/ || $2 ~ /^NUME/ ||
-		   $2 ~ /^BEZEICHNUNG/ || $2 ~ /^NOMBRE/ ||
-		   $2 ~ /^NIMI/ || $2 ~ /^NOM/ || $2 ~ /^IME/ ||
-		   $2 ~ /^N[�E]V/ || $2 ~ /^NAMA/ || $2 ~ /^̾��/ ||
-		   $2 ~ /^̾��/ || $2 ~ /^�̸�/ || $2 ~ /^NAZWA/ ||
-		   $2 ~ /^��������/ || $2 ~ /^����/ || $2 ~ /^�W��/ ||
-		   $2 ~ /^NOME/ || $2 ~ /^NAAM/ || $2 ~ /^���/)) ||
+		   $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 ~ /^[^ ]/))) {