OpenCoverage

xmemcoll.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/coreutils/src/gnulib/lib/xmemcoll.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* Locale-specific memory comparison.-
2-
3 Copyright (C) 2002-2004, 2006, 2009-2018 Free Software Foundation, Inc.-
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/* Contributed by Paul Eggert <eggert@twinsun.com>. */-
19-
20#include <config.h>-
21-
22#include <errno.h>-
23#include <stdlib.h>-
24-
25#include "gettext.h"-
26#define _(msgid) gettext (msgid)-
27-
28#include "error.h"-
29#include "exitfail.h"-
30#include "memcoll.h"-
31#include "quotearg.h"-
32#include "xmemcoll.h"-
33-
34static void-
35collate_error (int collation_errno,-
36 char const *s1, size_t s1len,-
37 char const *s2, size_t s2len)-
38{-
39 error (0, collation_errno, _("string comparison failed"));-
40 error (0, 0, _("Set LC_ALL='C' to work around the problem."));-
41 error (exit_failure, 0,-
42 _("The strings compared were %s and %s."),-
43 quotearg_n_style_mem (0, locale_quoting_style, s1, s1len),-
44 quotearg_n_style_mem (1, locale_quoting_style, s2, s2len));-
45}
never executed: end of block
0
46-
47/* Compare S1 (with length S1LEN) and S2 (with length S2LEN) according-
48 to the LC_COLLATE locale. S1 and S2 do not overlap, and are not-
49 adjacent. Temporarily modify the bytes after S1 and S2, but-
50 restore their original contents before returning. Report an error-
51 and exit if there is an error. */-
52-
53int-
54xmemcoll (char *s1, size_t s1len, char *s2, size_t s2len)-
55{-
56 int diff = memcoll (s1, s1len, s2, s2len);-
57 int collation_errno = errno;-
58 if (collation_errno)
collation_errnoDescription
TRUEnever evaluated
FALSEnever evaluated
0
59 collate_error (collation_errno, s1, s1len, s2, s2len);
never executed: collate_error (collation_errno, s1, s1len, s2, s2len);
0
60 return diff;
never executed: return diff;
0
61}-
62-
63/* Compare S1 (a memory block of size S1SIZE, with a NUL as last byte)-
64 and S2 (a memory block of size S2SIZE, with a NUL as last byte)-
65 according to the LC_COLLATE locale. S1SIZE and S2SIZE must be > 0.-
66 Report an error and exit if there is an error. */-
67-
68int-
69xmemcoll0 (char const *s1, size_t s1size, char const *s2, size_t s2size)-
70{-
71 int diff = memcoll0 (s1, s1size, s2, s2size);-
72 int collation_errno = errno;-
73 if (collation_errno)
collation_errnoDescription
TRUEnever evaluated
FALSEnever evaluated
0
74 collate_error (collation_errno, s1, s1size - 1, s2, s2size - 1);
never executed: collate_error (collation_errno, s1, s1size - 1, s2, s2size - 1);
0
75 return diff;
never executed: return diff;
0
76}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.1.2