1 /*
2  * wzdftpd - a modular and cool ftp server
3  * Copyright (C) 2002-2004  Pierre Chifflier
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18  *
19  * As a special exemption, Pierre Chifflier
20  * and other respective copyright holders give permission to link this program
21  * with OpenSSL, and distribute the resulting executable, without including
22  * the source code for OpenSSL in the source distribution.
23  */
24 
25 #ifndef __WZD_UTF8__
26 #define __WZD_UTF8__
27 
28 /** \file wzd_utf8.h
29  * \brief Functions operating on Unicode characters and UTF-8 strings.
30  */
31 
32 /** Detect if system is UTF-8 capable
33  */
34 void utf8_detect(wzd_config_t * config);
35 
36 /** Disable UTF-8 support, and free all memory used for unicode.
37  */
38 void utf8_end(wzd_config_t * config);
39 
40 const char * charset_detect_local(void);
41 
42 const char * local_charset(void);
43 
44 int local_charset_to_utf8(const char *src, char *dst_utf8, size_t max_len, const char *local_charset);
45 
46 int utf8_to_local_charset(const char *src_utf8, char *dst, size_t max_len, const char *local_charset);
47 
48 
49 /** \brief Valid UTF-8 check
50  *
51  * taken from RFC2640, adapted to remove warnings :)
52  * Checks if a byte sequence is valid UTF-8.
53  *
54  * \return 1 if input string is valid UTF-8, else 0
55  */
56 int utf8_valid(const char *buf, size_t len);
57 
58 #endif /* __WZD_UTF8__ */
59