[pacman-dev] [PATCH] contrib/pacdiff : rework and cleanup

Xavier shiningxc at gmail.com
Thu Feb 19 02:58:16 EST 2009


On Thu, Feb 19, 2009 at 2:23 AM, Dan McGee <dpmcgee at gmail.com> wrote:
> On Wed, Feb 18, 2009 at 7:20 AM, Xavier Chantry <shiningxc at gmail.com> wrote:
>> I initially only wanted to add a -l/--locate option to use locate instead of
>> find, which should have been easy.
>>
>> Then I thought I would try to support filename with whitespaces while I was
>> at it, and this was a bit more complex. The safest ways seem to be the
>> following ones : http://mywiki.wooledge.org/BashFAQ/020
>>
>> Then I received a lot of suggestions on #bash about how to improve the
>> script, which I tried to address.
>>
>> Signed-off-by: Xavier Chantry <shiningxc at gmail.com>
> Looks pretty good, one note inline. I've made the fix locally, so
> don't worry about resubmitting.
>
>> ---
>>  contrib/pacdiff |   83 +++++++++++++++++++++++++++++++++++++------------------
>>  1 files changed, 56 insertions(+), 27 deletions(-)
>>
>> diff --git a/contrib/pacdiff b/contrib/pacdiff
>> index 6493649..4b2aa9e 100755
>> --- a/contrib/pacdiff
>> +++ b/contrib/pacdiff
>> @@ -1,5 +1,5 @@
>> -#!/bin/sh
>> -#   pacdiff : a simple pacnew/pacorig/pacsave updater for /etc/
>> +#!/bin/bash
>> +#   pacdiff : a simple pacnew/pacorig/pacsave updater
>>  #
>>  #   Copyright (c) 2007 Aaron Griffin <aaronmgriffin at gmail.com>
>>  #
>> @@ -17,29 +17,58 @@
>>  #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
>>  #
>>
>> -# Original http://phraktured.net/config/bin/pacdiff
>> -
>>  diffprog=${DIFFPROG:-vimdiff}
>> -for x in $(find /etc/ -name "*.pacnew" -o -name "*.pacorig" -o -name "*.pacsave")
>> -do
>> -    echo "File: ${x%.pac*}"
>> -    chk="$(cmp $x ${x%.pac*})"
>> -    if [ -z "${chk}" ]; then
>> -        echo "  Files are identical, removing..."
>> -        rm $x
>> -    else
>> -        echo -n "  File differences found. (V)iew, (S)kip, (R)emove: [v/s/r] "
>> -        read c
>> -        c="$(echo $c| tr A-Z a-z)" #tolower
>> -        if [ "$c" = "r" ]; then
>> -            rm $x
>> -        elif [ "$c" = "s" ]; then
>> -            continue
>> -        else
>> -            [ "$c" = "n" -o "$c" = "N" ] || $diffprog $x ${x%.pac*}
>> -            echo -n "  Remove file? [Y/n] "
>> -            read c
>> -            [ "$c" = "n" -o "$c" = "N" ] || rm $x
>> -        fi
>> -    fi
>> -done
>> +locate=0
>> +
>> +usage() {
>> +       echo "pacdiff : a simple pacnew/pacorig/pacsave updater"
>> +       echo "Usage : pacdiff [-l]"
>> +       echo "The -l/--locate flag makes pacdiff use locate rather than find"
>> +}
>> +
>> +cmd() {
>> +       if [ $locate -eq 1 ]; then
>> +               locate -0 -e -b \*.pacnew \*.pacorig \*.pacsave
>> +       else
>> +               find /etc/ -name \*.pacnew -o -name \*.pacorig -o -name \*.pacsave -print0
> This didn't work out of the box. I had to use grouping to get it to
> work correctly:
> find /etc/ \( -name \*.pacnew -o -name \*.pacorig -o -name \*.pacsave \) -print0
>

Arf sorry, probably my zsh shell would played me tricks again, I
should always test with bash.


More information about the pacman-dev mailing list