From: Wim Taymans Date: Thu, 10 Sep 2009 09:41:56 +0000 (+0200) Subject: pluginfeature: improve version check X-Git-Tag: RELEASE-0.10.25~17 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=06e27c520909d0aaf6e5049b375d85015286c889;p=platform%2Fupstream%2Fgstreamer.git pluginfeature: improve version check Also parse the nano of the version and assume that X.Y.Z-1.1 >= X.Y.Z With this change we can also check development versions against the version of the upcomming release. --- diff --git a/gst/gstpluginfeature.c b/gst/gstpluginfeature.c index a38122a..3065f53 100644 --- a/gst/gstpluginfeature.c +++ b/gst/gstpluginfeature.c @@ -290,12 +290,16 @@ gst_plugin_feature_check_version (GstPluginFeature * feature, if (plugin) { const gchar *ver_str; - guint major, minor, micro; + guint major, minor, micro, nano; + gint nscan; ver_str = gst_plugin_get_version (plugin); g_return_val_if_fail (ver_str != NULL, FALSE); - if (sscanf (ver_str, "%u.%u.%u", &major, &minor, µ) == 3) { + nscan = sscanf (ver_str, "%u.%u.%u.%u", &major, &minor, µ, &nano); + GST_DEBUG ("version string '%s' parsed to %d values", ver_str, nscan); + + if (nscan >= 3) { if (major > min_major) ret = TRUE; else if (major < min_major) @@ -306,6 +310,10 @@ gst_plugin_feature_check_version (GstPluginFeature * feature, ret = FALSE; else if (micro > min_micro) ret = TRUE; + /* micro is 1 smaller but we have a nano version, this is the upcomming + * release of the requested version and we're ok then */ + else if (nscan == 4 && nano > 0 && (micro + 1 == min_micro)) + ret = TRUE; else ret = (micro == min_micro);