summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorDaniel Reed <djr@redhat.com>2009-07-13 14:06:26 -0400
committerColin Walters <walters@verbum.org>2009-07-14 15:42:25 -0400
commitfceaa7a153b8d9779077bb340e9d31d90e6ea98a (patch)
treeb0ca661974a50689dfea600d9e02c15949d27b1c /tools
parentddc553326e722be5de15d754997847194a5825e9 (diff)
Bug 2432 - Support --address option for dbus-monitor
Signed-off-by: Colin Walters <walters@verbum.org> (cherry picked from commit e4b271e2425a36884b5e3e70e6a32d440b41d145)
Diffstat (limited to 'tools')
-rw-r--r--tools/dbus-monitor.15
-rw-r--r--tools/dbus-monitor.c54
2 files changed, 53 insertions, 6 deletions
diff --git a/tools/dbus-monitor.1 b/tools/dbus-monitor.1
index f793e7eb..c24c14d9 100644
--- a/tools/dbus-monitor.1
+++ b/tools/dbus-monitor.1
@@ -8,7 +8,7 @@ dbus-monitor \- debug probe to print message bus messages
.SH SYNOPSIS
.PP
.B dbus-monitor
-[\-\-system | \-\-session] [\-\-profile | \-\-monitor]
+[\-\-system | \-\-session | \-\-address ADDRESS] [\-\-profile | \-\-monitor]
[watch expressions]
.SH DESCRIPTION
@@ -51,6 +51,9 @@ Monitor the system message bus.
.I "--session"
Monitor the session message bus. (This is the default.)
.TP
+.I "--address ADDRESS"
+Monitor an arbitrary message bus given at ADDRESS.
+.TP
.I "--profile"
Use the profiling output format.
.TP
diff --git a/tools/dbus-monitor.c b/tools/dbus-monitor.c
index e7c7cf49..873108bc 100644
--- a/tools/dbus-monitor.c
+++ b/tools/dbus-monitor.c
@@ -191,7 +191,7 @@ profile_filter_func (DBusConnection *connection,
static void
usage (char *name, int ecode)
{
- fprintf (stderr, "Usage: %s [--system | --session] [--monitor | --profile ] [watch expressions]\n", name);
+ fprintf (stderr, "Usage: %s [--system | --session | --address ADDRESS] [--monitor | --profile ] [watch expressions]\n", name);
exit (ecode);
}
@@ -210,7 +210,8 @@ main (int argc, char *argv[])
DBusError error;
DBusBusType type = DBUS_BUS_SESSION;
DBusHandleMessageFunction filter_func = monitor_filter_func;
-
+ char *address = NULL;
+
int i = 0, j = 0, numFilters = 0;
char **filters = NULL;
for (i = 1; i < argc; i++)
@@ -221,6 +222,16 @@ main (int argc, char *argv[])
type = DBUS_BUS_SYSTEM;
else if (!strcmp (arg, "--session"))
type = DBUS_BUS_SESSION;
+ else if (!strcmp (arg, "--address"))
+ {
+ if (i+1 < argc)
+ {
+ address = argv[i+1];
+ i++;
+ }
+ else
+ usage (argv[0], 1);
+ }
else if (!strcmp (arg, "--help"))
usage (argv[0], 0);
else if (!strcmp (arg, "--monitor"))
@@ -241,11 +252,44 @@ main (int argc, char *argv[])
}
dbus_error_init (&error);
- connection = dbus_bus_get (type, &error);
+
+ if (address != NULL)
+ {
+ connection = dbus_connection_open (address, &error);
+ if (connection)
+ {
+ if (!dbus_bus_register (connection, &error))
+ {
+ fprintf (stderr, "Failed to register connection to bus at %s: %s\n",
+ address, error.message);
+ dbus_error_free (&error);
+ exit (1);
+ }
+ }
+ }
+ else
+ connection = dbus_bus_get (type, &error);
if (connection == NULL)
{
- fprintf (stderr, "Failed to open connection to %s message bus: %s\n",
- (type == DBUS_BUS_SYSTEM) ? "system" : "session",
+ const char *where;
+ if (address != NULL)
+ where = address;
+ else
+ {
+ switch (type)
+ {
+ case DBUS_BUS_SYSTEM:
+ where = "system bus";
+ break;
+ case DBUS_BUS_SESSION:
+ where = "session bus";
+ break;
+ default:
+ where = "";
+ }
+ }
+ fprintf (stderr, "Failed to open connection to %s: %s\n",
+ where,
error.message);
dbus_error_free (&error);
exit (1);