From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from krisdoz.my.domain (kristaps@localhost [127.0.0.1]) by krisdoz.my.domain (8.14.3/8.14.3) with ESMTP id oATG6lLS022623 for ; Mon, 29 Nov 2010 11:06:47 -0500 (EST) Received: (from kristaps@localhost) by krisdoz.my.domain (8.14.3/8.14.3/Submit) id oATG6lri015297; Mon, 29 Nov 2010 11:06:47 -0500 (EST) Date: Mon, 29 Nov 2010 11:06:47 -0500 (EST) Message-Id: <201011291606.oATG6lri015297@krisdoz.my.domain> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 From: kristaps@mdocml.bsd.lv To: source@mdocml.bsd.lv Subject: mdocml: Migrate `Nm' and `Pa' handling from mdoc_action.c into X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Log Message: ----------- Migrate `Nm' and `Pa' handling from mdoc_action.c into mdoc_validate.c. Document that `Pa' is replaced by a tilde, just like `Mt'. Modified Files: -------------- mdocml: mdoc.7 mdoc_action.c mdoc_validate.c Revision Data ------------- Index: mdoc_validate.c =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc_validate.c,v retrieving revision 1.128 retrieving revision 1.129 diff -Lmdoc_validate.c -Lmdoc_validate.c -u -p -r1.128 -r1.129 --- mdoc_validate.c +++ mdoc_validate.c @@ -193,7 +193,7 @@ const struct valids mdoc_valids[MDOC_MAX { NULL, posts_nm }, /* Nm */ { NULL, posts_wline }, /* Op */ { NULL, NULL }, /* Ot */ - { NULL, NULL }, /* Pa */ + { NULL, posts_defaults }, /* Pa */ { pres_rv, NULL }, /* Rv */ { NULL, posts_st }, /* St */ { NULL, NULL }, /* Va */ @@ -1154,12 +1154,41 @@ post_vt(POST_ARGS) static int post_nm(POST_ARGS) { + struct mdoc_node *nn; + char buf[BUFSIZ]; - if (mdoc->last->child) + /* If no child specified, make sure we have the meta name. */ + + if (NULL == mdoc->last->child && NULL == mdoc->meta.name) { + mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_NONAME); return(1); - if (mdoc->meta.name) + } else if (mdoc->meta.name) return(1); - return(mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_NONAME)); + + /* If no meta name, set it from the child. */ + + buf[0] = '\0'; + + for (nn = mdoc->last->child; nn; nn = nn->next) { + /* XXX - copied from concat(). */ + assert(MDOC_TEXT == nn->type); + + if (strlcat(buf, nn->string, BUFSIZ) >= BUFSIZ) { + mdoc_nmsg(mdoc, nn, MANDOCERR_MEM); + return(0); + } + + if (NULL == nn->next) + continue; + + if (strlcat(buf, " ", BUFSIZ) >= BUFSIZ) { + mdoc_nmsg(mdoc, nn, MANDOCERR_MEM); + return(0); + } + } + + mdoc->meta.name = mandoc_strdup(buf); + return(1); } static int @@ -1186,8 +1215,8 @@ post_defaults(POST_ARGS) /* * The `Ar' defaults to "file ..." if no value is provided as an - * argument; the `Mt' macro uses "~"; the `Li' just gets an - * empty string. + * argument; the `Mt' and `Pa' macros use "~"; the `Li' just + * gets an empty string. */ if (mdoc->last->child) @@ -1213,6 +1242,8 @@ post_defaults(POST_ARGS) if ( ! mdoc_word_alloc(mdoc, nn->line, nn->pos, "")) return(0); break; + case (MDOC_Pa): + /* FALLTHROUGH */ case (MDOC_Mt): if ( ! mdoc_word_alloc(mdoc, nn->line, nn->pos, "~")) return(0); Index: mdoc_action.c =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc_action.c,v retrieving revision 1.84 retrieving revision 1.85 diff -Lmdoc_action.c -Lmdoc_action.c -u -p -r1.84 -r1.85 --- mdoc_action.c +++ mdoc_action.c @@ -57,9 +57,7 @@ static int post_bl_tagwidth(POST_ARGS) static int post_bl_width(POST_ARGS); static int post_dd(POST_ARGS); static int post_dt(POST_ARGS); -static int post_nm(POST_ARGS); static int post_os(POST_ARGS); -static int post_pa(POST_ARGS); static int post_prol(POST_ARGS); static int post_std(POST_ARGS); @@ -96,10 +94,10 @@ static const struct actions mdoc_actions { NULL, NULL }, /* In */ { NULL, NULL }, /* Li */ { NULL, NULL }, /* Nd */ - { NULL, post_nm }, /* Nm */ + { NULL, NULL }, /* Nm */ { NULL, NULL }, /* Op */ { NULL, NULL }, /* Ot */ - { NULL, post_pa }, /* Pa */ + { NULL, NULL }, /* Pa */ { NULL, post_std }, /* Rv */ { NULL, NULL }, /* St */ { NULL, NULL }, /* Va */ @@ -288,24 +286,6 @@ post_std(POST_ARGS) return(1); } - -/* - * The `Nm' macro's first use sets the name of the document. See also - * post_std(), etc. - */ -static int -post_nm(POST_ARGS) -{ - char buf[BUFSIZ]; - - if (m->meta.name) - return(1); - if ( ! concat(m, buf, n->child, BUFSIZ)) - return(0); - m->meta.name = mandoc_strdup(buf); - return(1); -} - /* * Parse out the contents of `Dt'. See in-line documentation for how we * handle the various fields of this macro. @@ -652,28 +632,6 @@ post_bl(POST_ARGS) assert(n->data.Bl->width); return(1); } - - -/* - * The `Pa' macro defaults to a tilde if no value is provided as an - * argument. - */ -static int -post_pa(POST_ARGS) -{ - struct mdoc_node *np; - - if (n->child) - return(1); - - np = n; - m->next = MDOC_NEXT_CHILD; - if ( ! mdoc_word_alloc(m, n->line, n->pos, "~")) - return(0); - m->last = np; - return(1); -} - /* * Parse the date field in `Dd'. Index: mdoc.7 =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc.7,v retrieving revision 1.164 retrieving revision 1.165 diff -Lmdoc.7 -Lmdoc.7 -u -p -r1.164 -r1.165 --- mdoc.7 +++ mdoc.7 @@ -2308,6 +2308,9 @@ and .Sx \&Ux . .Ss \&Pa A file-system path. +If an argument is not provided, the string +.Dq \(ti +is used as a default. .Pp Examples: .D1 \&.Pa /usr/bin/mandoc -- To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv