[3eeef443] | 1 | Submitted By: Joe Ciccone <jciccone@gmail.com> |
---|
| 2 | Date: 2011-01-08 |
---|
[b0c96c6] | 3 | Initial Package Version: 1.6f |
---|
| 4 | Upstream Status: Unkown |
---|
| 5 | Origin: Mandriva |
---|
| 6 | Description: i18n Updates |
---|
| 7 | |
---|
[3eeef443] | 8 | diff -Naur man-1.6g.orig/catopen/catopen.c man-1.6g/catopen/catopen.c |
---|
| 9 | --- man-1.6g.orig/catopen/catopen.c 2005-08-20 19:26:06.000000000 -0400 |
---|
| 10 | +++ man-1.6g/catopen/catopen.c 2011-01-08 20:29:31.874658039 -0500 |
---|
[b0c96c6] | 11 | @@ -9,22 +9,63 @@ |
---|
| 12 | extern char *index (const char *, int); /* not always in <string.h> */ |
---|
| 13 | extern char *my_malloc(int); /* in util.c */ |
---|
| 14 | |
---|
| 15 | +/* if the program has sgid/suid privileges then getenv doesn't return |
---|
| 16 | + * NLSPATH; so we set here a good default value. |
---|
| 17 | + */ |
---|
| 18 | #ifndef DEFAULT_NLSPATH |
---|
| 19 | # if __GLIBC__ >= 2 |
---|
| 20 | -# define DEFAULT_NLSPATH "/usr/share/locale/%L/%N" |
---|
| 21 | +# define DEFAULT_NLSPATH "/usr/share/locale/%L/%N:/usr/share/locale/%l_%t/%N:/usr/share/locale/%l/%N" |
---|
| 22 | # else |
---|
| 23 | # define DEFAULT_NLSPATH "/usr/lib/locale/%N/%L" |
---|
| 24 | # endif |
---|
| 25 | #endif |
---|
| 26 | |
---|
| 27 | -static nl_catd my_catopenpath(char *name, char *path); |
---|
| 28 | +static nl_catd my_catopenpath(char *name, char *path, char *lang); |
---|
| 29 | |
---|
| 30 | static /* this source included in gripes.c */ |
---|
| 31 | nl_catd |
---|
| 32 | my_catopen(char *name, int oflag) { |
---|
| 33 | - nl_catd fd; |
---|
| 34 | + nl_catd fd = (nl_catd) -1; |
---|
| 35 | + |
---|
| 36 | + /* using first the my_catopenpath, which looks with LANGUAGE |
---|
| 37 | + * and only if it fails ressort to catopen, it gives better i18n |
---|
| 38 | + */ |
---|
| 39 | + { |
---|
| 40 | + char *nlspath, *lang, *s; |
---|
| 41 | |
---|
| 42 | - fd = catopen(name, oflag); |
---|
| 43 | + /* |
---|
| 44 | + * "If NLSPATH does not exist in the environment, or if a |
---|
| 45 | + * message catalog cannot be opened in any of the paths specified |
---|
| 46 | + * by NLSPATH, then an implementation defined default path is used" |
---|
| 47 | + */ |
---|
| 48 | + nlspath = getenv("NLSPATH"); |
---|
| 49 | + if (!nlspath) |
---|
| 50 | + nlspath = DEFAULT_NLSPATH; |
---|
| 51 | + |
---|
| 52 | + lang = getenv("LANGUAGE"); |
---|
| 53 | + if (!lang) |
---|
| 54 | + lang = getenv("LC_ALL"); |
---|
| 55 | + if (!lang) |
---|
| 56 | + lang = getenv("LC_MESSAGES"); |
---|
| 57 | + if (!lang) |
---|
| 58 | + lang = getenv("LANG"); |
---|
| 59 | + if (!lang) |
---|
| 60 | + lang = ""; |
---|
| 61 | + |
---|
| 62 | + while(*lang && (fd == (nl_catd) -1)) { |
---|
| 63 | + s = index(lang, ':'); |
---|
| 64 | + if (s) *s = 0; |
---|
| 65 | + fd = my_catopenpath(name, nlspath, lang); |
---|
| 66 | + if (s) lang=s+1; |
---|
| 67 | + else lang = ""; |
---|
| 68 | + } |
---|
| 69 | + if (fd == (nl_catd) -1) |
---|
| 70 | + fd = my_catopenpath(name, nlspath, "en"); |
---|
| 71 | + } |
---|
| 72 | + |
---|
| 73 | + /* still not found, use the system catopen */ |
---|
| 74 | + if (fd == (nl_catd) -1) |
---|
| 75 | + fd = catopen(name, oflag); |
---|
| 76 | |
---|
| 77 | if (fd == (nl_catd) -1 && oflag) { |
---|
| 78 | oflag = 0; |
---|
| 79 | @@ -32,8 +73,6 @@ |
---|
| 80 | } |
---|
| 81 | |
---|
| 82 | if (fd == (nl_catd) -1) { |
---|
| 83 | - char *nlspath; |
---|
| 84 | - |
---|
| 85 | /* The libc catopen fails - let us see if we can do better */ |
---|
| 86 | /* The quotes below are from X/Open, XPG 1987, Vol. 3. */ |
---|
| 87 | |
---|
| 88 | @@ -58,17 +97,6 @@ |
---|
| 89 | #endif |
---|
| 90 | } |
---|
| 91 | |
---|
| 92 | - /* |
---|
| 93 | - * "If NLSPATH does not exist in the environment, or if a |
---|
| 94 | - * message catalog cannot be opened in any of the paths specified |
---|
| 95 | - * by NLSPATH, then an implementation defined default path is used" |
---|
| 96 | - */ |
---|
| 97 | - |
---|
| 98 | - nlspath = getenv("NLSPATH"); |
---|
| 99 | - if (nlspath) |
---|
| 100 | - fd = my_catopenpath(name, nlspath); |
---|
| 101 | - if (fd == (nl_catd) -1) |
---|
| 102 | - fd = my_catopenpath(name, DEFAULT_NLSPATH); |
---|
| 103 | } |
---|
| 104 | return fd; |
---|
| 105 | } |
---|
| 106 | @@ -90,15 +118,13 @@ |
---|
| 107 | * |
---|
| 108 | */ |
---|
| 109 | static nl_catd |
---|
| 110 | -my_catopenpath(char *name, char *nlspath) { |
---|
| 111 | - int fd; |
---|
| 112 | +my_catopenpath(char *name, char *nlspath, char *lang) { |
---|
| 113 | nl_catd cfd = (nl_catd) -1; |
---|
| 114 | - char *path0, *path, *s, *file, *lang, *lang_l, *lang_t, *lang_c; |
---|
| 115 | + char *path0, *path, *s, *file, *lang_l, *lang_t, *lang_c; |
---|
| 116 | int langsz, namesz, sz, lang_l_sz, lang_t_sz, lang_c_sz; |
---|
| 117 | |
---|
| 118 | namesz = strlen(name); |
---|
| 119 | |
---|
| 120 | - lang = getenv("LANG"); |
---|
| 121 | if (!lang) |
---|
| 122 | lang = ""; |
---|
| 123 | langsz = strlen(lang); |
---|
| 124 | @@ -194,14 +220,9 @@ |
---|
| 125 | path = s+1; |
---|
| 126 | } else |
---|
| 127 | path = 0; |
---|
| 128 | - fd = open(file, O_RDONLY); |
---|
| 129 | - if (fd != -1) { |
---|
| 130 | - /* we found the right catalog - but we don't know the |
---|
| 131 | - type of nl_catd, so close it again and ask libc */ |
---|
| 132 | - close(fd); |
---|
| 133 | - cfd = catopen(file, 0); |
---|
| 134 | - break; |
---|
| 135 | - } |
---|
| 136 | + cfd = catopen(file, 0); |
---|
| 137 | + if (cfd != (nl_catd) -1) |
---|
| 138 | + break; |
---|
| 139 | } |
---|
| 140 | |
---|
| 141 | free(path0); |
---|
[3eeef443] | 142 | diff -Naur man-1.6g.orig/configure man-1.6g/configure |
---|
| 143 | --- man-1.6g.orig/configure 2010-12-31 15:28:46.000000000 -0500 |
---|
| 144 | +++ man-1.6g/configure 2011-01-08 20:29:31.874658039 -0500 |
---|
| 145 | @@ -416,9 +416,9 @@ |
---|
[b0c96c6] | 146 | fi |
---|
| 147 | done |
---|
| 148 | done |
---|
| 149 | - troff="" |
---|
| 150 | - nroff="" |
---|
| 151 | - jnroff="" |
---|
| 152 | + troff=/usr/bin/troff |
---|
| 153 | + nroff=/usr/bin/nroff |
---|
| 154 | + jnroff=/usr/bin/nroff |
---|
| 155 | eqn="" |
---|
| 156 | neqn="" |
---|
| 157 | jneqn="" |
---|
[3eeef443] | 158 | @@ -476,29 +476,32 @@ |
---|
[b0c96c6] | 159 | done |
---|
| 160 | # -Tlatin1 is bad when utf8 is used, but needed for groff, not for nroff |
---|
| 161 | # Hmm - also needed for nroff, to prevent double conversion on uxterm |
---|
| 162 | + Fgroff=/usr/bin/groff |
---|
| 163 | + Fnroff=/usr/bin/nroff |
---|
| 164 | + Fjnroff=/usr/bin/nroff |
---|
| 165 | if test $Fgroff = "missing" |
---|
| 166 | then |
---|
| 167 | if test $Fnroff = "missing" |
---|
| 168 | then |
---|
| 169 | - nroff="nroff -Tlatin1 -mandoc" |
---|
| 170 | + nroff="nroff -Tutf8 -mandoc" |
---|
| 171 | else |
---|
| 172 | - nroff="$Fnroff -Tlatin1 -mandoc" |
---|
| 173 | + nroff="$Fnroff -Tutf8 -mandoc" |
---|
| 174 | fi |
---|
| 175 | troff="troff -mandoc" |
---|
| 176 | echo "Warning: could not find groff" |
---|
| 177 | else |
---|
| 178 | if test $Fnroff = "missing" |
---|
| 179 | then |
---|
| 180 | - nroff="$Fgroff -Tlatin1 -mandoc" |
---|
| 181 | + nroff="$Fgroff -Tutf8 -mandoc" |
---|
| 182 | else |
---|
| 183 | - nroff="$Fnroff -Tlatin1 -mandoc" |
---|
| 184 | + nroff="$Fnroff -Tutf8 -mandoc" |
---|
| 185 | fi |
---|
| 186 | troff="$Fgroff -Tps -mandoc" |
---|
| 187 | - jnroff="$Fgroff -Tnippon -mandocj" |
---|
| 188 | + jnroff="$Fjnroff -Tutf8 -mandocj" |
---|
| 189 | fi |
---|
| 190 | eqn="$Fgeqn -Tps" |
---|
| 191 | - neqn="$Fgeqn -Tlatin1" |
---|
| 192 | - jneqn="$Fgeqn -Tnippon" |
---|
| 193 | + neqn="$Fgeqn -Tutf8" |
---|
| 194 | + jneqn="$Fgeqn -Tutf8" |
---|
| 195 | tbl="$Fgtbl" |
---|
| 196 | col="$Fcol" |
---|
| 197 | vgrind="$Fvgrind" |
---|
[3eeef443] | 198 | @@ -964,7 +967,7 @@ |
---|
[b0c96c6] | 199 | |
---|
| 200 | # What sections do we anticipate? |
---|
| 201 | |
---|
| 202 | -tmpsections="1 1p 8 2 3 3p 4 5 6 7 9 0p tcl n l p o" |
---|
| 203 | +tmpsections="1 1p 8 2 3 3p 3pm 4 5 6 7 9 0p tcl n l p o" |
---|
| 204 | |
---|
| 205 | if [ x$default = x ]; then |
---|
| 206 | echo "" |
---|
[3eeef443] | 207 | diff -Naur man-1.6g.orig/msgs/inst.sh man-1.6g/msgs/inst.sh |
---|
| 208 | --- man-1.6g.orig/msgs/inst.sh 2005-08-20 19:26:06.000000000 -0400 |
---|
| 209 | +++ man-1.6g/msgs/inst.sh 2011-01-08 20:29:31.874658039 -0500 |
---|
[b0c96c6] | 210 | @@ -27,8 +27,7 @@ |
---|
| 211 | for j in $M; do |
---|
| 212 | if [ -f $j ]; then |
---|
| 213 | i=`echo $j | sed -e 's/mess.//; s/.cat//'` |
---|
| 214 | - dest=`echo $locdir | sed -e "s/%N/man/; s/%L/$i/"` |
---|
| 215 | - dest=${PREFIX}$dest |
---|
| 216 | + dest=${PREFIX}/`echo $locdir | sed -e "s/%N/man/; s/%L/$i/"` |
---|
| 217 | echo "mkdir -p `dirname $dest`" |
---|
| 218 | mkdir -p `dirname $dest`; |
---|
| 219 | echo "install -c -m 644 $j $dest" |
---|
[3eeef443] | 220 | diff -Naur man-1.6g.orig/src/apropos.sh man-1.6g/src/apropos.sh |
---|
| 221 | --- man-1.6g.orig/src/apropos.sh 2005-08-20 19:26:06.000000000 -0400 |
---|
| 222 | +++ man-1.6g/src/apropos.sh 2011-01-08 20:29:31.874658039 -0500 |
---|
[b0c96c6] | 223 | @@ -60,16 +60,56 @@ |
---|
| 224 | esac |
---|
| 225 | done |
---|
| 226 | |
---|
| 227 | +# list of languages to look for |
---|
| 228 | +LANG_LIST=`echo $LANGUAGE:$LC_ALL:$LC_MESSAGES:$LANG | tr ':' ' '` |
---|
| 229 | +DIR_LIST="" |
---|
| 230 | +for d in /var/cache/man $manpath /usr/lib |
---|
| 231 | +do |
---|
| 232 | + for l in $LANG_LIST |
---|
| 233 | + do |
---|
| 234 | + if [ -d $d/$l ] |
---|
| 235 | + then |
---|
| 236 | + # check that the path is not already in the list |
---|
| 237 | + if ! echo "$DIR_LIST" | grep " $d/$l\b" > /dev/null |
---|
| 238 | + then |
---|
| 239 | + DIR_LIST="$DIR_LIST $d/$l" |
---|
| 240 | + fi |
---|
| 241 | + fi |
---|
| 242 | + done |
---|
| 243 | + DIR_LIST="$DIR_LIST $d" |
---|
| 244 | + # check that the path is not already in the list |
---|
| 245 | + if ! echo "$DIR_LIST" | grep " $d\b" > /dev/null |
---|
| 246 | + then |
---|
| 247 | + DIR_LIST="$DIR_LIST $d/$l" |
---|
| 248 | + fi |
---|
| 249 | +done |
---|
| 250 | + |
---|
| 251 | while [ "$1" != "" ] |
---|
| 252 | do |
---|
| 253 | found=0 |
---|
| 254 | - for d in /var/cache/man $manpath /usr/lib |
---|
| 255 | + # in order not to display lines in more than one language for |
---|
| 256 | + # a same man page; we check that a given man page name |
---|
| 257 | + # hasn't already been displayed |
---|
| 258 | + BAZ="" |
---|
| 259 | + for d in $DIR_LIST |
---|
| 260 | do |
---|
| 261 | if [ -f $d/whatis ] |
---|
| 262 | then |
---|
| 263 | - if grep -"$grepopt1" "$grepopt2""$1" $d/whatis |
---|
| 264 | + if FOO=`grep -"$grepopt1" "$grepopt2""$1" $d/whatis` |
---|
| 265 | then |
---|
| 266 | - found=1 |
---|
| 267 | + # the LC_ALL=C is needed in case the text is |
---|
| 268 | + # in a different encoding than the locale |
---|
| 269 | + BAR=`echo -e "$FOO" | LC_ALL=C sed 's/ - .*$//' | tr ' []' '_' | sort -u` |
---|
| 270 | + for i in $BAR |
---|
| 271 | + do |
---|
| 272 | + if ! echo "$BAZ" | grep "$i" > /dev/null |
---|
| 273 | + then |
---|
| 274 | + BAZ="$BAZ $i" |
---|
| 275 | + i="^`echo $i | sed 's:_\+:\\\(\[_ \]\\\|\\\[\\\|\\\]\\\)\\\+:g'`" |
---|
| 276 | + echo -e "$FOO" | grep "$i" |
---|
| 277 | + found=1 |
---|
| 278 | + fi |
---|
| 279 | + done |
---|
| 280 | # Some people are satisfied with a single occurrence |
---|
| 281 | # But it is better to give all |
---|
| 282 | # break |
---|
[3eeef443] | 283 | diff -Naur man-1.6g.orig/src/makewhatis.sh man-1.6g/src/makewhatis.sh |
---|
| 284 | --- man-1.6g.orig/src/makewhatis.sh 2007-09-17 14:35:14.000000000 -0400 |
---|
| 285 | +++ man-1.6g/src/makewhatis.sh 2011-01-08 20:29:31.878656601 -0500 |
---|
[b0c96c6] | 286 | @@ -55,6 +55,9 @@ |
---|
| 287 | dc= |
---|
| 288 | for d in /usr/man/preformat /usr/man /usr/share/man/preformat /usr/share/man |
---|
| 289 | do |
---|
| 290 | + if [ -n "$LANG" -a -d "$d/$LANG" ]; then |
---|
| 291 | + if [ x$dc = x ]; then dm="$d/$LANG"; else dm=$dc:"$d/$LANG"; fi |
---|
| 292 | + fi |
---|
| 293 | if [ -d $d ]; then |
---|
| 294 | if [ x$dc = x ]; then dc=$d; else dc=$dc:$d; fi |
---|
| 295 | fi |
---|
| 296 | @@ -227,7 +230,7 @@ |
---|
| 297 | section=$i |
---|
| 298 | curdir=$mandir/${pages}$i |
---|
| 299 | export section verbose curdir |
---|
| 300 | - find $mandir/${pages}$i/. -name '*' $findarg0 $findarg -print | $AWK ' |
---|
| 301 | + find $mandir/${pages}$i/. -name '*' $findarg0 $findarg -print | LC_ALL=C $AWK -v MAN_NAME="$MAN_NAME" -v MAN_DESCRIPTION="$MAN_DESCRIPTION" ' |
---|
| 302 | |
---|
| 303 | function readline() { |
---|
| 304 | if (use_zcat || use_bzcat || use_lzcat) { |
---|
| 305 | @@ -315,6 +318,7 @@ |
---|
| 306 | if ($1 ~ /^\.[Ss][HhYS]/ || |
---|
| 307 | (pages == "cat" && |
---|
| 308 | ($1 ~ /^S[yYeE]/ || $1 ~ /^DESCRIPTION/ || |
---|
| 309 | + $1 ~ MAN_DESCRIPTION || |
---|
| 310 | $1 ~ /^COMMAND/ || $1 ~ /^OVERVIEW/ || |
---|
| 311 | $1 ~ /^STRUCTURES/ || $1 ~ /^INTRODUCTION/ || |
---|
| 312 | $0 ~ /^[^ ]/))) { |
---|
[3eeef443] | 313 | diff -Naur man-1.6g.orig/src/manpath.c man-1.6g/src/manpath.c |
---|
| 314 | --- man-1.6g.orig/src/manpath.c 2006-08-03 17:18:33.000000000 -0400 |
---|
| 315 | +++ man-1.6g/src/manpath.c 2011-01-08 20:29:31.878656601 -0500 |
---|
[b0c96c6] | 316 | @@ -282,13 +282,14 @@ |
---|
| 317 | /* We cannot use "lang = setlocale(LC_MESSAGES, NULL)" or so: |
---|
| 318 | the return value of setlocale is an opaque string. */ |
---|
| 319 | /* POSIX prescribes the order: LC_ALL, LC_MESSAGES, LANG */ |
---|
| 320 | - if((lang = getenv("LC_ALL")) != NULL) |
---|
| 321 | + /* LANGUAGE is GNU/Linux and overrules all */ |
---|
| 322 | + if((lang = getenv("LANGUAGE")) != NULL) |
---|
| 323 | split2(dir, lang, add_to_mandirlist_x, perrs); |
---|
| 324 | - if((lang = getenv("LC_MESSAGES")) != NULL) |
---|
| 325 | + else if((lang = getenv("LC_ALL")) != NULL) |
---|
| 326 | split2(dir, lang, add_to_mandirlist_x, perrs); |
---|
| 327 | - if((lang = getenv("LANG")) != NULL) |
---|
| 328 | + else if((lang = getenv("LC_MESSAGES")) != NULL) |
---|
| 329 | split2(dir, lang, add_to_mandirlist_x, perrs); |
---|
| 330 | - if((lang = getenv("LANGUAGE")) != NULL) |
---|
| 331 | + else if((lang = getenv("LANG")) != NULL) |
---|
| 332 | split2(dir, lang, add_to_mandirlist_x, perrs); |
---|
| 333 | add_to_mandirlist_x(dir, 0, perrs); |
---|
| 334 | } |
---|