texinfo-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[6164] install-info popen fix


From: Gavin D. Smith
Subject: [6164] install-info popen fix
Date: Fri, 27 Feb 2015 18:34:17 +0000

Revision: 6164
          http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=6164
Author:   gavin
Date:     2015-02-27 18:34:14 +0000 (Fri, 27 Feb 2015)
Log Message:
-----------
install-info popen fix

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/install-info/install-info.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog     2015-02-27 14:03:58 UTC (rev 6163)
+++ trunk/ChangeLog     2015-02-27 18:34:14 UTC (rev 6164)
@@ -1,3 +1,10 @@
+2015-02-27  Ken Brown  <address@hidden>
+
+       * install-info/install-info.c (open_possibly_compressed_file):
+       Use 'fopen' to read the few first bytes, and then, only if it is 
+       compressed, redirect stdin to it and call 'popen'.  Suggestion 
+       from Eli Zaretskii.
+
 2015-02-26  Patrice Dumas  <address@hidden>
 
        * tp/tests/t/stdout.sh, tp/tests/t/stdout_split.sh: use $PERL

Modified: trunk/install-info/install-info.c
===================================================================
--- trunk/install-info/install-info.c   2015-02-27 14:03:58 UTC (rev 6163)
+++ trunk/install-info/install-info.c   2015-02-27 18:34:14 UTC (rev 6164)
@@ -700,48 +700,48 @@
     opened_filename = &local_opened_filename;
 
   *opened_filename = filename;
-  f = freopen (*opened_filename, FOPEN_RBIN, stdin);
+  f = fopen (*opened_filename, FOPEN_RBIN);
   if (!f)
     {
       *opened_filename = concat (filename, ".gz", "");
-      f = freopen (*opened_filename, FOPEN_RBIN, stdin);
+      f = fopen (*opened_filename, FOPEN_RBIN);
     }
   if (!f)
     {
       free (*opened_filename);
       *opened_filename = concat (filename, ".xz", "");
-      f = freopen (*opened_filename, FOPEN_RBIN, stdin);
+      f = fopen (*opened_filename, FOPEN_RBIN);
     }
   if (!f)
     {
       free (*opened_filename);
       *opened_filename = concat (filename, ".bz2", "");
-      f = freopen (*opened_filename, FOPEN_RBIN, stdin);
+      f = fopen (*opened_filename, FOPEN_RBIN);
     }
   if (!f)
     {
       free (*opened_filename);
       *opened_filename = concat (filename, ".lz", "");
-      f = freopen (*opened_filename, FOPEN_RBIN, stdin);
+      f = fopen (*opened_filename, FOPEN_RBIN);
     }
   if (!f)
     {
      free (*opened_filename);
      *opened_filename = concat (filename, ".lzma", "");
-     f = freopen (*opened_filename, FOPEN_RBIN, stdin);
+     f = fopen (*opened_filename, FOPEN_RBIN);
     }
 #ifdef __MSDOS__
   if (!f)
     {
       free (*opened_filename);
       *opened_filename = concat (filename, ".igz", "");
-      f = freopen (*opened_filename, FOPEN_RBIN, stdin);
+      f = fopen (*opened_filename, FOPEN_RBIN);
     }
   if (!f)
     {
       free (*opened_filename);
       *opened_filename = concat (filename, ".inz", "");
-      f = freopen (*opened_filename, FOPEN_RBIN, stdin);
+      f = fopen (*opened_filename, FOPEN_RBIN);
     }
 #endif /* __MSDOS__ */
   if (!f)
@@ -757,7 +757,7 @@
           (*create_callback) (filename);
 
           /* And try opening it again.  */
-          f = freopen (*opened_filename, FOPEN_RBIN, stdin);
+          f = fopen (*opened_filename, FOPEN_RBIN);
           if (!f)
             return 0;
         }
@@ -843,6 +843,9 @@
 
   if (*compression_program)
     { /* It's compressed, so open a pipe.  */
+      f = freopen (*opened_filename, FOPEN_RBIN, stdin);
+      if (!f)
+        return 0;
       char *command = concat (*compression_program, " -d", "");
       f = popen (command, "r");
       if (! f)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]