Reorg
This commit is contained in:
parent
2df2758496
commit
522b0689c3
180 changed files with 245 additions and 6144 deletions
|
|
@ -1,6 +0,0 @@
|
|||
CC=gcc
|
||||
CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I${PREFIX}/include
|
||||
O=o
|
||||
AR=ar
|
||||
ARFLAGS=rvc
|
||||
NAN=nan64.$O
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
CC=gcc
|
||||
CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include
|
||||
O=o
|
||||
AR=ar
|
||||
ARFLAGS=rvc
|
||||
NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
|
||||
NAN=nan64.$O
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
CC=cc
|
||||
CFLAGS=-O -c -Ae -I.
|
||||
O=o
|
||||
AR=ar
|
||||
ARFLAGS=rvc
|
||||
NAN=nan64.$O
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
CC=gcc
|
||||
CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I.
|
||||
O=o
|
||||
AR=ar
|
||||
ARFLAGS=rvc
|
||||
NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
|
||||
NAN=nan64.$O
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
CC=gcc
|
||||
CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include
|
||||
O=o
|
||||
AR=ar
|
||||
ARFLAGS=rvc
|
||||
NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
|
||||
NAN=nan64.$O
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
CC=cc
|
||||
CFLAGS+=-g -c -I.
|
||||
O=o
|
||||
AR=ar
|
||||
ARFLAGS=rvc
|
||||
NAN=nan64.$O
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
include Make.SunOS-sun4u-$(CC)
|
||||
NAN=nan64.$O
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
CC=cc
|
||||
CFLAGS+=-g -c -I. -O
|
||||
O=o
|
||||
AR=ar
|
||||
ARFLAGS=rvc
|
||||
NAN=nan64.$O
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
CC=gcc
|
||||
CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c
|
||||
O=o
|
||||
AR=ar
|
||||
ARFLAGS=rvc
|
||||
NAN=nan64.$O
|
||||
|
|
@ -1,27 +1,7 @@
|
|||
|
||||
# this works in gnu make
|
||||
SYSNAME:=${shell uname}
|
||||
OBJTYPE:=${shell uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'}
|
||||
|
||||
# this works in bsd make
|
||||
SYSNAME!=uname
|
||||
OBJTYPE!=uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'
|
||||
|
||||
# the gnu rules will mess up bsd but not vice versa,
|
||||
# hence the gnu rules come first.
|
||||
|
||||
include Make.$(SYSNAME)-$(OBJTYPE)
|
||||
|
||||
PREFIX=/usr/local
|
||||
|
||||
NUKEFILES=
|
||||
|
||||
TGZFILES=
|
||||
9SRC=..
|
||||
include $(9SRC)/Makehdr
|
||||
|
||||
LIB=libutf.a
|
||||
VERSION=2.0
|
||||
PORTPLACE=devel/libutf
|
||||
NAME=libutf
|
||||
|
||||
OFILES=\
|
||||
rune.$O\
|
||||
|
|
@ -46,67 +26,6 @@ OFILES=\
|
|||
utfutf.$O\
|
||||
|
||||
HFILES=\
|
||||
utf.h\
|
||||
$(9SRC)/include/utf.h\
|
||||
|
||||
all: $(LIB)
|
||||
|
||||
install: $(LIB)
|
||||
test -d $(PREFIX)/man/man3 || mkdir $(PREFIX)/man/man3
|
||||
install -c -m 0644 isalpharune.3 $(PREFIX)/man/man3/isalpharune.3
|
||||
install -c -m 0644 utf.7 $(PREFIX)/man/man7/utf.7
|
||||
install -c -m 0644 rune.3 $(PREFIX)/man/man3/rune.3
|
||||
install -c -m 0644 runestrcat.3 $(PREFIX)/man/man3/runestrcat.3
|
||||
install -c -m 0644 utf.h $(PREFIX)/include/utf.h
|
||||
install -c -m 0644 $(LIB) $(PREFIX)/lib/$(LIB)
|
||||
|
||||
$(LIB): $(OFILES)
|
||||
$(AR) $(ARFLAGS) $(LIB) $(OFILES)
|
||||
|
||||
NUKEFILES+=$(LIB)
|
||||
.c.$O:
|
||||
$(CC) $(CFLAGS) -I$(PREFIX)/include $*.c
|
||||
|
||||
%.$O: %.c
|
||||
$(CC) $(CFLAGS) -I$(PREFIX)/include $*.c
|
||||
|
||||
|
||||
$(OFILES): $(HFILES)
|
||||
|
||||
tgz:
|
||||
rm -rf $(NAME)-$(VERSION)
|
||||
mkdir $(NAME)-$(VERSION)
|
||||
cp Makefile Make.* README LICENSE NOTICE *.[ch137] rpm.spec bundle.ports $(TGZFILES) $(NAME)-$(VERSION)
|
||||
tar cf - $(NAME)-$(VERSION) | gzip >$(NAME)-$(VERSION).tgz
|
||||
rm -rf $(NAME)-$(VERSION)
|
||||
|
||||
clean:
|
||||
rm -f $(OFILES) $(LIB)
|
||||
|
||||
nuke:
|
||||
rm -f $(OFILES) *.tgz *.rpm $(NUKEFILES)
|
||||
|
||||
rpm:
|
||||
make tgz
|
||||
cp $(NAME)-$(VERSION).tgz /usr/src/RPM/SOURCES
|
||||
rpm -ba rpm.spec
|
||||
cp /usr/src/RPM/SRPMS/$(NAME)-$(VERSION)-1.src.rpm .
|
||||
cp /usr/src/RPM/RPMS/i586/$(NAME)-$(VERSION)-1.i586.rpm .
|
||||
scp *.rpm rsc@amsterdam.lcs.mit.edu:public_html/software
|
||||
|
||||
PORTDIR=/usr/ports/$(PORTPLACE)
|
||||
|
||||
ports:
|
||||
make tgz
|
||||
rm -rf $(PORTDIR)
|
||||
mkdir $(PORTDIR)
|
||||
cp $(NAME)-$(VERSION).tgz /usr/ports/distfiles
|
||||
cat bundle.ports | (cd $(PORTDIR) && awk '$$1=="---" && $$3=="---" { ofile=$$2; next} {if(ofile) print >ofile}')
|
||||
(cd $(PORTDIR); make makesum)
|
||||
(cd $(PORTDIR); make)
|
||||
(cd $(PORTDIR); /usr/local/bin/portlint)
|
||||
rm -rf $(PORTDIR)/work
|
||||
shar `find $(PORTDIR)` > ports.shar
|
||||
(cd $(PORTDIR); tar cf - *) | gzip >$(NAME)-$(VERSION)-ports.tgz
|
||||
scp *.tgz rsc@amsterdam.lcs.mit.edu:public_html/software
|
||||
|
||||
.phony: all clean nuke install tgz rpm ports
|
||||
include $(9SRC)/Makesyslib
|
||||
|
|
|
|||
|
|
@ -1,47 +0,0 @@
|
|||
.c.$O:
|
||||
$(CC) $(CFLAGS) -I/usr/X11R6/include -I../sam -I$(PREFIX)/include $*.c
|
||||
|
||||
%.$O: %.c
|
||||
$(CC) $(CFLAGS) -I/usr/X11R6/include -I../sam -I$(PREFIX)/include $*.c
|
||||
|
||||
|
||||
$(OFILES): $(HFILES)
|
||||
|
||||
tgz:
|
||||
rm -rf $(NAME)-$(VERSION)
|
||||
mkdir $(NAME)-$(VERSION)
|
||||
cp Makefile Make.* README LICENSE NOTICE *.[ch137] rpm.spec bundle.ports $(TGZFILES) $(NAME)-$(VERSION)
|
||||
tar cf - $(NAME)-$(VERSION) | gzip >$(NAME)-$(VERSION).tgz
|
||||
rm -rf $(NAME)-$(VERSION)
|
||||
|
||||
clean:
|
||||
rm -f $(OFILES) $(LIB)
|
||||
|
||||
nuke:
|
||||
rm -f $(OFILES) *.tgz *.rpm $(NUKEFILES)
|
||||
|
||||
rpm:
|
||||
make tgz
|
||||
cp $(NAME)-$(VERSION).tgz /usr/src/RPM/SOURCES
|
||||
rpm -ba rpm.spec
|
||||
cp /usr/src/RPM/SRPMS/$(NAME)-$(VERSION)-1.src.rpm .
|
||||
cp /usr/src/RPM/RPMS/i586/$(NAME)-$(VERSION)-1.i586.rpm .
|
||||
scp *.rpm rsc@amsterdam.lcs.mit.edu:public_html/software
|
||||
|
||||
PORTDIR=/usr/ports/$(PORTPLACE)
|
||||
|
||||
ports:
|
||||
make tgz
|
||||
rm -rf $(PORTDIR)
|
||||
mkdir $(PORTDIR)
|
||||
cp $(NAME)-$(VERSION).tgz /usr/ports/distfiles
|
||||
cat bundle.ports | (cd $(PORTDIR) && awk '$$1=="---" && $$3=="---" { ofile=$$2; next} {if(ofile) print >ofile}')
|
||||
(cd $(PORTDIR); make makesum)
|
||||
(cd $(PORTDIR); make)
|
||||
(cd $(PORTDIR); /usr/local/bin/portlint)
|
||||
rm -rf $(PORTDIR)/work
|
||||
shar `find $(PORTDIR)` > ports.shar
|
||||
(cd $(PORTDIR); tar cf - *) | gzip >$(NAME)-$(VERSION)-ports.tgz
|
||||
scp *.tgz rsc@amsterdam.lcs.mit.edu:public_html/software
|
||||
|
||||
.phony: all clean nuke install tgz rpm ports
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
|
||||
$(TARG): $(OFILES)
|
||||
$(CC) -o $(TARG) $(OFILES) -L$(PREFIX)/lib -lframe -ldraw -lthread -l9 -lregexp9 -lbio -lfmt -lutf -L/usr/X11R6/lib -lX11 -lm
|
||||
|
||||
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
$(LIB): $(OFILES)
|
||||
$(AR) $(ARFLAGS) $(LIB) $(OFILES)
|
||||
|
||||
NUKEFILES+=$(LIB)
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
LIB=libutf.a
|
||||
VERSION=2.0
|
||||
PORTPLACE=devel/libutf
|
||||
NAME=libutf
|
||||
|
||||
OFILES=\
|
||||
rune.$O\
|
||||
runestrcat.$O\
|
||||
runestrchr.$O\
|
||||
runestrcmp.$O\
|
||||
runestrcpy.$O\
|
||||
runestrdup.$O\
|
||||
runestrlen.$O\
|
||||
runestrecpy.$O\
|
||||
runestrncat.$O\
|
||||
runestrncmp.$O\
|
||||
runestrncpy.$O\
|
||||
runestrrchr.$O\
|
||||
runestrstr.$O\
|
||||
runetype.$O\
|
||||
utfecpy.$O\
|
||||
utflen.$O\
|
||||
utfnlen.$O\
|
||||
utfrrune.$O\
|
||||
utfrune.$O\
|
||||
utfutf.$O\
|
||||
|
||||
HFILES=\
|
||||
utf.h\
|
||||
|
||||
all: $(LIB)
|
||||
|
||||
install: $(LIB)
|
||||
test -d $(PREFIX)/man/man3 || mkdir $(PREFIX)/man/man3
|
||||
install -c -m 0644 isalpharune.3 $(PREFIX)/man/man3/isalpharune.3
|
||||
install -c -m 0644 utf.7 $(PREFIX)/man/man7/utf.7
|
||||
install -c -m 0644 rune.3 $(PREFIX)/man/man3/rune.3
|
||||
install -c -m 0644 runestrcat.3 $(PREFIX)/man/man3/runestrcat.3
|
||||
install -c -m 0644 utf.h $(PREFIX)/include/utf.h
|
||||
install -c -m 0644 $(LIB) $(PREFIX)/lib/$(LIB)
|
||||
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
|
||||
# this works in gnu make
|
||||
SYSNAME:=${shell uname}
|
||||
OBJTYPE:=${shell uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'}
|
||||
|
||||
# this works in bsd make
|
||||
SYSNAME!=uname
|
||||
OBJTYPE!=uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'
|
||||
|
||||
# the gnu rules will mess up bsd but not vice versa,
|
||||
# hence the gnu rules come first.
|
||||
|
||||
include Make.$(SYSNAME)-$(OBJTYPE)
|
||||
|
||||
PREFIX=/usr/local
|
||||
|
||||
NUKEFILES=
|
||||
|
||||
TGZFILES=
|
||||
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
--- Makefile ---
|
||||
# New ports collection makefile for: libutf
|
||||
# Date Created: 11 Feb 2003
|
||||
# Whom: rsc
|
||||
#
|
||||
# THIS LINE NEEDS REPLACING. IT'S HERE TO GET BY PORTLINT
|
||||
# $FreeBSD: ports/devel/libfmt/Makefile,v 1.1 2003/02/12 00:51:22 rsc Exp $
|
||||
|
||||
PORTNAME= libutf
|
||||
PORTVERSION= 2.0
|
||||
CATEGORIES= devel
|
||||
MASTER_SITES= http://pdos.lcs.mit.edu/~rsc/software/
|
||||
EXTRACT_SUFX= .tgz
|
||||
|
||||
MAINTAINER= rsc@post.harvard.edu
|
||||
|
||||
MAN3= rune.3 runestrcat.3 isalpharune.3
|
||||
MAN7= utf.7
|
||||
|
||||
USE_REINPLACE=yes
|
||||
|
||||
.include <bsd.port.pre.mk>
|
||||
|
||||
post-patch:
|
||||
${REINPLACE_CMD} -e 's,$$(PREFIX),${PREFIX},g' ${WRKSRC}/Makefile
|
||||
|
||||
.include <bsd.port.post.mk>
|
||||
--- pkg-comment ---
|
||||
UTF8 support library from Plan 9
|
||||
--- pkg-descr ---
|
||||
UTF8 support library from Plan 9.
|
||||
|
||||
WWW: http://pdos.lcs.mit.edu/~rsc/software/#libutf
|
||||
http://plan9.bell-labs.com/magic/man2html/3/rune
|
||||
|
||||
Russ Cox
|
||||
rsc@post.harvard.edu
|
||||
--- pkg-plist ---
|
||||
lib/libutf.a
|
||||
include/utf.h
|
||||
--- /dev/null ---
|
||||
This is just a way to make sure blank lines don't
|
||||
creep into pkg-plist.
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
.TH ISALPHARUNE 3
|
||||
.SH NAME
|
||||
isalpharune, islowerrune, isspacerune, istitlerune, isupperrune, tolowerrune, totitlerune, toupperrune \- Unicode character classes and cases
|
||||
.SH SYNOPSIS
|
||||
.B #include <utf.h>
|
||||
.PP
|
||||
.B
|
||||
int isalpharune(Rune c)
|
||||
.PP
|
||||
.B
|
||||
int islowerrune(Rune c)
|
||||
.PP
|
||||
.B
|
||||
int isspacerune(Rune c)
|
||||
.PP
|
||||
.B
|
||||
int istitlerune(Rune c)
|
||||
.PP
|
||||
.B
|
||||
int isupperrune(Rune c)
|
||||
.PP
|
||||
.B
|
||||
Rune tolowerrune(Rune c)
|
||||
.PP
|
||||
.B
|
||||
Rune totitlerune(Rune c)
|
||||
.PP
|
||||
.B
|
||||
Rune toupperrune(Rune c)
|
||||
.SH DESCRIPTION
|
||||
These routines examine and operate on Unicode characters,
|
||||
in particular a subset of their properties as defined in the Unicode standard.
|
||||
Unicode defines some characters as alphabetic and specifies three cases:
|
||||
upper, lower, and title.
|
||||
Analogously to
|
||||
.IR ctype (3)
|
||||
for
|
||||
.SM ASCII\c
|
||||
,
|
||||
these routines
|
||||
test types and modify cases for Unicode characters.
|
||||
The names are self-explanatory.
|
||||
.PP
|
||||
The case-conversion routines return the character unchanged if it has no case.
|
||||
.SH "SEE ALSO
|
||||
.IR ctype (3) ,
|
||||
.IR "The Unicode Standard" .
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
all:V: Makefile Make.FreeBSD-386 Make.Linux-386 Make.NetBSD-386 Make.HP-UX-9000 Make.OSF1-alpha \
|
||||
Make.SunOS-sun4u Make.SunOS-sun4u-cc Make.SunOS-sun4u-gcc \
|
||||
Make.Darwin-PowerMacintosh
|
||||
|
||||
Makefile:D: ../libutf/Makefile.TOP Makefile.MID ../libutf/Makefile.LIB ../libutf/Makefile.BOT
|
||||
cat $prereq >$target
|
||||
|
||||
Make.%: ../libutf/Make.%
|
||||
cp $prereq $target
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
Summary: Port of Plan 9's UTF8 support functions
|
||||
Name: libutf
|
||||
Version: 2.0
|
||||
Release: 1
|
||||
Group: Development/C
|
||||
Copyright: Public Domain
|
||||
Packager: Russ Cox <rsc@post.harvard.edu>
|
||||
Source: http://pdos.lcs.mit.edu/~rsc/software/libutf-2.0.tgz
|
||||
URL: http://pdos.lcs.mit.edu/~rsc/software/#libutf
|
||||
|
||||
%description
|
||||
Libutf is a port of Plan 9's UTF8 support functions.
|
||||
%prep
|
||||
%setup
|
||||
|
||||
%build
|
||||
make
|
||||
|
||||
%install
|
||||
make install
|
||||
|
||||
%files
|
||||
/usr/local/include/utf.h
|
||||
/usr/local/lib/libutf.a
|
||||
/usr/local/man/man3/runestrcat.3
|
||||
/usr/local/man/man3/isalpharune.3
|
||||
/usr/local/man/man3/rune.3
|
||||
/usr/local/man/man7/utf.7
|
||||
|
|
@ -1,187 +0,0 @@
|
|||
.TH RUNE 3
|
||||
.SH NAME
|
||||
runetochar, chartorune, runelen, runenlen, fullrune, utfecpy, utflen, utfnlen, utfrune, utfrrune, utfutf \- rune/UTF conversion
|
||||
.SH SYNOPSIS
|
||||
.ta \w'\fLchar*xx'u
|
||||
.B #include <utf.h>
|
||||
.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 runenlen(Rune *r, int n)
|
||||
.PP
|
||||
.B
|
||||
int fullrune(char *s, int n)
|
||||
.PP
|
||||
.B
|
||||
char* utfecpy(char *s1, char *es1, char *s2)
|
||||
.PP
|
||||
.B
|
||||
int utflen(char *s)
|
||||
.PP
|
||||
.B
|
||||
int utfnlen(char *s, long n)
|
||||
.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 Runenlen
|
||||
returns the number of bytes
|
||||
required to convert the
|
||||
.I n
|
||||
runes pointed to by
|
||||
.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 Utfecpy
|
||||
copies UTF sequences until a null sequence has been copied, but writes no
|
||||
sequences beyond
|
||||
.IR es1 .
|
||||
If any sequences are copied,
|
||||
.I s1
|
||||
is terminated by a null sequence, and a pointer to that sequence is returned.
|
||||
Otherwise, the original
|
||||
.I s1
|
||||
is returned.
|
||||
.PP
|
||||
.I Utflen
|
||||
returns the number of runes that
|
||||
are represented by the
|
||||
.SM UTF
|
||||
string
|
||||
.IR s .
|
||||
.PP
|
||||
.I Utfnlen
|
||||
returns the number of complete runes that
|
||||
are represented by the first
|
||||
.I n
|
||||
bytes of
|
||||
.SM UTF
|
||||
string
|
||||
.IR s .
|
||||
If the last few bytes of the string contain an incompletely coded rune,
|
||||
.I utfnlen
|
||||
will not count them; in this way, it differs from
|
||||
.IR utflen ,
|
||||
which includes every byte of the string.
|
||||
.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 HISTORY
|
||||
These routines were written by Rob Pike and Ken Thompson
|
||||
and first appeared in Plan 9.
|
||||
.SH SEE ALSO
|
||||
.IR utf (7),
|
||||
.IR tcs (1)
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
.TH RUNESTRCAT 3
|
||||
.SH NAME
|
||||
runestrcat,
|
||||
runestrncat,
|
||||
runestrcmp,
|
||||
runestrncmp,
|
||||
runestrcpy,
|
||||
runestrncpy,
|
||||
runestrecpy,
|
||||
runestrlen,
|
||||
runestrchr,
|
||||
runestrrchr,
|
||||
runestrdup,
|
||||
runestrstr \- rune string operations
|
||||
.SH SYNOPSIS
|
||||
.B #include <utf.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 HISTORY
|
||||
These routines first appeared in Plan 9.
|
||||
.SH SEE ALSO
|
||||
.IR memmove (3),
|
||||
.IR rune (3),
|
||||
.IR strcat (2)
|
||||
.SH BUGS
|
||||
The outcome of overlapping moves varies among implementations.
|
||||
|
|
@ -1,91 +0,0 @@
|
|||
.TH UTF 7
|
||||
.SH NAME
|
||||
UTF, Unicode, ASCII, rune \- character set and format
|
||||
.SH DESCRIPTION
|
||||
The Plan 9 character set and representation are
|
||||
based on the Unicode Standard and on the ISO multibyte
|
||||
.SM UTF-8
|
||||
encoding (Universal Character
|
||||
Set Transformation Format, 8 bits wide).
|
||||
The Unicode Standard represents its characters in 16
|
||||
bits;
|
||||
.SM UTF-8
|
||||
represents such
|
||||
values in an 8-bit byte stream.
|
||||
Throughout this manual,
|
||||
.SM UTF-8
|
||||
is shortened to
|
||||
.SM UTF.
|
||||
.PP
|
||||
In Plan 9, a
|
||||
.I rune
|
||||
is a 16-bit quantity representing a Unicode character.
|
||||
Internally, programs may store characters as runes.
|
||||
However, any external manifestation of textual information,
|
||||
in files or at the interface between programs, uses a
|
||||
machine-independent, byte-stream encoding called
|
||||
.SM UTF.
|
||||
.PP
|
||||
.SM UTF
|
||||
is designed so the 7-bit
|
||||
.SM ASCII
|
||||
set (values hexadecimal 00 to 7F),
|
||||
appear only as themselves
|
||||
in the encoding.
|
||||
Runes with values above 7F appear as sequences of two or more
|
||||
bytes with values only from 80 to FF.
|
||||
.PP
|
||||
The
|
||||
.SM UTF
|
||||
encoding of the Unicode Standard is backward compatible with
|
||||
.SM ASCII\c
|
||||
:
|
||||
programs presented only with
|
||||
.SM ASCII
|
||||
work on Plan 9
|
||||
even if not written to deal with
|
||||
.SM UTF,
|
||||
as do
|
||||
programs that deal with uninterpreted byte streams.
|
||||
However, programs that perform semantic processing on
|
||||
.SM ASCII
|
||||
graphic
|
||||
characters must convert from
|
||||
.SM UTF
|
||||
to runes
|
||||
in order to work properly with non-\c
|
||||
.SM ASCII
|
||||
input.
|
||||
See
|
||||
.IR rune (2).
|
||||
.PP
|
||||
Letting numbers be binary,
|
||||
a rune x is converted to a multibyte
|
||||
.SM UTF
|
||||
sequence
|
||||
as follows:
|
||||
.PP
|
||||
01. x in [00000000.0bbbbbbb] → 0bbbbbbb
|
||||
.br
|
||||
10. x in [00000bbb.bbbbbbbb] → 110bbbbb, 10bbbbbb
|
||||
.br
|
||||
11. x in [bbbbbbbb.bbbbbbbb] → 1110bbbb, 10bbbbbb, 10bbbbbb
|
||||
.br
|
||||
.PP
|
||||
Conversion 01 provides a one-byte sequence that spans the
|
||||
.SM ASCII
|
||||
character set in a compatible way.
|
||||
Conversions 10 and 11 represent higher-valued characters
|
||||
as sequences of two or three bytes with the high bit set.
|
||||
Plan 9 does not support the 4, 5, and 6 byte sequences proposed by X-Open.
|
||||
When there are multiple ways to encode a value, for example rune 0,
|
||||
the shortest encoding is used.
|
||||
.PP
|
||||
In the inverse mapping,
|
||||
any sequence except those described above
|
||||
is incorrect and is converted to rune hexadecimal 0080.
|
||||
.SH "SEE ALSO"
|
||||
.IR ascii (1),
|
||||
.IR tcs (1),
|
||||
.IR rune (3),
|
||||
.IR "The Unicode Standard" .
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
#ifndef _UTFH_
|
||||
#define _UTFH_ 1
|
||||
|
||||
typedef unsigned short Rune; /* 16 bits */
|
||||
|
||||
enum
|
||||
{
|
||||
UTFmax = 3, /* maximum bytes per rune */
|
||||
Runesync = 0x80, /* cannot represent part of a UTF sequence (<) */
|
||||
Runeself = 0x80, /* rune and UTF sequences are the same (<) */
|
||||
Runeerror = 0x80, /* decoding error in UTF */
|
||||
};
|
||||
|
||||
/*
|
||||
* rune routines
|
||||
*/
|
||||
extern int runetochar(char*, Rune*);
|
||||
extern int chartorune(Rune*, char*);
|
||||
extern int runelen(long);
|
||||
extern int runenlen(Rune*, int);
|
||||
extern int fullrune(char*, int);
|
||||
extern int utflen(char*);
|
||||
extern int utfnlen(char*, long);
|
||||
extern char* utfrune(char*, long);
|
||||
extern char* utfrrune(char*, long);
|
||||
extern char* utfutf(char*, char*);
|
||||
extern char* utfecpy(char*, char*, char*);
|
||||
|
||||
extern Rune* runestrcat(Rune*, Rune*);
|
||||
extern Rune* runestrchr(Rune*, Rune);
|
||||
extern int runestrcmp(Rune*, Rune*);
|
||||
extern Rune* runestrcpy(Rune*, Rune*);
|
||||
extern Rune* runestrncpy(Rune*, Rune*, long);
|
||||
extern Rune* runestrecpy(Rune*, Rune*, Rune*);
|
||||
extern Rune* runestrdup(Rune*);
|
||||
extern Rune* runestrncat(Rune*, Rune*, long);
|
||||
extern int runestrncmp(Rune*, Rune*, long);
|
||||
extern Rune* runestrrchr(Rune*, Rune);
|
||||
extern long runestrlen(Rune*);
|
||||
extern Rune* runestrstr(Rune*, Rune*);
|
||||
|
||||
extern Rune tolowerrune(Rune);
|
||||
extern Rune totitlerune(Rune);
|
||||
extern Rune toupperrune(Rune);
|
||||
extern int isalpharune(Rune);
|
||||
extern int islowerrune(Rune);
|
||||
extern int isspacerune(Rune);
|
||||
extern int istitlerune(Rune);
|
||||
extern int isupperrune(Rune);
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue