On Mon, Aug 15, 2016 at 03:33:38PM +0200, Jérôme FRGACIC wrote:
> Hello tech,
> 
> I recently use ed(1) to transmit some input lines to another command.
> However, I remark that after the 'w' command, I can exit ed without any
> warnings even if the data were not saved into a file.
> 
> Here is an example :
> 
> $ ed
> P
> *a
> A simple line.
> .
> *w !sed 's/^/#/'
> #A simple line.
> 15
> *q
> $ # No warning before exit
> 
> This behaviour seems not conform to the Open Group Base Specifications
> Issue 6 (IEEE Std 1003.1, 2004 Edition). I would suggest this diff to
> solve this problem.

POSIX says the following about the quit command:

       The q command shall cause ed to exit. If the buffer has changed since
       the last time the entire buffer was written, the user shall be warned,
       as described previously.

where 'previously' means:

       If changes have been made in the buffer since the last w command that
       wrote the entire buffer, ed shall warn the user if an attempt is made
       to destroy the editor buffer via the e or q commands.
       [...]

You did write the entire buffer, namely to the stdin of the sed command,
and afterwards you didn't change the buffer anymore, so I think this is
compliant with what is quoted above.

FWIW, the GNU ed port (ged) behaves in exactly the same way.

Could you please be more specific what part of the standard you have in
mind?

> 
> Index: main.c
> ===================================================================
> RCS file: /cvs/src/bin/ed/main.c,v
> retrieving revision 1.57
> diff -r1.57 main.c
> 862c862
> <             else if (addr == addr_last)
> ---
> >             else if (addr == addr_last && *fnp != '!')
> 
> 
> PS : I haven't subcribe to the tech mailing list, so please add me as
> recipient if you reply.
> 
> 
> Kind regards,
> 
> 
> Jérôme FRGACIC
> 

Reply via email to