X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/halibut/blobdiff_plain/14b072e2bd4a4bc29bc68fa7e528e0705b063300..944c4044572da20ed1fb9bc01085221856b53c1f:/main.c diff --git a/main.c b/main.c index e291d06..dae6581 100644 --- a/main.c +++ b/main.c @@ -43,6 +43,7 @@ int main(int argc, char **argv) { int nogo; int errs; int reportcols; + int list_fonts; int input_charset; int debug; int backendbits, prebackbits; @@ -68,6 +69,7 @@ int main(int argc, char **argv) { nfiles = 0; nogo = errs = FALSE; reportcols = 0; + list_fonts = 0; input_charset = CS_ASCII; debug = 0; backendbits = 0; @@ -83,7 +85,7 @@ int main(int argc, char **argv) { */ while (--argc) { char *p = *++argv; - if (*p == '-') { + if (*p == '-' && p[1]) { /* * An option. */ @@ -148,6 +150,8 @@ int main(int argc, char **argv) { } else if (!strcmp(opt, "-list-charsets")) { listcharsets(); nogo = TRUE; + } else if (!strcmp(opt, "-list-fonts")) { + list_fonts = TRUE; } else if (!strcmp(opt, "-precise")) { reportcols = 1; } else { @@ -260,7 +264,10 @@ int main(int argc, char **argv) { /* * A non-option argument. */ - infiles[nfiles++] = p; + if (!strcmp(p, "-")) + infiles[nfiles++] = NULL; /* special case: read stdin */ + else + infiles[nfiles++] = p; } } @@ -272,7 +279,7 @@ int main(int argc, char **argv) { /* * Do the work. */ - if (nfiles == 0) { + if (nfiles == 0 && !list_fonts) { error(err_noinput); usage(); exit(EXIT_FAILURE); @@ -297,6 +304,10 @@ int main(int argc, char **argv) { idx = make_index(); sourceform = read_input(&in, idx); + if (list_fonts) { + listfonts(); + exit(EXIT_SUCCESS); + } if (!sourceform) exit(EXIT_FAILURE);