1d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes/* $OpenBSD: wcsstr.c,v 1.3 2005/08/08 08:05:37 espie Exp $ */ 2d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes/* $NetBSD: wcsstr.c,v 1.3 2003/03/05 20:18:17 tshiozak Exp $ */ 3d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes 43527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner/*- 5d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes * Copyright (c)1999 Citrus Project, 6d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes * All rights reserved. 73527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner * 83527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner * Redistribution and use in source and binary forms, with or without 93527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner * modification, are permitted provided that the following conditions 103527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner * are met: 113527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner * 1. Redistributions of source code must retain the above copyright 123527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner * notice, this list of conditions and the following disclaimer. 133527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner * 2. Redistributions in binary form must reproduce the above copyright 143527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner * notice, this list of conditions and the following disclaimer in the 153527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner * documentation and/or other materials provided with the distribution. 163527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner * 17d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 183527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 193527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 213527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 223527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 233527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 243527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 253527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 263527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 273527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner * SUCH DAMAGE. 28d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes * 29d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes * citrus Id: wcsstr.c,v 1.2 2000/12/21 05:07:25 itojun Exp 303527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner */ 313527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner 323527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner#include <wchar.h> 333527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner 343527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turnerwchar_t * 35d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes#ifdef WCSWCS 36d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hugheswcswcs(const wchar_t *big, const wchar_t *little) 37d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes#else 38d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hugheswcsstr(const wchar_t *big, const wchar_t *little) 39d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes#endif 403527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner{ 41d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes const wchar_t *p; 42d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes const wchar_t *q; 43d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes const wchar_t *r; 44d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes 45d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes if (!*little) { 46d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes /* LINTED interface specification */ 47d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes return (wchar_t *)big; 48d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes } 49d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes if (wcslen(big) < wcslen(little)) 50d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes return NULL; 513527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner 52d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes p = big; 53d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes q = little; 54d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes while (*p) { 55d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes q = little; 56d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes r = p; 57d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes while (*q) { 58d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes if (*r != *q) 59d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes break; 60d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes q++; 61d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes r++; 62d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes } 63d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes if (!*q) { 64d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes /* LINTED interface specification */ 65d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes return (wchar_t *)p; 66d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes } 67d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes p++; 683527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner } 69d299bcfdad959a3a0adf1683605b15a1c3b3ab66Elliott Hughes return NULL; 703527fd6f0df794207215790321824b7844cc712dDavid 'Digit' Turner} 71