=================================================================== RCS file: /cvs/mandoc/tbl_layout.c,v retrieving revision 1.5 retrieving revision 1.10 diff -u -p -r1.5 -r1.10 --- mandoc/tbl_layout.c 2011/01/01 22:19:15 1.5 +++ mandoc/tbl_layout.c 2011/01/04 23:48:39 1.10 @@ -1,4 +1,4 @@ -/* $Id: tbl_layout.c,v 1.5 2011/01/01 22:19:15 kristaps Exp $ */ +/* $Id: tbl_layout.c,v 1.10 2011/01/04 23:48:39 schwarze Exp $ */ /* * Copyright (c) 2009, 2010 Kristaps Dzonsons * @@ -45,18 +45,18 @@ static const struct tbl_phrase keys[KEYS_MAX] = { { '|', TBL_CELL_VERT } }; -static int mods(struct tbl *, struct tbl_cell *, +static int mods(struct tbl_node *, struct tbl_cell *, int, const char *, int *); -static int cell(struct tbl *, struct tbl_row *, +static int cell(struct tbl_node *, struct tbl_row *, int, const char *, int *); -static void row(struct tbl *, int, const char *, int *); -static struct tbl_cell *cell_alloc(struct tbl *, +static void row(struct tbl_node *, int, const char *, int *); +static struct tbl_cell *cell_alloc(struct tbl_node *, struct tbl_row *, enum tbl_cellt); static void head_adjust(const struct tbl_cell *, struct tbl_head *); static int -mods(struct tbl *tbl, struct tbl_cell *cp, +mods(struct tbl_node *tbl, struct tbl_cell *cp, int ln, const char *p, int *pos) { char buf[5]; @@ -126,6 +126,8 @@ mod: case ('d'): cp->flags |= TBL_CELL_BALIGN; goto mod; + case ('w'): /* XXX for now, ignore minimal column width */ + goto mod; case ('f'): break; case ('b'): @@ -154,7 +156,7 @@ mod: } static int -cell(struct tbl *tbl, struct tbl_row *rp, +cell(struct tbl_node *tbl, struct tbl_row *rp, int ln, const char *p, int *pos) { int i; @@ -197,7 +199,7 @@ cell(struct tbl *tbl, struct tbl_row *rp, static void -row(struct tbl *tbl, int ln, const char *p, int *pos) +row(struct tbl_node *tbl, int ln, const char *p, int *pos) { struct tbl_row *rp; @@ -248,7 +250,7 @@ cell: } int -tbl_layout(struct tbl *tbl, int ln, const char *p) +tbl_layout(struct tbl_node *tbl, int ln, const char *p) { int pos; @@ -260,7 +262,7 @@ tbl_layout(struct tbl *tbl, int ln, const char *p) } static struct tbl_cell * -cell_alloc(struct tbl *tbl, struct tbl_row *rp, enum tbl_cellt pos) +cell_alloc(struct tbl_node *tbl, struct tbl_row *rp, enum tbl_cellt pos) { struct tbl_cell *p, *pp; struct tbl_head *h, *hp; @@ -294,7 +296,7 @@ cell_alloc(struct tbl *tbl, struct tbl_row *rp, enum t * ones. */ - h = pp ? pp->head->prev : tbl->first_head; + h = pp ? pp->head->next : tbl->first_head; if (h) { /* Re-use data header. */ @@ -319,9 +321,12 @@ cell_alloc(struct tbl *tbl, struct tbl_row *rp, enum t (TBL_CELL_VERT == p->pos || TBL_CELL_DVERT == p->pos)) { hp = mandoc_calloc(1, sizeof(struct tbl_head)); + hp->ident = tbl->opts.cols++; hp->prev = h->prev; if (h->prev) h->prev->next = hp; + if (h == tbl->first_head) + tbl->first_head = hp; h->prev = hp; hp->next = h; head_adjust(p, hp); @@ -339,6 +344,7 @@ cell_alloc(struct tbl *tbl, struct tbl_row *rp, enum t } hp = mandoc_calloc(1, sizeof(struct tbl_head)); + hp->ident = tbl->opts.cols++; if (tbl->last_head) { hp->prev = tbl->last_head;