convert_char.c revision 1.1.1.2
1/* Runtime conversion of strings from one character kind to another. 2 Copyright (C) 2008-2020 Free Software Foundation, Inc. 3 4This file is part of the GNU Fortran runtime library (libgfortran). 5 6Libgfortran is free software; you can redistribute it and/or 7modify it under the terms of the GNU General Public 8License as published by the Free Software Foundation; either 9version 3 of the License, or (at your option) any later version. 10 11Libgfortran is distributed in the hope that it will be useful, 12but WITHOUT ANY WARRANTY; without even the implied warranty of 13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14GNU General Public License for more details. 15 16Under Section 7 of GPL version 3, you are granted additional 17permissions described in the GCC Runtime Library Exception, version 183.1, as published by the Free Software Foundation. 19 20You should have received a copy of the GNU General Public License and 21a copy of the GCC Runtime Library Exception along with this program; 22see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23<http://www.gnu.org/licenses/>. */ 24 25#include "libgfortran.h" 26 27 28extern void convert_char1_to_char4 (gfc_char4_t **, gfc_charlen_type, 29 const unsigned char *); 30export_proto(convert_char1_to_char4); 31 32extern void convert_char4_to_char1 (unsigned char **, gfc_charlen_type, 33 const gfc_char4_t *); 34export_proto(convert_char4_to_char1); 35 36 37void 38convert_char1_to_char4 (gfc_char4_t **dst, gfc_charlen_type len, 39 const unsigned char *src) 40{ 41 gfc_charlen_type i, l; 42 43 l = len > 0 ? len : 0; 44 *dst = xmallocarray ((l + 1), sizeof (gfc_char4_t)); 45 46 for (i = 0; i < l; i++) 47 (*dst)[i] = src[i]; 48 49 (*dst)[l] = '\0'; 50} 51 52 53void 54convert_char4_to_char1 (unsigned char **dst, gfc_charlen_type len, 55 const gfc_char4_t *src) 56{ 57 gfc_charlen_type i, l; 58 59 l = len > 0 ? len : 0; 60 *dst = xmalloc (l + 1); 61 62 for (i = 0; i < l; i++) 63 (*dst)[i] = src[i]; 64 65 (*dst)[l] = '\0'; 66} 67