diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2015-07-21 03:26:21 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2015-07-21 03:26:21 +0000 |
commit | bb2b6d70625fb83d3ac31a1015588226c42b8457 (patch) | |
tree | f785a6598d1ea7cd15ffa01b00df8059354aed39 /main.c | |
parent | 2911006dcd808278e26b990dd26b268183fc27b4 (diff) | |
download | mandoc-bb2b6d70625fb83d3ac31a1015588226c42b8457.tar.gz |
When creation of the temporary tags file fails, call the pager
without the -T option, because otherwise the pager won't even start.
Fixing a bug reported by jca@.
While here, shorten the code by two lines
and delete one internal interface function.
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 19 |
1 files changed, 11 insertions, 8 deletions
@@ -993,15 +993,18 @@ spawn_pager(void) /* Read all text right away and use the tag file. */ - if ((cmdlen = strlen(argv[0])) >= 4) { + for (;;) { + if ((cmdlen = strlen(argv[0])) < 4) + break; cp = argv[0] + cmdlen - 4; - if (strcmp(cp, "less") == 0 || - strcmp(cp, "more") == 0) { - tag_init(); - argv[argc++] = mandoc_strdup("+G1G"); - argv[argc++] = mandoc_strdup("-T"); - argv[argc++] = tag_filename(); - } + if (strcmp(cp, "less") && strcmp(cp, "more")) + break; + if ((cp = tag_init()) == NULL) + break; + argv[argc++] = mandoc_strdup("+G1G"); + argv[argc++] = mandoc_strdup("-T"); + argv[argc++] = cp; + break; } argv[argc] = NULL; |