[virt-tools-list] [libosinfo] Media ID strings are now regular expressions

Zeeshan Ali (Khattak) zeeshanak at gnome.org
Fri Sep 23 13:07:04 UTC 2011


From: "Zeeshan Ali (Khattak)" <zeeshanak at gnome.org>

---
 data/oses/fedora.xml  |   16 ++++++++--------
 data/oses/rhel.xml    |   28 ++++++++++++++--------------
 data/oses/windows.xml |    8 ++++----
 osinfo/osinfo_db.c    |   11 +++++------
 osinfo/osinfo_media.c |   15 +++++++++------
 5 files changed, 40 insertions(+), 38 deletions(-)

diff --git a/data/oses/fedora.xml b/data/oses/fedora.xml
index 116151f..e822eff 100644
--- a/data/oses/fedora.xml
+++ b/data/oses/fedora.xml
@@ -89,14 +89,14 @@
     <media arch="i386">
       <url>http://download.fedoraproject.org/pub/fedora/linux/releases/12/Fedora/i386/os/</url>
       <iso>
-        <volume-id>Fedora 12 i386</volume-id>
+        <volume-id>.*Fedora 12 i386.*</volume-id>
         <system-id>LINUX</system-id>
       </iso>
     </media>
     <media arch="x86_64">
       <url>http://download.fedoraproject.org/pub/fedora/linux/releases/12/Fedora/x86_64/os/</url>
       <iso>
-        <volume-id>Fedora 12 x86_64</volume-id>
+        <volume-id>.*Fedora 12 x86_64.*</volume-id>
         <system-id>LINUX</system-id>
       </iso>
     </media>
@@ -113,14 +113,14 @@
     <media arch="i386">
       <url>http://download.fedoraproject.org/pub/fedora/linux/releases/13/Fedora/i386/os/</url>
       <iso>
-        <volume-id>Fedora 13 i386</volume-id>
+        <volume-id>.*Fedora 13 i386.*</volume-id>
         <system-id>LINUX</system-id>
       </iso>
     </media>
     <media arch="x86_64">
       <url>http://download.fedoraproject.org/pub/fedora/linux/releases/13/Fedora/x86_64/os/</url>
       <iso>
-        <volume-id>Fedora 13 x86_64</volume-id>
+        <volume-id>.*Fedora 13 x86_64.*</volume-id>
         <system-id>LINUX</system-id>
       </iso>
     </media>
@@ -137,14 +137,14 @@
     <media arch="i386">
       <url>http://download.fedoraproject.org/pub/fedora/linux/releases/14/Fedora/i386/os/</url>
       <iso>
-        <volume-id>Fedora 14 i386</volume-id>
+        <volume-id>.*Fedora 14 i386.*</volume-id>
         <system-id>LINUX</system-id>
       </iso>
     </media>
     <media arch="x86_64">
       <url>http://download.fedoraproject.org/pub/fedora/linux/releases/14/Fedora/x86_64/os/</url>
       <iso>
-        <volume-id>Fedora 14 x86_64</volume-id>
+        <volume-id>.*Fedora 14 x86_64.*</volume-id>
         <system-id>LINUX</system-id>
       </iso>
     </media>
@@ -161,14 +161,14 @@
     <media arch="i386">
       <url>http://download.fedoraproject.org/pub/fedora/linux/releases/15/Fedora/i386/os/</url>
       <iso>
-        <volume-id>Fedora 15 i386</volume-id>
+        <volume-id>.*Fedora 15 i386.*</volume-id>
         <system-id>LINUX</system-id>
       </iso>
     </media>
     <media arch="x86_64">
       <url>http://download.fedoraproject.org/pub/fedora/linux/releases/15/Fedora/x86_64/os/</url>
       <iso>
-        <volume-id>Fedora 15 x86_64</volume-id>
+        <volume-id>.*Fedora 15 x86_64.*</volume-id>
         <system-id>LINUX</system-id>
       </iso>
     </media>
diff --git a/data/oses/rhel.xml b/data/oses/rhel.xml
index 8a3f834..6ad634d 100644
--- a/data/oses/rhel.xml
+++ b/data/oses/rhel.xml
@@ -26,13 +26,13 @@
     <media arch="i386">
       <iso>
         <system-id>LINUX</system-id>
