aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--main.c4
-rw-r--r--tag.c15
2 files changed, 14 insertions, 5 deletions
diff --git a/main.c b/main.c
index a535023b..b11f7b51 100644
--- a/main.c
+++ b/main.c
@@ -1,4 +1,4 @@
-/* $Id: main.c,v 1.331 2019/07/15 21:41:08 schwarze Exp $ */
+/* $Id: main.c,v 1.332 2019/07/19 20:27:25 schwarze Exp $ */
/*
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2012, 2014-2019 Ingo Schwarze <schwarze@openbsd.org>
@@ -1194,7 +1194,7 @@ spawn_pager(struct tag_files *tag_files)
use_ofn = 1;
#if HAVE_LESS_T
- if ((cmdlen = strlen(argv[0])) >= 4) {
+ if (*tag_files->tfn != '\0' && (cmdlen = strlen(argv[0])) >= 4) {
cp = argv[0] + cmdlen - 4;
if (strcmp(cp, "less") == 0) {
argv[argc++] = mandoc_strdup("-T");
diff --git a/tag.c b/tag.c
index 4ba38241..43571c7f 100644
--- a/tag.c
+++ b/tag.c
@@ -1,4 +1,4 @@
-/* $Id: tag.c,v 1.22 2019/07/10 19:39:01 schwarze Exp $ */
+/* $Id: tag.c,v 1.23 2019/07/19 20:27:25 schwarze Exp $ */
/*
* Copyright (c) 2015, 2016, 2018, 2019 Ingo Schwarze <schwarze@openbsd.org>
*
@@ -225,6 +225,7 @@ tag_write(void)
struct tag_entry *entry;
size_t i;
unsigned int slot;
+ int empty;
if (tag_files.tfd <= 0)
return;
@@ -235,12 +236,16 @@ tag_write(void)
}
if ((stream = fdopen(tag_files.tfd, "w")) == NULL)
mandoc_msg(MANDOCERR_FDOPEN, 0, 0, "%s", strerror(errno));
+ empty = 1;
entry = ohash_first(&tag_data, &slot);
while (entry != NULL) {
- if (stream != NULL && entry->prio >= 0)
- for (i = 0; i < entry->nlines; i++)
+ if (stream != NULL && entry->prio >= 0) {
+ for (i = 0; i < entry->nlines; i++) {
fprintf(stream, "%s %s %zu\n",
entry->s, tag_files.ofn, entry->lines[i]);
+ empty = 0;
+ }
+ }
free(entry->lines);
free(entry);
entry = ohash_next(&tag_data, &slot);
@@ -251,6 +256,10 @@ tag_write(void)
else
close(tag_files.tfd);
tag_files.tfd = -1;
+ if (empty) {
+ unlink(tag_files.tfn);
+ *tag_files.tfn = '\0';
+ }
}
void