From 167d5e33fcb821e51e2f9dcf460591737c3c7972 Mon Sep 17 00:00:00 2001 From: "Peter S. Mazinger" Date: Tue, 3 Jan 2006 14:50:18 +0000 Subject: Complete split of all the string functions. Hope haven't broken too much. wcscoll/strcoll needs some love ... --- libc/string/strcmp.c | 46 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 8 deletions(-) (limited to 'libc/string/strcmp.c') diff --git a/libc/string/strcmp.c b/libc/string/strcmp.c index fbcd6380c..1fb8625ff 100644 --- a/libc/string/strcmp.c +++ b/libc/string/strcmp.c @@ -1,19 +1,49 @@ /* + * Copyright (C) 2002 Manuel Novoa III * Copyright (C) 2000-2005 Erik Andersen * * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. */ -#define L_strcmp -#define Wstrcmp __strcmp +#include "_string.h" -#include "wstring.c" +#ifdef WANT_WIDE +# define __Wstrcmp __wcscmp +# define Wstrcmp wcscmp +#else +# define __Wstrcmp __strcmp +# define Wstrcmp strcmp +#endif + +int attribute_hidden __Wstrcmp(register const Wchar *s1, register const Wchar *s2) +{ +#ifdef WANT_WIDE + while (*((Wuchar *)s1) == *((Wuchar *)s2)) { + if (!*s1++) { + return 0; + } + ++s2; + } -strong_alias(__strcmp, strcmp) + return (*((Wuchar *)s1) < *((Wuchar *)s2)) ? -1 : 1; +#else + int r; -#ifdef __LOCALE_C_ONLY -hidden_strong_alias(__strcmp, __strcoll) -strong_alias(__strcmp, strcoll) + while (((r = ((int)(*((Wuchar *)s1))) - *((Wuchar *)s2++)) + == 0) && *s1++); + + return r; #endif +} -#undef L_strcmp +strong_alias(__Wstrcmp,Wstrcmp) + +#ifndef __UCLIBC_HAS_LOCALE__ +# ifdef WANT_WIDE +hidden_strong_alias(__wcscmp,__wcscoll) +strong_alias(__wcscmp,wcscoll) +# else +hidden_strong_alias(__strcmp,__strcoll) +strong_alias(__strcmp,strcoll) +# endif +#endif -- cgit v1.2.3