Index: texinfo-5.2/install-info/Makefile.in =================================================================== --- texinfo-5.2.orig/install-info/Makefile.in +++ texinfo-5.2/install-info/Makefile.in @@ -201,7 +201,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-5.2/install-info/install-info.c =================================================================== --- texinfo-5.2.orig/install-info/install-info.c +++ texinfo-5.2/install-info/install-info.c @@ -22,6 +22,7 @@ #include #include #include +#include #define TAB_WIDTH 8 @@ -687,10 +688,31 @@ 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) { @@ -702,7 +724,8 @@ open_possibly_compressed_file (char *fil { 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) { @@ -739,7 +762,7 @@ open_possibly_compressed_file (char *fil /* And try opening it again. */ free (*opened_filename); *opened_filename = filename; - f = fopen (*opened_filename, FOPEN_RBIN); + f = fzopen (*opened_filename, FOPEN_RBIN); if (!f) pfatal_with_name (filename); }