[glib] Add --xml to gdbus-tool to print raw introspected XML



commit 8c4e1fa0afd97ae211260e4990585629d3c010a1
Author: Christian Persch <chpe gnome org>
Date:   Sun Jun 13 15:16:33 2010 +0200

    Add --xml to gdbus-tool to print raw introspected XML
    
    Bug #621442.

 docs/reference/gio/gdbus.xml |    1 +
 gio/gdbus-tool.c             |   23 ++++++++++++++++-------
 2 files changed, 17 insertions(+), 7 deletions(-)
---
diff --git a/docs/reference/gio/gdbus.xml b/docs/reference/gio/gdbus.xml
index e2f3354..280b478 100644
--- a/docs/reference/gio/gdbus.xml
+++ b/docs/reference/gio/gdbus.xml
@@ -22,6 +22,7 @@
     </group>
     <arg choice="plain">--dest <replaceable>bus_name</replaceable></arg>
     <arg choice="plain">--object-path <replaceable>/path/to/object</replaceable></arg>
+    <arg choice="plain">--xml</arg>
   </cmdsynopsis>
   <cmdsynopsis>
     <command>gdbus</command>
diff --git a/gio/gdbus-tool.c b/gio/gdbus-tool.c
index 11ffb6c..9cd504a 100644
--- a/gio/gdbus-tool.c
+++ b/gio/gdbus-tool.c
@@ -1155,11 +1155,13 @@ dump_node (GDBusConnection      *c,
 
 static gchar *opt_introspect_dest = NULL;
 static gchar *opt_introspect_object_path = NULL;
+static gboolean opt_introspect_xml = FALSE;
 
 static const GOptionEntry introspect_entries[] =
 {
   { "dest", 'd', 0, G_OPTION_ARG_STRING, &opt_introspect_dest, N_("Destination name to introspect"), NULL},
   { "object-path", 'o', 0, G_OPTION_ARG_STRING, &opt_introspect_object_path, N_("Object path to introspect"), NULL},
+  { "xml", 'x', 0, G_OPTION_ARG_NONE, &opt_introspect_xml, N_("Print XML"), NULL},
   { NULL }
 };
 
@@ -1325,16 +1327,23 @@ handle_introspect (gint        *argc,
     }
   g_variant_get (result, "(&s)", &xml_data);
 
-  error = NULL;
-  node = g_dbus_node_info_new_for_xml (xml_data, &error);
-  if (node == NULL)
+  if (opt_introspect_xml)
     {
-      g_printerr (_("Error parsing introspection XML: %s\n"), error->message);
-      g_error_free (error);
-      goto out;
+      g_print ("%s", xml_data);
     }
+  else
+    {
+      error = NULL;
+      node = g_dbus_node_info_new_for_xml (xml_data, &error);
+      if (node == NULL)
+        {
+          g_printerr (_("Error parsing introspection XML: %s\n"), error->message);
+          g_error_free (error);
+          goto out;
+        }
 
-  dump_node (c, opt_introspect_dest, node, 0, opt_introspect_object_path);
+      dump_node (c, opt_introspect_dest, node, 0, opt_introspect_object_path);
+    }
 
   ret = TRUE;
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]