-/* $Id: term_ascii.c,v 1.16 2011/05/19 15:48:58 kristaps Exp $ */
+/* $Id: term_ascii.c,v 1.20 2011/12/04 23:10:52 schwarze Exp $ */
/*
- * Copyright (c) 2010 Kristaps Dzonsons <kristaps@bsd.lv>
+ * Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
static struct termp *
ascii_init(enum termenc enc, char *outopts)
{
- const char *toks[2];
+ const char *toks[4];
char *v;
struct termp *p;
p->letter = ascii_letter;
p->width = ascii_width;
-#if defined (USE_WCHAR)
- if (TERMENC_LOCALE == enc)
- if (setlocale(LC_ALL, "") && MB_CUR_MAX > 1) {
+#ifdef USE_WCHAR
+ if (TERMENC_ASCII != enc) {
+ v = TERMENC_LOCALE == enc ?
+ setlocale(LC_ALL, "") :
+ setlocale(LC_CTYPE, "UTF-8");
+ if (NULL != v && MB_CUR_MAX > 1) {
p->enc = enc;
p->advance = locale_advance;
p->endline = locale_endline;
p->letter = locale_letter;
p->width = locale_width;
}
+ }
#endif
- toks[0] = "width";
- toks[1] = NULL;
+ toks[0] = "indent";
+ toks[1] = "width";
+ toks[2] = "mdoc";
+ toks[3] = NULL;
while (outopts && *outopts)
switch (getsubopt(&outopts, UNCONST(toks), &v)) {
case (0):
+ p->defindent = (size_t)atoi(v);
+ break;
+ case (1):
p->defrmargin = (size_t)atoi(v);
break;
+ case (2):
+ /*
+ * Temporary, undocumented mode
+ * to imitate mdoc(7) output style.
+ */
+ p->mdocstyle = 1;
+ p->defindent = 5;
+ break;
default:
break;
}
return(ascii_init(TERMENC_ASCII, outopts));
}
+void *
+utf8_alloc(char *outopts)
+{
+
+ return(ascii_init(TERMENC_UTF8, outopts));
+}
+
+
void *
locale_alloc(char *outopts)
{