From e51b617698e87cbbc2d7f8b20398e3ca2dc08a64 Mon Sep 17 00:00:00 2001 From: Michael Andres Date: Tue, 11 Sep 2007 13:01:30 +0000 Subject: [PATCH] - Don't fail if a product is deleted multiple times (e.g. due to obsoletes and an explicit deleted request). (#308746) --- VERSION.cmake | 2 +- package/libzypp.changes | 15 +++++++++++---- zypp/target/store/XMLFilesBackend.cc | 34 ++++++++++++---------------------- 3 files changed, 24 insertions(+), 27 deletions(-) diff --git a/VERSION.cmake b/VERSION.cmake index b462cc3..504e63d 100644 --- a/VERSION.cmake +++ b/VERSION.cmake @@ -47,4 +47,4 @@ SET(LIBZYPP_MAJOR "3") SET(LIBZYPP_MINOR "22") SET(LIBZYPP_COMPATMINOR "21") -SET(LIBZYPP_PATCH "6") +SET(LIBZYPP_PATCH "7") diff --git a/package/libzypp.changes b/package/libzypp.changes index 057d16d..da27b9d 100644 --- a/package/libzypp.changes +++ b/package/libzypp.changes @@ -1,19 +1,26 @@ ------------------------------------------------------------------- +Tue Sep 11 14:54:44 CEST 2007 - ma@suse.de + +- Don't fail if a product is deleted multiple times (e.g. due to + obsoletes and an explicit deleted request). (#308746) +- version 3.22.7 + +------------------------------------------------------------------- Tue Sep 11 13:52:47 CEST 2007 - jkupec@suse.cz -- SYSCONFDIR variable added for modifying /etc +- SYSCONFDIR variable added for modifying /etc ------------------------------------------------------------------- Tue Sep 11 12:18:11 CEST 2007 - schubi@suse.de - uninstallable resolvable -->suggested solution: delete; Bug 308164 -- r 7177 +- r 7177 ------------------------------------------------------------------- Mon Sep 10 16:19:05 CEST 2007 - schubi@suse.de - new translations added -- r 7166 +- r 7166 - version 3.22.6 ------------------------------------------------------------------- @@ -25,7 +32,7 @@ Mon Sep 10 15:50:49 CEST 2007 - lslezak@suse.cz Mon Sep 10 14:17:29 CEST 2007 - schubi@suse.de - Splitting packages: Take the package with the best - architecture,edition ONLY; Bug 308591 + architecture,edition ONLY; Bug 308591 - r 7160 ------------------------------------------------------------------- diff --git a/zypp/target/store/XMLFilesBackend.cc b/zypp/target/store/XMLFilesBackend.cc index 0017c20..2615ae7 100644 --- a/zypp/target/store/XMLFilesBackend.cc +++ b/zypp/target/store/XMLFilesBackend.cc @@ -47,9 +47,6 @@ #include #include -#include "boost/filesystem/operations.hpp" // includes boost/filesystem/path.hpp -#include "boost/filesystem/fstream.hpp" // ditto - #include "XMLFilesBackend.h" #include "serialize.h" @@ -59,7 +56,6 @@ using std::endl; using std::string; using std::list; -using namespace boost::filesystem; using namespace zypp; using namespace zypp::filesystem; @@ -258,7 +254,7 @@ XMLFilesBackend::isBackendInitialized() const for ( it_kinds = d->kinds.begin() ; it_kinds != d->kinds.end(); ++it_kinds ) { Resolvable::Kind kind = (*it_kinds); - bool isthere = exists(dirForResolvableKind(kind)); + bool isthere = PathInfo( dirForResolvableKind(kind) ).isExist(); ok = ok && isthere; } @@ -266,12 +262,12 @@ XMLFilesBackend::isBackendInitialized() const for ( it_kinds = d->kinds_flags.begin() ; it_kinds != d->kinds_flags.end(); ++it_kinds ) { Resolvable::Kind kind = (*it_kinds); - bool isthere = exists(dirForResolvableKindFlags(kind)); + bool isthere = PathInfo( dirForResolvableKindFlags(kind) ).isExist(); ok = ok && isthere; } // named flags - bool nmthere = exists(dirForNamedFlags()); + bool nmthere = PathInfo( dirForNamedFlags() ).isExist(); ok = ok && nmthere; return ok; @@ -328,25 +324,19 @@ void XMLFilesBackend::setRandomFileNameEnabled( bool enabled ) std::string XMLFilesBackend::dirForResolvableKind( Resolvable::Kind kind ) const { - std::string dir; - dir += Pathname( d->root + Pathname(ZYPP_DB_DIR) + Pathname(resolvableKindToString(kind, true)) ).asString(); - return dir; + return Pathname( d->root + Pathname(ZYPP_DB_DIR) + Pathname(resolvableKindToString(kind, true)) ).asString(); } std::string XMLFilesBackend::dirForResolvableKindFlags( Resolvable::Kind kind ) const { - std::string dir; - dir += Pathname( d->root + Pathname(ZYPP_DB_DIR) + Pathname("flags") + Pathname(resolvableKindToString(kind, true)) ).asString(); - return dir; + return Pathname( d->root + Pathname(ZYPP_DB_DIR) + Pathname("flags") + Pathname(resolvableKindToString(kind, true)) ).asString(); } std::string XMLFilesBackend::dirForNamedFlags() const { - std::string dir; - dir += Pathname( d->root + Pathname(ZYPP_DB_DIR) + Pathname("named-flags")).asString(); - return dir; + return Pathname( d->root + Pathname(ZYPP_DB_DIR) + Pathname("named-flags")).asString(); } std::string @@ -385,7 +375,7 @@ XMLFilesBackend::fileNameForResolvable( ResObject::constPtr resolvable ) const std::string XMLFilesBackend::fullPathForResolvable( ResObject::constPtr resolvable ) const { - return path( path(dirForResolvable(resolvable)) / path(fileNameForResolvable(resolvable))).string(); + return( Pathname( dirForResolvable(resolvable) ) / fileNameForResolvable(resolvable) ).asString(); } std::string @@ -393,14 +383,14 @@ XMLFilesBackend::fullPathForNamedFlags( const std::string &key ) const { std::stringstream key_stream(key); std::string key_encoded = Digest::digest("MD5", key_stream); - return path( path(dirForNamedFlags()) / path(key_encoded)).string(); + return( Pathname( dirForNamedFlags() ) / key_encoded ).asString(); } std::string XMLFilesBackend::fullPathForResolvableFlags( ResObject::constPtr resolvable ) const { // flags are in a hidden file with the same name - return path( path(dirForResolvableFlags(resolvable)) / path(fileNameForResolvable(resolvable))).string(); + return( Pathname( dirForResolvableFlags(resolvable) ) / fileNameForResolvable(resolvable) ).asString(); } void @@ -520,7 +510,7 @@ XMLFilesBackend::flagsFromFile( const std::string &filename ) const { std::set _flags; // do we have previous saved flags? - if (!exists(path(filename))) + if ( ! PathInfo( filename ).isExist() ) return _flags; std::ifstream file(filename.c_str()); @@ -593,8 +583,8 @@ XMLFilesBackend::deleteFileObject( const Pathname &filename ) const { try { - int ret = filesystem::unlink(Pathname(filename)); - if ( ret != 0 ) + int ret = filesystem::unlink( filename ); + if ( ret != 0 && ret != ENOENT ) { ERR << "Error removing resolvable file " << filename << std::endl; ZYPP_THROW(Exception("Error deleting " + filename.asString())); -- 2.7.4