-        <volume-id>RHEL_4.8 i386</volume-id>
+        <volume-id>.*RHEL_4.8 i386.*</volume-id>
       </iso>
     </media>
     <media arch="x86_64">
       <iso>
         <system-id>LINUX</system-id>
-        <volume-id>RHEL_4.8 x86_64</volume-id>
+        <volume-id>.*RHEL_4.8 x86_64.*</volume-id>
       </iso>
     </media>
   </os>
@@ -48,13 +48,13 @@
     <media arch="i386">
       <iso>
         <system-id>LINUX</system-id>
-        <volume-id>RHEL_4.9 i386</volume-id>
+        <volume-id>.*RHEL_4.9 i386.*</volume-id>
       </iso>
     </media>
     <media arch="x86_64">
       <iso>
         <system-id>LINUX</system-id>
-        <volume-id>RHEL_4.9 x86_64</volume-id>
+        <volume-id>.*RHEL_4.9 x86_64.*</volume-id>
       </iso>
     </media>
   </os>
@@ -69,13 +69,13 @@
     <media arch="i386">
       <iso>
         <system-id>LINUX</system-id>
-        <volume-id>RHEL_5.4 i386</volume-id>
+        <volume-id>.*RHEL_5.4 i386.*</volume-id>
       </iso>
     </media>
     <media arch="x86_64">
       <iso>
         <system-id>LINUX</system-id>
-        <volume-id>RHEL_5.4 x86_64</volume-id>
+        <volume-id>.*RHEL_5.4 x86_64.*</volume-id>
       </iso>
     </media>
   </os>
@@ -95,13 +95,13 @@
     <media arch="i386">
       <iso>
         <system-id>LINUX</system-id>
-        <volume-id>RHEL_5.6 i386</volume-id>
+        <volume-id>.*RHEL_5.6 i386.*</volume-id>
       </iso>
     </media>
     <media arch="x86_64">
       <iso>
         <system-id>LINUX</system-id>
-        <volume-id>RHEL_5.6 x86_64</volume-id>
+        <volume-id>.*RHEL_5.6 x86_64.*</volume-id>
       </iso>
     </media>
   </os>
@@ -117,13 +117,13 @@
     <media arch="i386">
       <iso>
         <system-id>LINUX</system-id>
-        <volume-id>RHEL_5.7 i386</volume-id>
+        <volume-id>.*RHEL_5.7 i386.*</volume-id>
       </iso>
     </media>
     <media arch="x86_64">
       <iso>
         <system-id>LINUX</system-id>
-        <volume-id>RHEL_5.7 x86_64</volume-id>
+        <volume-id>.*RHEL_5.7 x86_64.*</volume-id>
       </iso>
     </media>
   </os>
@@ -144,13 +144,13 @@
     <media arch="i386">
       <iso>
         <system-id>LINUX</system-id>
-        <volume-id>RHEL_6.0 i386</volume-id>
+        <volume-id>.*RHEL_6.0 i386.*</volume-id>
       </iso>
     </media>
     <media arch="x86_64">
       <iso>
         <system-id>LINUX</system-id>
-        <volume-id>RHEL_6.0 x86_64</volume-id>
+        <volume-id>.*RHEL_6.0 x86_64.*</volume-id>
       </iso>
     </media>
   </os>
@@ -166,13 +166,13 @@
     <media arch="i386">
       <iso>
         <system-id>LINUX</system-id>
-        <volume-id>RHEL_6.1 i386</volume-id>
+        <volume-id>.*RHEL_6.1 i386.*</volume-id>
       </iso>
     </media>
     <media arch="x86_64">
       <iso>
         <system-id>LINUX</system-id>
-        <volume-id>RHEL_6.1 x86_64</volume-id>
+        <volume-id>.*RHEL_6.1 x86_64.*</volume-id>
       </iso>
     </media>
   </os>
diff --git a/data/oses/windows.xml b/data/oses/windows.xml
index 6d7e9ab..944ed20 100644
--- a/data/oses/windows.xml
+++ b/data/oses/windows.xml
@@ -71,7 +71,7 @@
 
     <media arch="i386">
       <iso>
-        <volume-id>CRMS</volume-id>
+        <volume-id>.*CRMS.*</volume-id>
         <publisher-id>MICROSOFT CORPORATION</publisher-id>
       </iso>
     </media>
