From fcbe793d025db68e7ee4b92f10e086ba9e95fc8a Mon Sep 17 00:00:00 2001 From: June McEnroe Date: Mon, 8 Oct 2018 17:50:15 -0400 Subject: Use wchar_t in ttpre --- bin/ttpre.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) (limited to 'bin') diff --git a/bin/ttpre.c b/bin/ttpre.c index 85654d4b..e6be5d34 100644 --- a/bin/ttpre.c +++ b/bin/ttpre.c @@ -14,41 +14,44 @@ * along with this program. If not, see . */ +#include #include #include #include +#include -static void put(const char *tag, char ch) { +static void put(const char *tag, wchar_t ch) { if (tag) printf("<%s>", tag); switch (ch) { - break; case '&': printf("&"); - break; case '<': printf("<"); - break; case '>': printf(">"); - break; default: printf("%c", ch); + break; case L'&': printf("&"); + break; case L'<': printf("<"); + break; case L'>': printf(">"); + break; default: printf("%lc", ch); } if (tag) printf("", tag); } -static void push(char ch) { - static char q[3]; - if (q[1] == '\b' && q[0] == '_') { +static void push(wchar_t ch) { + static wchar_t q[3]; + if (q[1] == L'\b' && q[0] == L'_') { put("i", q[2]); - memset(q, 0, 3); - } else if (q[1] == '\b' && q[0] == q[2]) { + memset(q, 0, sizeof(q)); + } else if (q[1] == L'\b' && q[0] == q[2]) { put("b", q[2]); - memset(q, 0, 3); + memset(q, 0, sizeof(q)); } else if (q[0]) { put(NULL, q[0]); } - memmove(q, &q[1], 2); + memmove(q, &q[1], sizeof(q) - sizeof(wchar_t)); q[2] = ch; } int main() { + setlocale(LC_CTYPE, ""); printf("
");
-	char ch;
-	while (EOF != (ch = getchar_unlocked())) push(ch);
-	push('\0'); push('\0'); push('\0');
+	wchar_t ch;
+	while (WEOF != (ch = getwchar())) push(ch);
+	push(0); push(0); push(0);
 	printf("
\n"); return EXIT_SUCCESS; } -- cgit 1.4.1