File: strgicmp.c

package info (click to toggle)
autotrace 0.31.1-16
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 3,800 kB
  • sloc: ansic: 15,092; sh: 6,972; makefile: 273
file content (74 lines) | stat: -rw-r--r-- 1,423 bytes parent folder | download | duplicates (4)
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
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif /* Def: HAVE_CONFIG_H */

#include "strgicmp.h"
#include <ctype.h>

at_bool strgicmp (const char *s1, const char *s2)
{
  if (s1 == NULL || s2 == NULL)
    return (false);

  while (*s1 != '\0' && *s2 != '\0')
    {
      if (tolower (*s1) != tolower (*s2))
        break;
      s1++;
      s2++;
    }
  if (*s1 == '\0' && *s2 == '\0')
	return (true);
  else
    return (false);
}

at_bool strgnicmp (const char *s1, const char *s2, size_t len)
{
  long i = 0;

  if (s1 == NULL || s2 == NULL)
    return (false);

  while (*s1 != '\0' && *s2 != '\0')
    {
      if (tolower (*s1) != tolower (*s2) || i == len)
        break;
      s1++;
      s2++;
	  i++;
    }
  if ((*s1 == '\0' && *s2 == '\0') || len == i)
	return (true);
  else
    return (false);
}

#if 0
#include <stdio.h>
void
result (at_bool val)
{
  if (val)
    printf("successful\n");
  else
    printf("failed\n");
}
int main()
{
  result(strgicmp("abc", "abc"));
  result(!strgicmp("abc", "abcd"));
  result(strgicmp("abc", "ABC"));
  result(strgicmp("abc", "abC"));
  result(!strgicmp("abc", "abCd"));

  result(strgnicmp("abc", "abc", 3));
  result(strgnicmp("abc", "abcd", 3));
  result(!strgnicmp("abc", "abcd", 4));
  result(strgnicmp("abc", "ABC", 3));
  result(strgnicmp("abc", "ABZ", 2));
  result(strgnicmp("abc", "abC", 3));
  result(strgnicmp("abc", "abCdddd", 3));
  return 0;
}
#endif /* 0 */