=================================================================== RCS file: /cvs/texi2mdoc/util.c,v retrieving revision 1.23 retrieving revision 1.26 diff -u -p -r1.23 -r1.26 --- texi2mdoc/util.c 2015/03/02 18:12:53 1.23 +++ texi2mdoc/util.c 2015/03/05 08:35:35 1.26 @@ -1,4 +1,4 @@ -/* $Id: util.c,v 1.23 2015/03/02 18:12:53 kristaps Exp $ */ +/* $Id: util.c,v 1.26 2015/03/05 08:35:35 kristaps Exp $ */ /* * Copyright (c) 2015 Kristaps Dzonsons * @@ -100,6 +100,7 @@ texiexit(struct texi *p) free(p->dirs); free(p->subtitle); free(p->title); + free(p->copying); } /* @@ -480,7 +481,7 @@ texiexecmacro(struct texi *p, struct teximacro *m, siz * The "sv" value was initialised at the start of the macro. */ if (sv > 0) - if (++p->files[p->filepos].depth > 64) + if (++p->files[p->filepos - 1].depth > 64) texierr(p, "maximium recursive depth"); args = argparse(p, pos, &asz, m->argsz); @@ -569,10 +570,16 @@ static void parseword(struct texi *p, size_t *pos, char extra) { + /* + * Some line control: if we (non-macro, non-literal) already + * have more than 72 characters written to the screen, then + * output a newline before getting started. + */ if (p->seenws && 0 == p->outmacro && p->outcol > 72 && 0 == p->literal) texiputchar(p, '\n'); - /* FIXME: abstract this: we use it elsewhere. */ + + /* Usual padding in the case of seen whitespace. */ if (p->seenws && p->outcol && 0 == p->literal) texiputchar(p, ' '); @@ -601,6 +608,15 @@ parseword(struct texi *p, size_t *pos, char extra) texiputchar(p, BUF(p)[*pos]); advance(p, pos); } + + /* + * New sentence, new line:if we (non-macro, non-literal) see a + * period at the end of the last printed word, then open a + * newline. + */ + if (0 == p->literal && 0 == p->outmacro && + *pos < BUFSZ(p) && '.' == BUF(p)[*pos - 1]) + texiputchar(p, '\n'); } /*