diff options
-rw-r--r-- | usr.bin/mandoc/main.c | 21 | ||||
-rw-r--r-- | usr.bin/mandoc/tag.c | 12 | ||||
-rw-r--r-- | usr.bin/mandoc/tag.h | 5 |
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); |