[pacman-dev] [PATCH] contrib/pacdiff : big rework and cleanup
Xavier
shiningxc at gmail.com
Wed Feb 18 02:41:01 EST 2009
On Wed, Feb 18, 2009 at 12:22 AM, Aaron Griffin <aaronmgriffin at gmail.com> wrote:
> On Tue, Feb 17, 2009 at 4:44 PM, Xavier Chantry <shiningxc at gmail.com> wrote:
>> +exec 3< <(cmd)
>> +while IFS= read -r -d '' pacfile <&3; do
>>...
>> +exec 3>&-
>
> Wow this looks ugly. Is the anything gained over using a construct like this:
>
> cmd | while read pacfile; do
> ...
> done
In practice, I guess not much. In theory, this is the only way to deal
with any kind of filenames.
-print0
True; print the full file name on the standard output, followed
by a null character (instead of the newline character that
-print uses). This allows file names that contain newlines or
other types of white space to be correctly interpreted by pro‐
grams that process the find output. This option corresponds to
the -0 option of xargs.
And I believe that your construct cannot deal with this null character
separation.
Unfortunately that construct I used also required a redirection,
because we still need to read the terminal input inside the loop (for
read and vimdiff).
The best is to use find -exec, but unfortunately locate does not support that..
Anyway, I am fine if you want to aim more for readability rather than
correctness, it's very unlikely we are going to encounter weird
filenames with this script. I can easily switch "cmd | while read
pacfile; do", it has been an useful exercise for me anyway.
More information about the pacman-dev
mailing list