| .TH RUNESTRCAT 3 |
| .SH NAME |
| runestrcat, |
| runestrncat, |
| runestrcmp, |
| runestrncmp, |
| runestrcpy, |
| runestrncpy, |
| runestrecpy, |
| runestrlen, |
| runestrchr, |
| runestrrchr, |
| runestrdup, |
| runestrstr \- rune string operations |
| .SH SYNOPSIS |
| .B #include <u.h> |
| .br |
| .B #include <libc.h> |
| .PP |
| .ta \w'\fLRune* \fP'u |
| .B |
| Rune* runestrcat(Rune *s1, Rune *s2) |
| .PP |
| .B |
| Rune* runestrncat(Rune *s1, Rune *s2, long n) |
| .PP |
| .B |
| int runestrcmp(Rune *s1, Rune *s2) |
| .PP |
| .B |
| int runestrncmp(Rune *s1, Rune *s2, long n) |
| .PP |
| .B |
| Rune* runestrcpy(Rune *s1, Rune *s2) |
| .PP |
| .B |
| Rune* runestrncpy(Rune *s1, Rune *s2, long n) |
| .PP |
| .B |
| Rune* runestrecpy(Rune *s1, Rune *es1, Rune *s2) |
| .PP |
| .B |
| long runestrlen(Rune *s) |
| .PP |
| .B |
| Rune* runestrchr(Rune *s, Rune c) |
| .PP |
| .B |
| Rune* runestrrchr(Rune *s, Rune c) |
| .PP |
| .B |
| Rune* runestrdup(Rune *s) |
| .PP |
| .B |
| Rune* runestrstr(Rune *s1, Rune *s2) |
| .SH DESCRIPTION |
| These functions are rune string analogues of |
| the corresponding functions in |
| .IR strcat (3). |
| .SH SOURCE |
| .B \*9/src/lib9 |
| .SH SEE ALSO |
| .IR memory (3), |
| .IR rune (3), |
| .IR strcat (3) |
| .SH BUGS |
| The outcome of overlapping moves varies among implementations. |