dbus-send.c revision 5fd1e389e1c1c12ad4a55c2af6abdc8e7a2f6d41
17c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington/* -*- mode: C; c-file-style: "gnu" -*- */ 27c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington/* dbus-send.c Utility program to send messages from the command line 37c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington * 47c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington * Copyright (C) 2003 Philip Blundell <philb@gnu.org> 57c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington * 67c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington * This program is free software; you can redistribute it and/or modify 77c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington * it under the terms of the GNU General Public License as published by 87c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington * the Free Software Foundation; either version 2 of the License, or 97c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington * (at your option) any later version. 107c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington * 117c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington * This program is distributed in the hope that it will be useful, 127c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington * but WITHOUT ANY WARRANTY; without even the implied warranty of 137c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 147c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington * GNU General Public License for more details. 157c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington * 167c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington * You should have received a copy of the GNU General Public License 177c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington * along with this program; if not, write to the Free Software 187c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 197c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington * 207c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington */ 217c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 227c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington#include <stdio.h> 237c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington#include <stdlib.h> 247c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington#include <string.h> 257c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 267c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington#include <dbus/dbus.h> 277c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 28306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington#include "dbus-print-message.h" 29306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington 307c434a849a161c4514f3759659ac7af9ecddc721Havoc Penningtonstatic void 31fc5e3a06cf4876fb10d0205a626e51109f29eb82Colin Waltersusage (char *name, int ecode) 327c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington{ 335fd1e389e1c1c12ad4a55c2af6abdc8e7a2f6d41Havoc Pennington fprintf (stderr, "Usage: %s [--help] [--system | --session] [--dest=SERVICE] [--type=TYPE] [--print-reply] <destination object path> <message name> [contents ...]\n", name); 34fc5e3a06cf4876fb10d0205a626e51109f29eb82Colin Walters exit (ecode); 357c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington} 367c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 377c434a849a161c4514f3759659ac7af9ecddc721Havoc Penningtonint 387c434a849a161c4514f3759659ac7af9ecddc721Havoc Penningtonmain (int argc, char *argv[]) 397c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington{ 407c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington DBusConnection *connection; 417c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington DBusError error; 427c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington DBusMessage *message; 43306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington int print_reply; 447c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington DBusMessageIter iter; 457c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington int i; 46fc5e3a06cf4876fb10d0205a626e51109f29eb82Colin Walters DBusBusType type = DBUS_BUS_SESSION; 4768a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington const char *dest = DBUS_SERVICE_ORG_FREEDESKTOP_BROADCAST; 485fd1e389e1c1c12ad4a55c2af6abdc8e7a2f6d41Havoc Pennington const char *name = NULL; 495fd1e389e1c1c12ad4a55c2af6abdc8e7a2f6d41Havoc Pennington const char *path = NULL; 50b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington int message_type = DBUS_MESSAGE_TYPE_SIGNAL; 51b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington const char *type_str = NULL; 52b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington 535fd1e389e1c1c12ad4a55c2af6abdc8e7a2f6d41Havoc Pennington if (argc < 3) 54fc5e3a06cf4876fb10d0205a626e51109f29eb82Colin Walters usage (argv[0], 1); 557c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 56306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington print_reply = FALSE; 57306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington 587c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington for (i = 1; i < argc && name == NULL; i++) 597c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington { 607c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington char *arg = argv[i]; 617c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 62fc5e3a06cf4876fb10d0205a626e51109f29eb82Colin Walters if (strcmp (arg, "--system") == 0) 63fc5e3a06cf4876fb10d0205a626e51109f29eb82Colin Walters type = DBUS_BUS_SYSTEM; 64e94493fc116955bbf72a8896c48f2c119efacf7fAnders Carlsson else if (strcmp (arg, "--session") == 0) 65e94493fc116955bbf72a8896c48f2c119efacf7fAnders Carlsson type = DBUS_BUS_SESSION; 66306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington else if (strcmp (arg, "--print-reply") == 0) 67306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington print_reply = TRUE; 687c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington else if (strstr (arg, "--dest=") == arg) 697c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington dest = strchr (arg, '=') + 1; 70b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington else if (strstr (arg, "--type=") == arg) 71b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington type_str = strchr (arg, '=') + 1; 72fc5e3a06cf4876fb10d0205a626e51109f29eb82Colin Walters else if (!strcmp(arg, "--help")) 73fc5e3a06cf4876fb10d0205a626e51109f29eb82Colin Walters usage (argv[0], 0); 747c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington else if (arg[0] == '-') 75fc5e3a06cf4876fb10d0205a626e51109f29eb82Colin Walters usage (argv[0], 1); 765fd1e389e1c1c12ad4a55c2af6abdc8e7a2f6d41Havoc Pennington else if (path == NULL) 775fd1e389e1c1c12ad4a55c2af6abdc8e7a2f6d41Havoc Pennington path = arg; 785fd1e389e1c1c12ad4a55c2af6abdc8e7a2f6d41Havoc Pennington else if (name == NULL) 795fd1e389e1c1c12ad4a55c2af6abdc8e7a2f6d41Havoc Pennington name = arg; 807c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington else 815fd1e389e1c1c12ad4a55c2af6abdc8e7a2f6d41Havoc Pennington usage (argv[0], 1); 827c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington } 837c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 847c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington if (name == NULL) 85fc5e3a06cf4876fb10d0205a626e51109f29eb82Colin Walters usage (argv[0], 1); 867c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 87b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington if (type_str != NULL) 88b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington { 89b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington if (strcmp (type_str, "method_call") == 0) 90b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington message_type = DBUS_MESSAGE_TYPE_METHOD_CALL; 91b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington else if (strcmp (type_str, "signal") == 0) 92b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington message_type = DBUS_MESSAGE_TYPE_SIGNAL; 93b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington else 94b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington { 95b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington fprintf (stderr, "Message type \"%s\" is not supported\n", 96b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington type_str); 97b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington exit (1); 98b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington } 99b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington } 100b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington 1017c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington dbus_error_init (&error); 1027c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington connection = dbus_bus_get (type, &error); 1037c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington if (connection == NULL) 1047c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington { 1057c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington fprintf (stderr, "Failed to open connection to %s message bus: %s\n", 1067c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington (type == DBUS_BUS_SYSTEM) ? "system" : "session", 1077c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington error.message); 1087c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington dbus_error_free (&error); 1097c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington exit (1); 1107c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington } 1117c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 112b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington if (message_type == DBUS_MESSAGE_TYPE_METHOD_CALL) 113b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington { 11468a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington char *last_dot; 11568a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington 11668a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington last_dot = strrchr (name, '.'); 11768a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington if (last_dot == NULL) 11868a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington { 11968a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington fprintf (stderr, "Must use org.mydomain.Interface.Method notation, no dot in \"%s\"\n", 12068a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington name); 12168a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington exit (1); 12268a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington } 12368a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington *last_dot = '\0'; 12468a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington 1255fd1e389e1c1c12ad4a55c2af6abdc8e7a2f6d41Havoc Pennington message = dbus_message_new_method_call (NULL, 1265fd1e389e1c1c12ad4a55c2af6abdc8e7a2f6d41Havoc Pennington path, 1275fd1e389e1c1c12ad4a55c2af6abdc8e7a2f6d41Havoc Pennington name, 1285fd1e389e1c1c12ad4a55c2af6abdc8e7a2f6d41Havoc Pennington last_dot + 1); 129b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington } 130b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington else if (message_type == DBUS_MESSAGE_TYPE_SIGNAL) 131b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington { 13268a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington char *last_dot; 13368a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington 13468a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington last_dot = strrchr (name, '.'); 13568a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington if (last_dot == NULL) 13668a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington { 13768a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington fprintf (stderr, "Must use org.mydomain.Interface.Signal notation, no dot in \"%s\"\n", 13868a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington name); 13968a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington exit (1); 14068a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington } 14168a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington *last_dot = '\0'; 14268a3c593b9e77b33614726363c7b6fd85d113021Havoc Pennington 1435fd1e389e1c1c12ad4a55c2af6abdc8e7a2f6d41Havoc Pennington message = dbus_message_new_signal (path, name, last_dot + 1); 144b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington } 145b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington else 146b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington { 147b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington fprintf (stderr, "Internal error, unknown message type\n"); 148b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington exit (1); 149b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington } 150b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington 1517c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington if (message == NULL) 1527c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington { 1537c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington fprintf (stderr, "Couldn't allocate D-BUS message\n"); 1547c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington exit (1); 1557c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington } 1567c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 157b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington if (dest && !dbus_message_set_destination (message, dest)) 158b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington { 159b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington fprintf (stderr, "Not enough memory\n"); 160b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington exit (1); 161b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington } 162b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington 1637c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington dbus_message_append_iter_init (message, &iter); 1647c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 1657c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington while (i < argc) 1667c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington { 1677c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington char *arg; 1687c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington char *c; 1697c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington int type; 1707c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington dbus_uint32_t uint32; 1717c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington dbus_int32_t int32; 1727c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington double d; 1737c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington unsigned char byte; 1747c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 1757c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington type = DBUS_TYPE_INVALID; 1767c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington arg = argv[i++]; 1777c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington c = strchr (arg, ':'); 1787c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 1797c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington if (c == NULL) 1807c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington { 1817c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington fprintf (stderr, "%s: Data item \"%s\" is badly formed\n", argv[0], arg); 1827c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington exit (1); 1837c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington } 1847c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 1857c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington *(c++) = 0; 1867c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 1877c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington if (arg[0] == 0 || !strcmp (arg, "string")) 1887c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington type = DBUS_TYPE_STRING; 1897c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington else if (!strcmp (arg, "int32")) 1907c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington type = DBUS_TYPE_INT32; 1917c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington else if (!strcmp (arg, "uint32")) 1927c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington type = DBUS_TYPE_UINT32; 1937c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington else if (!strcmp (arg, "double")) 1947c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington type = DBUS_TYPE_DOUBLE; 1957c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington else if (!strcmp (arg, "byte")) 1967c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington type = DBUS_TYPE_BYTE; 1977c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington else if (!strcmp (arg, "boolean")) 1987c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington type = DBUS_TYPE_BOOLEAN; 1997c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington else 2007c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington { 2017c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington fprintf (stderr, "%s: Unknown type \"%s\"\n", argv[0], arg); 2027c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington exit (1); 2037c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington } 2047c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 205b29ea9115ea3277354b7ccbe442026279220f4acHavoc Pennington /* FIXME - we are ignoring OOM returns on all these functions */ 2067c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington switch (type) 2077c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington { 2087c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington case DBUS_TYPE_BYTE: 2097c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington byte = strtoul (c, NULL, 0); 2107c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington dbus_message_iter_append_byte (&iter, byte); 2117c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington break; 2127c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 2137c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington case DBUS_TYPE_DOUBLE: 2147c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington d = strtod (c, NULL); 2157c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington dbus_message_iter_append_double (&iter, d); 2167c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington break; 2177c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 2187c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington case DBUS_TYPE_INT32: 2197c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington int32 = strtol (c, NULL, 0); 2207c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington dbus_message_iter_append_int32 (&iter, int32); 2217c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington break; 2227c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 2237c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington case DBUS_TYPE_UINT32: 2247c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington uint32 = strtoul (c, NULL, 0); 2257c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington dbus_message_iter_append_uint32 (&iter, uint32); 2267c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington break; 2277c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 2287c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington case DBUS_TYPE_STRING: 2297c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington dbus_message_iter_append_string (&iter, c); 2307c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington break; 2317c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 2327c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington default: 2337c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington fprintf (stderr, "%s: Unsupported data type\n", argv[0]); 2347c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington exit (1); 2357c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington } 2367c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington } 2377c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 238306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington if (print_reply) 239306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington { 240306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington DBusMessage *reply; 241306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington 242306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington dbus_error_init (&error); 243306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington reply = dbus_connection_send_with_reply_and_block (connection, 244306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington message, -1, 245306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington &error); 246306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington if (dbus_error_is_set (&error)) 247306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington { 248306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington fprintf (stderr, "Error: %s\n", 249306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington error.message); 250306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington exit (1); 251306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington } 252306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington 253306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington if (reply) 254306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington { 255306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington print_message (reply); 256306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington dbus_message_unref (reply); 257306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington } 258306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington } 259306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington else 260306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington { 261306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington dbus_connection_send (connection, message, NULL); 262306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington dbus_connection_flush (connection); 263306eab3e3d998472ad111146a12b7697ea96c9b9Havoc Pennington } 2647c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 2657c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington dbus_message_unref (message); 2667c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 2677c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington dbus_connection_disconnect (connection); 2687c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington 2697c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington exit (0); 2707c434a849a161c4514f3759659ac7af9ecddc721Havoc Pennington} 271