source@mandoc.bsd.lv
 help / color / mirror / Atom feed
From: schwarze@mdocml.bsd.lv
To: source@mdocml.bsd.lv
Subject: mdocml: Simplify the mparse_open() interface.
Date: Thu, 7 Jan 2016 21:53:44 -0500 (EST)	[thread overview]
Message-ID: <11388471879340437416.enqueue@fantadrom.bsd.lv> (raw)

Log Message:
-----------
Simplify the mparse_open() interface.
Just return the file descriptor or -1 on error;
there is just one kind of error anyway.
Suggested by Christos Zoulas (NetBSD).

Modified Files:
--------------
    mdocml:
        demandoc.c
        main.c
        mandoc.3
        mandoc.h
        mandocdb.c
        read.c

Revision Data
-------------
Index: mandocdb.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/mandocdb.c,v
retrieving revision 1.212
retrieving revision 1.213
diff -Lmandocdb.c -Lmandocdb.c -u -p -r1.212 -r1.213
--- mandocdb.c
+++ mandocdb.c
@@ -1134,8 +1134,7 @@ mpages_merge(struct mparse *mp)
 		man = NULL;
 		sodest = NULL;
 
-		mparse_open(mp, &fd, mlink->file);
-		if (fd == -1) {
+		if ((fd = mparse_open(mp, mlink->file)) == -1) {
 			say(mlink->file, "&open");
 			goto nextpage;
 		}
Index: read.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/read.c,v
retrieving revision 1.147
retrieving revision 1.148
diff -Lread.c -Lread.c -u -p -r1.147 -r1.148
--- read.c
+++ read.c
@@ -1,7 +1,7 @@
 /*	$Id$ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2010-2015 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2010-2016 Ingo Schwarze <schwarze@openbsd.org>
  * Copyright (c) 2010, 2012 Joerg Sonnenberger <joerg@netbsd.org>
  *
  * Permission to use, copy, modify, and distribute this software for any
@@ -539,8 +539,7 @@ rerun:
 			if (curp->secondary)
 				curp->secondary->sz -= pos + 1;
 			save_file = curp->file;
-			if (mparse_open(curp, &fd, ln.buf + of) ==
-			    MANDOCLEVEL_OK) {
+			if ((fd = mparse_open(curp, ln.buf + of)) != -1) {
 				mparse_readfd(curp, fd, ln.buf + of);
 				close(fd);
 				curp->file = save_file;
@@ -777,10 +776,11 @@ mparse_readfd(struct mparse *curp, int f
 	return curp->file_status;
 }
 
-enum mandoclevel
-mparse_open(struct mparse *curp, int *fd, const char *file)
+int
+mparse_open(struct mparse *curp, const char *file)
 {
 	char		 *cp;
+	int		  fd;
 
 	curp->file = file;
 	cp = strrchr(file, '.');
@@ -788,8 +788,8 @@ mparse_open(struct mparse *curp, int *fd
 
 	/* First try to use the filename as it is. */
 
-	if ((*fd = open(file, O_RDONLY)) != -1)
-		return MANDOCLEVEL_OK;
+	if ((fd = open(file, O_RDONLY)) != -1)
+		return fd;
 
 	/*
 	 * If that doesn't work and the filename doesn't
@@ -798,18 +798,18 @@ mparse_open(struct mparse *curp, int *fd
 
 	if ( ! curp->gzip) {
 		mandoc_asprintf(&cp, "%s.gz", file);
-		*fd = open(file, O_RDONLY);
+		fd = open(file, O_RDONLY);
 		free(cp);
-		if (*fd != -1) {
+		if (fd != -1) {
 			curp->gzip = 1;
-			return MANDOCLEVEL_OK;
+			return fd;
 		}
 	}
 
 	/* Neither worked, give up. */
 
 	mandoc_msg(MANDOCERR_FILE, curp, 0, 0, strerror(errno));
-	return MANDOCLEVEL_ERROR;
+	return -1;
 }
 
 struct mparse *
