fixed setting autorefresh flag for installation sources
authorJiri Srain <jsrain@suse.cz>
Thu, 6 Apr 2006 14:56:30 +0000 (14:56 +0000)
committerJiri Srain <jsrain@suse.cz>
Thu, 6 Apr 2006 14:56:30 +0000 (14:56 +0000)
package/libzypp.changes
zypp/media/MediaAccess.cc
zypp/media/MediaAccess.h
zypp/source/SourceImpl.cc
zypp/source/susetags/ProductMetadataParser.cc
zypp/source/susetags/ProductMetadataParser.h
zypp/source/susetags/SuseTagsImpl.cc

index a96d7336e352eea95ffabd613a08956f62a4b7c0..dac53e323688426895c7eab7cdd41919947b481c 100644 (file)
@@ -1,3 +1,8 @@
+-------------------------------------------------------------------
+Thu Apr  6 16:37:49 CEST 2006 - jsrain@suse.de
+
+- fixed setting autorefresh flag for installation sources
+
 -------------------------------------------------------------------
 Thu Apr  6 15:53:02 CEST 2006 - kkaempf@suse.de
 
index dc3d1ca1ce85c85bbc4a391fda7b199fc60c4a27..7a033e2dbde9ab0aed37b8a76afab806c1774766 100644 (file)
@@ -150,6 +150,14 @@ MediaAccess::downloads(const Url &url)
     return (scheme == "ftp" || scheme == "http" || scheme == "https");
 }
 
+// STATIC
+bool
+MediaAccess::canBeVolatile(const Url &url)
+{
+    std::string scheme( url.getScheme());
+    return ! (scheme == "cd" || scheme == "dvd");
+}
+
 // Type of media if open, otherwise NONE.
 std::string
 MediaAccess::protocol() const
index 2ddd059aa220f03fabc776cf19464cd6aeff5674..ec4f8d1d18176d78b9f185090f9cbc783d693f0d 100644 (file)
@@ -119,6 +119,17 @@ namespace zypp {
         */
        static
        bool        downloads(const Url &url);
+       /**
+        * Hint whether the media can provide volatile contents
+        *
+        * @note This hint is based on the \p url scheme
+        * only and does not imply, that the URL is valid.
+        *
+        * @param url The media URL to check.
+        * @return True, if the files are downloaded.
+        */
+       static
+       bool        canBeVolatile(const Url &url);
 
        /**
         * Used Protocol if media is opened, otherwise 'unknown'.
index 4da11fa51e3294267828cafbd179903b370acb83..5048c685c42fb09745a083d401f8ea82ce0c8ddf 100644 (file)
@@ -65,8 +65,8 @@ namespace zypp
       _cache_dir = cache_dir_r;
       _subscribed = true;
 
-      // for remote sources we enable autorefresh by default
-      _autorefresh = media::MediaAccess::downloads( _url );
+      // for sources which are neither CD nor DVD we enable autorefresh by default
+      _autorefresh = media::MediaAccess::canBeVolatile( _url );
 
       try
         {
index 36d4a2c545cc28f05924c65be48fbf1165c101d5..5d33b65a2782f8634b164fbb118655bde57e1106 100644 (file)
@@ -64,6 +64,7 @@ namespace zypp
         }
 
         std::string buffer;
+       volatile_content = false;
         while(file && !file.eof())
         {
           getline(file, buffer);
@@ -148,6 +149,8 @@ namespace zypp
               parseFileCheckSum( key, value, prodImpl->_descr_files_checksums);
             else if(key == "KEY")
               parseFileCheckSum( key, value, prodImpl->_signing_keys);
+           else if(key == "VOLATILE_CONTENT")
+             volatile_content = true;
             else
               DBG << "Unknown key [" << key << "] with value [" << value << "]" << std::endl;
           }
index ea53a569ba6ba830e9482c054ede3705450c2005..7d8510a8c3265cdf181375def307dc513f07fa3b 100644 (file)
@@ -74,6 +74,9 @@ namespace zypp
          */
         void parseFileCheckSum( const std::string &key, const std::string &value, std::map<std::string, CheckSum> &container);
 
+
+       bool volatile_content;
+
       };
       ///////////////////////////////////////////////////////////////////
 
index 34648045777586375f11f2c6e21e568dbcc35349..f5aa072d7a0c23f79e9296bc35601b050d4c26e6 100644 (file)
@@ -428,6 +428,7 @@ namespace zypp
           MIL << "Product: " << product->summary() << endl;
           store.insert( product );
           _prodImpl = p.prodImpl;
+         _autorefresh = p.volatile_content && media::MediaAccess::canBeVolatile( _url );
         }
         catch (Exception & excpt_r) {
           ERR << "cannot parse content file" << endl;