.TH RUNE 10.2.SH NAMErunetochar, chartorune, runelen, fullrune, utflen, utfrune, utfrrune, utfutf \- rune/UTF conversion.SH SYNOPSIS.ta \w'\fLchar*xx'u.PP.Bint runetochar(char *s, Rune *r).PP.Bint chartorune(Rune *r, char *s).PP.Bint runelen(long r).PP.Bint fullrune(char *s, int n).PP.Bint utflen(char *s).PP.Bchar* utfrune(char *s, long c).PP.Bchar* utfrrune(char *s, long c).PP.Bchar* utfutf(char *s1, char *s2).SH DESCRIPTIONThese routines convert to and from a.SM UTFbyte stream and runes..PP.I Runetocharcopies one rune at.I rto at most.B UTFmaxbytes starting at.I sand returns the number of bytes copied..BR UTFmax ,defined as.B 3in.BR <libc.h> ,is the maximum number of bytes required to represent a rune..PP.I Chartorunecopies at most.B UTFmaxbytes starting at.I sto one rune at.I rand returns the number of bytes copied.If the input is not exactly in.SM UTFformat,.I chartorunewill convert to 0x80 and return 1..PP.I Runelenreturns the number of bytesrequired to convert.I rinto.SM UTF..PP.I Fullrunereturns 1 if the string.I sof length.I nis long enough to be decoded by.I chartoruneand 0 otherwise.This does not guarantee that the stringcontains a legal.SM UTFencoding.This routine is used by programs thatobtain input a byte ata time and need to know when a full runehas arrived..PPThe following routines are analogous to thecorresponding string routines with.B utfsubstituted for.B strand.B runesubstituted for.BR chr ..PP.I Utflenreturns the number of runes thatare represented by the.SM UTFstring.IR s ..PP.I Utfrune.RI ( utfrrune )returns a pointer to the first (last)occurrence of rune.I cin the.SM UTFstring.IR s ,or 0 if.I cdoes not occur in the string.The NUL byte terminating a string is considered tobe part of the string.IR s ..PP.I Utfutfreturns a pointer to the first occurrence ofthe.SM UTFstring.I s2as a.SM UTFsubstring of.IR s1 ,or 0 if there is none.If.I s2is the null string,.I utfutfreturns.IR s1 ..SH SOURCE.B /libkern/rune.c.br.B /libkern/runestrlen.c.br.B /libkern/utflen.c.br.B /libkern/utfrrune.c.br.B /libkern/utfrune.c.SH SEE ALSO.IR convcs (2),.IR utf (6)
.TH RUNE 10.2
.SH NAME
runetochar, chartorune, runelen, fullrune, utflen, utfrune, utfrrune, utfutf \- rune/UTF conversion
.SH SYNOPSIS
.ta \w'\fLchar*xx'u
.PP
.B
int runetochar(char *s, Rune *r)
.PP
.B
int chartorune(Rune *r, char *s)
.PP
.B
int runelen(long r)
.PP
.B
int fullrune(char *s, int n)
.PP
.B
int utflen(char *s)
.PP
.B
char* utfrune(char *s, long c)
.PP
.B
char* utfrrune(char *s, long c)
.PP
.B
char* utfutf(char *s1, char *s2)
.SH DESCRIPTION
These routines convert to and from a
.SM UTF
byte stream and runes.
.PP
.I Runetochar
copies one rune at
.I r
to at most
.B UTFmax
bytes starting at
.I s
and returns the number of bytes copied.
.BR UTFmax ,
defined as
.B 3
in
.BR <libc.h> ,
is the maximum number of bytes required to represent a rune.
.PP
.I Chartorune
copies at most
.B UTFmax
bytes starting at
.I s
to one rune at
.I r
and returns the number of bytes copied.
If the input is not exactly in
.SM UTF
format,
.I chartorune
will convert to 0x80 and return 1.
.PP
.I Runelen
returns the number of bytes
required to convert
.I r
into
.SM UTF.
.PP
.I Fullrune
returns 1 if the string
.I s
of length
.I n
is long enough to be decoded by
.I chartorune
and 0 otherwise.
This does not guarantee that the string
contains a legal
.SM 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.
.PP
The following routines are analogous to the
corresponding string routines with
.B utf
substituted for
.B str
and
.B rune
substituted for
.BR chr .
.PP
.I Utflen
returns the number of runes that
are represented by the
.SM UTF
string
.IR s .
.PP
.I Utfrune
.RI ( utfrrune )
returns a pointer to the first (last)
occurrence of rune
.I c
in the
.SM UTF
string
.IR s ,
or 0 if
.I c
does not occur in the string.
The NUL byte terminating a string is considered to
be part of the string
.IR s .
.PP
.I Utfutf
returns a pointer to the first occurrence of
the
.SM UTF
string
.I s2
as a
.SM UTF
substring of
.IR s1 ,
or 0 if there is none.
If
.I s2
is the null string,
.I utfutf
returns
.IR s1 .
.SH SOURCE
.B /libkern/rune.c
.br
.B /libkern/runestrlen.c
.br
.B /libkern/utflen.c
.br
.B /libkern/utfrrune.c
.br
.B /libkern/utfrune.c
.SH SEE ALSO
.IR convcs (2),
.IR utf (6)