From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp-2.sys.kth.se (smtp-2.sys.kth.se [130.237.32.160]) by krisdoz.my.domain (8.14.3/8.14.3) with ESMTP id p2EH4544001639 for ; Mon, 14 Mar 2011 13:04:06 -0400 (EDT) Received: from mailscan-1.sys.kth.se (mailscan-1.sys.kth.se [130.237.32.91]) by smtp-2.sys.kth.se (Postfix) with ESMTP id 0A5AA14C12F; Mon, 14 Mar 2011 18:03:59 +0100 (CET) X-Virus-Scanned: by amavisd-new at kth.se Received: from smtp-2.sys.kth.se ([130.237.32.160]) by mailscan-1.sys.kth.se (mailscan-1.sys.kth.se [130.237.32.91]) (amavisd-new, port 10024) with LMTP id Xnmfkc9j4jod; Mon, 14 Mar 2011 18:03:56 +0100 (CET) X-KTH-Auth: kristaps [77.202.18.254] X-KTH-mail-from: kristaps@bsd.lv Received: from [192.168.1.90] (254.18.202-77.rev.gaoland.net [77.202.18.254]) by smtp-2.sys.kth.se (Postfix) with ESMTP id 2E43714C129; Mon, 14 Mar 2011 18:03:54 +0100 (CET) Message-ID: <4D7E4A79.1060501@bsd.lv> Date: Mon, 14 Mar 2011 18:03:53 +0100 From: Kristaps Dzonsons User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.13) Gecko/20101207 Thunderbird/3.1.7 X-Mailinglist: mdocml-tech Reply-To: tech@mdocml.bsd.lv MIME-Version: 1.0 To: tech@mdocml.bsd.lv, Ingo Schwarze Subject: Struct-ifying file_status Content-Type: multipart/mixed; boundary="------------050305090305010102010909" This is a multi-part message in MIME format. --------------050305090305010102010909 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hi, I'm slowly moving the file-read and pre-parsing main.c stuff into its own file. Unfortunately, there's lots of goo in these files and this will take some care. Any objections to this first patch, which makes file_status local to struct curparse? Kristaps --------------050305090305010102010909 Content-Type: text/plain; name="patch.file_status.txt" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="patch.file_status.txt" Index: main.c =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/main.c,v retrieving revision 1.147 diff -u -r1.147 main.c --- main.c 7 Mar 2011 01:35:51 -0000 1.147 +++ main.c 14 Mar 2011 17:01:18 -0000 @@ -78,11 +78,12 @@ }; struct curparse { - const char *file; /* Current parse. */ - int fd; /* Current parse. */ - int line; /* Line number in the file. */ - enum mandoclevel wlevel; /* Ignore messages below this. */ - int wstop; /* Stop after a file with a warning. */ + const char *file; /* current file-name */ + enum mandoclevel file_status; /* error status of current parse */ + int fd; /* current file-descriptor */ + int line; /* line number in the file */ + enum mandoclevel wlevel; /* ignore messages below this */ + int wstop; /* stop after a file with a warning */ enum intt inttype; /* which parser to use */ struct man *pman; /* persistent man parser */ struct mdoc *pmdoc; /* persistent mdoc parser */ @@ -241,7 +242,6 @@ static int woptions(struct curparse *, char *); static const char *progname; -static enum mandoclevel file_status = MANDOCLEVEL_OK; static enum mandoclevel exit_status = MANDOCLEVEL_OK; int @@ -378,7 +378,7 @@ if (-1 == (fd = open(file, O_RDONLY, 0))) { perror(file); - file_status = MANDOCLEVEL_SYSERR; + curp->file_status = MANDOCLEVEL_SYSERR; return(0); } @@ -396,7 +396,7 @@ if (-1 == close(fd)) perror(file); - return(MANDOCLEVEL_FATAL > file_status ? 1 : 0); + return(MANDOCLEVEL_FATAL > curp->file_status ? 1 : 0); } @@ -500,7 +500,7 @@ curp->mdoc = NULL; curp->man = NULL; - file_status = MANDOCLEVEL_OK; + curp->file_status = MANDOCLEVEL_OK; /* Make sure the mandotory roff parser is initialised. */ @@ -513,26 +513,26 @@ pdesc(curp); - if (MANDOCLEVEL_FATAL <= file_status) + if (MANDOCLEVEL_FATAL <= curp->file_status) goto cleanup; /* NOTE a parser may not have been assigned, yet. */ if ( ! (curp->man || curp->mdoc)) { fprintf(stderr, "%s: Not a manual\n", curp->file); - file_status = MANDOCLEVEL_FATAL; + curp->file_status = MANDOCLEVEL_FATAL; goto cleanup; } /* Clean up the parse routine ASTs. */ if (curp->mdoc && ! mdoc_endparse(curp->mdoc)) { - assert(MANDOCLEVEL_FATAL <= file_status); + assert(MANDOCLEVEL_FATAL <= curp->file_status); goto cleanup; } if (curp->man && ! man_endparse(curp->man)) { - assert(MANDOCLEVEL_FATAL <= file_status); + assert(MANDOCLEVEL_FATAL <= curp->file_status); goto cleanup; } @@ -544,7 +544,7 @@ * the requested level, do not produce output. */ - if (MANDOCLEVEL_OK != file_status && curp->wstop) + if (MANDOCLEVEL_OK != curp->file_status && curp->wstop) goto cleanup; /* If unset, allocate output dev now (if applicable). */ @@ -619,8 +619,8 @@ assert(curp->roff); roff_reset(curp->roff); - if (exit_status < file_status) - exit_status = file_status; + if (exit_status < curp->file_status) + exit_status = curp->file_status; return; } @@ -639,7 +639,7 @@ */ if ( ! read_whole_file(curp, &blk, &with_mmap)) { - file_status = MANDOCLEVEL_SYSERR; + curp->file_status = MANDOCLEVEL_SYSERR; return; } @@ -655,6 +655,11 @@ free(blk.buf); } +/* + * Main parse routine for an opened file. This is called for each + * opened file and simply loops around the full input file, possibly + * nesting (i.e., with `so'). + */ static void parsebuf(struct curparse *curp, struct buf blk, int start) { @@ -666,12 +671,6 @@ int lnn; /* line number in the real file */ unsigned char c; - /* - * Main parse routine for an opened file. This is called for - * each opened file and simply loops around the full input file, - * possibly nesting (i.e., with `so'). - */ - memset(&ln, 0, sizeof(struct buf)); lnn = curp->line; @@ -816,7 +815,7 @@ pos = 0; continue; case (ROFF_ERR): - assert(MANDOCLEVEL_FATAL <= file_status); + assert(MANDOCLEVEL_FATAL <= curp->file_status); break; case (ROFF_SO): if (pfile(ln.buf + of, curp)) { @@ -833,7 +832,7 @@ * call, make sure we don't continue parsing. */ - if (MANDOCLEVEL_FATAL <= file_status) + if (MANDOCLEVEL_FATAL <= curp->file_status) break; /* @@ -881,7 +880,7 @@ curp->line, ln.buf, of); if (0 == rc) { - assert(MANDOCLEVEL_FATAL <= file_status); + assert(MANDOCLEVEL_FATAL <= curp->file_status); break; } @@ -1062,8 +1061,8 @@ fprintf(stderr, ": %s", msg); fputc('\n', stderr); - if (file_status < level) - file_status = level; + if (cp->file_status < level) + cp->file_status = level; return(level < MANDOCLEVEL_FATAL); } --------------050305090305010102010909-- -- To unsubscribe send an email to tech+unsubscribe@mdocml.bsd.lv