aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/main.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2015-07-21 03:26:21 +0000
committerIngo Schwarze <schwarze@openbsd.org>2015-07-21 03:26:21 +0000
commit63715ce7fcf7bb1237ac456e45c0d5ecefda8e2c (patch)
treed6c38fe77d9834bcc97a5cdac755f0dc8a4b923f /main.c
parentf0143f309111bca83659f897fa5c7c42548890ed (diff)
downloadmandoc-63715ce7fcf7bb1237ac456e45c0d5ecefda8e2c.tar.gz
mandoc-63715ce7fcf7bb1237ac456e45c0d5ecefda8e2c.tar.zst
mandoc-63715ce7fcf7bb1237ac456e45c0d5ecefda8e2c.zip
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.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/main.c b/main.c
index ca30cf4d..66bbfea8 100644
--- a/main.c
+++ b/main.c
@@ -1,4 +1,4 @@
-/* $Id: main.c,v 1.242 2015/07/19 06:05:16 schwarze Exp $ */
+/* $Id: main.c,v 1.243 2015/07/21 03:26:21 schwarze Exp $ */
/*
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2012, 2014, 2015 Ingo Schwarze <schwarze@openbsd.org>
@@ -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;