diff options
author | Marco Pesenti Gritti <mpg@redhat.com> | 2008-04-20 00:57:50 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <mpg@redhat.com> | 2008-04-20 00:57:50 (GMT) |
commit | 41710698a04c20e566fcb2c152802c1e38cb6316 (patch) | |
tree | 2ac4007972081640419fceb63116664fb6642236 /config/modulesets/patches/libdbus_marshal.patch | |
parent | 9f2bbbbebfa7b6f2de89520c6f591549d1ae2667 (diff) |
Patches needs to be under modulesets so that jhbuild can find them.
Diffstat (limited to 'config/modulesets/patches/libdbus_marshal.patch')
-rw-r--r-- | config/modulesets/patches/libdbus_marshal.patch | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/config/modulesets/patches/libdbus_marshal.patch b/config/modulesets/patches/libdbus_marshal.patch new file mode 100644 index 0000000..8fc163e --- /dev/null +++ b/config/modulesets/patches/libdbus_marshal.patch @@ -0,0 +1,185 @@ +diff -ur dbus-1.0.2.orig/dbus/dbus-message.c dbus-1.0.2/dbus/dbus-message.c +--- dbus-1.0.2.orig/dbus/dbus-message.c 2006-12-11 19:21:18.000000000 +0000 ++++ dbus-1.0.2/dbus/dbus-message.c 2007-04-05 19:41:29.000000000 +0100 +@@ -3890,6 +3890,110 @@ + } + } + ++/** ++ * Turn a DBusMessage into the marshalled form as described in the D-Bus ++ * specification. ++ * ++ * Generally, this function is only useful for encapsulating D-Bus messages in ++ * a different protocol. ++ * ++ * @param msg the DBusMessage ++ * @param marshalled_data_p the location to save the marshalled form to ++ * @param len_p the location to save the length of the marshalled form to ++ * @returns #FALSE if there was not enough memory ++ */ ++dbus_bool_t ++dbus_message_marshal (DBusMessage *msg, ++ char **marshalled_data_p, ++ int *len_p) ++{ ++ DBusString tmp; ++ ++ _dbus_return_val_if_fail (msg != NULL, FALSE); ++ _dbus_return_val_if_fail (marshalled_data_p != NULL, FALSE); ++ _dbus_return_val_if_fail (len_p != NULL, FALSE); ++ ++ if (!_dbus_string_init (&tmp)) ++ return FALSE; ++ ++ if (!_dbus_string_copy (&(msg->header.data), 0, &tmp, 0)) ++ goto fail; ++ ++ *len_p = _dbus_string_get_length (&tmp); ++ ++ if (!_dbus_string_copy (&(msg->body), 0, &tmp, *len_p)) ++ goto fail; ++ ++ *len_p = _dbus_string_get_length (&tmp); ++ ++ if (!_dbus_string_steal_data (&tmp, marshalled_data_p)) ++ goto fail; ++ ++ _dbus_string_free (&tmp); ++ return TRUE; ++ ++ fail: ++ _dbus_string_free (&tmp); ++ return FALSE; ++} ++ ++/** ++ * Demarshal a D-Bus message from the format described in the D-Bus ++ * specification. ++ * ++ * Generally, this function is only useful for encapsulating D-Bus messages in ++ * a different protocol. ++ * ++ * @param str the marshalled DBusMessage ++ * @param len the length of str ++ * @param error the location to save errors to ++ * @returns #NULL if there was an error ++ */ ++DBusMessage * ++dbus_message_demarshal (const char *str, ++ int len, ++ DBusError *error) ++{ ++ DBusMessageLoader *loader; ++ DBusString *buffer; ++ DBusMessage *msg; ++ ++ _dbus_return_val_if_fail (str != NULL, NULL); ++ ++ loader = _dbus_message_loader_new (); ++ ++ if (loader == NULL) ++ return NULL; ++ ++ _dbus_message_loader_get_buffer (loader, &buffer); ++ _dbus_string_append_len (buffer, str, len); ++ _dbus_message_loader_return_buffer (loader, buffer, len); ++ ++ if (!_dbus_message_loader_queue_messages (loader)) ++ goto fail_oom; ++ ++ if (_dbus_message_loader_get_is_corrupted (loader)) ++ goto fail_corrupt; ++ ++ msg = _dbus_message_loader_pop_message (loader); ++ ++ if (!msg) ++ goto fail_oom; ++ ++ _dbus_message_loader_unref (loader); ++ return msg; ++ ++ fail_corrupt: ++ dbus_set_error (error, DBUS_ERROR_INVALID_ARGS, "Message is corrupted"); ++ _dbus_message_loader_unref (loader); ++ return NULL; ++ ++ fail_oom: ++ _DBUS_SET_OOM (error); ++ _dbus_message_loader_unref (loader); ++ return NULL; ++} ++ + /** @} */ + + /* tests in dbus-message-util.c */ +diff -ur dbus-1.0.2.orig/dbus/dbus-message.h dbus-1.0.2/dbus/dbus-message.h +--- dbus-1.0.2.orig/dbus/dbus-message.h 2006-12-11 19:21:14.000000000 +0000 ++++ dbus-1.0.2/dbus/dbus-message.h 2007-04-05 19:07:39.000000000 +0100 +@@ -210,8 +210,15 @@ + 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); ++int dbus_message_type_from_string (const char *type_str); ++const char* dbus_message_type_to_string (int type); ++ ++dbus_bool_t dbus_message_marshal (DBusMessage *msg, ++ char **marshalled_data_p, ++ int *len_p); ++DBusMessage* dbus_message_demarshal (const char *str, ++ int len, ++ DBusError *error); + + /** @} */ + +diff -ur dbus-1.0.2.orig/dbus/dbus-message-util.c dbus-1.0.2/dbus/dbus-message-util.c +--- dbus-1.0.2.orig/dbus/dbus-message-util.c 2006-12-11 19:21:06.000000000 +0000 ++++ dbus-1.0.2/dbus/dbus-message-util.c 2007-04-05 19:52:41.000000000 +0100 +@@ -1222,6 +1222,46 @@ + + verify_test_message (message); + ++ { ++ /* Marshal and demarshal the message. */ ++ ++ DBusMessage *message2; ++ DBusError error; ++ char *marshalled = NULL; ++ int len = 0; ++ ++ dbus_error_init (&error); ++ ++ if (!dbus_message_marshal (message, &marshalled, &len)) ++ _dbus_assert_not_reached ("failed to marshal message"); ++ ++ _dbus_assert (len != 0); ++ _dbus_assert (marshalled != NULL); ++ ++ message2 = dbus_message_demarshal (marshalled, len, &error); ++ ++ _dbus_assert (message2 != NULL); ++ _dbus_assert (!dbus_error_is_set (&error)); ++ verify_test_message (message2); ++ ++ dbus_message_unref (message2); ++ dbus_free (marshalled); ++ ++ /* Demarshal invalid message. */ ++ ++ message2 = dbus_message_demarshal ("invalid", 7, &error); ++ _dbus_assert (message2 == NULL); ++ _dbus_assert (dbus_error_is_set (&error)); ++ dbus_error_free (&error); ++ ++ /* Demarshal invalid (empty) message. */ ++ ++ message2 = dbus_message_demarshal ("", 0, &error); ++ _dbus_assert (message2 == NULL); ++ _dbus_assert (dbus_error_is_set (&error)); ++ dbus_error_free (&error); ++ } ++ + dbus_message_unref (message); + _dbus_message_loader_unref (loader); + |