summaryrefslogtreecommitdiff
path: root/ustring.c
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2004-04-21 18:07:26 +0000
committerSimon Tatham <anakin@pobox.com>2004-04-21 18:07:26 +0000
commita010160576d6f6eb269902fe0e26c53bd56d29b1 (patch)
tree03d0fa9aabe1e1f444fcb957bd9d361999e86bb8 /ustring.c
parentaa4e1956477f547f88e4a046e0b87b00bf4816cc (diff)
downloadhalibut-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.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/ustring.c b/ustring.c
index 169a377..11a022c 100644
--- a/ustring.c
+++ b/ustring.c
@@ -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;
+}