From e08afba78d258be4e043be68334fbd5bc6bec9ba Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Sat, 14 Nov 2020 06:26:01 +0000 Subject: system/lv: Added (pager, grep, and iconv replacement) Signed-off-by: Dave Woodfall Signed-off-by: Willy Sudiarto Raharjo --- system/lv/README | 17 +++++ system/lv/lv.SlackBuild | 115 ++++++++++++++++++++++++++++++ system/lv/lv.info | 12 ++++ system/lv/patches/fix_implicit_decls.diff | 41 +++++++++++ system/lv/patches/makefile.diff | 53 ++++++++++++++ system/lv/patches/man_typos.diff | 65 +++++++++++++++++ system/lv/patches/no_inline.diff | 19 +++++ system/lv/patches/series | 4 ++ system/lv/slack-desc | 19 +++++ 9 files changed, 345 insertions(+) create mode 100644 system/lv/README create mode 100644 system/lv/lv.SlackBuild create mode 100644 system/lv/lv.info create mode 100644 system/lv/patches/fix_implicit_decls.diff create mode 100644 system/lv/patches/makefile.diff create mode 100644 system/lv/patches/man_typos.diff create mode 100644 system/lv/patches/no_inline.diff create mode 100644 system/lv/patches/series create mode 100644 system/lv/slack-desc (limited to 'system') diff --git a/system/lv/README b/system/lv/README new file mode 100644 index 0000000000..41dc4fdfaf --- /dev/null +++ b/system/lv/README @@ -0,0 +1,17 @@ +lv (pager, grep, and iconv replacement) + +lv is a powerful file viewer like less. lv can decode and encode +multilingual streams in many encodings, including ISO-8859, ISO-2022, +EUC, SJIS, Big5, HZ, and Unicode. It recognizes multi-byte patterns +in regular expressions, and can be run as "lgrep" to act as a grep +replacement. In addition, lv can recognize ANSI escape sequences for +text decoration (making it suitable for use as MANPAGER). + +lv can also be used as a replacement for iconv(1), by redirecting +its standard output and using the -I and -O options to set the input +and output encodings. Although it doesn't support all the features of +iconv, lv will autodetect the input encoding (which iconv won't). + +lv also has one (possibly) unique feature: It can autodetect and +convert or display multiple character encodings *within the same +document*. diff --git a/system/lv/lv.SlackBuild b/system/lv/lv.SlackBuild new file mode 100644 index 0000000000..87c7446e95 --- /dev/null +++ b/system/lv/lv.SlackBuild @@ -0,0 +1,115 @@ +#!/bin/sh + +# Slackware build script for lv + +# Written by B. Watson (yalhcru@gmail.com) + +# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. + +# 20201111 bkw: added at v4.51_7. The original upstream for this is +# long gone (dead website), but the maintainer of the Debian package +# continues to develop this. So I'm treating Debian as upstream, and +# the _7 in VERSION is the Debian patchlevel. + +PRGNAM=lv +VERSION=${VERSION:-4.51_7} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +# Nothing uses LIBDIRSUFFIX, don't bother with it. +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +else + SLKCFLAGS="-O2" +fi + +set -e + +SRCVER=${VERSION%_*} # 1.23_4 => 1.23 +DEBVER=${VERSION#*_} # 1.23_4 => 4 + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $PRGNAM-$SRCVER.orig +tar xvf $CWD/${PRGNAM}_$SRCVER.orig.tar.?z +cd $PRGNAM-$SRCVER.orig +tar xvf $CWD/${PRGNAM}_$SRCVER-$DEBVER.debian.tar.xz +chown -R root:root . +find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \ + \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+ + +# Apply all of debian's patches. +for i in $( cat debian/patches/series ); do + patch -p1 < "debian/patches/$i" +done + +# Local patches (sent upstream, maybe they'll be in the next release). +for i in $( cat $CWD/patches/series ); do + patch -p1 < "$CWD/patches/$i" +done + +# I wish there were --disable-termcap and/or --enable-ncurses options. +# The configure script is hardcoded: if termcap is found, it uses that +# and never looks for ncurses. Since termcap is pretty well deprecated +# here in the 21st century, we'd much rather use ncurses... +sed -i 's,termcap,ncurses,g' src/configure + +# libdir is /usr/share because all that gets installed there is the lv +# help file (which is just a pre-rendered version of the man page). +cd build +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +../src/configure \ + --enable-fastio \ + --prefix=/usr \ + --libdir=/usr/share \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --mandir=/usr/man \ + --build=$ARCH-slackware-linux + +make +make install DESTDIR=$PKG + +# binary already stripped +gzip -9 $PKG/usr/man/man1/$PRGNAM.1 +ln -s $PRGNAM.1.gz $PKG/usr/man/man1/lgrep.1.gz + +cd .. +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +cp -a README* GPL* hello.* debian/changelog $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +# Japanese-language sections in the HTML docs are in some kind of +# non-Unicode encoding. lv autodetects it just fine, but nothing else +# seems to, so use lv itself to convert them to UTF-8. This is helpful +# if you're reading the files locally with a browser: there's no HTTP +# headers to specify the encoding, and UTF-8 is more likely to be +# autodetected or just guessed at. +for i in *.html; do + $PKG/usr/bin/lv -Ou8 $i > $PKG/usr/doc/$PRGNAM-$VERSION/$i +done + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} diff --git a/system/lv/lv.info b/system/lv/lv.info new file mode 100644 index 0000000000..3d29aca4a8 --- /dev/null +++ b/system/lv/lv.info @@ -0,0 +1,12 @@ +PRGNAM="lv" +VERSION="4.51_7" +HOMEPAGE="https://packages.debian.org/sid/lv" +DOWNLOAD="http://deb.debian.org/debian/pool/main/l/lv/lv_4.51.orig.tar.gz \ + http://deb.debian.org/debian/pool/main/l/lv/lv_4.51-7.debian.tar.xz" +MD5SUM="893084b35a11eaaee4f71827d0092fa5 \ + d6d2d0e27a43480b794615a02235b953" +DOWNLOAD_x86_64="" +MD5SUM_x86_64="" +REQUIRES="" +MAINTAINER="B. Watson" +EMAIL="yalhcru@gmail.com" diff --git a/system/lv/patches/fix_implicit_decls.diff b/system/lv/patches/fix_implicit_decls.diff new file mode 100644 index 0000000000..1f9de61b91 --- /dev/null +++ b/system/lv/patches/fix_implicit_decls.diff @@ -0,0 +1,41 @@ +Description: Remove implicit declaration warnings by adding +appropriate #includes, and fix a typo in a prototype. +Author: B. Watson + +-- + +diff -Naur lv-4.51.orig/src/file.h lv-4.51.orig.patched/src/file.h +--- lv-4.51.orig/src/file.h 2020-11-12 02:03:33.560002050 -0500 ++++ lv-4.51.orig.patched/src/file.h 2020-11-12 02:04:06.555999050 -0500 +@@ -172,7 +172,7 @@ + public inline int IobufGetc( iobuf_t *iobuf ); + public inline int IobufUngetc( int ch, iobuf_t *iobuf ); + public offset_t IobufFtell( iobuf_t *iobuf ); +-public int IobufFseeko( iobuf_t *iobuf, offset_t off, int mode ); ++public int IobufFseek( iobuf_t *iobuf, offset_t off, int mode ); + public int IobufFeof( iobuf_t *iobuf ); + #endif + #define IobufPutc( a, b ) putc( a, (b)->iop ) +diff -Naur lv-4.51.orig/src/guess.c lv-4.51.orig.patched/src/guess.c +--- lv-4.51.orig/src/guess.c 2003-11-12 22:08:19.000000000 -0500 ++++ lv-4.51.orig.patched/src/guess.c 2020-11-12 02:04:22.621997590 -0500 +@@ -21,6 +21,7 @@ + */ + + #include ++#include + + #include + #include +diff -Naur lv-4.51.orig/src/guesslocale.c lv-4.51.orig.patched/src/guesslocale.c +--- lv-4.51.orig/src/guesslocale.c 2004-01-05 03:41:22.000000000 -0500 ++++ lv-4.51.orig.patched/src/guesslocale.c 2020-11-12 02:04:49.294995165 -0500 +@@ -20,6 +20,8 @@ + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + ++#include ++ + #ifdef HAVE_SETLOCALE + + #include diff --git a/system/lv/patches/makefile.diff b/system/lv/patches/makefile.diff new file mode 100644 index 0000000000..4c55d7c5d2 --- /dev/null +++ b/system/lv/patches/makefile.diff @@ -0,0 +1,53 @@ +Description: "make install": Support DESTDIR, use symlink for +lgrep, use more standard default permissions (and make them +variables). Create bin/man/lib dirs if they don't already exist. +Author: B. Watson + +-- + +diff -Naur lv-4.51.orig/src/Makefile.in lv-4.51.orig.patched/src/Makefile.in +--- lv-4.51.orig/src/Makefile.in 2004-01-06 02:22:17.000000000 -0500 ++++ lv-4.51.orig.patched/src/Makefile.in 2020-11-12 01:59:50.646022314 -0500 +@@ -18,6 +18,10 @@ + lvlibdir= $(libdir)/lv + distdir = lv$(VERSION) + ++DESTDIR= ++BINPERMS= 0755 ++DOCPERMS= 0644 ++ + PURIFY= @PURIFY@ + CC= @CC@ + CFLAGS= @CFLAGS@ -DLV_HELP_PATH=\"$(lvlibdir)\" -I$(srcdir) @DEFS@ +@@ -64,18 +68,22 @@ + # + + install:: +- $(INSTALL) -s -m 555 lv $(bindir) +- if test -f $(bindir)/lgrep; then \ +- /bin/rm -f $(bindir)/lgrep; \ ++ if test ! -d $(DESTDIR)$(bindir); then \ ++ mkdir -p $(DESTDIR)$(bindir); \ ++ fi ++ $(INSTALL) -s -m $(BINPERMS) lv $(DESTDIR)$(bindir) ++ if test -f $(DESTDIR)$(bindir)/lgrep; then \ ++ /bin/rm -f $(DESTDIR)$(bindir)/lgrep; \ + fi +- (cd $(bindir); ln lv lgrep) +- if test ! -d $(lvlibdir); then \ +- mkdir -p $(lvlibdir); \ ++ (cd $(DESTDIR)$(bindir); ln -s lv lgrep) ++ if test ! -d $(DESTDIR)$(lvlibdir); then \ ++ mkdir -p $(DESTDIR)$(lvlibdir); \ + fi +- $(INSTALL) -m 444 $(srcdir)/../lv.hlp $(lvlibdir) +- if test -d $(mandir) -a -d $(mandir)/man1; then \ +- $(INSTALL) -m 444 $(srcdir)/../lv.1 $(mandir)/man1; \ ++ $(INSTALL) -m $(DOCPERMS) $(srcdir)/../lv.hlp $(DESTDIR)$(lvlibdir) ++ if test ! -d $(DESTDIR)$(mandir)/man1; then \ ++ mkdir -p $(DESTDIR)$(mandir)/man1; \ + fi ++ $(INSTALL) -m $(DOCPERMS) $(srcdir)/../lv.1 $(DESTDIR)$(mandir)/man1; \ + + uninstall:: + for i in $(bindir)/lv $(bindir)/lgrep $(lvlibdir)/lv.hlp $(mandir)/man1/lv.1; do \ diff --git a/system/lv/patches/man_typos.diff b/system/lv/patches/man_typos.diff new file mode 100644 index 0000000000..be6e2ad63d --- /dev/null +++ b/system/lv/patches/man_typos.diff @@ -0,0 +1,65 @@ +Description: Fix a few typos in the man & help docs. +Author: B. Watson + +-- + +diff -Naur lv-4.51.orig/lv.1 lv-4.51.orig.patched/lv.1 +--- lv-4.51.orig/lv.1 2020-11-12 01:44:33.656105671 -0500 ++++ lv-4.51.orig.patched/lv.1 2020-11-12 01:45:58.092097996 -0500 +@@ -47,7 +47,7 @@ + but also as a coding-system translation filter + like \fInkf\fP (1) and \fItcs\fP (1). + .IP "\fIMultilingual regular expressions / Multilingual grep\fP" +-lv can recognize multi-bytes patterns as regular expressions, ++lv can recognize multi-byte patterns as regular expressions, + and lv also provides multilingual \fIgrep\fP (1) functionality + by giving it another name, \fIlgrep\fP. + Pattern matching is conducted in the charset level, +@@ -203,7 +203,7 @@ + Allow physical lines of each logical line printed on the screen + to be concatenated for cut and paste after screen refresh + .IP "-s" +-Force old pages to be swept out from the screen Smoothly ++Force old pages to be swept out from the screen smoothly + .IP "-u" + Unify several character sets, eg. JIS X0208 and C6226. + In addition, lv equates ISO 646 variants, +@@ -237,7 +237,7 @@ + Show this help + .SH "CONFIGURATION" + Options can be described in configuration file ``.lv'' (``_lv'' on MSDOS) +-located at you HOME directory. If and only if you use MSDOS, you can locate ++located in your HOME directory. If and only if you use MSDOS, you can locate + ``_lv'' at current working directory. + They can be also described in the environment variable LV. + Every configuration will be overloaded in this order if there is. Command line +diff -Naur lv-4.51.orig/lv.hlp lv-4.51.orig.patched/lv.hlp +--- lv-4.51.orig/lv.hlp 2020-11-12 01:44:33.635105673 -0500 ++++ lv-4.51.orig.patched/lv.hlp 2020-11-12 01:45:58.098097995 -0500 +@@ -37,7 +37,7 @@ + _t_c_s (1). + + _M_u_l_t_i_l_i_n_g_u_a_l _r_e_g_u_l_a_r _e_x_p_r_e_s_s_i_o_n_s _/ _M_u_l_t_i_l_i_n_g_u_a_l _g_r_e_p +- lv can recognize multi-bytes patterns as regular expressions, ++ lv can recognize multi-byte patterns as regular expressions, + and lv also provides multilingual _g_r_e_p (1) functionality by giv- + ing it another name, _l_g_r_e_p. Pattern matching is conducted in + the charset level, so an EUC fragment, for example, can be found +@@ -183,7 +183,7 @@ + -l Allow physical lines of each logical line printed on the screen + to be concatenated for cut and paste after screen refresh + +- -s Force old pages to be swept out from the screen Smoothly ++ -s Force old pages to be swept out from the screen smoothly + + -u Unify several character sets, eg. JIS X0208 and C6226. In addi- + tion, lv equates ISO 646 variants, eg. JIS X0201-Roman, and +@@ -219,7 +219,7 @@ + + CCOONNFFIIGGUURRAATTIIOONN + Options can be described in configuration file ``.lv'' (``_lv'' on +- MSDOS) located at you HOME directory. If and only if you use MSDOS, ++ MSDOS) located in your HOME directory. If and only if you use MSDOS, + you can locate ``_lv'' at current working directory. They can be also + described in the environment variable LV. Every configuration will be + overloaded in this order if there is. Command line options are always diff --git a/system/lv/patches/no_inline.diff b/system/lv/patches/no_inline.diff new file mode 100644 index 0000000000..ebc1eb58f6 --- /dev/null +++ b/system/lv/patches/no_inline.diff @@ -0,0 +1,19 @@ +Description: Remove inline-related compiler warnings (by not using inline) +Author: B. Watson + +-- + +diff -Naur lv-4.51.orig/src/file.h lv-4.51.orig.patched/src/file.h +--- lv-4.51.orig/src/file.h 2020-11-12 01:41:53.353120244 -0500 ++++ lv-4.51.orig.patched/src/file.h 2020-11-12 01:44:33.701105667 -0500 +@@ -169,8 +169,8 @@ + # endif + # define IobufFeof( a ) feof( (a)->iop ) + #else +-public inline int IobufGetc( iobuf_t *iobuf ); +-public inline int IobufUngetc( int ch, iobuf_t *iobuf ); ++public int IobufGetc( iobuf_t *iobuf ); ++public int IobufUngetc( int ch, iobuf_t *iobuf ); + public offset_t IobufFtell( iobuf_t *iobuf ); + public int IobufFseek( iobuf_t *iobuf, offset_t off, int mode ); + public int IobufFeof( iobuf_t *iobuf ); diff --git a/system/lv/patches/series b/system/lv/patches/series new file mode 100644 index 0000000000..0228981fdf --- /dev/null +++ b/system/lv/patches/series @@ -0,0 +1,4 @@ +fix_implicit_decls.diff +no_inline.diff +man_typos.diff +makefile.diff diff --git a/system/lv/slack-desc b/system/lv/slack-desc new file mode 100644 index 0000000000..cf08b44fb5 --- /dev/null +++ b/system/lv/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +lv: lv (pager, grep, and iconv replacement) +lv: +lv: lv is a powerful file viewer like less. lv can decode and encode +lv: multilingual streams in many encodings, including ISO-8859, ISO-2022, +lv: EUC, SJIS, Big5, HZ, and Unicode. It recognizes multi-byte patterns +lv: in regular expressions, and can be run as "lgrep" to act as a grep +lv: replacement. In addition, lv can recognize ANSI escape sequences for +lv: text decoration (making it suitable for use as MANPAGER). +lv: +lv: +lv: -- cgit v1.2.3