public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] gentoo-x86 commit in gnome-extra/yelp/files: yelp-3.0.3-man-compatibility.patch
@ 2011-08-19 11:02 Nirbheek Chauhan (nirbheek)
  0 siblings, 0 replies; only message in thread
From: Nirbheek Chauhan (nirbheek) @ 2011-08-19 11:02 UTC (permalink / raw
  To: gentoo-commits

nirbheek    11/08/19 11:02:49

  Added:                yelp-3.0.3-man-compatibility.patch
  Log:
  Bump to 3.0.4, from gnome overlay for GNOME 3
  
  (Portage version: 2.2.0_alpha51/cvs/Linux x86_64)

Revision  Changes    Path
1.1                  gnome-extra/yelp/files/yelp-3.0.3-man-compatibility.patch

file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/gnome-extra/yelp/files/yelp-3.0.3-man-compatibility.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/gnome-extra/yelp/files/yelp-3.0.3-man-compatibility.patch?rev=1.1&content-type=text/plain

Index: yelp-3.0.3-man-compatibility.patch
===================================================================
From 7e181e8d74f7e67b8b3acb8524fc85157ed39c8e Mon Sep 17 00:00:00 2001
From: Alexandre Rostovtsev <tetromino@gmail.com>
Date: Sun, 1 May 2011 22:52:14 -0400
Subject: [PATCH] Enable compatibility with traditional man (#648854)

As of commit 46a82ade3e6f0fac8f08b18e7fc23d8665f6f728, Yelp runs
"man -Z -Tutf8 -EUTF-8 [FILE]" to obtain the groff intermediate format
of the man page. However, the only implementation of man that accepts
these options is man-db (used by Debian, Fedora, SUSE & Ubuntu).
The traditional Linux man used by other distros and man implementations
on non-Linux Unixes (FreeBSD, Solaris) do not have command-line options
for outputting groff intermediate format.
Therefore, on systems that do not use man-db, we need to manually
uncompress the nroff source file and feed it to groff. This is best done
using a small shell script (/usr/libexec/yelp-groff), both for for
clarity and for ease of modification on systems with weird man setups.

Signed-off-by: Alexandre Rostovtsev <tetromino@gmail.com>
---
 libyelp/Makefile.am       |    2 +
 libyelp/yelp-groff        |   49 +++++++++++++++++++++++++++++++++++++++++++++
 libyelp/yelp-man-parser.c |    4 +-
 3 files changed, 53 insertions(+), 2 deletions(-)
 create mode 100755 libyelp/yelp-groff

diff --git a/libyelp/Makefile.am b/libyelp/Makefile.am
index a4dd68b..5d55bf1 100644
--- a/libyelp/Makefile.am
+++ b/libyelp/Makefile.am
@@ -1,4 +1,5 @@
 lib_LTLIBRARIES = libyelp.la
+libexec_SCRIPTS = yelp-groff
 
 libyelp_la_SOURCES =                \
 	yelp-bookmarks.c            \
@@ -49,6 +50,7 @@ endif
 libyelp_la_CFLAGS =                             \
 	$(YELP_CFLAGS)                          \
 	-DDATADIR=\""$(datadir)"\"              \
+	-DLIBEXECDIR=\"$(libexecdir)\"           \
 	-DYELP_ICON_PATH=\"$(YELP_ICON_PATH)\"
 
 libyelp_la_LIBADD = $(YELP_LIBS)
diff --git a/libyelp/yelp-groff b/libyelp/yelp-groff
new file mode 100755
index 0000000..5348024
--- /dev/null
+++ b/libyelp/yelp-groff
@@ -0,0 +1,49 @@
+#!/bin/sh
+#
+# Copyright (c) 2011 Alexandre Rostovtsev <tetromino@gmail.com>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the
+# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+###
+#
+# Process the requested compressed source nroff file and output groff
+# intermediate format.
+#
+
+filename=$1
+
+if [ -z ${filename} ] ; then
+    echo "Usage: yelp-groff [FILE]" >&2
+    echo "Process a man FILE and output groff intermediate format."
+    exit 1
+fi
+
+# If "man -Z -Tutf8 -EUTF-8" works (i.e. if man is man-db), use that.
+man -Z -Tutf8 -EUTF-8 ${filename} 2>/dev/null && exit 0
+
+# Otherwise, manually uncompress the file ...
+cat="cat"
+case ${filename} in
+    *.bz2)      cat="bzip2 -c -d" ;;
+    *.gz)       cat="gunzip -c" ;;
+    *.lzma)     cat="unlzma -c -d" ;;
+    *.xz)       cat="unxz -c" ;;
+    *.Z)        cat="zcat" ;;
+esac
+
+# ... and run groff to get the intermediate format; preprocess with tbl
+# unless MANROFFSEQ is defined.
+${cat} ${filename} | groff -${MANROFFSEQ:-t} -man -Z -Tutf8
diff --git a/libyelp/yelp-man-parser.c b/libyelp/yelp-man-parser.c
index 4001d38..9818803 100644
--- a/libyelp/yelp-man-parser.c
+++ b/libyelp/yelp-man-parser.c
@@ -371,9 +371,9 @@ get_troff (gchar *path, GError **error)
 {
     gint stdout;
     GError *err = NULL;
-    gchar *argv[] = { "man", "-Z", "-Tutf8", "-EUTF-8", NULL, NULL };
+    gchar *argv[] = { LIBEXECDIR "/yelp-groff", NULL, NULL };
 
-    argv[4] = path;
+    argv[1] = path;
 
     if (!g_spawn_async_with_pipes (NULL, argv, NULL,
                                    G_SPAWN_SEARCH_PATH, NULL, NULL,
-- 
1.7.5.rc3







^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2011-08-19 11:03 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-19 11:02 [gentoo-commits] gentoo-x86 commit in gnome-extra/yelp/files: yelp-3.0.3-man-compatibility.patch Nirbheek Chauhan (nirbheek)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox