> Date: Thu, 26 Feb 2015 21:34:03 +0000 > From: Gavin Smith <[email protected]> > Cc: Eli Zaretskii <[email protected]>, Karl Berry <[email protected]>, Texinfo > <[email protected]> > > I checked the 5.2 release and it was done differently. The code looked like: > > if (*compression_program) > { /* It's compressed, so fclose the file and then open a pipe. */ > char *command = concat (*compression_program," -cd <", > *opened_filename); > if (fclose (f) < 0) > pfatal_with_name (*opened_filename); > f = popen (command, "r"); > if (f) > *is_pipe = 1; > else > pfatal_with_name (command); > } > > The ChangeLog entry on 2014-02-19 explains: > > * install-info/install-info.c (open_possibly_compressed_file): > Work even if the file name contains arbitrary shell > metacharacters, for example: > install-info --info-dir="/d/a b/info" "/d/a b/info/emacs.info.gz" > Do this by running the decompressor on standard > input, rather than by having the shell open the file. > Return either stdin or a pipe. > Don't bother with IS_PIPE arg; no longer needed. > All callers changed. Check for freopen failure. > > I wonder if there is a problem with Cygwin with two processes having > the same file open at once, or else.
Ken, could this have something to do with text vs binary I/O mode? Perhaps the stdin that gzip inherits is not in binary mode, or something like that?
