From 7657835a4681dd4b45a1df493430c00f095f9910 Mon Sep 17 00:00:00 2001 From: rhatto Date: Tue, 17 Apr 2007 03:31:18 +0000 Subject: simplaret_search_and_delete: fix behaviour when searching for an exact package file name git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@348 04377dda-e619-0410-9926-eae83683ac58 --- trunk/src/simplaret | 106 ++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 77 insertions(+), 29 deletions(-) diff --git a/trunk/src/simplaret b/trunk/src/simplaret index 5fedce7..cdcd178 100755 --- a/trunk/src/simplaret +++ b/trunk/src/simplaret @@ -450,37 +450,85 @@ function simplaret_purge { function simplaret_search_and_delete { - local file candidate place basename + # search and delete packages + # usage: simplaret_search_and_delete [--silent] - for file in `find $2/ -name $1*tgz 2> /dev/null`; do - candidate="`basename $file`" - if [ "`package_name $candidate`" == "$1" ]; then - # check if has the same version and build number, otherwise erase the old one - for result in `simplaret_search $(package_name $candidate) --basename-only`; do - if [ "`package_name $candidate`" == "`package_name $result`" ]; then - if [ "`package_version $candidate`" == "`package_version $result`" ] && \ - [ "`package_build $candidate`" == "`package_build $result`" ]; then - LAST_DOWNLOADED_PACKAGE="$file" - if [ "$3" != "--silent" ]; then - echo Package $candidate already downloaded - # echo Package $candidate stored at `dirname $file` - else - true - # echo $file - fi - return 1 + local file candidate place basename name version build + local name_version name_build + + name="`package_name $1`" + + if [ "$name" != "$1" ]; then + # searching by full package filename + name_version="`package_version $1`" + name_build="`package_build $1`" + + for file in `find $2/ -name $name*tgz 2> /dev/null`; do + candidate="`basename $file`" + version="`package_version $candidate`" + build="`package_build $candidate`" + if [ "`package_name $candidate`" == "$name" ]; then + + if [ "$name_version" == "$version" ] && \ + [ "$name_build" == "$build" ]; then + LAST_DOWNLOADED_PACKAGE="$file" + if [ "$3" != "--silent" ]; then + echo Package $candidate already downloaded + # echo Package $candidate stored at `dirname $file` else - place="`dirname $file`" - basename="`basename $file tgz`" - rm -f $file - rm -f $place/$candidate.slack-required - rm -f $file.asc $place/$basename.meta $place/$basename.txt - break + true + # echo $file fi - fi - done - fi - done + return 1 + else + place="`dirname $file`" + basename="`basename $file tgz`" + rm -f $file + rm -f $place/$candidate.slack-required + rm -f $file.asc $place/$basename.meta $place/$basename.txt + break + fi + + fi + done + + else + + for file in `find $2/ -name $name*tgz 2> /dev/null`; do + candidate="`basename $file`" + version="`package_version $candidate`" + build="`package_build $candidate`" + if [ "`package_name $candidate`" == "$name" ]; then + # check if has the same version and build number, otherwise erase the old one + for result in `simplaret_search $(package_name $candidate) --basename-only`; do + if [ "`package_name $candidate`" == "`package_name $result`" ]; then + + if [ "$version" == "`package_version $result`" ] && \ + [ "$build" == "`package_build $result`" ]; then + LAST_DOWNLOADED_PACKAGE="$file" + if [ "$3" != "--silent" ]; then + echo Package $candidate already downloaded + # echo Package $candidate stored at `dirname $file` + else + true + # echo $file + fi + return 1 + else + place="`dirname $file`" + basename="`basename $file tgz`" + rm -f $file + rm -f $place/$candidate.slack-required + rm -f $file.asc $place/$basename.meta $place/$basename.txt + break + fi + + fi + done + fi + done + + fi } @@ -511,7 +559,7 @@ function simplaret_get { for repos_type in patches root repos noarch; do simplaret_set_storage_folder - simplaret_search_and_delete $name $storage $2 + simplaret_search_and_delete $1 $storage $2 if [ "$?" == "1" ]; then return 0 -- cgit v1.2.3