1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
/* Locale dependent memory area transformation for comparison.
Copyright (C) 2009-2017 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or
modify it under the terms of either:
* the GNU Lesser General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your
option) any later version.
or
* the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your
option) any later version.
or both in parallel, as here.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
#ifndef AMEMXFRM_H
#define AMEMXFRM_H
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Generalization of strxfrm() to strings with embedded NUL bytes. */
/* Transform the memory area [S..S+N-1] to a memory area, in such a way that
comparing (S1,N1) and (S2,N2) with memcoll() is equivalent to comparing
amemxfrm(S1,N1) and amemxfrm(S2,N2) with memcmp2().
The byte S[N] may be temporarily overwritten by this function, but will be
restored before this function returns.
The result of this function depends on the LC_COLLATE category of the
current locale.
If successful: If resultbuf is not NULL and the result fits into *lengthp
bytes, it is put in resultbuf, and resultbuf is returned. Otherwise, a
freshly allocated string is returned. In both cases, *lengthp is set to the
length of the returned string.
Upon failure, return NULL, with errno set. */
extern char * amemxfrm (char *s, size_t n, char *resultbuf, size_t *lengthp);
#ifdef __cplusplus
}
#endif
#endif /* AMEMXFRM_H */
|