| runestrstr.c - 9base - revived minimalist port of Plan 9 userland to Unix | |
| git clone git://git.suckless.org/9base | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| runestrstr.c (1191B) | |
| --- | |
| 1 /* | |
| 2 * The authors of this software are Rob Pike and Ken Thompson. | |
| 3 * Copyright (c) 2002 by Lucent Technologies. | |
| 4 * Permission to use, copy, modify, and distribute this software for any | |
| 5 * purpose without fee is hereby granted, provided that this entire noti… | |
| 6 * is included in all copies of any software which is or includes a copy | |
| 7 * or modification of this software and in all copies of the supporting | |
| 8 * documentation for such software. | |
| 9 * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLI… | |
| 10 * WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES… | |
| 11 * ANY REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABI… | |
| 12 * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. | |
| 13 */ | |
| 14 #include <stdarg.h> | |
| 15 #include <string.h> | |
| 16 #include "plan9.h" | |
| 17 #include "utf.h" | |
| 18 | |
| 19 /* | |
| 20 * Return pointer to first occurrence of s2 in s1, | |
| 21 * 0 if none | |
| 22 */ | |
| 23 Rune* | |
| 24 runestrstr(Rune *s1, Rune *s2) | |
| 25 { | |
| 26 Rune *p, *pa, *pb; | |
| 27 int c0, c; | |
| 28 | |
| 29 c0 = *s2; | |
| 30 if(c0 == 0) | |
| 31 return s1; | |
| 32 s2++; | |
| 33 for(p=runestrchr(s1, c0); p; p=runestrchr(p+1, c0)) { | |
| 34 pa = p; | |
| 35 for(pb=s2;; pb++) { | |
| 36 c = *pb; | |
| 37 if(c == 0) | |
| 38 return p; | |
| 39 if(c != *++pa) | |
| 40 break; | |
| 41 } | |
| 42 } | |
| 43 return 0; | |
| 44 } |