telepathy-mission-control: mcd_keyfile_get_variant: add support for int16, uint16

Simon McVittie smcv at kemper.freedesktop.org
Thu Feb 6 05:06:51 PST 2014


Module: telepathy-mission-control
Branch: master
Commit: 77e52ce80eb8705a039b7070515b89efb48863a5
URL:    http://cgit.freedesktop.org/telepathy/telepathy-mission-control/commit/?id=77e52ce80eb8705a039b7070515b89efb48863a5

Author: Simon McVittie <simon.mcvittie at collabora.co.uk>
Date:   Wed Feb  5 14:55:13 2014 +0000

mcd_keyfile_get_variant: add support for int16, uint16

If we're opportunistically migrating parameters according to
CM-specified types, we need to cope with uint16 ('q') for port numbers.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=71093
Reviewed-by: Guillaume Desmottes <guillaume.desmottes at collabora.co.uk>

---

 src/mcd-storage.c |   45 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/src/mcd-storage.c b/src/mcd-storage.c
index 481c3dc..90f6247 100644
--- a/src/mcd-storage.c
+++ b/src/mcd-storage.c
@@ -914,6 +914,29 @@ mcd_keyfile_get_variant (GKeyFile *keyfile,
           }
         break;
 
+      case G_VARIANT_CLASS_INT16:
+          {
+            GError *e = NULL;
+            gint v_int = g_key_file_get_integer (keyfile, group,
+                key, &e);
+
+            if (e != NULL)
+              {
+                g_propagate_error (error, e);
+              }
+            else if (v_int < G_MININT16 || v_int > G_MAXINT16)
+              {
+                g_set_error (error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT,
+                    "integer %d out of range [%d,%d]",
+                    v_int, G_MININT16, G_MAXINT16);
+              }
+            else
+              {
+                ret = g_variant_new_int16 (v_int);
+              }
+          }
+        break;
+
       case G_VARIANT_CLASS_INT32:
           {
             GError *e = NULL;
@@ -948,6 +971,28 @@ mcd_keyfile_get_variant (GKeyFile *keyfile,
           }
         break;
 
+      case G_VARIANT_CLASS_UINT16:
+          {
+            GError *e = NULL;
+            gint v_int = g_key_file_get_integer (keyfile, group,
+                key, &e);
+
+            if (e != NULL)
+              {
+                g_propagate_error (error, e);
+              }
+            else if (v_int < 0 || (unsigned) v_int > G_MAXUINT16)
+              {
+                g_set_error (error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT,
+                    "integer %d out of range [0,%d]", v_int, G_MAXUINT16);
+              }
+            else
+              {
+                ret = g_variant_new_uint16 (v_int);
+              }
+          }
+        break;
+
       case G_VARIANT_CLASS_UINT32:
           {
             GError *e = NULL;



More information about the telepathy-commits mailing list