From fba9c8ad290c71471cdb8b52d1c5f0e4eb1fb83e Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Sun, 30 Dec 2007 20:31:15 -0500 Subject: [PATCH] Initial implementation of the lbximg tool. --- acinclude.m4 | 229 ++++++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 14 +++ src/.gitignore | 1 + src/Makefile.am | 9 +- src/lbximg.c | 105 ++++++++++++++++++++++ 5 files changed, 357 insertions(+), 1 deletion(-) create mode 100644 acinclude.m4 create mode 100644 src/lbximg.c diff --git a/acinclude.m4 b/acinclude.m4 new file mode 100644 index 0000000..89db997 --- /dev/null +++ b/acinclude.m4 @@ -0,0 +1,229 @@ +dnl Borrowed from Transcode (http://www.transcoding.org/cgi-bin/transcode) + +dnl PKG_INIT(rptfile, errfile) +dnl +AC_DEFUN([PKG_INIT], +[ +pkg_err="no" +pkg_err_file="pkg_err_file" +pkg_rpt_file="pkg_rpt_file" + +if test x"$1" != x"" ; then + pkg_rpt_file="$1" +fi +echo -n > $pkg_rpt_file + +if test x"$2" != x"" ; then + pkg_err_file="$2" +fi +echo -n > $pkg_err_file +]) + + +dnl PKG_ERROR(name, object, req-enable, pkg, url, [error message]) +AC_DEFUN([PKG_ERROR], +[ +pkg_err="yes" +this_pkg_err="yes" + +prob="" +if test x"$3" = x"required" ; then + prob="requirement failed" +else + prob="option '--enable-$1' failed" +fi + +cat >> $pkg_err_file < +#include +#include +#include + +#include "image.h" +#include "lbx.h" + +static const char *progname; +#define errmsg(fmt, ...) (\ + fprintf(stderr, "%s: " fmt, progname, __VA_ARGS__)\ +) + +enum { + MODE_NONE, + MODE_DECODE, + MODE_IDENT, +}; + +int main(int argc, char **argv) +{ + int mode = MODE_NONE, verbose = 0; + FILE *inf = stdin, *palf = NULL; + const char *name = "stdin"; + LBX_IMG *img; + int opt; + + static const char *sopts = "idvf:p:"; + static const struct option lopts[] = { + { "info", 0, NULL, 'i' }, + { "decode", 0, NULL, 'd' }, + { "verbose", 0, NULL, 'v' }, + { "file", 1, NULL, 'f' }, + { "palette", 1, NULL, 'p' }, + + { 0 } + }; + + progname = "lbximg"; /* argv[0]; */ + while ((opt = getopt_long(argc, argv, sopts, lopts, NULL)) != -1) { + switch(opt) { + case 'i': + mode = MODE_IDENT; + break; + case 'd': + mode = MODE_DECODE; + break; + case 'v': + verbose = 1; + break; + case 'f': + if (strcmp(optarg, "-") == 0) + break; + + name = strrchr(optarg, '/'); + name = name ? name+1 : optarg; + + inf = fopen(optarg, "rb"); + if (!inf) { + errmsg("failed to open %s: %m\n", optarg); + return EXIT_FAILURE; + } + break; + case 'p': + palf = fopen(optarg, "rb"); + if (!palf) { + errmsg("failed to open %s: %m\n", optarg); + return EXIT_FAILURE; + } + + break; + default: + return EXIT_FAILURE; + } + } + + if (mode == MODE_NONE) { + errmsg("you must specify a mode.\n", 0); + return EXIT_FAILURE; + } + + img = lbximg_fopen(inf); + if (!img) { + errmsg("failed to open image: %s.\n", lbx_strerror()); + return EXIT_FAILURE; + } + + if (verbose || mode == MODE_IDENT) { + struct lbx_imginfo info; + lbximg_getinfo(img, &info); + + printf("%s is %ux%u LBX image, %u frames\n", + name, info.width, info.height, info.nframes); + } + + switch (mode) { + case MODE_DECODE: + errmsg("decode function not yet implemented.\n", 0); + break; + } + + lbximg_close(img); + return EXIT_SUCCESS; +} -- 2.43.2