~ubuntu-branches/ubuntu/maverick/krb5/maverick

« back to all changes in this revision

Viewing changes to src/lib/krb5/posix/strcasecmp.c

  • Committer: Bazaar Package Importer
  • Author(s): Sam Hartman, Russ Allbery, Sam Hartman
  • Date: 2008-08-21 10:41:41 UTC
  • mfrom: (11.1.15 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080821104141-a0f9c4o4cpo8xd0o
Tags: 1.6.dfsg.4~beta1-4
[ Russ Allbery ]
* Translation updates:
  - Swedish, thanks Martin Bagge.  (Closes: #487669, #491774)
  - Italian, thanks Luca Monducci.  (Closes: #493962)

[ Sam Hartman ]
* Translation Updates:
    - Dutch, Thanks Vincent Zweije, Closes: #495733

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Copyright (c) 1987 Regents of the University of California.
3
 
 * All rights reserved.
4
 
 *
5
 
 * Redistribution and use in source and binary forms, with or without
6
 
 * modification, are permitted provided that the following conditions
7
 
 * are met:
8
 
 * 1. Redistributions of source code must retain the above copyright
9
 
 *    notice, this list of conditions and the following disclaimer.
10
 
 * 2. Redistributions in binary form must reproduce the above copyright
11
 
 *    notice, this list of conditions and the following disclaimer in the
12
 
 *    documentation and/or other materials provided with the distribution.
13
 
 * 3. All advertising materials mentioning features or use of this software
14
 
 *    must display the following acknowledgement:
15
 
 *      This product includes software developed by the University of
16
 
 *      California, Berkeley and its contributors.
17
 
 * 4. Neither the name of the University nor the names of its contributors
18
 
 *    may be used to endorse or promote products derived from this software
19
 
 *    without specific prior written permission.
20
 
 *
21
 
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22
 
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
 
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24
 
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25
 
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
 
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27
 
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28
 
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29
 
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30
 
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31
 
 * SUCH DAMAGE.
32
 
 */
33
 
 
34
 
#include "k5-int.h"
35
 
#ifdef HAVE_STRING_H
36
 
#include <string.h>
37
 
#else
38
 
#include <strings.h>
39
 
#endif
40
 
 
41
 
/* based on @(#)strcasecmp.c    5.10 (Berkeley) 1/26/91 */
42
 
 
43
 
/*
44
 
 * This array is designed for mapping upper and lower case letter
45
 
 * together for a case independent comparison.  The mappings are
46
 
 * based upon ascii character sequences.
47
 
 */
48
 
static const u_char charmap[] = {
49
 
        '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007',
50
 
        '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017',
51
 
        '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027',
52
 
        '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037',
53
 
        '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047',
54
 
        '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057',
55
 
        '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067',
56
 
        '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077',
57
 
        '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
58
 
        '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
59
 
        '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
60
 
        '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137',
61
 
        '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
62
 
        '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
63
 
        '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
64
 
        '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177',
65
 
        '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207',
66
 
        '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',
67
 
        '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227',
68
 
        '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237',
69
 
        '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247',
70
 
        '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257',
71
 
        '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',
72
 
        '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',
73
 
        '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307',
74
 
        '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317',
75
 
        '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327',
76
 
        '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337',
77
 
        '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
78
 
        '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
79
 
        '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
80
 
        '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377',
81
 
};
82
 
 
83
 
int
84
 
strcasecmp(s1, s2)
85
 
        const char *s1, *s2;
86
 
{
87
 
        register const u_char *cm = charmap,
88
 
                        *us1 = (const u_char *)s1,
89
 
                        *us2 = (const u_char *)s2;
90
 
 
91
 
        while (cm[*us1] == cm[*us2++])
92
 
                if (*us1++ == '\0')
93
 
                        return (0);
94
 
        return (cm[*us1] - cm[*--us2]);
95
 
}
96
 
 
97
 
int
98
 
strncasecmp(s1, s2, n)
99
 
        const char *s1, *s2;
100
 
        register size_t n;
101
 
{
102
 
        if (n != 0) {
103
 
                register const u_char *cm = charmap,
104
 
                                *us1 = (const u_char *)s1,
105
 
                                *us2 = (const u_char *)s2;
106
 
 
107
 
                do {
108
 
                        if (cm[*us1] != cm[*us2++])
109
 
                                return (cm[*us1] - cm[*--us2]);
110
 
                        if (*us1++ == '\0')
111
 
                                break;
112
 
                } while (--n != 0);
113
 
        }
114
 
        return (0);
115
 
}