Index: main.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/main.c,v
retrieving revision 1.261
retrieving revision 1.262
diff -Lmain.c -Lmain.c -u -p -r1.261 -r1.262
--- main.c
+++ main.c
@@ -1,7 +1,7 @@
 /*	$Id$ */
 /*
  * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2010-2012, 2014, 2015 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2010-2012, 2014-2016 Ingo Schwarze <schwarze@openbsd.org>
  * Copyright (c) 2010 Joerg Sonnenberger <joerg@netbsd.org>
  *
  * Permission to use, copy, modify, and distribute this software for any
@@ -126,7 +126,6 @@ main(int argc, char *argv[])
 	size_t		 isec, i, sz;
 	int		 prio, best_prio;
 	char		 sec;
-	enum mandoclevel rctmp;
 	enum outmode	 outmode;
 	int		 fd;
 	int		 show_usage;
@@ -459,11 +458,7 @@ main(int argc, char *argv[])
 	}
 
 	while (argc > 0) {
-		rctmp = mparse_open(curp.mp, &fd,
-		    resp != NULL ? resp->file : *argv);
-		if (rc < rctmp)
-			rc = rctmp;
-
+		fd = mparse_open(curp.mp, resp != NULL ? resp->file : *argv);
 		if (fd != -1) {
 			if (use_pager) {
 				tag_files = tag_init();
@@ -482,7 +477,8 @@ main(int argc, char *argv[])
 
 			if (argc > 1 && curp.outtype <= OUTT_UTF8)
 				ascii_sepline(curp.outdata);
-		}
+		} else if (rc < MANDOCLEVEL_ERROR)
+			rc = MANDOCLEVEL_ERROR;
 
 		if (MANDOCLEVEL_OK != rc && curp.wstop)
 			break;
Index: mandoc.h
===================================================================
RCS file: /home/cvs/mdocml/mdocml/mandoc.h,v
retrieving revision 1.208
retrieving revision 1.209
diff -Lmandoc.h -Lmandoc.h -u -p -r1.208 -r1.209
--- mandoc.h
+++ mandoc.h
@@ -1,7 +1,7 @@
 /*	$Id$ */
 /*
  * Copyright (c) 2010, 2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2010-2015 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2010-2016 Ingo Schwarze <schwarze@openbsd.org>
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -423,7 +423,7 @@ const char	 *mchars_spec2str(const char 
 struct mparse	 *mparse_alloc(int, enum mandoclevel, mandocmsg, const char *);
 void		  mparse_free(struct mparse *);
 void		  mparse_keep(struct mparse *);
-enum mandoclevel  mparse_open(struct mparse *, int *, const char *);
+int		  mparse_open(struct mparse *, const char *);
 enum mandoclevel  mparse_readfd(struct mparse *, int, const char *);
 enum mandoclevel  mparse_readmem(struct mparse *, void *, size_t,
 			const char *);
Index: mandoc.3
===================================================================
RCS file: /home/cvs/mdocml/mdocml/mandoc.3,v
retrieving revision 1.34
retrieving revision 1.35
diff -Lmandoc.3 -Lmandoc.3 -u -p -r1.34 -r1.35
--- mandoc.3
+++ mandoc.3
@@ -73,10 +73,9 @@
 .Fo mparse_keep
 .Fa "struct mparse *parse"
 .Fc
-.Ft "enum mandoclevel"
+.Ft int
 .Fo mparse_open
 .Fa "struct mparse *parse"
-.Fa "int *fd"
 .Fa "const char *fname"
 .Fc
 .Ft "enum mandoclevel"
@@ -388,9 +387,7 @@ does not already end in
 try again after appending
 .Ql .gz .
 Save the information whether the file is zipped or not.
-Return a file descriptor open for reading in
-.Fa fd ,
-or -1 on failure.
+Return a file descriptor open for reading or -1 on failure.
 It can be passed to
 .Fn mparse_readfd
 or used directly.
Index: demandoc.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/demandoc.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -Ldemandoc.c -Ldemandoc.c -u -p -r1.25 -r1.26
--- demandoc.c
+++ demandoc.c
@@ -87,7 +87,7 @@ main(int argc, char *argv[])
 
 	for (i = 0; i < argc; i++) {
 		mparse_reset(mp);
-		if (mparse_open(mp, &fd, argv[i]) != MANDOCLEVEL_OK) {
+		if ((fd = mparse_open(mp, argv[i])) == -1) {
 			perror(argv[i]);
 			continue;
 		}
--
 To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv

                 reply	other threads:[~2016-01-08  2:53 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=11388471879340437416.enqueue@fantadrom.bsd.lv \
    --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).