OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [newlib-1.17.0/] [newlib/] [libc/] [iconv/] [lib/] [iconv.c] - Diff between revs 148 and 158

Only display areas with differences | Details | Blame | View Log

Rev 148 Rev 158
/*
/*
 * Copyright (c) 2003-2004, Artem B. Bityuckiy
 * Copyright (c) 2003-2004, Artem B. Bityuckiy
 * Copyright (c) 1999,2000, Konstantin Chuguev. All rights reserved.
 * Copyright (c) 1999,2000, Konstantin Chuguev. All rights reserved.
 *
 *
 * Redistribution and use in source and binary forms, with or without
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * modification, are permitted provided that the following conditions
 * are met:
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *    documentation and/or other materials provided with the distribution.
 *
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 * SUCH DAMAGE.
 */
 */
 
 
/*
/*
FUNCTION
FUNCTION
<<iconv>>, <<iconv_open>>, <<iconv_close>>---charset conversion routines
<<iconv>>, <<iconv_open>>, <<iconv_close>>---charset conversion routines
 
 
INDEX
INDEX
        iconv
        iconv
INDEX
INDEX
        iconv_open
        iconv_open
INDEX
INDEX
        iconv_close
        iconv_close
INDEX
INDEX
        _iconv_r
        _iconv_r
INDEX
INDEX
        _iconv_open_r
        _iconv_open_r
INDEX
INDEX
        _iconv_close_r
        _iconv_close_r
 
 
ANSI_SYNOPSIS
ANSI_SYNOPSIS
        #include <iconv.h>
        #include <iconv.h>
        iconv_t iconv_open (const char *<[to]>, const char *<[from]>);
        iconv_t iconv_open (const char *<[to]>, const char *<[from]>);
        int iconv_close (iconv_t <[cd]>);
        int iconv_close (iconv_t <[cd]>);
        size_t iconv (iconv_t <[cd]>, const char **<[inbuf]>,
        size_t iconv (iconv_t <[cd]>, const char **<[inbuf]>,
                      size_t *<[inbytesleft]>,
                      size_t *<[inbytesleft]>,
                      char **<[outbuf]>, size_t *<[outbytesleft]>),
                      char **<[outbuf]>, size_t *<[outbytesleft]>),
 
 
        iconv_t _iconv_open_r (struct _reent *<[rptr]>,
        iconv_t _iconv_open_r (struct _reent *<[rptr]>,
                               const char *<[to]>, const char *<[from]>);
                               const char *<[to]>, const char *<[from]>);
        int _iconv_close_r (struct _reent *<[rptr]>, iconv_t <[cd]>);
        int _iconv_close_r (struct _reent *<[rptr]>, iconv_t <[cd]>);
        size_t _iconv_r (struct _reent *<[rptr]>,
        size_t _iconv_r (struct _reent *<[rptr]>,
                         iconv_t <[cd]>, const char **<[inbuf]>,
                         iconv_t <[cd]>, const char **<[inbuf]>,
                         size_t *<[inbytesleft]>,
                         size_t *<[inbytesleft]>,
                         char **<[outbuf]>, size_t *<[outbytesleft]>),
                         char **<[outbuf]>, size_t *<[outbytesleft]>),
 
 
TRAD_SYNOPSIS
TRAD_SYNOPSIS
        #include <iconv.h>
        #include <iconv.h>
        size_t iconv (<[cd]>, <[in]>, <[inleft]>, <[out]>, <[outleft]>)
        size_t iconv (<[cd]>, <[in]>, <[inleft]>, <[out]>, <[outleft]>)
        iconv_t <[cd]>;
        iconv_t <[cd]>;
        const char **<[in]>;
        const char **<[in]>;
        size_t *<[inleft]>;
        size_t *<[inleft]>;
        char **<[out]>;
        char **<[out]>;
        size_t *<[outleft]>);
        size_t *<[outleft]>);
 
 
        #include <iconv.h>
        #include <iconv.h>
        iconv_t iconv_open (<[to]>, <[from]>);
        iconv_t iconv_open (<[to]>, <[from]>);
        const char *<[to]>;
        const char *<[to]>;
        const char *<[from]>;
        const char *<[from]>;
 
 
        #include <iconv.h>
        #include <iconv.h>
        int iconv_close (<[cd]>);
        int iconv_close (<[cd]>);
        iconv_t <[cd]>;
        iconv_t <[cd]>;
 
 
        #include <iconv.h>
        #include <iconv.h>
        size_t _iconv_r (<[rptr]>, <[cd]>, <[in]>, <[inleft]>, <[out]>, <[outleft]>)
        size_t _iconv_r (<[rptr]>, <[cd]>, <[in]>, <[inleft]>, <[out]>, <[outleft]>)
        struct _reent *<[rptr]>;
        struct _reent *<[rptr]>;
        iconv_t <[cd]>;
        iconv_t <[cd]>;
        const char **<[in]>;
        const char **<[in]>;
        size_t *<[inleft]>;
        size_t *<[inleft]>;
        char **<[out]>;
        char **<[out]>;
        size_t *<[outleft]>);
        size_t *<[outleft]>);
 
 
        #include <iconv.h>
        #include <iconv.h>
        iconv_t _iconv_open_r (<[rptr]>, <[to]>, <[from]>);
        iconv_t _iconv_open_r (<[rptr]>, <[to]>, <[from]>);
        struct _reent *<[rptr]>;
        struct _reent *<[rptr]>;
        const char *<[to]>;
        const char *<[to]>;
        const char *<[from]>;
        const char *<[from]>;
 
 
        #include <iconv.h>
        #include <iconv.h>
        int iconv_close (<[rptr]>, <[cd]>);
        int iconv_close (<[rptr]>, <[cd]>);
        struct _reent *<[rptr]>;
        struct _reent *<[rptr]>;
        iconv_t <[cd]>;
        iconv_t <[cd]>;
 
 
DESCRIPTION
DESCRIPTION
The function <<iconv>> converts characters from <[in]> which are in one
The function <<iconv>> converts characters from <[in]> which are in one
encoding to characters of another encoding, outputting them to <[out]>.
encoding to characters of another encoding, outputting them to <[out]>.
The value <[inleft]> specifies the number of input bytes to convert whereas
The value <[inleft]> specifies the number of input bytes to convert whereas
the value <[outleft]> specifies the size remaining in the <[out]> buffer.
the value <[outleft]> specifies the size remaining in the <[out]> buffer.
The conversion descriptor <[cd]> specifies the conversion being performed
The conversion descriptor <[cd]> specifies the conversion being performed
and is created via <<iconv_open>>.
and is created via <<iconv_open>>.
 
 
An <<iconv>> conversion stops if: the input bytes are exhausted, the output
An <<iconv>> conversion stops if: the input bytes are exhausted, the output
buffer is full, an invalid input character sequence occurs, or the
buffer is full, an invalid input character sequence occurs, or the
conversion specifier is invalid.
conversion specifier is invalid.
 
 
The function <<iconv_open>> is used to specify a conversion from one
The function <<iconv_open>> is used to specify a conversion from one
encoding: <[from]> to another: <[to]>.  The result of the call is
encoding: <[from]> to another: <[to]>.  The result of the call is
to create a conversion specifier that can be used with <<iconv>>.
to create a conversion specifier that can be used with <<iconv>>.
 
 
The function <<iconv_close>> is used to close a conversion specifier after
The function <<iconv_close>> is used to close a conversion specifier after
it is no longer needed.
it is no longer needed.
 
 
The <<_iconv_r>>, <<_iconv_open_r>>, and <<_iconv_close_r>> functions are
The <<_iconv_r>>, <<_iconv_open_r>>, and <<_iconv_close_r>> functions are
reentrant versions of <<iconv>>, <<iconv_open>>, and <<iconv_close>>,
reentrant versions of <<iconv>>, <<iconv_open>>, and <<iconv_close>>,
respectively.  An additional reentrancy struct pointer: <[rptr]> is passed
respectively.  An additional reentrancy struct pointer: <[rptr]> is passed
to properly set <<errno>>.
to properly set <<errno>>.
 
 
RETURNS
RETURNS
The <<iconv>> function returns the number of non-identical conversions
The <<iconv>> function returns the number of non-identical conversions
performed.  If an error occurs, (size_t)-1 is returned and <<errno>>
performed.  If an error occurs, (size_t)-1 is returned and <<errno>>
is set appropriately.  The values of <[inleft]>, <[in]>, <[out]>,
is set appropriately.  The values of <[inleft]>, <[in]>, <[out]>,
and <[outleft]> are modified to indicate how much input was processed
and <[outleft]> are modified to indicate how much input was processed
and how much output was created.
and how much output was created.
 
 
The <<iconv_open>> function returns either a valid conversion specifier
The <<iconv_open>> function returns either a valid conversion specifier
or (iconv_t)-1 to indicate failure.  If failure occurs, <<errno>> is set
or (iconv_t)-1 to indicate failure.  If failure occurs, <<errno>> is set
appropriately.
appropriately.
 
 
The <<iconv_close>> function returns 0 on success or -1 on failure.
The <<iconv_close>> function returns 0 on success or -1 on failure.
If failure occurs <<errno>> is set appropriately.
If failure occurs <<errno>> is set appropriately.
 
 
PORTABILITY
PORTABILITY
<<iconv>>, <<iconv_open>>, and <<iconv_close>> are non-ANSI and are specified
<<iconv>>, <<iconv_open>>, and <<iconv_close>> are non-ANSI and are specified
by the Single Unix specification.
by the Single Unix specification.
 
 
No supporting OS subroutine calls are required.
No supporting OS subroutine calls are required.
*/
*/
#include <_ansi.h>
#include <_ansi.h>
#include <reent.h>
#include <reent.h>
#include <sys/types.h>
#include <sys/types.h>
#include <errno.h>
#include <errno.h>
#include <string.h>
#include <string.h>
#include <stdlib.h>
#include <stdlib.h>
#include <iconv.h>
#include <iconv.h>
#include <wchar.h>
#include <wchar.h>
#include <sys/iconvnls.h>
#include <sys/iconvnls.h>
#include "local.h"
#include "local.h"
#include "conv.h"
#include "conv.h"
#include "ucsconv.h"
#include "ucsconv.h"
 
 
/*
/*
 * iconv interface functions as specified by Single Unix specification.
 * iconv interface functions as specified by Single Unix specification.
 */
 */
 
 
