~ubuntu-branches/ubuntu/maverick/evolution-data-server/maverick-proposed

« back to all changes in this revision

Viewing changes to libdb/clib/strcasecmp.c

  • Committer: Bazaar Package Importer
  • Author(s): Didier Roche
  • Date: 2010-05-17 17:02:06 UTC
  • mfrom: (1.1.79 upstream) (1.6.12 experimental)
  • Revision ID: james.westby@ubuntu.com-20100517170206-4ufr52vwrhh26yh0
Tags: 2.30.1-1ubuntu1
* Merge from debian experimental. Remaining change:
  (LP: #42199, #229669, #173703, #360344, #508494)
  + debian/control:
    - add Vcs-Bzr tag
    - don't use libgnome
    - Use Breaks instead of Conflicts against evolution 2.25 and earlier.
  + debian/evolution-data-server.install,
    debian/patches/45_libcamel_providers_version.patch:
    - use the upstream versioning, not a Debian-specific one 
  + debian/libedata-book1.2-dev.install, debian/libebackend-1.2-dev.install,
    debian/libcamel1.2-dev.install, debian/libedataserverui1.2-dev.install:
    - install html documentation
  + debian/rules:
    - don't build documentation it's shipped with the tarball

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Copyright (c) 1987, 1993
3
 
 *      The Regents of the University of California.  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 "db_config.h"
35
 
 
36
 
#ifndef lint
37
 
static const char revid[] = "$Id$";
38
 
#endif /* not lint */
39
 
 
40
 
#ifndef NO_SYSTEM_INCLUDES
41
 
#include <string.h>
42
 
#endif
43
 
 
44
 
/*
45
 
 * This array is designed for mapping upper and lower case letter
46
 
 * together for a case independent comparison.  The mappings are
47
 
 * based upon ascii character sequences.
48
 
 */
49
 
static const unsigned char charmap[] = {
50
 
        '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007',
51
 
        '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017',
52
 
        '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027',
53
 
        '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037',
54
 
        '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047',
55
 
        '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057',
56
 
        '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067',
57
 
        '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077',
58
 
        '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
59
 
        '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
60
 
        '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
61
 
        '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137',
62
 
        '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
63
 
        '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
64
 
        '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
65
 
        '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177',
66
 
        '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207',
67
 
        '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',
68
 
        '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227',
69
 
        '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237',
70
 
        '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247',
71
 
        '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257',
72
 
        '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',
73
 
        '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',
74
 
        '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307',
75
 
        '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317',
76
 
        '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327',
77
 
        '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337',
78
 
        '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
79
 
        '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
80
 
        '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
81
 
        '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377'
82
 
};
83
 
 
84
 
/*
85
 
 * strcasecmp --
86
 
 *      Do strcmp(3) in a case-insensitive manner.
87
 
 *
88
 
 * PUBLIC: #ifndef HAVE_STRCASECMP
89
 
 * PUBLIC: int strcasecmp __P((const char *, const char *));
90
 
 * PUBLIC: #endif
91
 
 */
92
 
int
93
 
strcasecmp(s1, s2)
94
 
        const char *s1, *s2;
95
 
{
96
 
        register const unsigned char *cm = charmap,
97
 
                        *us1 = (const unsigned char *)s1,
98
 
                        *us2 = (const unsigned char *)s2;
99
 
 
100
 
        while (cm[*us1] == cm[*us2++])
101
 
                if (*us1++ == '\0')
102
 
                        return (0);
103
 
        return (cm[*us1] - cm[*--us2]);
104
 
}
105
 
 
106
 
/*
107
 
 * strncasecmp --
108
 
 *      Do strncmp(3) in a case-insensitive manner.
109
 
 *
110
 
 * PUBLIC: #ifndef HAVE_STRCASECMP
111
 
 * PUBLIC: int strncasecmp __P((const char *, const char *, size_t));
112
 
 * PUBLIC: #endif
113
 
 */
114
 
int
115
 
strncasecmp(s1, s2, n)
116
 
        const char *s1, *s2;
117
 
        register size_t n;
118
 
{
119
 
        if (n != 0) {
120
 
                register const unsigned char *cm = charmap,
121
 
                                *us1 = (const unsigned char *)s1,
122
 
                                *us2 = (const unsigned char *)s2;
123
 
 
124
 
                do {
125
 
                        if (cm[*us1] != cm[*us2++])
126
 
                                return (cm[*us1] - cm[*--us2]);
127
 
                        if (*us1++ == '\0')
128
 
                                break;
129
 
                } while (--n != 0);
130
 
        }
131
 
        return (0);
132
 
}