xref: /freebsd/lib/libc/iconv/iconvctl.3 (revision a90b9d0159070121c221b966469c3e36d912bf82)
1.\" Copyright (c) 2009 Gabor Kovesdan <gabor@FreeBSD.org>
2.\" All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\"
13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23.\" SUCH DAMAGE.
24.\"
25.\" Portions of this text are reprinted and reproduced in electronic form
26.\" from IEEE Std 1003.1, 2004 Edition, Standard for Information Technology --
27.\" Portable Operating System Interface (POSIX), The Open Group Base
28.\" Specifications Issue 6, Copyright (C) 2001-2004 by the Institute of
29.\" Electrical and Electronics Engineers, Inc and The Open Group.  In the
30.\" event of any discrepancy between this version and the original IEEE and
31.\" The Open Group Standard, the original IEEE and The Open Group Standard is
32.\" the referee document.  The original Standard can be obtained online at
33.\"	http://www.opengroup.org/unix/online.html.
34.\"
35.Dd November 25, 2009
36.Dt ICONVCTL 3
37.Os
38.Sh NAME
39.Nm iconvctl
40.Nd controlling and diagnostical facility for
41.Xr iconv 3
42.Sh LIBRARY
43.Lb libc
44.Sh SYNOPSIS
45.In iconv.h
46.Ft int
47.Fn iconvctl "iconv_t cd" "int request" "void *argument"
48.Sh DESCRIPTION
49The
50.Fn iconvctl
51function can retrieve or set specific conversion
52setting from the
53.Fa cd
54conversion descriptor.
55The
56.Fa request
57parameter specifies the operation to accomplish and
58.Fa argument
59is an operation-specific argument.
60.Pp
61The possible operations are the following:
62.Bl -tag -width indent
63.It ICONV_TRIVIALP
64In this case
65.Fa argument
66is an
67.Ft int *
68variable, which is set to 1 if the encoding is trivial one, i.e.
69the input and output encodings are the same.
70Otherwise, the variable will be 0.
71.It ICONV_GET_TRANSLITERATE
72Determines if transliteration is enabled.
73The answer is stored in
74.Fa argument ,
75which is of
76.Ft int * .
77It will be set to 1 if this feature is enabled or set to 0 otherwise.
78.It ICONV_SET_TRANSLITERATE
79Enables transliteration if
80.Fa argument ,
81which is of
82.Ft int *
83set to 1 or disables it if
84.Fa argument
85is set to 0.
86.It ICONV_GET_DISCARD_ILSEQ
87Determines if illegal sequences are discarded or not.
88The answer is stored in
89.Fa argument ,
90which is of
91.Ft int * .
92It will be set to 1 if this feature is enabled or set to 0 otherwise.
93.It ICONV_SET_DISCARD_ILSEQ
94Sets whether illegal sequences are discarded or not.
95.Fa argument ,
96which is of
97.Ft int *
98set to 1 or disables it if
99.Fa argument
100is set to 0.
101.It ICONV_SET_HOOKS
102Sets callback functions, which will be called back after successful
103conversions.
104The callback functions are stored in a
105.Ft struct iconv_hooks
106variable, which is passed to
107.Nm
108via
109.Fa argument
110by its address.
111.It ICONV_GET_ILSEQ_INVALID
112Determines if a character in the input buffer that is valid,
113but for which an identical character does not exist in the target
114codeset returns
115.Er EILSEQ
116or not.
117The answer is stored in
118.Fa argument ,
119which is of
120.Ft int * .
121It will be set to 1 if this feature is enabled or set to 0 otherwise.
122.It ICONV_SET_ILSEQ_INVALID
123Sets whether a character in the input buffer that is valid,
124but for which an identical character does not exist in the target
125codeset returns
126.Er EILSEQ
127or not.
128If
129.Fa argument ,
130which is of
131.Ft int *
132is set to 1 it will be enabled,
133and if
134.Fa argument
135is set to 0 it will be disabled.
136.El
137.\" XXX: fallbacks are unimplemented and trying to set them will always
138.\"      return EOPNOTSUPP but definitions are provided for source-level
139.\"      compatibility.
140.\".It ICONV_SET_FALLBACKS
141.\"Sets callback functions, which will be called back after failed
142.\"conversions.
143.\"The callback functions are stored in a
144.\".Ft struct iconv_fallbacks
145.\"variable, which is passed to
146.\".Nm
147.\"via
148.\".Fa argument
149.\"by its address.
150.Sh RETURN VALUES
151Upon successful completion
152.Fn iconvctl ,
153returns 0.
154Otherwise, \-1 is returned and errno is set to
155specify the kind of error.
156.Sh ERRORS
157The
158.Fn iconvctl
159function may cause an error in the following cases:
160.Bl -tag -width Er
161.It Bq Er EINVAL
162Unknown or unimplemented operation.
163.It Bq Er EBADF
164The conversion descriptor specified by
165.Fa cd
166is invalid.
167.El
168.Sh SEE ALSO
169.Xr iconv 1 ,
170.Xr iconv 3
171.Sh STANDARDS
172The
173.Nm
174facility is a non-standard extension, which appeared in
175the GNU implementation and was adopted in
176.Fx 9.0
177for compatibility's sake.
178.Sh AUTHORS
179This manual page was written by
180.An Gabor Kovesdan Aq Mt gabor@FreeBSD.org .
181.Sh BUGS
182Transliteration is enabled in this implementation by default, so it
183is impossible by design to turn it off.
184Accordingly, trying to turn it off will always fail and \-1 will be
185returned.
186Getting the transliteration state will always succeed and indicate
187that it is turned on, though.
188