summaryrefslogtreecommitdiff
path: root/xdt-csource
diff options
context:
space:
mode:
authorRomain Bouvier <skunnyk@alteroot.org>2019-05-23 17:09:16 +0200
committerRomain Bouvier <skunnyk@alteroot.org>2019-05-23 17:09:16 +0200
commit5e8bc24a466da1100bd8ffb4f334032e44869751 (patch)
tree30ad9901aab46aee98a8df15a0c667d60020f710 /xdt-csource
parentcea2eb7c81a8895cb1afb2f2e4b71e32dd0f531e (diff)
downloadxfce4-dev-tools-5e8bc24a466da1100bd8ffb4f334032e44869751.tar.gz
Update xdt-csource with latest exo-csource modifications
- xdt-csource will replace exo-csource (projects using exo-csource needs to be updated) - The work started in issue #6449 but the full migration has never been done. - This way, we do not need to check for exo even when exo is not required.
Diffstat (limited to 'xdt-csource')
-rw-r--r--xdt-csource/main.c50
1 files changed, 41 insertions, 9 deletions
diff --git a/xdt-csource/main.c b/xdt-csource/main.c
index d0044c3..da6a988 100644
--- a/xdt-csource/main.c
+++ b/xdt-csource/main.c
@@ -41,13 +41,9 @@
#include <string.h>
#endif
-#ifndef GETTEXT_PACKAGE
-#define GETTEXT_PACKAGE PACKAGE
-#endif
-
#include <glib.h>
-#include <glib/gi18n-lib.h>
#include <glib/gprintf.h>
+#include <glib/gstdio.h>
@@ -69,6 +65,7 @@ static gboolean gen_stripcomments = FALSE;
static gboolean gen_stripcontent = FALSE;
static const gchar *gen_linkage = "static ";
static const gchar *gen_varname = "my_data";
+static const gchar *out_name = NULL;
@@ -138,6 +135,21 @@ parse_args (gint *argc_p,
gen_stripcontent = TRUE;
argv[n] = NULL;
}
+ else if (strcmp (argv[n], "--output") == 0
+ || strncmp (argv[n], "--output=", 9) == 0)
+ {
+ s = argv[n] + 8;
+ if (G_LIKELY (*s == '='))
+ {
+ out_name = g_strdup (s + 1);
+ }
+ else if (n + 1 < argc)
+ {
+ out_name = g_strdup (argv[n + 1]);
+ argv[n++] = NULL;
+ }
+ argv[n] = NULL;
+ }
}
for (m = 0, n = 1; n < argc; ++n)
@@ -287,6 +299,11 @@ print_csource (FILE *fp,
static void
print_usage (void)
{
+ g_print (" xdt-csource is a small utility that generates C code containing arbitrary data,\n");
+ g_print (" useful for compiling texts or other data directly into programs.\n");
+ g_print (" It either takes as input one file name to generate code for, or, using the --build-list option,\n");
+ g_print (" a list of (name, file) pairs to generate code for a list of images into named variables.\n");
+ g_print (" This is the successor of exo-csource.\n\n");
g_print ("Usage: %s [options] [file]\n", g_get_prgname ());
g_print (" %s [options] --build-list [[name file]...]\n", g_get_prgname ());
g_print ("\n");
@@ -298,6 +315,7 @@ print_usage (void)
g_print (" --build-list Parse (name, file) pairs\n");
g_print (" --strip-comments Remove comments from XML files\n");
g_print (" --strip-content Remove node contents from XML files\n");
+ g_print (" --output=filename Write generated csource to specified file\n");
g_print ("\n");
}
@@ -307,11 +325,11 @@ static void
print_version (void)
{
g_print ("%s %s\n\n", G_LOG_DOMAIN, PACKAGE_VERSION);
- g_print ("Copyright (c) 2005-2015\n");
- g_print ("\t%s\n\n", _("The Xfce development team. All rights reserved."));
+ g_print ("Copyright (c) 2005-2019\n");
+ g_print ("\tThe Xfce development team. All rights reserved.\n\n");
g_print ("%s comes with ABSOLUTELY NO WARRANTY,\n"
"You may redistribute copies of %s under the terms of\n"
- "the GNU Lesser General Public License which can be found in the\n"
+ "the GNU General Public License which can be found in the\n"
"%s source package.\n\n", g_get_prgname (), g_get_prgname (), PACKAGE_TARNAME);
g_print ("Please report bugs to <%s>.", PACKAGE_BUGREPORT);
g_print ("\n");
@@ -329,6 +347,7 @@ main (int argc, char **argv)
gchar *data;
gsize length;
gint n;
+ FILE *out_file;
setlocale (LC_ALL, NULL);
@@ -345,6 +364,16 @@ main (int argc, char **argv)
print_usage ();
return EXIT_FAILURE;
}
+ if (out_name == NULL)
+ out_file = stdout;
+ else
+ {
+ out_file = g_fopen (out_name, "w");
+ if (out_file == NULL) {
+ g_fprintf (stderr, "Failed to open output file \"%s\"\n", out_name);
+ return EXIT_FAILURE;
+ }
+ }
#ifdef G_OS_WIN32
filename = g_local_to_utf8 (argv[1], -1, NULL, NULL, NULL);
@@ -360,7 +389,10 @@ main (int argc, char **argv)
return EXIT_FAILURE;
}
- print_csource (stdout, data, length, filename);
+ print_csource (out_file, data, length, filename);
+
+ if (out_file != NULL && out_file != stdout)
+ fclose (out_file);
g_free (data);
}