bug-gawk
[Top][All Lists]
Advanced

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

Re: fflush & close behavior not well-defined


From: Andrew J. Schorr
Subject: Re: fflush & close behavior not well-defined
Date: Mon, 14 Sep 2020 11:37:28 -0400
User-agent: Mutt/1.5.21 (2010-09-15)

On Mon, Sep 14, 2020 at 05:27:13PM +0200, Manuel Collado wrote:
> El 14/09/2020 a las 15:07, Andrew J. Schorr escribió:
> >Hi,
> >
> >On Sun, Sep 13, 2020 at 11:50:17PM -0600, arnold@skeeve.com wrote:
> >>Thanks for the report. Gawk's close already takes an optional second
> >>argument ("from" or "to") for closing one end of a two-way pipe.
> >
> >True, but if you look at the code in io.c:do_close, you'll see that the 
> >from/to
> >"how" argument does not come into play until after the open file is 
> >identified
> >by scanning the red_head list. So the presence of that argument does not 
> >limit
> >the search to the subset of open pipes. It merely triggers a warning from
> >io.c:close_redir if used with a file that's not a pipe. So in the case of
> >close, the fix would require up to 3 arguments:
> >    close(file, [, filetype [, how]])
> >(with the code being smart enough to detect when "how" is located in the
> >2nd position).
> 
> Another possibility would be to add two specific close() wrappers, say
> 
> close_file(file)
> close_pipe(pipe, how)
> 
> To be used if it is necessary to disambiguate.
> 
> Just an idea.

And you'd also need close_coprocess(pipe, how). In my view, it's simpler to
enhance the existing close and fflush functions, but I grant that these
problems are very unlikely to occur in real life.  It's just sloppiness in the
awk POSIX spec that has failed to disambiguate.

Regards,
Andy



reply via email to

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