iconv_t
iconv_t
_DEFUN(iconv_open, (to, from),
_DEFUN(iconv_open, (to, from),
                   _CONST char *to _AND
                   _CONST char *to _AND
                   _CONST char *from)
                   _CONST char *from)
{
{
  return _iconv_open_r (_REENT, to, from);
  return _iconv_open_r (_REENT, to, from);
}
}
 
 
 
 
size_t
size_t
_DEFUN(iconv, (cd, inbuf, inbytesleft, outbuf, outbytesleft),
_DEFUN(iconv, (cd, inbuf, inbytesleft, outbuf, outbytesleft),
              iconv_t cd          _AND
              iconv_t cd          _AND
              _CONST char **inbuf _AND
              _CONST char **inbuf _AND
              size_t *inbytesleft _AND
              size_t *inbytesleft _AND
              char **outbuf       _AND
              char **outbuf       _AND
              size_t *outbytesleft)
              size_t *outbytesleft)
{
{
    return _iconv_r (_REENT, cd, inbuf, inbytesleft, outbuf, outbytesleft);
    return _iconv_r (_REENT, cd, inbuf, inbytesleft, outbuf, outbytesleft);
}
}
 
 
 
 
int
int
_DEFUN(iconv_close, (cd), iconv_t cd)
_DEFUN(iconv_close, (cd), iconv_t cd)
{
{
    return _iconv_close_r (_REENT, cd);
    return _iconv_close_r (_REENT, cd);
}
}
 
 
 
 
#ifndef _REENT_ONLY
#ifndef _REENT_ONLY
iconv_t
iconv_t
_DEFUN(_iconv_open_r, (rptr, to, from),
_DEFUN(_iconv_open_r, (rptr, to, from),
                      struct _reent *rptr _AND
                      struct _reent *rptr _AND
                      _CONST char *to     _AND
                      _CONST char *to     _AND
                      _CONST char *from)
                      _CONST char *from)
{
{
  iconv_conversion_t *ic;
  iconv_conversion_t *ic;
 
 
  if (to == NULL || from == NULL || *to == '\0' || *from == '\0')
  if (to == NULL || from == NULL || *to == '\0' || *from == '\0')
    return (iconv_t)-1;
    return (iconv_t)-1;
 
 
  if ((to = (_CONST char *)_iconv_resolve_encoding_name (rptr, to)) == NULL)
  if ((to = (_CONST char *)_iconv_resolve_encoding_name (rptr, to)) == NULL)
    return (iconv_t)-1;
    return (iconv_t)-1;
 
 
  if ((from = (_CONST char *)_iconv_resolve_encoding_name (rptr, from)) == NULL)
  if ((from = (_CONST char *)_iconv_resolve_encoding_name (rptr, from)) == NULL)
    {
    {
      _free_r (rptr, (_VOID_PTR)to);
      _free_r (rptr, (_VOID_PTR)to);
      return (iconv_t)-1;
      return (iconv_t)-1;
    }
    }
 
 
  ic = (iconv_conversion_t *)_malloc_r (rptr, sizeof (iconv_conversion_t));
  ic = (iconv_conversion_t *)_malloc_r (rptr, sizeof (iconv_conversion_t));
  if (ic == NULL)
  if (ic == NULL)
    return (iconv_t)-1;
    return (iconv_t)-1;
 
 
  /* Select which conversion type to use */
  /* Select which conversion type to use */
  if (strcmp (from, to) == 0)
  if (strcmp (from, to) == 0)
    {
    {
      /* Use null conversion */
      /* Use null conversion */
      ic->handlers = &_iconv_null_conversion_handlers;
      ic->handlers = &_iconv_null_conversion_handlers;
      ic->data = ic->handlers->open (rptr, to, from);
      ic->data = ic->handlers->open (rptr, to, from);
    }
    }
  else
  else
    {
    {
      /* Use UCS-based conversion */
      /* Use UCS-based conversion */
      ic->handlers = &_iconv_ucs_conversion_handlers;
      ic->handlers = &_iconv_ucs_conversion_handlers;
      ic->data = ic->handlers->open (rptr, to, from);
      ic->data = ic->handlers->open (rptr, to, from);
    }
    }
 
 
  _free_r (rptr, (_VOID_PTR)to);
  _free_r (rptr, (_VOID_PTR)to);
  _free_r (rptr, (_VOID_PTR)from);
  _free_r (rptr, (_VOID_PTR)from);
 
 
  if (ic->data == NULL)
  if (ic->data == NULL)
    {
    {
      _free_r (rptr, (_VOID_PTR)ic);
      _free_r (rptr, (_VOID_PTR)ic);
      return (iconv_t)-1;
      return (iconv_t)-1;
    }
    }
 
 
  return (_VOID_PTR)ic;
  return (_VOID_PTR)ic;
}
}
 
 
 
 
size_t
size_t
_DEFUN(_iconv_r, (rptr, cd, inbuf, inbytesleft, outbuf, outbytesleft),
_DEFUN(_iconv_r, (rptr, cd, inbuf, inbytesleft, outbuf, outbytesleft),
                 struct _reent *rptr _AND
                 struct _reent *rptr _AND
                 iconv_t cd          _AND
                 iconv_t cd          _AND
                 _CONST char **inbuf _AND
                 _CONST char **inbuf _AND
                 size_t *inbytesleft _AND
                 size_t *inbytesleft _AND
                 char **outbuf       _AND
                 char **outbuf       _AND
                 size_t *outbytesleft)
                 size_t *outbytesleft)
{
{
  iconv_conversion_t *ic = (iconv_conversion_t *)cd;
  iconv_conversion_t *ic = (iconv_conversion_t *)cd;
 
 
  if ((_VOID_PTR)cd == NULL || cd == (iconv_t)-1 || ic->data == NULL
  if ((_VOID_PTR)cd == NULL || cd == (iconv_t)-1 || ic->data == NULL
       || (ic->handlers != &_iconv_null_conversion_handlers
       || (ic->handlers != &_iconv_null_conversion_handlers
           && ic->handlers != &_iconv_ucs_conversion_handlers))
           && ic->handlers != &_iconv_ucs_conversion_handlers))
    {
    {
      __errno_r (rptr) = EBADF;
      __errno_r (rptr) = EBADF;
      return (size_t)-1;
      return (size_t)-1;
    }
    }
 
 
  if (inbuf == NULL || *inbuf == NULL)
  if (inbuf == NULL || *inbuf == NULL)
    {
    {
      mbstate_t state_null = ICONV_ZERO_MB_STATE_T;
      mbstate_t state_null = ICONV_ZERO_MB_STATE_T;
 
 
      if (!ic->handlers->is_stateful(ic->data, 1))
      if (!ic->handlers->is_stateful(ic->data, 1))
        return (size_t)0;
        return (size_t)0;
 
 
      if (outbuf == NULL || *outbuf == NULL)
      if (outbuf == NULL || *outbuf == NULL)
        {
        {
          /* Reset shift state */
          /* Reset shift state */
          ic->handlers->set_state (ic->data, &state_null, 1);
          ic->handlers->set_state (ic->data, &state_null, 1);
 
 
          return (size_t)0;
          return (size_t)0;
        }
        }
 
 
      if (outbytesleft != NULL)
      if (outbytesleft != NULL)
        {
        {
          mbstate_t state_save = ICONV_ZERO_MB_STATE_T;
          mbstate_t state_save = ICONV_ZERO_MB_STATE_T;
 
 
          /* Save current shift state */
          /* Save current shift state */
          ic->handlers->get_state (ic->data, &state_save, 1);
          ic->handlers->get_state (ic->data, &state_save, 1);
 
 
          /* Reset shift state */
          /* Reset shift state */
          ic->handlers->set_state (ic->data, &state_null, 1);
          ic->handlers->set_state (ic->data, &state_null, 1);
 
 
          /* Get initial shift state sequence and it's length */
          /* Get initial shift state sequence and it's length */
          ic->handlers->get_state (ic->data, &state_null, 1);
          ic->handlers->get_state (ic->data, &state_null, 1);
 
 
          if (*outbytesleft >= state_null.__count)
          if (*outbytesleft >= state_null.__count)
            {
            {
              memcpy ((_VOID_PTR)(*outbuf), (_VOID_PTR)&state_null, state_null.__count);
              memcpy ((_VOID_PTR)(*outbuf), (_VOID_PTR)&state_null, state_null.__count);
 
 
              *outbuf += state_null.__count;
              *outbuf += state_null.__count;
              *outbytesleft -= state_null.__count;
              *outbytesleft -= state_null.__count;
 
 
              return (size_t)0;
              return (size_t)0;
            }
            }
 
 
           /* Restore shift state if output buffer is too small */
           /* Restore shift state if output buffer is too small */
           ic->handlers->set_state (ic->data, &state_save, 1);
           ic->handlers->set_state (ic->data, &state_save, 1);
        }
        }
 
 
      __errno_r (rptr) = E2BIG;
      __errno_r (rptr) = E2BIG;
      return (size_t)-1;
      return (size_t)-1;
    }
    }
 
 
  if (*inbytesleft == 0)
  if (*inbytesleft == 0)
    {
    {
      __errno_r (rptr) = EINVAL;
      __errno_r (rptr) = EINVAL;
      return (size_t)-1;
      return (size_t)-1;
    }
    }
 
 
  if (*outbytesleft == 0 || *outbuf == NULL)
  if (*outbytesleft == 0 || *outbuf == NULL)
    {
    {
      __errno_r (rptr) = E2BIG;
      __errno_r (rptr) = E2BIG;
      return (size_t)-1;
      return (size_t)-1;
    }
    }
 
 
  return ic->handlers->convert (rptr,
  return ic->handlers->convert (rptr,
                                ic->data,
                                ic->data,
                                (_CONST unsigned char**)inbuf,
                                (_CONST unsigned char**)inbuf,
                                inbytesleft,
                                inbytesleft,
                                (unsigned char**)outbuf,
                                (unsigned char**)outbuf,
                                outbytesleft,
                                outbytesleft,
                                0);
                                0);
}
}
 
 
 
 
int
int
_DEFUN(_iconv_close_r, (rptr, cd),
_DEFUN(_iconv_close_r, (rptr, cd),
                       struct _reent *rptr _AND
                       struct _reent *rptr _AND
                       iconv_t cd)
                       iconv_t cd)
{
{
  int res;
  int res;
  iconv_conversion_t *ic = (iconv_conversion_t *)cd;
  iconv_conversion_t *ic = (iconv_conversion_t *)cd;
 
 
  if ((_VOID_PTR)cd == NULL || cd == (iconv_t)-1 || ic->data == NULL
  if ((_VOID_PTR)cd == NULL || cd == (iconv_t)-1 || ic->data == NULL
       || (ic->handlers != &_iconv_null_conversion_handlers
       || (ic->handlers != &_iconv_null_conversion_handlers
           && ic->handlers != &_iconv_ucs_conversion_handlers))
           && ic->handlers != &_iconv_ucs_conversion_handlers))
    {
    {
      __errno_r (rptr) = EBADF;
      __errno_r (rptr) = EBADF;
      return -1;
      return -1;
    }
    }
 
 
  res = (int)ic->handlers->close (rptr, ic->data);
  res = (int)ic->handlers->close (rptr, ic->data);
 
 
  _free_r (rptr, (_VOID_PTR)cd);
  _free_r (rptr, (_VOID_PTR)cd);
 
 
  return res;
  return res;
}
}
#endif /* !_REENT_ONLY */
#endif /* !_REENT_ONLY */
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.