#include #include #include #include #include "readline.h" #include "cdecl.h" static const char *progname = "cdecl99"; static const char sopts[] = "VH"; static const struct option lopts[] = { { "version", 0, NULL, 'V' }, { "help", 0, NULL, 'H' }, { 0 } }; static void print_version(void) { puts(PACKAGE_STRING); puts("Copyright (C) 2011 Nick Bowler."); puts("License GPLv3+: GNU GPL version 3 or later ."); puts("This is free software: you are free to change and redistribute it."); puts("There is NO WARRANTY, to the extent permitted by law."); } static void print_usage(FILE *f) { fprintf(f, "Usage: %s [options]\n", progname); } static void print_help(void) { print_usage(stdout); puts("Detailed help coming soon."); } static int repl(void) { struct cdecl *decl; print_version(); for (char *line; (line = readline("> ")); free(line)) { decl = cdecl_parse_decl(line); cdecl_free(decl); } return 0; } int main(int argc, char **argv) { int opt; if (argc > 0) progname = argv[0]; while ((opt = getopt_long(argc, argv, sopts, lopts, NULL)) != -1) { switch (opt) { case 'V': print_version(); return EXIT_SUCCESS; case 'H': print_help(); return EXIT_SUCCESS; default: print_usage(stderr); return EXIT_FAILURE; } } if (repl() != 0) return EXIT_FAILURE; return EXIT_SUCCESS; }