summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main.c2
-rw-r--r--tag.c13
2 files changed, 12 insertions, 3 deletions
diff --git a/main.c b/main.c
index e5a3976b..307e65dc 100644
--- a/main.c
+++ b/main.c
@@ -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 a0b0cd35..edff5064 100644
--- a/tag.c
+++ b/tag.c
@@ -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