(root)/
texinfo-7.1/
tp/
Texinfo/
XS/
gnulib/
lib/
uniconv/
u-strconv-from-enc.h
       1  /* Conversion to UTF-8/UTF-16/UTF-32 from legacy encodings.
       2     Copyright (C) 2002, 2006-2007, 2009-2023 Free Software Foundation, Inc.
       3  
       4     This file is free software: you can redistribute it and/or modify
       5     it under the terms of the GNU Lesser General Public License as
       6     published by the Free Software Foundation; either version 2.1 of the
       7     License, or (at your option) any later version.
       8  
       9     This file is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      12     GNU Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public License
      15     along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
      16  
      17  UNIT *
      18  FUNC (const char *string,
      19        const char *fromcode,
      20        enum iconv_ilseq_handler handler)
      21  {
      22    UNIT *result;
      23    size_t length;
      24  
      25    result =
      26      U_CONV_FROM_ENCODING (fromcode, handler,
      27                            string, strlen (string) + 1, NULL,
      28                            NULL, &length);
      29    if (result == NULL)
      30      return NULL;
      31    /* Verify the result has exactly one NUL unit, at the end.  */
      32    if (!(length > 0 && result[length-1] == 0
      33          && U_STRLEN (result) == length-1))
      34      {
      35        free (result);
      36        errno = EILSEQ;
      37        return NULL;
      38      }
      39    return result;
      40  }