Fix cmdline argument check

There was a segfault when sent was called without arguments. Now we use stdin
when there's no argument or - is used. Thanks to izabera for the report.
This commit is contained in:
Markus Teich 2016-03-06 20:49:18 +01:00
parent 616aafdcb9
commit b954ed4b9f
2 changed files with 12 additions and 11 deletions

View File

@ -25,12 +25,12 @@ You can navigate with the arrow keys and quit with `q`.
Usage Usage
sent FILE sent [FILE]
If FILE equals `-`, stdin will be read. Produce image slides by prepending a If FILE is omitted or equals `-`, stdin will be read. Produce image slides by
`@` in front of the filename as a single paragraph. Lines starting with `#` will prepending a `@` in front of the filename as a single paragraph. Lines starting
be ignored. A `\` at the beginning of the line escapes `@` and `#`. A with `#` will be ignored. A `\` at the beginning of the line escapes `@` and
presentation file could look like this: `#`. A presentation file could look like this:
sent sent

11
sent.c
View File

@ -689,7 +689,7 @@ void
usage() usage()
{ {
die("sent " VERSION " (c) 2014-2015 markus.teich@stusta.mhn.de\n" \ die("sent " VERSION " (c) 2014-2015 markus.teich@stusta.mhn.de\n" \
"usage: sent FILE", argv0); "usage: sent [FILE]", argv0);
} }
int int
@ -703,12 +703,13 @@ main(int argc, char *argv[])
usage(); usage();
} ARGEND; } ARGEND;
if ((fp = strcmp(argv[0], "-") ? fopen(argv[0], "r") : stdin)) { if (!argv[0] || !strcmp(argv[0], "-"))
fp = stdin;
else if (!(fp = fopen(argv[0], "r")))
die("Unable to open '%s' for reading:", argv[0]);
load(fp); load(fp);
fclose(fp); fclose(fp);
} else {
die("Unable to open '%s' for reading:", argv[0]);
}
if (!slidecount) if (!slidecount)
usage(); usage();