Less code duplication is nice.
bin_PROGRAMS += lbxgui
endif
-lbxtool_SOURCES = src/lbxtool.c
+lbxtool_SOURCES = src/lbxtool.c src/tools.c
lbxtool_LDADD = liblbx.la libgnu.la
$(lbxtool_OBJECTS): $(gnulib_headers)
-lbximg_SOURCES = src/lbximg.c
+lbximg_SOURCES = src/lbximg.c src/tools.c
lbximg_LDADD = liblbx.la libgnu.la $(LIBPNG_LIBS)
$(lbximg_OBJECTS): $(gnulib_headers)
/*
* 2ooM: The Master of Orion II Reverse Engineering Project
* Simple command-line tool to convert an LBX image to a set of PNGs.
- * Copyright (C) 2006-2010 Nick Bowler
+ * Copyright © 2006-2011, 2013 Nick Bowler
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
puts("For now, see the man page for detailed help.");
}
-static const char *progname;
-#define errmsg(fmt, ...) (\
- fprintf(stderr, "%s: " fmt, progname, __VA_ARGS__)\
-)
-
enum {
MODE_NONE,
MODE_DECODE,
{ 0 }
};
- progname = "lbximg"; /* argv[0]; */
+ tool_init("lbximg", argc, argv);
while ((opt = getopt_long(argc, argv, sopts, lopts, NULL)) != -1) {
switch(opt) {
case 'i':
}
break;
case 'V':
- puts(VERSION_BOILERPLATE("lbximg"));
+ tool_version();
return EXIT_SUCCESS;
case 'U':
printusage();
/*
* 2ooM: The Master of Orion II Reverse Engineering Project
* Simple command-line tool to extract LBX archive files.
- * Copyright (C) 2006-2010 Nick Bowler
+ * Copyright © 2006-2011, 2013 Nick Bowler
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
puts("For now, see the man page for detailed help.");
}
-static const char *progname;
-#define errmsg(fmt, ...) (\
- fprintf(stderr, "%s: " fmt, progname, __VA_ARGS__)\
-)
-
enum {
MODE_NONE,
MODE_LIST,
{ 0 }
};
- progname = "lbxtool"; /* argv[0]; */
+ tool_init("lbxtool", argc, argv);
while ((opt = getopt_long(argc, argv, sopts, lopts, NULL)) != -1) {
switch(opt) {
case 'l':
verbose = 1;
break;
case 'V':
- puts(VERSION_BOILERPLATE("lbxtool"));
+ tool_version();
return EXIT_SUCCESS;
case 'U':
printusage();
rc = extract(lbx, verbose, &argv[optind]);
break;
default:
- fprintf(stderr, "%s: you must specify a mode.\n", progname);
+ errmsg("you must specify a mode.\n", 0);
}
lbx_close(lbx);
--- /dev/null
+/*
+ * 2ooM: The Master of Orion II Reverse Engineering Project
+ * Helper functions for liblbx command-line applications.
+ * Copyright © 2013 Nick Bowler
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+#include <stdio.h>
+#include <assert.h>
+
+#include "tools.h"
+
+static const char *progname, *argv0;
+
+void tool_init(const char *name, int argc, char **argv)
+{
+ progname = name;
+ argv0 = argv[0] ? argv[0] : progname;
+}
+
+void tool_version(void)
+{
+ assert(argv0 != NULL);
+ printf("%s (%s) %s\n", progname, PACKAGE_NAME, PACKAGE_VERSION);
+ printf("Copyright (C) 2013 Nick Bowler.\n");
+ puts("License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.");
+ puts("This is free software: you are free to change and redistribute it.");
+ puts("There is NO WARRANTY, to the extent permitted by law.");
+}
+
+const char *tool_invocation(void)
+{
+ assert(argv0 != NULL);
+ return argv0;
+}
+/*
+ * 2ooM: The Master of Orion II Reverse Engineering Project
+ * Helper functions for liblbx command-line applications.
+ * Copyright © 2013 Nick Bowler
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
#ifndef TOOLS_H_
#define TOOLS_H_
-#include <config.h>
+void tool_init(const char *name, int argc, char **argv);
+void tool_version(void);
+
+const char *tool_invocation(void);
-#define VERSION_BOILERPLATE(name)\
-name " (2ooM liblbx) " PACKAGE_VERSION "\n"\
-"Copyright (C) 2006-2010 Nick Bowler.\n"\
-"License GPLv3+: GNU GPL version 3 or later "\
-"<http:/""/gnu.org/licenses/gpl.html>\n"\
-"This is free software: you are free to change and redistribute it.\n"\
-"There is NO WARRANTY, to the extent permitted by law."
+#define errmsg(fmt, ...) (\
+ fprintf(stderr, "%s: " fmt, tool_invocation(), __VA_ARGS__)\
+)
#endif