You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
4.8 KiB
131 lines
4.8 KiB
https://bugs.gentoo.org/269742
|
|
|
|
From bfae00d02b5fb3a2ce34c09d2dbf0ca2f96b154f Mon Sep 17 00:00:00 2001
|
|
From: Karl Berry <karl@gnu.org>
|
|
Date: Sat, 14 Mar 2009 17:57:41 +0000
|
|
Subject: [PATCH] support xz compression, http://tukaani.org/xz
|
|
|
|
---
|
|
ChangeLog | 6 ++++++
|
|
NEWS | 4 ++++
|
|
doc/info-stnd.texi | 34 +++++++++++++++++-----------------
|
|
info/filesys.c | 1 +
|
|
install-info/install-info.c | 29 +++++++++++++++++++++++++----
|
|
5 files changed, 53 insertions(+), 21 deletions(-)
|
|
|
|
2009-03-14 Karl Berry <karl@gnu.org>
|
|
|
|
* info/filesys.c (compress_suffixes): add .xz/unxz.
|
|
|
|
* info/filesys.h (DEFAULT_INFOPATH): include PATH by default.
|
|
|
|
diff --git a/doc/info-stnd.texi b/doc/info-stnd.texi
|
|
index 2bd67f3..c730cff 100644
|
|
--- a/doc/info-stnd.texi
|
|
+++ b/doc/info-stnd.texi
|
|
@@ -202,21 +202,21 @@ directory.
|
|
@cindex Info files, compressed
|
|
In every directory Info tries, if @var{filename} is not found, Info
|
|
looks for it with a number of known extensions of Info files@footnote{
|
|
-@file{.info}, @file{-info}, @file{/index}, and @file{.inf}.}. For every
|
|
-known extension, Info looks for a compressed file, if a regular file
|
|
-isn't found. Info supports files compressed with @code{gzip},
|
|
-@code{bzip2}, @code{compress} and @code{yabba} programs; it calls
|
|
-@code{gunzip}, @code{bunzip2}, @code{uncompress} and @code{unyabba},
|
|
-accordingly, to decompress such files. Compressed Info files are
|
|
-assumed to have @file{.z}, @file{.gz}, @file{.bz2}, @file{.Z}, or
|
|
-@file{.Y} extensions, possibly in addition to one of the known Info
|
|
-files extensions@footnote{The MS-DOS version allows for the Info
|
|
-extension, such as @code{.inf}, and the short compressed file
|
|
-extensions, such as @file{.z} and @file{.gz}, to be merged into a single
|
|
-extension, since DOS doesn't allow more than a single dot in the
|
|
-basename of a file. Thus, on MS-DOS, if Info looks for @file{bison},
|
|
-file names like @file{bison.igz} and @file{bison.inz} will be found and
|
|
-decompressed by @code{gunzip}.}.
|
|
+@file{.info}, @file{-info}, @file{/index}, and @file{.inf}.}. For
|
|
+every known extension, Info looks for a compressed file, if a regular
|
|
+file isn't found. Info supports files compressed with @code{gzip},
|
|
+@code{xz}, @code{bzip2}, @code{lzma}, @code{compress} and @code{yabba}
|
|
+programs, assumed to have @file{.z}, @file{.gz}, @file{.xz},
|
|
+@file{.bz2}, @file{.lzma}, @file{.Z}, or @file{.Y} extensions,
|
|
+possibly after one of the known Info files extensions.
|
|
+
|
|
+On MS-DOS, Info allows for the Info extension, such as @code{.inf},
|
|
+and the short compressed file extensions, such as @file{.z} and
|
|
+@file{.gz}, to be merged into a single extension, since DOS doesn't
|
|
+allow more than a single dot in the basename of a file. Thus, on
|
|
+MS-DOS, if Info looks for @file{bison}, file names like
|
|
+@file{bison.igz} and @file{bison.inz} will be found and decompressed
|
|
+by @code{gunzip}.
|
|
|
|
@item --help
|
|
@itemx -h
|
|
diff --git a/info/filesys.c b/info/filesys.c
|
|
index fdd18a8..5e795bc 100644
|
|
--- a/info/filesys.c
|
|
+++ b/info/filesys.c
|
|
@@ -55,6 +55,7 @@ static char *info_suffixes[] = {
|
|
|
|
static COMPRESSION_ALIST compress_suffixes[] = {
|
|
{ ".gz", "gunzip" },
|
|
+ { ".xz", "unxz" },
|
|
{ ".bz2", "bunzip2" },
|
|
{ ".z", "gunzip" },
|
|
{ ".lzma", "unlzma" },
|
|
diff --git a/install-info/install-info.c b/install-info/install-info.c
|
|
index 24669b3..0f18ca4 100644
|
|
--- a/install-info/install-info.c
|
|
+++ b/install-info/install-info.c
|
|
@@ -400,6 +400,11 @@ strip_info_suffix (char *fname)
|
|
len -= 3;
|
|
ret[len] = 0;
|
|
}
|
|
+ else if (len > 3 && FILENAME_CMP (ret + len - 3, ".xz") == 0)
|
|
+ {
|
|
+ len -= 3;
|
|
+ ret[len] = 0;
|
|
+ }
|
|
else if (len > 4 && FILENAME_CMP (ret + len - 4, ".bz2") == 0)
|
|
{
|
|
len -= 4;
|
|
@@ -659,6 +664,12 @@ open_possibly_compressed_file (char *filename,
|
|
{
|
|
*opened_filename = concat (filename, ".gz", "");
|
|
f = fopen (*opened_filename, FOPEN_RBIN);
|
|
+ }
|
|
+ if (!f)
|
|
+ {
|
|
+ *opened_filename = concat (filename, ".xz", "");
|
|
+ f = fopen (*opened_filename, FOPEN_RBIN);
|
|
+ }
|
|
if (!f)
|
|
{
|
|
free (*opened_filename);
|
|
@@ -702,7 +712,6 @@ open_possibly_compressed_file (char *filename,
|
|
else
|
|
pfatal_with_name (filename);
|
|
}
|
|
- }
|
|
|
|
/* Read first few bytes of file rather than relying on the filename.
|
|
If the file is shorter than this it can't be usable anyway. */
|
|
@@ -727,6 +736,15 @@ open_possibly_compressed_file (char *filename,
|
|
#else
|
|
*compression_program = "gzip";
|
|
#endif
|
|
+
|
|
+ else if (data[0] == '\xFD' && data[1] == '7' && data[2] == 'z'
|
|
+ && data[3] == 'X' && data[4] == 'Z' && data[5] == 0)
|
|
+#ifndef STRIP_DOT_EXE
|
|
+ *compression_program = "xz.exe";
|
|
+#else
|
|
+ *compression_program = "xz";
|
|
+#endif
|
|
+
|
|
else if (data[0] == 'B' && data[1] == 'Z' && data[2] == 'h')
|
|
#ifndef STRIP_DOT_EXE
|
|
*compression_program = "bzip2.exe";
|
|
--
|
|
1.7.4.rc2
|
|
|