diff options
author | Havoc Pennington <hp@redhat.com> | 2003-05-16 20:09:25 +0000 |
---|---|---|
committer | Havoc Pennington <hp@redhat.com> | 2003-05-16 20:09:25 +0000 |
commit | 306eab3e3d998472ad111146a12b7697ea96c9b9 (patch) | |
tree | 613b5918113060fb66b7122307d8a6d2c2c2344f /tools/dbus-print-message.c | |
parent | ce53bbd7af4488b8374aeccc2e80fb2f7eff0683 (diff) | |
download | dbus-306eab3e3d998472ad111146a12b7697ea96c9b9.tar.gz |
2003-05-16 Havoc Pennington <hp@redhat.com>
* dbus/dbus-connection.c: disable verbose lock spew
* tools/dbus-send.c: add --print-reply command line option
* tools/dbus-print-message.h (print_message): new util function
shared by dbus-send and dbus-monitor
* tools/dbus-monitor.c (handler_func): exit on disconnect
* dbus/dbus-transport-unix.c (do_reading): if the transport is
disconnected, don't try to use the read_watch
* dbus/dbus-watch.c (dbus_watch_get_enabled): assert watch != NULL
so we can find this bug more easily
Diffstat (limited to 'tools/dbus-print-message.c')
-rw-r--r-- | tools/dbus-print-message.c | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/tools/dbus-print-message.c b/tools/dbus-print-message.c new file mode 100644 index 00000000..fcf22b74 --- /dev/null +++ b/tools/dbus-print-message.c @@ -0,0 +1,83 @@ +/* -*- mode: C; c-file-style: "gnu" -*- */ +/* dbus-print-message.h Utility function to print out a message + * + * Copyright (C) 2003 Philip Blundell <philb@gnu.org> + * Copyright (C) 2003 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +#include "dbus-print-message.h" + +void +print_message (DBusMessage *message) +{ + DBusMessageIter iter; + const char *sender; + + sender = dbus_message_get_sender (message); + + printf ("message name=%s; sender=%s\n", + dbus_message_get_name (message), + sender ? sender : "(no sender)"); + + dbus_message_iter_init (message, &iter); + + do + { + int type = dbus_message_iter_get_arg_type (&iter); + char *str; + dbus_uint32_t uint32; + dbus_int32_t int32; + double d; + unsigned char byte; + + if (type == DBUS_TYPE_INVALID) + break; + + switch (type) + { + case DBUS_TYPE_STRING: + str = dbus_message_iter_get_string (&iter); + printf ("string:%s\n", str); + break; + + case DBUS_TYPE_INT32: + int32 = dbus_message_iter_get_int32 (&iter); + printf ("int32:%d\n", int32); + break; + + case DBUS_TYPE_UINT32: + uint32 = dbus_message_iter_get_uint32 (&iter); + printf ("int32:%u\n", uint32); + break; + + case DBUS_TYPE_DOUBLE: + d = dbus_message_iter_get_double (&iter); + printf ("double:%f\n", d); + break; + + case DBUS_TYPE_BYTE: + byte = dbus_message_iter_get_byte (&iter); + printf ("byte:%d\n", byte); + break; + + default: + printf ("(unknown arg type %d)\n", type); + break; + } + } while (dbus_message_iter_next (&iter)); +} + |