1 /*---------------------------------------------------------------------\
3 | |__ / \ / / . \ . \ |
8 \---------------------------------------------------------------------*/
9 /** \file zypp/sat/FileConflicts.cc
14 #include <zypp/sat/FileConflicts.h>
15 #include <zypp/base/LogTools.h>
16 #include <zypp/base/Gettext.h>
17 #include <zypp/base/Xml.h>
18 #include <zypp/CheckSum.h>
22 ///////////////////////////////////////////////////////////////////
25 ///////////////////////////////////////////////////////////////////
28 std::string FileConflicts::Conflict::asUserString() const
30 if ( lhsFilename() == rhsFilename() )
32 static const char * text[2][2] = {{ // [lhs][rhs] 0 = installed; 1 = to be installed
33 // TranslatorExplanation %1%(filename) %2%(package1) %3%(package2)
37 " conflicts with file from package\n"
39 // TranslatorExplanation %1%(filename) %2%(package1) %3%(package2)
43 " conflicts with file from install of\n"
46 // TranslatorExplanation %1%(filename) %2%(package1) %3%(package2)
50 " conflicts with file from package\n"
52 // TranslatorExplanation %1%(filename) %2%(package1) %3%(package2)
56 " conflicts with file from install of\n"
59 return str::Format( text[lhsSolvable().isSystem()?0:1][rhsSolvable().isSystem()?0:1] )
61 % lhsSolvable().asUserString()
62 % rhsSolvable().asUserString();
66 static const char * text[2][2] = {{ // [lhs][rhs] 0 = installed; 1 = to be installed
67 // TranslatorExplanation %1%(filename1) %2%(package1) %%3%(filename2) 4%(package2)
71 " conflicts with file\n"
75 // TranslatorExplanation %1%(filename1) %2%(package1) %3%(filename2) %4%(package2)
79 " conflicts with file\n"
84 // TranslatorExplanation %1%(filename1) %2%(package1) %3%(filename2) %4%(package2)
88 " conflicts with file\n"
92 // TranslatorExplanation %1%(filename1) %2%(package1) %3%(filename2) %4%(package2)
96 " conflicts with file\n"
101 return str::Format( text[lhsSolvable().isSystem()?0:1][rhsSolvable().isSystem()?0:1] )
103 % lhsSolvable().asUserString()
105 % rhsSolvable().asUserString();
109 std::ostream & operator<<( std::ostream & str, const FileConflicts & obj )
110 { return dumpRange( str << "(" << obj.size() << ") ", obj.begin(), obj.end() ); }
112 std::ostream & operator<<( std::ostream & str, const FileConflicts::Conflict & obj )
114 if ( obj.lhsFilename() == obj.rhsFilename() )
115 return str << str::Format( "%s:\n %s[%s]\n %s[%s]" )
122 return str << str::Format( "%s - %s:\n %s[%s]\n %s[%s]" )
132 std::ostream & dumpAsXmlOn( std::ostream & str, const FileConflicts & obj )
134 xmlout::Node guard( str, "fileconflicts", { "size", obj.size() } );
138 for ( const auto & el : obj )
139 dumpAsXmlOn( *guard, el ) << "\n";
146 std::ostream & dumpAsXmlHelper( std::ostream & str, const std::string & tag_r, IdString filename_r, IdString md5sum_r, Solvable solv_r )
148 xmlout::Node guard( str, tag_r );
149 *xmlout::Node( *guard, "file" ) << filename_r;
150 dumpAsXmlOn( *guard, CheckSum( md5sum_r.asString() ) );
151 dumpAsXmlOn( *guard, solv_r );
156 std::ostream & dumpAsXmlOn( std::ostream & str, const FileConflicts::Conflict & obj )
158 xmlout::Node guard( str, "fileconflict" );
159 dumpAsXmlHelper( *guard<<"\n", "lhs", obj.lhsFilename(), obj.lhsFilemd5(), obj.lhsSolvable() );
160 dumpAsXmlHelper( *guard<<"\n", "rhs", obj.rhsFilename(), obj.rhsFilemd5(), obj.rhsSolvable() );
165 ///////////////////////////////////////////////////////////////////
167 ///////////////////////////////////////////////////////////////////