]> gitweb.fluxo.info Git - simplepkg.git/commitdiff
simplaret_search_and_delete: fix behaviour when searching for an exact package file...
authorrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>
Tue, 17 Apr 2007 03:31:18 +0000 (03:31 +0000)
committerrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>
Tue, 17 Apr 2007 03:31:18 +0000 (03:31 +0000)
git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@348 04377dda-e619-0410-9926-eae83683ac58

trunk/src/simplaret

index 5fedce7b428430fd057c090738df9852526c92a4..cdcd178be80888de1d9b8dbd9438df2f6ca856df 100755 (executable)
@@ -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 <package> <folder> [--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