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: Shawn Wagner
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 09:02:20 -0700

Untested, but I wonder if it's printing a warning for exiting with a
modified file which is why you're seeing an additional > ? at the end for
each patch applied. Instead of sending '1,$p' as the last command and using
redirection, maybe send 'w new-filename' as the last command so ed saves
the modified file itself into the new one?

(cat textfile_v1.1_delta.txt ; echo 'w textfile_v1.1_reconstructed.txt') |
ed -s textfile_v1.0.txt

On Tue, Oct 3, 2023, 7:02 AM Danie Theron - DSV <danie.theron@dsv.com>
wrote:

> Good day Antonio and other maintainers of ed,
>
> We are using a software version control system which our developers are
> using to make changes to programs and deploy to different environments.
> The back end of the application is using Unix/Linux commands to manipulate
> & reconstructing programs. The main commands are "diff" and "ed".
> For example when a program is created on the system, it stores the full
> content of v1.0 in the database.
>
> When changes are made to the initial version of the v1.0 program, only the
> delta changes (generated from the "diff" command) v1.1, v1.2, v1.3 and so
> forth is stored in the database so that the database does not grow
> excessively by storing the full contents of the modified program versions.
>
> When the program is continually modified or gets deployed to an
> environment, it uses "ed" to reconstruct the specific version of the
> program, the deltas are applied to the v1.0 program.
>
> 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.
>
> (We have migrated from Solaris 11.4 using an ancient version of "ed" -
> version unknown, to RHEL 8 which uses "ed" version 1.14.2, which corrupted
> a lot of our programs. As an interim solution I have compiled v1.13 of
> "ed", and updated the system scripts to use "ed" v1.13)
>
> Can you please find the cause and release a bugfix version that solves
> this issue?
>
> Please see my test cases below & attached:
>
> # cat textfile_v1.0.txt
> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
> BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
> CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
> DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
> EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
> FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
> GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
>
> # cat textfile_v1.1.txt
> AAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
> BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
> CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
> DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
> EEEEEEEEEEEEEEEEEEEEEEZEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
> FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
> GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
>
> # cat textfile_v1.2.txt
> AAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
> BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
> CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
>
> DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
> EEEEEEEEEEEEEEEEEEEEEEZEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
> FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
> SGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
>
> # cat textfile_v1.3.txt
> AAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
> BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBHBBBBBBBB
> CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
>
> DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
> EEEEEEEEEEEEEEEEEEEEEEZEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
> FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
> SGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
>
> # diff -e textfile_v1.0.txt textfile_v1.1.txt > textfile_v1.1_delta.txt
>
> # cat textfile_v1.1_delta.txt
> 5c
> EEEEEEEEEEEEEEEEEEEEEEZEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
> .
> 1c
> AAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
> .
>
> # diff -e textfile_v1.1.txt textfile_v1.2.txt > textfile_v1.2_delta.txt
>
> # cat textfile_v1.2_delta.txt
> 7c
> SGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
> .
> 3a
>
> .
>
> # diff -e textfile_v1.2.txt textfile_v1.3.txt > textfile_v1.3_delta.txt
>
> # cat textfile_v1.3_delta.txt
> 7c
> FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
> .
> 2c
> BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBHBBBBBBBB
> .
>
> ##############################################################
> # ---> ed version 1.13 <----                                 #
> # Reconstruct v1.3 of the file using version 1.0 of the file #
> # and applying the v1.1, v1.2 & v1.3 delta files             #
> ##############################################################
>
> # /home/userabc/ed/ed-1.13/ed -V
> GNU ed 1.13
> Copyright (C) 1994 Andrew L. Moore.
> Copyright (C) 2016 Antonio Diaz Diaz.
> License GPLv3+: GNU GPL version 3 or later <
> http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.
>
> # (cat textfile_v1.1_delta.txt ; echo '1,$p') |
> /home/userabc/ed/ed-1.13/ed - textfile_v1.0.txt >
> textfile_v1.1_reconstructed.txt
> # (cat textfile_v1.2_delta.txt ; echo '1,$p') |
> /home/userabc/ed/ed-1.13/ed - textfile_v1.1_reconstructed.txt >
> textfile_v1.2_reconstructed.txt
> # (cat textfile_v1.3_delta.txt ; echo '1,$p') |
> /home/userabc/ed/ed-1.13/ed - textfile_v1.2_reconstructed.txt >
> textfile_v1.3_reconstructed.txt
> #
> # diff textfile_v1.3.txt textfile_v1.3_reconstructed.txt
> #
> >>>>> GREAT - successfully reconstructed v1.3 using the full v1.0 and
> applying the v1.1, v1.2 & v1.3 deltas
>
>
> ##############################################################
> # ---> ed version 1.14 <----                                 #
> # Reconstruct v1.3 of the file using version 1.0 of the file #
> # and applying the v1.1, v1.2 & v1.3 delta files             #
> ##############################################################
>
> # /home/userabc/ed/ed-1.14/ed -V
> GNU ed 1.14
> Copyright (C) 1994 Andrew L. Moore.
> Copyright (C) 2017 Antonio Diaz Diaz.
> License GPLv3+: GNU GPL version 3 or later <
> http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.
>
> # (cat textfile_v1.1_delta.txt ; echo '1,$p') |
> /home/userabc/ed/ed-1.14/ed - textfile_v1.0.txt >
> textfile_v1.1_reconstructed.txt
> # diff textfile_v1.1.txt textfile_v1.1_reconstructed.txt
> 7a8
> > ?
> # (cat textfile_v1.2_delta.txt ; echo '1,$p') |
> /home/userabc/ed/ed-1.14/ed - textfile_v1.1_reconstructed.txt >
> textfile_v1.2_reconstructed.txt
> # diff textfile_v1.2.txt textfile_v1.2_reconstructed.txt
> 8a9,10
> > ?
> > ?
> # (cat textfile_v1.3_delta.txt ; echo '1,$p') |
> /home/userabc/ed/ed-1.14/ed - textfile_v1.2_reconstructed.txt >
> textfile_v1.3_reconstructed.txt
> # diff textfile_v1.3.txt textfile_v1.3_reconstructed.txt
> 8a9,11
> > ?
> > ?
> > ?
>
> >>>>> NOT GOOD - ed v1.14 corrupts the reconstructions using the full v1.0
> and applying the v1.1, v1.2 & v1.3 deltas
>
>
> ##############################################################
> # ---> ed version 1.19 <----                                 #
> # Reconstruct v1.3 of the file using version 1.0 of the file #
> # and applying the v1.1, v1.2 & v1.3 delta files             #
> ##############################################################
>
> # /home/userabc/ed/ed-1.19/ed -V
> GNU ed 1.19
> Copyright (C) 1994 Andrew L. Moore.
> Copyright (C) 2023 Antonio Diaz Diaz.
> License GPLv2+: GNU GPL version 2 or later <
> http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.
> #
> # (cat textfile_v1.1_delta.txt ; echo '1,$p') |
> /home/userabc/ed/ed-1.19/ed - textfile_v1.0.txt >
> textfile_v1.1_reconstructed.txt
> # diff textfile_v1.1.txt textfile_v1.1_reconstructed.txt
> 7a8
> > ?
> # (cat textfile_v1.2_delta.txt ; echo '1,$p') |
> /home/userabc/ed/ed-1.19/ed - textfile_v1.1_reconstructed.txt >
> textfile_v1.2_reconstructed.txt
> # diff textfile_v1.2.txt textfile_v1.2_reconstructed.txt
> 8a9,10
> > ?
> > ?
> # (cat textfile_v1.3_delta.txt ; echo '1,$p') |
> /home/userabc/ed/ed-1.19/ed - textfile_v1.2_reconstructed.txt >
> textfile_v1.3_reconstructed.txt
> # diff textfile_v1.3.txt textfile_v1.3_reconstructed.txt
> 8a9,11
> > ?
> > ?
> > ?
>
> >>>>> ALSO NOT GOOD - latest ed v1.19 still corrupts the reconstructions
> using the full v1.0 and applying the v1.1, v1.2 & v1.3 deltas
>
>
> Thank you so much, any help would be much appreciated.
>
>
> Danie Theron
>
>


reply via email to

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