Imported Upstream version 16.0.4 12/94712/1
authorDongHun Kwak <dh0128.kwak@samsung.com>
Tue, 1 Nov 2016 02:12:04 +0000 (11:12 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Tue, 1 Nov 2016 02:12:06 +0000 (11:12 +0900)
Change-Id: I0a959fccdac00e848f4a00feec071629f641b3cd
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
VERSION.cmake
package/libzypp.changes
zypp/RepoManager.cc

index 8a43be5..95a2094 100644 (file)
@@ -61,8 +61,8 @@
 SET(LIBZYPP_MAJOR "16")
 SET(LIBZYPP_COMPATMINOR "0")
 SET(LIBZYPP_MINOR "0")
-SET(LIBZYPP_PATCH "3")
+SET(LIBZYPP_PATCH "4")
 #
-# LAST RELEASED: 16.0.3 (0)
+# LAST RELEASED: 16.0.4 (0)
 # (The number in parenthesis is LIBZYPP_COMPATMINOR)
 #=======
index 108bfcd..0afd0a0 100644 (file)
@@ -1,4 +1,11 @@
 -------------------------------------------------------------------
+Wed Jun 15 12:36:27 CEST 2016 - ma@suse.de
+
+- Fix bug in removeRepository which may keep an empty .repo file
+  rather than deleting it (bsc#984494)
+- version 16.0.4 (0)
+
+-------------------------------------------------------------------
 Mon Jun 13 12:53:03 CEST 2016 - ma@suse.de
 
 - Shrink pool if all repos are removed (bnc#899755)
index b830e85..8c455c9 100644 (file)
@@ -1762,10 +1762,12 @@ namespace zypp
       {
         // figure how many repos are there in the file:
         std::list<RepoInfo> filerepos = repositories_in_file(todelete.filepath());
-        if ( (filerepos.size() == 1) && ( filerepos.front().alias() == todelete.alias() ) )
+        if ( filerepos.size() == 0     // bsc#984494: file may have already been deleted
+         ||(filerepos.size() == 1 && filerepos.front().alias() == todelete.alias() ) )
         {
-          // easy, only this one, just delete the file
-          if ( filesystem::unlink(todelete.filepath()) != 0 )
+          // easy: file does not exist, contains no or only the repo to delete: delete the file
+         int ret = filesystem::unlink( todelete.filepath() );
+          if ( ! ( ret == 0 || ret == ENOENT ) )
           {
             // TranslatorExplanation '%s' is a filename
             ZYPP_THROW(RepoException( todelete, str::form( _("Can't delete '%s'"), todelete.filepath().c_str() )));