blob: ff501ce8b326f8925dcf5948234cbdfd8a77b3ce [file] [log] [blame]
<html lang="en">
<head>
<title>Non-reentrant Conversion - The GNU C Library</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="The GNU C Library">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Character-Set-Handling.html#Character-Set-Handling" title="Character Set Handling">
<link rel="prev" href="Restartable-multibyte-conversion.html#Restartable-multibyte-conversion" title="Restartable multibyte conversion">
<link rel="next" href="Generic-Charset-Conversion.html#Generic-Charset-Conversion" title="Generic Charset Conversion">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU C library.
This is Edition 0.12, last updated 2007-10-27,
of `The GNU C Library Reference Manual', for version
2.8 (Sourcery G++ Lite 2011.03-41).
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
2003, 2007, 2008, 2010 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``Free Software Needs Free Documentation''
and ``GNU Lesser General Public License'', the Front-Cover texts being
``A GNU Manual'', and with the Back-Cover Texts as in (a) below. A
copy of the license is included in the section entitled "GNU Free
Documentation License".
(a) The FSF's Back-Cover Text is: ``You have the freedom to
copy and modify this GNU manual. Buying copies from the FSF
supports it in developing GNU and promoting software freedom.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Non-reentrant-Conversion"></a>
<a name="Non_002dreentrant-Conversion"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Generic-Charset-Conversion.html#Generic-Charset-Conversion">Generic Charset Conversion</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Restartable-multibyte-conversion.html#Restartable-multibyte-conversion">Restartable multibyte conversion</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Character-Set-Handling.html#Character-Set-Handling">Character Set Handling</a>
<hr>
</div>
<h3 class="section">6.4 Non-reentrant Conversion Function</h3>
<p>The functions described in the previous chapter are defined in
Amendment&nbsp;1<!-- /@w --> to ISO&nbsp;C90<!-- /@w -->, but the original ISO&nbsp;C90<!-- /@w --> standard
also contained functions for character set conversion. The reason that
these original functions are not described first is that they are almost
entirely useless.
<p>The problem is that all the conversion functions described in the
original ISO&nbsp;C90<!-- /@w --> use a local state. Using a local state implies that
multiple conversions at the same time (not only when using threads)
cannot be done, and that you cannot first convert single characters and
then strings since you cannot tell the conversion functions which state
to use.
<p>These original functions are therefore usable only in a very limited set
of situations. One must complete converting the entire string before
starting a new one, and each string/text must be converted with the same
function (there is no problem with the library itself; it is guaranteed
that no library function changes the state of any of these functions).
<strong>For the above reasons it is highly requested that the functions
described in the previous section be used in place of non-reentrant
conversion functions.</strong>
<ul class="menu">
<li><a accesskey="1" href="Non_002dreentrant-Character-Conversion.html#Non_002dreentrant-Character-Conversion">Non-reentrant Character Conversion</a>: Non-reentrant Conversion of Single
Characters.
<li><a accesskey="2" href="Non_002dreentrant-String-Conversion.html#Non_002dreentrant-String-Conversion">Non-reentrant String Conversion</a>: Non-reentrant Conversion of Strings.
<li><a accesskey="3" href="Shift-State.html#Shift-State">Shift State</a>: States in Non-reentrant Functions.
</ul>
</body></html>