From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from krisdoz.my.domain (schwarze@localhost [127.0.0.1]) by krisdoz.my.domain (8.14.5/8.14.5) with ESMTP id s699J3e3018810 for ; Wed, 9 Jul 2014 05:19:03 -0400 (EDT) Received: (from schwarze@localhost) by krisdoz.my.domain (8.14.5/8.14.3/Submit) id s699J3er023929; Wed, 9 Jul 2014 05:19:03 -0400 (EDT) Date: Wed, 9 Jul 2014 05:19:03 -0400 (EDT) Message-Id: <201407090919.s699J3er023929@krisdoz.my.domain> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 From: schwarze@mdocml.bsd.lv To: source@mdocml.bsd.lv Subject: mdocml: Simplify pathgen() even more. X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 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 , 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 -#include #include #include #include @@ -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