Blame missing_d/wcmisc.c

Packit 575503
/* wcmisc.c - replace wcXXXX routines
Packit 575503
   Copyright (C) 2011 Free Software Foundation, Inc.
Packit 575503
Packit 575503
   This program is free software; you can redistribute it and/or modify
Packit 575503
   it under the terms of the GNU General Public License as published by
Packit 575503
   the Free Software Foundation; either version 3, or (at your option)
Packit 575503
   any later version.
Packit 575503
Packit 575503
   This program is distributed in the hope that it will be useful,
Packit 575503
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 575503
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 575503
   GNU General Public License for more details.
Packit 575503
Packit 575503
   You should have received a copy of the GNU General Public License
Packit 575503
   along with this program; if not, write to the Free Software
Packit 575503
   Foundation, Inc.,
Packit 575503
   51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA */
Packit 575503
Packit 575503
#if !defined(HAVE_WCTYPE) || !defined(HAVE_ISWCTYPE)
Packit 575503
static const char *classes[] = {
Packit 575503
	"<dummy>",
Packit 575503
	"alnum",
Packit 575503
	"alpha",
Packit 575503
	"blank",
Packit 575503
	"cntrl",
Packit 575503
	"digit",
Packit 575503
	"graph",
Packit 575503
	"lower",
Packit 575503
	"print",
Packit 575503
	"punct",
Packit 575503
	"space",
Packit 575503
	"upper",
Packit 575503
	"xdigit",
Packit 575503
	NULL
Packit 575503
};
Packit 575503
#endif
Packit 575503
Packit 575503
#ifndef HAVE_ISWCTYPE
Packit 575503
static int is_blank (int c)
Packit 575503
{
Packit 575503
   return (c == ' ' || c == '\t');
Packit 575503
}
Packit 575503
#endif
Packit 575503
Packit 575503
#ifndef HAVE_WCTYPE
Packit 575503
wctype_t wctype(const char *name)
Packit 575503
{
Packit 575503
	int i;
Packit 575503
Packit 575503
	for (i = 1; classes[i] != NULL; i++)
Packit 575503
		if (strcmp(name, classes[i]) == 0)
Packit 575503
			return i;
Packit 575503
Packit 575503
	return 0;
Packit 575503
}
Packit 575503
#endif
Packit 575503
Packit 575503
#ifndef HAVE_ISWCTYPE
Packit 575503
int iswctype(wint_t wc, wctype_t desc)
Packit 575503
{
Packit 575503
	int j = sizeof(classes) / sizeof(classes[0]);
Packit 575503
Packit 575503
	if (desc >= j || desc == 0)
Packit 575503
		return 0;
Packit 575503
Packit 575503
	switch (desc) {
Packit 575503
	case 1:		return isalnum(wc);
Packit 575503
	case 2:		return isalpha(wc);
Packit 575503
	case 3:		return is_blank(wc);
Packit 575503
	case 4:		return iscntrl(wc);
Packit 575503
	case 5:		return isdigit(wc);
Packit 575503
	case 6:		return isgraph(wc);
Packit 575503
	case 7:		return islower(wc);
Packit 575503
	case 8:		return isprint(wc);
Packit 575503
	case 9:		return ispunct(wc);
Packit 575503
	case 10:	return isspace(wc);
Packit 575503
	case 11:	return isupper(wc);
Packit 575503
	case 12:	return isxdigit(wc);
Packit 575503
	default:	return 0;
Packit 575503
	}
Packit 575503
}
Packit 575503
#endif
Packit 575503
Packit 575503
#ifndef HAVE_WCSCOLL
Packit 575503
int wcscoll(const wchar_t *ws1, const wchar_t *ws2)
Packit 575503
{
Packit 575503
	size_t i;
Packit 575503
Packit 575503
	for (i = 0; ws1[i] != 0 && ws2[i] != 0; i++) {
Packit 575503
		if (ws1[i] < ws2[i])
Packit 575503
			return -1;
Packit 575503
		else if (ws1[i] > ws2[i])
Packit 575503
			return 1;
Packit 575503
	}
Packit 575503
Packit 575503
	return (ws1[i] - ws2[i]);
Packit 575503
}
Packit 575503
#endif
Packit 575503
Packit 575503
/*wcmisc.c*/