| utfrrune.c - 9base - revived minimalist port of Plan 9 userland to Unix | |
| git clone git://git.suckless.org/9base | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| utfrrune.c (1197B) | |
| --- | |
| 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 char* | |
| 20 utfrrune(char *s, long c) | |
| 21 { | |
| 22 long c1; | |
| 23 Rune r; | |
| 24 char *s1; | |
| 25 | |
| 26 if(c < Runesync) /* not part of utf sequence */ | |
| 27 return strrchr(s, c); | |
| 28 | |
| 29 s1 = 0; | |
| 30 for(;;) { | |
| 31 c1 = *(uchar*)s; | |
| 32 if(c1 < Runeself) { /* one byte rune */ | |
| 33 if(c1 == 0) | |
| 34 return s1; | |
| 35 if(c1 == c) | |
| 36 s1 = s; | |
| 37 s++; | |
| 38 continue; | |
| 39 } | |
| 40 c1 = chartorune(&r, s); | |
| 41 if(r == c) | |
| 42 s1 = s; | |
| 43 s += c1; | |
| 44 } | |
| 45 } |