Tabs auto-converted to spaces.
-/* $Id: mdoc.h,v 1.35 2009/02/24 14:52:55 kristaps Exp $ */
+/* $Id: mdoc.h,v 1.36 2009/03/02 12:09:32 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
ATT_v6,
ATT_v7,
ATT_32v,
+ ATT_V,
ATT_V1,
ATT_V2,
ATT_V3,
-/* $Id: mdocterm.c,v 1.23 2009/03/01 23:23:55 kristaps Exp $ */
+/* $Id: mdocterm.c,v 1.24 2009/03/02 12:09:32 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
static void pword(struct termp *, const char *, size_t);
static void pescape(struct termp *,
const char *, size_t *, size_t);
+static void pgraph(struct termp *, char);
static void nescape(struct termp *,
const char *, size_t);
static void chara(struct termp *, char);
*
* If we're not breaking...
*
- * Don't let the visible size exceed the full margin.
+ * Don't let the visible size exceed the full right
+ * margin.
*/
if ( ! (TERMP_NOBREAK & p->flags)) {
vis = 0;
} else if (vis + vsz > maxvis)
errx(1, "word breaks right margin");
- } else if (vis + vsz > p->maxrmargin)
- errx(1, "word breaks right margin");
+ } else if (vis + vsz > p->maxrmargin - p->offset) {
+ putchar('\n');
+ for (j = 0; j < p->rmargin; j++)
+ putchar(' ');
+ vis = p->rmargin;
+ }
/*
* Write out the word and a trailing space. Omit the
}
+static void
+pgraph(struct termp *p, char byte)
+{
+ int i;
+
+ switch (byte) {
+ case (' '):
+ chara(p, ' ');
+ break;
+ case ('\t'):
+ for (i = 0; i < INDENT; i++)
+ chara(p, ' ');
+ break;
+ default:
+ warnx("unknown non-graphing character");
+ break;
+ }
+}
+
+
static void
pescape(struct termp *p, const char *word, size_t *i, size_t len)
{
pescape(p, word, &i, len);
continue;
}
+ if ( ! isgraph((int)word[i])) {
+ pgraph(p, word[i]);
+ continue;
+ }
chara(p, word[i]);
}
-/* $Id: strings.c,v 1.22 2009/02/27 10:55:16 kristaps Exp $ */
+/* $Id: strings.c,v 1.23 2009/03/02 12:09:32 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
(void)memset(&tm, 0, sizeof(struct tm));
- if (xstrcmp(p, "$Mdocdate: February 27 2009 $"))
+ if (xstrcmp(p, "$Mdocdate: March 2 2009 $"))
return(time(NULL));
- if ((pp = strptime(p, "$Mdocdate: February 27 2009 $", &tm)) && 0 == *pp)
+ if ((pp = strptime(p, "$Mdocdate: March 2 2009 $", &tm)) && 0 == *pp)
return(mktime(&tm));
/* XXX - this matches "June 1999", which is wrong. */
if ((pp = strptime(p, "%b %d %Y", &tm)) && 0 == *pp)
return(ATT_v7);
else if (0 == strcmp(p, "32v"))
return(ATT_32v);
+ else if (0 == strcmp(p, "V"))
+ return(ATT_V);
else if (0 == strcmp(p, "V.1"))
return(ATT_V1);
else if (0 == strcmp(p, "V.2"))
case(ATT_32v):
p = "Version 32V AT&T UNIX";
break;
+ case(ATT_V):
+ p = "AT&T System V UNIX";
+ break;
case(ATT_V1):
p = "AT&T System V.1 UNIX";
break;
-/* $Id: term.c,v 1.33 2009/03/01 23:27:14 kristaps Exp $ */
+/* $Id: term.c,v 1.34 2009/03/02 12:09:32 kristaps Exp $ */
/*
* Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
*
#include "term.h"
-#define INDENT 6
-
/*
* Performs actions on nodes of the abstract syntax tree. Both pre- and
* post-fix operations are defined here.
termp_ft_pre(DECL_ARGS)
{
+ if (SEC_SYNOPSIS == node->sec)
+ if (node->prev && MDOC_Fo == node->prev->tok)
+ vspace(p);
TERMPAIR_SETFLAG(p, pair, ttypes[TTYPE_FUNC_TYPE]);
return(1);
}
termp_ft_post(DECL_ARGS)
{
- if (node->sec == SEC_SYNOPSIS)
+ if (SEC_SYNOPSIS == node->sec)
newln(p);
}
termp_bx_post(DECL_ARGS)
{
- p->flags |= TERMP_NOSPACE;
+ if (node->child)
+ p->flags |= TERMP_NOSPACE;
word(p, "BSD");
}
-/* $Id: term.h,v 1.12 2009/03/01 13:06:49 kristaps Exp $ */
+/* $Id: term.h,v 1.13 2009/03/02 12:09:32 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
#include "mdoc.h"
+#define INDENT 6
+
__BEGIN_DECLS
struct termp {