summaryrefslogtreecommitdiffstats
path: root/dbus
diff options
context:
space:
mode:
Diffstat (limited to 'dbus')
-rw-r--r--dbus/dbus-message.c31
-rw-r--r--dbus/dbus-message.h1
-rw-r--r--dbus/dbus-string.c24
-rw-r--r--dbus/dbus-string.h3
4 files changed, 59 insertions, 0 deletions
diff --git a/dbus/dbus-message.c b/dbus/dbus-message.c
index b191337e..df0ade26 100644
--- a/dbus/dbus-message.c
+++ b/dbus/dbus-message.c
@@ -5778,6 +5778,37 @@ dbus_message_type_from_string (const char *type_str)
return DBUS_MESSAGE_TYPE_INVALID;
}
+/**
+ * Utility function to convert a D-BUS message type into a
+ * machine-readable string (not translated).
+ *
+ * @code
+ * DBUS_MESSAGE_TYPE_METHOD_CALL -> "method_call"
+ * DBUS_MESSAGE_TYPE_METHOD_RETURN -> "method_return"
+ * DBUS_MESSAGE_TYPE_SIGNAL -> "signal"
+ * DBUS_MESSAGE_TYPE_ERROR -> "error"
+ * DBUS_MESSAGE_TYPE_INVALID -> "invalid"
+ * @endcode
+ *
+ */
+const char *
+dbus_message_type_to_string (int type)
+{
+ switch (type)
+ {
+ case DBUS_MESSAGE_TYPE_METHOD_CALL:
+ return "method_call";
+ case DBUS_MESSAGE_TYPE_METHOD_RETURN:
+ return "method_return";
+ case DBUS_MESSAGE_TYPE_SIGNAL:
+ return "signal";
+ case DBUS_MESSAGE_TYPE_ERROR:
+ return "error";
+ default:
+ return "invalid";
+ }
+}
+
/** @} */
#ifdef DBUS_BUILD_TESTS
#include "dbus-test.h"
diff --git a/dbus/dbus-message.h b/dbus/dbus-message.h
index 50ec22c1..e1894c72 100644
--- a/dbus/dbus-message.h
+++ b/dbus/dbus-message.h
@@ -295,6 +295,7 @@ void* dbus_message_get_data (DBusMessage *message,
dbus_int32_t slot);
int dbus_message_type_from_string (const char *type_str);
+const char * dbus_message_type_to_string (int type);
DBUS_END_DECLS
diff --git a/dbus/dbus-string.c b/dbus/dbus-string.c
index 2061e8be..7381dab2 100644
--- a/dbus/dbus-string.c
+++ b/dbus/dbus-string.c
@@ -757,6 +757,30 @@ _dbus_string_copy_data_len (const DBusString *str,
}
/**
+ * Copies the contents of a DBusString into a different
+ * buffer. The resulting buffer will be nul-terminated.
+ *
+ * @param str a string
+ * @param buffer a C buffer to copy data to
+ * @param len maximum length of C buffer
+ */
+void
+_dbus_string_copy_to_buffer (const DBusString *str,
+ char *buffer,
+ int avail_len)
+{
+ int copy_len;
+ DBUS_CONST_STRING_PREAMBLE (str);
+
+ _dbus_assert (avail_len >= 0);
+
+ copy_len = MIN (avail_len, real->len+1);
+ memcpy (buffer, real->str, copy_len);
+ if (avail_len > 0 && avail_len == copy_len)
+ buffer[avail_len-1] = '\0';
+}
+
+/**
* Gets the length of a string (not including nul termination).
*
* @returns the length.
diff --git a/dbus/dbus-string.h b/dbus/dbus-string.h
index 2dda2b0f..1a0236d4 100644
--- a/dbus/dbus-string.h
+++ b/dbus/dbus-string.h
@@ -88,6 +88,9 @@ dbus_bool_t _dbus_string_copy_data_len (const DBusString *str,
char **data_return,
int start,
int len);
+void _dbus_string_copy_to_buffer (const DBusString *str,
+ char *buffer,
+ int len);
int _dbus_string_get_length (const DBusString *str);
dbus_bool_t _dbus_string_lengthen (DBusString *str,
int additional_length);