1091b8336SPeter Wemm /*-
2*4d846d26SWarner Losh * SPDX-License-Identifier: BSD-2-Clause
3d915a14eSPedro F. Giffuni *
4091b8336SPeter Wemm * Copyright (c) 2013 Peter Wemm
5091b8336SPeter Wemm * All rights reserved.
6091b8336SPeter Wemm *
7091b8336SPeter Wemm * Redistribution and use in source and binary forms, with or without
8091b8336SPeter Wemm * modification, are permitted provided that the following conditions
9091b8336SPeter Wemm * are met:
10091b8336SPeter Wemm * 1. Redistributions of source code must retain the above copyright
11091b8336SPeter Wemm * notice, this list of conditions and the following disclaimer.
12091b8336SPeter Wemm * 2. Redistributions in binary form must reproduce the above copyright
13091b8336SPeter Wemm * notice, this list of conditions and the following disclaimer in the
14091b8336SPeter Wemm * documentation and/or other materials provided with the distribution.
15091b8336SPeter Wemm *
16091b8336SPeter Wemm * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17091b8336SPeter Wemm * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18091b8336SPeter Wemm * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19091b8336SPeter Wemm * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20091b8336SPeter Wemm * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21091b8336SPeter Wemm * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22091b8336SPeter Wemm * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23091b8336SPeter Wemm * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24091b8336SPeter Wemm * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25091b8336SPeter Wemm * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26091b8336SPeter Wemm * SUCH DAMAGE.
27091b8336SPeter Wemm */
28091b8336SPeter Wemm
29091b8336SPeter Wemm /*
30091b8336SPeter Wemm * These are ABI implementations for when the raw iconv_* symbol
31091b8336SPeter Wemm * space was exposed via libc.so.7 in its early life. This is
32091b8336SPeter Wemm * a transition aide, these wrappers will not normally ever be
33091b8336SPeter Wemm * executed except via __sym_compat() references.
34091b8336SPeter Wemm */
35091b8336SPeter Wemm #include <sys/types.h>
36091b8336SPeter Wemm #include <iconv.h>
37091b8336SPeter Wemm #include "iconv-internal.h"
38091b8336SPeter Wemm
39091b8336SPeter Wemm size_t
__iconv_compat(iconv_t a,char ** b,size_t * c,char ** d,size_t * e,__uint32_t f,size_t * g)401243a98eSTijl Coosemans __iconv_compat(iconv_t a, char ** b, size_t * c, char ** d,
41091b8336SPeter Wemm size_t * e, __uint32_t f, size_t *g)
42091b8336SPeter Wemm {
43091b8336SPeter Wemm return __bsd___iconv(a, b, c, d, e, f, g);
44091b8336SPeter Wemm }
45091b8336SPeter Wemm
46091b8336SPeter Wemm void
__iconv_free_list_compat(char ** a,size_t b)47091b8336SPeter Wemm __iconv_free_list_compat(char ** a, size_t b)
48091b8336SPeter Wemm {
49091b8336SPeter Wemm __bsd___iconv_free_list(a, b);
50091b8336SPeter Wemm }
51091b8336SPeter Wemm
52091b8336SPeter Wemm int
__iconv_get_list_compat(char *** a,size_t * b,__iconv_bool c)53091b8336SPeter Wemm __iconv_get_list_compat(char ***a, size_t *b, __iconv_bool c)
54091b8336SPeter Wemm {
55091b8336SPeter Wemm return __bsd___iconv_get_list(a, b, c);
56091b8336SPeter Wemm }
57091b8336SPeter Wemm
58091b8336SPeter Wemm size_t
iconv_compat(iconv_t a,char ** __restrict b,size_t * __restrict c,char ** __restrict d,size_t * __restrict e)591243a98eSTijl Coosemans iconv_compat(iconv_t a, char ** __restrict b,
60091b8336SPeter Wemm size_t * __restrict c, char ** __restrict d,
61091b8336SPeter Wemm size_t * __restrict e)
62091b8336SPeter Wemm {
63091b8336SPeter Wemm return __bsd_iconv(a, b, c, d, e);
64091b8336SPeter Wemm }
65091b8336SPeter Wemm
66091b8336SPeter Wemm const char *
iconv_canonicalize_compat(const char * a)67091b8336SPeter Wemm iconv_canonicalize_compat(const char *a)
68091b8336SPeter Wemm {
69091b8336SPeter Wemm return __bsd_iconv_canonicalize(a);
70091b8336SPeter Wemm }
71091b8336SPeter Wemm
72091b8336SPeter Wemm int
iconv_close_compat(iconv_t a)73091b8336SPeter Wemm iconv_close_compat(iconv_t a)
74091b8336SPeter Wemm {
75091b8336SPeter Wemm return __bsd_iconv_close(a);
76091b8336SPeter Wemm }
77091b8336SPeter Wemm
78091b8336SPeter Wemm iconv_t
iconv_open_compat(const char * a,const char * b)79091b8336SPeter Wemm iconv_open_compat(const char *a, const char *b)
80091b8336SPeter Wemm {
81091b8336SPeter Wemm return __bsd_iconv_open(a, b);
82091b8336SPeter Wemm }
83091b8336SPeter Wemm
84091b8336SPeter Wemm int
iconv_open_into_compat(const char * a,const char * b,iconv_allocation_t * c)85091b8336SPeter Wemm iconv_open_into_compat(const char *a, const char *b, iconv_allocation_t *c)
86091b8336SPeter Wemm {
87091b8336SPeter Wemm return __bsd_iconv_open_into(a, b, c);
88091b8336SPeter Wemm }
89091b8336SPeter Wemm
90091b8336SPeter Wemm void
iconv_set_relocation_prefix_compat(const char * a,const char * b)91091b8336SPeter Wemm iconv_set_relocation_prefix_compat(const char *a, const char *b)
92091b8336SPeter Wemm {
93091b8336SPeter Wemm return __bsd_iconv_set_relocation_prefix(a, b);
94091b8336SPeter Wemm }
95091b8336SPeter Wemm
96091b8336SPeter Wemm int
iconvctl_compat(iconv_t a,int b,void * c)97091b8336SPeter Wemm iconvctl_compat(iconv_t a, int b, void *c)
98091b8336SPeter Wemm {
99091b8336SPeter Wemm return __bsd_iconvctl(a, b, c);
100091b8336SPeter Wemm }
101091b8336SPeter Wemm
102091b8336SPeter Wemm void
iconvlist_compat(int (* a)(unsigned int,const char * const *,void *),void * b)103091b8336SPeter Wemm iconvlist_compat(int (*a) (unsigned int, const char * const *, void *), void *b)
104091b8336SPeter Wemm {
105091b8336SPeter Wemm return __bsd_iconvlist(a, b);
106091b8336SPeter Wemm }
107091b8336SPeter Wemm
108091b8336SPeter Wemm int _iconv_version_compat = 0x0108; /* Magic - not used */
109091b8336SPeter Wemm
110091b8336SPeter Wemm __sym_compat(__iconv, __iconv_compat, FBSD_1.2);
111091b8336SPeter Wemm __sym_compat(__iconv_free_list, __iconv_free_list_compat, FBSD_1.2);
112091b8336SPeter Wemm __sym_compat(__iconv_get_list, __iconv_get_list_compat, FBSD_1.2);
113091b8336SPeter Wemm __sym_compat(_iconv_version, _iconv_version_compat, FBSD_1.3);
114091b8336SPeter Wemm __sym_compat(iconv, iconv_compat, FBSD_1.3);
115091b8336SPeter Wemm __sym_compat(iconv_canonicalize, iconv_canonicalize_compat, FBSD_1.2);
116091b8336SPeter Wemm __sym_compat(iconv_close, iconv_close_compat, FBSD_1.3);
117091b8336SPeter Wemm __sym_compat(iconv_open, iconv_open_compat, FBSD_1.3);
118091b8336SPeter Wemm __sym_compat(iconv_open_into, iconv_open_into_compat, FBSD_1.3);
119091b8336SPeter Wemm __sym_compat(iconv_set_relocation_prefix, iconv_set_relocation_prefix_compat, FBSD_1.3);
120091b8336SPeter Wemm __sym_compat(iconvctl, iconvctl_compat, FBSD_1.3);
121091b8336SPeter Wemm __sym_compat(iconvlist, iconvlist_compat, FBSD_1.3);
122