[gnome-video-arcade] Add gva_mame_get_version_int().
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-video-arcade] Add gva_mame_get_version_int().
- Date: Wed, 6 May 2015 00:55:39 +0000 (UTC)
commit c171f24129eabcc982a877bcb4e1171b8a309a3b
Author: Matthew Barnes <mbarnes redhat com>
Date: Sun May 3 22:53:44 2015 -0400
Add gva_mame_get_version_int().
Need an easy way to compare the MAME version for workarounds.
docs/reference/gnome-video-arcade-sections.txt | 1 +
docs/reference/tmpl/gva-mame.sgml | 9 +++++
src/gva-mame-common.c | 47 ++++++++++++++++++++++++
src/gva-mame.h | 1 +
4 files changed, 58 insertions(+), 0 deletions(-)
---
diff --git a/docs/reference/gnome-video-arcade-sections.txt b/docs/reference/gnome-video-arcade-sections.txt
index 99acb84..dd3ee97 100644
--- a/docs/reference/gnome-video-arcade-sections.txt
+++ b/docs/reference/gnome-video-arcade-sections.txt
@@ -196,6 +196,7 @@ gva_main_window_destroy_cb
GvaMameCallback
gva_mame_get_path_sep
gva_mame_get_version
+gva_mame_get_version_int
gva_mame_get_total_supported
gva_mame_get_config_value
gva_mame_has_config_value
diff --git a/docs/reference/tmpl/gva-mame.sgml b/docs/reference/tmpl/gva-mame.sgml
index 4d7783b..98d71b3 100644
--- a/docs/reference/tmpl/gva-mame.sgml
+++ b/docs/reference/tmpl/gva-mame.sgml
@@ -48,6 +48,15 @@
@Returns:
+<!-- ##### FUNCTION gva_mame_get_version_int ##### -->
+<para>
+
+</para>
+
+ void:
+ Returns:
+
+
<!-- ##### FUNCTION gva_mame_get_total_supported ##### -->
<para>
diff --git a/src/gva-mame-common.c b/src/gva-mame-common.c
index d1ad0c9..260724d 100644
--- a/src/gva-mame-common.c
+++ b/src/gva-mame-common.c
@@ -142,6 +142,53 @@ fail:
*****************************************************************************/
/**
+ * gva_mame_get_version_int:
+ *
+ * Returns the MAME version as a whole number for easy comparison.
+ * For example, MAME version 0.123 is returned as 123.
+ *
+ * Returns: the MAME version as an integer
+ **/
+guint
+gva_mame_get_version_int (void)
+{
+ static gsize regex_initialized;
+ static GRegex *regex;
+ GMatchInfo *match = NULL;
+ gchar *string;
+ guint version_int = 0;
+ GError *error = NULL;
+
+ if (g_once_init_enter (®ex_initialized))
+ {
+ /* MAME versions have been 0.xxx for nearly 20 years,
+ * so I think it's safe to disregard the leading zero. */
+ regex = g_regex_new ("0\\.(\\d\\d\\d)", 0, 0, NULL);
+ g_assert (regex != NULL);
+ g_once_init_leave (®ex_initialized, 1);
+ }
+
+ string = gva_mame_get_version (&error);
+ gva_error_handle (&error);
+
+ if (string != NULL)
+ {
+ if (g_regex_match (regex, string, 0, &match))
+ {
+ gchar *substring;
+
+ substring = g_match_info_fetch (match, 1);
+ version_int = (guint) strtoul (substring, NULL, 10);
+ g_free (substring);
+ }
+
+ g_free (string);
+ }
+
+ return version_int;
+}
+
+/**
* gva_mame_get_config_value:
* @config_key: a configuration key
* @error: return location for a #GError, or %NULL
diff --git a/src/gva-mame.h b/src/gva-mame.h
index d56b726..adeb051 100644
--- a/src/gva-mame.h
+++ b/src/gva-mame.h
@@ -49,6 +49,7 @@ typedef void (*GvaMameCallback) (const gchar *name,
const gchar * gva_mame_get_path_sep (void);
gchar * gva_mame_get_version (GError **error);
+guint gva_mame_get_version_int (void);
guint gva_mame_get_total_supported (GError **error);
gchar * gva_mame_get_config_value (const gchar *config_key,
GError **error);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]