* mdocml: Simplify pathgen() even more.
@ 2014-07-09 9:19 schwarze
0 siblings, 0 replies; only message in thread
From: schwarze @ 2014-07-09 9:19 UTC (permalink / raw)
To: source
Log Message:
-----------
Simplify pathgen() even more.
Let manpath.conf be a plain text list of the directories to use.
As a bonus, this makes the order configurable.
Get rid of <dirent.h>, opendir(3), readdir(3), stat(2).
Modified Files:
--------------
mdocml:
cgi.c
Revision Data
-------------
Index: cgi.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/cgi.c,v
retrieving revision 1.53
retrieving revision 1.54
diff -Lcgi.c -Lcgi.c -u -p -r1.53 -r1.54
--- cgi.c
+++ cgi.c
@@ -20,7 +20,6 @@
#endif
#include <ctype.h>
-#include <dirent.h>
#include <fcntl.h>
#include <limits.h>
#include <stdio.h>
@@ -77,7 +76,7 @@ static void http_parse(struct req *, c
static void http_print(const char *);
static void http_putchar(char);
static void http_printquery(const struct req *);
-static void pathgen(DIR *, struct req *);
+static void pathgen(struct req *);
static void pg_index(const struct req *, char *);
static void pg_search(const struct req *, char *);
static void pg_show(const struct req *, char *);
@@ -829,7 +828,6 @@ int
main(void)
{
int i;
- DIR *cwd;
struct req req;
char *p, *path, *subpath;
@@ -857,16 +855,10 @@ main(void)
perror(cache);
resp_bad();
return(EXIT_FAILURE);
- } else if (NULL == (cwd = opendir(cache))) {
- perror(cache);
- resp_bad();
- return(EXIT_FAILURE);
}
memset(&req, 0, sizeof(struct req));
-
- pathgen(cwd, &req);
- closedir(cwd);
+ pathgen(&req);
/* Next parse out the query string. */
@@ -938,24 +930,18 @@ cmp(const void *p1, const void *p2)
* Scan for indexable paths.
*/
static void
-pathgen(DIR *dir, struct req *req)
+pathgen(struct req *req)
{
- struct dirent *d;
-#if defined(__sun)
- struct stat sb;
-#endif
+ FILE *fp;
+ char *dp;
+ size_t dpsz;
- while (NULL != (d = readdir(dir))) {
-#if defined(__sun)
- stat(d->d_name, &sb);
- if (!(S_IFDIR & sb.st_mode)
-#else
- if (DT_DIR != d->d_type
-#endif
- || '.' != d->d_name[0]) {
- req->p = mandoc_realloc(req->p,
- (req->psz + 1) * sizeof(char *));
- req->p[req->psz++] = mandoc_strdup(d->d_name);
- }
+ if (NULL == (fp = fopen("manpath.conf", "r")))
+ return;
+
+ while (NULL != (dp = fgetln(fp, &dpsz))) {
+ req->p = mandoc_realloc(req->p,
+ (req->psz + 1) * sizeof(char *));
+ req->p[req->psz++] = mandoc_strndup(dp, dpsz);
}
}
--
To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2014-07-09 9:19 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-07-09 9:19 mdocml: Simplify pathgen() even more schwarze
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).