On 11/01/2013 04:44 PM, Jim Meyering wrote:
> On Fri, Nov 1, 2013 at 9:29 AM, Pádraig Brady <[email protected]> wrote:
>> This should be fully backwards and forwards compatible with previous
>> escaping, since we'll never have a file name at the start of a line,
>> thus '\' at the start of a line always means the file name is escaped.
>>
>> * src/md5sum.c (main): Only escape the output (with a leading '\')
>> when a '\n' character is present in the file name.  There is no
>> need to do this in the more likely case where a '\' character is
>> present in the name.  Note this is faster also as we only scan the
>> file name once (for '\n') rather than four times.
>> (print_filename): Use the predetermined boolean as to whether to
>> escape or not, so that in the common case we can output the
>> file name directly, rather than inspecting each character.
>> * tests/misc/md5sum.pl: Adjust accordingly.
>> * tests/misc/sha1sum.pl: Likewise.
> 
> Good idea.  Thanks!  I had to read through it twice to realize that
> when escaping is done, backslash is still escaped.  It's just
> that the trigger is now the presence of newline, not backslash.
> 
> If you say something like the following, it might be easier to understand:
> 
> Escape the output (marking with a leading '\' and backslash-escaping
> both '\' and '\n') only when the file name contains a newline.
> Before, we would do that for a file name containing either newline or 
> backslash.
> 
> This probably deserves a NEWS entry, since it is user-visible.

I debated that as I thought it could have no impact on anything,
but it could actually if one was comparing old and new outputs?

newsum=$(md5sum my file set | md5sum)
[ "$newsum" = "$(cat ./oldsum)" ] || error

Given the above is a bit contrived,
and also this is in the unlikely case
of file names containing '\' it's probably
still OK to apply with a NEWS entry.

thanks,
Pádraig.

Reply via email to