1 /* Locale dependent string transformation for comparison. 2 Copyright (C) 2010-2021 Free Software Foundation, Inc. 3 4 This program is free software: you can redistribute it and/or modify it 5 under the terms of the GNU Lesser General Public License as published 6 by the Free Software Foundation; either version 3 of the License, or 7 (at your option) any later version. 8 9 This program 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 GNU 12 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 #ifndef ASTRXFRM_H 18 #define ASTRXFRM_H 19 20 #include <stddef.h> 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 26 27 /* Variant of strxfrm() with a calling convention that reduces the number 28 of strxfrm calls. */ 29 30 /* Transform the string starting at S to a string, in such a way that 31 comparing S1 and S2 with strcoll() is equivalent to comparing astrxfrm(S1) 32 and astrxfrm(S2) with strcmp(). 33 The result of this function depends on the LC_COLLATE category of the 34 current locale. 35 If successful: If resultbuf is not NULL and the result fits into *lengthp 36 bytes, it is put in resultbuf, and resultbuf is returned. Otherwise, a 37 freshly allocated string is returned. In both cases, *lengthp is set to the 38 length of the returned string. 39 Upon failure, return NULL, with errno set. */ 40 extern char * astrxfrm (const char *s, 41 char *restrict resultbuf, size_t *lengthp); 42 43 44 #ifdef __cplusplus 45 } 46 #endif 47 48 #endif /* ASTRXFRM_H */