bug-ed
[Top][All Lists]
Advanced

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

Re: Bug introduced in ed v1.14 (up to v1.19) corrupting full file which


From: Alexander Jones
Subject: Re: Bug introduced in ed v1.14 (up to v1.19) corrupting full file which delta changes are applied to
Date: Tue, 3 Oct 2023 11:31:28 -0500

>> "You are taking the deltas from the standard output of ed, which is for 
>> human consumption, not to be used as output to be written to a file."
>
> The deltas in question are generated with diff -e to produce the ed output.

I think he meant the reconstructed files, after the deltas have been applied.


On Tue, Oct 3, 2023 at 11:27 AM Development Team
<dev@roundtable-software.com> wrote:
>
> Hi.
>
> Thanks for the quick responses.
>
> Adding the echo 'Q' seems to resolve. I assume there is no issue using same 
> on prior releases of ed?
>
> "You are taking the deltas from the standard output of ed, which is for human 
> consumption, not to be used as output to be written to a file."
>
> The deltas in question are generated with diff -e to produce the ed output.
>
> Jeff
>
> -----Original Message-----
> From: Antonio Diaz Diaz <antonio@gnu.org>
> Sent: Tuesday, October 3, 2023 11:18 AM
> To: Danie Theron - DSV <danie.theron@dsv.com>
> Cc: bug-ed@gnu.org; Development Team <dev@roundtable-software.com>
> Subject: Re: Bug introduced in ed v1.14 (up to v1.19) corrupting full file 
> which delta changes are applied to
>
> Hello Danie,
>
> Danie Theron - DSV wrote:
> > This is working fine up to v1.13 of "ed", but since v1.14 up to the
> > latest version v1.19, the deltas are not being applied correctly
> > causing corruption in the reconstruction of programs.
>
> You are taking the deltas from the standard output of ed, which is for human 
> consumption, not to be used as output to be written to a file. This may have 
> worked with older versions of ed, but it no longer is expected to work.
>
> For example, POSIX[1] states that:
>
> 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. The ed utility shall write the
> string:
>    "?\n"
> (followed by an explanatory message if help mode has been enabled via the H
> command) to standard output and shall continue in command mode with the 
> current line number unchanged.
>
> and
>
> If an end-of-file is detected on standard input:
> [...]
>        If the ed utility is in command mode, it shall act as if a q command 
> had been entered.
>
> [1] https://pubs.opengroup.org/onlinepubs/9699919799/utilities/ed.html
>
> The cause of the '?' being inserted into the reconstructed files is that ed 
> is reaching the end of file on standard input with the buffer modified:
>
> $ (cat textfile_v1.1_delta.txt ; echo '1,$p') | ed -vs textfile_v1.0.txt | 
> diff textfile_v1.1.txt -
> 7a8,9
>  > ?
>  > Warning: buffer modified
>
> A workaround may be to exit ed unconditionally with command 'Q':
>
> $ (cat textfile_v1.1_delta.txt ; echo '1,$p' ; echo 'Q') | ed -s 
> textfile_v1.0.txt | diff textfile_v1.1.txt -
>
> But probably a better solution would be to use the 'w' command of 'ed', or to 
> use 'patch' instead of 'ed' to apply the patches.
>
>
> Best regards,
> Antonio.
>



reply via email to

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