diff options
author | Niklas Hallqvist <niklas@cvs.openbsd.org> | 1996-02-29 13:29:24 +0000 |
---|---|---|
committer | Niklas Hallqvist <niklas@cvs.openbsd.org> | 1996-02-29 13:29:24 +0000 |
commit | 3c2bc3a8dd87443da5825eceb2fea5f6d9aec10c (patch) | |
tree | a73d653ffd7f6d1e5013ae53fe4aad347ed6af36 /sys/lib/libkern/strncasecmp.c | |
parent | ae8f5c38ed6646b28514a4b1eccf7b8a0b3dafcf (diff) |
From NetBSD: Merge with NetBSD 960217
Diffstat (limited to 'sys/lib/libkern/strncasecmp.c')
-rw-r--r-- | sys/lib/libkern/strncasecmp.c | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/sys/lib/libkern/strncasecmp.c b/sys/lib/libkern/strncasecmp.c new file mode 100644 index 00000000000..a0c6633adeb --- /dev/null +++ b/sys/lib/libkern/strncasecmp.c @@ -0,0 +1,66 @@ +/* $OpenBSD: strncasecmp.c,v 1.1 1996/02/29 13:27:50 niklas Exp $ */ + +/* + * Copyright (c) 1994 Christian E. Hopps + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Christian E. Hopps. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#if defined(LIBC_SCCS) && !defined(lint) +static char *rcsid = "$Id: strncasecmp.c,v 1.1 1996/02/29 13:27:50 niklas Exp $"; +#endif /* LIBC_SCCS and not lint */ + +#include <string.h> + +int +strncasecmp(s1, s2, n) + const char *s1; + const char *s2; + size_t n; +{ + if (n == 0) + return 0; + + do { + unsigned char c1 = (unsigned char) *s1++; + unsigned char c2 = (unsigned char) *s2++; + + if (c1 != c2) { + if (c1 >= 'A' && c1 <= 'Z' && + c2 >= 'a' && c2 <= 'z') + c1 += 'a' - 'A'; + else if (c1 >= 'a' && c1 <= 'z' && + c2 >= 'A' && c2 <= 'Z') + c2 += 'a' - 'A'; + if (c1 != c2) + return c1 - c2; + } + if (c1 == 0) + break; + } while (--n != 0); + + return 0; +} |