]> git.cameronkatri.com Git - mandoc.git/blobdiff - tbl_layout.c
Modernize an example showing antiquated syntax,
[mandoc.git] / tbl_layout.c
index dc745b33f2f0f26500374f98b3a1d4134167535a..c0eafbddbf05cdbfb0528644d470bf73597236d9 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: tbl_layout.c,v 1.37 2015/01/30 04:11:50 schwarze Exp $ */
+/*     $Id: tbl_layout.c,v 1.41 2015/10/12 00:08:16 schwarze Exp $ */
 /*
  * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2012, 2014, 2015 Ingo Schwarze <schwarze@openbsd.org>
@@ -97,12 +97,8 @@ mod:
 
        switch (tolower((unsigned char)p[(*pos)++])) {
        case 'b':
-               /* FALLTHROUGH */
-       case 'i':
-               /* FALLTHROUGH */
-       case 'r':
-               (*pos)--;
-               break;
+               cp->flags |= TBL_CELL_BOLD;
+               goto mod;
        case 'd':
                cp->flags |= TBL_CELL_BALIGN;
                goto mod;
@@ -111,12 +107,14 @@ mod:
                goto mod;
        case 'f':
                break;
+       case 'i':
+               cp->flags |= TBL_CELL_ITALIC;
+               goto mod;
        case 'm':
                mandoc_msg(MANDOCERR_TBLLAYOUT_MOD, tbl->parse,
                    ln, *pos, "m");
                goto mod;
        case 'p':
-               /* FALLTHROUGH */
        case 'v':
                if (p[*pos] == '-' || p[*pos] == '+')
                        (*pos)++;
@@ -150,20 +148,34 @@ mod:
                goto mod;
        }
 
-       switch (tolower((unsigned char)p[(*pos)++])) {
+       /* Ignore parenthised font names for now. */
+
+       if (p[*pos] == '(')
+               goto mod;
+
+       /* Support only one-character font-names for now. */
+
+       if (p[*pos] == '\0' || (p[*pos + 1] != ' ' && p[*pos + 1] != '.')) {
+               mandoc_vmsg(MANDOCERR_FT_BAD, tbl->parse,
+                   ln, *pos, "TS %s", p + *pos - 1);
+               if (p[*pos] != '\0')
+                       (*pos)++;
+               if (p[*pos] != '\0')
+                       (*pos)++;
+               goto mod;
+       }
+
+       switch (p[(*pos)++]) {
        case '3':
-               /* FALLTHROUGH */
-       case 'b':
+       case 'B':
                cp->flags |= TBL_CELL_BOLD;
                goto mod;
        case '2':
-               /* FALLTHROUGH */
-       case 'i':
+       case 'I':
                cp->flags |= TBL_CELL_ITALIC;
                goto mod;
        case '1':
-               /* FALLTHROUGH */
-       case 'r':
+       case 'R':
                goto mod;
        default:
                mandoc_vmsg(MANDOCERR_FT_BAD, tbl->parse,
@@ -292,6 +304,7 @@ tbl_layout(struct tbl_node *tbl, int ln, const char *p, int pos)
                                    rp->next->first == NULL) {
                                        free(rp->next);
                                        rp->next = NULL;
+                                       tbl->last_row = rp;
                                }
                        }
                        return;
@@ -338,5 +351,5 @@ cell_alloc(struct tbl_node *tbl, struct tbl_row *rp, enum tbl_cellt pos)
        if (tbl->opts.cols <= p->col)
                tbl->opts.cols = p->col + 1;
 
-       return(p);
+       return p;
 }