forked from pool/texinfo
3edbe3ca2d
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/texinfo?expand=0&rev=47
116 lines
3.6 KiB
Diff
116 lines
3.6 KiB
Diff
Index: texinfo-6.4/install-info/Makefile.in
|
|
===================================================================
|
|
--- texinfo-6.4.orig/install-info/Makefile.in
|
|
+++ texinfo-6.4/install-info/Makefile.in
|
|
@@ -221,7 +221,7 @@ am__installdirs = "$(DESTDIR)$(bindir)"
|
|
PROGRAMS = $(bin_PROGRAMS)
|
|
am_ginstall_info_OBJECTS = install-info.$(OBJEXT)
|
|
ginstall_info_OBJECTS = $(am_ginstall_info_OBJECTS)
|
|
-ginstall_info_LDADD = $(LDADD)
|
|
+ginstall_info_LDADD = $(LDADD) -lzio
|
|
am__DEPENDENCIES_1 =
|
|
ginstall_info_DEPENDENCIES = $(top_builddir)/gnulib/lib/libgnu.a \
|
|
$(am__DEPENDENCIES_1)
|
|
Index: texinfo-6.4/install-info/install-info.c
|
|
===================================================================
|
|
--- texinfo-6.4.orig/install-info/install-info.c
|
|
+++ texinfo-6.4/install-info/install-info.c
|
|
@@ -22,6 +22,7 @@
|
|
#include <getopt.h>
|
|
#include <regex.h>
|
|
#include <argz.h>
|
|
+#include <zio.h>
|
|
|
|
#define TAB_WIDTH 8
|
|
|
|
@@ -701,34 +702,59 @@ open_possibly_compressed_file (char *fil
|
|
|
|
*opened_filename = filename;
|
|
f = fopen (*opened_filename, FOPEN_RBIN);
|
|
+ if (!compression_program)
|
|
+ compression_program = &local_compression_program;
|
|
+ *compression_program = NULL;
|
|
+ if (f)
|
|
+ {
|
|
+ nread = fread (data, sizeof (data), 1, f);
|
|
+ if (nread == 1)
|
|
+ {
|
|
+ if (data[0] == '\x1f' && data[1] == '\x8b')
|
|
+ *compression_program = "g";
|
|
+ else if (data[0] == '\x1f' && data[1] == '\x9d')
|
|
+ *compression_program = "Z";
|
|
+ else if (data[0] == '\x1f' && data[1] == '\x9e')
|
|
+ *compression_program = "z";
|
|
+ else if (data[0] == 'B' && data[1] == 'Z' && data[2] == 'h')
|
|
+ *compression_program = "b";
|
|
+ }
|
|
+ fclose (f);
|
|
+ f = fzopen (*opened_filename, FOPEN_RBIN);
|
|
+ }
|
|
if (!f)
|
|
{
|
|
*opened_filename = concat (filename, ".gz", "");
|
|
- f = fopen (*opened_filename, FOPEN_RBIN);
|
|
+ f = fzopen (*opened_filename, FOPEN_RBIN);
|
|
+ *compression_program = "g";
|
|
}
|
|
if (!f)
|
|
{
|
|
free (*opened_filename);
|
|
*opened_filename = concat (filename, ".xz", "");
|
|
- f = fopen (*opened_filename, FOPEN_RBIN);
|
|
+ f = fzopen (*opened_filename, FOPEN_RBIN);
|
|
+ *compression_program = "x";
|
|
}
|
|
if (!f)
|
|
{
|
|
free (*opened_filename);
|
|
*opened_filename = concat (filename, ".bz2", "");
|
|
- f = fopen (*opened_filename, FOPEN_RBIN);
|
|
+ f = fzopen (*opened_filename, FOPEN_RBIN);
|
|
+ *compression_program = "b";
|
|
}
|
|
if (!f)
|
|
{
|
|
free (*opened_filename);
|
|
*opened_filename = concat (filename, ".lz", "");
|
|
- f = fopen (*opened_filename, FOPEN_RBIN);
|
|
+ f = fzopen (*opened_filename, FOPEN_RBIN);
|
|
+ *compression_program = "l";
|
|
}
|
|
if (!f)
|
|
{
|
|
free (*opened_filename);
|
|
*opened_filename = concat (filename, ".lzma", "");
|
|
- f = fopen (*opened_filename, FOPEN_RBIN);
|
|
+ f = fzopen (*opened_filename, FOPEN_RBIN);
|
|
+ *compression_program = "l";
|
|
}
|
|
#ifdef __MSDOS__
|
|
if (!f)
|
|
@@ -961,8 +987,22 @@ output_dirfile (char *dirfile, int dir_n
|
|
|
|
if (compression_program)
|
|
{
|
|
- char *command = concat (compression_program, ">", dirfile);
|
|
- output = popen (command, "w");
|
|
+ output = NULL;
|
|
+ if (*compression_program == 'g' || *compression_program == 'z')
|
|
+ output = fzopen (dirfile, "wg");
|
|
+ if (*compression_program == 'b')
|
|
+ output = fzopen (dirfile, "wb");
|
|
+ if (*compression_program == 'Z')
|
|
+ output = fzopen (dirfile, "wZ");
|
|
+ if (*compression_program == 'l')
|
|
+ output = fzopen (dirfile, "wl");
|
|
+ if (*compression_program == 'x')
|
|
+ output = fzopen (dirfile, "wx");
|
|
+ if (!output)
|
|
+ {
|
|
+ char *command = concat (compression_program, ">", dirfile);
|
|
+ output = popen (command, "w");
|
|
+ }
|
|
}
|
|
else
|
|
output = fopen (dirfile, "w");
|