+++ /dev/null
-/*
-** Copyright 2000 Double Precision, Inc.
-** See COPYING for distribution information.
-**
-** $Id: utf8_chset.c,v 1.5 2004/05/23 14:28:25 mrsam Exp $
-*/
-
-#include "unicode.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/*
-** UTF8.toupper/tolower/totitle is implemented by converting UTF8 to
-** UCS-4, applying the unicode table lookup, then converting it back to
-** UTF8
-*/
-
-static char *toupper_func(const struct unicode_info *u,
- const char *cp, int *ip)
-{
- unicode_char *uc=unicode_utf8_tou(cp, ip), *p;
- char *s;
-
- if (!uc) return (0);
-
- for (p=uc; *p; p++)
- *p=unicode_uc(*p);
-
- s=unicode_utf8_fromu(uc, NULL);
- free(uc);
- return (s);
-}
-
-static char *tolower_func(const struct unicode_info *u,
- const char *cp, int *ip)
-{
- unicode_char *uc=unicode_utf8_tou(cp, ip), *p;
- char *s;
-
- if (!uc) return (0);
-
- for (p=uc; *p; p++)
- *p=unicode_lc(*p);
-
- s=unicode_utf8_fromu(uc, NULL);
- free(uc);
- return (s);
-}
-
-static char *totitle_func(const struct unicode_info *u,
- const char *cp, int *ip)
-{
- unicode_char *uc=unicode_utf8_tou(cp, ip), *p;
- char *s;
-
- if (!uc) return (0);
-
- for (p=uc; *p; p++)
- *p=unicode_tc(*p);
-
- s=unicode_utf8_fromu(uc, NULL);
- free(uc);
- return (s);
-}
-
-static unicode_char *tou(const struct unicode_info *i, const char *p,
- int *err)
-{
- return unicode_utf8_tou(p, err);
-}
-
-static char *fromu(const struct unicode_info *i, const unicode_char *p,
- int *err)
-{
- return unicode_utf8_fromu(p, err);
-}
-
-const struct unicode_info unicode_UTF8 = {
- "UTF-8",
- UNICODE_UTF | UNICODE_MB | UNICODE_USASCII | UNICODE_HEADER_QUOPRI
- | UNICODE_BODY_QUOPRI,
- tou,
- fromu,
- toupper_func,
- tolower_func,
- totitle_func};
-