summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2011-09-03 12:34:29 -0400
committerColin Walters <walters@verbum.org>2011-09-03 12:34:29 -0400
commit246efe09f5787bcf5dfd82bd19727526196b4766 (patch)
tree9dfb2b00d6dcf8d043b288684e2d364a728944b8
parent06daed3859191847a28659bca0affddc92d8841c (diff)
downloadgobject-introspection-246efe09f5787bcf5dfd82bd19727526196b4766.tar.gz
gi-dump-types: New uninstalled debugging program
Usage: ./_build/gi-dump-types g_object_get_type
-rw-r--r--Makefile-girepository.am6
-rw-r--r--girepository/gdump.c2
-rw-r--r--girepository/gi-dump-types.c34
3 files changed, 42 insertions, 0 deletions
diff --git a/Makefile-girepository.am b/Makefile-girepository.am
index 736efc5a..3279cf7d 100644
--- a/Makefile-girepository.am
+++ b/Makefile-girepository.am
@@ -77,6 +77,12 @@ libgirepository_1_0_la_LDFLAGS = -no-undefined -version-number 1:0:0 -export-sym
gdumpdir = $(datadir)/gobject-introspection-1.0/
gdump_DATA = girepository/gdump.c
+noinst_PROGRAMS += gi-dump-types
+
+gi_dump_types_SOURCES = girepository/gdump.c girepository/gi-dump-types.c
+gi_dump_types_CFLAGS = $(GIO_UNIX_CFLAGS)
+gi_dump_types_LDADD = $(GIO_UNIX_LIBS)
+
GTESTER_PROGS += gthash-test
gthash_test_SOURCES = girepository/gthash.c girepository/gthash-test.c
diff --git a/girepository/gdump.c b/girepository/gdump.c
index aab067b6..c237a81e 100644
--- a/girepository/gdump.c
+++ b/girepository/gdump.c
@@ -431,6 +431,8 @@ dump_error_quark (GQuark quark, const char *symbol, GOutputStream *out)
*/
#ifndef G_IREPOSITORY_COMPILATION
static gboolean
+dump_irepository (const char *arg, GError **error) G_GNUC_UNUSED;
+static gboolean
dump_irepository (const char *arg, GError **error)
#else
gboolean
diff --git a/girepository/gi-dump-types.c b/girepository/gi-dump-types.c
new file mode 100644
index 00000000..eacf8a01
--- /dev/null
+++ b/girepository/gi-dump-types.c
@@ -0,0 +1,34 @@
+#include "gdump.c"
+#include <gio/gunixoutputstream.h>
+
+int
+main (int argc,
+ char **argv)
+{
+ int i;
+ GOutputStream *stdout;
+ GModule *self;
+
+ g_type_init ();
+
+ stdout = g_unix_output_stream_new (1, FALSE);
+
+ self = g_module_open (NULL, 0);
+
+ for (i = 1; i < argc; i++)
+ {
+ GError *error = NULL;
+ GType type;
+
+ type = invoke_get_type (self, argv[i], &error);
+ if (!type)
+ {
+ g_printerr ("%s\n", error->message);
+ g_clear_error (&error);
+ }
+ else
+ dump_type (type, argv[i], stdout);
+ }
+
+ return 0;
+}