diff options
| author | Simon Tatham <anakin@pobox.com> | 2004-04-21 18:07:26 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2004-04-21 18:07:26 +0000 |
| commit | a010160576d6f6eb269902fe0e26c53bd56d29b1 (patch) | |
| tree | 03d0fa9aabe1e1f444fcb957bd9d361999e86bb8 /ustring.c | |
| parent | aa4e1956477f547f88e4a046e0b87b00bf4816cc (diff) | |
| download | halibut-a010160576d6f6eb269902fe0e26c53bd56d29b1.zip halibut-a010160576d6f6eb269902fe0e26c53bd56d29b1.tar.gz halibut-a010160576d6f6eb269902fe0e26c53bd56d29b1.tar.bz2 halibut-a010160576d6f6eb269902fe0e26c53bd56d29b1.tar.xz | |
Charset support for the info backend (\cfg{info-charset}). (This
checkin touches other files because a function in bk_text.c turned
out to be of more general use so I moved it out into ustring.c.)
[originally from svn r4111]
Diffstat (limited to 'ustring.c')
| -rw-r--r-- | ustring.c | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -314,3 +314,23 @@ wchar_t *ustrftime(wchar_t *wfmt, struct tm *timespec) { sfree(text); return wblk; } + +/* + * Determine whether a Unicode string can be translated into a + * given charset without any missing characters. + */ +int cvt_ok(int charset, const wchar_t *s) +{ + char buf[256]; + charset_state state = CHARSET_INIT_STATE; + int err, len = ustrlen(s); + + err = 0; + while (len > 0) { + (void)charset_from_unicode(&s, &len, buf, lenof(buf), + charset, &state, &err); + if (err) + return FALSE; + } + return TRUE; +} |