From: Rocco Rutte Date: Sun, 15 Mar 2009 15:44:11 +0000 (+0100) Subject: Add wcscasecmp() compatibility function (for OS X) X-Git-Tag: neomutt-20160307~752 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c10f31d3138e6e5bd72bb31335f5e7e442059fa5;p=neomutt Add wcscasecmp() compatibility function (for OS X) --- diff --git a/configure.ac b/configure.ac index 80566d0d8..c45344338 100644 --- a/configure.ac +++ b/configure.ac @@ -343,7 +343,7 @@ AC_CHECK_TYPE(ssize_t, int) AC_CHECK_FUNCS(fgetpos memmove setegid srand48 strerror) -AC_REPLACE_FUNCS([setenv strcasecmp strdup strsep strtok_r]) +AC_REPLACE_FUNCS([setenv strcasecmp strdup strsep strtok_r wcscasecmp]) AC_CHECK_FUNC(getopt) if test $ac_cv_func_getopt = yes; then diff --git a/protos.h b/protos.h index e1f9f804e..bc49b8df0 100644 --- a/protos.h +++ b/protos.h @@ -549,3 +549,6 @@ char *strsep (char **, const char *); char *strtok_r (char *, const char *, char **); #endif +#ifndef HAVE_WCSCASECMP +int wcscasecmp (const wchar_t *a, const wchar_t *b); +#endif diff --git a/wcscasecmp.c b/wcscasecmp.c new file mode 100644 index 000000000..52388c932 --- /dev/null +++ b/wcscasecmp.c @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2009 Rocco Rutte + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#if HAVE_CONFIG_H +# include "config.h" +#endif + +#include "mutt.h" +#include "mbyte.h" + +int wcscasecmp (const wchar_t *a, const wchar_t *b) +{ + const wchar_t *p = a; + const wchar_t *q = b; + int i; + + if (!a && !b) + return 0; + if (!a && b) + return -1; + if (a && !b) + return 1; + + for ( ; *p || *q; p++, q++) + { + if ((i = towlower (*p)) - towlower (*q)) + return i; + } + return 0; +}