diff options
Diffstat (limited to 'gn.c')
-rw-r--r-- | gn.c | 28 |
1 files changed, 20 insertions, 8 deletions
@@ -20,6 +20,7 @@ typedef enum outputformats { GOATNOTE, HTML, GROFF, + TEXT, } outputformats; outputformats outputformat; @@ -78,31 +79,41 @@ int readuntil(char *file, int off, char end, types t) { return off; } +void usage() { + fprintf(stderr, + "usage: gn [-l -c -o format -p -H header -F footer -h] < note.gn\n" + ); + exit(1); +} + int main(int argc, char **argv) { - for (int i = 0; i < argc && argc != 1; i++) { + for (int i = 1; i < argc && argc != 1; i++) { if (strcmp(argv[i], "-l") == 0) m |= LIST; - if (strcmp(argv[i], "-c") == 0) m |= CHECK; - if (strcmp(argv[i], "-o") == 0) { + else if (strcmp(argv[i], "-c") == 0) m |= CHECK; + else if (strcmp(argv[i], "-o") == 0) { i++; if (!(i < argc)) eprint("expecet additional argument after -o!") ; if (strcmp(argv[i], "goatnote") == 0) outputformat = GOATNOTE; else if (strcmp(argv[i], "html") == 0) outputformat = HTML; else if (strcmp(argv[i], "groff") == 0) outputformat = GROFF; + else if (strcmp(argv[i], "text") == 0) outputformat = TEXT; m |= OUTPUT; } - if (strcmp(argv[i], "-p") == 0) m |= PRETTY; - if (strcmp(argv[i], "-h") == 0) { + else if (strcmp(argv[i], "-p") == 0) m |= PRETTY; + else if (strcmp(argv[i], "-H") == 0) { i++; - if (!(i < argc)) eprint("expecet additional argument after -h!"); + if (!(i < argc)) eprint("expecet additional argument after -H!"); header = argv[i]; } - if (strcmp(argv[i], "-f") == 0) { + else if (strcmp(argv[i], "-F") == 0) { i++; - if (!(i < argc)) eprint("expecet additional argument after -f!"); + if (!(i < argc)) eprint("expecet additional argument after -F!"); footer = argv[i]; } + else if (strcmp(argv[i], "-h") == 0) usage(); + else usage(); } @@ -154,6 +165,7 @@ int main(int argc, char **argv) { case HTML: printashtml(tokens[i]); break; case GOATNOTE: printasgn(tokens[i]); break; case GROFF: printasgroff(tokens[i]); break; + case TEXT: printastext(tokens[i]); break; } } } |