source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* 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).