"\003" "UTF-32LE" "\0"
"\006" "ASCII" "\0"
"\006" "US-ASCII" "\0"
+ "\006" "ISO646-US" "\0"
+ "\006" "ISO_646.IRV:1991" "\0"
+ "\006" "ISO-IR-6" "\0"
+ "\006" "ANSI_X3.4-1968" "\0"
+ "\006" "ANSI_X3.4-1986" "\0"
+ "\006" "CP367" "\0"
+ "\006" "IBM367" "\0"
+ "\006" "US" "\0"
+ "\006" "CSASCII" "\0"
"\007" "ISO-8859-1" "\0"
"\007" "LATIN1" "\0"
"\010" "ISO-8859-15""\0"
return -1;
}
-static inline char latin9_translit(wchar_t c)
+static inline wchar_t latin9_translit(wchar_t c)
{
/* a number of trivial iso-8859-15 <> utf-8 transliterations */
switch (c) {
case 0x0152: return 0xBC; /* OE */
case 0x0153: return 0xBD; /* oe */
case 0x0178: return 0xBE; /* Y diaeresis */
- default: return '?';
+ default: return 0xFFFD; /* cannot translate */
}
}
c = latin9_translit(c);
/* fall through */
case LATIN_1:
+ if (c > 0xff) goto ilseq;
if (!*outb) goto toobig;
- if (c < 0x100) **out = c;
- else x++, **out = '*'; //FIXME: translit?
+ **out = c;
++*out;
--*outb;
break;