Accepting request 49958 from M17N

checked in (request 49958)

OBS-URL: https://build.opensuse.org/request/show/49958
OBS-URL: https://build.opensuse.org/package/show/M17N/groff?expand=0&rev=9
This commit is contained in:
OBS User autobuild 2010-10-07 22:24:01 +00:00 committed by Git OBS Bridge
parent 3c9c9b30e0
commit 10247e8ec3
27 changed files with 841 additions and 1278 deletions

View File

@ -25,11 +25,6 @@ test -f /lib/YaST/SuSEconfig.functions || {
}
. /lib/YaST/SuSEconfig.functions
test -n "$UPDATE_GROFF_CONF" -a "$UPDATE_GROFF_CONF" = "no" && {
echo "Warning: UPDATE_GROFF_CONF is deprecated and might be removed in future"
echo "SuSEconfig.groff no longer rewrites user modified /etc/papersize"
}
test -n "$UPDATE_GROFF_CONF" -a "$UPDATE_GROFF_CONF" = "yes" || exit 0
function get_paper () {
@ -48,9 +43,6 @@ PAPER_SIZE=$(get_paper)
# if GROFF_PAGESIZE is set, it overrides the locale information:
if [ -n "$GROFF_PAGESIZE" ] ; then
echo "Warning: GROFF_PAGESIZE is deprecated and might be removed in future"
echo "Use RC_LANG or RC_LC_PAPER in /etc/sysconfig/language"
echo "or write the value to /etc/papersize, it will not be overwritten"
# make GROFF_PAGESIZE lower case only:
GROFF_PAGESIZE=$( echo $GROFF_PAGESIZE | tr '[:upper:]' '[:lower:]' )
case $GROFF_PAGESIZE in
@ -64,7 +56,6 @@ if [ -n "$GROFF_PAGESIZE" ] ; then
esac
fi
echo "$PAPER_SIZE" > /etc/papersize.SuSEconfig
check_md5_and_move /etc/papersize
echo "$PAPER_SIZE" > /etc/papersize
exit 0

29
bnc446710.patch Normal file
View File

@ -0,0 +1,29 @@
diff -ru groff-1.18.1.1.orig//font/devutf8/R.proto groff-1.18.1.1/font/devutf8/R.proto
--- groff-1.18.1.1.orig//font/devutf8/R.proto 2002-07-19 09:58:45.000000000 +0200
+++ groff-1.18.1.1/font/devutf8/R.proto 2008-11-25 14:58:19.000000000 +0100
@@ -285,13 +285,13 @@
+h 24 0 0x03D1
+f 24 0 0x03D5
+p 24 0 0x03D6
-- 24 0 0x2010
+- 24 0 0x002D
hy "
en 24 0 0x2013
em 24 0 0x2014
-` 24 0 0x2018
+` 24 0 0x0060
oq "
-' 24 0 0x2019
+' 24 0 0x0027
cq "
bq 24 0 0x201A
lq 24 0 0x201C
@@ -334,7 +334,7 @@
st 24 0 0x220B
product 24 0 0x220F
sum 24 0 0x2211
-\- 24 0 0x2212
+\- 24 0 0x002D
mi "
** 24 0 0x2217
sr 24 0 0x221A

View File

@ -0,0 +1,30 @@
diff -ru groff-1.18.1.1.orig/src/xditview/draw.c groff-1.18.1.1/src/xditview/draw.c
--- groff-1.18.1.1.orig/src/xditview/draw.c 2007-01-17 13:30:09.000000000 +0100
+++ groff-1.18.1.1/src/xditview/draw.c 2007-01-17 14:31:16.000000000 +0100
@@ -417,19 +417,21 @@
|| !device_code_width (dw->dvi.device_font,
dw->dvi.state->font_size, c, &wid))
return;
- if (dw->dvi.native) {
- DoCharacter (dw, c, wid);
- return;
- }
+
map = QueryFontMap (dw, dw->dvi.state->font_number);
if (!map)
return;
+
+ if (dw->dvi.native) {
+ DoCharacter (dw, c, wid, map->char2XChar2b);
+ return;
+ }
for (name = device_name_for_code (dw->dvi.device_font, c);
name;
name = device_name_for_code ((DeviceFont *)0, c)) {
int code = DviCharIndex (map, name);
if (code >= 0) {
- DoCharacter (dw, code, wid);
+ DoCharacter (dw, code, wid, map->char2XChar2b);
break;
}
if (FakeCharacter (dw, name, wid))

View File

@ -0,0 +1,13 @@
Index: groff-1.18.1.1/src/libs/libgroff/encoding.cc
===================================================================
--- groff-1.18.1.1.orig/src/libs/libgroff/encoding.cc
+++ groff-1.18.1.1/src/libs/libgroff/encoding.cc
@@ -392,7 +392,7 @@ init_encoding_handler()
else
charset = "";
#endif
- if (strncmp(locale, "ja", 2) == 0) {
+ if (strncmp(locale, "ja", 2) == 0||strncmp(locale,"zh" ,2) == 0) {
select_input_encoding_handler(charset);
select_output_encoding_handler(charset);
} else if ((!device || strcmp(device, "ascii8") == 0)) {

12
debian-fix.patch Normal file
View File

@ -0,0 +1,12 @@
diff -ru groff-1.18.1.1.orig/src/xditview/lex.c groff-1.18.1.1/src/xditview/lex.c
--- groff-1.18.1.1.orig/src/xditview/lex.c 2004-07-13 17:16:27.036918000 +0200
+++ groff-1.18.1.1/src/xditview/lex.c 2004-07-13 17:19:37.526695651 +0200
@@ -155,6 +155,7 @@
return i;
}
/* NOT REACHED */
+ return 0;
}
int

10
double-free.patch Normal file
View File

@ -0,0 +1,10 @@
--- src/preproc/grn/hdb.cc
+++ src/preproc/grn/hdb.cc
@@ -115,7 +115,6 @@
type = DBGetType(string); /* interpret element type */
if (type < 0) { /* no more data */
done = TRUE;
- (void) fclose(file);
} else {
#ifdef UW_FASTSCAN
(void) xscanf(file, &x, &y); /* always one point */

13
fgets-overflow.patch Normal file
View File

@ -0,0 +1,13 @@
--- src/devices/grops/ps.cc
+++ src/devices/grops/ps.cc
@@ -740,8 +740,8 @@
if (fp == 0)
fatal("can't open encoding file `%1'", encoding);
int lineno = 1;
- char buf[256];
- while (fgets(buf, 512, fp) != 0) {
+ char buf[512];
+ while (fgets(buf, sizeof(buf), fp) != 0) {
char *p = buf;
while (csspace(*p))
p++;

138
gcc4.patch Normal file
View File

@ -0,0 +1,138 @@
diff -prN groff-1.18.1.1-orig/src/preproc/eqn/box.cc groff-1.18.1.1/src/preproc/eqn/box.cc
*** groff-1.18.1.1-orig/src/preproc/eqn/box.cc Thu Apr 4 16:04:45 2002
--- groff-1.18.1.1/src/preproc/eqn/box.cc Wed Sep 15 23:28:05 2004
*************** int matrix_side_sep = 17; // = thin spac
*** 80,86 ****
int nroff = 0; // should we grok ndefine or tdefine?
! struct {
const char *name;
int *ptr;
} param_table[] = {
--- 80,86 ----
int nroff = 0; // should we grok ndefine or tdefine?
! struct param {
const char *name;
int *ptr;
} param_table[] = {
diff -prN groff-1.18.1.1-orig/src/preproc/grn/hgraph.cc groff-1.18.1.1/src/preproc/grn/hgraph.cc
*** groff-1.18.1.1-orig/src/preproc/grn/hgraph.cc Mon Oct 7 06:49:03 2002
--- groff-1.18.1.1/src/preproc/grn/hgraph.cc Wed Sep 15 23:28:36 2004
*************** extern int ytop;
*** 43,49 ****
extern int ybottom;
extern int xleft;
extern int xright;
! extern enum {
OUTLINE, FILL, BOTH
} polyfill;
--- 43,49 ----
extern int ybottom;
extern int xleft;
extern int xright;
! extern enum filltype {
OUTLINE, FILL, BOTH
} polyfill;
diff -prN groff-1.18.1.1-orig/src/preproc/grn/main.cc groff-1.18.1.1/src/preproc/grn/main.cc
*** groff-1.18.1.1-orig/src/preproc/grn/main.cc Sun Feb 10 02:22:12 2002
--- groff-1.18.1.1/src/preproc/grn/main.cc Wed Sep 15 23:29:04 2004
*************** int style[STYLES] =
*** 160,166 ****
double scale = 1.0; /* no scaling, default */
int defpoint = 0; /* flag for pointsize scaling */
char *defstipple = (char *) 0;
! enum {
OUTLINE, FILL, BOTH
} polyfill;
--- 160,166 ----
double scale = 1.0; /* no scaling, default */
int defpoint = 0; /* flag for pointsize scaling */
char *defstipple = (char *) 0;
! enum filltype {
OUTLINE, FILL, BOTH
} polyfill;
diff -prN groff-1.18.1.1-orig/src/preproc/refer/command.cc groff-1.18.1.1/src/preproc/refer/command.cc
*** groff-1.18.1.1-orig/src/preproc/refer/command.cc Sun Feb 10 02:22:12 2002
--- groff-1.18.1.1/src/preproc/refer/command.cc Wed Sep 15 23:29:34 2004
*************** a single field,
*** 632,638 ****
? means that the previous argument is optional, * means that the
previous argument can occur any number of times. */
! struct {
const char *name;
command_t func;
const char *arg_types;
--- 632,638 ----
? means that the previous argument is optional, * means that the
previous argument can occur any number of times. */
! struct command {
const char *name;
command_t func;
const char *arg_types;
diff -prN groff-1.18.1.1-orig/src/utils/tfmtodit/tfmtodit.cc groff-1.18.1.1/src/utils/tfmtodit/tfmtodit.cc
*** groff-1.18.1.1-orig/src/utils/tfmtodit/tfmtodit.cc Sun Aug 19 23:32:41 2001
--- groff-1.18.1.1/src/utils/tfmtodit/tfmtodit.cc Wed Sep 15 23:30:09 2004
*************** lig_chars table. `ch' gives the full-nam
*** 650,656 ****
gives the groff name of the character, `i' gives its index in
the encoding, which is filled in later (-1 if it does not appear). */
! struct {
const char *ch;
int i;
} lig_chars[] = {
--- 650,656 ----
gives the groff name of the character, `i' gives its index in
the encoding, which is filled in later (-1 if it does not appear). */
! struct lig_char {
const char *ch;
int i;
} lig_chars[] = {
*************** enum { CH_f, CH_i, CH_l, CH_ff, CH_fi, C
*** 670,676 ****
// Each possible ligature appears in this table.
! struct {
unsigned char c1, c2, res;
const char *ch;
} lig_table[] = {
--- 670,676 ----
// Each possible ligature appears in this table.
! struct lig {
unsigned char c1, c2, res;
const char *ch;
} lig_table[] = {
--- groff-1.18.1.1/src/xditview/xtotroff.c.xx 2005-09-17 21:05:23.000000000 +0200
+++ groff-1.18.1.1/src/xditview/xtotroff.c 2005-09-17 21:06:12.000000000 +0200
@@ -11,6 +11,7 @@
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
+#include <string.h>
#include "config.h"
#include "XFontName.h"
#include "DviChar.h"
--- groff-1.18.1.1/src/xditview/DviChar.c.xx 2005-09-17 21:05:37.000000000 +0200
+++ groff-1.18.1.1/src/xditview/DviChar.c 2005-09-17 21:06:03.000000000 +0200
@@ -6,6 +6,7 @@
*/
#include <stdlib.h>
+#include <string.h>
#include "config.h"
#include "DviChar.h"
#include "encoding.h"

10
gcc43.patch Normal file
View File

@ -0,0 +1,10 @@
--- src/devices/grolbp/lbp.cc
+++ src/devices/grolbp/lbp.cc
@@ -25,7 +25,6 @@
- Add X command to include bitmaps
*/
-#define _GNU_SOURCE
#include "driver.h"
#include "lbp.h"

11
groff-1.17.2-gcc3.patch Normal file
View File

@ -0,0 +1,11 @@
--- groff-1.17.2/Makefile.cpg.gcc3 Thu May 2 13:45:16 2002
+++ groff-1.17.2/Makefile.cpg Thu May 2 13:44:53 2002
@@ -9,7 +9,7 @@
all: $(PROG) $(MANPAGES)
$(PROG): $(OBJS) $(XLIBS)
- $(LINK.c) -o $@ $(OBJS) $(XLIBS) $(LIBS) $(MLIB)
+ $(LINK.cc) -o $@ $(OBJS) $(XLIBS) $(LIBS) $(MLIB)
install_bin: install_prog
install_prog: $(PROG)

View File

@ -0,0 +1,125 @@
Index: groff-1.18.1.1/contrib/eqn2graph/eqn2graph.sh
===================================================================
--- groff-1.18.1.1.orig/contrib/eqn2graph/eqn2graph.sh 2009-10-12 13:47:56.000000000 +0200
+++ groff-1.18.1.1/contrib/eqn2graph/eqn2graph.sh 2009-10-12 15:35:07.489407486 +0200
@@ -58,17 +58,36 @@
shift
done
+# create temporary directory
+tmp=
+for d in "$GROFF_TMPDIR" "$TMPDIR" "$TMP" "$TEMP" /tmp; do
+ test -z "$d" && continue
+
+ tmp=`(umask 077 && mktemp -d -q "$d/eqn2graph-XXXXXX") 2> /dev/null` \
+ && test -n "$tmp" && test -d "$tmp" \
+ && break
+
+ tmp=$d/eqn2graph$$-$RANDOM
+ (umask 077 && mkdir $tmp) 2> /dev/null && break
+
+ tmp=
+done;
+if test -z "$tmp"; then
+ echo "$0: cannot create temporary directory" >&2
+ { (exit 1); exit 1; }
+fi
+
+trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 2 15
+
# Here goes:
# 1. Add .EQ/.EN.
# 2. Process through eqn(1) to emit troff markup.
# 3. Process through groff(1) to emit Postscript.
# 4. Use convert(1) to crop the Postscript and turn it into a bitmap.
-tmp=/tmp/eqn2graph-$$
-trap "rm ${tmp}.*" 0 2 15
read equation
(echo ".EQ"; echo 'delim $$'; echo ".EN"; echo '$'"${equation}"'$') | \
- groff -e $groff_opts -Tps >${tmp}.ps \
- && convert -crop 0x0 $convert_opts ${tmp}.ps ${tmp}.${format} \
- && cat ${tmp}.${format}
+ groff -e $groff_opts -Tps >${tmp}/eng2graph.ps \
+ && convert -crop 0x0 $convert_opts ${tmp}/eng2graph.ps ${tmp}/eng2graph.${format} \
+ && cat ${tmp}/eng2graph.${format}
# End
Index: groff-1.18.1.1/contrib/groffer/groffer.sh
===================================================================
--- groff-1.18.1.1.orig/contrib/groffer/groffer.sh 2009-10-12 13:47:57.000000000 +0200
+++ groff-1.18.1.1/contrib/groffer/groffer.sh 2009-10-12 16:11:39.887806243 +0200
@@ -2910,11 +2910,7 @@
tmp_create()
{
func_check tmp_create '<=' 1 "$@";
- local _tmp;
- # the output file does not have `,' as first character
- _tmp="${_TMP_DIR}/,$1";
- echo -n >"${_tmp}";
- echo -n "${_tmp}"; # output file name
+ mktemp "${_TMP_DIR}/,$1.XXXXXX"
eval "${return_ok}";
}
Index: groff-1.18.1.1/contrib/pic2graph/pic2graph.sh
===================================================================
--- groff-1.18.1.1.orig/contrib/pic2graph/pic2graph.sh 2009-10-12 13:47:56.000000000 +0200
+++ groff-1.18.1.1/contrib/pic2graph/pic2graph.sh 2009-10-12 16:24:13.815806026 +0200
@@ -68,16 +68,35 @@
eqndelim="delim $eqndelim"
fi
+# create temporary directory
+tmp=
+for d in "$GROFF_TMPDIR" "$TMPDIR" "$TMP" "$TEMP" /tmp; do
+ test -z "$d" && continue
+
+ tmp=`(umask 077 && mktemp -d -q "$d/pic2graph-XXXXXX") 2> /dev/null` \
+ && test -n "$tmp" && test -d "$tmp" \
+ && break
+
+ tmp=$d/pic2graph$$-$RANDOM
+ (umask 077 && mkdir $tmp) 2> /dev/null && break
+
+ tmp=
+done;
+if test -z "$tmp"; then
+ echo "$0: cannot create temporary directory" >&2
+ { (exit 1); exit 1; }
+fi
+
+trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 2 15
+
# Here goes:
# 1. Wrap the input in dummy .PS/PE macros (and add possibly null .EQ/.EN)
# 2. Process through eqn and pic to emit troff markup.
# 3. Process through groff to emit Postscript.
# 4. Use convert(1) to crop the PostScript and turn it into a bitmap.
-tmp=/tmp/pic2graph-$$
-trap "rm ${tmp}.*" 0 2 15
(echo ".EQ"; echo $eqndelim; echo ".EN"; echo ".PS"; cat; echo ".PE") | \
- groff -e -p $groffpic_opts -Tps >${tmp}.ps \
- && convert -crop 0x0 $convert_opts ${tmp}.ps ${tmp}.${format} \
- && cat ${tmp}.${format}
+ groff -e -p $groffpic_opts -Tps >${tmp}/pic2graph.ps \
+ && convert -crop 0x0 $convert_opts ${tmp}/pic2graph.ps ${tmp}/pic2graph.${format} \
+ && cat ${tmp}/pic2graph.${format}
# End
Index: groff-1.18.1.1/doc/groff.texinfo
===================================================================
--- groff-1.18.1.1.orig/doc/groff.texinfo 2002-10-02 18:45:19.000000000 +0200
+++ groff-1.18.1.1/doc/groff.texinfo 2009-10-12 16:29:27.300306251 +0200
@@ -11605,9 +11605,9 @@
@pindex perl
@Example
.sy perl -e 'printf ".nr H %d\\n.nr M %d\\n.nr S %d\\n",\
- (localtime(time))[2,1,0]' > /tmp/x\n[$$]
-.so /tmp/x\n[$$]
-.sy rm /tmp/x\n[$$]
+ (localtime(time))[2,1,0]' > timefile\n[$$]
+.so timefile\n[$$]
+.sy rm timefile\n[$$]
\nH:\nM:\nS
@endExample

View File

@ -1,8 +1,8 @@
Index: src/devices/grops/ps.cpp
Index: src/devices/grops/ps.cc
===================================================================
--- src/devices/grops/ps.cpp.orig 2009-01-09 15:25:52.000000000 +0100
+++ src/devices/grops/ps.cpp 2010-08-23 15:29:15.848156800 +0200
@@ -833,7 +833,7 @@
--- src/devices/grops/ps.cc.orig 2002-06-19 23:07:33.000000000 +0200
+++ src/devices/grops/ps.cc 2008-10-07 23:57:44.000000000 +0200
@@ -739,7 +739,7 @@ void ps_printer::encode_fonts()
{
if (next_encoding_index == 0)
return;

View File

@ -0,0 +1,11 @@
--- groff-1.18.1.1/src/devices/grohtml/post-html.cc.xx 2005-10-13 09:46:50.000000000 +0200
+++ groff-1.18.1.1/src/devices/grohtml/post-html.cc 2005-10-13 09:47:05.000000000 +0200
@@ -261,7 +261,7 @@
char_block *next;
char_block();
- char_block::char_block(int length);
+ char_block(int length);
};
char_block::char_block()

3
groff-1.18.1.1.tar.bz2 Normal file
View File

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

View File

@ -1,63 +0,0 @@
Index: groff-1.20.1/contrib/groffer/Makefile.sub
===================================================================
--- groff-1.20.1.orig/contrib/groffer/Makefile.sub 2009-01-09 15:25:52.000000000 +0100
+++ groff-1.20.1/contrib/groffer/Makefile.sub 2010-08-27 11:46:36.946469881 +0200
@@ -63,7 +63,7 @@
GROFFER_PERL_=`echo $(GROFFER_PERL) | sed 's|$(srcdir)/perl/||g'`
GROFFER_SHELL_=`echo $(GROFFER_SHELL) | sed 's|$(srcdir)/shell||g'`
-groffer_dir=$(libdir)/groff/groffer
+groffer_dir=$(libexecdir)/groff/groffer
# TODO: Add perl check to configure script.
groffer: $(GROFFER_PERL) $(GROFFER_SHELL) \
@@ -74,7 +74,7 @@
sed -f "$(SH_DEPS_SED_SCRIPT)" \
-e "s|@g@|$(g)|g" \
-e "s|@BINDIR@|$(DESTDIR)$(bindir)|g" \
- -e "s|@libdir@|$(DESTDIR)$(libdir)|g" \
+ -e "s|@libdir@|$(DESTDIR)$(libexecdir)|g" \
-e "s|@VERSION@|$(version)$(revision)|g" \
-e "$(SH_SCRIPT_SED_CMD)" \
$(srcdir)/perl/groffer.pl >$@; \
@@ -88,7 +88,7 @@
sed -f "$(SH_DEPS_SED_SCRIPT)" \
-e "s|@g@|$(g)|g" \
-e "s|@BINDIR@|$(DESTDIR)$(bindir)|g" \
- -e "s|@libdir@|$(DESTDIR)$(libdir)|g" \
+ -e "s|@libdir@|$(DESTDIR)$(libexecdir)|g" \
-e "s|@VERSION@|$(version)$(revision)|g" \
-e "$(SH_SCRIPT_SED_CMD)" \
$(srcdir)/shell/groffer.sh >$@; \
@@ -137,7 +137,7 @@
for f in $(GROFFER_PERL_) $(GROFFER_SHELL_) version.sh; do \
$(RM) $(DESTDIR)$(groffer_dir)/$$f; \
done
- -rmdir $(DESTDIR)$(libdir)/groff/groffer
+ -rmdir $(DESTDIR)$(libexecdir)/groff/groffer
########################################################################
# Emacs settings
Index: groff-1.20.1/Makefile.in
===================================================================
--- groff-1.20.1.orig/Makefile.in 2010-08-27 11:44:59.000000000 +0200
+++ groff-1.20.1/Makefile.in 2010-08-27 12:38:22.358157037 +0200
@@ -137,6 +137,9 @@
libdir=@libdir@
libprogramdir=$(libdir)/groff
+# `libexecdir` says where to install script not intended to run as user
+libexecdir=@libexecdir@
+
# `datasubdir' says where to install platform-independent data files.
datadir=@datadir@
dataprogramdir=$(datadir)/groff
@@ -732,7 +735,7 @@
fi; \
test -d $@ || $(mkinstalldirs) $@; \
cd $@; \
- $(MAKE) $(MAKE_K_FLAG) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
+ $(MAKE) $(MAKE_K_FLAG) $(MDEFINES) srcdir=$$srcdir libexecdir=$(libexecdir) VPATH=$$srcdir \
-f $(top_srcdir)/Makefile.comm \
-f $$srcdir/Makefile.sub \
-f $(top_srcdir)/Makefile.man $(do)

View File

@ -1,13 +0,0 @@
Index: groff-1.20.1/src/roff/nroff/nroff.sh
===================================================================
--- groff-1.20.1.orig/src/roff/nroff/nroff.sh 2010-08-23 15:04:18.000000000 +0200
+++ groff-1.20.1/src/roff/nroff/nroff.sh 2010-08-23 15:46:28.313156532 +0200
@@ -41,7 +41,7 @@
IBM-1047)
Tloc=cp1047 ;;
*)
- case "${LC_ALL-${LC_CTYPE-${LANG}}}" in
+ case "${LC_ALL:-${LC_CTYPE:-${LANG}}}" in
*.UTF-8)
Tloc=utf8 ;;
iso_8859_1 | *.ISO-8859-1 | *.ISO8859-1 | \

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8ae1a46220aa94aaa229111057a56515293f1f3dfb471a29037b992025c11d9c
size 2842467

View File

@ -1,38 +1,3 @@
-------------------------------------------------------------------
Thu Oct 7 09:33:18 UTC 2010 - mvyskocil@suse.cz
- fix bnc#644467: SuSEconfig.groff overwrites /etc/papersize
use the check_md5_and_move to prevent it
- deprecation warning for GROFF* variables in /etc/sysconfig/suseconfig
-------------------------------------------------------------------
Tue Oct 5 12:25:28 UTC 2010 - mvyskocil@suse.cz
- fix bnc#633128: Update groff to 1.20.1
this update obsoletes a big number of SUSE patches
* groff_1.18.1.1-1-debian.diff.bz2 - adds Japanese support, which is now
upstreamed. However new groff_1.20.1-10.debian.diff has been added
* suse.patch - not needed
* pic-html.patch - probably not needed
* gcc4.patch - already fixed by upstream
* groff-1.17.2-gcc3.patch - seems not needed
* utf8.patch - http://www.mail-archive.com/groff@gnu.org/msg05273.html says
iconv hack is no longer needed, new version uses preconv
* debian-fix.patch - already fixed by upstream
* double-free.patch - already fixed by upstream
* groffer-security.patch - in debian diff
* groff-1.18.1.1-gcc41.patch - already fixed by upstream
* bugzilla-217106-too-few-arguments-in-function-call.patch - makes sense
only with ENABLE_MULTIBYTE, which was added by old debian diff
* bugzilla-292412-special-encoding-handling-also-for-chinese.patch - seems not necessary
* gcc43.patch - already fixed by upstream
* fgets-overflow.patch - already fixed by upstream
* bnc446710.patch - seems not needed anymore
* groff-1.18.1.1-debian-538330.patch - part of debian diff
- fix bnc#643083 - groff: default /etc/papersize should be "a4"
no "papersize a4" without SuSEconfig anymore
- move docs and examples to groff-docs subpackage
-------------------------------------------------------------------
Wed Oct 14 13:48:20 UTC 2009 - mvyskocil@suse.cz

View File

@ -1,7 +1,7 @@
#
# spec file for package groff (Version 1.20.1)
# spec file for package groff (Version 1.18.1.1)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2009 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
@ -17,39 +17,46 @@
# norootforbuild
Name: groff
BuildRequires: bison fdupes gcc-c++
%define build_groff_docu 1
#
License: BSD 3-clause (or similar) ; GPL v2 or later
Group: Productivity/Publishing/Troff
Version: 1.20.1
Release: 1
Provides: normal-groff, jgroff
Obsoletes: jgroff
PreReq: %fillup_prereq %install_info_prereq
AutoReqProv: on
Version: 1.18.1.1
Release: 171
Summary: GNU troff Document Formatting System
Url: http://www.gnu.org/software/groff/groff.html
Source0: ftp://ftp.gnu.org/gnu/groff/groff-%{version}.tar.bz2
# cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/groff co groff
Source0: ftp://ftp.gnu.org/gnu/groff/groff-1.18.1.1.tar.bz2
Source1: SuSEconfig.groff
Source2: sysconfig.suseconfig-groff
Source3: zzz-groff.sh
Source4: zzz-groff.csh
# for file in `cat series | grep -v '^#' | grep '^[a-z]' ` do
# cat $file >> groff_1.20.1-10.debian.diff
# done
Patch0: groff_1.20.1-10.debian.diff
Patch1: groff-1.20.1-destbufferoverflow.patch
Patch2: groff-1.20.1-nroff-empty-LANGUAGE.patch
Patch3: groff-1.20.1-groffer-libexecdir.patch
Patch0: groff_1.18.1.1-1-debian.diff.bz2
Patch1: suse.patch
Patch2: pic-html.patch
Patch3: gcc4.patch
Patch4: groff-1.17.2-gcc3.patch
Patch5: utf8.patch
Patch6: debian-fix.patch
Patch7: double-free.patch
Patch8: groffer-security.patch
Patch9: groff-1.18.1.1-gcc41.patch
Patch10: bugzilla-217106-too-few-arguments-in-function-call.patch
Patch11: bugzilla-292412-special-encoding-handling-also-for-chinese.patch
Patch12: gcc43.patch
Patch13: fgets-overflow.patch
Patch14: groff-1.18.1.1-destbufferoverflow.patch
Patch446710: bnc446710.patch
Patch540600: nroff-empty-LANGUAGE-fix.diff
Patch15: groff-1.18.1.1-debian-538330.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: gcc-c++
BuildRequires: bison
BuildRequires: fdupes
Provides: normal-groff = %{version}-%{release}
Provides: jgroff = %{version}-%{release}
Obsoletes: jgroff < %{version}
Requires(pre): %fillup_prereq
Requires(pre): %install_info_prereq
AutoReqProv: on
# for pre-grohtml and pdfroff
Recommends: netpbm
Recommends: ghostscript-library
Recommends: pssutils
%description
The groff package provides compatible versions of troff, nroff, eqn,
@ -61,24 +68,7 @@ PostScript(tm) format for printing on a PostScript(tm) printer. Most
programs store their man pages in either /usr/share/man/ or
/usr/X11R6/man/.
Authors:
--------
James Clark <jjc@clark.com>
%package doc
License: BSD 3-clause (or similar) ; GPL v2 or later
Group: Productivity/Publishing/Troff
Summary: HTML documentation and examples for groff
%description doc
The groff package provides compatible versions of troff, nroff, eqn,
tbl, and other Unix text formatting utilities.
Groff is used to "compile" man pages stored in groff or nroff format
for different output devices, for example, displaying to a screen or in
PostScript(tm) format for printing on a PostScript(tm) printer. Most
programs store their man pages in either /usr/share/man/ or
/usr/X11R6/man/.
Authors:
--------
@ -87,11 +77,28 @@ Authors:
%prep
%setup -q -n groff-%{version}
%patch0 -p1 -b .debian
%patch1
%patch2 -p1 -b .bnc540600
%patch3 -p1 -b .groffer-libexecdir
%patch1 -p1 -b .suse
%patch2 -p1 -b .pic-html
%patch3 -p1 -b .gcc4
%patch4 -p1 -b .gcc3
%patch5 -p1 -b .utf-8
%patch6 -p1 -b .debian-fix
%patch7
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p0
%patch13 -p0
%patch14
%patch446710 -p1
%patch540600 -p1
%patch15 -p1 -b .debian-538330
%build
# remove empty backups
rm -f ChangeLog.jp.debian README.jp.debian
#
PATH=$PWD/src/roff/troff:$PWD/src/preproc/pic:$PWD/src/preproc/eqn:$PWD/src/preproc/tbl:$PWDsrc/preproc/refer:$PWD/src/preproc/soelim:$PATH
PATH=$PWD/src/roff/grog:$PWD/src/roff/groff:$PWD/src/devices/grops:$PWD/src/devices/grotty:$PWD/src/devices/grodvi:$PWD/src/devices/grohtml:$PATH
GROFF_COMMAND_PREFIX=
@ -101,45 +108,53 @@ export PATH GROFF_COMMAND_PREFIX GROFF_FONT_PATH GROFF_TMAC_PATH
#
#libtoolize --force
#autoreconf --force --install
export CFLAGS="-fno-strict-aliasing"
export CXXFLAGS="-fno-strict-aliasing"
%{configure}
%{__make}
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" CXXFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" INSTALL_PROGRAM='${INSTALL}'
./configure --prefix=/usr --mandir=%{_mandir} --infodir=%{_infodir} --enable-multibyte
make
%if %{build_groff_docu}
pushd doc
%{__make}
#echo "papersize a4" > /etc/papersize
make
makeinfo groff.texinfo
popd
%endif
%install
%{makeinstall} docdir=%{_defaultdocdir}/%{name}
%{__rm} -f %{buildroot}%{_infodir}/dir
# documentation
%{__cp} -pr BUG-REPORT ChangeLog* COPYING FDL LICENSES MANIFEST MORE.STUFF NEWS PROBLEMS PROJECTS README README.MinGW REVISION VERSION doc/*ps \
%{buildroot}/%{_defaultdocdir}/%{name}/
# compat symlinks
%{__ln_s} -f eqn %{buildroot}%{_bindir}/geqn
%{__ln_s} -f tbl %{buildroot}%{_bindir}/gtbl
# SUSEconfig stuff
%{__install} -d -m 0755 %{buildroot}/sbin/conf.d
%{__install} -d -m 0755 %{buildroot}%{_localstatedir}/adm/fillup-templates
%{__install} -m 0755 %{SOURCE1} %{buildroot}/sbin/conf.d/
%{__install} -m 0644 %{SOURCE2} %{buildroot}%{_localstatedir}/adm/fillup-templates/
%{__install} -d -m 0755 %{buildroot}%{_sysconfdir}
echo "a4" > %{buildroot}%{_sysconfdir}/papersize
%{__chmod} 0644 %{buildroot}%{_sysconfdir}/papersize
if [ ! "x" = "x$RPM_BUILD_ROOT" ] ; then
install -d -m755 $RPM_BUILD_ROOT
fi
mkdir -p $RPM_BUILD_ROOT/usr/share
mkdir -p $RPM_BUILD_ROOT/etc
mkdir -p $RPM_BUILD_ROOT%{_defaultdocdir}/groff
make install manroot=$RPM_BUILD_ROOT%{_mandir} prefix=$RPM_BUILD_ROOT/usr docdir=$RPM_BUILD_ROOT%{_defaultdocdir}/groff infodir=$RPM_BUILD_ROOT/usr/share/info
%if %{build_groff_docu}
install -c -m0444 doc/*.ps $RPM_BUILD_ROOT%{_defaultdocdir}/groff
#install -c -m0444 doc/*.html $RPM_BUILD_ROOT%{_defaultdocdir}/groff
install -c -m0444 doc/*.png $RPM_BUILD_ROOT%{_defaultdocdir}/groff
install -c -m0444 BUG* COPYING ChangeLog* INSTALL* MORE* NEWS PROBLEMS PROJECTS README* REVISION TODO VERSION $RPM_BUILD_ROOT%{_defaultdocdir}/groff
%endif
mkdir -p $RPM_BUILD_ROOT%{_infodir}
install -c -m 444 doc/groff doc/groff-[0-9]* $RPM_BUILD_ROOT%{_infodir}
ln -sf eqn $RPM_BUILD_ROOT/usr/bin/geqn
ln -sf tbl $RPM_BUILD_ROOT/usr/bin/gtbl
mkdir -p $RPM_BUILD_ROOT/sbin/conf.d
mkdir -p $RPM_BUILD_ROOT/var/adm/fillup-templates
install -c -m0755 $RPM_SOURCE_DIR/SuSEconfig.groff $RPM_BUILD_ROOT/sbin/conf.d/
install -c -m0644 $RPM_SOURCE_DIR/sysconfig.suseconfig-groff $RPM_BUILD_ROOT/var/adm/fillup-templates/
echo "papersize a4" > $RPM_BUILD_ROOT/etc/papersize
chmod 0644 $RPM_BUILD_ROOT/etc/papersize
# install profiles to disable the use of ANSI colour sequences by default:
%{__install} -d -m 0755 %{buildroot}/%{_sysconfdir}/profile.d
%{__install} -m 644 %{SOURCE3} %{SOURCE4} %{buildroot}/%{_sysconfdir}/profile.d/
%fdupes -s %{buildroot}
mkdir -p $RPM_BUILD_ROOT/etc/profile.d
install -m 644 $RPM_SOURCE_DIR/zzz-groff.sh $RPM_BUILD_ROOT/etc/profile.d
install -m 644 $RPM_SOURCE_DIR/zzz-groff.csh $RPM_BUILD_ROOT/etc/profile.d
pushd $RPM_BUILD_ROOT/usr/share/groff
test -d 1.18.1 || exit 1
ln -s 1.18.1 current
popd
%fdupes $RPM_BUILD_ROOT
%clean
rm -rf %{buildroot}
#[ "$RPM_BUILD_ROOT" != "/" ] && [ -d $RPM_BUILD_ROOT ] && rm -rf $RPM_BUILD_ROOT;
%post
%{fillup_only -an suseconfig}
@ -151,25 +166,32 @@ rm -rf %{buildroot}
%files
%defattr(-, root, root)
%dir %{_defaultdocdir}/groff
%doc %{_defaultdocdir}/groff/
%exclude %{_defaultdocdir}/groff/html
%exclude %{_defaultdocdir}/groff/examples
%doc %{_defaultdocdir}/groff/*
%doc %{_infodir}/groff*
/usr/bin/*
%doc %{_mandir}/man?/*
%{_bindir}/*
%config(noreplace) %verify(not md5 size mtime) %{_sysconfdir}/papersize
%config %{_sysconfdir}/profile.d/zzz-%{name}.*sh
%{_datadir}/%{name}
%{_libexecdir}/%{name}
#%verify(not md5) /usr/share/groff/1.18.1/tmac/mm/locale
#%verify(not md5) /usr/share/groff/1.18.1/tmac/mm/se_locale
/sbin/conf.d/SuSEconfig.%{name}
%{_localstatedir}/adm/fillup-templates/sysconfig.suseconfig-%{name}
%files doc
%defattr(-, root, root)
%dir %{_defaultdocdir}/groff
%doc %{_defaultdocdir}/groff/html
%doc %{_defaultdocdir}/groff/examples
%config(noreplace) %verify(not md5 size mtime) /etc/papersize
%config /etc/profile.d/zzz-groff.*sh
%dir /usr/share/groff/
%dir /usr/share/groff/site-tmac/
/usr/share/groff/site-tmac/*
/usr/share/groff/current
%dir /usr/share/groff/1.18.1/
/usr/share/groff/1.18.1/eign
%dir /usr/share/groff/1.18.1/font/
/usr/share/groff/1.18.1/font/*
%dir /usr/share/groff/1.18.1/tmac/
/usr/share/groff/1.18.1/tmac/*.tmac
/usr/share/groff/1.18.1/tmac/*rc*
/usr/share/groff/1.18.1/tmac/hyphen.us
%dir /usr/share/groff/1.18.1/tmac/mdoc/
/usr/share/groff/1.18.1/tmac/mdoc/*
%dir /usr/share/groff/1.18.1/tmac/mm/
/usr/share/groff/1.18.1/tmac/mm/*cov
/usr/share/groff/1.18.1/tmac/mm/*MT
%verify(not md5) /usr/share/groff/1.18.1/tmac/mm/locale
%verify(not md5) /usr/share/groff/1.18.1/tmac/mm/se_locale
/sbin/conf.d/SuSEconfig.groff
/var/adm/fillup-templates/sysconfig.suseconfig-groff
%changelog

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:79af1331031b9ce963413950d29626270d2deb1ae6a474b2b25bea801e691c2b
size 96274

File diff suppressed because it is too large Load Diff

27
groffer-security.patch Normal file
View File

@ -0,0 +1,27 @@
diff -ru groff-1.18.1.1/contrib/groffer/groffer.sh groff-1.18.1.1.new/contrib/groffer/groffer.sh
--- groff-1.18.1.1/contrib/groffer/groffer.sh 2004-06-15 03:44:50.000000000 +0200
+++ groff-1.18.1.1.new/contrib/groffer/groffer.sh 2004-12-06 22:02:31.072260000 +0100
@@ -3228,18 +3228,13 @@
do
if is_not_empty "$d"; then
if obj d is_dir && obj d is_writable; then
- _TMP_DIR="${d}/${_PROGRAM_NAME}${_PROCESS_ID}";
- if obj _TMP_DIR is_dir; then
- rm -f "${_TMP_DIR}"/*;
+ _TMP_DIR="`mktemp -d ${d}/${_PROGRAM_NAME}.XXXXXX`";
+ if test $? = 0; then
break;
else
- mkdir "${_TMP_DIR}";
- if obj _TMP_DIR is_not_dir; then
- _TMP_DIR='';
- continue;
- fi;
- break;
- fi;
+ _TMP_DIR='';
+ continue;
+ fi
fi;
if obj _TMP_DIR is_not_writable; then
_TMP_DIR='';

View File

@ -1,9 +1,3 @@
-------------------------------------------------------------------
Wed Oct 6 12:41:24 UTC 2010 - mvyskocil@suse.cz
- fix bnc#633128: Update groff to 1.20.1
- rename to gxditview
-------------------------------------------------------------------
Sun Feb 11 12:01:27 CET 2007 - ro@suse.de

View File

@ -1,5 +1,5 @@
#
# spec file for package gxditview (Version 1.18.1.1)
# spec file for package gxdview (Version 1.18.1.1)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@ -17,26 +17,32 @@
Name: gxditview
License: MIT
Name: gxdview
BuildRequires: gcc-c++ xorg-x11-devel
License: GPL v2 or later
Group: Productivity/Publishing/Troff
AutoReqProv: on
Version: 1.20.1
Release: 1
Summary: Ditroff Output Displayer for Groff
Url: http://www.gnu.org/software/groff/groff.html
Source0: ftp://ftp.gnu.org/gnu/groff/groff-%{version}.tar.bz2
Patch0: groff_1.20.1-10.debian.diff
Patch1: groff-1.20.1-destbufferoverflow.patch
Patch2: groff-1.20.1-nroff-empty-LANGUAGE.patch
Patch3: groff-1.20.1-groffer-libexecdir.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: gcc-c++
BuildRequires: xorg-x11-devel
Requires: groff
Conflicts: jgxdview
Provides: gxdview = %{version}-%{release}
Obsoletes: gxdview < %{version}
Version: 1.18.1.1
Release: 212
Summary: Ditroff Output Displayer for Groff
Url: http://www.gnu.org/software/groff/groff.html
Source0: ftp://ftp.gnu.org/gnu/groff/groff-1.18.1.1.tar.bz2
Source1: SuSEconfig.groff
Source2: sysconfig.suseconfig-groff
Patch0: groff_1.18.1.1-1-debian.diff.bz2
Patch1: suse.patch
Patch2: pic-html.patch
Patch3: gcc4.patch
Patch4: groff-1.17.2-gcc3.patch
Patch5: utf8.patch
Patch6: debian-fix.patch
Patch7: double-free.patch
Patch8: groffer-security.patch
Patch9: groff-1.18.1.1-gcc41.patch
Patch10: bugzilla-217106-too-few-arguments-in-function-call.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
This version of xditview is called gxditview and has some extensions
@ -52,9 +58,16 @@ Authors:
%prep
%setup -q -n groff-%{version}
%patch0 -p1 -b .debian
%patch1 -p0 -b .destbufferoverflow
%patch2 -p1 -b .bnc540600
%patch3 -p1 -b .groffer-libexecdir
%patch1 -p1 -b .suse
%patch2 -p1 -b .pic-html
%patch3 -p1 -b .gcc4
%patch4 -p1 -b .gcc3
%patch5 -p1 -b .utf-8
%patch6 -p1 -b .debian-fix
%patch7
%patch8 -p1
%patch9 -p1
%patch10 -p1
%build
# remove empty backups
@ -68,28 +81,39 @@ GROFF_TMAC_PATH=$PWD/tmac:$PWD/src/roff/troff
export PATH GROFF_COMMAND_PREFIX GROFF_FONT_PATH GROFF_TMAC_PATH
#
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" CXXFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" INSTALL_PROGRAM='${INSTALL}'
%{configure}
%{__make}
%install
%{__install} -d -m 0755 %{buildroot}%{_bindir}
%{__install} -d -m 0755 %{buildroot}%{_datadir}/X11/app-defaults
%{__install} -d -m 0755 %{buildroot}%{_mandir}/man1/
pushd src/devices/xditview/
%{__install} -m 0755 %{name} %{buildroot}%{_bindir}
%{__install} -m 0644 GXditview.ad %{buildroot}%{_datadir}/X11/app-defaults/GXditview
%{__install} -m 0644 %{name}.man %{buildroot}%{_mandir}/man1/%{name}.1
./configure --prefix=/usr --mandir=%{_mandir} --infodir=%{_infodir} --enable-multibyte
pushd src/xditview
xmkmf -a
make depend && make CDEBUGFLAGS="$RPM_OPT_FLAGS" NIPPONDEFINES="-DNIPPON"
popd
%install
if [ ! "x" = "x$RPM_BUILD_ROOT" ] ; then
install -d -m755 $RPM_BUILD_ROOT
fi
mkdir -p $RPM_BUILD_ROOT/usr/share
mkdir -p $RPM_BUILD_ROOT/etc
mkdir -p $RPM_BUILD_ROOT%{_defaultdocdir}/groff
mkdir -p $RPM_BUILD_ROOT%{_infodir}
make -C src/xditview install DESTDIR=$RPM_BUILD_ROOT
make -C src/xditview install.man MANSUFFIX=1 LIBMANSUFFIX=3 DESTDIR=$RPM_BUILD_ROOT
%clean
%{__rm} -rf %{buildroot}
#[ "$RPM_BUILD_ROOT" != "/" ] && [ -d $RPM_BUILD_ROOT ] && rm -rf $RPM_BUILD_ROOT;
%files
%defattr(-,root,root)
%doc src/devices/xditview/ChangeLog src/devices/xditview/README src/devices/xditview/TODO
%{_bindir}/%{name}
%doc %{_mandir}/man1/%{name}.1*
#
# Should we make a own package gxditview?
# ... but the new xditview is a good program for X11R6.3.
# If gxditview is required GXDITVIEW should be set
# in groff/groff.cc to "gxditview"
#
# Yes we should make a own package because groff uses
# some features of gxditview which xditview doesn't know.
#
%{_bindir}/gxditview
%doc %{_mandir}/man1/gxditview.1*
%config %{_datadir}/X11/app-defaults/GXditview
%changelog

View File

@ -0,0 +1,30 @@
---
src/roff/nroff/nroff.sh | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
--- a/src/roff/nroff/nroff.sh
+++ b/src/roff/nroff/nroff.sh
@@ -203,10 +203,22 @@
# mv $TMPDIR/input.new $TMPDIR/input
#fi
+getlang () {
+ if [ -n "$LANGUAGE" ]; then
+ echo $LANGUAGE
+ elif [ -n "$LC_ALL" ]; then
+ echo $LC_ALL
+ elif [ -n "$LC_MESSAGES" ]; then
+ echo $LC_MESSAGES
+ else
+ echo $LANG
+ fi
+}
+
ICONV="cat"
case "`locale charmap 2>/dev/null`" in
UTF-8)
- case "${LANGUAGE-${LC_ALL-${LC_MESSAGES-${LANG}}}}" in
+ case `getlang` in
ja*)
# Japanese man page in UTF-8 locale, special case!
# force the device 'nippon' to run groff in ja_JP.eucJP locale

12
pic-html.patch Normal file
View File

@ -0,0 +1,12 @@
diff -ru groff-1.18.1.1.orig/doc/Makefile.in groff-1.18.1.1/doc/Makefile.in
--- groff-1.18.1.1.orig/doc/Makefile.in 2002-09-09 21:31:37.000000000 +0200
+++ groff-1.18.1.1/doc/Makefile.in 2004-06-29 18:41:17.238451579 +0200
@@ -87,7 +87,7 @@
.ms.html:
$(GROFF) -P-p -P-b -P-I`basename $< | sed -e 's|.ms$$||'` \
- -P-D$(imagedir) -Thtml -ms >$@
+ -P-D$(imagedir) -P-Ipic -Thtml -ms >$@
.ms.txt:
$(GROFF) -Tascii -ms -mwww >$@
.ms.ps:

183
utf8.patch Normal file
View File

@ -0,0 +1,183 @@
diff -ru groff-1.18.1.1.orig//src/roff/nroff/nroff.sh groff-1.18.1.1/src/roff/nroff/nroff.sh
--- groff-1.18.1.1.orig//src/roff/nroff/nroff.sh 2009-02-02 18:44:00.000000000 +0100
+++ groff-1.18.1.1/src/roff/nroff/nroff.sh 2009-02-02 18:44:40.000000000 +0100
@@ -87,11 +87,177 @@
shift
done
+# special hacks to display Japanese, Chinese, ...man pages correctly in UTF-8 locale:
+
+guess_legacy_encoding () {
+ # Guess the legacy encoding used by the language/country
+ # found in the current LC_CTYPE value.
+
+ # First determine the LC_CTYPE locale category setting
+ ctype=${LC_ALL-${LC_CTYPE-${LANG-en_US}}}
+
+ case $ctype in
+ zh_TW*)
+ LEGACY_ENCODING=Big5
+ ;;
+ zh_HK*)
+ LEGACY_ENCODING=Big5HKSCS
+ ;;
+ zh*)
+ LEGACY_ENCODING=GB18030
+ ;;
+ ja*)
+ LEGACY_ENCODING=EUC-JP
+ ;;
+ ko*)
+ LEGACY_ENCODING=EUC-KR
+ ;;
+ ru*)
+ LEGACY_ENCODING=KOI8-R
+ ;;
+ uk*)
+ LEGACY_ENCODING=KOI8-U
+ ;;
+ pl*|hr*|hu*|cs*|sk*|sl*)
+ LEGACY_ENCODING=ISO-8859-2
+ ;;
+ eo*|mt*)
+ LEGACY_ENCODING=ISO-8859-3
+ ;;
+ el*)
+ LEGACY_ENCODING=ISO-8859-7
+ ;;
+ he*)
+ LEGACY_ENCODING=ISO-8859-8
+ ;;
+ tr*)
+ LEGACY_ENCODING=ISO-8859-9
+ ;;
+ th*)
+ LEGACY_ENCODING=TIS-620 # or ISO-8859-11
+ ;;
+ lt*)
+ LEGACY_ENCODING=ISO-8859-13
+ ;;
+ cy*)
+ LEGACY_ENCODING=ISO-8859-14
+ ;;
+ ro*)
+ LEGACY_ENCODING=ISO-8859-14 # or ISO-8859-16
+ ;;
+ am*|vi*)
+ LEGACY_ENCODING=UTF-8
+ ;;
+ *)
+ LEGACY_ENCODING=ISO-8859-1
+ ;;
+ esac
+}
+
+guess_legacy_encoding;
+
+TMPDIR=`mktemp -d /tmp/nroff.XXXXXX`
+if [ $? -ne 0 ]; then
+ echo "$0: Can't create temp directory, exiting..."
+ exit 1
+fi
+trap "exec rm -rf $TMPDIR" EXIT SIGHUP SIGINT SIGPIPE SIGTERM SIGIO
+
+# parse groff options to find out whether a file was given as argument or whether the
+# input is read from stdin:
+OLDARGS=""
+TEMP=$(getopt --options "abcCd:eEf:F:gGhiI:lL:m:M:n:No:pP:r:RsStT:UvVw:W:XzZ" --longoptions help,version -- ${1+"$@"})
+eval set -- "$TEMP"
+while true ; do
+ case "$1" in
+ --)
+ if [ -n "$2" ] ; then
+ INPUTFILE="$2"
+ shift 2
+ else
+ INPUTFILE=""
+ shift 1
+ fi
+ break
+ ;;
+ *)
+ OLDARGS="$OLDARGS $1"
+ echo $1
+ shift 1
+ ;;
+ esac
+done
+eval set -- "$OLDARGS"
+
+if [ -n "$INPUTFILE" ] ; then
+ # input comes from a file
+ cat "$INPUTFILE" > $TMPDIR/input
+else
+ # input comes from stdin
+ cat > $TMPDIR/input
+fi
+
+#iconv -s -c -f utf-8 -t utf-8 < $TMPDIR/input > /dev/null
+#if [ $? -eq 0 ]; then
+# iconv -s -c -f utf-8 -t $LEGACY_ENCODING < $TMPDIR/input > $TMPDIR/input.new
+# mv $TMPDIR/input.new $TMPDIR/input
+#fi
+
+ICONV="cat"
+case "`locale charmap 2>/dev/null`" in
+ UTF-8)
+ case "${LANGUAGE-${LC_ALL-${LC_MESSAGES-${LANG}}}}" in
+ ja*)
+ # Japanese man page in UTF-8 locale, special case!
+ # force the device 'nippon' to run groff in ja_JP.eucJP locale
+ # and convert the result to UTF-8 using iconv:
+ T=-Tnippon
+ export LC_ALL=ja_JP.eucJP
+ ICONV="iconv -f EUC-JP -t UTF-8"
+ ;;
+ zh_TW*)
+ T=-Tnippon
+ export LC_ALL=zh_TW.Big5
+ ICONV="iconv -f Big5 -t UTF-8"
+ ;;
+ zh_HK*)
+ T=-Tnippon
+ export LC_ALL=zh_HK.Big5HKSCS
+ ICONV="iconv -f Big5HKSCS -t UTF-8"
+ ;;
+ zh*)
+ T=-Tnippon
+ export LC_ALL=zh_CN.GB18030
+ ICONV="iconv -f GB18030 -t UTF-8"
+ ;;
+ ko*)
+ T=-Tlatin1
+ export LC_ALL=ko_KR.EUC-KR
+ # See https://bugzilla.novell.com/show_bug.cgi?id=470921
+ # for the reason why the "-c" is needed and
+ # why a conversion from ISO-8859-1 instead of EUC-KR to
+ # UTF-8 may be needed if an English man-page is displayed:
+ ICONV="iconv -c -f EUC-KR -t UTF-8"
+ iconv -s -f ASCII -t UTF-8 < $TMPDIR/input > /dev/null
+ if [ $? -eq 0 ]; then
+ ICONV="iconv -f ISO-8859-1 -t UTF-8"
+ fi
+ ;;
+ # make 'man iso-8859-15' display correctly in UTF-8 locales using Euro
+ ca_ES*|de_AT*|de_BE*|de_DE*|de_LU*|en_BE*|en_IE*|es_ES*|eu_ES*|fi_FI*|fr_BE*|fr_FR*|fr_LU*|ga_IE*|gl_ES*|it_IT*|nl_BE*|nl_NL*|pt_PT*|sv_FI*|wa_BE*)
+ T=-Tlatin1
+ export LC_ALL=de_DE@euro
+ ICONV="iconv -f ISO-8859-15 -t UTF-8"
+ ;;
+ esac
+ ;;
+esac
+
# This shell script is intended for use with man, so warnings are
# probably not wanted. Also load nroff-style character definitions.
-: ${GROFF_BIN_PATH=@BINDIR@}
+: ${GROFF_BIN_PATH=@BINDIR@}
export GROFF_BIN_PATH
-PATH=$GROFF_BIN_PATH:$PATH groff -mtty-char $T $opts ${1+"$@"}
+PATH=$GROFF_BIN_PATH:$PATH groff -mtty-char $T $opts ${1+"$@"} < $TMPDIR/input | $ICONV
# eof