<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>

