Mercurial > hg > index.cgi
diff lwasm/main.c @ 7:917b608b8c66
Switched lwasm to lw_cmdline from argp
author | lost@l-w.ca |
---|---|
date | Sat, 22 Jan 2011 09:40:52 -0700 |
parents | 7317fbe024af |
children | ceab04fd2969 |
line wrap: on
line diff
--- a/lwasm/main.c Sat Jan 22 09:31:43 2011 -0700 +++ b/lwasm/main.c Sat Jan 22 09:40:52 2011 -0700 @@ -19,7 +19,6 @@ this program. If not, see <http://www.gnu.org/licenses/>. */ -#include <argp.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -28,6 +27,7 @@ #include <lw_string.h> #include <lw_stringlist.h> #include <lw_expr.h> +#include <lw_cmdline.h> #include "lwasm.h" #include "input.h" @@ -35,32 +35,31 @@ extern int parse_pragma_string(asmstate_t *as, char *str, int ignoreerr); /* command line option handling */ -const char *argp_program_version = "lwasm from " PACKAGE_STRING; -const char *argp_program_bug_address = PACKAGE_BUGREPORT; +#define PROGVER "lwasm from " PACKAGE_STRING char *program_name; -static struct argp_option options[] = +static struct lw_cmdline_options options[] = { - { "output", 'o', "FILE", 0, "Output to FILE"}, - { "debug", 'd', "LEVEL", OPTION_ARG_OPTIONAL, "Set debug mode"}, - { "format", 'f', "TYPE", 0, "Select output format: decb, raw, obj, os9"}, - { "list", 'l', "FILE", OPTION_ARG_OPTIONAL, "Generate list [to FILE]"}, - { "symbols", 's', 0, OPTION_ARG_OPTIONAL, "Generate symbol list in listing, no effect without --list"}, - { "decb", 'b', 0, 0, "Generate DECB .bin format output, equivalent of --format=decb"}, - { "raw", 'r', 0, 0, "Generate raw binary format output, equivalent of --format=raw"}, - { "obj", 0x100, 0, 0, "Generate proprietary object file format for later linking, equivalent of --format=obj" }, - { "depend", 0x101, 0, 0, "Output a dependency list to stdout; do not do any actual output though assembly is completed as usual" }, - { "pragma", 'p', "PRAGMA", 0, "Set an assembler pragma to any value understood by the \"pragma\" pseudo op"}, - { "6809", '9', 0, 0, "Set assembler to 6809 only mode" }, - { "6309", '3', 0, 0, "Set assembler to 6309 mode (default)" }, - { "includedir", 'I', "PATH", 0, "Add entry to include path" }, + { "output", 'o', "FILE", 0, "Output to FILE"}, + { "debug", 'd', "LEVEL", lw_cmdline_opt_optional, "Set debug mode"}, + { "format", 'f', "TYPE", 0, "Select output format: decb, raw, obj, os9"}, + { "list", 'l', "FILE", lw_cmdline_opt_optional, "Generate list [to FILE]"}, + { "symbols", 's', 0, lw_cmdline_opt_optional, "Generate symbol list in listing, no effect without --list"}, + { "decb", 'b', 0, 0, "Generate DECB .bin format output, equivalent of --format=decb"}, + { "raw", 'r', 0, 0, "Generate raw binary format output, equivalent of --format=raw"}, + { "obj", 0x100, 0, 0, "Generate proprietary object file format for later linking, equivalent of --format=obj" }, + { "depend", 0x101, 0, 0, "Output a dependency list to stdout; do not do any actual output though assembly is completed as usual" }, + { "pragma", 'p', "PRAGMA", 0, "Set an assembler pragma to any value understood by the \"pragma\" pseudo op"}, + { "6809", '9', 0, 0, "Set assembler to 6809 only mode" }, + { "6309", '3', 0, 0, "Set assembler to 6309 mode (default)" }, + { "includedir", 'I', "PATH", 0, "Add entry to include path" }, { 0 } }; -static error_t parse_opts(int key, char *arg, struct argp_state *state) +static int parse_opts(int key, char *arg, void *state) { - asmstate_t *as = state -> input; + asmstate_t *as = state; switch (key) { @@ -146,25 +145,26 @@ as -> target = TARGET_6309; break; - case ARGP_KEY_END: + case lw_cmdline_key_end: break; - case ARGP_KEY_ARG: + case lw_cmdline_key_arg: lw_stringlist_addstring(as -> input_files, arg); break; default: - return ARGP_ERR_UNKNOWN; + return lw_cmdline_err_unknown; } return 0; } -static struct argp argp = +static struct lw_cmdline_parser cmdline_parser = { options, parse_opts, - "<input file>", - "LWASM, a HD6309 and MC6809 cross-assembler" + "INPUTFILE", + "lwasm, a HD6309 and MC6809 cross-assembler\vPlease report bugs to lost@l-w.ca.", + PROGVER }; /* @@ -219,7 +219,7 @@ asmstate.nextcontext = 1; /* parse command line arguments */ - argp_parse(&argp, argc, argv, 0, 0, &asmstate); + lw_cmdline_parse(&cmdline_parser, argc, argv, 0, 0, &asmstate); if (!asmstate.output_file) {