summaryrefslogtreecommitdiff
path: root/src/dbus.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2009-03-31 18:33:09 -0700
committerMarcel Holtmann <marcel@holtmann.org>2009-03-31 18:33:09 -0700
commit17112569b2227e443126d34dfac86e40c648ecab (patch)
tree299301774032788ee63c35dc118023b1b85a059c /src/dbus.c
parent1f51bad6c5ad8510a9012299f87a7d3f31054c80 (diff)
downloadconnman-17112569b2227e443126d34dfac86e40c648ecab.tar.gz
connman-17112569b2227e443126d34dfac86e40c648ecab.tar.bz2
connman-17112569b2227e443126d34dfac86e40c648ecab.zip
Add helper function to encode D-Bus object paths
Diffstat (limited to 'src/dbus.c')
-rw-r--r--src/dbus.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/dbus.c b/src/dbus.c
index 062cc7ab..daa2239c 100644
--- a/src/dbus.c
+++ b/src/dbus.c
@@ -23,8 +23,36 @@
#include <config.h>
#endif
+#include <string.h>
+
#include "connman.h"
+char *connman_dbus_encode_string(const char *value)
+{
+ GString *str;
+ unsigned int i, size;
+
+ if (value == NULL)
+ return NULL;
+
+ size = strlen(value);
+
+ str = g_string_new(NULL);
+ if (str == NULL)
+ return NULL;
+
+ for (i = 0; i < size; i++) {
+ const char tmp = value[i];
+ if ((tmp < '0' || tmp > '9') && (tmp < 'A' || tmp > 'Z') &&
+ (tmp < 'a' || tmp > 'z'))
+ g_string_append_printf(str, "_%02x", tmp);
+ else
+ str = g_string_append_c(str, tmp);
+ }
+
+ return g_string_free(str, FALSE);
+}
+
void connman_dbus_property_append_variant(DBusMessageIter *iter,
const char *key, int type, void *val)
{