(root)/
grep-3.11/
lib/
xstriconv.c
       1  /* Charset conversion with out-of-memory checking.
       2     Copyright (C) 2001-2004, 2006, 2009-2023 Free Software Foundation, Inc.
       3     Written by Bruno Haible.
       4  
       5     This program is free software: you can redistribute it and/or modify
       6     it under the terms of the GNU General Public License as published by
       7     the Free Software Foundation, either version 3 of the License, or
       8     (at your option) any later version.
       9  
      10     This program is distributed in the hope that it will be useful,
      11     but WITHOUT ANY WARRANTY; without even the implied warranty of
      12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      13     GNU General Public License for more details.
      14  
      15     You should have received a copy of the GNU General Public License
      16     along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
      17  
      18  #include <config.h>
      19  
      20  /* Specification.  */
      21  #include "xstriconv.h"
      22  
      23  #include <errno.h>
      24  
      25  #include "striconv.h"
      26  #include "xalloc.h"
      27  
      28  
      29  #if HAVE_ICONV
      30  
      31  int
      32  xmem_cd_iconv (const char *src, size_t srclen, iconv_t cd,
      33                 char **resultp, size_t *lengthp)
      34  {
      35    int retval = mem_cd_iconv (src, srclen, cd, resultp, lengthp);
      36  
      37    if (retval < 0 && errno == ENOMEM)
      38      xalloc_die ();
      39    return retval;
      40  }
      41  
      42  char *
      43  xstr_cd_iconv (const char *src, iconv_t cd)
      44  {
      45    char *result = str_cd_iconv (src, cd);
      46  
      47    if (result == NULL && errno == ENOMEM)
      48      xalloc_die ();
      49    return result;
      50  }
      51  
      52  #endif
      53  
      54  char *
      55  xstr_iconv (const char *src, const char *from_codeset, const char *to_codeset)
      56  {
      57    char *result = str_iconv (src, from_codeset, to_codeset);
      58  
      59    if (result == NULL && errno == ENOMEM)
      60      xalloc_die ();
      61    return result;
      62  }