wcsspn.c revision eb93ebffba21e2c9b8a12bb86db60d38c7750270
1d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd/*- 2d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Copyright (c)1999 Citrus Project, 3d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * All rights reserved. 4d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * 5d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Redistribution and use in source and binary forms, with or without 6d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * modification, are permitted provided that the following conditions 7d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * are met: 8d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * 1. Redistributions of source code must retain the above copyright 9d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * notice, this list of conditions and the following disclaimer. 10d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * 2. Redistributions in binary form must reproduce the above copyright 11d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * notice, this list of conditions and the following disclaimer in the 12d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * documentation and/or other materials provided with the distribution. 13d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * 14d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * SUCH DAMAGE. 25d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * 26d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * citrus Id: wcsspn.c,v 1.1 1999/12/29 21:47:45 tshiozak Exp 27d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 28d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 29d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd#include <sys/cdefs.h> 30d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd#if 0 31d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd#if defined(LIBC_SCCS) && !defined(lint) 32d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd__RCSID("$NetBSD: wcsspn.c,v 1.1 2000/12/23 23:14:37 itojun Exp $"); 33d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd#endif /* LIBC_SCCS and not lint */ 34d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd#endif 35d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd__FBSDID("$FreeBSD$"); 36d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 37d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd#include <wchar.h> 38d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 39d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddsize_t 40d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddwcsspn(const wchar_t *s, const wchar_t *set) 41d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd{ 42d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd const wchar_t *p; 43d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd const wchar_t *q; 44d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 45d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd p = s; 46d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd while (*p) { 47d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd q = set; 48d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd while (*q) { 49d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd if (*p == *q) 50d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd break; 51d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd q++; 52d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 53d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd if (!*q) 54d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd goto done; 55d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd p++; 56d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 57d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 58d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodddone: 59d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return (p - s); 60d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd} 61d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd