qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] Change 'query-version' to output broken down version string
@ 2010-06-02 12:40 Daniel P. Berrange
  2010-06-04 18:34 ` Luiz Capitulino
  0 siblings, 1 reply; 3+ messages in thread
From: Daniel P. Berrange @ 2010-06-02 12:40 UTC (permalink / raw)
  To: qemu-devel

A previous discussion brought up the fact that clients should
not have to parse version string from QMP, it should be given
to them pre-split.

Change query-version output format from:

  { "qemu": "0.11.50", "package": "" }

to:

  { "major": 0, "minor": 11, "micro": 5, "package": "" }

major, minor & micro are all integer values. package is an
arbitrary string whose format is defined by the OS package
maintainer.

There is no need to preserve the existing 'qemu' field,
since QMP is not yet declared stable.
---
 monitor.c |   33 ++++++++++++++++++++++++++-------
 1 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/monitor.c b/monitor.c
index 3ee365c..a33f7a8 100644
--- a/monitor.c
+++ b/monitor.c
@@ -673,8 +673,11 @@ static void do_info_version_print(Monitor *mon, const QObject *data)
 
     qdict = qobject_to_qdict(data);
 
-    monitor_printf(mon, "%s%s\n", qdict_get_str(qdict, "qemu"),
-                                  qdict_get_str(qdict, "package"));
+    monitor_printf(mon, "%" PRId64 ".%" PRId64 ".%" PRId64 "%s\n",
+		   qdict_get_int(qdict, "major"),
+		   qdict_get_int(qdict, "minor"),
+		   qdict_get_int(qdict, "micro"),
+		   qdict_get_str(qdict, "package"));
 }
 
 /**
@@ -682,17 +685,33 @@ static void do_info_version_print(Monitor *mon, const QObject *data)
  *
  * Return a QDict with the following information:
  *
- * - "qemu": QEMU's version
- * - "package": package's version
+ * - "major": QEMU's major version
+ * - "minor": QEMU's minor version
+ * - "micro": QEMU's micro version
+ * - "package": QEMU packager's version
+ *
+ * The first three values are guarenteed to be
+ * integers. The final 'package' value is a string
+ * in an arbitrary packager specific format
  *
  * Example:
  *
- * { "qemu": "0.11.50", "package": "" }
+ * { "major": 0, "minor": 11, "micro": 5, "package": "" }
  */
 static void do_info_version(QObject **ret_data)
 {
-    *ret_data = qobject_from_jsonf("{ 'qemu': %s, 'package': %s }",
-                                   QEMU_VERSION, QEMU_PKGVERSION);
+    const char *version = QEMU_VERSION;
+    int major = 0, minor = 0, micro = 0;
+    char *tmp;
+
+    major = strtol(version, &tmp, 10);
+    tmp++;
+    minor = strtol(tmp, &tmp, 10);
+    tmp++;
+    micro = strtol(tmp, &tmp, 10);
+
+    *ret_data = qobject_from_jsonf("{ 'major': %d, 'minor': %d, 'micro': %d, 'package': %s }",
+                                   major, minor, micro, QEMU_PKGVERSION);
 }
 
 static void do_info_name_print(Monitor *mon, const QObject *data)
-- 
1.6.6.1

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2010-06-07  9:23 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-06-02 12:40 [Qemu-devel] [PATCH] Change 'query-version' to output broken down version string Daniel P. Berrange
2010-06-04 18:34 ` Luiz Capitulino
2010-06-07  9:23   ` Daniel P. Berrange

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).