X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/charset/blobdiff_plain/38558cf145aa6e1de02c28b533c5c539b3f65e84..HEAD:/confuse.c diff --git a/confuse.c b/confuse.c index 207c5b9..21005cf 100644 --- a/confuse.c +++ b/confuse.c @@ -11,6 +11,7 @@ #include #include #include +#include #include "charset.h" @@ -24,6 +25,8 @@ int main(int argc, char **argv) int i, j, k, cs; const char *sep; + setlocale(LC_ALL, ""); + chars = malloc(argc * sizeof(wchar_t)); if (!chars) { fprintf(stderr, "out of memory\n"); @@ -37,6 +40,7 @@ int main(int argc, char **argv) char *orig = p; char *end; int base = 16, semi_ok = 0; + wchar_t ch; if ((p[0] == 'U' || p[0] == 'u') && (p[1] == '-' || p[1] == '+')) { @@ -50,6 +54,9 @@ int main(int argc, char **argv) else base = 10; semi_ok = 1; + } else if (mbtowc(&ch, p, strlen(p)) == strlen(p)) { + chars[nchars++] = ch; + continue; } chars[nchars++] = strtoul(p, &end, base);