Portable utf-8 and general system library
C C++ M4 Scheme Shell Makefile
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
dist
docs
encodings
etc
include/libu8
lib
licenses
staging
tests
README.md
UnicodeData.txt
bytebuf.c
chardata.c
charmaps.h
cityhash.c
configure
configure.ac
contour.c
convert.c
cryptofns.c
ctype.c
decomp.h
digestfns.c
entities.h
exceptions.c
filefns.c
fileio.c
filestring.c
gitup
libu8.c
libu8fns.c
libu8io.c
libu8text.c
logging.c
makefile.in
netfns.c
pathfns.c
printf.c
rusage.c
signals.c
srvfns.c
streamio.c
stringfns.c
threading.c
timefns.c
u8stdio.c
u8syslog.c
uniread.fdx
uniread.scm
xfiles.c

README.md

Welcome to libu8

libu8 is a portability and utility library written in modern C for Unix-based platforms. libu8 is licensed under the LGPL and the GPL version 2 or later. You can find the source to libu8 on github.

libu8 is a portability and utility library written in modern C for Unix-based platforms. libu8 is licensed under the LGPL (V2.1) and GPL (V2) you can find the source on github. Detailed robodocs are available (generated by Doxygen).

libu8 provides:

  • string utilities for portably working with UTF-8 encodings

  • stream-based text I/O using UTF-8 internally but allowing output to multiple encodings

  • a client networking library for socket io, connection pools, and simple hostname lookup;

  • extensible and customizable logging functions (using u8_printf);

  • wrappers for time-related functions allowing fine-grained times and specification of arbitrary time zones;

  • an exception handling library using setjmp/longjmp with unwinds and dynamic error catching;

  • signal handlers for turning synchronous signals into exceptions;

  • a server networking library for lightweight multi-threaded server implementation.

  • an extensible printf (u8_printf) function including output to strings;

  • various hash and digest functions, including MD5, Google's cityhash, and various SHAx functions;

  • cryptographic function wrappers using local libraries;

  • a variety of file or URI path manipulation functions;

  • a wrapper for rusage() resource system calls;

  • wrappers for accessing file and directory contents and metadata;

  • support for lookup up and interpreting named character entities;

libu8 is especially intended for software which uses UTF-8 internally but may interact with applications and services employing different character encodings. However, it has grown to provide a variety of other portable functions.