On 19/06/13 15:55, Andrew Gregory wrote:
> On 06/02/13 at 03:39pm, John Frazier wrote:
>> Use pacman local db to find pacnews based on active configs. Relegate
>> find to an option. Rename DIFFSEARCHPATH to DIFFFINDPATH to clarify use.
>> Add quit option to prompts. Clarify help.
>>
>> ---
>>  contrib/pacdiff.sh.in | 65 
>> +++++++++++++++++++++++++++++++++++++--------------
>>  1 file changed, 47 insertions(+), 18 deletions(-)
>>
>> diff --git a/contrib/pacdiff.sh.in b/contrib/pacdiff.sh.in
>> index 47779d6..25c3fd6 100644
>> --- a/contrib/pacdiff.sh.in
>> +++ b/contrib/pacdiff.sh.in
>> @@ -22,8 +22,8 @@ declare -r myname='pacdiff'
>>  declare -r myver='@PACKAGE_VERSION@'
>>  
>>  diffprog=${DIFFPROG:-vimdiff}
>> -diffsearchpath=${DIFFSEARCHPATH:-/etc}
>> -locate=0
>> +difffindpath=${DIFFFINDPATH:-/etc}
>> +diffpacmandb=${DIFFPACMANDB:-/var/lib/pacman}
> 
> Check our other scripts.  They parse DBPath from pacman.conf
> 
>>  USE_COLOR='y'
>>  
>>  m4_include(../scripts/library/output_format.sh)
>> @@ -32,11 +32,21 @@ m4_include(../scripts/library/term_colors.sh)
>>  
>>  usage() {
>>      echo "$myname : a simple pacnew/pacorig/pacsave updater"
>> -    echo "Usage : $myname [-l]"
>> -    echo "  -l/--locate makes $myname use locate rather than find"
>> -    echo "  DIFFPROG variable allows to override the default vimdiff"
>> -    echo "  DIFFSEARCHPATH allows to override the default /etc path"
>> -    echo "Example : DIFFPROG=meld DIFFSEARCHPATH=\"/boot /etc /usr\" 
>> $myname"
>> +    echo ""
>> +    echo "Usage : $myname [-lf]"
>> +    echo "  -l/--locate makes $myname search using locate"
>> +    echo "  -f/--find   makes $myname search using find"
>> +    echo ""
>> +    echo "Note: the default search looks for backup files in the local 
>> pacman db"
>> +    echo "      this generally will not find *.pacsave files"
>> +    echo ""
>> +    echo "  DIFFPROG variable will override the default editor: vimdiff"
>> +    echo "  DIFFFINDPATH will override the default path when using --find"
>> +    echo "  DIFFPACMANDB will override the default pacman db for the "
>> +    echo "    default search type"
>> +    echo ""
>> +    echo "Example : DDIFFPROG=meld DIFFPACMANDB=/mnt/var/lib/pacman/ 
>> $myname"
>> +    echo "Example : DIFFFINDPATH=\"/boot /etc /usr\" $myname"
>>  }
>>  
>>  version() {
>> @@ -45,18 +55,12 @@ version() {
>>      echo 'Copyright (C) 2013 Pacman Development Team 
>> <[email protected]>'
>>  }
>>  
>> -cmd() {
>> -    if [ $locate -eq 1 ]; then
>> -            locate -0 -e -b \*.pacnew \*.pacorig \*.pacsave
>> -    else
>> -            find $diffsearchpath \( -name \*.pacnew -o -name \*.pacorig -o 
>> -name \*.pacsave \) -print0
>> -    fi
>> -}
>> -
>>  if [ $# -gt 0 ]; then
>>      case $1 in
>>              -l|--locate)
>> -            locate=1;;
>> +                    locate=$(type -P locate);;
>> +            -f|--find)
>> +                    find=$(type -P find);;
>>              -V|--version)
>>              version; exit 0;;
>>              -h|--help)
>> @@ -66,6 +70,30 @@ if [ $# -gt 0 ]; then
>>      esac
>>  fi
>>  
>> +check_backup() {
>> +  [[ -f $1 ]] && printf "$1"'\0'
>> +}
>> +
>> +cmd() {
>> +    if [[ -n $locate ]]; then
>> +            locate -0 -e -b \*.pacnew \*.pacorig \*.pacsave
>> +    elif [[ -n $find ]]; then
>> +            find "${difffindpath}" \( -name \*.pacnew -o -name \*.pacorig 
>> -o -name \*.pacsave \) -print0 2> /dev/null
>> +    else
>> +            # parse local pacman db for backup files and look for pac* 
>> based on them
>> +            awk '/^%BACKUP%$/ {
>> +                    while (getline) {
>> +                            if (/^$/) { nextfile }
>> +                            print $1
>> +                    }
>> +            }' "${diffpacmandb}"/local/*/files | while read -r bkup; do
>> +                    check_backup "/$bkup.pacnew"
>> +                    check_backup "/$bkup.pacorig"
>> +                    check_backup "/$bkup.pacsave"
> 
> I'm not sure checking for exact matches is the best solution here.
> Pacman can save multiple .pacsave files with an increasing extension
> which this (and our existing searches) will miss.
> 

I missed this comment before.  Correct me if I am wrong, but the latest
file is always .pacsave, and older ones are renamed .pacsave.1
.pacsave.2 ...

So we should just be looking at .pacsave here?

Allan


Reply via email to