sl@0: /* sl@0: * Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: sl@0: * FUNCTION sl@0: * <>---character string compare sl@0: * INDEX sl@0: * strncmp sl@0: * ANSI_SYNOPSIS sl@0: * #include sl@0: * int strncmp(const char *<[a]>, const char * <[b]>, size_t <[length]>); sl@0: * TRAD_SYNOPSIS sl@0: * #include sl@0: * int strncmp(<[a]>, <[b]>, <[length]>) sl@0: * char *<[a]>; sl@0: * char *<[b]>; sl@0: * size_t <[length]> sl@0: * <> compares up to <[length]> characters sl@0: * from the string at <[a]> to the string at <[b]>. sl@0: * RETURNS sl@0: * If <<*<[a]>>> sorts lexicographically after <<*<[b]>>>, sl@0: * <> returns a number greater than zero. If the two sl@0: * strings are equivalent, <> returns zero. If <<*<[a]>>> sl@0: * sorts lexicographically before <<*<[b]>>>, <> returns a sl@0: * number less than zero. sl@0: * PORTABILITY sl@0: * <> is ANSI C. sl@0: * <> requires no supporting OS subroutines. sl@0: * QUICKREF sl@0: * strncmp ansi pure sl@0: * sl@0: * sl@0: */ sl@0: sl@0: sl@0: sl@0: #include sl@0: sl@0: /** sl@0: Compare some characters of two strings. sl@0: Compares the first num characters of string1 to the first num characters of string2. sl@0: The comparison is performed character by character. sl@0: If a character that is not equal in both strings is found the function ends sl@0: and returns a value that determines which of them was greater. sl@0: @return a value indicating the lexicographical relation between the strings. sl@0: @param s1 Null-terminated string to compare sl@0: @param s2 Null-terminated string to compare. sl@0: @param n Maximum number of characters to compare. sl@0: */ sl@0: EXPORT_C int sl@0: strncmp (const char *s1, const char *s2, size_t n) sl@0: { sl@0: const unsigned char* p1 = (const unsigned char*)s1; sl@0: const unsigned char* p2 = (const unsigned char*)s2; sl@0: sl@0: if (n == 0) sl@0: return 0; sl@0: sl@0: for (;;) sl@0: { sl@0: int c1 = *p1++; sl@0: int d = c1 - *p2++; sl@0: if (d != 0) sl@0: return d; sl@0: if (c1 == 0) sl@0: return d; sl@0: if (--n == 0) sl@0: return d; sl@0: } sl@0: }