From 131c1facdcd489bdadc435c8b52a339b53475bc3 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Wed, 21 Jan 2015 00:47:04 +0000 Subject: blank lines in tables do not need special handling; simplifies code and reduces groff/mandoc differences in OpenBSD base by about 1% --- libroff.h | 2 +- tbl.c | 7 ++----- tbl_data.c | 34 ++++++++++++---------------------- 3 files changed, 15 insertions(+), 28 deletions(-) diff --git a/libroff.h b/libroff.h index 18dd23a6..a56de1bf 100644 --- a/libroff.h +++ b/libroff.h @@ -71,7 +71,7 @@ void tbl_reset(struct tbl_node *); enum rofferr tbl_read(struct tbl_node *, int, const char *, int); void tbl_option(struct tbl_node *, int, const char *); void tbl_layout(struct tbl_node *, int, const char *); -int tbl_data(struct tbl_node *, int, const char *); +void tbl_data(struct tbl_node *, int, const char *); int tbl_cdata(struct tbl_node *, int, const char *); const struct tbl_span *tbl_span(struct tbl_node *); void tbl_end(struct tbl_node **); diff --git a/tbl.c b/tbl.c index dc8752c9..ffccbb52 100644 --- a/tbl.c +++ b/tbl.c @@ -66,11 +66,8 @@ tbl_read(struct tbl_node *tbl, int ln, const char *p, int offs) break; } - /* - * This only returns zero if the line is empty, so we ignore it - * and continue on. - */ - return(tbl_data(tbl, ln, p) ? ROFF_TBL : ROFF_IGN); + tbl_data(tbl, ln, p); + return(ROFF_TBL); } struct tbl_node * diff --git a/tbl_data.c b/tbl_data.c index da4b11b7..33a91e86 100644 --- a/tbl_data.c +++ b/tbl_data.c @@ -30,13 +30,13 @@ #include "libmandoc.h" #include "libroff.h" -static int getdata(struct tbl_node *, struct tbl_span *, +static void getdata(struct tbl_node *, struct tbl_span *, int, const char *, int *); static struct tbl_span *newspan(struct tbl_node *, int, struct tbl_row *); -static int +static void getdata(struct tbl_node *tbl, struct tbl_span *dp, int ln, const char *p, int *pos) { @@ -69,7 +69,7 @@ getdata(struct tbl_node *tbl, struct tbl_span *dp, /* Skip to the end... */ while (p[*pos]) (*pos)++; - return(1); + return; } dat = mandoc_calloc(1, sizeof(struct tbl_dat)); @@ -104,7 +104,7 @@ getdata(struct tbl_node *tbl, struct tbl_span *dp, if (*pos - sv == 2 && 'T' == p[sv] && '{' == p[sv + 1]) { tbl->part = TBL_PART_CDATA; - return(1); + return; } assert(*pos - sv >= 0); @@ -134,7 +134,7 @@ getdata(struct tbl_node *tbl, struct tbl_span *dp, mandoc_msg(MANDOCERR_TBLIGNDATA, tbl->parse, ln, sv, NULL); - return(1); + return; } int @@ -153,7 +153,8 @@ tbl_cdata(struct tbl_node *tbl, int ln, const char *p) if (p[pos] == tbl->opts.tab) { tbl->part = TBL_PART_DATA; pos++; - return(getdata(tbl, tbl->last_span, ln, p, &pos)); + getdata(tbl, tbl->last_span, ln, p, &pos); + return(1); } else if ('\0' == p[pos]) { tbl->part = TBL_PART_DATA; return(1); @@ -202,20 +203,13 @@ newspan(struct tbl_node *tbl, int line, struct tbl_row *rp) return(dp); } -int +void tbl_data(struct tbl_node *tbl, int ln, const char *p) { struct tbl_span *dp; struct tbl_row *rp; int pos; - pos = 0; - - if ('\0' == p[pos]) { - mandoc_msg(MANDOCERR_TBL, tbl->parse, ln, pos, NULL); - return(0); - } - /* * Choose a layout row: take the one following the last parsed * span's. If that doesn't exist, use the last parsed span's. @@ -257,19 +251,15 @@ tbl_data(struct tbl_node *tbl, int ln, const char *p) if ( ! strcmp(p, "_")) { dp->pos = TBL_SPAN_HORIZ; - return(1); + return; } else if ( ! strcmp(p, "=")) { dp->pos = TBL_SPAN_DHORIZ; - return(1); + return; } dp->pos = TBL_SPAN_DATA; - /* This returns 0 when TBL_PART_CDATA is entered. */ - + pos = 0; while ('\0' != p[pos]) - if ( ! getdata(tbl, dp, ln, p, &pos)) - return(0); - - return(1); + getdata(tbl, dp, ln, p, &pos); } -- cgit