aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--TODO8
-rw-r--r--main.c19
2 files changed, 13 insertions, 14 deletions
diff --git a/TODO b/TODO
index 33eccde7..dd97163c 100644
--- a/TODO
+++ b/TODO
@@ -1,6 +1,6 @@
************************************************************************
* Official mandoc TODO.
-* $Id: TODO,v 1.293 2019/05/03 16:14:41 schwarze Exp $
+* $Id: TODO,v 1.294 2019/05/03 17:31:15 schwarze Exp $
************************************************************************
Many issues are annotated for difficulty as follows:
@@ -217,12 +217,6 @@ are mere guesses, and some may be wrong.
--- missing misc features ----------------------------------------------
-- dead .so links should be entered into the database to avoid:
- man -M. lvm-config
- man: outdated mandoc.db lacks lvm-config(8) entry, run makewhatis /co/void-man
- https://github.com/void-linux/void-packages/issues/9868
- loc * exist ** algo * size * imp **
-
- man -ks 1,8 route; kn@ Jul 13, 2018 orally
- italic correction (\/) in PostScript mode
diff --git a/main.c b/main.c
index fbb7bf28..bfe918b8 100644
--- a/main.c
+++ b/main.c
@@ -1,4 +1,4 @@
-/* $Id: main.c,v 1.325 2019/05/03 16:14:42 schwarze Exp $ */
+/* $Id: main.c,v 1.326 2019/05/03 17:31:15 schwarze Exp $ */
/*
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2012, 2014-2019 Ingo Schwarze <schwarze@openbsd.org>
@@ -21,6 +21,7 @@
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/param.h> /* MACHINE */
+#include <sys/stat.h>
#include <sys/wait.h>
#include <assert.h>
@@ -713,6 +714,7 @@ fs_lookup(const struct manpaths *paths, size_t ipath,
const char *sec, const char *arch, const char *name,
struct manpage **res, size_t *ressz)
{
+ struct stat sb;
glob_t globinfo;
struct manpage *page;
char *file;
@@ -722,13 +724,13 @@ fs_lookup(const struct manpaths *paths, size_t ipath,
form = FORM_SRC;
mandoc_asprintf(&file, "%s/man%s/%s.%s",
paths->paths[ipath], sec, name, sec);
- if (access(file, R_OK) != -1)
+ if (stat(file, &sb) != -1)
goto found;
free(file);
mandoc_asprintf(&file, "%s/cat%s/%s.0",
paths->paths[ipath], sec, name);
- if (access(file, R_OK) != -1) {
+ if (stat(file, &sb) != -1) {
form = FORM_CAT;
goto found;
}
@@ -737,7 +739,7 @@ fs_lookup(const struct manpaths *paths, size_t ipath,
if (arch != NULL) {
mandoc_asprintf(&file, "%s/man%s/%s/%s.%s",
paths->paths[ipath], sec, arch, name, sec);
- if (access(file, R_OK) != -1)
+ if (stat(file, &sb) != -1)
goto found;
free(file);
}
@@ -751,13 +753,16 @@ fs_lookup(const struct manpaths *paths, size_t ipath,
if (globres == 0)
file = mandoc_strdup(*globinfo.gl_pathv);
globfree(&globinfo);
- if (globres == 0)
- goto found;
+ if (globres == 0) {
+ if (stat(file, &sb) != -1)
+ goto found;
+ free(file);
+ }
if (res != NULL || ipath + 1 != paths->sz)
return 0;
mandoc_asprintf(&file, "%s.%s", name, sec);
- globres = access(file, R_OK);
+ globres = stat(file, &sb);
free(file);
return globres != -1;