Compare commits
2 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a7354ede12 | ||
|
|
29933227f4 |
11 changed files with 390 additions and 133 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
|
@ -8,9 +8,3 @@
|
|||
/less-608.tar.gz
|
||||
/less-633.tar.gz
|
||||
/less-643.tar.gz
|
||||
/less-661.tar.gz
|
||||
/less-668.tar.gz
|
||||
/less-678.tar.gz
|
||||
/less-679.tar.gz
|
||||
/less-685.tar.gz
|
||||
/lesspipe-2.20.tar.gz
|
||||
|
|
|
|||
|
|
@ -1,24 +0,0 @@
|
|||
diff -up less-661/help.c.help less-661/help.c
|
||||
--- less-661/help.c.help 2024-08-05 21:40:34.531327397 +0200
|
||||
+++ less-661/help.c 2024-08-05 21:40:34.533327418 +0200
|
||||
@@ -137,7 +137,7 @@ constant char helpdata[] = {
|
||||
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','N','u','m','b','e','r',' ','o','f',' ','b','u','f','f','e','r','s','.','\n',
|
||||
' ',' ','-','B',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','a','u','t','o','-','b','u','f','f','e','r','s','\n',
|
||||
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D','o','n','\'','t',' ','a','u','t','o','m','a','t','i','c','a','l','l','y',' ','a','l','l','o','c','a','t','e',' ','b','u','f','f','e','r','s',' ','f','o','r',' ','p','i','p','e','s','.','\n',
|
||||
-' ',' ','-','c',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','c','l','e','a','r','-','s','c','r','e','e','n','\n',
|
||||
+' ',' ','-','c',' ',' ','-','C',' ',' ','.','.','.','.',' ',' ','-','-','c','l','e','a','r','-','s','c','r','e','e','n',' ','-','-','C','L','E','A','R','-','S','C','R','E','E','N','\n',
|
||||
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','R','e','p','a','i','n','t',' ','b','y',' ','c','l','e','a','r','i','n','g',' ','r','a','t','h','e','r',' ','t','h','a','n',' ','s','c','r','o','l','l','i','n','g','.','\n',
|
||||
' ',' ','-','d',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','d','u','m','b','\n',
|
||||
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D','u','m','b',' ','t','e','r','m','i','n','a','l','.','\n',
|
||||
diff -up less-661/less.hlp.help less-661/less.hlp
|
||||
--- less-661/less.hlp.help 2024-08-05 21:40:34.532327408 +0200
|
||||
+++ less-661/less.hlp 2024-08-05 21:40:34.533327418 +0200
|
||||
@@ -134,7 +134,7 @@
|
||||
Number of buffers.
|
||||
-B ........ --auto-buffers
|
||||
Don't automatically allocate buffers for pipes.
|
||||
- -c ........ --clear-screen
|
||||
+ -c -C .... --clear-screen --CLEAR-SCREEN
|
||||
Repaint by clearing rather than scrolling.
|
||||
-d ........ --dumb
|
||||
Dumb terminal.
|
||||
|
|
@ -20,5 +20,5 @@ diff -up less-466/less.nro.filters-man less-466/less.nro
|
|||
+~/.lessfilter tries to handle the file.
|
||||
+
|
||||
.SH "NATIONAL CHARACTER SETS"
|
||||
There are five types of characters in the input file:
|
||||
There are three types of characters in the input file:
|
||||
.IP "normal characters"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,15 @@
|
|||
diff -up less-678-build/less-678/configure.ac.fsync less-678-build/less-678/configure.ac
|
||||
--- less-678-build/less-678/configure.ac.fsync 2025-05-01 22:42:03.000000000 +0200
|
||||
+++ less-678-build/less-678/configure.ac 2025-05-22 18:10:23.572796329 +0200
|
||||
@@ -210,6 +210,8 @@ AH_TEMPLATE([HAVE_TIME_T],
|
||||
From 5396b6b77d0248678f716038dc747d6898acb0b3 Mon Sep 17 00:00:00 2001
|
||||
From: Stephen Gallagher <sgallagh@redhat.com>
|
||||
Date: Fri, 22 Jan 2021 09:49:13 -0500
|
||||
Subject: [PATCH] Test for fsync on tty
|
||||
|
||||
Signed-off-by: Stephen Gallagher <sgallagh@redhat.com>
|
||||
|
||||
Modified for less 581.2 Filip Januš <fjanus@redhat.com>
|
||||
diff -ur less-581.2/configure.ac less_fsync/configure.ac
|
||||
--- less-581.2/configure.ac 2021-04-28 17:00:08.000000000 +0200
|
||||
+++ less_fsync/configure.ac 2021-05-06 10:59:07.560062397 +0200
|
||||
@@ -221,6 +221,8 @@
|
||||
[Define HAVE_TIME_T if your system supports the "time_t" type.])
|
||||
AH_TEMPLATE([HAVE_STRERROR],
|
||||
[Define HAVE_STRERROR if you have the strerror() function.])
|
||||
|
|
@ -10,16 +18,16 @@ diff -up less-678-build/less-678/configure.ac.fsync less-678-build/less-678/conf
|
|||
AH_TEMPLATE([HAVE_FILENO],
|
||||
[Define HAVE_FILENO if you have the fileno() macro.])
|
||||
AH_TEMPLATE([HAVE_ERRNO],
|
||||
@@ -259,7 +261,7 @@ AC_MSG_CHECKING(for ANSI function protot
|
||||
@@ -274,7 +276,7 @@
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[int f(int a) { return a; }]])],[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ANSI_PROTOS)],[AC_MSG_RESULT(no)])
|
||||
|
||||
# Checks for library functions.
|
||||
-AC_CHECK_FUNCS([fchmod fsync nanosleep poll popen realpath _setjmp sigprocmask sigsetmask snprintf stat strsignal system ttyname usleep])
|
||||
+AC_CHECK_FUNCS([fchmod nanosleep poll popen realpath _setjmp sigprocmask sigsetmask snprintf stat strsignal system ttyname usleep])
|
||||
AC_CHECK_DECL(sigsetjmp, [AC_DEFINE(HAVE_SIGSETJMP)], [], [#include <setjmp.h>])
|
||||
|
||||
# AC_CHECK_FUNCS may not work for inline functions, so test these separately.
|
||||
@@ -302,6 +304,16 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||
AC_MSG_CHECKING(for memcpy)
|
||||
@@ -321,6 +323,16 @@
|
||||
#include <errno.h>
|
||||
#endif]], [[static char *x; x = strerror(0);]])],[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_STRERROR)],[AC_MSG_RESULT(no)])
|
||||
|
||||
|
|
|
|||
57
less-590-CVE-2024-32487.patch
Normal file
57
less-590-CVE-2024-32487.patch
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
diff -up less-643/filename.c.CVE-2024-32487 less-643/filename.c
|
||||
--- less-643/filename.c.CVE-2024-32487 2023-07-21 00:43:14.000000000 +0200
|
||||
+++ less-643/filename.c 2024-08-21 08:10:28.949475521 +0200
|
||||
@@ -134,6 +134,15 @@ static int metachar(char c)
|
||||
}
|
||||
|
||||
/*
|
||||
+ * Must use quotes rather than escape char for this metachar?
|
||||
+ */
|
||||
+static int must_quote(char c)
|
||||
+{
|
||||
+ /* {{ Maybe the set of must_quote chars should be configurable? }} */
|
||||
+ return (c == '\n');
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
* Insert a backslash before each metacharacter in a string.
|
||||
*/
|
||||
public char * shell_quote(char *s)
|
||||
@@ -164,6 +173,9 @@ public char * shell_quote(char *s)
|
||||
* doesn't support escape chars. Use quotes.
|
||||
*/
|
||||
use_quotes = 1;
|
||||
+ } else if (must_quote(*p))
|
||||
+ {
|
||||
+ len += 3; /* open quote + char + close quote */
|
||||
} else
|
||||
{
|
||||
/*
|
||||
@@ -193,15 +205,22 @@ public char * shell_quote(char *s)
|
||||
{
|
||||
while (*s != '\0')
|
||||
{
|
||||
- if (metachar(*s))
|
||||
+ if (!metachar(*s))
|
||||
{
|
||||
- /*
|
||||
- * Add the escape char.
|
||||
- */
|
||||
+ *p++ = *s++;
|
||||
+ } else if (must_quote(*s))
|
||||
+ {
|
||||
+ /* Surround the char with quotes. */
|
||||
+ *p++ = openquote;
|
||||
+ *p++ = *s++;
|
||||
+ *p++ = closequote;
|
||||
+ } else
|
||||
+ {
|
||||
+ /* Insert an escape char before the char. */
|
||||
strcpy(p, esc);
|
||||
p += esclen;
|
||||
+ *p++ = *s++;
|
||||
}
|
||||
- *p++ = *s++;
|
||||
}
|
||||
*p = '\0';
|
||||
}
|
||||
73
less-633-control-char-in-filename-regrfix.patch
Normal file
73
less-633-control-char-in-filename-regrfix.patch
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
diff -up less-633/prompt.c.cve2024_32487regrfix less-633/prompt.c
|
||||
--- less-633/prompt.c.cve2024_32487regrfix 2024-07-27 00:32:28.945249829 +0200
|
||||
+++ less-633/prompt.c 2024-07-27 00:34:36.456908956 +0200
|
||||
@@ -79,23 +79,44 @@ public void init_prompt(void)
|
||||
|
||||
/*
|
||||
* Append a string to the end of the message.
|
||||
- */
|
||||
-static void ap_str(char *s)
|
||||
-{
|
||||
- constant char *es = s + strlen(s);
|
||||
- while (*s != '\0')
|
||||
- {
|
||||
- LWCHAR ch = step_char(&s, +1, es);
|
||||
- constant char *ps = utf_mode ? prutfchar(ch) : prchar(ch);
|
||||
- size_t plen = strlen(ps);
|
||||
- if (mp + plen >= message + PROMPT_SIZE)
|
||||
- break;
|
||||
- strcpy(mp, ps);
|
||||
+ * nprt means the character *may* be nonprintable
|
||||
+ * and should be converted to printable form.
|
||||
+ */
|
||||
+static void ap_estr(char *s, lbool nprt)
|
||||
+ {
|
||||
+ constant char *es = s + strlen(s);
|
||||
+ while (*s != '\0')
|
||||
+ {
|
||||
+ LWCHAR ch = step_char(&s, +1, es);
|
||||
+ constant char *ps;
|
||||
+ char ubuf[MAX_UTF_CHAR_LEN+1];
|
||||
+ size_t plen;
|
||||
+
|
||||
+ if (nprt)
|
||||
+ {
|
||||
+ ps = utf_mode ? prutfchar(ch) : prchar(ch);
|
||||
+ } else
|
||||
+ {
|
||||
+ char *up = ubuf;
|
||||
+ put_wchar(&up, ch);
|
||||
+ *up = '\0';
|
||||
+ ps = ubuf;
|
||||
+ }
|
||||
+ plen = strlen(ps);
|
||||
+ if (mp + plen >= message + PROMPT_SIZE)
|
||||
+ break;
|
||||
+ strcpy(mp, ps);
|
||||
mp += plen;
|
||||
}
|
||||
*mp = '\0';
|
||||
}
|
||||
|
||||
+static void ap_str(char *s)
|
||||
+{
|
||||
+ ap_estr(s, FALSE);
|
||||
+}
|
||||
+
|
||||
+
|
||||
/*
|
||||
* Append a character to the end of the message.
|
||||
*/
|
||||
@@ -289,10 +310,10 @@ static void protochar(int c, int where,
|
||||
break;
|
||||
#endif
|
||||
case 'f': /* File name */
|
||||
- ap_str(get_filename(curr_ifile));
|
||||
+ ap_estr(get_filename(curr_ifile), TRUE);
|
||||
break;
|
||||
case 'F': /* Last component of file name */
|
||||
- ap_str(last_component(get_filename(curr_ifile)));
|
||||
+ ap_estr(last_component(get_filename(curr_ifile)), TRUE);
|
||||
break;
|
||||
case 'g': /* Shell-escaped file name */
|
||||
s = shell_quote(get_filename(curr_ifile));
|
||||
17
less-654-control-char-in-filename-prereq.patch
Normal file
17
less-654-control-char-in-filename-prereq.patch
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
diff -up less-633/prompt.c.cve_prereq less-633/prompt.c
|
||||
--- less-633/prompt.c.cve_prereq 2024-07-27 00:44:40.347267609 +0200
|
||||
+++ less-633/prompt.c 2024-07-27 00:45:26.575783719 +0200
|
||||
@@ -36,6 +36,13 @@ extern char *editor;
|
||||
extern char *editproto;
|
||||
#endif
|
||||
|
||||
+typedef enum lbool { LFALSE, LTRUE } lbool;
|
||||
+
|
||||
+#undef TRUE
|
||||
+#define TRUE LTRUE
|
||||
+#undef FALSE
|
||||
+#define FALSE LFALSE
|
||||
+
|
||||
/*
|
||||
* Prototypes for the three flavors of prompts.
|
||||
* These strings are expanded by pr_expand().
|
||||
75
less-654-control-char-in-filename.patch
Normal file
75
less-654-control-char-in-filename.patch
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
diff -up less-633/output.c.cve2024_32487fix less-633/output.c
|
||||
--- less-633/output.c.cve2024_32487fix 2023-05-03 20:43:01.000000000 +0200
|
||||
+++ less-633/output.c 2024-07-27 00:28:05.420820950 +0200
|
||||
@@ -31,6 +31,7 @@ extern int so_s_width, so_e_width;
|
||||
extern int screen_trashed;
|
||||
extern int is_tty;
|
||||
extern int oldbot;
|
||||
+extern int utf_mode;
|
||||
extern char intr_char;
|
||||
|
||||
#if MSDOS_COMPILER==WIN32C || MSDOS_COMPILER==BORLANDC || MSDOS_COMPILER==DJGPPC
|
||||
@@ -537,6 +538,7 @@ IPRINT_FUNC(iprint_linenum, LINENUM, lin
|
||||
public int less_printf(char *fmt, PARG *parg)
|
||||
{
|
||||
char *s;
|
||||
+ constant char *es;
|
||||
int col;
|
||||
|
||||
col = 0;
|
||||
@@ -553,11 +555,17 @@ public int less_printf(char *fmt, PARG *
|
||||
{
|
||||
case 's':
|
||||
s = parg->p_string;
|
||||
+ es = s + strlen(s);
|
||||
parg++;
|
||||
while (*s != '\0')
|
||||
{
|
||||
- putchr(*s++);
|
||||
- col++;
|
||||
+ LWCHAR ch = step_char(&s, +1, es);
|
||||
+ constant char *ps = utf_mode ? prutfchar(ch) : prchar(ch);
|
||||
+ while (*ps != '\0')
|
||||
+ {
|
||||
+ putchr(*ps++);
|
||||
+ col++;
|
||||
+ }
|
||||
}
|
||||
break;
|
||||
case 'd':
|
||||
diff -up less-633/prompt.c.cve2024_32487fix less-633/prompt.c
|
||||
--- less-633/prompt.c.cve2024_32487fix 2024-07-27 00:26:13.217361006 +0200
|
||||
+++ less-633/prompt.c 2024-07-27 00:31:37.965586499 +0200
|
||||
@@ -30,6 +30,7 @@ extern int sc_height;
|
||||
extern int jump_sline;
|
||||
extern int less_is_more;
|
||||
extern int header_lines;
|
||||
+extern int utf_mode;
|
||||
extern IFILE curr_ifile;
|
||||
#if EDITOR
|
||||
extern char *editor;
|
||||
@@ -81,13 +82,17 @@ public void init_prompt(void)
|
||||
*/
|
||||
static void ap_str(char *s)
|
||||
{
|
||||
- int len;
|
||||
-
|
||||
- len = (int) strlen(s);
|
||||
- if (mp + len >= message + PROMPT_SIZE)
|
||||
- len = (int) (message + PROMPT_SIZE - mp - 1);
|
||||
- strncpy(mp, s, len);
|
||||
- mp += len;
|
||||
+ constant char *es = s + strlen(s);
|
||||
+ while (*s != '\0')
|
||||
+ {
|
||||
+ LWCHAR ch = step_char(&s, +1, es);
|
||||
+ constant char *ps = utf_mode ? prutfchar(ch) : prchar(ch);
|
||||
+ size_t plen = strlen(ps);
|
||||
+ if (mp + plen >= message + PROMPT_SIZE)
|
||||
+ break;
|
||||
+ strcpy(mp, ps);
|
||||
+ mp += plen;
|
||||
+ }
|
||||
*mp = '\0';
|
||||
}
|
||||
|
||||
116
less.spec
116
less.spec
|
|
@ -1,11 +1,10 @@
|
|||
Summary: A text file browser similar to more, but better
|
||||
Name: less
|
||||
Version: 685
|
||||
Version: 643
|
||||
Release: 6%{?dist}
|
||||
License: GPL-3.0-only and BSD-2-Clause
|
||||
Source0: https://www.greenwoodsoftware.com/less/%{name}-%{version}.tar.gz
|
||||
%global lesspipe_version 2.20
|
||||
Source1: https://github.com/wofr06/lesspipe/archive/refs/tags/v%{lesspipe_version}.tar.gz#/lesspipe-%{lesspipe_version}.tar.gz
|
||||
Source1: lesspipe.sh
|
||||
Source2: less.sh
|
||||
Source3: less.csh
|
||||
Patch4: less-394-time.patch
|
||||
|
|
@ -15,18 +14,19 @@ Patch8: less-458-lessecho-usage.patch
|
|||
Patch9: less-458-less-filters-man.patch
|
||||
Patch10: less-458-lesskey-usage.patch
|
||||
Patch11: less-458-old-bot-in-help.patch
|
||||
Patch13: less-436-help.patch
|
||||
|
||||
# 3x from upstream, for less < 654, fix for filenames containing control chars
|
||||
Patch12: less-654-control-char-in-filename-prereq.patch
|
||||
Patch13: less-654-control-char-in-filename.patch
|
||||
Patch14: less-633-control-char-in-filename-regrfix.patch
|
||||
|
||||
# from upstream, for less < 654, rhbz#2274980
|
||||
Patch15: less-590-CVE-2024-32487.patch
|
||||
|
||||
URL: https://www.greenwoodsoftware.com/less/
|
||||
BuildRequires: ncurses-devel
|
||||
BuildRequires: autoconf automake libtool
|
||||
BuildRequires: make
|
||||
# for lesspipe make test
|
||||
BuildRequires: perl-Archive-Tar
|
||||
# for lesspipe
|
||||
Recommends: (less-color = %{version}-%{release} if perl-interpreter)
|
||||
Recommends: unzip
|
||||
Recommends: html2text
|
||||
Recommends: 7zip
|
||||
|
||||
%description
|
||||
The less utility is a text file browser that resembles more, but has
|
||||
|
|
@ -38,26 +38,19 @@ example, vi).
|
|||
You should install less because it is a basic utility for viewing text
|
||||
files, and you'll use it frequently.
|
||||
|
||||
%package color
|
||||
Summary: Colorizers for less
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Conflicts: less < 685-5
|
||||
|
||||
%description color
|
||||
Syntax highlighting modes for the less pager.
|
||||
|
||||
|
||||
%prep
|
||||
%setup -q -a 1
|
||||
%setup -q
|
||||
%patch -P 4 -p1 -b .time
|
||||
%patch -P 5 -p2 -b .fsync
|
||||
%patch -P 5 -p1 -b .fsync
|
||||
%patch -P 6 -p1 -b .manpage-add-old-bot-option
|
||||
%patch -P 8 -p1 -b .lessecho-usage
|
||||
%patch -P 9 -p1 -b .less-filters-man
|
||||
%patch -P 10 -p1 -b .lesskey-usage
|
||||
%patch -P 11 -p1 -b .old-bot
|
||||
%patch -P 13 -p1 -b .help
|
||||
|
||||
%patch -P 12 -p1 -b .ctrl-char-fname-prereq
|
||||
%patch -P 13 -p1 -b .ctrl-char-fname
|
||||
%patch -P 14 -p1 -b .ctrl-char-fname-regrfix
|
||||
%patch -P 15 -p1 -b .CVE-2024-32487
|
||||
|
||||
%build
|
||||
rm -f ./configure
|
||||
|
|
@ -65,89 +58,26 @@ autoreconf -fiv
|
|||
%configure
|
||||
%make_build CFLAGS="%{optflags} -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
|
||||
|
||||
pushd lesspipe-%{lesspipe_version}
|
||||
#fix shebangs
|
||||
sed -i "s|^#!/usr/bin/env bash|^#!/usr/bin/bash|" lesspipe.sh
|
||||
|
||||
./configure --prefix=%{_prefix}
|
||||
%make_build
|
||||
popd
|
||||
|
||||
%install
|
||||
%make_install
|
||||
mkdir -p $RPM_BUILD_ROOT/etc/profile.d
|
||||
install -p %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}
|
||||
install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT/etc/profile.d
|
||||
install -p -m 644 %{SOURCE3} $RPM_BUILD_ROOT/etc/profile.d
|
||||
|
||||
pushd lesspipe-%{lesspipe_version}
|
||||
%make_install
|
||||
rm -f $RPM_BUILD_ROOT/usr/share/bash-completion/less_completion
|
||||
popd
|
||||
|
||||
%check
|
||||
pushd lesspipe-%{lesspipe_version}
|
||||
# we dont have all required components to pass full test, but it is still
|
||||
# useful to run for debug purposes
|
||||
make test ||:
|
||||
popd
|
||||
|
||||
%files
|
||||
%doc README NEWS INSTALL
|
||||
%license LICENSE COPYING
|
||||
/etc/profile.d/*
|
||||
%{_bindir}/less
|
||||
%{_bindir}/lesscomplete
|
||||
%{_bindir}/lessecho
|
||||
%{_bindir}/lesskey
|
||||
%{_bindir}/lesspipe.sh
|
||||
%{_bindir}/*
|
||||
%{_mandir}/man1/*
|
||||
|
||||
%files color
|
||||
%{_bindir}/archive_color
|
||||
%{_bindir}/code2color
|
||||
%{_bindir}/sxw2txt
|
||||
%{_bindir}/vimcolor
|
||||
|
||||
%changelog
|
||||
* Mon Nov 24 2025 Michal Hlavinka <mhlavink@redhat.com> - 685-6
|
||||
- reintroduce use more feature rich lesspipe filter, but separate
|
||||
perl dependent colorizer into subpackage, credits Yaakov Selkowitz
|
||||
* Wed Aug 21 2024 Michal Hlavinka <mhlavink@redhat.com> - 643-6
|
||||
- fix CVE-2024-32487 - less with LESSOPEN mishandles \n in paths (#2274981)
|
||||
|
||||
* Fri Nov 14 2025 Adam Williamson <awilliam@redhat.com> - 685-5
|
||||
- Revert new lesspipe filter due to hard perl dependency
|
||||
|
||||
* Wed Nov 12 2025 Michal Hlavinka <mhlavink@redhat.com> - 685-4
|
||||
- use more feature rich lesspipe filter (#2308285)
|
||||
|
||||
* Wed Oct 22 2025 Michal Hlavinka <mhlavink@redhat.com> - 685-1
|
||||
- updated to 685 (#2404089)
|
||||
|
||||
* Tue Sep 02 2025 Michal Hlavinka <mhlavink@redhat.com> - 679-4
|
||||
- add man page for lesspipe.sh (rhbz#2376159)
|
||||
|
||||
* Thu Jul 24 2025 Fedora Release Engineering <releng@fedoraproject.org> - 679-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
|
||||
|
||||
* Mon Jun 23 2025 Michal Hlavinka <mhlavink@redhat.com> - 679-1
|
||||
- updated to 679
|
||||
|
||||
* Thu May 22 2025 Michal Hlavinka <mhlavink@redhat.com> - 678-1
|
||||
- updated to 678 (#2367012)
|
||||
|
||||
* Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 668-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
|
||||
|
||||
* Fri Oct 18 2024 Michal Hlavinka <mhlavink@redhat.com> - 668-1
|
||||
- updated to 668 (#2319532)
|
||||
|
||||
* Mon Aug 12 2024 Michal Hlavinka <mhlavink@redhat.com> - 661-2
|
||||
- fix post-v590 regression causing reading only part of pipe when stdin is null (upstream#558)
|
||||
|
||||
* Fri Jul 26 2024 Michal Hlavinka <mhlavink@redhat.com> - 661-1
|
||||
- updated to 661(2294840)
|
||||
|
||||
* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 643-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
|
||||
* Sat Jul 27 2024 Michal Hlavinka <mhlavink@redhat.com> - 643-5
|
||||
- fix incorrect display when filename contains control chars
|
||||
|
||||
* Tue Feb 06 2024 Matej Mužila <mmuzila@redhat.com> - 643-4
|
||||
- migrated to SPDX license
|
||||
|
|
|
|||
128
lesspipe.sh
Executable file
128
lesspipe.sh
Executable file
|
|
@ -0,0 +1,128 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# To use this filter with less, define LESSOPEN:
|
||||
# export LESSOPEN="|/usr/bin/lesspipe.sh %s"
|
||||
#
|
||||
# The script should return zero if the output was valid and non-zero
|
||||
# otherwise, so less could detect even a valid empty output
|
||||
# (for example while uncompressing gzipped empty file).
|
||||
# For backward-compatibility, this is not required by default. To turn
|
||||
# this functionality there should be another vertical bar (|) straight
|
||||
# after the first one in the LESSOPEN environment variable:
|
||||
# export LESSOPEN="||/usr/bin/lesspipe.sh %s"
|
||||
|
||||
if [ ! -e "$1" ] ; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -d "$1" ] ; then
|
||||
ls -alF -- "$1"
|
||||
exit $?
|
||||
fi
|
||||
|
||||
exec 2>/dev/null
|
||||
|
||||
# Allow for user defined filters
|
||||
if [ -x ~/.lessfilter ]; then
|
||||
~/.lessfilter "$1"
|
||||
if [ $? -eq 0 ]; then
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
manfilter ()
|
||||
{
|
||||
if test -x /usr/bin/man ; then
|
||||
# See rhbz#1241543 for more info. Well, actually we firstly
|
||||
# used 'man -l', then we switched to groff, and then we again
|
||||
# switched back to 'man -l'.
|
||||
/usr/bin/man -P /usr/bin/cat -l "$1"
|
||||
elif test -x /usr/bin/groff; then
|
||||
# This is from pre-rhbz#1241543-time.
|
||||
groff -Tascii -mandoc "$1" | cat -s
|
||||
else
|
||||
echo "WARNING:"
|
||||
echo "WARNING: to better show manual pages, install 'man-db' package"
|
||||
echo "WARNING:"
|
||||
cat "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
export MAN_KEEP_FORMATTING=1
|
||||
|
||||
case "$1" in
|
||||
*.[1-9n].bz2|*.[1-9]x.bz2|*.man.bz2|*.[1-9n].[glx]z|*.[1-9]x.[glx]z|*.man.[glx]z|*.[1-9n].lzma|*.[1-9]x.lzma|*.man.lzma|*.[1-9n].zst|*.[1-9]x.zst|*.man.zst|*.[1-9n].br|*.[1-9]x.br|*.man.br)
|
||||
case "$1" in
|
||||
*.gz) DECOMPRESSOR="gzip -dc" ;;
|
||||
*.bz2) DECOMPRESSOR="bzip2 -dc" ;;
|
||||
*.lz) DECOMPRESSOR="lzip -dc" ;;
|
||||
*.zst) DECOMPRESSOR="zstd -dcq" ;;
|
||||
*.br) DECOMPRESSOR="brotli -dc" ;;
|
||||
*.xz|*.lzma) DECOMPRESSOR="xz -dc" ;;
|
||||
esac
|
||||
if [ -n "$DECOMPRESSOR" ] && $DECOMPRESSOR -- "$1" | file - | grep -q troff; then
|
||||
$DECOMPRESSOR -- "$1" | manfilter -
|
||||
exit $?
|
||||
fi ;;&
|
||||
*.[1-9n]|*.[1-9]x|*.man)
|
||||
if file "$1" | grep -q troff; then
|
||||
manfilter "$1"
|
||||
exit $?
|
||||
fi ;;&
|
||||
*.tar) tar tvvf "$1"; exit $? ;;
|
||||
*.tgz|*.tar.gz|*.tar.[zZ]) tar tzvvf "$1"; exit $? ;;
|
||||
*.tar.xz) tar Jtvvf "$1"; exit $? ;;
|
||||
*.xz|*.lzma) xz -dc -- "$1"; exit $? ;;
|
||||
*.tar.lz) tar --lzip -tvvf "$1"; exit $? ;;
|
||||
*.lz) lzip -dc -- "$1"; exit $? ;;
|
||||
*.tar.zst) tar --zstd -tvvf "$1"; exit $? ;;
|
||||
*.zst) zstd -dcq -- "$1"; exit $? ;;
|
||||
*.tar.br) brotli -dc -- "$1" | tar tvvf -; exit $? ;;
|
||||
*.br) brotli -dc -- "$1"; exit $? ;;
|
||||
*.tar.bz2|*.tbz2) bzip2 -dc -- "$1" | tar tvvf -; exit $? ;;
|
||||
*.[zZ]|*.gz) gzip -dc -- "$1"; exit $? ;;
|
||||
*.bz2) bzip2 -dc -- "$1"; exit $? ;;
|
||||
*.zip|*.jar|*.nbm) zipinfo -- "$1"; exit $? ;;
|
||||
# --nomanifest -> rhbz#1450277
|
||||
*.rpm) rpm -qpivl --changelog --nomanifest -- "$1"; exit $? ;;
|
||||
*.cpi|*.cpio) cpio -itv < "$1"; exit $? ;;
|
||||
*.gpg)
|
||||
if [ -x /usr/bin/gpg2 ]; then
|
||||
gpg2 -d "$1"
|
||||
exit $?
|
||||
elif [ -x /usr/bin/gpg ]; then
|
||||
gpg -d "$1"
|
||||
exit $?
|
||||
else
|
||||
echo "No GnuPG available."
|
||||
echo "Install gnupg2 or gnupg to show encrypted files."
|
||||
exit 1
|
||||
fi ;;
|
||||
*.gif|*.jpeg|*.jpg|*.pcd|*.png|*.tga|*.tiff|*.tif)
|
||||
if [ -x /usr/bin/identify ]; then
|
||||
identify "$1"
|
||||
exit $?
|
||||
elif [ -x /usr/bin/gm ]; then
|
||||
gm identify "$1"
|
||||
exit $?
|
||||
else
|
||||
echo "No identify available"
|
||||
echo "Install ImageMagick or GraphicsMagick to browse images"
|
||||
exit 1
|
||||
fi ;;
|
||||
*)
|
||||
if [ -x /usr/bin/file ] && [ -x /usr/bin/iconv ] && [ -x /usr/bin/cut ]; then
|
||||
case `file -b "$1"` in
|
||||
*UTF-16*) conv='UTF-16' ;;
|
||||
*UTF-32*) conv='UTF-32' ;;
|
||||
esac
|
||||
if [ -n "$conv" ]; then
|
||||
env=`echo $LANG | cut -d. -f2`
|
||||
if [ -n "$env" -a "$conv" != "$env" ]; then
|
||||
iconv -f $conv -t $env "$1"
|
||||
exit $?
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
exit 1
|
||||
esac
|
||||
3
sources
3
sources
|
|
@ -1,2 +1 @@
|
|||
SHA512 (less-685.tar.gz) = aff745f1816e0f996fbdbc33ecae0726cf0d842efc227937ff8c32e734c8b5be4c611ffbb27e5e038b4d95280c95ca60c53af1a47cf419cb06e5fab543c231f3
|
||||
SHA512 (lesspipe-2.20.tar.gz) = bfeba1b921959e8cde8ce8bcc75765598cefd2cc705aa5b6417592fdbdb0c43bd3efb0d4379a0514f0da86806988ee95219539974c7af3319595d9b03aac550e
|
||||
SHA512 (less-643.tar.gz) = 6a324ac54e22429ac652dc303bc1fe48933555d1cbf8ad7ecf345940910c014fef9551a3219743cfb7115e356b5841ae97d6ce62e7a1ba1e3300d243efca34d9
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue