mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-05-02 04:58:01 +02:00
dbus-send: replace --address with --peer and --bus.
--peer is a direct substitute for --address. With --bus dbus-send registers on bus given by ADDRESS, thus allowing messages to be sent to the bus. Bug: https://bugs.freedesktop.org/show_bug.cgi?id=48816 [adjusted to apply to current master -smcv] Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
This commit is contained in:
parent
39673b945c
commit
b994830c7f
1 changed files with 31 additions and 6 deletions
|
|
@ -51,7 +51,7 @@ static const char *appname;
|
|||
static void
|
||||
usage (int ecode)
|
||||
{
|
||||
fprintf (stderr, "Usage: %s [--help] [--system | --session | --address=ADDRESS] [--dest=NAME] [--type=TYPE] [--print-reply[=literal]] [--reply-timeout=MSEC] <destination object path> <message name> [contents ...]\n", appname);
|
||||
fprintf (stderr, "Usage: %s [--help] [--system | --session | --bus=ADDRESS | --peer=ADDRESS] [--dest=NAME] [--type=TYPE] [--print-reply[=literal]] [--reply-timeout=MSEC] <destination object path> <message name> [contents ...]\n", appname);
|
||||
exit (ecode);
|
||||
}
|
||||
|
||||
|
|
@ -241,6 +241,7 @@ main (int argc, char *argv[])
|
|||
int message_type = DBUS_MESSAGE_TYPE_SIGNAL;
|
||||
const char *type_str = NULL;
|
||||
const char *address = NULL;
|
||||
int is_bus = FALSE;
|
||||
int session_or_system = FALSE;
|
||||
|
||||
appname = argv[0];
|
||||
|
|
@ -266,14 +267,28 @@ main (int argc, char *argv[])
|
|||
type = DBUS_BUS_SESSION;
|
||||
session_or_system = TRUE;
|
||||
}
|
||||
else if (strstr (arg, "--address=") == arg)
|
||||
else if ((strstr (arg, "--bus=") == arg) || (strstr (arg, "--peer=") == arg) || (strstr (arg, "--address=") == arg))
|
||||
{
|
||||
if (*(strchr (arg, '=') + 1) == '\0')
|
||||
if (arg[2] == 'b') /* bus */
|
||||
{
|
||||
fprintf (stderr, "\"--address=\" requires an ADDRESS\n");
|
||||
is_bus = TRUE;
|
||||
}
|
||||
else if (arg[2] == 'p') /* peer */
|
||||
{
|
||||
is_bus = FALSE;
|
||||
}
|
||||
else /* address; keeping backwards compatibility */
|
||||
{
|
||||
is_bus = FALSE;
|
||||
}
|
||||
|
||||
address = strchr (arg, '=') + 1;
|
||||
|
||||
if (address[0] == '\0')
|
||||
{
|
||||
fprintf (stderr, "\"--peer=\" and \"--bus=\" require an ADDRESS\n");
|
||||
usage (1);
|
||||
}
|
||||
address = strchr (arg, '=') + 1;
|
||||
}
|
||||
else if (strncmp (arg, "--print-reply", 13) == 0)
|
||||
{
|
||||
|
|
@ -330,7 +345,7 @@ main (int argc, char *argv[])
|
|||
if (session_or_system &&
|
||||
(address != NULL))
|
||||
{
|
||||
fprintf (stderr, "\"--address\" may not be used with \"--system\" or \"--session\"\n");
|
||||
fprintf (stderr, "\"--peer\" and \"--bus\" may not be used with \"--system\" or \"--session\"\n");
|
||||
usage (1);
|
||||
}
|
||||
|
||||
|
|
@ -372,6 +387,16 @@ main (int argc, char *argv[])
|
|||
dbus_error_free (&error);
|
||||
exit (1);
|
||||
}
|
||||
else if ((address != NULL) && is_bus)
|
||||
{
|
||||
if (!dbus_bus_register (connection, &error))
|
||||
{
|
||||
fprintf (stderr, "Failed to register on connection to \"%s\" message bus: %s\n",
|
||||
address, error.message);
|
||||
dbus_error_free (&error);
|
||||
exit (1);
|
||||
}
|
||||
}
|
||||
|
||||
if (message_type == DBUS_MESSAGE_TYPE_METHOD_CALL)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue