From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-it0-f54.google.com (mail-it0-f54.google.com [209.85.214.54]) by fantadrom.bsd.lv (OpenSMTPD) with ESMTP id 00914868 for ; Fri, 23 Jun 2017 00:45:49 -0500 (EST) Received: by mail-it0-f54.google.com with SMTP id m47so2817816iti.0 for ; Thu, 22 Jun 2017 22:45:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cathet-us.20150623.gappssmtp.com; s=20150623; h=sender:from:to:subject:mime-version:content-id:date:message-id; bh=yK6oUql0BopJdoiJ2XRCvrsg49tQ5O03SiFo7Tk8pFQ=; b=q+rUJoTMrFCmGlGtCR0wweJ7GoneqGfsHe3gBt9ZUklH6cQ7Qtiq23Y2FEvqY+pkJN dTZ8Gv9wG1zOvoeExdMgCcqcczkU/WI+VEwzns+8YwksFCijniiD5n6riTlJGyhIqXVX apiHry5CglOJYQRSqHsQNnpp1UFsbAPw1H9NLJbwCJoaeGtA+74gy1pfcFWc/DbuaqBT ISGadGISt5+gBRWegOtoaw5eQhBJMNdhfVZoZgZIu5EqmMffra8E5gRco2E7GcAOMukK M8tGljE+/+6SEwE6lzrSX+YDhDs+UQi+ErmDi8RZ3nsZXF5OD3GqHkWPXm7+PF6zFRlQ gk8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:mime-version:content-id :date:message-id; bh=yK6oUql0BopJdoiJ2XRCvrsg49tQ5O03SiFo7Tk8pFQ=; b=X0riuMVHHdLbFYQ0x5GUTJoYI71BM8uDMhP+UOwddiNc6gcZERsXh+brVT5szX63Yv P4rYddJTl/IMUhL+5idsxeBFXH9TAu4sw4x5gw3s6kdynaFh9VUHYWLKC0DvNQfS8LL8 JhGGlq4/isHVBZ7zJLjXqs8AzFfXFvXbYqqR8wlpaxYjxWFwPPCtaV1eO+m5909ynlsd bs8n35THUD3PRFQqHYc/azVR4hTmchxirWMY7JYm/Wy67JCVrYkzwfufmvpZn+lXpcOF BdMd3FSl+CZX+Ye8xbSfwy+4r8xutiMG0X6sQFNPxlJLOZMGqb9xKpw/9YdriwZhf6E1 Ebqw== X-Gm-Message-State: AKS2vOwQRVKr3pcU2FMIJPueRjo2WtQLYEszUBEG9xywAqLF0AAaaqut qTTqK2PcFhWxeYOdAJA= X-Received: by 10.36.0.70 with SMTP id 67mr5636592ita.114.1498196748303; Thu, 22 Jun 2017 22:45:48 -0700 (PDT) Received: from cathet.us. (75-161-126-169.albq.qwest.net. [75.161.126.169]) by smtp.gmail.com with ESMTPSA id l130sm2321780iol.49.2017.06.22.22.45.47 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 22 Jun 2017 22:45:47 -0700 (PDT) Sender: "Anthony J. Bentley" Received: from cathet.us (localhost [127.0.0.1]) by cathet.us. (OpenSMTPD) with ESMTP id 4a141834 for ; Thu, 22 Jun 2017 23:45:46 -0600 (MDT) From: "Anthony J. Bentley" To: tech@mdocml.bsd.lv Subject: MT and ME macros X-Mailinglist: mdocml-tech Reply-To: tech@mdocml.bsd.lv MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <29054.1498196746.1@cathet.us> Date: Thu, 22 Jun 2017 23:45:46 -0600 Message-ID: <81293.1498196746@cathet.us> Hi, >From wireguard.io's wg(8): .B wg was written by .MT Jason@example.com Jason A. Donenfeld .ME . For updates and more information, a project page is available on the .UR https://\:www.wireguard.io/ World Wide Web .UE . There are three issues here: - MT and ME are not supported. - UR prints < >, not \(la \(ra. (Sigh...) - The trailing period after UE is not displayed. Here's a diff that attempts to fix the first two points, although maybe it contains needless duplication? Index: man.7 =================================================================== RCS file: /cvs/mdocml/man.7,v retrieving revision 1.135 diff -u -p -r1.135 man.7 --- man.7 7 May 2017 21:44:49 -0000 1.135 +++ man.7 23 Jun 2017 05:42:49 -0000 @@ -466,6 +466,20 @@ See also .Sx \&PP , and .Sx \&TP . +.Ss \&ME +End a mailto block. +This is a non-standard GNU extension, included only for compatibility. +See +.Sx \&MT . +.Ss \&MT +Begin a mailto block. +This is a non-standard GNU extension, included only for compatibility. +It has the following syntax: +.Bd -literal -offset indent +.Pf \. Sx \&MT Ar address +link description to be shown +.Pf \. Sx ME +.Ed .Ss \&OP Optional command-line argument. This is a non-standard GNU extension, included only for compatibility. Index: man_html.c =================================================================== RCS file: /cvs/mdocml/man_html.c,v retrieving revision 1.143 diff -u -p -r1.143 man_html.c --- man_html.c 8 Jun 2017 12:54:58 -0000 1.143 +++ man_html.c 23 Jun 2017 05:42:49 -0000 @@ -57,6 +57,7 @@ static int man_B_pre(MAN_ARGS); static int man_HP_pre(MAN_ARGS); static int man_IP_pre(MAN_ARGS); static int man_I_pre(MAN_ARGS); +static int man_MT_pre(MAN_ARGS); static int man_OP_pre(MAN_ARGS); static int man_PP_pre(MAN_ARGS); static int man_RS_pre(MAN_ARGS); @@ -105,6 +106,8 @@ static const struct htmlman __mans[MAN_M { NULL, NULL }, /* EE */ { man_UR_pre, NULL }, /* UR */ { NULL, NULL }, /* UE */ + { man_MT_pre, NULL }, /* MT */ + { NULL, NULL }, /* ME */ }; static const struct htmlman *const mans = __mans - MAN_TH; @@ -229,6 +232,7 @@ print_man_node(MAN_ARGS) case MAN_P: /* reopen .nf in the body. */ case MAN_RS: case MAN_UR: + case MAN_MT: fillmode(h, MAN_fi); break; default: @@ -648,6 +652,28 @@ man_UR_pre(MAN_ARGS) if (n->child != NULL) { assert(n->child->type == ROFFT_TEXT); print_otag(h, TAG_A, "cTh", "Lk", n->child->string); + } + + assert(n->next->type == ROFFT_BODY); + if (n->next->child != NULL) + n = n->next; + + print_man_nodelist(man, n->child, h); + + return 0; +} + +static int +man_MT_pre(MAN_ARGS) +{ + char *cp; + n = n->child; + assert(n->type == ROFFT_HEAD); + if (n->child != NULL) { + assert(n->child->type == ROFFT_TEXT); + mandoc_asprintf(&cp, "mailto:%s", n->child->string); + print_otag(h, TAG_A, "cTh", "Mt", cp); + free(cp); } assert(n->next->type == ROFFT_BODY); Index: man_macro.c =================================================================== RCS file: /cvs/mdocml/man_macro.c,v retrieving revision 1.122 diff -u -p -r1.122 man_macro.c --- man_macro.c 17 Jun 2017 16:47:48 -0000 1.122 +++ man_macro.c 23 Jun 2017 05:42:50 -0000 @@ -75,6 +75,8 @@ const struct man_macro __man_macros[MAN_ { in_line_eoln, MAN_BSCOPE }, /* EE */ { blk_exp, MAN_BSCOPE }, /* UR */ { blk_close, MAN_BSCOPE }, /* UE */ + { blk_exp, MAN_BSCOPE }, /* MT */ + { blk_close, MAN_BSCOPE }, /* ME */ }; const struct man_macro *const man_macros = __man_macros - MAN_TH; @@ -216,6 +218,9 @@ blk_close(MACRO_PROT_ARGS) break; case MAN_UE: ntok = MAN_UR; + break; + case MAN_ME: + ntok = MAN_MT; break; default: abort(); Index: man_term.c =================================================================== RCS file: /cvs/mdocml/man_term.c,v retrieving revision 1.207 diff -u -p -r1.207 man_term.c --- man_term.c 17 Jun 2017 13:06:16 -0000 1.207 +++ man_term.c 23 Jun 2017 05:42:50 -0000 @@ -72,6 +72,7 @@ static int pre_DT(DECL_ARGS); static int pre_HP(DECL_ARGS); static int pre_I(DECL_ARGS); static int pre_IP(DECL_ARGS); +static int pre_MT(DECL_ARGS); static int pre_OP(DECL_ARGS); static int pre_PD(DECL_ARGS); static int pre_PP(DECL_ARGS); @@ -87,6 +88,7 @@ static int pre_literal(DECL_ARGS); static void post_IP(DECL_ARGS); static void post_HP(DECL_ARGS); +static void post_MT(DECL_ARGS); static void post_RS(DECL_ARGS); static void post_SH(DECL_ARGS); static void post_SS(DECL_ARGS); @@ -128,6 +130,8 @@ static const struct termact __termacts[M { pre_literal, NULL, 0 }, /* EE */ { pre_UR, post_UR, 0 }, /* UR */ { NULL, NULL, 0 }, /* UE */ + { pre_MT, post_MT, 0 }, /* MT */ + { NULL, NULL, 0 }, /* ME */ }; static const struct termact *termacts = __termacts - MAN_TH; @@ -842,6 +846,13 @@ pre_UR(DECL_ARGS) return n->type != ROFFT_HEAD; } +static int +pre_MT(DECL_ARGS) +{ + + return n->type != ROFFT_HEAD; +} + static void post_UR(DECL_ARGS) { @@ -849,14 +860,31 @@ post_UR(DECL_ARGS) if (n->type != ROFFT_BLOCK) return; - term_word(p, "<"); + term_word(p, "\\(la"); + p->flags |= TERMP_NOSPACE; + + if (NULL != n->child->child) + print_man_node(p, mt, n->child->child, meta); + + p->flags |= TERMP_NOSPACE; + term_word(p, "\\(ra"); +} + +static void +post_MT(DECL_ARGS) +{ + + if (n->type != ROFFT_BLOCK) + return; + + term_word(p, "\\(la"); p->flags |= TERMP_NOSPACE; if (NULL != n->child->child) print_man_node(p, mt, n->child->child, meta); p->flags |= TERMP_NOSPACE; - term_word(p, ">"); + term_word(p, "\\(ra"); } static void Index: man_validate.c =================================================================== RCS file: /cvs/mdocml/man_validate.c,v retrieving revision 1.130 diff -u -p -r1.130 man_validate.c --- man_validate.c 17 Jun 2017 22:43:14 -0000 1.130 +++ man_validate.c 23 Jun 2017 05:42:50 -0000 @@ -47,6 +47,7 @@ static void check_text(CHKARGS); static void post_AT(CHKARGS); static void post_IP(CHKARGS); +static void post_MT(CHKARGS); static void post_OP(CHKARGS); static void post_TH(CHKARGS); static void post_UC(CHKARGS); @@ -89,6 +90,8 @@ static const v_check __man_valids[MAN_MA NULL, /* EE */ post_UR, /* UR */ NULL, /* UE */ + post_MT, /* MT */ + NULL, /* ME */ }; static const v_check *man_valids = __man_valids - MAN_TH; @@ -211,6 +214,16 @@ post_UR(CHKARGS) if (n->type == ROFFT_HEAD && n->child == NULL) mandoc_vmsg(MANDOCERR_UR_NOHEAD, man->parse, n->line, n->pos, "UR"); + check_part(man, n); +} + +static void +post_MT(CHKARGS) +{ + + if (n->type == ROFFT_HEAD && n->child == NULL) + mandoc_vmsg(MANDOCERR_MT_NOHEAD, man->parse, + n->line, n->pos, "MT"); check_part(man, n); } Index: mandoc.1 =================================================================== RCS file: /cvs/mdocml/mandoc.1,v retrieving revision 1.201 diff -u -p -r1.201 mandoc.1 --- mandoc.1 17 Jun 2017 23:07:00 -0000 1.201 +++ mandoc.1 23 Jun 2017 05:42:50 -0000 @@ -1225,6 +1225,7 @@ A .Ic \&Bl , .Ic \&D1 , .Ic \&Dl , +.Ic \&MT , .Ic \&RS , or .Ic \&UR @@ -1363,6 +1364,12 @@ The .Ic \&UR macro is invoked without any argument. An empty pair of angle brackets is shown. +.It Sy "missing address, using \(dq\(dq" +.Pq man +The +.Ic \&MT +macro is invoked without any argument. +An empty pair of angle brackets is shown. .It Sy "missing eqn box, using \(dq\(dq" .Pq eqn A diacritic mark or a binary operator is found, @@ -1712,7 +1719,7 @@ An .Xr mdoc 7 block closing macro, a .Xr man 7 -.Ic \&RE +.Ic \&MT , \&RE or .Ic \&UE macro, an @@ -1746,7 +1753,7 @@ At the end of the document, an explicit block, a .Xr man 7 next-line scope or -.Ic \&RS +.Ic \&MT , \&RS or .Ic \&UR block, an equation, table, or @@ -1918,6 +1925,7 @@ A macro or request is invoked with too m .Bl -dash -offset 2n -width 2n -compact .It .Ic \&Fo , +.Ic \&MT , .Ic \&PD , .Ic \&RS , .Ic \&UR , Index: mandoc.h =================================================================== RCS file: /cvs/mdocml/mandoc.h,v retrieving revision 1.232 diff -u -p -r1.232 mandoc.h --- mandoc.h 17 Jun 2017 23:07:00 -0000 1.232 +++ mandoc.h 23 Jun 2017 05:42:50 -0000 @@ -129,6 +129,7 @@ enum mandocerr { MANDOCERR_ARG_STD, /* missing -std argument, adding it: macro */ MANDOCERR_OP_EMPTY, /* missing option string, using "": OP */ MANDOCERR_UR_NOHEAD, /* missing resource identifier, using "": UR */ + MANDOCERR_MT_NOHEAD, /* missing address, using "": MT */ MANDOCERR_EQN_NOBOX, /* missing eqn box, using "": op */ /* related to bad arguments */ Index: read.c =================================================================== RCS file: /cvs/mdocml/read.c,v retrieving revision 1.178 diff -u -p -r1.178 read.c --- read.c 17 Jun 2017 23:07:00 -0000 1.178 +++ read.c 23 Jun 2017 05:42:50 -0000 @@ -171,6 +171,7 @@ static const char * const mandocerrs[MAN "missing -std argument, adding it", "missing option string, using \"\"", "missing resource identifier, using \"\"", + "missing address, using \"\"", "missing eqn box, using \"\"", /* related to bad macro arguments */ Index: roff.c =================================================================== RCS file: /cvs/mdocml/roff.c,v retrieving revision 1.315 diff -u -p -r1.315 roff.c --- roff.c 18 Jun 2017 17:36:03 -0000 1.315 +++ roff.c 23 Jun 2017 05:42:50 -0000 @@ -330,7 +330,7 @@ const char *__roff_name[MAN_MAX + 1] = { "RE", "RS", "DT", "UC", "PD", "AT", "in", "OP", "EX", "EE", "UR", - "UE", NULL + "UE", "MT", "ME", NULL }; const char *const *roff_name = __roff_name; Index: roff.h =================================================================== RCS file: /cvs/mdocml/roff.h,v retrieving revision 1.55 diff -u -p -r1.55 roff.h --- roff.h 17 Jun 2017 22:43:15 -0000 1.55 +++ roff.h 23 Jun 2017 05:42:50 -0000 @@ -473,6 +473,8 @@ enum roff_tok { MAN_EE, MAN_UR, MAN_UE, + MAN_MT, + MAN_ME, MAN_MAX }; -- To unsubscribe send an email to tech+unsubscribe@mdocml.bsd.lv