1*549b59edSchristos /* $NetBSD: ldap_utf8.h,v 1.3 2021/08/14 16:14:55 christos Exp $ */ 24e6df137Slukem 3d11b170bStron /* $OpenLDAP$ */ 42de962bdSlukem /* This work is part of OpenLDAP Software <http://www.openldap.org/>. 52de962bdSlukem * 6*549b59edSchristos * Copyright 1998-2021 The OpenLDAP Foundation. 72de962bdSlukem * All rights reserved. 82de962bdSlukem * 92de962bdSlukem * Redistribution and use in source and binary forms, with or without 102de962bdSlukem * modification, are permitted only as authorized by the OpenLDAP 112de962bdSlukem * Public License. 122de962bdSlukem * 132de962bdSlukem * A copy of this license is available in file LICENSE in the 142de962bdSlukem * top-level directory of the distribution or, alternatively, at 152de962bdSlukem * <http://www.OpenLDAP.org/license.html>. 162de962bdSlukem */ 172de962bdSlukem /* This notice applies to changes, created by or for Novell, Inc., 182de962bdSlukem * to preexisting works for which notices appear elsewhere in this file. 192de962bdSlukem * 202de962bdSlukem * Copyright (C) 2000 Novell, Inc. All Rights Reserved. 212de962bdSlukem * 222de962bdSlukem * THIS WORK IS SUBJECT TO U.S. AND INTERNATIONAL COPYRIGHT LAWS AND TREATIES. 232de962bdSlukem * USE, MODIFICATION, AND REDISTRIBUTION OF THIS WORK IS SUBJECT TO VERSION 242de962bdSlukem * 2.0.1 OF THE OPENLDAP PUBLIC LICENSE, A COPY OF WHICH IS AVAILABLE AT 252de962bdSlukem * HTTP://WWW.OPENLDAP.ORG/LICENSE.HTML OR IN THE FILE "LICENSE" IN THE 262de962bdSlukem * TOP-LEVEL DIRECTORY OF THE DISTRIBUTION. ANY USE OR EXPLOITATION OF THIS 272de962bdSlukem * WORK OTHER THAN AS AUTHORIZED IN VERSION 2.0.1 OF THE OPENLDAP PUBLIC 282de962bdSlukem * LICENSE, OR OTHER PRIOR WRITTEN CONSENT FROM NOVELL, COULD SUBJECT THE 292de962bdSlukem * PERPETRATOR TO CRIMINAL AND CIVIL LIABILITY. 302de962bdSlukem */ 312de962bdSlukem /* Note: A verbatim copy of version 2.0.1 of the OpenLDAP Public License 322de962bdSlukem * can be found in the file "build/LICENSE-2.0.1" in this distribution 332de962bdSlukem * of OpenLDAP Software. 342de962bdSlukem */ 352de962bdSlukem 362de962bdSlukem #ifndef _LDAP_UTF8_H 372de962bdSlukem #define _LDAP_UTF8_H 382de962bdSlukem 392de962bdSlukem #include <lber_types.h> /* get ber_*_t */ 402de962bdSlukem 412de962bdSlukem /* 422de962bdSlukem * UTF-8 Utility Routines 432de962bdSlukem */ 442de962bdSlukem 452de962bdSlukem LDAP_BEGIN_DECL 462de962bdSlukem 472de962bdSlukem #define LDAP_UCS4_INVALID (0x80000000U) 482de962bdSlukem typedef ber_int_t ldap_ucs4_t; 492de962bdSlukem 502de962bdSlukem 512de962bdSlukem /* LDAP_MAX_UTF8_LEN is 3 or 6 depending on size of wchar_t */ 522de962bdSlukem #define LDAP_MAX_UTF8_LEN ( sizeof(wchar_t) * 3/2 ) 532de962bdSlukem 542de962bdSlukem /* Unicode conversion routines */ 552de962bdSlukem LDAP_F( ldap_ucs4_t ) ldap_x_utf8_to_ucs4( LDAP_CONST char * p ); 562de962bdSlukem LDAP_F( int ) ldap_x_ucs4_to_utf8( ldap_ucs4_t c, char *buf ); 572de962bdSlukem 582de962bdSlukem 592de962bdSlukem /* 602de962bdSlukem * Wide Char / UTF-8 Conversion Routines 612de962bdSlukem */ 622de962bdSlukem 632de962bdSlukem /* UTF-8 character to Wide Char */ 642de962bdSlukem LDAP_F(int) ldap_x_utf8_to_wc LDAP_P(( 652de962bdSlukem wchar_t *wchar, LDAP_CONST char *utf8char )); 662de962bdSlukem 672de962bdSlukem /* UTF-8 string to Wide Char string */ 682de962bdSlukem LDAP_F(int) ldap_x_utf8s_to_wcs LDAP_P(( 692de962bdSlukem wchar_t *wcstr, LDAP_CONST char *utf8str, size_t count )); 702de962bdSlukem 712de962bdSlukem /* Wide Char to UTF-8 character */ 722de962bdSlukem LDAP_F(int) ldap_x_wc_to_utf8 LDAP_P(( 732de962bdSlukem char *utf8char, wchar_t wchar, size_t count )); 742de962bdSlukem 752de962bdSlukem /* Wide Char string to UTF-8 string */ 762de962bdSlukem LDAP_F(int) ldap_x_wcs_to_utf8s LDAP_P(( 772de962bdSlukem char *utf8str, LDAP_CONST wchar_t *wcstr, size_t count )); 782de962bdSlukem 792de962bdSlukem /* 802de962bdSlukem * MultiByte Char / UTF-8 Conversion Routines 812de962bdSlukem */ 822de962bdSlukem 832de962bdSlukem /* UTF-8 character to MultiByte character */ 842de962bdSlukem LDAP_F(int) ldap_x_utf8_to_mb LDAP_P(( 852de962bdSlukem char *mbchar, LDAP_CONST char *utf8char, 862de962bdSlukem int (*ldap_f_wctomb)( char *mbchar, wchar_t wchar ))); 872de962bdSlukem 882de962bdSlukem /* UTF-8 string to MultiByte string */ 892de962bdSlukem LDAP_F(int) ldap_x_utf8s_to_mbs LDAP_P(( 902de962bdSlukem char *mbstr, LDAP_CONST char *utf8str, size_t count, 912de962bdSlukem size_t (*ldap_f_wcstombs)( char *mbstr, 922de962bdSlukem LDAP_CONST wchar_t *wcstr, size_t count) )); 932de962bdSlukem 942de962bdSlukem /* MultiByte character to UTF-8 character */ 952de962bdSlukem LDAP_F(int) ldap_x_mb_to_utf8 LDAP_P(( 962de962bdSlukem char *utf8char, LDAP_CONST char *mbchar, size_t mbsize, 972de962bdSlukem int (*ldap_f_mbtowc)( wchar_t *wchar, 982de962bdSlukem LDAP_CONST char *mbchar, size_t count) )); 992de962bdSlukem 1002de962bdSlukem /* MultiByte string to UTF-8 string */ 1012de962bdSlukem LDAP_F(int) ldap_x_mbs_to_utf8s LDAP_P(( 1022de962bdSlukem char *utf8str, LDAP_CONST char *mbstr, size_t count, 1032de962bdSlukem size_t (*ldap_f_mbstowcs)( wchar_t *wcstr, 1042de962bdSlukem LDAP_CONST char *mbstr, size_t count) )); 1052de962bdSlukem 1062de962bdSlukem LDAP_END_DECL 1072de962bdSlukem 1082de962bdSlukem #endif /* _LDAP_UTF8_H */ 109