OpenCoverage

mbscasecmp.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/bash/src/lib/sh/mbscasecmp.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* mbscasecmp - case-insensitive multibyte string comparison. */-
2-
3/* Copyright (C) 2009-2015 Free Software Foundation, Inc.-
4-
5 This file is part of GNU Bash, the Bourne Again SHell.-
6-
7 Bash is free software: you can redistribute it and/or modify-
8 it under the terms of the GNU General Public License as published by-
9 the Free Software Foundation, either version 3 of the License, or-
10 (at your option) any later version.-
11-
12 Bash is distributed in the hope that it will be useful,-
13 but WITHOUT ANY WARRANTY; without even the implied warranty of-
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the-
15 GNU General Public License for more details.-
16-
17 You should have received a copy of the GNU General Public License-
18 along with Bash. If not, see <http://www.gnu.org/licenses/>.-
19*/-
20-
21#include <config.h>-
22-
23#if !defined (HAVE_MBSCASECMP) && defined (HANDLE_MULTIBYTE)-
24-
25#include <stdlib.h>-
26#include <stddef.h>-
27#include <string.h>-
28-
29#include <wchar.h>-
30#include <wctype.h>-
31-
32/* Compare MBS1 and MBS2 without regard to case. */-
33int-
34mbscasecmp (mbs1, mbs2)-
35 const char *mbs1;-
36 const char *mbs2;-
37{-
38 int len1, len2, mb_cur_max;-
39 wchar_t c1, c2, l1, l2;-
40-
41 len1 = len2 = 0;-
42 /* Reset multibyte characters to their initial state. */-
43 (void) mblen ((char *) NULL, 0);-
44-
45 mb_cur_max = MB_CUR_MAX;-
46 do-
47 {-
48 len1 = mbtowc (&c1, mbs1, mb_cur_max);-
49 len2 = mbtowc (&c2, mbs2, mb_cur_max);-
50-
51 if (len1 == 0)
len1 == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
52 return len2 == 0 ? 0 : -1;
never executed: return len2 == 0 ? 0 : -1;
0
53 else if (len2 == 0)
len2 == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
54 return 1;
never executed: return 1;
0
55 else if (len1 > 0 && len2 < 0)
len1 > 0Description
TRUEnever evaluated
FALSEnever evaluated
len2 < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
56 return -1;
never executed: return -1;
0
57 else if (len1 < 0 && len2 > 0)
len1 < 0Description
TRUEnever evaluated
FALSEnever evaluated
len2 > 0Description
TRUEnever evaluated
FALSEnever evaluated
0
58 return 1;
never executed: return 1;
0
59 else if (len1 < 0 && len2 < 0)
len1 < 0Description
TRUEnever evaluated
FALSEnever evaluated
len2 < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
60 {-
61 len1 = strlen (mbs1);-
62 len2 = strlen (mbs2);-
63 return (len1 == len2 ? memcmp (mbs1, mbs2, len1)
never executed: return (len1 == len2 ? memcmp (mbs1, mbs2, len1) : ((len1 < len2) ? (memcmp (mbs1, mbs2, len1) > 0 ? 1 : -1) : (memcmp (mbs1, mbs2, len2) >= 0 ? 1 : -1)));
0
64 : ((len1 < len2) ? (memcmp (mbs1, mbs2, len1) > 0 ? 1 : -1)
never executed: return (len1 == len2 ? memcmp (mbs1, mbs2, len1) : ((len1 < len2) ? (memcmp (mbs1, mbs2, len1) > 0 ? 1 : -1) : (memcmp (mbs1, mbs2, len2) >= 0 ? 1 : -1)));
0
65 : (memcmp (mbs1, mbs2, len2) >= 0 ? 1 : -1)));
never executed: return (len1 == len2 ? memcmp (mbs1, mbs2, len1) : ((len1 < len2) ? (memcmp (mbs1, mbs2, len1) > 0 ? 1 : -1) : (memcmp (mbs1, mbs2, len2) >= 0 ? 1 : -1)));
0
66 }-
67-
68 l1 = towlower (c1);-
69 l2 = towlower (c2);-
70 -
71 mbs1 += len1;-
72 mbs2 += len2;-
73 }
never executed: end of block
0
74 while (l1 == l2);
l1 == l2Description
TRUEnever evaluated
FALSEnever evaluated
0
75-
76 return l1 - l2;
never executed: return l1 - l2;
0
77}-
78-
79#endif-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.1.2