summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr.bin/mandoc/main.c21
-rw-r--r--usr.bin/mandoc/tag.c12
-rw-r--r--usr.bin/mandoc/tag.h5
3 files changed, 17 insertions, 21 deletions
diff --git a/usr.bin/mandoc/main.c b/usr.bin/mandoc/main.c
index f8f444a5acd..28b4d7b465d 100644
--- a/usr.bin/mandoc/main.c
+++ b/usr.bin/mandoc/main.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: main.c,v 1.147 2015/07/19 05:59:07 schwarze Exp $ */
+/* $OpenBSD: main.c,v 1.148 2015/07/21 03:26:02 schwarze Exp $ */
/*
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2012, 2014, 2015 Ingo Schwarze <schwarze@openbsd.org>
@@ -968,15 +968,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;
diff --git a/usr.bin/mandoc/tag.c b/usr.bin/mandoc/tag.c
index 0d1f19ec77f..41d110f363e 100644
--- a/usr.bin/mandoc/tag.c
+++ b/usr.bin/mandoc/tag.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tag.c,v 1.2 2015/07/18 03:40:51 schwarze Exp $ */
+/* $OpenBSD: tag.c,v 1.3 2015/07/21 03:26:02 schwarze Exp $ */
/*
* Copyright (c) 2015 Ingo Schwarze <schwarze@openbsd.org>
*
@@ -48,7 +48,7 @@ static int tag_fd = -1;
* where various marked-up terms are documented and create
* the temporary tags file, saving the name for the pager.
*/
-void
+char *
tag_init(void)
{
struct ohash_info tag_info;
@@ -60,7 +60,7 @@ tag_init(void)
if ((tag_fd = mkstemp(tag_fn)) == -1) {
free(tag_fn);
tag_fn = NULL;
- return;
+ return(NULL);
}
tag_info.alloc = tag_alloc;
@@ -69,12 +69,6 @@ tag_init(void)
tag_info.key_offset = offsetof(struct tag_entry, s);
tag_info.data = NULL;
ohash_init(&tag_data, 4, &tag_info);
-}
-
-char *
-tag_filename(void)
-{
-
return(tag_fn);
}
diff --git a/usr.bin/mandoc/tag.h b/usr.bin/mandoc/tag.h
index dd3a5f5d4c5..77c895cc799 100644
--- a/usr.bin/mandoc/tag.h
+++ b/usr.bin/mandoc/tag.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: tag.h,v 1.1 2015/07/17 22:35:36 schwarze Exp $ */
+/* $OpenBSD: tag.h,v 1.2 2015/07/21 03:26:02 schwarze Exp $ */
/*
* Copyright (c) 2015 Ingo Schwarze <schwarze@openbsd.org>
*
@@ -17,8 +17,7 @@
__BEGIN_DECLS
-void tag_init(void);
-char *tag_filename(void);
+char *tag_init(void);
size_t tag_get(const char *, size_t);
void tag_put(const char *, size_t, size_t);
void tag_write(void);