@@ -116,7 +116,7 @@
 
     <media arch="x86_64">
       <iso>
-        <volume-id>GRMSX</volume-id>
+        <volume-id>.*GRMSX.*</volume-id>
         <publisher-id>MICROSOFT CORPORATION</publisher-id>
       </iso>
     </media>
@@ -191,13 +191,13 @@
 
     <media arch="i386">
       <iso>
-        <volume-id>GSP1RMCEN</volume-id>
+        <volume-id>.*GSP1RMC.*</volume-id>
         <publisher-id>MICROSOFT CORPORATION</publisher-id>
       </iso>
     </media>
     <media arch="x86_64">
       <iso>
-        <volume-id>GSP1RMCENX</volume-id>
+        <volume-id>.*GSP1RMC.*X.*</volume-id>
         <publisher-id>MICROSOFT CORPORATION</publisher-id>
       </iso>
     </media>
diff --git a/osinfo/osinfo_db.c b/osinfo/osinfo_db.c
index a766a3c..0cf8584 100644
--- a/osinfo/osinfo_db.c
+++ b/osinfo/osinfo_db.c
@@ -30,9 +30,8 @@ G_DEFINE_TYPE (OsinfoDb, osinfo_db, G_TYPE_OBJECT);
 
 #define OSINFO_DB_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), OSINFO_TYPE_DB, OsinfoDbPrivate))
 
-#define str_contains(str, substr) ((str) && \
-                                   (substr) && \
-                                   strstr((str), (substr)) != NULL)
+#define match_regex(pattern, str) ((pattern) && (str) && \
+                                   g_regex_match_simple((pattern), (str), 0, 0))
 
 /**
  * SECTION:osinfo_db
@@ -359,9 +358,9 @@ OsinfoOs *osinfo_db_guess_os_from_media(OsinfoDb *db, OsinfoMedia *media)
             const gchar *os_system = osinfo_media_get_system_id(os_media);
             const gchar *os_publisher = osinfo_media_get_publisher_id(os_media);
 
-            if (str_contains(media_volume, os_volume) &&
-                (str_contains(media_system, os_system) ||
-                 str_contains(media_publisher, os_publisher))) {
+            if (match_regex (os_volume, media_volume) &&
+                (match_regex (os_system, media_system) ||
+                 match_regex (os_publisher, media_publisher))) {
                 ret = os;
                 break;
             }
diff --git a/osinfo/osinfo_media.c b/osinfo/osinfo_media.c
index 96aef89..641c351 100644
--- a/osinfo/osinfo_media.c
+++ b/osinfo/osinfo_media.c
@@ -495,8 +495,9 @@ const gchar *osinfo_media_get_url(OsinfoMedia *media)
  * If @media is an ISO9660 image/device, this function retrieves the expected
  * volume ID.
  *
- * Note: In practice, this will usually not be an exact match to the volume ID
- * on the ISO image/device but rather a substring of it.
+ * Note: In practice, this will usually not be the exact copy of the volume ID
+ * string on the ISO image/device but rather a regular expression that matches
+ * it.
  *
  * Returns: (transfer none): the volume id, or NULL
  */
@@ -513,8 +514,9 @@ const gchar *osinfo_media_get_volume_id(OsinfoMedia *media)
  * If @media is an ISO9660 image/device, this function retrieves the expected
  * system ID.
  *
- * Note: In practice, this will usually not be an exact match to the system ID
- * on the ISO image/device but rather a substring of it.
+ * Note: In practice, this will usually not be the exact copy of the system ID
+ * string on the ISO image/device but rather a regular expression that matches
+ * it.
  *
  * Returns: (transfer none): the system id, or NULL
  */
@@ -531,8 +533,9 @@ const gchar *osinfo_media_get_system_id(OsinfoMedia *media)
  * If @media is an ISO9660 image/device, this function retrieves the expected
  * publisher ID.
  *
- * Note: In practice, this will usually not be an exact match to the system ID
- * on the ISO image/device but rather a substring of it.
+ * Note: In practice, this will usually not be the exact copy of the publisher
+ * ID string on the ISO image/device but rather a regular expression that
+ * matches it.
  *
  * Returns: (transfer none): the publisher id, or NULL
  */
-- 
1.7.6




More information about the virt-tools-list mailing list