RUNE(2) RUNE(2)
NAME
runetochar, chartorune, runelen, fullrune, utflen, utfrune,
utfrrune, utfutf - rune/UTF conversion
SYNOPSIS
#include <u.h>
#include <libc.h>
int runetochar(char *s, Rune *r)
int chartorune(Rune *r, char *s)
int runelen(long r)
int fullrune(char *s, int n)
int utflen(char *s)
char* utfrune(char *s, long c)
char* utfrrune(char *s, long c)
char* utfutf(char *s1, char *s2)
DESCRIPTION
These routines convert to and from a UTF byte stream and
runes.
Runetochar copies one rune at r to at most UTFmax bytes
starting at s and returns the number of bytes copied.
UTFmax, defined as 3 in <libc.h>, is the maximum number of
bytes required to represent a rune.
Chartorune copies at most UTFmax bytes starting at s to one
rune at r and returns the number of bytes copied. If the
input is not exactly in UTF format, chartorune will convert
to 0x80 and return 1.
Runelen returns the number of bytes required to convert r
into UTF.
Fullrune returns 1 if the string s of length n is long
enough to be decoded by chartorune and 0 otherwise. This
does not guarantee that the string contains a legal UTF
encoding. This routine is used by programs that obtain
input a byte at a time and need to know when a full rune has
arrived.
The following routines are analogous to the corresponding
string routines with utf substituted for str and rune
Page 1 Plan 9 (printed 10/30/25)
RUNE(2) RUNE(2)
substituted for chr.
Utflen returns the number of runes that are represented by
the UTF string s.
Utfrune (utfrrune) returns a pointer to the first (last)
occurrence of rune c in the UTF string s, or 0 if c does not
occur in the string. The NUL byte terminating a string is
considered to be part of the string s.
Utfutf returns a pointer to the first occurrence of the UTF
string s2 as a UTF substring of s1, or 0 if there is none.
If s2 is the null string, utfutf returns s1.
SOURCE
/sys/src/libc/port/rune.c
/sys/src/libc/port/utfrune.c
SEE ALSO
utf(6), tcs(1)
Page 2 Plan 9 (printed 10/30/25)