diff options
Diffstat (limited to 'src/eggdbus/eggdbusbindingtool.c')
-rw-r--r-- | src/eggdbus/eggdbusbindingtool.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/eggdbus/eggdbusbindingtool.c b/src/eggdbus/eggdbusbindingtool.c index cca1edc..47a999b 100644 --- a/src/eggdbus/eggdbusbindingtool.c +++ b/src/eggdbus/eggdbusbindingtool.c @@ -41,6 +41,8 @@ static char **opt_extra_header_files = NULL; static char *dbus_name_space; static char *name_space; +static char *opt_stamp_file; + static GOptionEntry entries [] = { { "dbus-namespace", 'd', 0, G_OPTION_ARG_STRING, &dbus_name_space, "Namespace to strip from D-Bus interface names", NULL}, { "namespace", 'n', 0, G_OPTION_ARG_STRING, &name_space, "Namespace for generated code", NULL}, @@ -48,6 +50,7 @@ static GOptionEntry entries [] = { { "interfaces-only", 'i', 0, G_OPTION_ARG_NONE, &opt_iface_only, "Only generate interfaces and marshallers", NULL}, { "no-types-header", 't', 0, G_OPTION_ARG_NONE, &opt_no_types_header, "Don't generate types header file", NULL}, { "include-header", 'h', 0, G_OPTION_ARG_STRING_ARRAY, &opt_extra_header_files, "Extra header files to includes", NULL}, + { "stamp-file", 's', 0, G_OPTION_ARG_STRING, &opt_stamp_file, "Generate stamp file with generated files", NULL}, { NULL } }; @@ -55,6 +58,9 @@ static GOptionEntry entries [] = { /* per invocation data structures */ +/* List of the names of generated files */ +static GSList *generated_files; + /* hash from GType name used (e.g. TestTweak) to a const EggDBusInterfaceInfo pointer */ static GHashTable *all_dbus_interfaces; @@ -802,6 +808,7 @@ generate_main_files (GError **error) goto out; } g_printerr ("Wrote %s\n", h_file_name); + generated_files = g_slist_prepend (generated_files, g_strdup (h_file_name)); g_free (h_file_name); } @@ -866,6 +873,7 @@ generate_main_files (GError **error) goto out; } g_printerr ("Wrote %s\n", h_file_name); + generated_files = g_slist_prepend (generated_files, g_strdup (h_file_name)); g_free (h_file_name); /* generate the <namespace>-bindings.c file */ @@ -941,6 +949,7 @@ generate_main_files (GError **error) goto out; } g_printerr ("Wrote %s\n", c_file_name); + generated_files = g_slist_prepend (generated_files, g_strdup (c_file_name)); g_free (c_file_name); ret = TRUE; @@ -988,6 +997,7 @@ generate_marshallers (GError **error) goto out; } g_printerr ("Wrote %s\n", list_file_name); + generated_files = g_slist_prepend (generated_files, g_strdup (list_file_name)); for (n = 0; n < 2; n++) @@ -1061,6 +1071,7 @@ generate_marshallers (GError **error) goto out; } g_printerr ("Wrote %s\n", file_name); + generated_files = g_slist_prepend (generated_files, g_strdup (file_name)); g_free (file_name); g_free (standard_output); @@ -1153,6 +1164,7 @@ generate_enums (GSList *nodes, goto out; } g_printerr ("Wrote %s\n", h_file_name); + generated_files = g_slist_prepend (generated_files, g_strdup (h_file_name)); /* generate c file */ c_file_name = compute_file_name (name_space, enum_data->name, ".c"); @@ -1177,6 +1189,7 @@ generate_enums (GSList *nodes, goto out; } g_printerr ("Wrote %s\n", c_file_name); + generated_files = g_slist_prepend (generated_files, g_strdup (c_file_name)); g_free (h_file_name); g_free (c_file_name); @@ -1267,6 +1280,7 @@ generate_struct_interfaces (GSList *nodes, goto out; } g_printerr ("Wrote %s\n", h_file_name); + generated_files = g_slist_prepend (generated_files, g_strdup (h_file_name)); /* generate c file */ c_file_name = compute_file_name (name_space, struct_data->name, ".c"); @@ -1291,6 +1305,7 @@ generate_struct_interfaces (GSList *nodes, goto out; } g_printerr ("Wrote %s\n", c_file_name); + generated_files = g_slist_prepend (generated_files, g_strdup (c_file_name)); g_free (h_file_name); g_free (c_file_name); @@ -1401,6 +1416,7 @@ generate_dbus_interfaces (GSList *nodes, goto out; } g_printerr ("Wrote %s\n", h_file_name); + generated_files = g_slist_prepend (generated_files, g_strdup (h_file_name)); c_file_name = compute_file_name (name_space, iface_name, ".c"); file_print_func_begin (c_file_name); @@ -1423,6 +1439,7 @@ generate_dbus_interfaces (GSList *nodes, goto out; } g_printerr ("Wrote %s\n", c_file_name); + generated_files = g_slist_prepend (generated_files, g_strdup (c_file_name)); g_free (c_file_name); g_free (h_file_name); @@ -1504,6 +1521,23 @@ parse (char **xml_files, if (!generate_marshallers (error)) goto out; + /* finally generate a stamp file if requested */ + if (opt_stamp_file != NULL) + { + GSList *l; + + file_print_func_begin (opt_stamp_file); + for (l = generated_files; l != NULL; l = l->next) + { + const gchar *file_name = l->data; + g_print ("%s\n", file_name); + } + if (!file_print_func_end (TRUE, error)) + { + goto out; + } + } + /* and we're done... */ ret = TRUE; @@ -1524,6 +1558,9 @@ parse (char **xml_files, g_slist_foreach (nodes, (GFunc) egg_dbus_interface_node_info_free, NULL); g_slist_free (nodes); + g_slist_foreach (generated_files, (GFunc) g_free, NULL); + g_slist_free (generated_files); + return ret; } |