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.\" $FreeBSD$ 36.\" 37.Dd November 25, 2009 38.Dt ICONVCTL 3 39.Os 40.Sh NAME 41.Nm iconvctl 42.Nd controlling and diagnostical facility for 43.Xr iconv 3 44.Sh LIBRARY 45.Lb libc 46.Sh SYNOPSIS 47.In iconv.h 48.Ft int 49.Fn iconvctl "iconv_t cd" "int request" "void *argument" 50.Sh DESCRIPTION 51The 52.Fn iconvctl 53function can retrieve or set specific conversion 54setting from the 55.Fa cd 56conversion descriptor. 57The 58.Fa request 59parameter specifies the operation to accomplish and 60.Fa argument 61is an operation-specific argument. 62.Pp 63The possible operations are the following: 64.Bl -tag -width indent 65.It ICONV_TRIVIALP 66In this case 67.Fa argument 68is an 69.Ft int * 70variable, which is set to 1 if the encoding is trivial one, i.e. 71the input and output encodings are the same. 72Otherwise, the variable will be 0. 73.It ICONV_GET_TRANSLITERATE 74Determines if transliteration is enabled. 75The answer is stored in 76.Fa argument , 77which is of 78.Ft int * . 79It will be set to 1 if this feature is enabled or set to 0 otherwise. 80.It ICONV_SET_TRANSLITERATE 81Enables transliteration if 82.Fa argument , 83which is of 84.Ft int * 85set to 1 or disables it if 86.Fa argument 87is set to 0. 88.It ICONV_GET_DISCARD_ILSEQ 89Determines if illegal sequences are discarded or not. 90The answer is stored in 91.Fa argument , 92which is of 93.Ft int * . 94It will be set to 1 if this feature is enabled or set to 0 otherwise. 95.It ICONV_SET_DISCARD_ILSEQ 96Sets whether illegal sequences are discarded or not. 97.Fa argument , 98which is of 99.Ft int * 100set to 1 or disables it if 101.Fa argument 102is set to 0. 103.It ICONV_SET_HOOKS 104Sets callback functions, which will be called back after successful 105conversions. 106The callback functions are stored in a 107.Ft struct iconv_hooks 108variable, which is passed to 109.Nm 110via 111.Fa argument 112by its address. 113.It ICONV_GET_ILSEQ_INVALID 114Determines if a character in the input buffer that is valid, 115but for which an identical character does not exist in the target 116codeset returns 117.Er EILSEQ 118or not. 119The answer is stored in 120.Fa argument , 121which is of 122.Ft int * . 123It will be set to 1 if this feature is enabled or set to 0 otherwise. 124.It ICONV_SET_ILSEQ_INVALID 125Sets whether a character in the input buffer that is valid, 126but for which an identical character does not exist in the target 127codeset returns 128.Er EILSEQ 129or not. 130If 131.Fa argument , 132which is of 133.Ft int * 134is set to 1 it will be enabled, 135and if 136.Fa argument 137is set to 0 it will be disabled. 138.El 139.\" XXX: fallbacks are unimplemented and trying to set them will always 140.\" return EOPNOTSUPP but definitions are provided for source-level 141.\" compatibility. 142.\".It ICONV_SET_FALLBACKS 143.\"Sets callback functions, which will be called back after failed 144.\"conversions. 145.\"The callback functions are stored in a 146.\".Ft struct iconv_fallbacks 147.\"variable, which is passed to 148.\".Nm 149.\"via 150.\".Fa argument 151.\"by its address. 152.Sh RETURN VALUES 153Upon successful completion 154.Fn iconvctl , 155returns 0. 156Otherwise, \-1 is returned and errno is set to 157specify the kind of error. 158.Sh ERRORS 159The 160.Fn iconvctl 161function may cause an error in the following cases: 162.Bl -tag -width Er 163.It Bq Er EINVAL 164Unknown or unimplemented operation. 165.It Bq Er EBADF 166The conversion descriptor specified by 167.Fa cd 168is invalid. 169.El 170.Sh SEE ALSO 171.Xr iconv 1 , 172.Xr iconv 3 173.Sh STANDARDS 174The 175.Nm 176facility is a non-standard extension, which appeared in 177the GNU implementation and was adopted in 178.Fx 9.0 179for compatibility's sake. 180.Sh AUTHORS 181This manual page was written by 182.An Gabor Kovesdan Aq Mt gabor@FreeBSD.org . 183.Sh BUGS 184Transliteration is enabled in this implementation by default, so it 185is impossible by design to turn it off. 186Accordingly, trying to turn it off will always fail and \-1 will be 187returned. 188Getting the transliteration state will always succeed and indicate 189that it is turned on, though. 190