]> git.cameronkatri.com Git - mandoc.git/commitdiff
Flip on -Tutf8 backend support. This forces the UTF-8 LC_CTYPE and does
authorKristaps Dzonsons <kristaps@bsd.lv>
Fri, 20 May 2011 15:48:22 +0000 (15:48 +0000)
committerKristaps Dzonsons <kristaps@bsd.lv>
Fri, 20 May 2011 15:48:22 +0000 (15:48 +0000)
little else.  Also remove the check for __STDC_ISO_10646__.  It turns
out that very few systems---even those that support it---actually
declare this and it's just causing problems instead of being useful.

main.h
term.h
term_ascii.c

diff --git a/main.h b/main.h
index 75637b36b5f29adf5f8949b9b2d9de255ee4b43e..07b9e879fae8599476f6e5a1e03d28890b853018 100644 (file)
--- a/main.h
+++ b/main.h
@@ -1,4 +1,4 @@
-/*     $Id: main.h,v 1.11 2011/05/17 14:38:34 kristaps Exp $ */
+/*     $Id: main.h,v 1.12 2011/05/20 15:48:22 kristaps Exp $ */
 /*
  * Copyright (c) 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
  *
@@ -42,6 +42,7 @@ void            tree_mdoc(void *, const struct mdoc *);
 void             tree_man(void *, const struct man *);
 
 void            *locale_alloc(char *);
+void            *utf8_alloc(char *);
 void            *ascii_alloc(char *);
 void             ascii_free(void *);
 
diff --git a/term.h b/term.h
index dc3945ec20b17988e806ed93f6fc7c26843117a4..130024de6ce6ac5cf0a74aaaef8ea90938c58428 100644 (file)
--- a/term.h
+++ b/term.h
@@ -1,4 +1,4 @@
-/*     $Id: term.h,v 1.84 2011/05/17 14:38:34 kristaps Exp $ */
+/*     $Id: term.h,v 1.85 2011/05/20 15:48:22 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
  *
@@ -23,7 +23,8 @@ struct        termp;
 
 enum   termenc {
        TERMENC_ASCII,
-       TERMENC_LOCALE
+       TERMENC_LOCALE,
+       TERMENC_UTF8
 };
 
 enum   termtype {
index 3b4ca241196dc1582f038cd8f2cc662775e89a28..e65f590a712b7b012952d9fff8e39609d26341ae 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: term_ascii.c,v 1.16 2011/05/19 15:48:58 kristaps Exp $ */
+/*     $Id: term_ascii.c,v 1.17 2011/05/20 15:48:22 kristaps Exp $ */
 /*
  * Copyright (c) 2010 Kristaps Dzonsons <kristaps@bsd.lv>
  *
@@ -89,15 +89,19 @@ ascii_init(enum termenc enc, char *outopts)
        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";
@@ -126,6 +130,14 @@ ascii_alloc(char *outopts)
        return(ascii_init(TERMENC_ASCII, outopts));
 }
 
+void *
+utf8_alloc(char *outopts)
+{
+
+       return(ascii_init(TERMENC_UTF8, outopts));
+}
+
+
 void *
 locale_alloc(char *outopts)
 {