git: 9front

Download patch

ref: f64dffe11f53145d8ad15c2bf4028b5d1b0de7f4
parent: 140cc2dfadea2d9fdf62f3c2d0b9da791b047eff
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Wed Apr 10 16:47:01 EDT 2013

postscript: remove private copy of utf8 implementation (from sources)

--- a/sys/src/cmd/postscript/common/mkfile
+++ b/sys/src/cmd/postscript/common/mkfile
@@ -7,7 +7,6 @@
 	glob.$O\
 	misc.$O\
 	request.$O\
-	rune.$O\
 	tempnam.$O\
 	getopt.$O\
 
@@ -15,8 +14,7 @@
 	gen.h\
 	ext.h\
 	request.h\
-	path.h\
-	rune.h\
+	path.h
 
 </sys/src/cmd/mklib
 
--- a/sys/src/cmd/postscript/common/rune.c
+++ /dev/null
@@ -1,203 +1,0 @@
-#include	"rune.h"
-
-enum
-{
-	Bit1	= 7,
-	Bitx	= 6,
-	Bit2	= 5,
-	Bit3	= 4,
-	Bit4	= 3,
-	Bit5	= 2,
-
-	T1	= ((1<<(Bit1+1))-1) ^ 0xFF,	/* 0000 0000 */
-	Tx	= ((1<<(Bitx+1))-1) ^ 0xFF,	/* 1000 0000 */
-	T2	= ((1<<(Bit2+1))-1) ^ 0xFF,	/* 1100 0000 */
-	T3	= ((1<<(Bit3+1))-1) ^ 0xFF,	/* 1110 0000 */
-	T4	= ((1<<(Bit4+1))-1) ^ 0xFF,	/* 1111 0000 */
-	T5	= ((1<<(Bit5+1))-1) ^ 0xFF,	/* 1111 1000 */
-
-	Rune1	= (1<<(Bit1+0*Bitx))-1,		/* 0000 0000 0000 0000 0111 1111 */
-	Rune2	= (1<<(Bit2+1*Bitx))-1,		/* 0000 0000 0000 0111 1111 1111 */
-	Rune3	= (1<<(Bit3+2*Bitx))-1,		/* 0000 0000 1111 1111 1111 1111 */
-	Rune4	= (1<<(Bit4+3*Bitx))-1,		/* 0011 1111 1111 1111 1111 1111 */
-
-	Maskx	= (1<<Bitx)-1,			/* 0011 1111 */
-	Testx	= Maskx ^ 0xFF,			/* 1100 0000 */
-
-	Bad	= Runeerror,
-};
-
-int
-chartorune(Rune *rune, char *str)
-{
-	int c, c1, c2, c3;
-	long l;
-
-	/*
-	 * one character sequence
-	 *	00000-0007F => T1
-	 */
-	c = *(unsigned char*)str;
-	if(c < Tx) {
-		*rune = c;
-		return 1;
-	}
-
-	/*
-	 * two character sequence
-	 *	0080-07FF => T2 Tx
-	 */
-	c1 = *(unsigned char*)(str+1) ^ Tx;
-	if(c1 & Testx)
-		goto bad;
-	if(c < T3) {
-		if(c < T2)
-			goto bad;
-		l = ((c << Bitx) | c1) & Rune2;
-		if(l <= Rune1)
-			goto bad;
-		*rune = l;
-		return 2;
-	}
-
-	/*
-	 * three character sequence
-	 *	0800-FFFF => T3 Tx Tx
-	 */
-	c2 = *(unsigned char*)(str+2) ^ Tx;
-	if(c2 & Testx)
-		goto bad;
-	if(c < T4) {
-		l = ((((c << Bitx) | c1) << Bitx) | c2) & Rune3;
-		if(l <= Rune2)
-			goto bad;
-		*rune = l;
-		return 3;
-	}
-
- 	/*
-	 * four character sequence
-	 *	10000-10FFFF => T4 Tx Tx Tx
-	 */
-	if(UTFmax >= 4) {
-		c3 = *(unsigned char*)(str+3) ^ Tx;
-		if(c3 & Testx)
-			goto bad;
-		if(c < T5) {
-			l = ((((((c << Bitx) | c1) << Bitx) | c2) << Bitx) | c3) & Rune4;
-			if(l <= Rune3)
-				goto bad;
-			if(l > Runemax)
-				goto bad;
-			*rune = l;
-			return 4;
-		}
-	}
-
-	/*
-	 * bad decoding
-	 */
-bad:
-	*rune = Bad;
-	return 1;
-}
-
-int
-runetochar(char *str, Rune *rune)
-{
-	long c;
-
-	c = *rune;
-	if(c > Runemax)
-		c = Runeerror;
-
-	/*
-	 * one character sequence
-	 *	00000-0007F => 00-7F
-	 */
-	if(c <= Rune1) {
-		str[0] = c;
-		return 1;
-	}
-
-	/*
-	 * two character sequence
-	 *	0080-07FF => T2 Tx
-	 */
-	if(c <= Rune2) {
-		str[0] = T2 | (c >> 1*Bitx);
-		str[1] = Tx | (c & Maskx);
-		return 2;
-	}
-
-	/*
-	 * three character sequence
-	 *	0800-FFFF => T3 Tx Tx
-	 */
-	if(c <= Rune3) {
-		str[0] = T3 |  (c >> 2*Bitx);
-		str[1] = Tx | ((c >> 1*Bitx) & Maskx);
-		str[2] = Tx |  (c & Maskx);
-		return 3;
-	}
-
-	/*
-	 * four character sequence
-	 *	10000-1FFFFF => T4 Tx Tx Tx
-	 */
-	str[0] = T4 |  (c >> 3*Bitx);
-	str[1] = Tx | ((c >> 2*Bitx) & Maskx);
-	str[2] = Tx | ((c >> 1*Bitx) & Maskx);
-	str[3] = Tx |  (c & Maskx);
-	return 4;
-}
-
-int
-runelen(long c)
-{
-	Rune rune;
-	char str[UTFmax];
-
-	rune = c;
-	return runetochar(str, &rune);
-}
-
-int
-runenlen(Rune *r, int nrune)
-{
-	int nb, c;
-
-	nb = 0;
-	while(nrune--) {
-		c = *r++;
-		if(c <= Rune1)
-			nb++;
-		else
-		if(c <= Rune2)
-			nb += 2;
-		else
-		if(c <= Rune3 || c > Runemax)
-			nb += 3;
-		else
-			nb += 4;
-	}
-	return nb;
-}
-
-int
-fullrune(char *str, int n)
-{
-	int c;
-
-	if(n <= 0)
-		return 0;
-	c = *(unsigned char*)str;
-	if(c < Tx)
-		return 1;
-	if(c < T3)
-		return n >= 2;
-	if(UTFmax == 3 || c < T4)
-		return n >= 3;
-	return n >= 4;
-}
-
--- a/sys/src/cmd/postscript/common/rune.h
+++ /dev/null
@@ -1,20 +1,0 @@
-/*
- *
- * Rune declarations - for supporting UTF encoding.
- *
- */
-
-#define RUNELIB		1
-
-#ifdef RUNELIB
-typedef unsigned short	Rune;
-
-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	= 0xFFFD,	/* decoding error in utf */
-	Runemax		= 0xFFFF,	/* 16 bit rune */
-};
-#endif
--