source@mandoc.bsd.lv
 help / color / mirror / Atom feed
From: schwarze@mdocml.bsd.lv
To: source@mdocml.bsd.lv
Subject: mdocml: Simplify pathgen() even more.
Date: Wed, 9 Jul 2014 05:19:03 -0400 (EDT)	[thread overview]
Message-ID: <201407090919.s699J3er023929@krisdoz.my.domain> (raw)

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

                 reply	other threads:[~2014-07-09  9:19 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201407090919.s699J3er023929@krisdoz.my.domain \
    --to=schwarze@mdocml.bsd.lv \
    --cc=source@mdocml.bsd.lv \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).