Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37037173
en ru br
Репозитории ALT
S:7.0.3-alt1
5.1: 4.13-alt7
4.1: 4.11-alt3
4.0: 4.8-alt4
3.0: 4.8-alt2
www.altlinux.org/Changes

Группа :: Издательство
Пакет: texinfo

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: texinfo-4.13-alt-zio.patch
Скачать


Add support to read compressed info pages using libzio.
--- texinfo/install-info/install-info.c
+++ texinfo/install-info/install-info.c
@@ -21,6 +21,7 @@
 #include <getopt.h>
 #include <regex.h>
 #include <argz.h>
+#include <zio.h>
 
 #define TAB_WIDTH 8
 
@@ -641,7 +642,7 @@ The first time you invoke Info you start off looking at this node.\n\
 FILE *
 open_possibly_compressed_file (char *filename,
     void (*create_callback) (char *),
-    char **opened_filename, char **compression_program, int *is_pipe) 
+    char **opened_filename, char **compression_program)
 {
   char *local_opened_filename, *local_compression_program;
   int nread;
@@ -654,22 +655,22 @@ open_possibly_compressed_file (char *filename,
     opened_filename = &local_opened_filename;
 
   *opened_filename = filename;
-  f = fopen (*opened_filename, FOPEN_RBIN);
+  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);
   if (!f)
     {
       free (*opened_filename);
       *opened_filename = concat (filename, ".bz2", "");
-      f = fopen (*opened_filename, FOPEN_RBIN);
+      f = fzopen (*opened_filename, FOPEN_RBIN);
     }
   if (!f)
     {
      free (*opened_filename);
      *opened_filename = concat (filename, ".lzma", "");
-     f = fopen (*opened_filename, FOPEN_RBIN);
+     f = fzopen (*opened_filename, FOPEN_RBIN);
     }
 
 #ifdef __MSDOS__
@@ -677,13 +678,13 @@ open_possibly_compressed_file (char *filename,
         {
           free (*opened_filename);
           *opened_filename = concat (filename, ".igz", "");
-          f = fopen (*opened_filename, FOPEN_RBIN);
+          f = fzopen (*opened_filename, FOPEN_RBIN);
         }
       if (!f)
         {
           free (*opened_filename);
           *opened_filename = concat (filename, ".inz", "");
-          f = fopen (*opened_filename, FOPEN_RBIN);
+          f = fzopen (*opened_filename, FOPEN_RBIN);
         }
 #endif
       if (!f)
@@ -695,7 +696,7 @@ open_possibly_compressed_file (char *filename,
               /* 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);
             }
@@ -704,6 +705,7 @@ open_possibly_compressed_file (char *filename,
         }
     }
 
+#if 0
   /* 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.  */
   nread = fread (data, sizeof (data), 1, f);
@@ -778,6 +780,7 @@ open_possibly_compressed_file (char *filename,
 #endif
       *is_pipe = 0;
     }
+#endif
 
   return f;
 }
@@ -797,7 +800,6 @@ readfile (char *filename, int *sizep,
 {
   char *real_name;
   FILE *f;
-  int pipe_p;
   int filled = 0;
   int data_size = 8192;
   char *data = xmalloc (data_size);
@@ -806,7 +808,7 @@ readfile (char *filename, int *sizep,
   f = open_possibly_compressed_file (filename, create_callback,
                                      opened_filename ? opened_filename
                                                      : &real_name,
-                                     compression_program, &pipe_p);
+                                     compression_program);
 
   for (;;)
     {
@@ -829,10 +831,7 @@ readfile (char *filename, int *sizep,
   /* We need to close the stream, since on some systems the pipe created
      by popen is simulated by a temporary file which only gets removed
      inside pclose.  */
-  if (pipe_p)
-    pclose (f);
-  else
-    fclose (f);
+  fclose (f);
 
   *sizep = filled;
   return data;
@@ -846,19 +845,13 @@ readfile (char *filename, int *sizep,
 static void
 output_dirfile (char *dirfile, int dir_nlines, struct line_data *dir_lines,
                 int n_entries_to_add, struct spec_entry *entries_to_add,
-                struct spec_section *input_sections, char *compression_program)
+                struct spec_section *input_sections)
 {
   int n_entries_added = 0;
   int i;
   FILE *output;
 
-  if (compression_program)
-    {
-      char *command = concat (compression_program, ">", dirfile);
-      output = popen (command, "w");
-    }
-  else
-    output = fopen (dirfile, "w");
+  output = fopen (dirfile, "w");
 
   if (!output)
     {
@@ -969,10 +962,7 @@ output_dirfile (char *dirfile, int dir_nlines, struct line_data *dir_lines,
   /* Some systems, such as MS-DOS, simulate pipes with temporary files.
      On those systems, the compressor actually gets run inside pclose,
      so we must call pclose.  */
-  if (compression_program)
-    pclose (output);
-  else
-    fclose (output);
+  fclose (output);
 }
 
 /* Parse the input to find the section names and the entry names it
@@ -2542,7 +2532,7 @@ There is NO WARRANTY, to the extent permitted by law.\n"),
   else
     output_dirfile (opened_dirfilename, dir_nlines, dir_lines,
                     n_entries_to_add, entries_to_add,
-                    input_sections, compression_program);
+                    input_sections);
 
   xexit (0);
   return 0; /* Avoid bogus warnings.  */
--- texinfo/install-info/Makefile.am
+++ texinfo/install-info/Makefile.am
@@ -28,4 +28,4 @@ AM_CPPFLAGS = 					\
   -I$(top_srcdir)/gnulib/lib			\
   -I$(top_builddir)/gnulib/lib			\
   -DLOCALEDIR=\"$(localedir)\"
-LDADD = ../lib/libtxi.a $(top_builddir)/gnulib/lib/libgnu.a $(LIBINTL)
+LDADD = ../lib/libtxi.a $(top_builddir)/gnulib/lib/libgnu.a $(LIBINTL) -lzio
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin