don't require 'selections' and 'patterns' file in the source
authorStanislav Visnovsky <visnov@suse.cz>
Fri, 3 Feb 2006 14:22:21 +0000 (14:22 +0000)
committerStanislav Visnovsky <visnov@suse.cz>
Fri, 3 Feb 2006 14:22:21 +0000 (14:22 +0000)
zypp/source/susetags/SuseTagsImpl.cc

index 6160d5b..59d6f12 100644 (file)
@@ -109,61 +109,84 @@ namespace zypp
             << content.size() << " packages" << endl;
 
 
-       // parse selections
-       p = provideFile(_path + "suse/setup/descr/selections");
-
-       std::ifstream sels (p.asString().c_str());
+       bool file_found = true;
 
-       while (sels && !sels.eof())
+       // parse selections
+       try {
+         p = provideFile(_path + "suse/setup/descr/selections");
+       } catch (...)
        {
-            std::string selfile;
+           MIL << "'selections' file not found" << endl;
+           
+           file_found = false;
+       }
+       
+       if (file_found)
+       {
+           std::ifstream sels (p.asString().c_str());
+           
+           while (sels && !sels.eof())
+           {
+               std::string selfile;
 
-           getline(sels,selfile);
+               getline(sels,selfile);
 
-           if (selfile.empty() ) continue;
+               if (selfile.empty() ) continue;
 
-           DBG << "Going to parse selection " << selfile << endl;
+               DBG << "Going to parse selection " << selfile << endl;
 
-           Pathname file = provideFile(_path + "suse/setup/descr/" + selfile);
-           MIL << "Selection file to parse " << file << endl;
+               Pathname file = provideFile(_path + "suse/setup/descr/" + selfile);
+               MIL << "Selection file to parse " << file << endl;
 
-           Selection::Ptr sel( parseSelection( file ) );
+               Selection::Ptr sel( parseSelection( file ) );
 
-           DBG << "Selection:" << sel << endl;
+               DBG << "Selection:" << sel << endl;
 
-           if (sel)
-               _store.insert( sel );
+               if (sel)
+                   _store.insert( sel );
 
-           DBG << "Parsing of " << file << " done" << endl;
+               DBG << "Parsing of " << file << " done" << endl;
+           }
        }
 
        // parse patterns
-       p = provideFile(_path + "suse/setup/descr/patterns");
-
-       std::ifstream pats (p.asString().c_str());
+       file_found = true;
+       
+       try {
+           p = provideFile(_path + "suse/setup/descr/patterns");
+       } catch (...)
+       {
+           MIL << "'patterns' file not found" << endl;
+           file_found = false;
+       }
 
-       while (pats && !pats.eof())
+       if ( file_found )
        {
-            std::string patfile;
+           std::ifstream pats (p.asString().c_str());
 
-           getline(pats,patfile);
+           while (pats && !pats.eof())
+           {
+               std::string patfile;
 
-           if (patfile.empty() ) continue;
+               getline(pats,patfile);
 
-           DBG << "Going to parse pattern " << patfile << endl;
+               if (patfile.empty() ) continue;
 
-           Pathname file = provideFile(_path + "suse/setup/descr/" + patfile);
-           MIL << "Pattern file to parse " << file << endl;
+               DBG << "Going to parse pattern " << patfile << endl;
 
-           Pattern::Ptr pat( parsePattern( file ) );
+               Pathname file = provideFile(_path + "suse/setup/descr/" + patfile);
+               MIL << "Pattern file to parse " << file << endl;
 
-           DBG << "Pattern:" << pat << endl;
+               Pattern::Ptr pat( parsePattern( file ) );
 
-           if (pat)
-               _store.insert( pat );
+               DBG << "Pattern:" << pat << endl;
 
-           DBG << "Parsing of " << file << " done" << endl;
-       }
+               if (pat)
+                   _store.insert( pat );
+
+               DBG << "Parsing of " << file << " done" << endl;
+           }
+        }
       }
       ///////////////////////////////////////////////////////////////////
       //