1/* $NetBSD: iconv.h,v 1.10 2010/12/17 13:05:29 pooka Exp $ */
2
3/*
4 * Copyright (c) 2000-2001, Boris Popov
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 * 3. All advertising materials mentioning features or use of this software
16 * must display the following acknowledgement:
17 * This product includes software developed by Boris Popov.
18 * 4. Neither the name of the author nor the names of any co-contributors
19 * may be used to endorse or promote products derived from this software
20 * without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE.
33 *
34 * $FreeBSD: src/sys/sys/iconv.h,v 1.5 2002/07/15 13:34:50 markm Exp $
35 */
36#ifndef _NETSMB_ICONV_H_
37#define _NETSMB_ICONV_H_
38
39#define ICONV_CSNMAXLEN 31 /* maximum length of charset name */
40#define ICONV_CNVNMAXLEN 31 /* maximum length of converter name */
41#define ICONV_CSMAXDATALEN 1024 /* maximum size of data associated with cs pair */
42
43/*
44 * Entry for cslist sysctl
45 */
46#define ICONV_CSPAIR_INFO_VER 1
47
48struct iconv_cspair_info {
49 int cs_version;
50 int cs_id;
51 int cs_base;
52 int cs_refcount;
53 char cs_to[ICONV_CSNMAXLEN];
54 char cs_from[ICONV_CSNMAXLEN];
55};
56
57/*
58 * Parameters for 'add' sysctl
59 */
60#define ICONV_ADD_VER 1
61
62struct iconv_add_in {
63 int ia_version;
64 char ia_converter[ICONV_CNVNMAXLEN];
65 char ia_to[ICONV_CSNMAXLEN];
66 char ia_from[ICONV_CSNMAXLEN];
67 int ia_datalen;
68 const void *ia_data;
69};
70
71struct iconv_add_out {
72 int ia_csid;
73};
74
75#ifndef _KERNEL
76
77__BEGIN_DECLS
78
79int kiconv_add_xlat_table(const char *, const char *, const u_char *);
80
81__END_DECLS
82
83#else /* !_KERNEL */
84
85
86#ifdef MALLOC_DECLARE
87MALLOC_DECLARE(M_ICONV);
88#endif
89
90/*
91 * Basic conversion functions
92 */
93int iconv_open(const char *, const char *, void **);
94int iconv_close(void *);
95int iconv_conv(void *, const char **, size_t *, char **, size_t *);
96char *iconv_convstr(void *, char *, const char *, size_t);
97void *iconv_convmem(void *, void *, const void *, int);
98
99/*
100 * Internal functions
101 */
102int iconv_lookupcp(const char **, const char *);
103
104
105#ifdef ICONV_DEBUG
106#define ICDEBUG(x) aprint_debug x
107#else
108#define ICDEBUG(x) /* nothing */
109#endif
110
111#endif /* !_KERNEL */
112
113#endif /* !_NETSMB_ICONV_H_ */
114