diff options
author | Alexander Gutkin <agutkin@google.com> | 2014-02-28 11:33:45 +0000 |
---|---|---|
committer | Alexander Gutkin <agutkin@google.com> | 2014-02-28 11:33:45 +0000 |
commit | 439f3d1f87279a8be383ee01ef98cb9a5ca68573 (patch) | |
tree | de42c34fb1e2a4f5997782c71730ffea07667d52 /utfutf.c | |
parent | 86456b0f43cde20930f39abe12c9255c3e185712 (diff) | |
download | libutf-439f3d1f87279a8be383ee01ef98cb9a5ca68573.tar.gz |
Initial revision of libutf library.
Libutf is a port of Plan 9's support library for UTF-8 and Unicode.
Downloaded from http://swtch.com/plan9port/unix/libutf.tgz. No
modifications required to compile.
Change-Id: I5646bc8709bafc14039d30e28a0c69a804e78548
Diffstat (limited to 'utfutf.c')
-rw-r--r-- | utfutf.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/utfutf.c b/utfutf.c new file mode 100644 index 0000000..13c8502 --- /dev/null +++ b/utfutf.c @@ -0,0 +1,41 @@ +/* + * The authors of this software are Rob Pike and Ken Thompson. + * Copyright (c) 2002 by Lucent Technologies. + * Permission to use, copy, modify, and distribute this software for any + * purpose without fee is hereby granted, provided that this entire notice + * is included in all copies of any software which is or includes a copy + * or modification of this software and in all copies of the supporting + * documentation for such software. + * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE + * ANY REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY + * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + */ +#include <stdarg.h> +#include <string.h> +#include "plan9.h" +#include "utf.h" + + +/* + * Return pointer to first occurrence of s2 in s1, + * 0 if none + */ +char* +utfutf(char *s1, char *s2) +{ + char *p; + long f, n1, n2; + Rune r; + + n1 = chartorune(&r, s2); + f = r; + if(f <= Runesync) /* represents self */ + return strstr(s1, s2); + + n2 = strlen(s2); + for(p=s1; p=utfrune(p, f); p+=n1) + if(strncmp(p, s2, n2) == 0) + return p; + return 0; +} |