Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Plan 9 compatible C89 UTF-8 library
C Awk Makefile
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
bin
include
share
src
test
.gitattributes
.gitignore
.travis.yml
LICENSE merge FRIGN's downstream sbase mkrunetype.awk
Makefile
README.md
config.mk

README.md

libutf

Build Status

This is a C89 UTF-8 library, with an API compatible with that of Plan 9's libutf, but with a number of improvements:

  • Support for runes beyond the Basic Multilingual Plane.
  • utflen and utfnlen cannot overflow on 32- or 64-bit machines.
  • chartorune treats all invalid codepoints as though Runeerror.
  • fullrune, utfecpy, and utfnlen do not overestimate the length of malformed runes.
  • An extra function, charntorune(p,s,n), equivalent to fullrune(s,n) ? chartorune(p,s) : 0.
  • Runeerror may be set to an alternative replacement value, such as -1, to be used instead of U+FFFD.

Differences to be aware of:

  • UTFmax is 6, though runetochar will never write more than 4 bytes. Plan 9's UTFmax is 3.
  • chartorune may consume multiple bytes for each illegal rune. Plan 9 always consumes 1.
  • runelen and runetochar return 0 if the rune is too large to print. Plan 9 erroneously returns UTFmax.
Something went wrong with that request. Please try again.