blob: 964549785ad4a170706c0e5a01f539706cef1220 (
plain)
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
#include "ace/OS_NS_strings.h"
#if !defined (ACE_HAS_INLINED_OSCALLS)
# include "ace/OS_NS_strings.inl"
#endif /* ACE_HAS_INLINED_OSCALLS */
#if defined (ACE_LACKS_STRCASECMP)
# include "ace/OS_NS_ctype.h"
#endif /* ACE_LACKS_STRCASECMP */
ACE_BEGIN_VERSIONED_NAMESPACE_DECL
#if defined (ACE_LACKS_STRCASECMP)
int
ACE_OS::strcasecmp_emulation (const char *s, const char *t)
{
const char *scan1 = s;
const char *scan2 = t;
while (*scan1 != 0
&& ACE_OS::ace_tolower (*scan1)
== ACE_OS::ace_tolower (*scan2))
{
++scan1;
++scan2;
}
// The following case analysis is necessary so that characters which
// look negative collate low against normal characters but high
// against the end-of-string NUL.
if (*scan1 == '\0' && *scan2 == '\0')
return 0;
else if (*scan1 == '\0')
return -1;
else if (*scan2 == '\0')
return 1;
else
return ACE_OS::ace_tolower (*scan1) - ACE_OS::ace_tolower (*scan2);
}
#endif /* ACE_LACKS_STRCASECMP */
#if defined (ACE_LACKS_STRCASECMP)
int
ACE_OS::strncasecmp_emulation (const char *s,
const char *t,
size_t len)
{
const char *scan1 = s;
const char *scan2 = t;
size_t count = 0;
while (count++ < len
&& *scan1 != 0
&& ACE_OS::ace_tolower (*scan1)
== ACE_OS::ace_tolower (*scan2))
{
++scan1;
++scan2;
}
if (count > len)
return 0;
// The following case analysis is necessary so that characters which
// look negative collate low against normal characters but high
// against the end-of-string NUL.
if (*scan1 == '\0' && *scan2 == '\0')
return 0;
else if (*scan1 == '\0')
return -1;
else if (*scan2 == '\0')
return 1;
else
return ACE_OS::ace_tolower (*scan1) - ACE_OS::ace_tolower (*scan2);
}
#endif /* ACE_LACKS_STRCASECMP */
ACE_END_VERSIONED_NAMESPACE_DECL
|