1/* Locale dependent memory area transformation for comparison. 2 Copyright (C) 2009, 2010 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 <http://www.gnu.org/licenses/>. */ 16 17#ifndef MEMXFRM_H 18#define MEMXFRM_H 19 20#include <stddef.h> 21 22#ifdef __cplusplus 23extern "C" { 24#endif 25 26 27/* Generalization of strxfrm() to strings with embedded NUL bytes. */ 28 29/* Transform the memory area [S..S+N-1] to a memory area, in such a way that 30 comparing (S1,N1) and (S2,N2) with memcoll() is equivalent to comparing 31 memxfrm(S1,N1) and memxfrm(S2,N2) with memcmp2(). 32 The byte S[N] may be temporarily overwritten by this function, but will be 33 restored before this function returns. 34 The result of this function depends on the LC_COLLATE category of the 35 current locale. 36 If successful: If resultbuf is not NULL and the result fits into *lengthp 37 bytes, it is put in resultbuf, and resultbuf is returned. Otherwise, a 38 freshly allocated string is returned. In both cases, *lengthp is set to the 39 length of the returned string. 40 Upon failure, return NULL, with errno set. */ 41extern char * memxfrm (char *s, size_t n, char *resultbuf, size_t *lengthp); 42 43 44#ifdef __cplusplus 45} 46#endif 47 48#endif /* MEMXFRM_H */ 49