source: trunk/libs/newlib/src/newlib/libc/string/strncasecmp_l.c @ 444

Last change on this file since 444 was 444, checked in by satin@…, 6 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 1.3 KB
Line 
1/*
2FUNCTION
3        <<strncasecmp_l>>---case-insensitive character string compare
4       
5INDEX
6        strncasecmp_l
7
8SYNOPSIS
9        #include <strings.h>
10        int strncasecmp_l(const char *<[a]>, const char * <[b]>,
11                          size_t <[length]>, locale_t <[locale]>);
12
13DESCRIPTION
14        <<strncasecmp_l>> compares up to <[length]> characters
15        from the string at <[a]> to the string at <[b]> in a
16        case-insensitive manner.
17
18        if <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the
19        behaviour is undefined.
20
21RETURNS
22
23        If <<*<[a]>>> sorts lexicographically after <<*<[b]>>> (after
24        both are converted to lowercase), <<strncasecmp_l>> returns a
25        number greater than zero.  If the two strings are equivalent,
26        <<strncasecmp_l>> returns zero.  If <<*<[a]>>> sorts
27        lexicographically before <<*<[b]>>>, <<strncasecmp_l>> returns a
28        number less than zero.
29
30PORTABILITY
31<<strncasecmp_l>> is POSIX-1.2008.
32
33<<strncasecmp_l>> requires no supporting OS subroutines. It uses
34tolower_l() from elsewhere in this library.
35
36QUICKREF
37        strncasecmp_l
38*/
39
40#include <strings.h>
41#include <ctype.h>
42
43int 
44strncasecmp_l (const char *s1, const char *s2, size_t n,
45               struct __locale_t *locale)
46{
47  int d = 0;
48  for ( ; n != 0; n--)
49    {
50      const int c1 = tolower_l (*s1++, locale);
51      const int c2 = tolower_l (*s2++, locale);
52      if (((d = c1 - c2) != 0) || (c2 == '\0'))
53        break;
54    }
55  return d;
56}
Note: See TracBrowser for help on using the repository browser.