Import sources from 2011-03-30 iso image - sys/lib

Taru Karttunen 2011-03-30 16:53:33 +03:00
parent b41b903422
commit e463eb4036
1144 changed files with 388460 additions and 0 deletions

163
sys/lib/acid/386 Executable file
View File

@ -0,0 +1,163 @@
// 386 support
defn acidinit() // Called after all the init modules are loaded
{
bplist = {};
bpfmt = 'b';
srcpath = {
"./",
"/sys/src/libc/port/",
"/sys/src/libc/9sys/",
"/sys/src/libc/386/"
};
srcfiles = {}; // list of loaded files
srctext = {}; // the text of the files
}
defn linkreg(addr)
{
return 0;
}
defn stk() // trace
{
_stk(*PC, *SP, 0, 0);
}
defn lstk() // trace with locals
{
_stk(*PC, *SP, 0, 1);
}
defn gpr() // print general(hah hah!) purpose registers
{
print("AX\t", *AX, " BX\t", *BX, " CX\t", *CX, " DX\t", *DX, "\n");
print("DI\t", *DI, " SI\t", *SI, " BP\t", *BP, "\n");
}
defn spr() // print special processor registers
{
local pc;
local cause;
pc = *PC;
print("PC\t", pc, " ", fmt(pc, 'a'), " ");
pfl(pc);
print("SP\t", *SP, " ECODE ", *ECODE, " EFLAG ", *EFLAGS, "\n");
print("CS\t", *CS, " DS\t ", *DS, " SS\t", *SS, "\n");
print("GS\t", *GS, " FS\t ", *FS, " ES\t", *ES, "\n");
cause = *TRAP;
print("TRAP\t", cause, " ", reason(cause), "\n");
}
defn regs() // print all registers
{
spr();
gpr();
}
defn fpr()
{
print("F0\t", *F0, "\n");
print("F1\t", *F1, "\n");
print("F2\t", *F2, "\n");
print("F3\t", *F3, "\n");
print("F4\t", *F4, "\n");
print("F5\t", *F5, "\n");
print("F6\t", *F6, "\n");
print("F7\t", *F7, "\n");
print("control\t", *fmt(E0, 'x'), "\n");
print("status\t", *fmt(E1, 'x'), "\n");
print("tag\t", *fmt(E2, 'x'), "\n");
print("ip offset\t", *fmt(E3, 'X'), "\n");
print("cs selector\t", *fmt(E4, 'x'), "\n");
print("opcode\t", *fmt(E4>>8, 'x'), "\n");
print("data operand offset\t", *fmt(E5, 'x'), "\n");
print("operand selector\t", *fmt(E6, 'x'), "\n");
}
defn mmregs()
{
print("MM0\t", *MM0, " MM1\t", *MM1, "\n");
print("MM2\t", *MM2, " MM3\t", *MM3, "\n");
print("MM4\t", *MM4, " MM5\t", *MM5, "\n");
print("MM6\t", *MM6, " MM7\t", *MM7, "\n");
}
defn pstop(pid)
{
local l;
local pc;
pc = *PC;
print(pid,": ", reason(*TRAP), "\t");
print(fmt(pc, 'a'), "\t", fmt(pc, 'i'), "\n");
if notes then {
if notes[0] != "sys: breakpoint" then {
print("Notes pending:\n");
l = notes;
while l do {
print("\t", head l, "\n");
l = tail l;
}
}
}
}
aggr Ureg
{
'X' 0 di;
'X' 4 si;
'X' 8 bp;
'X' 12 nsp;
'X' 16 bx;
'X' 20 dx;
'X' 24 cx;
'X' 28 ax;
'X' 32 gs;
'X' 36 fs;
'X' 40 es;
'X' 44 ds;
'X' 48 trap;
'X' 52 ecode;
'X' 56 pc;
'X' 60 cs;
'X' 64 flags;
{
'X' 68 usp;
'X' 68 sp;
};
'X' 72 ss;
};
defn
Ureg(addr) {
complex Ureg addr;
print(" di ", addr.di, "\n");
print(" si ", addr.si, "\n");
print(" bp ", addr.bp, "\n");
print(" nsp ", addr.nsp, "\n");
print(" bx ", addr.bx, "\n");
print(" dx ", addr.dx, "\n");
print(" cx ", addr.cx, "\n");
print(" ax ", addr.ax, "\n");
print(" gs ", addr.gs, "\n");
print(" fs ", addr.fs, "\n");
print(" es ", addr.es, "\n");
print(" ds ", addr.ds, "\n");
print(" trap ", addr.trap, "\n");
print(" ecode ", addr.ecode, "\n");
print(" pc ", addr.pc, "\n");
print(" cs ", addr.cs, "\n");
print(" flags ", addr.flags, "\n");
print(" sp ", addr.sp, "\n");
print(" ss ", addr.ss, "\n");
};
sizeofUreg = 76;
print("/sys/lib/acid/386");

137
sys/lib/acid/68020 Executable file
View File

@ -0,0 +1,137 @@
// 68020 support
defn acidinit() // Called after all the init modules are loaded
{
bplist = {};
bpfmt = 'x';
srcpath = {
"./",
"/sys/src/libc/port/",
"/sys/src/libc/9sys/",
"/sys/src/libc/68020/"
};
srcfiles = {}; // list of loaded files
srctext = {}; // the text of the files
}
defn linkreg(addr)
{
return 0;
}
defn stk() // trace
{
_stk(*PC, *A7, 0, 0);
}
defn lstk() // trace with locals
{
_stk(*PC, *A7, 0, 1);
}
defn gpr() // print general purpose registers
{
print("R0\t", *R0, "R1\t", *R1, "R2\t", *R2, "R3\t", *R3, "\n");
print("R4\t", *R4, "R5\t", *R5, "R6\t", *R6, "R7\t", *R7, "\n");
print("A0\t", *A0, "A1\t", *A1, "A2\t", *A2, "A3\t", *A3, "\n");
print("A4\t", *A4, "A5\t", *A5, "A6\t", *A6, "A7\t", *A7, "\n");
}
defn spr() // print special processor registers
{
local pc;
local cause;
pc = *PC;
print("PC\t", pc, " ", fmt(pc, 'a'), " ");
pfl(pc);
print("SP\t", *A7, " MAGIC\t", *MAGIC, "\n");
cause = *VO;
print("SR\t", *SR, "VO ", cause, " ", reason(cause), "\n");
}
defn regs() // print all registers
{
spr();
gpr();
}
defn pstop(pid)
{
local l;
local pc;
pc = *PC;
print(pid,": ", reason(*VO), "\t");
print(fmt(pc, 'a'), "\t", fmt(pc, 'i'), "\n");
if notes then {
if notes[0] != "sys: breakpoint" then {
print("Notes pending:\n");
l = notes;
while l do {
print("\t", head l, "\n");
l = tail l;
}
}
}
}
aggr Ureg
{
'U' 0 r0;
'U' 4 r1;
'U' 8 r2;
'U' 12 r3;
'U' 16 r4;
'U' 20 r5;
'U' 24 r6;
'U' 28 r7;
'U' 32 a0;
'U' 36 a1;
'U' 40 a2;
'U' 44 a3;
'U' 48 a4;
'U' 52 a5;
'U' 56 a6;
'U' 60 sp;
'U' 64 usp;
'U' 68 magic;
'u' 72 sr;
'U' 74 pc;
'u' 78 vo;
'a' 80 microstate;
};
defn
Ureg(addr) {
complex Ureg addr;
print(" r0 ", addr.r0, "\n");
print(" r1 ", addr.r1, "\n");
print(" r2 ", addr.r2, "\n");
print(" r3 ", addr.r3, "\n");
print(" r4 ", addr.r4, "\n");
print(" r5 ", addr.r5, "\n");
print(" r6 ", addr.r6, "\n");
print(" r7 ", addr.r7, "\n");
print(" a0 ", addr.a0, "\n");
print(" a1 ", addr.a1, "\n");
print(" a2 ", addr.a2, "\n");
print(" a3 ", addr.a3, "\n");
print(" a4 ", addr.a4, "\n");
print(" a5 ", addr.a5, "\n");
print(" a6 ", addr.a6, "\n");
print(" sp ", addr.sp, "\n");
print(" usp ", addr.usp, "\n");
print(" magic ", addr.magic, "\n");
print(" sr ", addr.sr, "\n");
print(" pc ", addr.pc, "\n");
print(" vo ", addr.vo, "\n");
print(" microstate ", addr.microstate, "\n");
};
print("/sys/lib/acid/68020");

133
sys/lib/acid/acme Executable file
View File

@ -0,0 +1,133 @@
// support for acme; acid must be run with /acme/acid/$cputype/Acid
defn w(*code)
{
local dir;
printto("/tmp/acme.acid", eval code);
rc("cat /tmp/acme.acid | wnew -d "+"Acid/-stk'("+itoa(pid)+")'");
}
defn procstk(pid, name)
{
local dir;
printto("/tmp/acme.acid", stk());
rc("cat /tmp/acme.acid | wnew -d "+"Acid/-'"+name+"("+itoa(pid)+")'");
}
defn taskstk(tid, name)
{
local dir;
printto("/tmp/acme.acid", threadstk(tid));
rc("cat /tmp/acme.acid | wnew -d "+"Acid/-"+name+"'("+itoa(pid)+")'");
}
defn _stk(pc, sp, link, dolocals)
{
local stk;
print("At pc:", pc, ":", fmt(pc, 'a'), " ");
pfl(pc);
stk = strace(pc, sp, link);
while stk do {
frame = head stk;
print(fmt(frame[0], 'a'), "(");
params(frame[2], frame[0]);
print(") ");
print("\n\tcalled from ", fmt(frame[1], 'a'), " ");
pfl(frame[1]);
stk = tail stk;
if dolocals then
locals(frame[3], frame[0]);
}
}
//defn _stk(pc, sp, dolocals)
//{
// w(__stk(pc, sp, dolocals));
//}
defn params(param, name)
{
while param do {
sym = head param;
print("*", fmt(name, 'a'), ":", sym[0], "=", sym[1]);
param = tail param;
if param then
print (",");
}
}
defn locals(l, name)
{
local sym;
while l do {
sym = head l;
print("\t*", fmt(name, 'a'), ":", sym[0], "=", sym[1], "\n");
l = tail l;
}
}
defn bptab() // print a table of breakpoints
{
local lst, addr;
lst = bplist;
while lst do {
addr = head lst;
print("\tbpdel(", fmt(addr, 'a'), ")\n");
lst = tail lst;
}
}
defn procs() // print status of processes
{
local c, lst, cpid;
cpid = pid;
lst = proclist;
while lst do {
np = head lst;
setproc(np);
if np == cpid then
print(">");
print("\t", "setproc(", np, ")\t", status(np), " at ", fmt(*PC, 'a'), "\n");
lst = tail lst;
}
pid = cpid;
if pid != 0 then
setproc(pid);
}
defn allstacks() // print stacks of processes and threads
{
complex Proc P;
local T, Tq;
local c, lst, cpid;
cpid = pid;
P = (Proc)pq.$head;
while P != 0 do{
Tq = (Tqueue)P.threads;
T = (Thread)Tq.$head;
setproc(P.pid);
while T != 0 do{
if(T.cmdname == 0) then taskstk(T, "unknown");
else taskstk(T, *(T.cmdname\s));
T = T.nextt;
}
P = P.next;
}
pid = cpid;
if pid != 0 then
setproc(pid);
}
print("/sys/lib/acid/acme");

147
sys/lib/acid/alef Executable file
View File

@ -0,0 +1,147 @@
// runtime library definitions
if objtype=="mips2" then objtype="mips";
include("/sys/src/alef/lib/"+objtype+"/acid");
defn
pchan(addr)
{
local l, n;
complex Chan addr;
if addr.sva then
print("Sender waiting: buffer ", addr.sva, "\n");
else
print("No sender\n");
if addr.rva then
print("Receiver waiting: buffer ", addr.rva, "\n");
else
print("No receiver\n");
if addr.async then {
n = 0;
l = addr.qh;
while l do {
n = n+1;
l = l.next;
}
print("Async channel\n\t", n\D, " messsages queued\n\t");
l = addr.free;
while l do {
n = n+1;
l = l.next;
}
print(n\D, " free buffers\n");
}
if addr.selt then {
l = "send";
if addr.selt then
l = "receive";
print("In select ", l, ": task ", addr.selt\X, "\n");
labstk(addr.selt);
}
}
defn
tdb()
{
local ta, tq;
// Private proc tdb pointer
ta = *{ 0x7fffe000,
0x0ffdf000,
0xbfff5000 }[match(objtype, {"mips", "sparc", "386"})];
complex Tdb ta;
print("tdb ", ta.ntask, " tasks:");
if *ta then
print("locked\n");
else
print("unlocked\n");
if ta.ctask then {
print("current task ", ta.ctask, "\n");
Task(ta.ctask);
}
else
print("proc is idle\n");
tq = (Task)ta.runhd;
if tq == 0 then
return {};
print("Tasks ready to run:\n");
while tq != 0 do {
print("Task(", tq, ")\n");
tq = tq.link;
}
}
defn
lselect(addr)
{
local c;
complex Task addr;
complex Chan c;
c = addr.slist;
if c == 0 then {
print("No select pending\n");
return {};
}
while c do {
print("pchan(", c\X, ")\n");
c = c.sellink;
}
}
defn
pqlock(addr)
{
local t;
complex QLock addr;
if *addr then
print("QLock is under modification\n");
if addr.used == 0 then
return {};
print("QLock is held\n");
t = addr.queue;
complex Task t;
if t == 0 then {
print("No tasks waiting\n");
return {};
}
print("Tasks waiting:\n");
while t do {
print("Task(", t, ")\n");
tq = tq.qlink;
}
}
srcpath = {
"./",
"/sys/src/alef/lib/port/",
"/sys/src/alef/lib/p9/",
"/sys/src/alef/lib/"+objtype+"/"
};
defn labstk(l)
{
if objtype == "386" then
_stk(ALEF_switch, *l, linkreg(0), 0);
else
_stk(*(l+4), *l, linkreg(0), 0);
}
print("/sys/lib/acid/alef");
include("/sys/src/alef/lib/port/acid."+objtype);
include("/sys/src/alef/lib/p9/acid."+objtype);

205
sys/lib/acid/alpha Executable file
View File

@ -0,0 +1,205 @@
// Alpha support
defn acidinit() // Called after all the init modules are loaded
{
bplist = {};
bpfmt = 'X';
srcpath = {
"./",
"/sys/src/libc/port/",
"/sys/src/libc/9sys/",
"/sys/src/libc/alpha/"
};
srcfiles = {}; // list of loaded files
srctext = {}; // the text of the files
}
defn stk() // trace
{
_stk(*PC, *SP, linkreg(0), 0);
}
defn lstk() // trace with locals
{
_stk(*PC, *SP, linkreg(0), 1);
}
defn gpr() // print general purpose registers
{
print("R0\t", *R0, "\n");
print("R1\t", *R1, " R2\t", *R2, " R3\t", *R3, "\n");
print("R4\t", *R4, " R5\t", *R5, " R6\t", *R6, "\n");
print("R7\t", *R7, " R8\t", *R8, " R9\t", *R9, "\n");
print("R10\t", *R10, " R11\t", *R11, " R12\t", *R12, "\n");
print("R13\t", *R13, " R14\t", *R14, " R15\t", *R15, "\n");
print("R16\t", *R16, " R17\t", *R17, " R18\t", *R18, "\n");
print("R19\t", *R19, " R20\t", *R20, " R21\t", *R21, "\n");
print("R22\t", *R22, " R23\t", *R23, " R24\t", *R24, "\n");
print("R25\t", *R25, " R26\t", *R26, " R27\t", *R27, "\n");
print("R28\t", *R28, " R29\t", *R29, " R30\t", *SP\Y, "\n");
}
defn fpr()
{
print("F0\t", *fmt(F0, 'G'), "\tF1\t", *fmt(F1, 'G'), "\n");
print("F2\t", *fmt(F2, 'G'), "\tF3\t", *fmt(F3, 'G'), "\n");
print("F4\t", *fmt(F4, 'G'), "\tF5\t", *fmt(F5, 'G'), "\n");
print("F6\t", *fmt(F6, 'G'), "\tF7\t", *fmt(F7, 'G'), "\n");
print("F8\t", *fmt(F8, 'G'), "\tF9\t", *fmt(F9, 'G'), "\n");
print("F10\t", *fmt(F10, 'G'), "\tF11\t", *fmt(F11, 'G'), "\n");
print("F12\t", *fmt(F12, 'G'), "\tF13\t", *fmt(F13, 'G'), "\n");
print("F14\t", *fmt(F14, 'G'), "\tF15\t", *fmt(F15, 'G'), "\n");
print("F16\t", *fmt(F16, 'G'), "\tF17\t", *fmt(F17, 'G'), "\n");
print("F18\t", *fmt(F18, 'G'), "\tF19\t", *fmt(F19, 'G'), "\n");
print("F20\t", *fmt(F20, 'G'), "\tF21\t", *fmt(F21, 'G'), "\n");
print("F22\t", *fmt(F22, 'G'), "\tF23\t", *fmt(F23, 'G'), "\n");
print("F24\t", *fmt(F24, 'G'), "\tF25\t", *fmt(F25, 'G'), "\n");
print("F26\t", *fmt(F26, 'G'), "\tF27\t", *fmt(F27, 'G'), "\n");
print("F28\t", *fmt(F28, 'G'), "\tF29\t", *fmt(F29, 'G'), "\n");
print("F30\t", *fmt(F30, 'G'), "\tF31\t", *fmt(F31, 'G'), "\n");
}
defn spr() // print special processor registers
{
local pc, link, cause;
pc = *PC;
print("PC\t", pc, " ", fmt(pc, 'a'), " ");
pfl(pc);
link = *R26;
print("SP\t", *SP, "\tLINK\t", link, " ", fmt(link, 'a'), " ");
pfl(link);
cause = *TYPE;
print("STATUS\t", *STATUS, "\tTYPE\t", cause, " ", reason(cause), "\n");
print("A0\t", *A0, " A1\t", *A1, " A2\t", *A2, "\n");
}
defn regs() // print all registers
{
spr();
gpr();
}
defn pstop(pid)
{
local l, pc;
pc = *PC;
print(pid,": ", reason(*TYPE), "\t");
print(fmt(pc, 'a'), "\t", fmt(pc, 'i'), "\n");
if notes then {
if notes[0] != "sys: breakpoint" then {
print("Notes pending:\n");
l = notes;
while l do {
print("\t", head l, "\n");
l = tail l;
}
}
}
}
sizeofUreg = 296;
aggr Ureg
{
'W' 0 type;
'W' 8 a0;
'W' 16 a1;
'W' 24 a2;
'W' 32 r0;
'W' 40 r1;
'W' 48 r2;
'W' 56 r3;
'W' 64 r4;
'W' 72 r5;
'W' 80 r6;
'W' 88 r7;
'W' 96 r8;
'W' 104 r9;
'W' 112 r10;
'W' 120 r11;
'W' 128 r12;
'W' 136 r13;
'W' 144 r14;
'W' 152 r15;
'W' 160 r19;
'W' 168 r20;
'W' 176 r21;
'W' 184 r22;
'W' 192 r23;
'W' 200 r24;
'W' 208 r25;
'W' 216 r26;
'W' 224 r27;
'W' 232 r28;
{
'W' 240 r30;
'W' 240 usp;
'W' 240 sp;
};
'W' 248 status;
'W' 256 pc;
'W' 264 r29;
'W' 272 r16;
'W' 280 r17;
'W' 288 r18;
};
defn
Ureg(addr) {
complex Ureg addr;
print(" type ", addr.type, "\n");
print(" a0 ", addr.a0, "\n");
print(" a1 ", addr.a1, "\n");
print(" a2 ", addr.a2, "\n");
print(" r0 ", addr.r0, "\n");
print(" r1 ", addr.r1, "\n");
print(" r2 ", addr.r2, "\n");
print(" r3 ", addr.r3, "\n");
print(" r4 ", addr.r4, "\n");
print(" r5 ", addr.r5, "\n");
print(" r6 ", addr.r6, "\n");
print(" r7 ", addr.r7, "\n");
print(" r8 ", addr.r8, "\n");
print(" r9 ", addr.r9, "\n");
print(" r10 ", addr.r10, "\n");
print(" r11 ", addr.r11, "\n");
print(" r12 ", addr.r12, "\n");
print(" r13 ", addr.r13, "\n");
print(" r14 ", addr.r14, "\n");
print(" r15 ", addr.r15, "\n");
print(" r19 ", addr.r19, "\n");
print(" r20 ", addr.r20, "\n");
print(" r21 ", addr.r21, "\n");
print(" r22 ", addr.r22, "\n");
print(" r23 ", addr.r23, "\n");
print(" r24 ", addr.r24, "\n");
print(" r25 ", addr.r25, "\n");
print(" r26 ", addr.r26, "\n");
print(" r27 ", addr.r27, "\n");
print(" r28 ", addr.r28, "\n");
print("_12_ {\n");
_12_(addr+240);
print("}\n");
print(" status ", addr.status, "\n");
print(" pc ", addr.pc, "\n");
print(" r29 ", addr.r29, "\n");
print(" r16 ", addr.r16, "\n");
print(" r17 ", addr.r17, "\n");
print(" r18 ", addr.r18, "\n");
};
defn linkreg(addr)
{
complex Ureg addr;
return addr.r26\X;
}
print("/sys/lib/acid/alpha");

116
sys/lib/acid/arm Executable file
View File

@ -0,0 +1,116 @@
// ARM support
defn acidinit() // Called after all the init modules are loaded
{
bplist = {};
bpfmt = 'X';
srcpath = {
"./",
"/sys/src/libc/port/",
"/sys/src/libc/9sys/",
"/sys/src/libc/arm/"
};
srcfiles = {}; // list of loaded files
srctext = {}; // the text of the files
}
defn linkreg(addr)
{
return *R14;
}
defn stk() // trace
{
_stk(*PC, *SP, linkreg(0), 0);
}
defn lstk() // trace with locals
{
_stk(*PC, *SP, linkreg(0), 1);
}
defn gpr() // print general purpose registers
{
print("R0\t", *R0, " R1\t", *R1, " R2\t", *R2, "\n");
print("R3\t", *R3, " R4\t", *R4, " R5\t", *R5, "\n");
print("R6\t", *R6, " R7\t", *R7, " R8\t", *R8, "\n");
print("R9\t", *R9, " R10\t", *R10, " R11\t", *R11, "\n");
print("R12\t", *R12, " R13\t", *R13, " R14\t", *R14, "\n");
print("R15\t", *R15, "\n");
}
defn regs() // print all registers
{
gpr();
}
defn pstop(pid)
{
local l;
local pc;
pc = *PC;
print(pid,": ", reason(*TYPE), "\t");
print(fmt(pc, 'a'), "\t", fmt(pc, 'i'), "\n");
if notes then {
if notes[0] != "sys: breakpoint" then {
print("Notes pending:\n");
l = notes;
while l do {
print("\t", head l, "\n");
l = tail l;
}
}
}
}
aggr Ureg
{
'U' 0 r0;
'U' 4 r1;
'U' 8 r2;
'U' 12 r3;
'U' 16 r4;
'U' 20 r5;
'U' 24 r6;
'U' 28 r7;
'U' 32 r8;
'U' 36 r9;
'U' 40 r10;
'U' 44 r11;
'U' 48 r12;
'U' 52 r13;
'U' 56 r14;
'U' 60 type;
'U' 64 psr;
'U' 68 pc;
};
defn
Ureg(addr) {
complex Ureg addr;
print(" r0 ", addr.r0, "\n");
print(" r1 ", addr.r1, "\n");
print(" r2 ", addr.r2, "\n");
print(" r3 ", addr.r3, "\n");
print(" r4 ", addr.r4, "\n");
print(" r5 ", addr.r5, "\n");
print(" r6 ", addr.r6, "\n");
print(" r7 ", addr.r7, "\n");
print(" r8 ", addr.r8, "\n");
print(" r9 ", addr.r9, "\n");
print(" r10 ", addr.r10, "\n");
print(" r11 ", addr.r11, "\n");
print(" r12 ", addr.r12, "\n");
print(" r13 ", addr.r13, "\n");
print(" r14 ", addr.r14, "\n");
print(" type ", addr.type, "\n");
print(" psr ", addr.psr, "\n");
print(" pc ", addr.pc, "\n");
};
print("/sys/lib/acid/arm");

128
sys/lib/acid/coverage Executable file
View File

@ -0,0 +1,128 @@
// Coverage library
defn coverage()
{
local lmap, lp, e, pc, n, l;
new();
bblock = {};
// find the first location in the text
e = (map()[0][1])\i;
while e < etext-4 do {
l = follow(e);
if tail l != {} then {
if match(l[0], bblock) < 0 then
bblock = append bblock, l[0];
if match(l[1], bblock) < 0 then
bblock = append bblock, l[1];
}
e++;
}
l = bblock;
while l != {} do {
*fmt(head l, bpfmt) = bpinst;
l = tail l;
}
while 1 do {
cont();
pc = *PC;
n = match(pc, bblock);
if n >= 0 then {
pc = fmt(pc, bpfmt);
*pc = @pc;
bblock = delete bblock, n;
}
else {
pstop(pid);
return {};
}
}
}
defn eblock(addr)
{
addr = addr\i;
while addr < etext do {
if (tail follow(addr)) != {} then
return pcline(addr);
addr++;
}
return 0;
}
defn basic(stsrc, ensrc, file)
{
local src, text;
if stsrc >= ensrc then
return {};
print(file, ":", stsrc, ",", ensrc, "\n");
src = match(file, srcfiles);
if src >= 0 then
src = srctext[src];
else
src = findsrc(file);
if src == {} then
print("no source for ", file, "\n");
else {
while stsrc <= ensrc do {
text = src[stsrc];
if text != {} then
print("\t", stsrc, ":", text, "\n");
stsrc = stsrc+1;
}
}
}
defn analyse(fnaddr)
{
local addr, l, tfn;
new();
tfn = fnbound(fnaddr);
l = bblock;
while l do {
addr = head l;
if addr >= tfn[0] && addr < tfn[1] then
basic(pcline(addr), eblock(addr), pcfile(addr));
l = tail l;
}
kill(pid);
}
defn report()
{
local addr, l;
new();
l = bblock;
while l do {
addr = head l;
basic(pcline(addr), eblock(addr), pcfile(addr));
l = tail l;
}
kill(pid);
}
defn stopped(pid)
{
return {};
}
print("/sys/lib/acid/coverage");

387
sys/lib/acid/kernel Executable file
View File

@ -0,0 +1,387 @@
include("/sys/lib/acid/syscall");
// print various /proc files
defn fd() {
rc("cat /proc/"+itoa(pid)+"/fd");
}
defn segment() {
rc("cat /proc/"+itoa(pid)+"/segment");
}
defn ns() {
rc("cat /proc/"+itoa(pid)+"/ns");
}
defn qid(qid) {
complex Qid qid;
return itoa(qid.path\X)+"."+itoa(qid.vers\X);
}
defn path(p) {
complex Path p;
if p != 0 then {
return *(p.s\s);
} else
return "<null>";
}
// print Image cache contents
// requires include("/sys/src/9/xxx/segment.acid")
IHASHSIZE = 64;
defn imagecacheline(h) {
while h != 0 do {
complex Image h;
print (h\X, " ", qid(h.qid), " type ", h.type\D, " ref ", h.ref, " next ", h.next\X, " ", cname(h.c.name), "\n");
h = h.hash;
}
}
defn imagecache() {
local i;
i=0; loop 1,IHASHSIZE do {
imagecacheline(imagealloc.free[i]);
i = i+1;
}
}
// dump channels
defn chan(c) {
local d, q;
c = (Chan)c;
d=(Dev)(*(devtab+4*c.type));
q=c.qid;
print("chan(", c\X, "): ref=", c.ref\D, " #", d.dc\r, c.dev\D, " (", q.path, " ", q.vers\D, " ", q.type\X, ")");
print(" fid=", c.fid\D, " iounit=", c.iounit\D);
if c.ref != 0 then {
print(" ", cname(c.name), " mchan=", c.mchan\X);
if c.mchan != 0 then {
print(" ", cname(c.mchan.name));
}
}
print("\n");
}
defn chans() {
local c;
c = (Chan)chanalloc.list;
while c != 0 do {
if c.ref != 0 then
chan(c);
c=(Chan)c.link;
}
}
defn nchans() {
local c, n;
n = 0;
c = (Chan)chanalloc.list;
while c != 0 do {
if c.ref != 0 then
n++;
c = (Chan)c.link;
}
return n;
}
defn activechanlist() {
local l, n;
l = {};
c = (Chan)chanalloc.list;
while c != 0 do {
if c.ref != 0 then
l = append l,c;
c = (Chan)c.link;
}
return l;
}
defn difflist(a, b) {
local l, x;
l = {};
while a != {} do {
x = head a;
if match(x, b) == -1 then
l = append l, x;
a = tail a;
}
return l;
}
_active_chan_list = {};
defn newchans() {
local l, new;
l = activechanlist();
if _active_chan_list != {} then
newerchans(_active_chan_list);
_active_chan_list = l;
}
defn newerchans(oldlist){
local new;
new = difflist(activechanlist(), oldlist);
while new != {} do {
chan(head new);
new = tail new;
}
}
// look for channels that refer to themselves
defn badchans() {
local bad, c, i, len, mtpt, p;
c = (Chan)chanalloc.list;
while c != 0 do {
if c.ref != 0 then {
bad = "";
p = (Path)c.path;
if p != 0 then {
path(p);
mtpt = p.mtpt;
len = p.mlen;
i=0; loop 1,len do {
if mtpt[i] == c then
bad = bad+" mtpt self-ref";
i = i+1;
}
}
if bad != "" then
print("chan(", c\X, "):", bad, "\n");
}
c = (Chan)c.link;
}
}
// manipulate processes
defn proctab(x) {
return procalloc.arena+sizeofProc*x;
}
defn proc(p) {
complex Proc p;
local s, i;
if p.state != 0 && p.pid != 0 && p.text != 0 then { // 0 is Dead
s = p.psstate;
if s == 0 then {
s = "kproc";
} else {
s = *(s\s);
}
print(p\X, " ", p.pid, ": ", *(p.text\s), " ", *(p.user\s), " pc ", p.pc\X, " ", s, " (", *(statename[p.state]\s), ") ut ", p.time[0]\D, " st ", p.time[1]\D, " qpc ", p.qpc\X, "\n");
}
}
defn procenv(p) {
complex Proc p;
local e, v;
e = p.egrp;
complex Egrp e;
v = e.entries;
while v != 0 do {
complex Evalue v;
print(*(v.name\s), "=");
printstringn(v.value, v.len);
print("\n");
v = v.link;
}
}
KSTACK=4096;
defn procstksize(p) {
complex Proc p;
local top, sp;
if p.state != 0 then { // 0 is Dead
top = p.kstack+KSTACK;
sp = *p.sched;
print(top-sp\D, "\n");
}
}
defn procstk(p) {
complex Proc p;
local l;
if p.state != 0 then { // 0 is Dead
l = p.sched;
if objtype=="386" then
_stk(gotolabel, *l, linkreg(0), 0);
else
_stk(*(l+4), *l, linkreg(0), 0);
}
}
defn procs() {
local i;
i=0; loop 1,conf.nproc do {
proc(proctab(i));
i = i+1;
}
}
defn stacks() {
local i, p;
i=0; loop 1,conf.nproc do {
p = (Proc)proctab(i);
if p.state != 0 then {
print("=========================================================\n");
proc(p);
procstk(p);
}
i = i+1;
}
}
defn stacksizes() {
local i;
i=0; loop 1,conf.nproc do {
procstksize(proctab(i));
i = i+1;
}
}
// segment-related
defn procsegs(p) {
complex Proc p;
local i;
i=0; loop 1,NSEG do {
psegment(p.seg[i]);
i = i+1;
}
}
segtypes = { "text", "data", "bss", "stack", "shared", "physical", "shdata", "map" };
defn psegment(s) {
complex Segment s;
if s != 0 then {
print(s\X, " ", segtypes[s.type&SG_TYPE], " ", s.base\X, "-", s.top\X, " image ", s.image\X, "\n");
}
}
// find physical address for an address in a given process
defn procaddr(p, a) {
complex Proc p;
local i, s, r;
r = 0;
i=0; loop 1,NSEG do {
s = p.seg[i];
if s != 0 then {
complex Segment s;
if s.base <= a && a < s.top then {
r = segaddr(s, a);
}
}
i = i+1;
}
return r;
}
// find an address in a given segment
defn segaddr(s, a) {
complex Segment s;
local pte, pg;
a = a - s.base;
if s.map == 0 || s.mapsize < a/PTEMAPMEM then {
return 0;
}
pte = s.map[a/PTEMAPMEM];
if pte == 0 then {
return 0;
}
complex Pte pte;
pg = pte.pages[(a%PTEMAPMEM)/BY2PG];
if pg == 0 then {
return 0;
}
if pg & 1 then { // swapped out, return disk address
return pg&~1;
}
complex Page pg;
return (KZERO|(pg.pa+(a%BY2PG)))\X;
}
defn kzero() {
return main - (main & 0x0FFFFFFF);
}
// PC only
PTEMAPMEM = (1024*1024);
BY2PG = 4096;
PTEPERTAB = (PTEMAPMEM/BY2PG);
defn up() {
local mach;
MACHADDR = KZERO+0x4000;
mach = MACHADDR;
complex Mach mach;
return mach.externup;
}
defn intrcount() {
local p, pp, t, i, j;
p = intrtimes;
i=0;
loop 1,256 do {
pp = p[i];
i=i+1;
if pp != 0 then {
j=0;
t=0;
loop 1,1000 do {
t = t+pp[j];
j=j+1;
}
print(itoa(i, "%5d"), " ", itoa(t, "%11d"), "\n");
}
}
}
print("/sys/lib/acid/kernel");
defn needacid(s){
print("\trc(\"cd /sys/src/9/", kdir, "; mk ", s, ".acid\")\n");
print("\tinclude(\"/sys/src/9/", kdir, "/", s, ".acid\")\n");
}
defn kinit() {
if (map()[2]) != {} then { // map has more than two elements -> active proc
kdir = "unknown";
KZERO = kzero();
if objtype == "386" then {
map({"*data", KZERO, 0xffffffff, KZERO});
kdir="pc";
}
if (objtype == "mips" || objtype == "mips2") then {
kdir = "ch";
}
if objtype == "alpha" then {
map({"*data", KZERO, 0xffffffff, KZERO});
kdir = "alpha";
}
needacid("proc");
}
}

188
sys/lib/acid/leak Executable file
View File

@ -0,0 +1,188 @@
//
// usage: acid -l pool -l leak
//
include("/sys/src/libc/port/pool.acid");
defn
dumppool(p, sum)
{
complex Pool p;
a = p.arenalist;
print("A: ", p.arenalist\X, "\n");
while a != 0 && a < 0xff000000 do {
complex Arena a;
dumparena(a, sum);
a = a.down;
}
}
defn
dumparena(arena, sum)
{
local atail, b, nb;
atail = A2TB(arena);
complex Bhdr arena;
b = a;
print("B: ", b\X, " ", atail\X, "\n");
while b < atail && b.magic != ARENATAIL_MAGIC do {
dumpblock(b, sum);
nb = B2NB(b);
if nb == b then {
print("B2NB(", b\X, ") = b\n");
b = atail; // end loop
}
if nb > atail then {
b = (Bhdr)(b+4);
print("lost at block ", (b-4)\X, ", scanning forward\n");
while b < atail && b.magic != ALLOC_MAGIC && b.magic != FREE_MAGIC do
b = (Bhdr)(b+4);
print("stopped at ", b\X, " ", *b\X, "\n");
}else
b = nb;
}
if b != atail then
print("found wrong tail to arena ", arena\X, " wanted ", atail\X, "\n");
}
defn
isptr(a)
{
if end <= a && a < xbloc then
return 1;
if 0xdefff000 <= a && a < 0xdffff000 then
return 1;
return 0;
}
lastalloc = 0;
lastcount = 0;
lastsize = 0;
defn
emitsum()
{
if lastalloc then
print("summary ", lastalloc\a, " ", lastcount\D, " ", lastsize\D, "\n");
lastalloc = 0;
lastcount = 0;
lastsize = 0;
}
defn
dumpblock(addr, sum)
{
complex Bhdr addr;
if addr.magic == ALLOC_MAGIC || (!sum && addr.magic == FREE_MAGIC) then {
local a, x, s;
a = addr;
complex Alloc a;
x = addr+8;
if sum then {
if *(addr+8) != lastalloc then {
emitsum();
lastalloc = *(addr+8);
}
lastcount = lastcount+1;
lastsize = lastsize+a.size;
}else{
if addr.magic == ALLOC_MAGIC then
s = "block";
else
s = "free";
print(s, " ", addr\X, " ", a.size\X, " ");
print(*(addr+8)\X, " ", *(addr+12)\X, " ",
*(addr+8)\a, " ", *(addr+12)\a, "\n");
}
}
}
defn
dumprange(s, e, type)
{
local x, y;
print("range ", type, " ", s\X, " ", e\X, "\n");
x = s;
while x < e do {
y = *(x\X);
if isptr(y) then print("data ", x\X, " ", y\X, " ", type, "\n");
x = x + 4;
}
}
defn
stacktop()
{
local e, m;
m = map();
while m != {} do {
e = head m;
if e[0] == "*data" then
return e[2];
m = tail m;
}
return 0xdffff000;
}
defn
dumpmem()
{
local s, top;
xbloc = *bloc;
// assume map()[1] is "data"
dumprange(map()[1][1], end, "bss"); // bss
dumprange(end, xbloc, "alloc"); // allocated
top = stacktop() - 8;
if top-0x01000000 < *SP && *SP < top then
s = *SP;
else
s = top-32*1024;
dumprange(s, top, "stack");
}
defn
dumpregs()
{
dumprange(0, sizeofUreg, "reg");
}
defn
leakdump(l)
{
print("==LEAK BEGIN==\n");
dumppool(*mainmem, 0);
dumpmem();
dumpregs();
while l != {} do {
setproc(head l);
dumpregs();
l = tail l;
}
print("==LEAK END==\n");
}
defn
blockdump()
{
print("==BLOCK BEGIN==\n");
dumppool(*mainmem, 0);
print("==BLOCK END==\n");
}
defn
blocksummary()
{
print("==BLOCK BEGIN==\n");
dumppool(*mainmem, 1);
emitsum();
print("==BLOCK END==\n");
}

217
sys/lib/acid/mips Executable file
View File

@ -0,0 +1,217 @@
// Mips support
defn acidinit() // Called after all the init modules are loaded
{
bplist = {};
bpfmt = 'X';
srcpath = {
"./",
"/sys/src/libc/port/",
"/sys/src/libc/9sys/",
"/sys/src/libc/mips/"
};
srcfiles = {}; // list of loaded files
srctext = {}; // the text of the files
}
defn stk() // trace
{
_stk(*PC, *SP, linkreg(0), 0);
}
defn lstk() // trace with locals
{
_stk(*PC, *SP, linkreg(0), 1);
}
defn gpr() // print general purpose registers
{
print("R1\t", *R1, " R2\t", *R2, " R3\t", *R3, "\n");
print("R4\t", *R4, " R5\t", *R5, " R6\t", *R6, "\n");
print("R7\t", *R7, " R8\t", *R8, " R9\t", *R9, "\n");
print("R10\t", *R10, " R11\t", *R11, " R12\t", *R12, "\n");
print("R13\t", *R13, " R14\t", *R14, " R15\t", *R15, "\n");
print("R16\t", *R16, " R17\t", *R17, " R18\t", *R18, "\n");
print("R19\t", *R19, " R20\t", *R20, " R21\t", *R21, "\n");
print("R22\t", *R22, " R23\t", *R23, " R24\t", *R24, "\n");
print("R25\t", *R25, " R26\t", *R26, " R27\t", *R27, "\n");
print("R28\t", *R28, " R29\t", *SP, " R30\t", *R30, "\n");
print("R31\t", *R31, "\n");
}
defn Fpr()
{
print("F0\t", *fmt(F0, 'G'), "\tF2\t", *fmt(F2, 'G'), "\n");
print("F4\t", *fmt(F4, 'G'), "\tF6\t", *fmt(F6, 'G'), "\n");
print("F8\t", *fmt(F8, 'G'), "\tF10\t", *fmt(F10, 'G'), "\n");
print("F12\t", *fmt(F12, 'G'), "\tF14\t", *fmt(F14, 'G'), "\n");
print("F16\t", *fmt(F16, 'G'), "\tF18\t", *fmt(F18, 'G'), "\n");
print("F20\t", *fmt(F20, 'G'), "\tF22\t", *fmt(F22, 'G'), "\n");
print("F24\t", *fmt(F24, 'G'), "\tF26\t", *fmt(F26, 'G'), "\n");
print("F28\t", *fmt(F28, 'G'), "\tF30\t", *fmt(F30, 'G'), "\n");
}
defn fpr()
{
print("F0\t", *fmt(F0, 'g'), "\tF1\t", *fmt(F1, 'g'), "\n");
print("F2\t", *fmt(F2, 'g'), "\tF3\t", *fmt(F3, 'g'), "\n");
print("F4\t", *fmt(F4, 'g'), "\tF5\t", *fmt(F5, 'g'), "\n");
print("F6\t", *fmt(F6, 'g'), "\tF7\t", *fmt(F7, 'g'), "\n");
print("F8\t", *fmt(F8, 'g'), "\tF9\t", *fmt(F9, 'g'), "\n");
print("F10\t", *fmt(F10, 'g'), "\tF11\t", *fmt(F11, 'g'), "\n");
print("F12\t", *fmt(F12, 'g'), "\tF13\t", *fmt(F13, 'g'), "\n");
print("F14\t", *fmt(F14, 'g'), "\tF15\t", *fmt(F15, 'g'), "\n");
print("F16\t", *fmt(F16, 'g'), "\tF17\t", *fmt(F17, 'g'), "\n");
print("F18\t", *fmt(F18, 'g'), "\tF19\t", *fmt(F19, 'g'), "\n");
print("F20\t", *fmt(F20, 'g'), "\tF21\t", *fmt(F21, 'g'), "\n");
print("F22\t", *fmt(F22, 'g'), "\tF23\t", *fmt(F23, 'g'), "\n");
print("F24\t", *fmt(F24, 'g'), "\tF25\t", *fmt(F25, 'g'), "\n");
print("F26\t", *fmt(F26, 'g'), "\tF27\t", *fmt(F27, 'g'), "\n");
print("F28\t", *fmt(F28, 'g'), "\tF29\t", *fmt(F29, 'g'), "\n");
print("F30\t", *fmt(F30, 'g'), "\tF31\t", *fmt(F31, 'g'), "\n");
}
defn spr() // print special processor registers
{
local pc, link, cause;
pc = *PC;
print("PC\t", pc, " ", fmt(pc, 'a'), " ");
pfl(pc);
link = *R31;
print("SP\t", *SP, "\tLINK\t", link, " ", fmt(link, 'a'), " ");
pfl(link);
cause = *CAUSE;
print("STATUS\t", *STATUS, "\tCAUSE\t", cause, " ", reason(cause), "\n");
print("TLBVIR\t", *TLBVIRT, "\tBADVADR\t", *BADVADDR, "\n");
print("HI\t", *HI, "\tLO\t", *LO, "\n");
}
defn regs() // print all registers
{
spr();
gpr();
}
defn pstop(pid)
{
local l, pc;
pc = *PC;
print(pid,": ", reason(*CAUSE), "\t");
print(fmt(pc, 'a'), "\t", fmt(pc, 'i'), "\n");
if notes then {
if notes[0] != "sys: breakpoint" then {
print("Notes pending:\n");
l = notes;
while l do {
print("\t", head l, "\n");
l = tail l;
}
}
}
}
sizeofUreg = 152;
aggr Ureg
{
'X' 0 status;
'X' 4 pc;
{
'X' 8 sp;
'X' 8 usp;
};
'X' 12 cause;
'X' 16 badvaddr;
'X' 20 tlbvirt;
'X' 24 hi;
'X' 28 lo;
'X' 32 r31;
'X' 36 r30;
'X' 40 r28;
'X' 44 r27;
'X' 48 r26;
'X' 52 r25;
'X' 56 r24;
'X' 60 r23;
'X' 64 r22;
'X' 68 r21;
'X' 72 r20;
'X' 76 r19;
'X' 80 r18;
'X' 84 r17;
'X' 88 r16;
'X' 92 r15;
'X' 96 r14;
'X' 100 r13;
'X' 104 r12;
'X' 108 r11;
'X' 112 r10;
'X' 116 r9;
'X' 120 r8;
'X' 124 r7;
'X' 128 r6;
'X' 132 r5;
'X' 136 r4;
'X' 140 r3;
'X' 144 r2;
'X' 148 r1;
};
defn
Ureg(addr) {
complex Ureg addr;
print(" status ", addr.status, "\n");
print(" pc ", addr.pc, "\n");
print(" sp ", addr.sp, "\n");
print(" cause ", addr.cause, "\n");
print(" badvaddr ", addr.badvaddr, "\n");
print(" tlbvirt ", addr.tlbvirt, "\n");
print(" hi ", addr.hi, "\n");
print(" lo ", addr.lo, "\n");
print(" r31 ", addr.r31, "\n");
print(" r30 ", addr.r30, "\n");
print(" r28 ", addr.r28, "\n");
print(" r27 ", addr.r27, "\n");
print(" r26 ", addr.r26, "\n");
print(" r25 ", addr.r25, "\n");
print(" r24 ", addr.r24, "\n");
print(" r23 ", addr.r23, "\n");
print(" r22 ", addr.r22, "\n");
print(" r21 ", addr.r21, "\n");
print(" r20 ", addr.r20, "\n");
print(" r19 ", addr.r19, "\n");
print(" r18 ", addr.r18, "\n");
print(" r17 ", addr.r17, "\n");
print(" r16 ", addr.r16, "\n");
print(" r15 ", addr.r15, "\n");
print(" r14 ", addr.r14, "\n");
print(" r13 ", addr.r13, "\n");
print(" r12 ", addr.r12, "\n");
print(" r11 ", addr.r11, "\n");
print(" r10 ", addr.r10, "\n");
print(" r9 ", addr.r9, "\n");
print(" r8 ", addr.r8, "\n");
print(" r7 ", addr.r7, "\n");
print(" r6 ", addr.r6, "\n");
print(" r5 ", addr.r5, "\n");
print(" r4 ", addr.r4, "\n");
print(" r3 ", addr.r3, "\n");
print(" r2 ", addr.r2, "\n");
print(" r1 ", addr.r1, "\n");
};
defn linkreg(addr)
{
complex Ureg addr;
return addr.r31\X;
}
print("/sys/lib/acid/mips");

169
sys/lib/acid/network Executable file
View File

@ -0,0 +1,169 @@
_ni=0; // network indent level
defn
_ni() {
loop 1,_ni do {
print("\t");
}
}
defn
ipdev(n) {
_ipfs(*(ipfs+4*n));
}
// the funny _foo/foo pairs exist so that if we get
// interrupted in the middle of one of these, _ni will
// get reset to 0 next time an external call happens.
defn
_ipfs(fs) {
complex Fs fs;
local i;
print("ipfs(", fs\X, ") #I", fs.dev\D, "\n");
i=0;
_ni = _ni+1;
while i < fs.np do {
_proto(*(fs.p+i*4));
i = i + 1;
}
_ni = _ni-1;
}
defn
ipfs(fs) {
_ni = 0;
_ipfs(fs);
}
defn
_proto(p) {
local c;
complex Proto p;
_ni();
print("proto(", p\X, ") ", *(p.name\s), "\n");
_ni = _ni+1;
local i;
i = 0;
while i < p.nc do {
c = *(p.conv+i*4);
complex Conv c;
if c != 0 && c.inuse then
_conv(*(p.conv+i*4));
i = i + 1;
}
_ni = _ni - 1;
}
defn
proto(p) {
_ni = 0;
_proto(p);
}
defn
_conv(c) {
complex Conv c;
_ni();
local p;
p = c.p;
complex Proto p;
print("conv(", c\X, ") ", *(p.name\s), "/", c.x\D, " ",
iptostr(*(c.laddr+12)), "!", c.lport\D, " ", iptostr(*(c.raddr+12)),
"!", c.rport\D, " rq ", qtostr(c.rq), " wq ", qtostr(c.wq),
" eq ", qtostr(c.eq), "\n");
}
defn
conv(c) {
_ni = 0;
_conv(c);
}
defn
iptostr(a)
{
// BUG: little endian
return itoa(a&0xFF)+"."+itoa((a>>8)&0xFF)+"."+itoa((a>>16)&0xFF)+"."+itoa((a>>24)&0xFF);
}
defn
qtostr(q)
{
complex Queue q;
return "queue("+itoa(q, "%lux")+") ["+itoa(q.len, "%d")+","+itoa(q.dlen, "%d")+","+itoa(qblocks(q), "%d")+"]";
}
defn
qblocks(q)
{
complex Queue q;
local b, n;
b = q.bfirst;
n = 0;
while b != 0 do {
n = n + 1;
complex Block b;
b = b.next;
}
return n;
}
defn
_queue(q)
{
complex Queue q;
local b;
print("queue(", q\X, ") len ", q.len\D, " dlen ", q.dlen\D, " limit ", q.limit\D, " nblocks ", qblocks(q)\D);
if q.state & Qstarve then
print(" starve");
if q.state & Qmsg then
print(" msg");
if q.state & Qclosed then
print(" closed");
if q.state & Qflow then
print(" flow");
if q.state & Qcoalesce then
print(" coalesce");
print("\n");
b = q.bfirst;
_ni = _ni+1;
while b != 0 do {
_block(b);
complex Block b;
b = b.next;
}
_ni = _ni - 1;
}
defn
queue(q)
{
_ni = 0;
_queue(q);
}
defn
_block(b)
{
complex Block b;
_ni();
print("block(", b\X, ") base ", b.base\X, " rp ", b.rp\X, "/", b.rp-b.base\D, " wp ", b.wp\X, "/", b.wp-b.base\D, " lim ", b.lim\X, "/", b.lim-b.base\D, "\n");
}
defn
block(b)
{
_ni = 0;
block(b);
}
print("/sys/lib/acid/network");
needacid("tcp");
needacid("qio");

306
sys/lib/acid/pool Executable file
View File

@ -0,0 +1,306 @@
include("/sys/src/libc/port/pool.acid");
aggr Byte {
'b' 0 byte;
};
defn
byteat(addr)
{
local x;
complex Byte addr;
x = addr.byte;
return x\d;
}
defn
B2T(addr) {
complex Bhdr addr;
addr = addr+addr.size-sizeofBtail;
complex Btail addr;
return addr;
}
defn
B2D(addr) {
local x;
x = addr+sizeofBhdr;
return x\X;
}
defn
D2B(addr) {
local x;
x = addr-sizeofBhdr;
complex Bhdr x;
return x;
}
defn
B2NB(addr) {
complex Bhdr addr;
addr = addr+addr.size;
complex Bhdr addr;
return addr;
}
defn
A2TB(addr) {
local b;
complex Arena addr;
b = addr+addr.asize-sizeofBhdr;
complex Bhdr b;
return b;
}
defn
A2B(addr) {
return B2NB(addr);
}
defn
B2PT(addr) {
complex Bhdr addr;
addr = addr-sizeofBtail;
complex Btail addr;
return addr;
}
defn
SHORT(addr) {
local hi, lo;
hi = byteat(addr);
lo = byteat(addr+1);
return lo+hi*256;
}
defn
Btail(addr) {
complex Btail addr;
print(" magic0 ", addr.magic0, "\n");
print(" datadiff ", SHORT(addr.datasize), "\n");
print(" magic1 ", addr.magic1, "\n");
print(" size ", addr.size\X, "\n");
print(" hdr ", addr+sizeofBtail-addr.size\X, "\n");
};
defn
Tail(addr)
{
print(" ", B2T(addr)\X, "\n");
Btail(B2T(addr));
}
defn
Magic(m)
{
if m == FREE_MAGIC then
return "free";
if m == ARENA_MAGIC then
return "arena";
if m == UNKEMPT_MAGIC then
return "unkempt";
if m == KEMPT_MAGIC then
return "kempt";
if m == ARENATAIL_MAGIC then
return "arenatail";
if m == DEAD_MAGIC then
return "dead";
return "unknown magic";
}
defn
Block(addr)
{
complex Bhdr addr;
print(" ", Magic(addr.magic), "\n");
print(" data ", B2D(addr), "\n");
print(" datasize ", getdsize(addr), "\n");
Bhdr(addr);
Tail(addr);
}
defn
getdsize(addr)
{
complex Bhdr addr;
local x;
x = addr.size\d;
x = x-SHORT(B2T(addr).datasize);
return x\d;
}
defn
datamagic(x)
{
x = x%4;
if x == 0 then return 0xFE;
if x == 1 then return 0xF1;
if x == 2 then return 0xF0;
if x == 3 then return 0xFA;
}
defn
checkblock(addr)
{
local badmagic, datamagic, a, b, t, q, n, dsize, taddr, checked;
complex Bhdr addr;
taddr = B2T(addr);
complex Btail taddr;
if addr.magic == FREE_MAGIC || addr.magic == UNKEMPT_MAGIC then {
if taddr.magic0 != TAIL_MAGIC0 || taddr.magic1 != TAIL_MAGIC1 then
print(addr\X, " corrupt tail magic\n");
if taddr.size != addr.size then
print(addr\X, " corrupt tail header pointer\n");
}
if addr.magic == ARENA_MAGIC then {
taddr = A2TB(addr);
if taddr.magic != ARENATAIL_MAGIC then
print(addr\X, " arena with bad tail block\n");
else
addr = taddr;
}
if addr.magic == ARENATAIL_MAGIC then {
if addr.size != 0 then
print(addr\X, " bad size in arena tail\n");
}
if addr.magic == KEMPT_MAGIC then {
a = addr;
complex Alloc a;
if a.size > 1024*1024*1024 then
print(addr\X, " block ridiculously large\n");
t = B2T(addr);
if t.magic0 != TAIL_MAGIC0 || t.magic1 != TAIL_MAGIC1 then
print(addr\X, " bad tail magic\n");
if t.size != addr.size then
print(addr\X, " bad tail pointer\n");
dsize = getdsize(a);
if dsize > a.size then
print(addr\X, " too much data in block\n");
q = B2D(a)\X+dsize;
n = 4;
if q+4 > t then
n = t-q;
badmagic = 0;
loop 0,n-1 do {
if byteat(q) != datamagic(q) then {
badmagic=1;
}
q = q+1;
}
if badmagic then
print(addr\X, " size ", dsize, " user has overwritten boundary\n");
}
}
defn
checkarena(arena)
{
local atail, b;
atail = A2TB(arena);
complex Bhdr arena;
b = arena;
while b.magic != ARENATAIL_MAGIC && b < atail do {
checkblock(b);
if B2NB(b) == b then {
print("B2NB(", b\X, ") = b\n");
b = atail; // end loop
}
b = B2NB(b);
}
checkblock(b);
if b != atail then
print("found wrong tail to arena ", arena\X, "\n");
}
defn
checkpool(p)
{
complex Pool p;
local a;
a = p.arenalist;
while a != 0 do {
complex Arena a;
checkarena(a);
a = a.down;
}
}
defn
gendumptree(f, in, s)
{
complex Free f;
loop 1,in do {print(" ");}
print(s, " size ", f.size\D, " left ", f.left\X, " right ", f.right\X, "\n");
if f.left != 0 && f.left < 0x7FFFFFFF then
gendumptree(f.left, in+1, "l");
if f.right != 0 && f.right < 0x7FFFFFFF then
gendumptree(f.right, in+1, "r");
}
defn
dumptree(f)
{
gendumptree(f, 0, "*");
}
defn
poolwhopointsat(p, addr)
{
complex Pool p;
local a;
a = p.arenalist;
while a != 0 do {
complex Arena a;
arenawhopointsat(a, addr);
a = a.down;
}
}
defn
arenawhopointsat(arena, addr)
{
local atail, b;
atail = A2TB(arena);
complex Bhdr arena;
b = arena;
while b < atail do {
if *b == addr then
print(b\X, "\n");
b = b+4;
}
}
defn
whopointsat(addr)
{
poolwhopointsat(*mainmem, addr);
}
defn
blockhdr(addr)
{
addr = addr & ~3;
while *addr != FREE_MAGIC
&& *addr != ARENA_MAGIC
&& *addr != UNKEMPT_MAGIC
&& *addr != KEMPT_MAGIC
&& *addr != ARENATAIL_MAGIC
do
addr = addr-4;
return addr;
}

574
sys/lib/acid/port Executable file
View File

@ -0,0 +1,574 @@
// portable acid for all architectures
defn pfl(addr)
{
print(pcfile(addr), ":", pcline(addr), "\n");
}
defn
notestk(addr)
{
local pc, sp;
complex Ureg addr;
pc = addr.pc\X;
sp = addr.sp\X;
print("Note pc:", pc, " sp:", sp, " ", fmt(pc, 'a'), " ");
pfl(pc);
_stk(pc, sp, linkreg(addr), 1);
}
defn
notelstk(addr)
{
local pc, sp;
complex Ureg addr;
pc = addr.pc\X;
sp = addr.sp\X;
print("Note pc:", pc, " sp:", sp, " ", fmt(pc, 'a'), " ");
pfl(pc);
_stk(pc, sp, linkreg(addr), 1);
}
defn labstk(l) // trace from a label
{
_stk(*(l+4), *l, linkreg(0), 0);
}
defn params(param)
{
while param do {
sym = head param;
print(sym[0], "=", itoa(sym[1], "%ux"));
param = tail param;
if param then
print (",");
}
}
stkprefix = "";
stkignore = {};
stkend = 0;
defn locals(l)
{
local sym;
while l do {
sym = head l;
print(stkprefix, "\t", sym[0], "=", itoa(sym[1], "%ux"), "\n");
l = tail l;
}
}
defn _stkign(file)
{
s = stkignore;
while s do {
if regexp(head s, file) then
return 1;
s = tail s;
}
return 0;
}
// print a stack trace
//
// in a run of leading frames in files matched by regexps in stkignore,
// only print the last one.
defn _stk(pc, sp, link, dolocals)
{
local stk, ign, last, lastpc;
stk = strace(pc, sp, link);
if stkignore then
ign = 1;
else
ign = 0;
last = stk;
lastpc = pc;
while stk do {
if ign then {
if !_stkign(pcfile(pc)) then {
ign = 0;
stk = last;
pc = lastpc;
}
}
frame = head stk;
if !ign then {
print(stkprefix, fmt(frame[0], 'a'), "(");
params(frame[2]);
print(")+", itoa(pc-frame[0], "%ux"), " ");
pfl(pc);
if dolocals then
locals(frame[3]);
}
last = stk;
lastpc = pc;
stk = tail stk;
pc = frame[1];
}
print(stkprefix, fmt(pc, 'a'), " ");
pfl(pc);
}
defn findsrc(file)
{
local lst, src;
if file[0] == '/' then {
src = file(file);
if src != {} then {
srcfiles = append srcfiles, file;
srctext = append srctext, src;
return src;
}
return {};
}
lst = srcpath;
while head lst do {
src = file(head lst+file);
if src != {} then {
srcfiles = append srcfiles, file;
srctext = append srctext, src;
return src;
}
lst = tail lst;
}
}
defn line(addr)
{
local src, file;
file = pcfile(addr);
src = match(file, srcfiles);
if src >= 0 then
src = srctext[src];
else
src = findsrc(file);
if src == {} then {
print("no source for ", file, "\n");
return {};
}
line = pcline(addr)-1;
print(file, ":", src[line], "\n");
}
defn addsrcdir(dir)
{
dir = dir+"/";
if match(dir, srcpath) >= 0 then {
print("already in srcpath\n");
return {};
}
srcpath = {dir}+srcpath;
}
defn source()
{
local l;
l = srcpath;
while l do {
print(head l, "\n");
l = tail l;
}
l = srcfiles;
while l do {
print("\t", head l, "\n");
l = tail l;
}
}
defn Bsrc(addr)
{
local lst;
lst = srcpath;
file = pcfile(addr);
if file[0] == '/' && access(file) then {
rc("B "+file+":"+itoa(pcline(addr)));
return {};
}
while head lst do {
name = head lst+file;
if access(name) then {
rc("B "+name+":"+itoa(pcline(addr)));
return {};
}
lst = tail lst;
}
print("no source for ", file, "\n");
}
defn srcline(addr)
{
local text, cline, line, file, src;
file = pcfile(addr);
src = match(file,srcfiles);
if (src>=0) then
src = srctext[src];
else
src = findsrc(file);
if (src=={}) then
{
return "(no source)";
}
return src[pcline(addr)-1];
}
defn src(addr)
{
local src, file, line, cline, text;
file = pcfile(addr);
src = match(file, srcfiles);
if src >= 0 then
src = srctext[src];
else
src = findsrc(file);
if src == {} then {
print("no source for ", file, "\n");
return {};
}
cline = pcline(addr)-1;
print(file, ":", cline+1, "\n");
line = cline-5;
loop 0,10 do {
if line >= 0 then {
text = src[line];
if text == {} then
return {};
if line == cline then
print(">");
else
print(" ");
print(line+1, "\t", text, "\n");
}
line = line+1;
}
}
defn step() // single step the process
{
local lst, lpl, addr, bput;
bput = 0;
if match(*PC, bplist) >= 0 then { // Sitting on a breakpoint
bput = fmt(*PC, bpfmt);
*bput = @bput;
}
lst = follow(*PC);
lpl = lst;
while lpl do { // place break points
*(head lpl) = bpinst;
lpl = tail lpl;
}
startstop(pid); // do the step
while lst do { // remove the breakpoints
addr = fmt(head lst, bpfmt);
*addr = @addr;
lst = tail lst;
}
if bput != 0 then
*bput = bpinst;
}
defn bpset(addr) // set a breakpoint
{
if status(pid) != "Stopped" then {
print("Waiting...\n");
stop(pid);
}
if match(addr, bplist) >= 0 then
print("breakpoint already set at ", fmt(addr, 'a'), "\n");
else {
*fmt(addr, bpfmt) = bpinst;
bplist = append bplist, addr;
}
}
defn bptab() // print a table of breakpoints
{
local lst, addr;
lst = bplist;
while lst do {
addr = head lst;
print("\t", fmt(addr, 'X'), " ", fmt(addr, 'a'), " ", fmt(addr, 'i'), "\n");
lst = tail lst;
}
}
defn bpdel(addr) // delete a breakpoint
{
local n, pc, nbplist;
n = match(addr, bplist);
if n < 0 then {
print("no breakpoint at ", fmt(addr, 'a'), "\n");
return {};
}
addr = fmt(addr, bpfmt);
*addr = @addr;
nbplist = {}; // delete from list
while bplist do {
pc = head bplist;
if pc != addr then
nbplist = append nbplist, pc;
bplist = tail bplist;
}
bplist = nbplist; // delete from memory
}
defn cont() // continue execution
{
local addr;
addr = fmt(*PC, bpfmt);
if match(addr, bplist) >= 0 then { // Sitting on a breakpoint
*addr = @addr;
step(); // Step over
*addr = bpinst;
}
startstop(pid); // Run
}
defn stopped(pid) // called from acid when a process changes state
{
pstop(pid); // stub so this is easy to replace
}
defn procs() // print status of processes
{
local c, lst, cpid;
cpid = pid;
lst = proclist;
while lst do {
np = head lst;
setproc(np);
if np == cpid then
c = '>';
else
c = ' ';
print(fmt(c, 'c'), np, ": ", status(np), " at ", fmt(*PC, 'a'), " setproc(", np, ")\n");
lst = tail lst;
}
pid = cpid;
if pid != 0 then
setproc(pid);
}
_asmlines = 30;
defn asm(addr)
{
local bound;
bound = fnbound(addr);
addr = fmt(addr, 'i');
loop 1,_asmlines do {
print(fmt(addr, 'a'), " ", fmt(addr, 'X'));
print("\t", @addr++, "\n");
if bound != {} && addr > bound[1] then {
lasmaddr = addr;
return {};
}
}
lasmaddr = addr;
}
defn casm()
{
asm(lasmaddr);
}
defn win()
{
local npid, estr;
bplist = {};
notes = {};
estr = "/sys/lib/acid/window '0 0 600 400' "+textfile;
if progargs != "" then
estr = estr+" "+progargs;
npid = rc(estr);
npid = atoi(npid);
if npid == 0 then
error("win failed to create process");
setproc(npid);
stopped(npid);
}
defn win2()
{
local npid, estr;
bplist = {};
notes = {};
estr = "/sys/lib/acid/transcript '0 0 600 400' '100 100 700 500' "+textfile;
if progargs != "" then
estr = estr+" "+progargs;
npid = rc(estr);
npid = atoi(npid);
if npid == 0 then
error("win failed to create process");
setproc(npid);
stopped(npid);
}
defn new()
{
bplist = {};
newproc(progargs);
// Dont miss the delay slot calls
bpset(follow(main)[0]);
cont();
bpdel(*PC);
}
defn stmnt() // step one statement
{
local line;
line = pcline(*PC);
while 1 do {
step();
if line != pcline(*PC) then {
src(*PC);
return {};
}
}
}
defn func() // step until we leave the current function
{
local bound, end, start, pc;
bound = fnbound(*PC);
if bound == {} then {
print("cannot locate text symbol\n");
return {};
}
pc = *PC;
start = bound[0];
end = bound[1];
while pc >= start && pc < end do {
step();
pc = *PC;
}
}
defn next()
{
local sp, bound;
sp = *SP;
bound = fnbound(*PC);
stmnt();
pc = *PC;
if pc >= bound[0] && pc < bound[1] then
return {};
while (pc < bound[0] || pc > bound[1]) && sp >= *SP do {
step();
pc = *PC;
}
src(*PC);
}
defn dump(addr, n, fmt)
{
// see definition of dump in acid manual: it does n+1 iterations
loop 0, n do {
print(fmt(addr, 'X'), ": ");
addr = mem(addr, fmt);
}
}
defn mem(addr, fmt)
{
local i, c, n;
i = 0;
while fmt[i] != 0 do {
c = fmt[i];
n = 0;
while '0' <= fmt[i] && fmt[i] <= '9' do {
n = 10*n + fmt[i]-'0';
i = i+1;
}
if n <= 0 then n = 1;
addr = fmt(addr, fmt[i]);
while n > 0 do {
print(*addr++, " ");
n = n-1;
}
i = i+1;
}
print("\n");
return addr;
}
defn symbols(pattern)
{
local l, s;
l = symbols;
while l do {
s = head l;
if regexp(pattern, s[0]) then
print(s[0], "\t", s[1], "\t", s[2], "\n");
l = tail l;
}
}
defn spsrch(len)
{
local addr, a, s, e;
addr = *SP;
s = origin & 0x7fffffff;
e = etext & 0x7fffffff;
loop 1, len do {
a = *addr++;
c = a & 0x7fffffff;
if c > s && c < e then {
print("src(", a, ")\n");
pfl(a);
}
}
}
progargs="";
print("/sys/lib/acid/port");

120
sys/lib/acid/power Executable file
View File

@ -0,0 +1,120 @@
// Power PC support
defn acidinit() // Called after all the init modules are loaded
{
bplist = {};
bpfmt = 'X';
srcpath = {
"./",
"/sys/src/libc/port/",
"/sys/src/libc/9sys/",
"/sys/src/libc/power/"
};
srcfiles = {}; // list of loaded files
srctext = {}; // the text of the files
}
defn stk() // trace
{
_stk(*PC, *SP, linkreg(0), 0);
}
defn lstk() // trace with locals
{
_stk(*PC, *SP, linkreg(0), 1);
}
defn gpr() // print general purpose registers
{
print("SP\t", *SP, " R2\t", *R2, " R3\t", *R3, "\n");
print("R4\t", *R4, " R5\t", *R5, " R6\t", *R6, "\n");
print("R7\t", *R7, " R8\t", *R8, " R9\t", *R9, "\n");
print("R10\t", *R10, " R11\t", *R11, " R12\t", *R12, "\n");
print("R13\t", *R13, " R14\t", *R14, " R15\t", *R15, "\n");
print("R16\t", *R16, " R17\t", *R17, " R18\t", *R18, "\n");
print("R19\t", *R19, " R20\t", *R20, " R21\t", *R21, "\n");
print("R22\t", *R22, " R23\t", *R23, " R24\t", *R24, "\n");
print("R25\t", *R25, " R26\t", *R26, " R27\t", *R27, "\n");
print("R28\t", *R28, " R29\t", *R29, " R30\t", *R30, "\n");
print("R31\t", *R31, "\n");
}
defn Fpr()
{
fpr();
}
defn fpr()
{
print("F0\t", *fmt(F0, 'G'), "\tF1\t", *fmt(F1, 'G'), "\n");
print("F2\t", *fmt(F2, 'G'), "\tF3\t", *fmt(F3, 'G'), "\n");
print("F4\t", *fmt(F4, 'G'), "\tF5\t", *fmt(F5, 'G'), "\n");
print("F6\t", *fmt(F6, 'G'), "\tF7\t", *fmt(F7, 'G'), "\n");
print("F8\t", *fmt(F8, 'G'), "\tF9\t", *fmt(F9, 'G'), "\n");
print("F10\t", *fmt(F10, 'G'), "\tF11\t", *fmt(F11, 'G'), "\n");
print("F12\t", *fmt(F12, 'G'), "\tF13\t", *fmt(F13, 'G'), "\n");
print("F14\t", *fmt(F14, 'G'), "\tF15\t", *fmt(F15, 'G'), "\n");
print("F16\t", *fmt(F16, 'G'), "\tF17\t", *fmt(F17, 'G'), "\n");
print("F18\t", *fmt(F18, 'G'), "\tF19\t", *fmt(F19, 'G'), "\n");
print("F20\t", *fmt(F20, 'G'), "\tF21\t", *fmt(F21, 'G'), "\n");
print("F22\t", *fmt(F22, 'G'), "\tF23\t", *fmt(F23, 'G'), "\n");
print("F24\t", *fmt(F24, 'G'), "\tF25\t", *fmt(F25, 'G'), "\n");
print("F26\t", *fmt(F26, 'G'), "\tF27\t", *fmt(F27, 'G'), "\n");
print("F28\t", *fmt(F28, 'G'), "\tF29\t", *fmt(F29, 'G'), "\n");
print("F30\t", *fmt(F30, 'G'), "\tF31\t", *fmt(F31, 'G'), "\n");
}
defn spr() // print special processor registers
{
local pc, link, cause;
pc = *PC;
print("PC\t", pc, " ", fmt(pc, 'a'), " ");
pfl(pc);
link = *R31;
print("SP\t", *SP, "\tLINK\t", link, " ", fmt(link, 'a'), " ");
pfl(link);
cause = *CAUSE;
print("SRR1\t", *SRR1, "\tCAUSE\t", cause, " ", reason(cause), "\n");
print("LR\t", *LR, "\tCR\t", *CR, "\n");
print("XER\t", *XER, "\tCTR\t", *CTR, "\n");
}
defn regs() // print all registers
{
spr();
gpr();
}
defn pstop(pid)
{
local l, pc;
pc = *PC;
print(pid,": ", reason(*CAUSE), "\t");
print(fmt(pc, 'a'), "\t", fmt(pc, 'i'), "\n");
if notes then {
if notes[0] != "sys: breakpoint" then {
print("Notes pending:\n");
l = notes;
while l do {
print("\t", head l, "\n");
l = tail l;
}
}
}
}
defn linkreg(addr)
{
return *LR;
}
print("/sys/lib/acid/power");

218
sys/lib/acid/sparc Executable file
View File

@ -0,0 +1,218 @@
// Sparc support
defn acidinit() // Called after all the init modules are loaded
{
bplist = {};
bpfmt = 'X';
srcpath = {
"./",
"/sys/src/libc/port/",
"/sys/src/libc/9sys/",
"/sys/src/libc/sparc/"
};
srcfiles = {}; // list of loaded files
srctext = {}; // the text of the files
}
defn stk() // trace
{
_stk(*PC, *R1, linkreg(0), 0);
}
defn lstk() // trace with locals
{
_stk(*PC, *R1, linkreg(0), 1);
}
defn gpr() // print general purpose registers
{
print("R1\t", *R1, "R2\t", *R2, "R3\t", *R3, "\n");
print("R4\t", *R4, "R5\t", *R5, "R6\t", *R6, "\n");
print("R7\t", *R7, "R8\t", *R8, "R9\t", *R9, "\n");
print("R10\t", *R10, "R11\t", *R11, "R12\t", *R12, "\n");
print("R13\t", *R13, "R14\t", *R14, "R15\t", *R15, "\n");
print("R16\t", *R16, "R17\t", *R17, "R18\t", *R18, "\n");
print("R19\t", *R19, "R20\t", *R20, "R21\t", *R21, "\n");
print("R22\t", *R22, "R23\t", *R23, "R24\t", *R24, "\n");
print("R25\t", *R25, "R26\t", *R26, "R27\t", *R27, "\n");
print("R28\t", *R28, "R29\t", *R29, "R30\t", *R30, "\n");
print("R31\t", *R31, "\n");
}
defn spr() // print special processor registers
{
local pc;
local link;
local cause;
pc = *PC;
print("PC\t", pc, " ", fmt(pc, 'a'), " ");
pfl(pc);
print("PSR\t", *PSR, "\n");
link = *R15;
print("SP\t", *R1, "\tLINK\t\t", link, " ", fmt(link, 'a'));
pfl(link);
cause = *TBR;
print("Y\t", *Y, "\tCAUSE\t", *Y, cause, " ", reason(cause), "\n");
}
defn Fpr()
{
print("F0\t", *fmt(F0, 'G'), "\tF2\t", *fmt(F2, 'G'), "\n");
print("F4\t", *fmt(F4, 'G'), "\tF6\t", *fmt(F6, 'G'), "\n");
print("F8\t", *fmt(F8, 'G'), "\tF10\t", *fmt(F10, 'G'), "\n");
print("F12\t", *fmt(F12, 'G'), "\tF14\t", *fmt(F14, 'G'), "\n");
print("F16\t", *fmt(F16, 'G'), "\tF18\t", *fmt(F18, 'G'), "\n");
print("F20\t", *fmt(F20, 'G'), "\tF22\t", *fmt(F22, 'G'), "\n");
print("F24\t", *fmt(F24, 'G'), "\tF26\t", *fmt(F26, 'G'), "\n");
print("F28\t", *fmt(F28, 'G'), "\tF30\t", *fmt(F30, 'G'), "\n");
}
defn fpr()
{
print("F0\t", *fmt(F0, 'g'), "\tF1\t", *fmt(F1, 'g'), "\n");
print("F2\t", *fmt(F2, 'g'), "\tF3\t", *fmt(F3, 'g'), "\n");
print("F4\t", *fmt(F4, 'g'), "\tF5\t", *fmt(F5, 'g'), "\n");
print("F6\t", *fmt(F6, 'g'), "\tF7\t", *fmt(F7, 'g'), "\n");
print("F8\t", *fmt(F8, 'g'), "\tF9\t", *fmt(F9, 'g'), "\n");
print("F10\t", *fmt(F10, 'g'), "\tF11\t", *fmt(F11, 'g'), "\n");
print("F12\t", *fmt(F12, 'g'), "\tF13\t", *fmt(F13, 'g'), "\n");
print("F14\t", *fmt(F14, 'g'), "\tF15\t", *fmt(F15, 'g'), "\n");
print("F16\t", *fmt(F16, 'g'), "\tF17\t", *fmt(F17, 'g'), "\n");
print("F18\t", *fmt(F18, 'g'), "\tF19\t", *fmt(F19, 'g'), "\n");
print("F20\t", *fmt(F20, 'g'), "\tF21\t", *fmt(F21, 'g'), "\n");
print("F22\t", *fmt(F22, 'g'), "\tF23\t", *fmt(F23, 'g'), "\n");
print("F24\t", *fmt(F24, 'g'), "\tF25\t", *fmt(F25, 'g'), "\n");
print("F26\t", *fmt(F26, 'g'), "\tF27\t", *fmt(F27, 'g'), "\n");
print("F28\t", *fmt(F28, 'g'), "\tF29\t", *fmt(F29, 'g'), "\n");
print("F30\t", *fmt(F30, 'g'), "\tF31\t", *fmt(F31, 'g'), "\n");
}
defn regs() // print all registers
{
spr();
gpr();
}
defn pstop(pid)
{
local l;
local pc;
pc = *PC;
print(pid,": ", reason(*TBR), "\t");
print(fmt(pc, 'a'), "\t", fmt(pc, 'i'), "\n");
if notes then {
if notes[0] != "sys: breakpoint" then {
print("Notes pending:\n");
l = notes;
while l do {
print("\t", head l, "\n");
l = tail l;
}
}
}
}
aggr Ureg
{
'U' 0 r0;
{
'U' 4 sp;
'U' 4 usp;
'U' 4 r1;
};
'U' 8 r2;
'U' 12 r3;
'U' 16 r4;
'U' 20 r5;
'U' 24 r6;
'U' 28 r7;
'U' 32 r8;
'U' 36 r9;
'U' 40 r10;
'U' 44 r11;
'U' 48 r12;
'U' 52 r13;
'U' 56 r14;
'U' 60 r15;
'U' 64 r16;
'U' 68 r17;
'U' 72 r18;
'U' 76 r19;
'U' 80 r20;
'U' 84 r21;
'U' 88 r22;
'U' 92 r23;
'U' 96 r24;
'U' 100 r25;
'U' 104 r26;
'U' 108 r27;
'U' 112 r28;
'U' 116 r29;
'U' 120 r30;
'U' 124 r31;
'U' 128 y;
'U' 132 tbr;
'U' 136 psr;
'U' 140 npc;
'U' 144 pc;
'U' 148 pad;
};
defn
Ureg(addr) {
complex Ureg addr;
print(" r0 ", addr.r0, "\n");
print(" sp ", addr.sp, "\n");
print(" r2 ", addr.r2, "\n");
print(" r3 ", addr.r3, "\n");
print(" r4 ", addr.r4, "\n");
print(" r5 ", addr.r5, "\n");
print(" r6 ", addr.r6, "\n");
print(" r7 ", addr.r7, "\n");
print(" r8 ", addr.r8, "\n");
print(" r9 ", addr.r9, "\n");
print(" r10 ", addr.r10, "\n");
print(" r11 ", addr.r11, "\n");
print(" r12 ", addr.r12, "\n");
print(" r13 ", addr.r13, "\n");
print(" r14 ", addr.r14, "\n");
print(" r15 ", addr.r15, "\n");
print(" r16 ", addr.r16, "\n");
print(" r17 ", addr.r17, "\n");
print(" r18 ", addr.r18, "\n");
print(" r19 ", addr.r19, "\n");
print(" r20 ", addr.r20, "\n");
print(" r21 ", addr.r21, "\n");
print(" r22 ", addr.r22, "\n");
print(" r23 ", addr.r23, "\n");
print(" r24 ", addr.r24, "\n");
print(" r25 ", addr.r25, "\n");
print(" r26 ", addr.r26, "\n");
print(" r27 ", addr.r27, "\n");
print(" r28 ", addr.r28, "\n");
print(" r29 ", addr.r29, "\n");
print(" r30 ", addr.r30, "\n");
print(" r31 ", addr.r31, "\n");
print(" y ", addr.y, "\n");
print(" tbr ", addr.tbr, "\n");
print(" psr ", addr.psr, "\n");
print(" npc ", addr.npc, "\n");
print(" pc ", addr.pc, "\n");
print(" pad ", addr.pad, "\n");
};
defn linkreg(addr)
{
complex Ureg addr;
return addr.r15\X;
}
print("/sys/lib/acid/sparc");

222
sys/lib/acid/sparc64 Executable file
View File

@ -0,0 +1,222 @@
// Sparc64 support
defn acidinit() // Called after all the init modules are loaded
{
bplist = {};
bpfmt = 'X';
srcpath = {
"./",
"/sys/src/libc/port/",
"/sys/src/libc/9sys/",
"/sys/src/libc/sparc64/"
};
srcfiles = {}; // list of loaded files
srctext = {}; // the text of the files
}
defn linkreg(addr)
{
complex Ureg addr;
return addr.r15\X;
}
defn stk() // trace
{
_stk(*PC, *SP, linkreg(0), 0);
}
defn lstk() // trace with locals
{
_stk(*PC, *SP, linkreg(0), 1);
}
defn gpr() // print general purpose registers
{
print("SP\t", *SP, "R2\t", *R2, "R3\t", *R3, "\n");
print("R4\t", *R4, "R5\t", *R5, "R6\t", *R6, "\n");
print("R7\t", *R7, "R8\t", *R8, "R9\t", *R9, "\n");
print("R10\t", *R10, "R11\t", *R11, "R12\t", *R12, "\n");
print("R13\t", *R13, "R14\t", *R14, "R15\t", *R15, "\n");
print("R16\t", *R16, "R17\t", *R17, "R18\t", *R18, "\n");
print("R19\t", *R19, "R20\t", *R20, "R21\t", *R21, "\n");
print("R22\t", *R22, "R23\t", *R23, "R24\t", *R24, "\n");
print("R25\t", *R25, "R26\t", *R26, "R27\t", *R27, "\n");
print("R28\t", *R28, "R29\t", *R29, "R30\t", *R30, "\n");
print("R31\t", *R31, "\n");
}
defn spr() // print special processor registers
{
local pc;
local link;
local cause;
pc = *PC;
npc = *NPC;
print("PC\t", pc, " ", fmt(pc, 'a'), " ");
pfl(pc);
print("NPC\t", npc, " ", fmt(npc, 'a'), " ");
pfl(npc);
print("PSTATE\t", *PSTATE, "\n");
link = *R15;
print("SP\t", *SP, "\tLINK\t\t", link, " ", fmt(link, 'a'));
pfl(link);
cause = *TT;
print("Y\t", *Y, "\tCAUSE\t", cause, " ", reason(cause), "\n");
}
defn Fpr()
{
print("F0\t", *fmt(F0, 'G'), "\tF2\t", *fmt(F2, 'G'), "\n");
print("F4\t", *fmt(F4, 'G'), "\tF6\t", *fmt(F6, 'G'), "\n");
print("F8\t", *fmt(F8, 'G'), "\tF10\t", *fmt(F10, 'G'), "\n");
print("F12\t", *fmt(F12, 'G'), "\tF14\t", *fmt(F14, 'G'), "\n");
print("F16\t", *fmt(F16, 'G'), "\tF18\t", *fmt(F18, 'G'), "\n");
print("F20\t", *fmt(F20, 'G'), "\tF22\t", *fmt(F22, 'G'), "\n");
print("F24\t", *fmt(F24, 'G'), "\tF26\t", *fmt(F26, 'G'), "\n");
print("F28\t", *fmt(F28, 'G'), "\tF30\t", *fmt(F30, 'G'), "\n");
}
defn fpr()
{
print("F0\t", *fmt(F0, 'g'), "\tF1\t", *fmt(F1, 'g'), "\n");
print("F2\t", *fmt(F2, 'g'), "\tF3\t", *fmt(F3, 'g'), "\n");
print("F4\t", *fmt(F4, 'g'), "\tF5\t", *fmt(F5, 'g'), "\n");
print("F6\t", *fmt(F6, 'g'), "\tF7\t", *fmt(F7, 'g'), "\n");
print("F8\t", *fmt(F8, 'g'), "\tF9\t", *fmt(F9, 'g'), "\n");
print("F10\t", *fmt(F10, 'g'), "\tF11\t", *fmt(F11, 'g'), "\n");
print("F12\t", *fmt(F12, 'g'), "\tF13\t", *fmt(F13, 'g'), "\n");
print("F14\t", *fmt(F14, 'g'), "\tF15\t", *fmt(F15, 'g'), "\n");
print("F16\t", *fmt(F16, 'g'), "\tF17\t", *fmt(F17, 'g'), "\n");
print("F18\t", *fmt(F18, 'g'), "\tF19\t", *fmt(F19, 'g'), "\n");
print("F20\t", *fmt(F20, 'g'), "\tF21\t", *fmt(F21, 'g'), "\n");
print("F22\t", *fmt(F22, 'g'), "\tF23\t", *fmt(F23, 'g'), "\n");
print("F24\t", *fmt(F24, 'g'), "\tF25\t", *fmt(F25, 'g'), "\n");
print("F26\t", *fmt(F26, 'g'), "\tF27\t", *fmt(F27, 'g'), "\n");
print("F28\t", *fmt(F28, 'g'), "\tF29\t", *fmt(F29, 'g'), "\n");
print("F30\t", *fmt(F30, 'g'), "\tF31\t", *fmt(F31, 'g'), "\n");
}
defn regs() // print all registers
{
spr();
gpr();
}
defn pstop(pid)
{
local l;
local pc;
pc = *PC;
print(pid,": ", reason(*TT), "\t");
print(fmt(pc, 'a'), "\t", fmt(pc, 'i'), "\n");
if notes then {
if notes[0] != "sys: breakpoint" then {
print("Notes pending:\n");
l = notes;
while l do {
print("\t", head l, "\n");
l = tail l;
}
}
}
}
aggr Ureg
{
'U' 0 r0;
{
'U' 4 sp;
'U' 4 usp;
'U' 4 r1;
};
'U' 8 r2;
'U' 12 r3;
'U' 16 r4;
'U' 20 r5;
'U' 24 r6;
'U' 28 r7;
'U' 32 r8;
'U' 36 r9;
'U' 40 r10;
'U' 44 r11;
'U' 48 r12;
'U' 52 r13;
'U' 56 r14;
'U' 60 r15;
'U' 64 r16;
'U' 68 r17;
'U' 72 r18;
'U' 76 r19;
'U' 80 r20;
'U' 84 r21;
'U' 88 r22;
'U' 92 r23;
'U' 96 r24;
'U' 100 r25;
'U' 104 r26;
'U' 108 r27;
'U' 112 r28;
'U' 116 r29;
'U' 120 r30;
'U' 124 r31;
'U' 128 y;
'U' 132 tt;
'U' 136 pstate;
'U' 140 npc;
'U' 144 pc;
'U' 148 pad;
};
defn
Ureg(addr) {
complex Ureg addr;
print(" r0 ", addr.r0, "\n");
print(" sp ", addr.sp, "\n");
print(" r2 ", addr.r2, "\n");
print(" r3 ", addr.r3, "\n");
print(" r4 ", addr.r4, "\n");
print(" r5 ", addr.r5, "\n");
print(" r6 ", addr.r6, "\n");
print(" r7 ", addr.r7, "\n");
print(" r8 ", addr.r8, "\n");
print(" r9 ", addr.r9, "\n");
print(" r10 ", addr.r10, "\n");
print(" r11 ", addr.r11, "\n");
print(" r12 ", addr.r12, "\n");
print(" r13 ", addr.r13, "\n");
print(" r14 ", addr.r14, "\n");
print(" r15 ", addr.r15, "\n");
print(" r16 ", addr.r16, "\n");
print(" r17 ", addr.r17, "\n");
print(" r18 ", addr.r18, "\n");
print(" r19 ", addr.r19, "\n");
print(" r20 ", addr.r20, "\n");
print(" r21 ", addr.r21, "\n");
print(" r22 ", addr.r22, "\n");
print(" r23 ", addr.r23, "\n");
print(" r24 ", addr.r24, "\n");
print(" r25 ", addr.r25, "\n");
print(" r26 ", addr.r26, "\n");
print(" r27 ", addr.r27, "\n");
print(" r28 ", addr.r28, "\n");
print(" r29 ", addr.r29, "\n");
print(" r30 ", addr.r30, "\n");
print(" r31 ", addr.r31, "\n");
print(" y ", addr.y, "\n");
print(" tt ", addr.tt, "\n");
print(" pstate ", addr.pstate, "\n");
print(" npc ", addr.npc, "\n");
print(" pc ", addr.pc, "\n");
print(" pad ", addr.pad, "\n");
};
sizeofUreg = 152;
print("/sys/lib/acid/sparc64");

196
sys/lib/acid/syscall Executable file
View File

@ -0,0 +1,196 @@
// print system calls
defn printstring(s)
{
print("\"", s, "\"");
}
defn printtextordata(addr, n)
{
local a, i;
a = addr\c;
i = 0;
loop 1, n do {
if (a[i]>=127) then {
print(fmt(addr, 'X'), ", ", n\D);
return {};
}
i = i+1;
}
print("\"");
printstringn(addr, n);
print("\"");
}
defn printstringn(s, n)
{
local m;
m = n;
if (m > 100) then m = 100;
loop 1,m do {
print(*(s\c)); s=s+1;
}
if(m != n) then print("...");
}
defn printsyscall(name, fmt, arg) {
local f, i, a, argp, sl;
print(name, "(");
i = 0;
a = eval arg;
while fmt[i] != 0 do {
if fmt[i] == 's' then {
if *a == 0 then
print("nil");
else
printstring(*(*a\s));
} else if fmt[i] == 'S' then {
argp = *a;
argl = {};
while *argp != 0 do {
argl = append argl, *(*argp\s);
argp++;
}
print(argl);
} else if (fmt[i] == 'Z') && (~*a == 0) then {
print("-1");
a++; // advance extra word for quadword
} else if (fmt[i] == 'Y') || (fmt[i] == 'V') then {
print(fmt(*a, fmt[i]));
a++; // advance extra word for quadword
} else if (fmt[i] == 'T') then {
if *a == 0 then
print("nil");
else
printtextordata(*a, a[1]);
} else
print(fmt(*a, fmt[i]));
if fmt[i+1] != 0 then
print(", ");
i = i+1;
a++;
}
print(")\n");
}
defn code(*e) { return e; }
syscalls = {
{ 0, {"sysr1", "s", code(0)}},
{ 1, {"_errstr", "s", code(*sys_errstr:arg)}},
{ 2, {"bind", "ssX", code(*sysbind:arg)}},
{ 3, {"chdir", "s", code(*sysbind:arg)}},
{ 4, {"close", "D", code(*sysclose:arg)}},
{ 5, {"dup", "DD", code(*sysdup:arg)}},
{ 6, {"alarm", "D", code(*sysalarm:arg)}},
{ 7, {"exec", "sS", code(*sysexec:arg)}},
{ 8, {"exits", "s", code(*sysexits:arg)}},
{ 9, {"_fsession", "DX", code(*sys_fsession:arg)}},
{10, {"fauth", "DX", code(*sysfauth:arg)}},
{11, {"_fstat", "DX", code(*sys_fstat:arg)}},
{12, {"segbrk", "XX", code(*syssegbrk:arg)}},
{13, {"_mount", "DsXs", code(*sys_mount:arg)}},
{14, {"open", "sD", code(*sysopen:arg)}},
{15, {"_read", "DXD", code(*sys_read:arg)}},
{16, {"oseek", "DDD", code(*sysoseek:arg)}},
{17, {"sleep", "D", code(*syssleep:arg)}},
{18, {"_stat", "sX", code(*sys_stat:arg)}},
{19, {"rfork", "X", code(*sysstat:arg)}},
{20, {"_write", "DXD", code(*sys_write:arg)}},
{21, {"pipe", "X", code(*syspipe:arg)}},
{22, {"create", "sDO", code(*syscreate:arg)}},
{23, {"fd2path", "DXD", code(*sysfd2path:arg)}},
{24, {"brk_", "X", code(*sysbrk_:arg)}},
{25, {"remove", "s", code(*sysremove:arg)}},
{26, {"_wstat", "sX", code(*sys_wstat:arg)}},
{27, {"_fwstat", "DX", code(*sys_fwstat:arg)}},
{28, {"notify", "X", code(*sysnotify:arg)}},
{29, {"noted", "D", code(*sysnoted:arg)}},
{30, {"segattach", "DsXD", code(*syssegattach:arg)}},
{31, {"segdetach", "X", code(*syssegdetach:arg)}},
{32, {"segfree", "XD", code(*syssegfree:arg)}},
{33, {"segflush", "XD", code(*syssegflush:arg)}},
{34, {"rendezvous", "XX", code(*sysrendezvous:arg)}},
{35, {"unmount", "ss", code(*sysunmount:arg)}},
{36, {"_wait", "X", code(*sys_wait:arg)}},
{39, {"seek", "XDVD", code(*sysseek:arg)}},
{40, {"fversion", "DDsD", code(*sysfversion:arg)}},
{41, {"errstr", "TD", code(*syserrstr:arg)}},
{42, {"stat", "sXD", code(*sysstat:arg)}},
{43, {"fstat", "DXD", code(*sysfstat:arg)}},
{44, {"wstat", "sXD", code(*syswstat:arg)}},
{45, {"fwstat", "DXD", code(*sysfwstat:arg)}},
{46, {"mount", "DDsXs", code(*sysmount:arg)}},
{47, {"await", "TD", code(*sysawait:arg)}},
{50, {"pread", "DXDZ", code(*syspread:arg)}},
{51, {"pwrite", "DTDZ", code(*syspwrite:arg)}},
};
defn syscall() {
local n, sl, h, p;
map({"*data", 0, 0xffffffff, 0});
n = *syscall:scallnr;
sl = syscalls;
while sl != {} do {
h = head sl;
sl = tail sl;
if n == h[0] then {
p = h[1];
printsyscall(p[0], p[1], p[2]);
}
}
}
defn UPCSPRET() {
// return sys call number, address of first argument, location of syscall return value
if objtype == "386" then
return { code(*(*PC-4)), code(*SP+4), code(*AX) };
if (objtype == "mips") || (objtype == "mips2") then
return { code(*(*PC-4) & 0xffff), code(*SP+4), code(*R1) };
if objtype == "arm" then
return { code(*(*PC-4) & 0xffff), code(*SP+4), code(*R0) }; // untested
if objtype == "alpha" then
return { code(*(*PC-4) & 0xffff), code(*SP+4), code(*R0) }; // untested
}
defn trapoffset() {
// return offset from entry point to trap instr
if objtype == "386" then return 5;
if objtype == "mips" then return 8;
if objtype == "mips2" then return 8;
if objtype == "arm" then return 8; // untested
if objtype == "alpha" then return 8; // untested
}
defn trapreason() {
// return reason for trap
if objtype == "386" then return reason(*TRAP);
if objtype == "mips" then return reason(*CAUSE);
if objtype == "mips2" then return reason(*CAUSE);
if objtype == "arm" then return "unknown trap"; // untested
if objtype == "alpha" then return reason(cause); // untested
}
defn usyscall() { // gives args for system call in user level; not useful with -k
local n, sl, h, p;
// stopped at TRAP instruction in system call library
pcsp = UPCSPRET();
n = eval pcsp[0];
sl = syscalls;
while sl != {} do {
h = head sl;
sl = tail sl;
if n == h[0] then {
p = h[1];
printsyscall(p[0], p[1], pcsp[1]);
}
}
}

374
sys/lib/acid/thread Executable file
View File

@ -0,0 +1,374 @@
include("/sys/src/libthread/sched.acid");
defn labpc(l)
{
if objtype == "386" then
return longjmp;
return *(l+4);
}
defn labsp(l)
{
return *l;
}
defn labstk(l)
{
_stk(labpc(l), labsp(l), 0, 0);
}
defn lablstk(l)
{
_stk(labpc(l), labsp(l), 0, 1);
}
defn altfmt(A){
local i, s, yes;
complex Alt A;
s = "alt(";
s = s + "tag(*" + itoa(A.tag, "%x") + "=" + itoa(*A.tag, "%x") + ") ";
i = 0;
yes = 0;
while A.op != CHANEND && A.op != CHANNOBLK do{
if A.op != CHANNOP then{
if yes then s = s + " ";
s = s + itoa(i, "%d");
s = s + ":";
if A.op == CHANSND then s = s + "send";
if A.op == CHANRCV then s = s + "recv";
s = s + "(channel(";
s = s + itoa(A.c, "%x");
s = s + "))";
yes = 1;
}
i = i + 1;
A = (Alt)(A + sizeofAlt);
}
if A.op==CHANNOBLK then{
if yes then s = s + " ";
s = s + "noblock";
}
s = s + ")";
return s;
}
defn alt(A){
print(altfmt(A), "\n");
}
threadignsrc = {
"^/sys/src/libc",
"^/sys/src/libthread",
};
defn fnname(a){
local sym, s;
s = symbols;
while s do {
sym = head s;
if sym[2] == a then
return sym[0];
s = tail s;
}
if a == {} then
return "{}";
return itoa(a\X, "%x");
}
stkignorelist = {};
defn stkignore(s){
append stkignorelist, s;
}
defn threadstkline(T){
local ostk, stk, frame, pc, pc0, file, lastpc0, s, sym, i, stop;
if T.state == Running then{
pc = *PC;
stk = strace(*PC, *SP, linkreg(0));
}else{
pc = labpc(T.sched);
stk = strace(labpc(T.sched), labsp(T.sched), 0);
}
firstpc = pc;
lastpc0 = 0;
pc0 = 0;
stop = 0;
ostk = stk;
while stk && !stop do {
file = pcfile(pc);
if !regexp("^/sys/src/libc/", file)
&& !regexp("^/sys/src/libthread/", file)
&& match(file, stkignore)==-1 then
stop = 1;
else if stk[0][1] == 0xfefefefe then {
pc = ostk[0][1];
pc0 = ostk[1][0];
stop = 1;
}else{
lastpc0 = pc0;
frame = head stk;
stk = tail stk;
nextframe = head stk;
pc = frame[1];
pc0 = nextframe[0];
}
}
file = pcfile(pc);
s = file+":"+itoa(pcline(pc), "%d");
if pc0 != 0 then
s = s + " "+fnname(pc0);
return s;
}
defn threadfmt(T){
complex Thread T;
local A, yes, i, P, s;
P = (Proc)T.proc;
s = "t=(Thread)"+itoa(T, "%-10x")+" ";
if T.state == Running then
s = s + "Running ";
else if T.state == Ready then
s = s + "Ready ";
else if T.state == Rendezvous then
s = s + "Rendez ";
else
s = s + "Bad state "+itoa(T.state, "%x")+" ";
A = (Alt)T.alt;
if 1 then
s = s + threadstkline(T);
else if T.chan == Chanalt then
s = s + altfmt(T.alt);
else if T.chan == Chansend then
s = s + "send(Channel("+itoa(A.c, "%x")+"))";
else if T.chan == Chanrecv then
s = s + "recv(Channel("+itoa(A.c, "%x")+"))";
else
s = s + threadstkline(T);
if T.moribund == 1 then
s = s + " Moribund";
if T.cmdname != 0 then
s = s + " ["+*(T.cmdname\s)+"]";
return s;
}
defn thread(T){
print(threadfmt(T), "\n");
}
defn pthreads(P){
complex Proc P;
local T, Tq, mainpid;
mainpid = pid;
setproc(P.pid);
Tq = (Tqueue)P.threads;
T = (Thread)Tq.$head;
while T != 0 do{
print("\t");
thread(T);
T = T.nextt;
}
setproc(mainpid);
}
defn threads(){
local P;
P = (Proc)_threadpq.$head;
while P != 0 do{
if P != (Proc)_threadpq.$head then print("\n");
lproc(P);
P = P.next;
}
}
defn stacks(){
local P, mainpid;
mainpid = pid;
P = (Proc)_threadpq.$head;
while P != 0 do{
proc(P);
// setproc(P.pid);
// if P.thread==0 then{
// print("=== thread scheduler stack\n");
// stk();
// }
// print("threadstks(", P\X, ")\n");
threadstks(P);
P = P.next;
print("\n");
}
setproc(mainpid);
}
defn stacksizes(){
local P, T, Tq, top, sp, mainpid;
mainpid = pid;
P = (Proc)_threadpq.$head;
while P != 0 do{
P = (Proc)P;
Tq = (Tqueue)P.threads;
T = (Thread)Tq.$head;
while T != 0 do{
top = T.stk+T.stksize;
if T.state==Running then {
sp = *SP;
}else{
sp = *(T.sched);
}
sp = *(T.sched);
print(top-sp\D, " / ", T.stksize\D, "\n");
T = T.nextt;
}
P = P.next;
}
setproc(mainpid);
}
defn lproc(P){
proc(P);
pthreads(P);
}
defn threadstks(P){
complex Proc P;
local T, Tq, mainpid, pref, ign;
mainpid = pid;
pref = stkprefix;
stkprefix = pref+"\t\t";
ign = stkignore;
stkignore = {
"^/sys/src/libthread/",
"^/sys/src/libc/(386|arm|alpha|sparc|power|mips)/"
};
setproc(P.pid);
Tq = (Tqueue)P.threads;
T = (Thread)Tq.$head;
while T != 0 do{
// print("=============================\n");
// print(" thread(", T\X, ")\n");
print("\t");
thread(T);
threadstk(T);
T = T.nextt;
print("\n");
}
setproc(mainpid);
stkprefix = pref;
stkignore = ign;
}
defn proc(P){
complex Proc P;
print("p=(Proc)", itoa(P, "%-10x"), " pid ", P.pid\D, " ");
if P.thread==0 then
print(" Sched");
else
print(" Running");
print("\n");
}
defn procs(){
local P;
P = (Proc)_threadpq.$head;
while P != 0 do{
proc(P);
P = P.next;
}
}
defn threadlstk(T){
complex Thread T;
local P, mainpid;
P = (Proc)T.proc;
mainpid = pid;
setproc(P.pid);
if T.state == Running then{
lstk();
} else {
lablstk(T.sched);
}
setproc(mainpid);
}
defn threadstk(T){
complex Thread T;
local P, mainpid;
P = (Proc)T.proc;
mainpid = pid;
setproc(P.pid);
if T.state == Running then{
stk();
} else {
labstk(T.sched);
}
setproc(mainpid);
}
defn tqueue(Q) {
complex Tqueue Q;
while Q != 0 do {
print(Q.$head\X, " ");
Q = *(Q.$tail);
}
print("#\n");
}
defn channel(C) {
complex Channel C;
local i, p;
print("channel ", C\X);
if C.freed then {
print(" (moribund)");
}
print("\n");
print("\telementsize=", C.e\D, " buffersize=", C.s, "\n");
if C.s then {
print("\t", C.n\D, " values in channel:\n");
print("\t");
p = C.v+C.e*(C.f%C.s);
loop 1,C.n do {
if C.e==4 then {
print((*p)\X, " ");
}else {
print("data(", (*p)\X, ") ");
}
p = p+C.e;
if p == C.v+C.s*C.e then {
p = C.v;
}
}
}
print("\n");
print(C.nentry\D, " queue slots:\n");
i=0;
loop 1,C.nentry do {
if C.qentry[i] then
print("\t", altfmt(C.qentry[i]), "\n");
else
print("\t<empty>\n");
i=i+1;
}
}
print("/sys/lib/acid/thread");

33
sys/lib/acid/transcript Executable file
View File

@ -0,0 +1,33 @@
#!/bin/rc
switch($#*){
case 0 1 2
echo usage: window '''minx miny maxx maxy''' '''minx miny maxx maxy''' cmd args ...
exit usage
}
rfork ns
if(mount $wsys /mnt/acid N`{{echo $pid $1 }| sed 's/^ //g;s/ +/,/g'}){
winid=`{cat /dev/winid}
echo transcript > /mnt/acid/label
echo transcript > /mnt/acid/cons
shift
}
if not exit 0
if(mount $wsys /mnt/wsys N`{{echo $pid $1 }| sed 's/^ //g;s/ +/,/g'}){
shift
bind -b /mnt/wsys /dev
}
if not exit 0
echo -n `{basename $1} > /dev/label >[2] /dev/null
@{
echo hang > /proc/^`{cat /dev/ppid}^/ctl
$* < /dev/$winid/cons > /dev/$winid/cons >[2] /dev/$winid/cons &
exit $apid
}
ostatus = `{echo $status | sed 's/.*://'}
echo waitstop > /proc/$ostatus/ctl
echo nohang > /proc/$ostatus/ctl
exit $ostatus

171
sys/lib/acid/trump Executable file
View File

@ -0,0 +1,171 @@
// trace user malloc pool - trace malloc, realloc, and free calls
// if trumpsbrk is set, we trace sbrkalloc and sbrkmerge too.
_stoprunning = 0;
trumphexaddrs = 0;
trumpsbrk = 0;
defn stopped(pid) {
local l;
local pc;
pc = *PC;
if notes then {
if (notes[0]!="sys: breakpoint") then
{
print(pid,": ",reason(*TRAP),"\t");
print(fmt(pc,97),"\t",fmt(pc,105),"\n");
print("Notes pending:\n");
l = notes;
while l do
{
print("\t",head l,"\n");
l = tail l;
}
_stoprunning = 1;
}
}
}
defn printstack() {
local frame, stk, pcs, lst, x;
pcs = {*PC};
stk = strace(*PC,*SP,0);
while stk do {
pcs = append pcs, stk[0][1];
stk = tail stk;
}
print(" #");
lst = pcs;
while lst do {
if trumphexaddrs != 0 then
x = lst[0]\X;
else
x = lst[0]\a;
print(" src(", x, ");");
lst = tail lst;
}
print("\n");
}
defn setuptrump() {
mallocPC = malloc;
malloczPC = mallocz;
freePC = free;
reallocPC = realloc;
sbrkallocPC = sbrkalloc;
sbrkmergePC = sbrkmerge;
// linker might fill delay slot with first instruction
if objtype == "mips" then {
mallocPC = mallocPC+4;
malloczPC = malloczPC+4;
freePC = freePC+4;
reallocPC = reallocPC+4;
sbrkallocPC = sbrkallocPC+4;
sbrkmergePC = sbrkmergePC+4;
}
bpset(mallocPC);
bpset(malloczPC);
bpset(freePC);
bpset(reallocPC);
if trumpsbrk then {
bpset(sbrkallocPC);
bpset(sbrkmergePC);
}
}
defn cleantrump() {
stop(pid);
bpdel(mallocPC);
bpdel(malloczPC);
bpdel(freePC);
bpdel(reallocPC);
bpdel(sbrkallocPC);
bpdel(sbrkmergePC);
}
defn trumpflush() {
stop(pid); // already stopped, but flushes output
}
defn new() {
bplist = {};
newproc(progargs);
bpset(follow(main)[0]);
cont();
bpdel(*PC);
// clear the hang bit, which is left set by newproc, so programs we fork/exec don't hang
printto("/proc/"+itoa(pid)+"/ctl", "nohang");
}
defn trumpfninfo() {
local arg0, arg1, stk, retpc, params;
stk = strace(*PC, *SP, 0);
retpc = stk[0][1];
params = stk[0][2];
arg0 = params[0][1];
arg1 = 0;
if tail params != {} then
arg1 = params[1][1];
return {arg0, arg1, retpc};
}
defn trumpretval() {
if objtype=="386" then
return *AX;
if objtype=="mips" then
return *R1;
if objtype=="power" || objtype=="alpha" then
return *R0;
}
defn trump() {
local arg0, arg1, pc, ret, x;
stop(pid);
_stoprunning = 0;
setuptrump();
while !_stoprunning do {
cont();
if notes[0]!="sys: breakpoint" then {
cleantrump();
return {};
}
pc = *PC;
x = trumpfninfo();
arg0 = x[0];
if pc == reallocPC || pc == sbrkmergePC then
arg1 = x[1];
bpset(x[2]);
cont();
bpdel(x[2]);
ret = trumpretval();
if pc == mallocPC then
print(ret\X, " malloc ", arg0\D);
if pc == malloczPC then
print(ret\X, " mallocz ", arg0\D);
if pc == freePC then
print(arg0\X, " free");
if pc == reallocPC then
print(ret\X, " realloc ", arg0\X, " ", arg1\D);
if pc == sbrkallocPC then
print(ret\X, " sbrkalloc ", arg0\D);
if pc == sbrkmergePC then
print("sbrkmerge ", arg0\X, " ", arg1\X, " = ", ret\D);
printstack();
trumpflush();
}
}
defn untrump() {
cleantrump();
start(pid);
}
print("/sys/lib/acid/trump");

283
sys/lib/acid/truss Executable file
View File

@ -0,0 +1,283 @@
// poor emulation of SVR5 truss command - traces system calls
include("/sys/lib/acid/syscall");
_stoprunning = 0;
defn stopped(pid) {
local l;
local pc;
pc = *PC;
if notes then {
if (notes[0]!="sys: breakpoint") then
{
print(pid,": ",trapreason(),"\t");
print(fmt(pc,97),"\t",fmt(pc,105),"\n");
print("Notes pending:\n");
l = notes;
while l do
{
print("\t",head l,"\n");
l = tail l;
}
_stoprunning = 1;
}
}
}
defn _addressof(pattern) {
local s, l;
l = symbols;
pattern = "^\\$*"+pattern+"$";
while l do
{
s = head l;
if regexp(pattern, s[0]) && ((s[1] == 'T') || (s[1] == 'L')) then
return s[2];
l = tail l;
}
return 0;
}
stopPC = {};
readPC = {};
fd2pathPC = {};
errstrPC = {};
awaitPC = {};
_waitPC = {};
_errstrPC = {};
trusscalls = {
"sysr1",
"_errstr",
"bind",
"chdir",
"close",
"dup",
"alarm",
"exec",
"_exits",
"_fsession",
"fauth",
"_fstat",
"segbrk",
"_mount",
"open",
"_read",
"oseek",
"sleep",
"_stat",
"rfork",
"_write",
"pipe",
"create",
"fd2path",
"brk_",
"remove",
"_wstat",
"_fwstat",
"notify",
"noted",
"segattach",
"segdetach",
"segfree",
"segflush",
"rendezvous",
"unmount",
"_wait",
"seek",
"fversion",
"errstr",
"stat",
"fstat",
"wstat",
"fwstat",
"mount",
"await",
"pread",
"pwrite",
};
trussapecalls = {
"_SYSR1",
"__ERRSTR",
"_BIND",
"_CHDIR",
"_CLOSE",
"_DUP",
"_ALARM",
"_EXEC",
"_EXITS",
"__FSESSION",
"_FAUTH",
"__FSTAT",
"_SEGBRK",
"__MOUNT",
"_OPEN",
"__READ",
"_OSEEK",
"_SLEEP",
"__STAT",
"_RFORK",
"__WRITE",
"_PIPE",
"_CREATE",
"_FD2PATH",
"_BRK_",
"_REMOVE",
"__WSTAT",
"__FWSTAT",
"_NOTIFY",
"_NOTED",
"_SEGATTACH",
"_SEGDETACH",
"_SEGFREE",
"_SEGFLUSH",
"_RENDEZVOUS",
"_UNMOUNT",
"__WAIT",
"_SEEK",
"__NFVERSION",
"__NERRSTR",
"_STAT",
"__NFSTAT",
"__NWSTAT",
"__NFWSTAT",
"__NMOUNT",
"__NAWAIT",
"_PREAD",
"_PWRITE",
};
defn addressof(pattern) {
// translate to ape system calls if we have an ape binary
if _addressof("_EXITS") == 0 then
return _addressof(pattern);
return _addressof(trussapecalls[match(pattern, trusscalls)]);
}
defn setuptruss() {
local lst, offset, name, addr;
trussbpt = {};
offset = trapoffset();
lst = trusscalls;
while lst do
{
name = head lst;
lst = tail lst;
addr = addressof(name);
if addr then
{
bpset(addr+offset);
trussbpt = append trussbpt, (addr+offset);
// sometimes _exits is renamed $_exits
if(regexp("exits|exec", name)) then stopPC = append stopPC, (addr+offset);
if(regexp("read", name)) then readPC = append readPC, (addr+offset);
if(regexp("fd2path", name)) then fd2pathPC = append fd2pathPC, (addr+offset);
if(regexp("^\\$*await", name)) then awaitPC = append awaitPC, (addr+offset);
if(regexp("^\\$*errstr", name)) then errstrPC = append errstrPC, (addr+offset);
// compatibility hacks for old kernel
if(regexp("_wait", name)) then _waitPC = append _waitPC, (addr+offset);
if(regexp("_errstr", name)) then _errstrPC = append _errstrPC, (addr+offset);
}
}
}
defn trussflush() {
stop(pid); // already stopped, but flushes output
}
defn new() {
bplist = {};
newproc(progargs);
bpset(follow(main)[0]);
cont();
bpdel(*PC);
// clear the hang bit, which is left set by newproc, so programs we fork/exec don't hang
printto("/proc/"+itoa(pid)+"/ctl", "nohang");
}
defn truss() {
local pc, lst, offset, prevpc, pcspret, ret;
offset = trapoffset();
stop(pid);
_stoprunning = 0;
setuptruss();
pcspret = UPCSPRET();
while !_stoprunning do {
cont();
if notes[0]!="sys: breakpoint" then {
cleantruss();
return {};
}
pc = *PC;
if match(*PC, stopPC)>=0 then {
print(pid,": ",trapreason(),"\t");
print(fmt(pc,'a'),"\t",fmt(pc,'i'),"\n");
cleantruss();
return {};
}
if match(*PC, trussbpt)>=0 then {
usyscall();
trussflush();
prevpc = *PC;
step();
ret = eval pcspret[2];
print("\treturn value: ", ret\D, "\n");
if (ret>=0) && (match(prevpc, readPC)>=0) then {
print("\tdata: ");
printtextordata(*((eval pcspret[1])+4), ret);
print("\n");
}
if (ret>=0) && (match(prevpc, fd2pathPC)>=0) then {
print("\tdata: \"", *(*((eval pcspret[1])+4)\s), "\"\n");
}
if (ret>=0) && (match(prevpc, errstrPC)>=0) then {
print("\tdata: \"", *(*(eval pcspret[1])\s), "\"\n");
}
if (ret>=0) && (match(prevpc, awaitPC)>=0) then {
print("\tdata: ");
printtextordata(*(eval pcspret[1]), ret);
print("\n");
}
// compatibility hacks for old kernel:
if (ret>=0) && (match(prevpc, _waitPC)>=0) then {
print("\tdata: ");
printtextordata(*(eval pcspret[1]), 12+3*12+64);
print("\n");
}
if (ret>=0) && (match(prevpc, _errstrPC)>=0) then {
print("\tdata: ");
printtextordata(*(eval pcspret[1]), 64);
print("\n");
}
}
trussflush();
}
}
defn cleantruss() {
local lst, offset, addr;
stop(pid);
offset = trapoffset();
lst = trussbpt;
while lst do
{
addr = head lst;
lst = tail lst;
bpdel(addr);
}
trussbpt = {};
**PC = @*PC; // repair current instruction
}
defn untruss() {
cleantruss();
start(pid);
}
print("/sys/lib/acid/truss");

23
sys/lib/acid/window Executable file
View File

@ -0,0 +1,23 @@
#!/bin/rc
switch($#*){
case 0 1
echo usage: window '''minx miny maxx maxy''' cmd args ...
exit usage
}
rfork ns
if(mount $wsys /mnt/wsys N`{{echo $pid $1 }| sed 's/^ //g;s/ +/,/g'}){
shift
bind -b /mnt/wsys /dev
echo -n `{basename $1} > /dev/label >[2] /dev/null
@{
echo hang > /proc/^`{cat /dev/ppid}^/ctl
$* < /dev/cons > /dev/cons >[2] /dev/cons &
exit $apid
}
ostatus = `{echo $status | sed 's/.*://'}
echo waitstop > /proc/$ostatus/ctl
echo nohang > /proc/$ostatus/ctl
exit $ostatus
}
exit 0

36
sys/lib/agent.config Executable file
View File

@ -0,0 +1,36 @@
# an ssh key, as in the .secret file produced by aux/ssh_genkey
sshkey="1024 2D 5FD276869B5257F506CD32A5EF9CC8D5F691B1B15B17E59ED01691160828D1E0DF192AB82451684DBC74668874C557C81C89396C5EFCA155FE88E1AD6A3C27BFD34B6F6D0A30958B79872CA73A10401B3B85F8E430646B7FD3F36C2BFA47B0581FF101C207E654F1FF23E37BFEAA36D8381FC17315BC77292A6D4E46B68CEE64 A5D892105B985D28159E3A1F3267F9238D373D64315A97441962227EBF5A578F0BFA53C88DA096FCB27AB176052E2B9F4514E362F32B660124D937D386A3311C6DB5497DEF131A1BE5BFA7C88C204D25DB6F6C8181D4826239E52788745B0801F7CB86725A5137E358FEE99852CD50B1B470BA413C35333C26F5D8A3B9D57DF2 A322062C0B47115FBE09721ABBB027719F09C87ED29664AB5A1777D97CBCB099D00A305C8E895C1065DC397D0777DEFB4E216C602A5F4098E6E71701804050B0 10441EEC665DA685E72E9CADB27054098CB879C9F2068ED8104A860C55049A63217DB493247F448CDA5DABA13750775402C8E7F1009C0FD0362EF1C9DFDA141E2 1D005C1E95EA803E882F30BACC088F8BAA7EE510DB7B729B9E3D0F9E218DA23D7A5174AFBE514EF1D93837BB3487169313942A05B7E36C31F029152816CCDB24 2E449C3A06BABD389CF65CF3C2AB99B4C378D1E366790DC74AC899BCAD8FF008E7CBF641D3E72963232C92DBA30703C7245D996EF0AAD7A5946EC6827CBBF4F4 9E0E0FE3DAA204E387DD556667CC3B431B01084DDA9AF5461EBE8700BC213F7D2DEF799915B17B596172CB6859E9775AC902D0A285E0D9491ED2642DF6D818DF"
# plan 9 password
plan9password = "secret"
# inferno/pop password
apoppassword = "terces"
# plaintext non-secure password
plaintext = "guessme"
# serve your ssh key
file /ssh/you
protocol ssh-rsa
data $sshkey
# make "rdwr /mnt/auth/netkey/your.host/you" a workalike for netkey.
file /netkey/your.host/you
protocol netkey
data $plan9password
# md5 apop challenge-response
file /apop/your.host/you
protocol apop
data $apoppassword
# raw access to password for pop or imap
file /pop/your.host/you
protocol raw
data $plaintext
file /imap/your.host/you
protocol raw
data $plaintext

BIN
sys/lib/amspell Executable file

Binary file not shown.

303
sys/lib/antiword/8859-1.txt Executable file
View File

@ -0,0 +1,303 @@
#
# Name: ISO/IEC 8859-1:1998 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-1:1998 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-1 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-1 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x00A1 # INVERTED EXCLAMATION MARK
0xA2 0x00A2 # CENT SIGN
0xA3 0x00A3 # POUND SIGN
0xA4 0x00A4 # CURRENCY SIGN
0xA5 0x00A5 # YEN SIGN
0xA6 0x00A6 # BROKEN BAR
0xA7 0x00A7 # SECTION SIGN
0xA8 0x00A8 # DIAERESIS
0xA9 0x00A9 # COPYRIGHT SIGN
0xAA 0x00AA # FEMININE ORDINAL INDICATOR
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC # NOT SIGN
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x00AE # REGISTERED SIGN
0xAF 0x00AF # MACRON
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x00B1 # PLUS-MINUS SIGN
0xB2 0x00B2 # SUPERSCRIPT TWO
0xB3 0x00B3 # SUPERSCRIPT THREE
0xB4 0x00B4 # ACUTE ACCENT
0xB5 0x00B5 # MICRO SIGN
0xB6 0x00B6 # PILCROW SIGN
0xB7 0x00B7 # MIDDLE DOT
0xB8 0x00B8 # CEDILLA
0xB9 0x00B9 # SUPERSCRIPT ONE
0xBA 0x00BA # MASCULINE ORDINAL INDICATOR
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
0xBD 0x00BD # VULGAR FRACTION ONE HALF
0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
0xBF 0x00BF # INVERTED QUESTION MARK
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
0xD0 0x00D0 # LATIN CAPITAL LETTER ETH (Icelandic)
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 # MULTIPLICATION SIGN
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
0xDE 0x00DE # LATIN CAPITAL LETTER THORN (Icelandic)
0xDF 0x00DF # LATIN SMALL LETTER SHARP S (German)
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x00E6 # LATIN SMALL LETTER AE
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
0xF0 0x00F0 # LATIN SMALL LETTER ETH (Icelandic)
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 # DIVISION SIGN
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x00FE # LATIN SMALL LETTER THORN (Icelandic)
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS

303
sys/lib/antiword/8859-10.txt Executable file
View File

@ -0,0 +1,303 @@
#
# Name: ISO/IEC 8859-10:1998 to Unicode
# Unicode version: 3.0
# Table version: 1.1
# Table format: Format A
# Date: 1999 October 11
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-10:1998 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-10 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-10 order.
#
# Version history
# 1.0 version new.
# 1.1 corrected mistake in mapping of 0xA4
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
0xA2 0x0112 # LATIN CAPITAL LETTER E WITH MACRON
0xA3 0x0122 # LATIN CAPITAL LETTER G WITH CEDILLA
0xA4 0x012A # LATIN CAPITAL LETTER I WITH MACRON
0xA5 0x0128 # LATIN CAPITAL LETTER I WITH TILDE
0xA6 0x0136 # LATIN CAPITAL LETTER K WITH CEDILLA
0xA7 0x00A7 # SECTION SIGN
0xA8 0x013B # LATIN CAPITAL LETTER L WITH CEDILLA
0xA9 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
0xAA 0x0160 # LATIN CAPITAL LETTER S WITH CARON
0xAB 0x0166 # LATIN CAPITAL LETTER T WITH STROKE
0xAC 0x017D # LATIN CAPITAL LETTER Z WITH CARON
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x016A # LATIN CAPITAL LETTER U WITH MACRON
0xAF 0x014A # LATIN CAPITAL LETTER ENG
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x0105 # LATIN SMALL LETTER A WITH OGONEK
0xB2 0x0113 # LATIN SMALL LETTER E WITH MACRON
0xB3 0x0123 # LATIN SMALL LETTER G WITH CEDILLA
0xB4 0x012B # LATIN SMALL LETTER I WITH MACRON
0xB5 0x0129 # LATIN SMALL LETTER I WITH TILDE
0xB6 0x0137 # LATIN SMALL LETTER K WITH CEDILLA
0xB7 0x00B7 # MIDDLE DOT
0xB8 0x013C # LATIN SMALL LETTER L WITH CEDILLA
0xB9 0x0111 # LATIN SMALL LETTER D WITH STROKE
0xBA 0x0161 # LATIN SMALL LETTER S WITH CARON
0xBB 0x0167 # LATIN SMALL LETTER T WITH STROKE
0xBC 0x017E # LATIN SMALL LETTER Z WITH CARON
0xBD 0x2015 # HORIZONTAL BAR
0xBE 0x016B # LATIN SMALL LETTER U WITH MACRON
0xBF 0x014B # LATIN SMALL LETTER ENG
0xC0 0x0100 # LATIN CAPITAL LETTER A WITH MACRON
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
0xC7 0x012E # LATIN CAPITAL LETTER I WITH OGONEK
0xC8 0x010C # LATIN CAPITAL LETTER C WITH CARON
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
0xD0 0x00D0 # LATIN CAPITAL LETTER ETH (Icelandic)
0xD1 0x0145 # LATIN CAPITAL LETTER N WITH CEDILLA
0xD2 0x014C # LATIN CAPITAL LETTER O WITH MACRON
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x0168 # LATIN CAPITAL LETTER U WITH TILDE
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
0xD9 0x0172 # LATIN CAPITAL LETTER U WITH OGONEK
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
0xDE 0x00DE # LATIN CAPITAL LETTER THORN (Icelandic)
0xDF 0x00DF # LATIN SMALL LETTER SHARP S (German)
0xE0 0x0101 # LATIN SMALL LETTER A WITH MACRON
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x00E6 # LATIN SMALL LETTER AE
0xE7 0x012F # LATIN SMALL LETTER I WITH OGONEK
0xE8 0x010D # LATIN SMALL LETTER C WITH CARON
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x0119 # LATIN SMALL LETTER E WITH OGONEK
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x0117 # LATIN SMALL LETTER E WITH DOT ABOVE
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
0xF0 0x00F0 # LATIN SMALL LETTER ETH (Icelandic)
0xF1 0x0146 # LATIN SMALL LETTER N WITH CEDILLA
0xF2 0x014D # LATIN SMALL LETTER O WITH MACRON
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x0169 # LATIN SMALL LETTER U WITH TILDE
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
0xF9 0x0173 # LATIN SMALL LETTER U WITH OGONEK
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x00FE # LATIN SMALL LETTER THORN (Icelandic)
0xFF 0x0138 # LATIN SMALL LETTER KRA

299
sys/lib/antiword/8859-13.txt Executable file
View File

@ -0,0 +1,299 @@
#
# Name: ISO/IEC 8859-13:1998 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-13:1998 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-13 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-13 order.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x201D # RIGHT DOUBLE QUOTATION MARK
0xA2 0x00A2 # CENT SIGN
0xA3 0x00A3 # POUND SIGN
0xA4 0x00A4 # CURRENCY SIGN
0xA5 0x201E # DOUBLE LOW-9 QUOTATION MARK
0xA6 0x00A6 # BROKEN BAR
0xA7 0x00A7 # SECTION SIGN
0xA8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
0xA9 0x00A9 # COPYRIGHT SIGN
0xAA 0x0156 # LATIN CAPITAL LETTER R WITH CEDILLA
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC # NOT SIGN
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x00AE # REGISTERED SIGN
0xAF 0x00C6 # LATIN CAPITAL LETTER AE
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x00B1 # PLUS-MINUS SIGN
0xB2 0x00B2 # SUPERSCRIPT TWO
0xB3 0x00B3 # SUPERSCRIPT THREE
0xB4 0x201C # LEFT DOUBLE QUOTATION MARK
0xB5 0x00B5 # MICRO SIGN
0xB6 0x00B6 # PILCROW SIGN
0xB7 0x00B7 # MIDDLE DOT
0xB8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
0xB9 0x00B9 # SUPERSCRIPT ONE
0xBA 0x0157 # LATIN SMALL LETTER R WITH CEDILLA
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
0xBD 0x00BD # VULGAR FRACTION ONE HALF
0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
0xBF 0x00E6 # LATIN SMALL LETTER AE
0xC0 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
0xC1 0x012E # LATIN CAPITAL LETTER I WITH OGONEK
0xC2 0x0100 # LATIN CAPITAL LETTER A WITH MACRON
0xC3 0x0106 # LATIN CAPITAL LETTER C WITH ACUTE
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
0xC7 0x0112 # LATIN CAPITAL LETTER E WITH MACRON
0xC8 0x010C # LATIN CAPITAL LETTER C WITH CARON
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x0179 # LATIN CAPITAL LETTER Z WITH ACUTE
0xCB 0x0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE
0xCC 0x0122 # LATIN CAPITAL LETTER G WITH CEDILLA
0xCD 0x0136 # LATIN CAPITAL LETTER K WITH CEDILLA
0xCE 0x012A # LATIN CAPITAL LETTER I WITH MACRON
0xCF 0x013B # LATIN CAPITAL LETTER L WITH CEDILLA
0xD0 0x0160 # LATIN CAPITAL LETTER S WITH CARON
0xD1 0x0143 # LATIN CAPITAL LETTER N WITH ACUTE
0xD2 0x0145 # LATIN CAPITAL LETTER N WITH CEDILLA
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x014C # LATIN CAPITAL LETTER O WITH MACRON
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 # MULTIPLICATION SIGN
0xD8 0x0172 # LATIN CAPITAL LETTER U WITH OGONEK
0xD9 0x0141 # LATIN CAPITAL LETTER L WITH STROKE
0xDA 0x015A # LATIN CAPITAL LETTER S WITH ACUTE
0xDB 0x016A # LATIN CAPITAL LETTER U WITH MACRON
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
0xDE 0x017D # LATIN CAPITAL LETTER Z WITH CARON
0xDF 0x00DF # LATIN SMALL LETTER SHARP S (German)
0xE0 0x0105 # LATIN SMALL LETTER A WITH OGONEK
0xE1 0x012F # LATIN SMALL LETTER I WITH OGONEK
0xE2 0x0101 # LATIN SMALL LETTER A WITH MACRON
0xE3 0x0107 # LATIN SMALL LETTER C WITH ACUTE
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x0119 # LATIN SMALL LETTER E WITH OGONEK
0xE7 0x0113 # LATIN SMALL LETTER E WITH MACRON
0xE8 0x010D # LATIN SMALL LETTER C WITH CARON
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x017A # LATIN SMALL LETTER Z WITH ACUTE
0xEB 0x0117 # LATIN SMALL LETTER E WITH DOT ABOVE
0xEC 0x0123 # LATIN SMALL LETTER G WITH CEDILLA
0xED 0x0137 # LATIN SMALL LETTER K WITH CEDILLA
0xEE 0x012B # LATIN SMALL LETTER I WITH MACRON
0xEF 0x013C # LATIN SMALL LETTER L WITH CEDILLA
0xF0 0x0161 # LATIN SMALL LETTER S WITH CARON
0xF1 0x0144 # LATIN SMALL LETTER N WITH ACUTE
0xF2 0x0146 # LATIN SMALL LETTER N WITH CEDILLA
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0xF4 0x014D # LATIN SMALL LETTER O WITH MACRON
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 # DIVISION SIGN
0xF8 0x0173 # LATIN SMALL LETTER U WITH OGONEK
0xF9 0x0142 # LATIN SMALL LETTER L WITH STROKE
0xFA 0x015B # LATIN SMALL LETTER S WITH ACUTE
0xFB 0x016B # LATIN SMALL LETTER U WITH MACRON
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x017C # LATIN SMALL LETTER Z WITH DOT ABOVE
0xFE 0x017E # LATIN SMALL LETTER Z WITH CARON
0xFF 0x2019 # RIGHT SINGLE QUOTATION MARK

301
sys/lib/antiword/8859-14.txt Executable file
View File

@ -0,0 +1,301 @@
#
# Name: ISO/IEC 8859-14:1998 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Markus Kuhn <mkuhn@acm.org>
# Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-14:1998 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-14 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-14 order.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE
0xA2 0x1E03 # LATIN SMALL LETTER B WITH DOT ABOVE
0xA3 0x00A3 # POUND SIGN
0xA4 0x010A # LATIN CAPITAL LETTER C WITH DOT ABOVE
0xA5 0x010B # LATIN SMALL LETTER C WITH DOT ABOVE
0xA6 0x1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE
0xA7 0x00A7 # SECTION SIGN
0xA8 0x1E80 # LATIN CAPITAL LETTER W WITH GRAVE
0xA9 0x00A9 # COPYRIGHT SIGN
0xAA 0x1E82 # LATIN CAPITAL LETTER W WITH ACUTE
0xAB 0x1E0B # LATIN SMALL LETTER D WITH DOT ABOVE
0xAC 0x1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x00AE # REGISTERED SIGN
0xAF 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
0xB0 0x1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE
0xB1 0x1E1F # LATIN SMALL LETTER F WITH DOT ABOVE
0xB2 0x0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE
0xB3 0x0121 # LATIN SMALL LETTER G WITH DOT ABOVE
0xB4 0x1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE
0xB5 0x1E41 # LATIN SMALL LETTER M WITH DOT ABOVE
0xB6 0x00B6 # PILCROW SIGN
0xB7 0x1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE
0xB8 0x1E81 # LATIN SMALL LETTER W WITH GRAVE
0xB9 0x1E57 # LATIN SMALL LETTER P WITH DOT ABOVE
0xBA 0x1E83 # LATIN SMALL LETTER W WITH ACUTE
0xBB 0x1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE
0xBC 0x1EF3 # LATIN SMALL LETTER Y WITH GRAVE
0xBD 0x1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS
0xBE 0x1E85 # LATIN SMALL LETTER W WITH DIAERESIS
0xBF 0x1E61 # LATIN SMALL LETTER S WITH DOT ABOVE
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
0xD0 0x0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
0xDE 0x0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x00E6 # LATIN SMALL LETTER AE
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
0xF0 0x0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x1E6B # LATIN SMALL LETTER T WITH DOT ABOVE
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS

303
sys/lib/antiword/8859-15.txt Executable file
View File

@ -0,0 +1,303 @@
#
# Name: ISO/IEC 8859-15:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Markus Kuhn <mkuhn@acm.org>
# Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-15:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-15 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-15 order.
#
# Version history
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x00A1 # INVERTED EXCLAMATION MARK
0xA2 0x00A2 # CENT SIGN
0xA3 0x00A3 # POUND SIGN
0xA4 0x20AC # EURO SIGN
0xA5 0x00A5 # YEN SIGN
0xA6 0x0160 # LATIN CAPITAL LETTER S WITH CARON
0xA7 0x00A7 # SECTION SIGN
0xA8 0x0161 # LATIN SMALL LETTER S WITH CARON
0xA9 0x00A9 # COPYRIGHT SIGN
0xAA 0x00AA # FEMININE ORDINAL INDICATOR
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC # NOT SIGN
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x00AE # REGISTERED SIGN
0xAF 0x00AF # MACRON
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x00B1 # PLUS-MINUS SIGN
0xB2 0x00B2 # SUPERSCRIPT TWO
0xB3 0x00B3 # SUPERSCRIPT THREE
0xB4 0x017D # LATIN CAPITAL LETTER Z WITH CARON
0xB5 0x00B5 # MICRO SIGN
0xB6 0x00B6 # PILCROW SIGN
0xB7 0x00B7 # MIDDLE DOT
0xB8 0x017E # LATIN SMALL LETTER Z WITH CARON
0xB9 0x00B9 # SUPERSCRIPT ONE
0xBA 0x00BA # MASCULINE ORDINAL INDICATOR
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x0152 # LATIN CAPITAL LIGATURE OE
0xBD 0x0153 # LATIN SMALL LIGATURE OE
0xBE 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
0xBF 0x00BF # INVERTED QUESTION MARK
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
0xD0 0x00D0 # LATIN CAPITAL LETTER ETH
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 # MULTIPLICATION SIGN
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
0xDE 0x00DE # LATIN CAPITAL LETTER THORN
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x00E6 # LATIN SMALL LETTER AE
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
0xF0 0x00F0 # LATIN SMALL LETTER ETH
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 # DIVISION SIGN
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x00FE # LATIN SMALL LETTER THORN
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS

299
sys/lib/antiword/8859-16.txt Executable file
View File

@ -0,0 +1,299 @@
#
# Name: ISO/IEC 8859-16:2001 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 2001 July 26
# Authors: Markus Kuhn <mkuhn@acm.org>
#
# Copyright (c) 1999-2001 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-16:2001 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-16 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-16 order.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
0xA2 0x0105 # LATIN SMALL LETTER A WITH OGONEK
0xA3 0x0141 # LATIN CAPITAL LETTER L WITH STROKE
0xA4 0x20AC # EURO SIGN
0xA5 0x201E # DOUBLE LOW-9 QUOTATION MARK
0xA6 0x0160 # LATIN CAPITAL LETTER S WITH CARON
0xA7 0x00A7 # SECTION SIGN
0xA8 0x0161 # LATIN SMALL LETTER S WITH CARON
0xA9 0x00A9 # COPYRIGHT SIGN
0xAA 0x0218 # LATIN CAPITAL LETTER S WITH COMMA BELOW
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x0179 # LATIN CAPITAL LETTER Z WITH ACUTE
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x017A # LATIN SMALL LETTER Z WITH ACUTE
0xAF 0x017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x00B1 # PLUS-MINUS SIGN
0xB2 0x010C # LATIN CAPITAL LETTER C WITH CARON
0xB3 0x0142 # LATIN SMALL LETTER L WITH STROKE
0xB4 0x017D # LATIN CAPITAL LETTER Z WITH CARON
0xB5 0x201D # RIGHT DOUBLE QUOTATION MARK
0xB6 0x00B6 # PILCROW SIGN
0xB7 0x00B7 # MIDDLE DOT
0xB8 0x017E # LATIN SMALL LETTER Z WITH CARON
0xB9 0x010D # LATIN SMALL LETTER C WITH CARON
0xBA 0x0219 # LATIN SMALL LETTER S WITH COMMA BELOW
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x0152 # LATIN CAPITAL LIGATURE OE
0xBD 0x0153 # LATIN SMALL LIGATURE OE
0xBE 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
0xBF 0x017C # LATIN SMALL LETTER Z WITH DOT ABOVE
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x0102 # LATIN CAPITAL LETTER A WITH BREVE
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x0106 # LATIN CAPITAL LETTER C WITH ACUTE
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
0xD0 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
0xD1 0x0143 # LATIN CAPITAL LETTER N WITH ACUTE
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x015A # LATIN CAPITAL LETTER S WITH ACUTE
0xD8 0x0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
0xDE 0x021A # LATIN CAPITAL LETTER T WITH COMMA BELOW
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x0103 # LATIN SMALL LETTER A WITH BREVE
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x0107 # LATIN SMALL LETTER C WITH ACUTE
0xE6 0x00E6 # LATIN SMALL LETTER AE
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
0xF0 0x0111 # LATIN SMALL LETTER D WITH STROKE
0xF1 0x0144 # LATIN SMALL LETTER N WITH ACUTE
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x015B # LATIN SMALL LETTER S WITH ACUTE
0xF8 0x0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x0119 # LATIN SMALL LETTER E WITH OGONEK
0xFE 0x021B # LATIN SMALL LETTER T WITH COMMA BELOW
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS

303
sys/lib/antiword/8859-2.txt Executable file
View File

@ -0,0 +1,303 @@
#
# Name: ISO 8859-2:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-2:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-2 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-2 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
0xA2 0x02D8 # BREVE
0xA3 0x0141 # LATIN CAPITAL LETTER L WITH STROKE
0xA4 0x00A4 # CURRENCY SIGN
0xA5 0x013D # LATIN CAPITAL LETTER L WITH CARON
0xA6 0x015A # LATIN CAPITAL LETTER S WITH ACUTE
0xA7 0x00A7 # SECTION SIGN
0xA8 0x00A8 # DIAERESIS
0xA9 0x0160 # LATIN CAPITAL LETTER S WITH CARON
0xAA 0x015E # LATIN CAPITAL LETTER S WITH CEDILLA
0xAB 0x0164 # LATIN CAPITAL LETTER T WITH CARON
0xAC 0x0179 # LATIN CAPITAL LETTER Z WITH ACUTE
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x017D # LATIN CAPITAL LETTER Z WITH CARON
0xAF 0x017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x0105 # LATIN SMALL LETTER A WITH OGONEK
0xB2 0x02DB # OGONEK
0xB3 0x0142 # LATIN SMALL LETTER L WITH STROKE
0xB4 0x00B4 # ACUTE ACCENT
0xB5 0x013E # LATIN SMALL LETTER L WITH CARON
0xB6 0x015B # LATIN SMALL LETTER S WITH ACUTE
0xB7 0x02C7 # CARON
0xB8 0x00B8 # CEDILLA
0xB9 0x0161 # LATIN SMALL LETTER S WITH CARON
0xBA 0x015F # LATIN SMALL LETTER S WITH CEDILLA
0xBB 0x0165 # LATIN SMALL LETTER T WITH CARON
0xBC 0x017A # LATIN SMALL LETTER Z WITH ACUTE
0xBD 0x02DD # DOUBLE ACUTE ACCENT
0xBE 0x017E # LATIN SMALL LETTER Z WITH CARON
0xBF 0x017C # LATIN SMALL LETTER Z WITH DOT ABOVE
0xC0 0x0154 # LATIN CAPITAL LETTER R WITH ACUTE
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x0102 # LATIN CAPITAL LETTER A WITH BREVE
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x0139 # LATIN CAPITAL LETTER L WITH ACUTE
0xC6 0x0106 # LATIN CAPITAL LETTER C WITH ACUTE
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x010C # LATIN CAPITAL LETTER C WITH CARON
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x011A # LATIN CAPITAL LETTER E WITH CARON
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x010E # LATIN CAPITAL LETTER D WITH CARON
0xD0 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
0xD1 0x0143 # LATIN CAPITAL LETTER N WITH ACUTE
0xD2 0x0147 # LATIN CAPITAL LETTER N WITH CARON
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 # MULTIPLICATION SIGN
0xD8 0x0158 # LATIN CAPITAL LETTER R WITH CARON
0xD9 0x016E # LATIN CAPITAL LETTER U WITH RING ABOVE
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
0xDE 0x0162 # LATIN CAPITAL LETTER T WITH CEDILLA
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
0xE0 0x0155 # LATIN SMALL LETTER R WITH ACUTE
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x0103 # LATIN SMALL LETTER A WITH BREVE
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x013A # LATIN SMALL LETTER L WITH ACUTE
0xE6 0x0107 # LATIN SMALL LETTER C WITH ACUTE
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x010D # LATIN SMALL LETTER C WITH CARON
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x0119 # LATIN SMALL LETTER E WITH OGONEK
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x011B # LATIN SMALL LETTER E WITH CARON
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x010F # LATIN SMALL LETTER D WITH CARON
0xF0 0x0111 # LATIN SMALL LETTER D WITH STROKE
0xF1 0x0144 # LATIN SMALL LETTER N WITH ACUTE
0xF2 0x0148 # LATIN SMALL LETTER N WITH CARON
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 # DIVISION SIGN
0xF8 0x0159 # LATIN SMALL LETTER R WITH CARON
0xF9 0x016F # LATIN SMALL LETTER U WITH RING ABOVE
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0xFB 0x0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x0163 # LATIN SMALL LETTER T WITH CEDILLA
0xFF 0x02D9 # DOT ABOVE

296
sys/lib/antiword/8859-3.txt Executable file
View File

@ -0,0 +1,296 @@
#
# Name: ISO/IEC 8859-3:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-3:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-3 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-3 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x0126 # LATIN CAPITAL LETTER H WITH STROKE
0xA2 0x02D8 # BREVE
0xA3 0x00A3 # POUND SIGN
0xA4 0x00A4 # CURRENCY SIGN
0xA6 0x0124 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
0xA7 0x00A7 # SECTION SIGN
0xA8 0x00A8 # DIAERESIS
0xA9 0x0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE
0xAA 0x015E # LATIN CAPITAL LETTER S WITH CEDILLA
0xAB 0x011E # LATIN CAPITAL LETTER G WITH BREVE
0xAC 0x0134 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
0xAD 0x00AD # SOFT HYPHEN
0xAF 0x017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x0127 # LATIN SMALL LETTER H WITH STROKE
0xB2 0x00B2 # SUPERSCRIPT TWO
0xB3 0x00B3 # SUPERSCRIPT THREE
0xB4 0x00B4 # ACUTE ACCENT
0xB5 0x00B5 # MICRO SIGN
0xB6 0x0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX
0xB7 0x00B7 # MIDDLE DOT
0xB8 0x00B8 # CEDILLA
0xB9 0x0131 # LATIN SMALL LETTER DOTLESS I
0xBA 0x015F # LATIN SMALL LETTER S WITH CEDILLA
0xBB 0x011F # LATIN SMALL LETTER G WITH BREVE
0xBC 0x0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX
0xBD 0x00BD # VULGAR FRACTION ONE HALF
0xBF 0x017C # LATIN SMALL LETTER Z WITH DOT ABOVE
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x010A # LATIN CAPITAL LETTER C WITH DOT ABOVE
0xC6 0x0108 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 # MULTIPLICATION SIGN
0xD8 0x011C # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x016C # LATIN CAPITAL LETTER U WITH BREVE
0xDE 0x015C # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x010B # LATIN SMALL LETTER C WITH DOT ABOVE
0xE6 0x0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x0121 # LATIN SMALL LETTER G WITH DOT ABOVE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 # DIVISION SIGN
0xF8 0x011D # LATIN SMALL LETTER G WITH CIRCUMFLEX
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x016D # LATIN SMALL LETTER U WITH BREVE
0xFE 0x015D # LATIN SMALL LETTER S WITH CIRCUMFLEX
0xFF 0x02D9 # DOT ABOVE

303
sys/lib/antiword/8859-4.txt Executable file
View File

@ -0,0 +1,303 @@
#
# Name: ISO/IEC 8859-4:1998 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-4:1998 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-4 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-4 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
0xA2 0x0138 # LATIN SMALL LETTER KRA
0xA3 0x0156 # LATIN CAPITAL LETTER R WITH CEDILLA
0xA4 0x00A4 # CURRENCY SIGN
0xA5 0x0128 # LATIN CAPITAL LETTER I WITH TILDE
0xA6 0x013B # LATIN CAPITAL LETTER L WITH CEDILLA
0xA7 0x00A7 # SECTION SIGN
0xA8 0x00A8 # DIAERESIS
0xA9 0x0160 # LATIN CAPITAL LETTER S WITH CARON
0xAA 0x0112 # LATIN CAPITAL LETTER E WITH MACRON
0xAB 0x0122 # LATIN CAPITAL LETTER G WITH CEDILLA
0xAC 0x0166 # LATIN CAPITAL LETTER T WITH STROKE
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x017D # LATIN CAPITAL LETTER Z WITH CARON
0xAF 0x00AF # MACRON
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x0105 # LATIN SMALL LETTER A WITH OGONEK
0xB2 0x02DB # OGONEK
0xB3 0x0157 # LATIN SMALL LETTER R WITH CEDILLA
0xB4 0x00B4 # ACUTE ACCENT
0xB5 0x0129 # LATIN SMALL LETTER I WITH TILDE
0xB6 0x013C # LATIN SMALL LETTER L WITH CEDILLA
0xB7 0x02C7 # CARON
0xB8 0x00B8 # CEDILLA
0xB9 0x0161 # LATIN SMALL LETTER S WITH CARON
0xBA 0x0113 # LATIN SMALL LETTER E WITH MACRON
0xBB 0x0123 # LATIN SMALL LETTER G WITH CEDILLA
0xBC 0x0167 # LATIN SMALL LETTER T WITH STROKE
0xBD 0x014A # LATIN CAPITAL LETTER ENG
0xBE 0x017E # LATIN SMALL LETTER Z WITH CARON
0xBF 0x014B # LATIN SMALL LETTER ENG
0xC0 0x0100 # LATIN CAPITAL LETTER A WITH MACRON
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
0xC7 0x012E # LATIN CAPITAL LETTER I WITH OGONEK
0xC8 0x010C # LATIN CAPITAL LETTER C WITH CARON
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x012A # LATIN CAPITAL LETTER I WITH MACRON
0xD0 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
0xD1 0x0145 # LATIN CAPITAL LETTER N WITH CEDILLA
0xD2 0x014C # LATIN CAPITAL LETTER O WITH MACRON
0xD3 0x0136 # LATIN CAPITAL LETTER K WITH CEDILLA
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 # MULTIPLICATION SIGN
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
0xD9 0x0172 # LATIN CAPITAL LETTER U WITH OGONEK
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x0168 # LATIN CAPITAL LETTER U WITH TILDE
0xDE 0x016A # LATIN CAPITAL LETTER U WITH MACRON
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
0xE0 0x0101 # LATIN SMALL LETTER A WITH MACRON
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x00E6 # LATIN SMALL LETTER AE
0xE7 0x012F # LATIN SMALL LETTER I WITH OGONEK
0xE8 0x010D # LATIN SMALL LETTER C WITH CARON
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x0119 # LATIN SMALL LETTER E WITH OGONEK
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x0117 # LATIN SMALL LETTER E WITH DOT ABOVE
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x012B # LATIN SMALL LETTER I WITH MACRON
0xF0 0x0111 # LATIN SMALL LETTER D WITH STROKE
0xF1 0x0146 # LATIN SMALL LETTER N WITH CEDILLA
0xF2 0x014D # LATIN SMALL LETTER O WITH MACRON
0xF3 0x0137 # LATIN SMALL LETTER K WITH CEDILLA
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 # DIVISION SIGN
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
0xF9 0x0173 # LATIN SMALL LETTER U WITH OGONEK
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x0169 # LATIN SMALL LETTER U WITH TILDE
0xFE 0x016B # LATIN SMALL LETTER U WITH MACRON
0xFF 0x02D9 # DOT ABOVE

303
sys/lib/antiword/8859-5.txt Executable file
View File

@ -0,0 +1,303 @@
#
# Name: ISO 8859-5:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-5:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-5 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-5 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x0401 # CYRILLIC CAPITAL LETTER IO
0xA2 0x0402 # CYRILLIC CAPITAL LETTER DJE
0xA3 0x0403 # CYRILLIC CAPITAL LETTER GJE
0xA4 0x0404 # CYRILLIC CAPITAL LETTER UKRAINIAN IE
0xA5 0x0405 # CYRILLIC CAPITAL LETTER DZE
0xA6 0x0406 # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
0xA7 0x0407 # CYRILLIC CAPITAL LETTER YI
0xA8 0x0408 # CYRILLIC CAPITAL LETTER JE
0xA9 0x0409 # CYRILLIC CAPITAL LETTER LJE
0xAA 0x040A # CYRILLIC CAPITAL LETTER NJE
0xAB 0x040B # CYRILLIC CAPITAL LETTER TSHE
0xAC 0x040C # CYRILLIC CAPITAL LETTER KJE
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x040E # CYRILLIC CAPITAL LETTER SHORT U
0xAF 0x040F # CYRILLIC CAPITAL LETTER DZHE
0xB0 0x0410 # CYRILLIC CAPITAL LETTER A
0xB1 0x0411 # CYRILLIC CAPITAL LETTER BE
0xB2 0x0412 # CYRILLIC CAPITAL LETTER VE
0xB3 0x0413 # CYRILLIC CAPITAL LETTER GHE
0xB4 0x0414 # CYRILLIC CAPITAL LETTER DE
0xB5 0x0415 # CYRILLIC CAPITAL LETTER IE
0xB6 0x0416 # CYRILLIC CAPITAL LETTER ZHE
0xB7 0x0417 # CYRILLIC CAPITAL LETTER ZE
0xB8 0x0418 # CYRILLIC CAPITAL LETTER I
0xB9 0x0419 # CYRILLIC CAPITAL LETTER SHORT I
0xBA 0x041A # CYRILLIC CAPITAL LETTER KA
0xBB 0x041B # CYRILLIC CAPITAL LETTER EL
0xBC 0x041C # CYRILLIC CAPITAL LETTER EM
0xBD 0x041D # CYRILLIC CAPITAL LETTER EN
0xBE 0x041E # CYRILLIC CAPITAL LETTER O
0xBF 0x041F # CYRILLIC CAPITAL LETTER PE
0xC0 0x0420 # CYRILLIC CAPITAL LETTER ER
0xC1 0x0421 # CYRILLIC CAPITAL LETTER ES
0xC2 0x0422 # CYRILLIC CAPITAL LETTER TE
0xC3 0x0423 # CYRILLIC CAPITAL LETTER U
0xC4 0x0424 # CYRILLIC CAPITAL LETTER EF
0xC5 0x0425 # CYRILLIC CAPITAL LETTER HA
0xC6 0x0426 # CYRILLIC CAPITAL LETTER TSE
0xC7 0x0427 # CYRILLIC CAPITAL LETTER CHE
0xC8 0x0428 # CYRILLIC CAPITAL LETTER SHA
0xC9 0x0429 # CYRILLIC CAPITAL LETTER SHCHA
0xCA 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN
0xCB 0x042B # CYRILLIC CAPITAL LETTER YERU
0xCC 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN
0xCD 0x042D # CYRILLIC CAPITAL LETTER E
0xCE 0x042E # CYRILLIC CAPITAL LETTER YU
0xCF 0x042F # CYRILLIC CAPITAL LETTER YA
0xD0 0x0430 # CYRILLIC SMALL LETTER A
0xD1 0x0431 # CYRILLIC SMALL LETTER BE
0xD2 0x0432 # CYRILLIC SMALL LETTER VE
0xD3 0x0433 # CYRILLIC SMALL LETTER GHE
0xD4 0x0434 # CYRILLIC SMALL LETTER DE
0xD5 0x0435 # CYRILLIC SMALL LETTER IE
0xD6 0x0436 # CYRILLIC SMALL LETTER ZHE
0xD7 0x0437 # CYRILLIC SMALL LETTER ZE
0xD8 0x0438 # CYRILLIC SMALL LETTER I
0xD9 0x0439 # CYRILLIC SMALL LETTER SHORT I
0xDA 0x043A # CYRILLIC SMALL LETTER KA
0xDB 0x043B # CYRILLIC SMALL LETTER EL
0xDC 0x043C # CYRILLIC SMALL LETTER EM
0xDD 0x043D # CYRILLIC SMALL LETTER EN
0xDE 0x043E # CYRILLIC SMALL LETTER O
0xDF 0x043F # CYRILLIC SMALL LETTER PE
0xE0 0x0440 # CYRILLIC SMALL LETTER ER
0xE1 0x0441 # CYRILLIC SMALL LETTER ES
0xE2 0x0442 # CYRILLIC SMALL LETTER TE
0xE3 0x0443 # CYRILLIC SMALL LETTER U
0xE4 0x0444 # CYRILLIC SMALL LETTER EF
0xE5 0x0445 # CYRILLIC SMALL LETTER HA
0xE6 0x0446 # CYRILLIC SMALL LETTER TSE
0xE7 0x0447 # CYRILLIC SMALL LETTER CHE
0xE8 0x0448 # CYRILLIC SMALL LETTER SHA
0xE9 0x0449 # CYRILLIC SMALL LETTER SHCHA
0xEA 0x044A # CYRILLIC SMALL LETTER HARD SIGN
0xEB 0x044B # CYRILLIC SMALL LETTER YERU
0xEC 0x044C # CYRILLIC SMALL LETTER SOFT SIGN
0xED 0x044D # CYRILLIC SMALL LETTER E
0xEE 0x044E # CYRILLIC SMALL LETTER YU
0xEF 0x044F # CYRILLIC SMALL LETTER YA
0xF0 0x2116 # NUMERO SIGN
0xF1 0x0451 # CYRILLIC SMALL LETTER IO
0xF2 0x0452 # CYRILLIC SMALL LETTER DJE
0xF3 0x0453 # CYRILLIC SMALL LETTER GJE
0xF4 0x0454 # CYRILLIC SMALL LETTER UKRAINIAN IE
0xF5 0x0455 # CYRILLIC SMALL LETTER DZE
0xF6 0x0456 # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
0xF7 0x0457 # CYRILLIC SMALL LETTER YI
0xF8 0x0458 # CYRILLIC SMALL LETTER JE
0xF9 0x0459 # CYRILLIC SMALL LETTER LJE
0xFA 0x045A # CYRILLIC SMALL LETTER NJE
0xFB 0x045B # CYRILLIC SMALL LETTER TSHE
0xFC 0x045C # CYRILLIC SMALL LETTER KJE
0xFD 0x00A7 # SECTION SIGN
0xFE 0x045E # CYRILLIC SMALL LETTER SHORT U
0xFF 0x045F # CYRILLIC SMALL LETTER DZHE

260
sys/lib/antiword/8859-6.txt Executable file
View File

@ -0,0 +1,260 @@
#
# Name: ISO 8859-6:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-6:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-6 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-6 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
# 0x30..0x39 remapped to the ASCII digits (U+0030..U+0039) instead
# of the Arabic digits (U+0660..U+0669).
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA4 0x00A4 # CURRENCY SIGN
0xAC 0x060C # ARABIC COMMA
0xAD 0x00AD # SOFT HYPHEN
0xBB 0x061B # ARABIC SEMICOLON
0xBF 0x061F # ARABIC QUESTION MARK
0xC1 0x0621 # ARABIC LETTER HAMZA
0xC2 0x0622 # ARABIC LETTER ALEF WITH MADDA ABOVE
0xC3 0x0623 # ARABIC LETTER ALEF WITH HAMZA ABOVE
0xC4 0x0624 # ARABIC LETTER WAW WITH HAMZA ABOVE
0xC5 0x0625 # ARABIC LETTER ALEF WITH HAMZA BELOW
0xC6 0x0626 # ARABIC LETTER YEH WITH HAMZA ABOVE
0xC7 0x0627 # ARABIC LETTER ALEF
0xC8 0x0628 # ARABIC LETTER BEH
0xC9 0x0629 # ARABIC LETTER TEH MARBUTA
0xCA 0x062A # ARABIC LETTER TEH
0xCB 0x062B # ARABIC LETTER THEH
0xCC 0x062C # ARABIC LETTER JEEM
0xCD 0x062D # ARABIC LETTER HAH
0xCE 0x062E # ARABIC LETTER KHAH
0xCF 0x062F # ARABIC LETTER DAL
0xD0 0x0630 # ARABIC LETTER THAL
0xD1 0x0631 # ARABIC LETTER REH
0xD2 0x0632 # ARABIC LETTER ZAIN
0xD3 0x0633 # ARABIC LETTER SEEN
0xD4 0x0634 # ARABIC LETTER SHEEN
0xD5 0x0635 # ARABIC LETTER SAD
0xD6 0x0636 # ARABIC LETTER DAD
0xD7 0x0637 # ARABIC LETTER TAH
0xD8 0x0638 # ARABIC LETTER ZAH
0xD9 0x0639 # ARABIC LETTER AIN
0xDA 0x063A # ARABIC LETTER GHAIN
0xE0 0x0640 # ARABIC TATWEEL
0xE1 0x0641 # ARABIC LETTER FEH
0xE2 0x0642 # ARABIC LETTER QAF
0xE3 0x0643 # ARABIC LETTER KAF
0xE4 0x0644 # ARABIC LETTER LAM
0xE5 0x0645 # ARABIC LETTER MEEM
0xE6 0x0646 # ARABIC LETTER NOON
0xE7 0x0647 # ARABIC LETTER HEH
0xE8 0x0648 # ARABIC LETTER WAW
0xE9 0x0649 # ARABIC LETTER ALEF MAKSURA
0xEA 0x064A # ARABIC LETTER YEH
0xEB 0x064B # ARABIC FATHATAN
0xEC 0x064C # ARABIC DAMMATAN
0xED 0x064D # ARABIC KASRATAN
0xEE 0x064E # ARABIC FATHA
0xEF 0x064F # ARABIC DAMMA
0xF0 0x0650 # ARABIC KASRA
0xF1 0x0651 # ARABIC SHADDA
0xF2 0x0652 # ARABIC SUKUN

302
sys/lib/antiword/8859-7.txt Executable file
View File

@ -0,0 +1,302 @@
#
# Name: ISO 8859-7:1987 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO 8859-7:1987 characters map into Unicode.
#
# ISO 8859-7:1987 is equivalent to ISO-IR-126, ELOT 928,
# and ECMA 118.
#
# Format: Three tab-separated columns
# Column #1 is the ISO 8859-7 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO 8859-7 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
# Remap 0xA1 to U+2018 (instead of 0x02BD) to match text of 8859-7
# Remap 0xA2 to U+2019 (instead of 0x02BC) to match text of 8859-7
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x2018 # LEFT SINGLE QUOTATION MARK
0xA2 0x2019 # RIGHT SINGLE QUOTATION MARK
0xA3 0x00A3 # POUND SIGN
0xA6 0x00A6 # BROKEN BAR
0xA7 0x00A7 # SECTION SIGN
0xA8 0x00A8 # DIAERESIS
0xA9 0x00A9 # COPYRIGHT SIGN
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC # NOT SIGN
0xAD 0x00AD # SOFT HYPHEN
0xAF 0x2015 # HORIZONTAL BAR
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x00B1 # PLUS-MINUS SIGN
0xB2 0x00B2 # SUPERSCRIPT TWO
0xB3 0x00B3 # SUPERSCRIPT THREE
0xB4 0x0384 # GREEK TONOS
0xB5 0x0385 # GREEK DIALYTIKA TONOS
0xB6 0x0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS
0xB7 0x00B7 # MIDDLE DOT
0xB8 0x0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS
0xB9 0x0389 # GREEK CAPITAL LETTER ETA WITH TONOS
0xBA 0x038A # GREEK CAPITAL LETTER IOTA WITH TONOS
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x038C # GREEK CAPITAL LETTER OMICRON WITH TONOS
0xBD 0x00BD # VULGAR FRACTION ONE HALF
0xBE 0x038E # GREEK CAPITAL LETTER UPSILON WITH TONOS
0xBF 0x038F # GREEK CAPITAL LETTER OMEGA WITH TONOS
0xC0 0x0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
0xC1 0x0391 # GREEK CAPITAL LETTER ALPHA
0xC2 0x0392 # GREEK CAPITAL LETTER BETA
0xC3 0x0393 # GREEK CAPITAL LETTER GAMMA
0xC4 0x0394 # GREEK CAPITAL LETTER DELTA
0xC5 0x0395 # GREEK CAPITAL LETTER EPSILON
0xC6 0x0396 # GREEK CAPITAL LETTER ZETA
0xC7 0x0397 # GREEK CAPITAL LETTER ETA
0xC8 0x0398 # GREEK CAPITAL LETTER THETA
0xC9 0x0399 # GREEK CAPITAL LETTER IOTA
0xCA 0x039A # GREEK CAPITAL LETTER KAPPA
0xCB 0x039B # GREEK CAPITAL LETTER LAMDA
0xCC 0x039C # GREEK CAPITAL LETTER MU
0xCD 0x039D # GREEK CAPITAL LETTER NU
0xCE 0x039E # GREEK CAPITAL LETTER XI
0xCF 0x039F # GREEK CAPITAL LETTER OMICRON
0xD0 0x03A0 # GREEK CAPITAL LETTER PI
0xD1 0x03A1 # GREEK CAPITAL LETTER RHO
0xD3 0x03A3 # GREEK CAPITAL LETTER SIGMA
0xD4 0x03A4 # GREEK CAPITAL LETTER TAU
0xD5 0x03A5 # GREEK CAPITAL LETTER UPSILON
0xD6 0x03A6 # GREEK CAPITAL LETTER PHI
0xD7 0x03A7 # GREEK CAPITAL LETTER CHI
0xD8 0x03A8 # GREEK CAPITAL LETTER PSI
0xD9 0x03A9 # GREEK CAPITAL LETTER OMEGA
0xDA 0x03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
0xDB 0x03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
0xDC 0x03AC # GREEK SMALL LETTER ALPHA WITH TONOS
0xDD 0x03AD # GREEK SMALL LETTER EPSILON WITH TONOS
0xDE 0x03AE # GREEK SMALL LETTER ETA WITH TONOS
0xDF 0x03AF # GREEK SMALL LETTER IOTA WITH TONOS
0xE0 0x03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
0xE1 0x03B1 # GREEK SMALL LETTER ALPHA
0xE2 0x03B2 # GREEK SMALL LETTER BETA
0xE3 0x03B3 # GREEK SMALL LETTER GAMMA
0xE4 0x03B4 # GREEK SMALL LETTER DELTA
0xE5 0x03B5 # GREEK SMALL LETTER EPSILON
0xE6 0x03B6 # GREEK SMALL LETTER ZETA
0xE7 0x03B7 # GREEK SMALL LETTER ETA
0xE8 0x03B8 # GREEK SMALL LETTER THETA
0xE9 0x03B9 # GREEK SMALL LETTER IOTA
0xEA 0x03BA # GREEK SMALL LETTER KAPPA
0xEB 0x03BB # GREEK SMALL LETTER LAMDA
0xEC 0x03BC # GREEK SMALL LETTER MU
0xED 0x03BD # GREEK SMALL LETTER NU
0xEE 0x03BE # GREEK SMALL LETTER XI
0xEF 0x03BF # GREEK SMALL LETTER OMICRON
0xF0 0x03C0 # GREEK SMALL LETTER PI
0xF1 0x03C1 # GREEK SMALL LETTER RHO
0xF2 0x03C2 # GREEK SMALL LETTER FINAL SIGMA
0xF3 0x03C3 # GREEK SMALL LETTER SIGMA
0xF4 0x03C4 # GREEK SMALL LETTER TAU
0xF5 0x03C5 # GREEK SMALL LETTER UPSILON
0xF6 0x03C6 # GREEK SMALL LETTER PHI
0xF7 0x03C7 # GREEK SMALL LETTER CHI
0xF8 0x03C8 # GREEK SMALL LETTER PSI
0xF9 0x03C9 # GREEK SMALL LETTER OMEGA
0xFA 0x03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA
0xFB 0x03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
0xFC 0x03CC # GREEK SMALL LETTER OMICRON WITH TONOS
0xFD 0x03CD # GREEK SMALL LETTER UPSILON WITH TONOS
0xFE 0x03CE # GREEK SMALL LETTER OMEGA WITH TONOS

270
sys/lib/antiword/8859-8.txt Executable file
View File

@ -0,0 +1,270 @@
#
# Name: ISO/IEC 8859-8:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.1
# Table format: Format A
# Date: 2000-Jan-03
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-8:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-8 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-8 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
# 1.1 version updates to the published 8859-8:1999, correcting
# the mapping of 0xAF and adding mappings for LRM and RLM.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA2 0x00A2 # CENT SIGN
0xA3 0x00A3 # POUND SIGN
0xA4 0x00A4 # CURRENCY SIGN
0xA5 0x00A5 # YEN SIGN
0xA6 0x00A6 # BROKEN BAR
0xA7 0x00A7 # SECTION SIGN
0xA8 0x00A8 # DIAERESIS
0xA9 0x00A9 # COPYRIGHT SIGN
0xAA 0x00D7 # MULTIPLICATION SIGN
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC # NOT SIGN
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x00AE # REGISTERED SIGN
0xAF 0x00AF # MACRON
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x00B1 # PLUS-MINUS SIGN
0xB2 0x00B2 # SUPERSCRIPT TWO
0xB3 0x00B3 # SUPERSCRIPT THREE
0xB4 0x00B4 # ACUTE ACCENT
0xB5 0x00B5 # MICRO SIGN
0xB6 0x00B6 # PILCROW SIGN
0xB7 0x00B7 # MIDDLE DOT
0xB8 0x00B8 # CEDILLA
0xB9 0x00B9 # SUPERSCRIPT ONE
0xBA 0x00F7 # DIVISION SIGN
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
0xBD 0x00BD # VULGAR FRACTION ONE HALF
0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
0xDF 0x2017 # DOUBLE LOW LINE
0xE0 0x05D0 # HEBREW LETTER ALEF
0xE1 0x05D1 # HEBREW LETTER BET
0xE2 0x05D2 # HEBREW LETTER GIMEL
0xE3 0x05D3 # HEBREW LETTER DALET
0xE4 0x05D4 # HEBREW LETTER HE
0xE5 0x05D5 # HEBREW LETTER VAV
0xE6 0x05D6 # HEBREW LETTER ZAYIN
0xE7 0x05D7 # HEBREW LETTER HET
0xE8 0x05D8 # HEBREW LETTER TET
0xE9 0x05D9 # HEBREW LETTER YOD
0xEA 0x05DA # HEBREW LETTER FINAL KAF
0xEB 0x05DB # HEBREW LETTER KAF
0xEC 0x05DC # HEBREW LETTER LAMED
0xED 0x05DD # HEBREW LETTER FINAL MEM
0xEE 0x05DE # HEBREW LETTER MEM
0xEF 0x05DF # HEBREW LETTER FINAL NUN
0xF0 0x05E0 # HEBREW LETTER NUN
0xF1 0x05E1 # HEBREW LETTER SAMEKH
0xF2 0x05E2 # HEBREW LETTER AYIN
0xF3 0x05E3 # HEBREW LETTER FINAL PE
0xF4 0x05E4 # HEBREW LETTER PE
0xF5 0x05E5 # HEBREW LETTER FINAL TSADI
0xF6 0x05E6 # HEBREW LETTER TSADI
0xF7 0x05E7 # HEBREW LETTER QOF
0xF8 0x05E8 # HEBREW LETTER RESH
0xF9 0x05E9 # HEBREW LETTER SHIN
0xFA 0x05EA # HEBREW LETTER TAV
0xFD 0x200E # LEFT-TO-RIGHT MARK
0xFE 0x200F # RIGHT-TO-LEFT MARK

307
sys/lib/antiword/8859-9.txt Executable file
View File

@ -0,0 +1,307 @@
#
# Name: ISO/IEC 8859-9:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on magnetic media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-9:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-9 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-9 order.
#
# ISO/IEC 8859-9 is also equivalent to ISO-IR-148.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x00A1 # INVERTED EXCLAMATION MARK
0xA2 0x00A2 # CENT SIGN
0xA3 0x00A3 # POUND SIGN
0xA4 0x00A4 # CURRENCY SIGN
0xA5 0x00A5 # YEN SIGN
0xA6 0x00A6 # BROKEN BAR
0xA7 0x00A7 # SECTION SIGN
0xA8 0x00A8 # DIAERESIS
0xA9 0x00A9 # COPYRIGHT SIGN
0xAA 0x00AA # FEMININE ORDINAL INDICATOR
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC # NOT SIGN
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x00AE # REGISTERED SIGN
0xAF 0x00AF # MACRON
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x00B1 # PLUS-MINUS SIGN
0xB2 0x00B2 # SUPERSCRIPT TWO
0xB3 0x00B3 # SUPERSCRIPT THREE
0xB4 0x00B4 # ACUTE ACCENT
0xB5 0x00B5 # MICRO SIGN
0xB6 0x00B6 # PILCROW SIGN
0xB7 0x00B7 # MIDDLE DOT
0xB8 0x00B8 # CEDILLA
0xB9 0x00B9 # SUPERSCRIPT ONE
0xBA 0x00BA # MASCULINE ORDINAL INDICATOR
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
0xBD 0x00BD # VULGAR FRACTION ONE HALF
0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
0xBF 0x00BF # INVERTED QUESTION MARK
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
0xD0 0x011E # LATIN CAPITAL LETTER G WITH BREVE
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 # MULTIPLICATION SIGN
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE
0xDE 0x015E # LATIN CAPITAL LETTER S WITH CEDILLA
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x00E6 # LATIN SMALL LETTER AE
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
0xF0 0x011F # LATIN SMALL LETTER G WITH BREVE
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 # DIVISION SIGN
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x0131 # LATIN SMALL LETTER DOTLESS I
0xFE 0x015F # LATIN SMALL LETTER S WITH CEDILLA
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS

81
sys/lib/antiword/Default Executable file
View File

@ -0,0 +1,81 @@
# Default fontnames translation table
# uses only fonts present in the RISC OS 3 ROMs
#
# MS-Word fontname, Italic, Bold, Acorn fontname, Special
Arial, 0, 0, Homerton.Medium, 0
Arial, 0, 1, Homerton.Bold, 0
Arial, 1, 0, Homerton.Medium.Oblique,0
Arial, 1, 1, Homerton.Bold.Oblique, 0
Arial Black, 0, 0, Homerton.Medium, 0
Arial Black, 0, 1, Homerton.Bold, 0
Arial Black, 1, 0, Homerton.Medium.Oblique,0
Arial Black, 1, 1, Homerton.Bold.Oblique, 0
Arial CE, 0, 0, Homerton.Medium, 0
Arial CE, 0, 1, Homerton.Bold, 0
Arial CE, 1, 0, Homerton.Medium.Oblique,0
Arial CE, 1, 1, Homerton.Bold.Oblique, 0
Arial Narrow, 0, 0, Homerton.Medium, 0
Arial Narrow, 0, 1, Homerton.Bold, 0
Arial Narrow, 1, 0, Homerton.Medium.Oblique,0
Arial Narrow, 1, 1, Homerton.Bold.Oblique, 0
Comic Sans MS, 0, 0, Homerton.Medium, 0
Comic Sans MS, 0, 1, Homerton.Bold, 0
Comic Sans MS, 1, 0, Homerton.Medium.Oblique,0
Comic Sans MS, 1, 1, Homerton.Bold.Oblique, 0
Courier, 0, 0, Corpus.Medium, 0
Courier, 0, 1, Corpus.Bold, 0
Courier, 1, 0, Corpus.Medium.Oblique, 0
Courier, 1, 1, Corpus.Bold.Oblique, 0
Courier New, 0, 0, Corpus.Medium, 0
Courier New, 0, 1, Corpus.Bold, 0
Courier New, 1, 0, Corpus.Medium.Oblique, 0
Courier New, 1, 1, Corpus.Bold.Oblique, 0
Fixedsys, 0, 0, Corpus.Medium, 0
Fixedsys, 0, 1, Corpus.Bold, 0
Fixedsys, 1, 0, Corpus.Medium.Oblique, 0
Fixedsys, 1, 1, Corpus.Bold.Oblique, 0
Helvetica, 0, 0, Homerton.Medium, 0
Helvetica, 0, 1, Homerton.Bold, 0
Helvetica, 1, 0, Homerton.Medium.Oblique,0
Helvetica, 1, 1, Homerton.Bold.Oblique, 0
Helvetica-Narrow, 0, 0, Homerton.Medium, 0
Helvetica-Narrow, 0, 1, Homerton.Bold, 0
Helvetica-Narrow, 1, 0, Homerton.Medium.Oblique,0
Helvetica-Narrow, 1, 1, Homerton.Bold.Oblique, 0
Lucida Console, 0, 0, Corpus.Medium, 0
Lucida Console, 0, 1, Corpus.Bold, 0
Lucida Console, 1, 0, Corpus.Medium.Oblique, 0
Lucida Console, 1, 1, Corpus.Bold.Oblique, 0
Monotype.com, 0, 0, Corpus.Medium, 0
Monotype.com, 0, 1, Corpus.Bold, 0
Monotype.com, 1, 0, Corpus.Medium.Oblique, 0
Monotype.com, 1, 1, Corpus.Bold.Oblique, 0
MS Sans Serif, 0, 0, Homerton.Medium, 0
MS Sans Serif, 0, 1, Homerton.Bold, 0
MS Sans Serif, 1, 0, Homerton.Medium.Oblique,0
MS Sans Serif, 1, 1, Homerton.Bold.Oblique, 0
Swiss, 0, 0, Homerton.Medium, 0
Swiss, 0, 1, Homerton.Bold, 0
Swiss, 1, 0, Homerton.Medium.Oblique,0
Swiss, 1, 1, Homerton.Bold.Oblique, 0
Tahoma, 0, 0, Homerton.Medium, 0
Tahoma, 0, 1, Homerton.Bold, 0
Tahoma, 1, 0, Homerton.Medium.Oblique,0
Tahoma, 1, 1, Homerton.Bold.Oblique, 0
Trebuchet MS, 0, 0, Homerton.Medium, 0
Trebuchet MS, 0, 1, Homerton.Bold, 0
Trebuchet MS, 1, 0, Homerton.Medium.Oblique,0
Trebuchet MS, 1, 1, Homerton.Bold.Oblique, 0
Verdana, 0, 0, Homerton.Medium, 0
Verdana, 0, 1, Homerton.Bold, 0
Verdana, 1, 0, Homerton.Medium.Oblique,0
Verdana, 1, 1, Homerton.Bold.Oblique, 0
Univers, 0, 0, Homerton.Medium, 0
Univers, 0, 1, Homerton.Bold, 0
Univers, 1, 0, Homerton.Medium.Oblique,0
Univers, 1, 1, Homerton.Bold.Oblique, 0
# All the other fonts
*, 0, 0, Trinity.Medium, 0
*, 0, 1, Trinity.Bold, 0
*, 1, 0, Trinity.Medium.Italic, 0
*, 1, 1, Trinity.Bold.Italic, 0

80
sys/lib/antiword/Example Executable file
View File

@ -0,0 +1,80 @@
# An example of a fontnames translation table
#
# MS-Word fontname, Italic, Bold, Acorn fontname, Special
Arial, 0, 0, Homerton.Medium, 0
Arial, 0, 1, Homerton.Bold, 0
Arial, 1, 0, Homerton.Medium.Oblique,0
Arial, 1, 1, Homerton.Bold.Oblique, 0
Arial Black, 0, 0, Homerton.Medium, 0
Arial Black, 0, 1, Homerton.Bold, 0
Arial Black, 1, 0, Homerton.Medium.Oblique,0
Arial Black, 1, 1, Homerton.Bold.Oblique, 0
AvantGarde, 0, 0, Clare.Medium, 0
AvantGarde, 0, 1, Clare.Demi, 0
AvantGarde, 1, 0, Clare.Medium.Oblique, 0
AvantGarde, 1, 1, Clare.Demi.Oblique, 0
Bookman, 0, 0, Robinson.Light, 0
Bookman, 0, 1, Robinson.Demi, 0
Bookman, 1, 0, Robinson.Light.Italic, 0
Bookman, 1, 1, Robinson.Demi.Italic, 0
Bookman Old Style, 0, 0, Robinson.Light, 0
Bookman Old Style, 0, 1, Robinson.Demi, 0
Bookman Old Style, 1, 0, Robinson.Light.Italic, 0
Bookman Old Style, 1, 1, Robinson.Demi.Italic, 0
Courier, 0, 0, Corpus.Medium, 0
Courier, 0, 1, Corpus.Bold, 0
Courier, 1, 0, Corpus.Medium.Oblique, 0
Courier, 1, 1, Corpus.Bold.Oblique, 0
Courier New, 0, 0, Corpus.Medium, 0
Courier New, 0, 1, Corpus.Bold, 0
Courier New, 1, 0, Corpus.Medium.Oblique, 0
Courier New, 1, 1, Corpus.Bold.Oblique, 0
Fixedsys, 0, 0, Corpus.Medium, 0
Fixedsys, 0, 1, Corpus.Bold, 0
Fixedsys, 1, 0, Corpus.Medium.Oblique, 0
Fixedsys, 1, 1, Corpus.Bold.Oblique, 0
Helvetica, 0, 0, Homerton.Medium, 0
Helvetica, 0, 1, Homerton.Bold, 0
Helvetica, 1, 0, Homerton.Medium.Oblique,0
Helvetica, 1, 1, Homerton.Bold.Oblique, 0
Lucida Console, 0, 0, Corpus.Medium, 0
Lucida Console, 0, 1, Corpus.Bold, 0
Lucida Console, 1, 0, Corpus.Medium.Oblique, 0
Lucida Console, 1, 1, Corpus.Bold.Oblique, 0
Palatino, 0, 0, Pembroke.Medium, 0
Palatino, 0, 1, Pembroke.Bold, 0
Palatino, 1, 0, Pembroke.Medium.Italic, 0
Palatino, 1, 1, Pembroke.Bold.Italic, 0
Swiss, 0, 0, Homerton.Medium, 0
Swiss, 0, 1, Homerton.Bold, 0
Swiss, 1, 0, Homerton.Medium.Oblique,0
Swiss, 1, 1, Homerton.Bold.Oblique, 0
Symbol, 0, 0, Sidney, 1
Symbol, 0, 1, Sidney, 1
Symbol, 1, 0, Sidney, 1
Symbol, 1, 1, Sidney, 1
Times, 0, 0, Trinity.Medium, 0
Times, 0, 1, Trinity.Bold, 0
Times, 1, 0, Trinity.Medium.Italic, 0
Times, 1, 1, Trinity.Bold.Italic, 0
Times New Roman, 0, 0, Trinity.Medium, 0
Times New Roman, 0, 1, Trinity.Bold, 0
Times New Roman, 1, 0, Trinity.Medium.Italic, 0
Times New Roman, 1, 1, Trinity.Bold.Italic, 0
Times Roman, 0, 0, Trinity.Medium, 0
Times Roman, 0, 1, Trinity.Bold, 0
Times Roman, 1, 0, Trinity.Medium.Italic, 0
Times Roman, 1, 1, Trinity.Bold.Italic, 0
Univers, 0, 0, Homerton.Medium, 0
Univers, 0, 1, Homerton.Bold, 0
Univers, 1, 0, Homerton.Medium.Oblique,0
Univers, 1, 1, Homerton.Bold.Oblique, 0
ZapfDingbats, 0, 0, Selwyn, 2
ZapfDingbats, 0, 1, Selwyn, 2
ZapfDingbats, 1, 0, Selwyn, 2
ZapfDingbats, 1, 1, Selwyn, 2
# All the other fonts
*, 0, 0, Trinity.Medium, 0
*, 0, 1, Trinity.Bold, 0
*, 1, 0, Trinity.Medium.Italic, 0
*, 1, 1, Trinity.Bold.Italic, 0

364
sys/lib/antiword/MacRoman.txt Executable file
View File

@ -0,0 +1,364 @@
#=======================================================================
# FTP file name: ROMAN.TXT
#
# Contents: Map (external version) from Mac OS Roman
# character set to Unicode 2.1
#
# Copyright: (c) 1994-1999 by Apple Computer, Inc., all rights
# reserved.
#
# Contact: charsets@apple.com
#
# Changes:
#
# b03 1999-Sep-22 Update contact e-mail address. Matches
# internal utom<b4>, ufrm<b3>, and Text
# Encoding Converter version 1.5.
# b02 1998-Aug-18 Encoding changed for Mac OS 8.5; change
# mapping of 0xDB from CURRENCY SIGN to
# EURO SIGN. Matches internal utom<b3>,
# ufrm<b3>.
# n08 1998-Feb-05 Minor update to header comments
# n06 1997-Dec-14 Add warning about future changes to 0xDB
# from CURRENCY SIGN to EURO SIGN. Clarify
# some header information
# n04 1997-Dec-01 Update to match internal utom<n3>, ufrm<n22>:
# Change standard mapping for 0xBD from U+2126
# to its canonical decomposition, U+03A9.
# n03 1995-Apr-15 First version (after fixing some typos).
# Matches internal ufrm<n9>.
#
# Standard header:
# ----------------
#
# Apple, the Apple logo, and Macintosh are trademarks of Apple
# Computer, Inc., registered in the United States and other countries.
# Unicode is a trademark of Unicode Inc. For the sake of brevity,
# throughout this document, "Macintosh" can be used to refer to
# Macintosh computers and "Unicode" can be used to refer to the
# Unicode standard.
#
# Apple makes no warranty or representation, either express or
# implied, with respect to these tables, their quality, accuracy, or
# fitness for a particular purpose. In no event will Apple be liable
# for direct, indirect, special, incidental, or consequential damages
# resulting from any defect or inaccuracy in this document or the
# accompanying tables.
#
# These mapping tables and character lists are subject to change.
# The latest tables should be available from the following:
#
# <ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/APPLE/>
# <ftp://dev.apple.com/devworld/Technical_Documentation/Misc._Standards/>
#
# For general information about Mac OS encodings and these mapping
# tables, see the file "README.TXT".
#
# Format:
# -------
#
# Three tab-separated columns;
# '#' begins a comment which continues to the end of the line.
# Column #1 is the Mac OS Roman code (in hex as 0xNN)
# Column #2 is the corresponding Unicode (in hex as 0xNNNN)
# Column #3 is a comment containing the Unicode name
#
# The entries are in Mac OS Roman code order.
#
# One of these mappings requires the use of a corporate character.
# See the file "CORPCHAR.TXT" and notes below.
#
# Control character mappings are not shown in this table, following
# the conventions of the standard UTC mapping tables. However, the
# Mac OS Roman character set uses the standard control characters at
# 0x00-0x1F and 0x7F.
#
# Notes on Mac OS Roman:
# ----------------------
#
# This character set is used for at least the following Mac OS
# localizations: U.S., British, Canadian French, French, Swiss
# French, German, Swiss German, Italian, Swiss Italian, Dutch,
# Swedish, Norwegian, Danish, Finnish, Spanish, Catalan,
# Portuguese, Brazilian, and the default International system.
#
# Variants of Mac OS Roman are used for Croatian, Icelandic,
# Turkish, Romanian, and other encodings. Separate mapping tables
# are available for these encodings.
#
# Before Mac OS 8.5, code point 0xDB was CURRENCY SIGN, and was
# mapped to U+00A4. In Mac OS 8.5 and later versions, code point
# 0xDB is changed to EURO SIGN and maps to U+20AC; the standard
# Apple fonts are updated for Mac OS 8.5 to reflect this. There is
# a "currency sign" variant of the Mac OS Roman encoding that still
# maps 0xDB to U+00A4; this can be used for older fonts.
# Note: U+20AC is new with Unicode 2.1; for earlier Unicode
# versions, Mac OS Roman 0xDB may be mapped to private-use character
# U+F8A0.
#
# Before Mac OS 8.5, the ROM bitmap versions of the fonts Chicago,
# New York, Geneva, and Monaco did not implement the full Mac OS
# Roman character set; they only supported character codes up to
# 0xD8. The TrueType versions of these fonts have always implemented
# the full character set, as with the bitmap and TrueType versions
# of the other standard Roman fonts.
#
# In all Mac OS encodings, fonts such as Chicago which are used
# as "system" fonts (for menus, dialogs, etc.) have four glyphs
# at code points 0x11-0x14 for transient use by the Menu Manager.
# These glyphs are not intended as characters for use in normal
# text, and the associated code points are not generally
# interpreted as associated with these glyphs; they are usually
# interpreted (if at all) as the control codes DC1-DC4.
#
# Unicode mapping issues and notes:
# ---------------------------------
#
# The following corporate zone Unicode character is used in this
# mapping:
#
# 0xF8FF Apple logo
#
# NOTE: The graphic image associated with the Apple logo character
# is not authorized for use without permission of Apple, and
# unauthorized use might constitute trademark infringement.
#
# Details of mapping changes in each version:
# -------------------------------------------
#
# Changes from version n08 to version b02:
#
# - Encoding changed for Mac OS 8.5; change mapping of 0xDB from
# CURRENCY SIGN (U+00A4) to EURO SIGN (U+20AC).
#
# Changes from version n03 to version n04:
#
# - Change mapping of 0xBD from U+2126 to its canonical
# decomposition, U+03A9.
#
##################
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
#
0x80 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0x81 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
0x82 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
0x83 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0x84 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
0x85 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0x86 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0x87 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0x88 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
0x89 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0x8A 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0x8B 0x00E3 # LATIN SMALL LETTER A WITH TILDE
0x8C 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
0x8D 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
0x8E 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0x8F 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
0x90 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
0x91 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0x92 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0x93 0x00EC # LATIN SMALL LETTER I WITH GRAVE
0x94 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0x95 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
0x96 0x00F1 # LATIN SMALL LETTER N WITH TILDE
0x97 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0x98 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
0x99 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0x9A 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0x9B 0x00F5 # LATIN SMALL LETTER O WITH TILDE
0x9C 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0x9D 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
0x9E 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0x9F 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xA0 0x2020 # DAGGER
0xA1 0x00B0 # DEGREE SIGN
0xA2 0x00A2 # CENT SIGN
0xA3 0x00A3 # POUND SIGN
0xA4 0x00A7 # SECTION SIGN
0xA5 0x2022 # BULLET
0xA6 0x00B6 # PILCROW SIGN
0xA7 0x00DF # LATIN SMALL LETTER SHARP S
0xA8 0x00AE # REGISTERED SIGN
0xA9 0x00A9 # COPYRIGHT SIGN
0xAA 0x2122 # TRADE MARK SIGN
0xAB 0x00B4 # ACUTE ACCENT
0xAC 0x00A8 # DIAERESIS
0xAD 0x2260 # NOT EQUAL TO
0xAE 0x00C6 # LATIN CAPITAL LETTER AE
0xAF 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
0xB0 0x221E # INFINITY
0xB1 0x00B1 # PLUS-MINUS SIGN
0xB2 0x2264 # LESS-THAN OR EQUAL TO
0xB3 0x2265 # GREATER-THAN OR EQUAL TO
0xB4 0x00A5 # YEN SIGN
0xB5 0x00B5 # MICRO SIGN
0xB6 0x2202 # PARTIAL DIFFERENTIAL
0xB7 0x2211 # N-ARY SUMMATION
0xB8 0x220F # N-ARY PRODUCT
0xB9 0x03C0 # GREEK SMALL LETTER PI
0xBA 0x222B # INTEGRAL
0xBB 0x00AA # FEMININE ORDINAL INDICATOR
0xBC 0x00BA # MASCULINE ORDINAL INDICATOR
0xBD 0x03A9 # GREEK CAPITAL LETTER OMEGA
0xBE 0x00E6 # LATIN SMALL LETTER AE
0xBF 0x00F8 # LATIN SMALL LETTER O WITH STROKE
0xC0 0x00BF # INVERTED QUESTION MARK
0xC1 0x00A1 # INVERTED EXCLAMATION MARK
0xC2 0x00AC # NOT SIGN
0xC3 0x221A # SQUARE ROOT
0xC4 0x0192 # LATIN SMALL LETTER F WITH HOOK
0xC5 0x2248 # ALMOST EQUAL TO
0xC6 0x2206 # INCREMENT
0xC7 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xC8 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xC9 0x2026 # HORIZONTAL ELLIPSIS
0xCA 0x00A0 # NO-BREAK SPACE
0xCB 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
0xCC 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
0xCD 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
0xCE 0x0152 # LATIN CAPITAL LIGATURE OE
0xCF 0x0153 # LATIN SMALL LIGATURE OE
0xD0 0x2013 # EN DASH
0xD1 0x2014 # EM DASH
0xD2 0x201C # LEFT DOUBLE QUOTATION MARK
0xD3 0x201D # RIGHT DOUBLE QUOTATION MARK
0xD4 0x2018 # LEFT SINGLE QUOTATION MARK
0xD5 0x2019 # RIGHT SINGLE QUOTATION MARK
0xD6 0x00F7 # DIVISION SIGN
0xD7 0x25CA # LOZENGE
0xD8 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
0xD9 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
0xDA 0x2044 # FRACTION SLASH
0xDB 0x20AC # EURO SIGN
0xDC 0x2039 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
0xDD 0x203A # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
0xDE 0xFB01 # LATIN SMALL LIGATURE FI
0xDF 0xFB02 # LATIN SMALL LIGATURE FL
0xE0 0x2021 # DOUBLE DAGGER
0xE1 0x00B7 # MIDDLE DOT
0xE2 0x201A # SINGLE LOW-9 QUOTATION MARK
0xE3 0x201E # DOUBLE LOW-9 QUOTATION MARK
0xE4 0x2030 # PER MILLE SIGN
0xE5 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xE6 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xE7 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xE8 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xE9 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
0xEA 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xEB 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xEC 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
0xED 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
0xEE 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xEF 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xF0 0xF8FF # Apple logo
0xF1 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
0xF2 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xF3 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xF4 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
0xF5 0x0131 # LATIN SMALL LETTER DOTLESS I
0xF6 0x02C6 # MODIFIER LETTER CIRCUMFLEX ACCENT
0xF7 0x02DC # SMALL TILDE
0xF8 0x00AF # MACRON
0xF9 0x02D8 # BREVE
0xFA 0x02D9 # DOT ABOVE
0xFB 0x02DA # RING ABOVE
0xFC 0x00B8 # CEDILLA
0xFD 0x02DD # DOUBLE ACUTE ACCENT
0xFE 0x02DB # OGONEK
0xFF 0x02C7 # CARON

3
sys/lib/antiword/UTF-8.txt Executable file
View File

@ -0,0 +1,3 @@
# UTF-8 to Unicode
# This file is a dummy.
# The conversion is done algorithmicly, not by a table look-up.

306
sys/lib/antiword/Unicode01 Executable file
View File

@ -0,0 +1,306 @@
#
# Name: ISO/IEC 8859-1:1998 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-1:1998 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-1 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-1 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
#RISC OS
# This file was changed to match RISC OS specific characters (0x80 - 0x9f)
#RISC OS
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0174 # CAPITAL W CIRCUMFLEX ACCENT
0x82 0x0175 # SMALL W CIRCUMFLEX ACCENT
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0176 # CAPITAL Y CIRCUMFLEX ACCENT
0x86 0x0177 # SMALL Y CIRCUMFLEX ACCENT
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x2026 # ELLIPSIS
0x8D 0x2122 # TRADEMARK
0x8E 0x2030 # PER MILLE SIGN
0x8F 0x2022 # BULLET
0x90 0x2018 # LEFT SINGLE QUOTE
0x91 0x2019 # RIGHT SINGLE QUOTE
0x92 0x2039 # LEFT SINGLE QUOTATION MARK
0x93 0x203A # RIGHT SINGLE QUOTATION MARK
0x94 0x201C # OPENING DOUBLE QUOTE
0x95 0x201D # CLOSING DOUBLE QUOTE
0x96 0x201E # LOW DOUBLE QUOTE
0x97 0x2013 # EN DASH
0x98 0x2014 # EM_DASH
0x99 0x2011 # NON BREAKING HYPHEN
0x9A 0x0152 # LATIN CAPITAL LIGATURE OE
0x9B 0x0153 # LATIN SMALL LIGATURE OE
0x9C 0x2020 # DAGGER
0x9D 0x2021 # DOUBLE DAGGER
0x9E 0xFB01 # Fi
0x9F 0xFB02 # Fl
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x00A1 # INVERTED EXCLAMATION MARK
0xA2 0x00A2 # CENT SIGN
0xA3 0x00A3 # POUND SIGN
0xA4 0x00A4 # CURRENCY SIGN
0xA5 0x00A5 # YEN SIGN
0xA6 0x00A6 # BROKEN BAR
0xA7 0x00A7 # SECTION SIGN
0xA8 0x00A8 # DIAERESIS
0xA9 0x00A9 # COPYRIGHT SIGN
0xAA 0x00AA # FEMININE ORDINAL INDICATOR
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC # NOT SIGN
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x00AE # REGISTERED SIGN
0xAF 0x00AF # MACRON
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x00B1 # PLUS-MINUS SIGN
0xB2 0x00B2 # SUPERSCRIPT TWO
0xB3 0x00B3 # SUPERSCRIPT THREE
0xB4 0x00B4 # ACUTE ACCENT
0xB5 0x00B5 # MICRO SIGN
0xB6 0x00B6 # PILCROW SIGN
0xB7 0x00B7 # MIDDLE DOT
0xB8 0x00B8 # CEDILLA
0xB9 0x00B9 # SUPERSCRIPT ONE
0xBA 0x00BA # MASCULINE ORDINAL INDICATOR
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
0xBD 0x00BD # VULGAR FRACTION ONE HALF
0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
0xBF 0x00BF # INVERTED QUESTION MARK
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
0xD0 0x00D0 # LATIN CAPITAL LETTER ETH (Icelandic)
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 # MULTIPLICATION SIGN
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
0xDE 0x00DE # LATIN CAPITAL LETTER THORN (Icelandic)
0xDF 0x00DF # LATIN SMALL LETTER SHARP S (German)
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x00E6 # LATIN SMALL LETTER AE
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
0xF0 0x00F0 # LATIN SMALL LETTER ETH (Icelandic)
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 # DIVISION SIGN
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x00FE # LATIN SMALL LETTER THORN (Icelandic)
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS

305
sys/lib/antiword/Unicode15 Executable file
View File

@ -0,0 +1,305 @@
#
# Name: ISO/IEC 8859-15:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Markus Kuhn <mkuhn@acm.org>
# Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-15:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-15 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-15 order.
#
# Version history
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
#RISC OS
# This file was changed to match RISC OS specific characters (0x80 - 0x9f)
#RISC OS
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0174 # CAPITAL W CIRCUMFLEX ACCENT
0x82 0x0175 # SMALL W CIRCUMFLEX ACCENT
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0176 # CAPITAL Y CIRCUMFLEX ACCENT
0x86 0x0177 # SMALL Y CIRCUMFLEX ACCENT
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x2026 # ELLIPSIS
0x8D 0x2122 # TRADEMARK
0x8E 0x2030 # PER MILLE SIGN
0x8F 0x2022 # BULLET
0x90 0x2018 # LEFT SINGLE QUOTE
0x91 0x2019 # RIGHT SINGLE QUOTE
0x92 0x2039 # LEFT SINGLE QUOTATION MARK
0x93 0x203A # RIGHT SINGLE QUOTATION MARK
0x94 0x201C # OPENING DOUBLE QUOTE
0x95 0x201D # CLOSING DOUBLE QUOTE
0x96 0x201E # LOW DOUBLE QUOTE
0x97 0x2013 # EN DASH
0x98 0x2014 # EM_DASH
0x99 0x2011 # NON BREAKING HYPHEN
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x2020 # DAGGER
0x9D 0x2021 # DOUBLE DAGGER
0x9E 0xFB01 # Fi
0x9F 0xFB02 # Fl
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x00A1 # INVERTED EXCLAMATION MARK
0xA2 0x00A2 # CENT SIGN
0xA3 0x00A3 # POUND SIGN
0xA4 0x20AC # EURO SIGN
0xA5 0x00A5 # YEN SIGN
0xA6 0x0160 # LATIN CAPITAL LETTER S WITH CARON
0xA7 0x00A7 # SECTION SIGN
0xA8 0x0161 # LATIN SMALL LETTER S WITH CARON
0xA9 0x00A9 # COPYRIGHT SIGN
0xAA 0x00AA # FEMININE ORDINAL INDICATOR
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC # NOT SIGN
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x00AE # REGISTERED SIGN
0xAF 0x00AF # MACRON
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x00B1 # PLUS-MINUS SIGN
0xB2 0x00B2 # SUPERSCRIPT TWO
0xB3 0x00B3 # SUPERSCRIPT THREE
0xB4 0x017D # LATIN CAPITAL LETTER Z WITH CARON
0xB5 0x00B5 # MICRO SIGN
0xB6 0x00B6 # PILCROW SIGN
0xB7 0x00B7 # MIDDLE DOT
0xB8 0x017E # LATIN SMALL LETTER Z WITH CARON
0xB9 0x00B9 # SUPERSCRIPT ONE
0xBA 0x00BA # MASCULINE ORDINAL INDICATOR
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x0152 # LATIN CAPITAL LIGATURE OE
0xBD 0x0153 # LATIN SMALL LIGATURE OE
0xBE 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
0xBF 0x00BF # INVERTED QUESTION MARK
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
0xD0 0x00D0 # LATIN CAPITAL LETTER ETH
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 # MULTIPLICATION SIGN
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
0xDE 0x00DE # LATIN CAPITAL LETTER THORN
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x00E6 # LATIN SMALL LETTER AE
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
0xF0 0x00F0 # LATIN SMALL LETTER ETH
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 # DIVISION SIGN
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x00FE # LATIN SMALL LETTER THORN
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS

274
sys/lib/antiword/cp1250.txt Executable file
View File

@ -0,0 +1,274 @@
#
# Name: cp1250 to Unicode table
# Unicode version: 2.0
# Table version: 2.01
# Table format: Format A
# Date: 04/15/98
#
# Contact: cpxlate@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1250 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1250 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0A 0x000A #LINE FEED
0x0B 0x000B #VERTICAL TABULATION
0x0C 0x000C #FORM FEED
0x0D 0x000D #CARRIAGE RETURN
0x0E 0x000E #SHIFT OUT
0x0F 0x000F #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1A 0x001A #SUBSTITUTE
0x1B 0x001B #ESCAPE
0x1C 0x001C #FILE SEPARATOR
0x1D 0x001D #GROUP SEPARATOR
0x1E 0x001E #RECORD SEPARATOR
0x1F 0x001F #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2A 0x002A #ASTERISK
0x2B 0x002B #PLUS SIGN
0x2C 0x002C #COMMA
0x2D 0x002D #HYPHEN-MINUS
0x2E 0x002E #FULL STOP
0x2F 0x002F #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3A 0x003A #COLON
0x3B 0x003B #SEMICOLON
0x3C 0x003C #LESS-THAN SIGN
0x3D 0x003D #EQUALS SIGN
0x3E 0x003E #GREATER-THAN SIGN
0x3F 0x003F #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4A 0x004A #LATIN CAPITAL LETTER J
0x4B 0x004B #LATIN CAPITAL LETTER K
0x4C 0x004C #LATIN CAPITAL LETTER L
0x4D 0x004D #LATIN CAPITAL LETTER M
0x4E 0x004E #LATIN CAPITAL LETTER N
0x4F 0x004F #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5A 0x005A #LATIN CAPITAL LETTER Z
0x5B 0x005B #LEFT SQUARE BRACKET
0x5C 0x005C #REVERSE SOLIDUS
0x5D 0x005D #RIGHT SQUARE BRACKET
0x5E 0x005E #CIRCUMFLEX ACCENT
0x5F 0x005F #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6A 0x006A #LATIN SMALL LETTER J
0x6B 0x006B #LATIN SMALL LETTER K
0x6C 0x006C #LATIN SMALL LETTER L
0x6D 0x006D #LATIN SMALL LETTER M
0x6E 0x006E #LATIN SMALL LETTER N
0x6F 0x006F #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7A 0x007A #LATIN SMALL LETTER Z
0x7B 0x007B #LEFT CURLY BRACKET
0x7C 0x007C #VERTICAL LINE
0x7D 0x007D #RIGHT CURLY BRACKET
0x7E 0x007E #TILDE
0x7F 0x007F #DELETE
0x80 0x20AC #EURO SIGN
0x81 #UNDEFINED
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
0x83 #UNDEFINED
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
0x85 0x2026 #HORIZONTAL ELLIPSIS
0x86 0x2020 #DAGGER
0x87 0x2021 #DOUBLE DAGGER
0x88 #UNDEFINED
0x89 0x2030 #PER MILLE SIGN
0x8A 0x0160 #LATIN CAPITAL LETTER S WITH CARON
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
0x8C 0x015A #LATIN CAPITAL LETTER S WITH ACUTE
0x8D 0x0164 #LATIN CAPITAL LETTER T WITH CARON
0x8E 0x017D #LATIN CAPITAL LETTER Z WITH CARON
0x8F 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
0x90 #UNDEFINED
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
0x95 0x2022 #BULLET
0x96 0x2013 #EN DASH
0x97 0x2014 #EM DASH
0x98 #UNDEFINED
0x99 0x2122 #TRADE MARK SIGN
0x9A 0x0161 #LATIN SMALL LETTER S WITH CARON
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
0x9C 0x015B #LATIN SMALL LETTER S WITH ACUTE
0x9D 0x0165 #LATIN SMALL LETTER T WITH CARON
0x9E 0x017E #LATIN SMALL LETTER Z WITH CARON
0x9F 0x017A #LATIN SMALL LETTER Z WITH ACUTE
0xA0 0x00A0 #NO-BREAK SPACE
0xA1 0x02C7 #CARON
0xA2 0x02D8 #BREVE
0xA3 0x0141 #LATIN CAPITAL LETTER L WITH STROKE
0xA4 0x00A4 #CURRENCY SIGN
0xA5 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
0xA6 0x00A6 #BROKEN BAR
0xA7 0x00A7 #SECTION SIGN
0xA8 0x00A8 #DIAERESIS
0xA9 0x00A9 #COPYRIGHT SIGN
0xAA 0x015E #LATIN CAPITAL LETTER S WITH CEDILLA
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC #NOT SIGN
0xAD 0x00AD #SOFT HYPHEN
0xAE 0x00AE #REGISTERED SIGN
0xAF 0x017B #LATIN CAPITAL LETTER Z WITH DOT ABOVE
0xB0 0x00B0 #DEGREE SIGN
0xB1 0x00B1 #PLUS-MINUS SIGN
0xB2 0x02DB #OGONEK
0xB3 0x0142 #LATIN SMALL LETTER L WITH STROKE
0xB4 0x00B4 #ACUTE ACCENT
0xB5 0x00B5 #MICRO SIGN
0xB6 0x00B6 #PILCROW SIGN
0xB7 0x00B7 #MIDDLE DOT
0xB8 0x00B8 #CEDILLA
0xB9 0x0105 #LATIN SMALL LETTER A WITH OGONEK
0xBA 0x015F #LATIN SMALL LETTER S WITH CEDILLA
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x013D #LATIN CAPITAL LETTER L WITH CARON
0xBD 0x02DD #DOUBLE ACUTE ACCENT
0xBE 0x013E #LATIN SMALL LETTER L WITH CARON
0xBF 0x017C #LATIN SMALL LETTER Z WITH DOT ABOVE
0xC0 0x0154 #LATIN CAPITAL LETTER R WITH ACUTE
0xC1 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x0102 #LATIN CAPITAL LETTER A WITH BREVE
0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x0139 #LATIN CAPITAL LETTER L WITH ACUTE
0xC6 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE
0xC7 0x00C7 #LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x010C #LATIN CAPITAL LETTER C WITH CARON
0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
0xCB 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x011A #LATIN CAPITAL LETTER E WITH CARON
0xCD 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x010E #LATIN CAPITAL LETTER D WITH CARON
0xD0 0x0110 #LATIN CAPITAL LETTER D WITH STROKE
0xD1 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
0xD2 0x0147 #LATIN CAPITAL LETTER N WITH CARON
0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x0150 #LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 #MULTIPLICATION SIGN
0xD8 0x0158 #LATIN CAPITAL LETTER R WITH CARON
0xD9 0x016E #LATIN CAPITAL LETTER U WITH RING ABOVE
0xDA 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x0170 #LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x00DD #LATIN CAPITAL LETTER Y WITH ACUTE
0xDE 0x0162 #LATIN CAPITAL LETTER T WITH CEDILLA
0xDF 0x00DF #LATIN SMALL LETTER SHARP S
0xE0 0x0155 #LATIN SMALL LETTER R WITH ACUTE
0xE1 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x0103 #LATIN SMALL LETTER A WITH BREVE
0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x013A #LATIN SMALL LETTER L WITH ACUTE
0xE6 0x0107 #LATIN SMALL LETTER C WITH ACUTE
0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x010D #LATIN SMALL LETTER C WITH CARON
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
0xEA 0x0119 #LATIN SMALL LETTER E WITH OGONEK
0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x011B #LATIN SMALL LETTER E WITH CARON
0xED 0x00ED #LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x010F #LATIN SMALL LETTER D WITH CARON
0xF0 0x0111 #LATIN SMALL LETTER D WITH STROKE
0xF1 0x0144 #LATIN SMALL LETTER N WITH ACUTE
0xF2 0x0148 #LATIN SMALL LETTER N WITH CARON
0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x0151 #LATIN SMALL LETTER O WITH DOUBLE ACUTE
0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 #DIVISION SIGN
0xF8 0x0159 #LATIN SMALL LETTER R WITH CARON
0xF9 0x016F #LATIN SMALL LETTER U WITH RING ABOVE
0xFA 0x00FA #LATIN SMALL LETTER U WITH ACUTE
0xFB 0x0171 #LATIN SMALL LETTER U WITH DOUBLE ACUTE
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD #LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x0163 #LATIN SMALL LETTER T WITH CEDILLA
0xFF 0x02D9 #DOT ABOVE

274
sys/lib/antiword/cp1251.txt Executable file
View File

@ -0,0 +1,274 @@
#
# Name: cp1251 to Unicode table
# Unicode version: 2.0
# Table version: 2.01
# Table format: Format A
# Date: 04/15/98
#
# Contact: cpxlate@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1251 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1251 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0A 0x000A #LINE FEED
0x0B 0x000B #VERTICAL TABULATION
0x0C 0x000C #FORM FEED
0x0D 0x000D #CARRIAGE RETURN
0x0E 0x000E #SHIFT OUT
0x0F 0x000F #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1A 0x001A #SUBSTITUTE
0x1B 0x001B #ESCAPE
0x1C 0x001C #FILE SEPARATOR
0x1D 0x001D #GROUP SEPARATOR
0x1E 0x001E #RECORD SEPARATOR
0x1F 0x001F #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2A 0x002A #ASTERISK
0x2B 0x002B #PLUS SIGN
0x2C 0x002C #COMMA
0x2D 0x002D #HYPHEN-MINUS
0x2E 0x002E #FULL STOP
0x2F 0x002F #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3A 0x003A #COLON
0x3B 0x003B #SEMICOLON
0x3C 0x003C #LESS-THAN SIGN
0x3D 0x003D #EQUALS SIGN
0x3E 0x003E #GREATER-THAN SIGN
0x3F 0x003F #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4A 0x004A #LATIN CAPITAL LETTER J
0x4B 0x004B #LATIN CAPITAL LETTER K
0x4C 0x004C #LATIN CAPITAL LETTER L
0x4D 0x004D #LATIN CAPITAL LETTER M
0x4E 0x004E #LATIN CAPITAL LETTER N
0x4F 0x004F #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5A 0x005A #LATIN CAPITAL LETTER Z
0x5B 0x005B #LEFT SQUARE BRACKET
0x5C 0x005C #REVERSE SOLIDUS
0x5D 0x005D #RIGHT SQUARE BRACKET
0x5E 0x005E #CIRCUMFLEX ACCENT
0x5F 0x005F #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6A 0x006A #LATIN SMALL LETTER J
0x6B 0x006B #LATIN SMALL LETTER K
0x6C 0x006C #LATIN SMALL LETTER L
0x6D 0x006D #LATIN SMALL LETTER M
0x6E 0x006E #LATIN SMALL LETTER N
0x6F 0x006F #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7A 0x007A #LATIN SMALL LETTER Z
0x7B 0x007B #LEFT CURLY BRACKET
0x7C 0x007C #VERTICAL LINE
0x7D 0x007D #RIGHT CURLY BRACKET
0x7E 0x007E #TILDE
0x7F 0x007F #DELETE
0x80 0x0402 #CYRILLIC CAPITAL LETTER DJE
0x81 0x0403 #CYRILLIC CAPITAL LETTER GJE
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
0x83 0x0453 #CYRILLIC SMALL LETTER GJE
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
0x85 0x2026 #HORIZONTAL ELLIPSIS
0x86 0x2020 #DAGGER
0x87 0x2021 #DOUBLE DAGGER
0x88 0x20AC #EURO SIGN
0x89 0x2030 #PER MILLE SIGN
0x8A 0x0409 #CYRILLIC CAPITAL LETTER LJE
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
0x8C 0x040A #CYRILLIC CAPITAL LETTER NJE
0x8D 0x040C #CYRILLIC CAPITAL LETTER KJE
0x8E 0x040B #CYRILLIC CAPITAL LETTER TSHE
0x8F 0x040F #CYRILLIC CAPITAL LETTER DZHE
0x90 0x0452 #CYRILLIC SMALL LETTER DJE
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
0x95 0x2022 #BULLET
0x96 0x2013 #EN DASH
0x97 0x2014 #EM DASH
0x98 #UNDEFINED
0x99 0x2122 #TRADE MARK SIGN
0x9A 0x0459 #CYRILLIC SMALL LETTER LJE
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
0x9C 0x045A #CYRILLIC SMALL LETTER NJE
0x9D 0x045C #CYRILLIC SMALL LETTER KJE
0x9E 0x045B #CYRILLIC SMALL LETTER TSHE
0x9F 0x045F #CYRILLIC SMALL LETTER DZHE
0xA0 0x00A0 #NO-BREAK SPACE
0xA1 0x040E #CYRILLIC CAPITAL LETTER SHORT U
0xA2 0x045E #CYRILLIC SMALL LETTER SHORT U
0xA3 0x0408 #CYRILLIC CAPITAL LETTER JE
0xA4 0x00A4 #CURRENCY SIGN
0xA5 0x0490 #CYRILLIC CAPITAL LETTER GHE WITH UPTURN
0xA6 0x00A6 #BROKEN BAR
0xA7 0x00A7 #SECTION SIGN
0xA8 0x0401 #CYRILLIC CAPITAL LETTER IO
0xA9 0x00A9 #COPYRIGHT SIGN
0xAA 0x0404 #CYRILLIC CAPITAL LETTER UKRAINIAN IE
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC #NOT SIGN
0xAD 0x00AD #SOFT HYPHEN
0xAE 0x00AE #REGISTERED SIGN
0xAF 0x0407 #CYRILLIC CAPITAL LETTER YI
0xB0 0x00B0 #DEGREE SIGN
0xB1 0x00B1 #PLUS-MINUS SIGN
0xB2 0x0406 #CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
0xB3 0x0456 #CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
0xB4 0x0491 #CYRILLIC SMALL LETTER GHE WITH UPTURN
0xB5 0x00B5 #MICRO SIGN
0xB6 0x00B6 #PILCROW SIGN
0xB7 0x00B7 #MIDDLE DOT
0xB8 0x0451 #CYRILLIC SMALL LETTER IO
0xB9 0x2116 #NUMERO SIGN
0xBA 0x0454 #CYRILLIC SMALL LETTER UKRAINIAN IE
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x0458 #CYRILLIC SMALL LETTER JE
0xBD 0x0405 #CYRILLIC CAPITAL LETTER DZE
0xBE 0x0455 #CYRILLIC SMALL LETTER DZE
0xBF 0x0457 #CYRILLIC SMALL LETTER YI
0xC0 0x0410 #CYRILLIC CAPITAL LETTER A
0xC1 0x0411 #CYRILLIC CAPITAL LETTER BE
0xC2 0x0412 #CYRILLIC CAPITAL LETTER VE
0xC3 0x0413 #CYRILLIC CAPITAL LETTER GHE
0xC4 0x0414 #CYRILLIC CAPITAL LETTER DE
0xC5 0x0415 #CYRILLIC CAPITAL LETTER IE
0xC6 0x0416 #CYRILLIC CAPITAL LETTER ZHE
0xC7 0x0417 #CYRILLIC CAPITAL LETTER ZE
0xC8 0x0418 #CYRILLIC CAPITAL LETTER I
0xC9 0x0419 #CYRILLIC CAPITAL LETTER SHORT I
0xCA 0x041A #CYRILLIC CAPITAL LETTER KA
0xCB 0x041B #CYRILLIC CAPITAL LETTER EL
0xCC 0x041C #CYRILLIC CAPITAL LETTER EM
0xCD 0x041D #CYRILLIC CAPITAL LETTER EN
0xCE 0x041E #CYRILLIC CAPITAL LETTER O
0xCF 0x041F #CYRILLIC CAPITAL LETTER PE
0xD0 0x0420 #CYRILLIC CAPITAL LETTER ER
0xD1 0x0421 #CYRILLIC CAPITAL LETTER ES
0xD2 0x0422 #CYRILLIC CAPITAL LETTER TE
0xD3 0x0423 #CYRILLIC CAPITAL LETTER U
0xD4 0x0424 #CYRILLIC CAPITAL LETTER EF
0xD5 0x0425 #CYRILLIC CAPITAL LETTER HA
0xD6 0x0426 #CYRILLIC CAPITAL LETTER TSE
0xD7 0x0427 #CYRILLIC CAPITAL LETTER CHE
0xD8 0x0428 #CYRILLIC CAPITAL LETTER SHA
0xD9 0x0429 #CYRILLIC CAPITAL LETTER SHCHA
0xDA 0x042A #CYRILLIC CAPITAL LETTER HARD SIGN
0xDB 0x042B #CYRILLIC CAPITAL LETTER YERU
0xDC 0x042C #CYRILLIC CAPITAL LETTER SOFT SIGN
0xDD 0x042D #CYRILLIC CAPITAL LETTER E
0xDE 0x042E #CYRILLIC CAPITAL LETTER YU
0xDF 0x042F #CYRILLIC CAPITAL LETTER YA
0xE0 0x0430 #CYRILLIC SMALL LETTER A
0xE1 0x0431 #CYRILLIC SMALL LETTER BE
0xE2 0x0432 #CYRILLIC SMALL LETTER VE
0xE3 0x0433 #CYRILLIC SMALL LETTER GHE
0xE4 0x0434 #CYRILLIC SMALL LETTER DE
0xE5 0x0435 #CYRILLIC SMALL LETTER IE
0xE6 0x0436 #CYRILLIC SMALL LETTER ZHE
0xE7 0x0437 #CYRILLIC SMALL LETTER ZE
0xE8 0x0438 #CYRILLIC SMALL LETTER I
0xE9 0x0439 #CYRILLIC SMALL LETTER SHORT I
0xEA 0x043A #CYRILLIC SMALL LETTER KA
0xEB 0x043B #CYRILLIC SMALL LETTER EL
0xEC 0x043C #CYRILLIC SMALL LETTER EM
0xED 0x043D #CYRILLIC SMALL LETTER EN
0xEE 0x043E #CYRILLIC SMALL LETTER O
0xEF 0x043F #CYRILLIC SMALL LETTER PE
0xF0 0x0440 #CYRILLIC SMALL LETTER ER
0xF1 0x0441 #CYRILLIC SMALL LETTER ES
0xF2 0x0442 #CYRILLIC SMALL LETTER TE
0xF3 0x0443 #CYRILLIC SMALL LETTER U
0xF4 0x0444 #CYRILLIC SMALL LETTER EF
0xF5 0x0445 #CYRILLIC SMALL LETTER HA
0xF6 0x0446 #CYRILLIC SMALL LETTER TSE
0xF7 0x0447 #CYRILLIC SMALL LETTER CHE
0xF8 0x0448 #CYRILLIC SMALL LETTER SHA
0xF9 0x0449 #CYRILLIC SMALL LETTER SHCHA
0xFA 0x044A #CYRILLIC SMALL LETTER HARD SIGN
0xFB 0x044B #CYRILLIC SMALL LETTER YERU
0xFC 0x044C #CYRILLIC SMALL LETTER SOFT SIGN
0xFD 0x044D #CYRILLIC SMALL LETTER E
0xFE 0x044E #CYRILLIC SMALL LETTER YU
0xFF 0x044F #CYRILLIC SMALL LETTER YA

274
sys/lib/antiword/cp1252.txt Executable file
View File

@ -0,0 +1,274 @@
#
# Name: cp1252 to Unicode table
# Unicode version: 2.0
# Table version: 2.01
# Table format: Format A
# Date: 04/15/98
#
# Contact: cpxlate@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1252 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1252 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0A 0x000A #LINE FEED
0x0B 0x000B #VERTICAL TABULATION
0x0C 0x000C #FORM FEED
0x0D 0x000D #CARRIAGE RETURN
0x0E 0x000E #SHIFT OUT
0x0F 0x000F #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1A 0x001A #SUBSTITUTE
0x1B 0x001B #ESCAPE
0x1C 0x001C #FILE SEPARATOR
0x1D 0x001D #GROUP SEPARATOR
0x1E 0x001E #RECORD SEPARATOR
0x1F 0x001F #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2A 0x002A #ASTERISK
0x2B 0x002B #PLUS SIGN
0x2C 0x002C #COMMA
0x2D 0x002D #HYPHEN-MINUS
0x2E 0x002E #FULL STOP
0x2F 0x002F #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3A 0x003A #COLON
0x3B 0x003B #SEMICOLON
0x3C 0x003C #LESS-THAN SIGN
0x3D 0x003D #EQUALS SIGN
0x3E 0x003E #GREATER-THAN SIGN
0x3F 0x003F #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4A 0x004A #LATIN CAPITAL LETTER J
0x4B 0x004B #LATIN CAPITAL LETTER K
0x4C 0x004C #LATIN CAPITAL LETTER L
0x4D 0x004D #LATIN CAPITAL LETTER M
0x4E 0x004E #LATIN CAPITAL LETTER N
0x4F 0x004F #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5A 0x005A #LATIN CAPITAL LETTER Z
0x5B 0x005B #LEFT SQUARE BRACKET
0x5C 0x005C #REVERSE SOLIDUS
0x5D 0x005D #RIGHT SQUARE BRACKET
0x5E 0x005E #CIRCUMFLEX ACCENT
0x5F 0x005F #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6A 0x006A #LATIN SMALL LETTER J
0x6B 0x006B #LATIN SMALL LETTER K
0x6C 0x006C #LATIN SMALL LETTER L
0x6D 0x006D #LATIN SMALL LETTER M
0x6E 0x006E #LATIN SMALL LETTER N
0x6F 0x006F #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7A 0x007A #LATIN SMALL LETTER Z
0x7B 0x007B #LEFT CURLY BRACKET
0x7C 0x007C #VERTICAL LINE
0x7D 0x007D #RIGHT CURLY BRACKET
0x7E 0x007E #TILDE
0x7F 0x007F #DELETE
0x80 0x20AC #EURO SIGN
0x81 #UNDEFINED
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
0x85 0x2026 #HORIZONTAL ELLIPSIS
0x86 0x2020 #DAGGER
0x87 0x2021 #DOUBLE DAGGER
0x88 0x02C6 #MODIFIER LETTER CIRCUMFLEX ACCENT
0x89 0x2030 #PER MILLE SIGN
0x8A 0x0160 #LATIN CAPITAL LETTER S WITH CARON
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
0x8C 0x0152 #LATIN CAPITAL LIGATURE OE
0x8D #UNDEFINED
0x8E 0x017D #LATIN CAPITAL LETTER Z WITH CARON
0x8F #UNDEFINED
0x90 #UNDEFINED
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
0x95 0x2022 #BULLET
0x96 0x2013 #EN DASH
0x97 0x2014 #EM DASH
0x98 0x02DC #SMALL TILDE
0x99 0x2122 #TRADE MARK SIGN
0x9A 0x0161 #LATIN SMALL LETTER S WITH CARON
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
0x9C 0x0153 #LATIN SMALL LIGATURE OE
0x9D #UNDEFINED
0x9E 0x017E #LATIN SMALL LETTER Z WITH CARON
0x9F 0x0178 #LATIN CAPITAL LETTER Y WITH DIAERESIS
0xA0 0x00A0 #NO-BREAK SPACE
0xA1 0x00A1 #INVERTED EXCLAMATION MARK
0xA2 0x00A2 #CENT SIGN
0xA3 0x00A3 #POUND SIGN
0xA4 0x00A4 #CURRENCY SIGN
0xA5 0x00A5 #YEN SIGN
0xA6 0x00A6 #BROKEN BAR
0xA7 0x00A7 #SECTION SIGN
0xA8 0x00A8 #DIAERESIS
0xA9 0x00A9 #COPYRIGHT SIGN
0xAA 0x00AA #FEMININE ORDINAL INDICATOR
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC #NOT SIGN
0xAD 0x00AD #SOFT HYPHEN
0xAE 0x00AE #REGISTERED SIGN
0xAF 0x00AF #MACRON
0xB0 0x00B0 #DEGREE SIGN
0xB1 0x00B1 #PLUS-MINUS SIGN
0xB2 0x00B2 #SUPERSCRIPT TWO
0xB3 0x00B3 #SUPERSCRIPT THREE
0xB4 0x00B4 #ACUTE ACCENT
0xB5 0x00B5 #MICRO SIGN
0xB6 0x00B6 #PILCROW SIGN
0xB7 0x00B7 #MIDDLE DOT
0xB8 0x00B8 #CEDILLA
0xB9 0x00B9 #SUPERSCRIPT ONE
0xBA 0x00BA #MASCULINE ORDINAL INDICATOR
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
0xBD 0x00BD #VULGAR FRACTION ONE HALF
0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
0xBF 0x00BF #INVERTED QUESTION MARK
0xC0 0x00C0 #LATIN CAPITAL LETTER A WITH GRAVE
0xC1 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x00C3 #LATIN CAPITAL LETTER A WITH TILDE
0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 #LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x00C6 #LATIN CAPITAL LETTER AE
0xC7 0x00C7 #LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x00C8 #LATIN CAPITAL LETTER E WITH GRAVE
0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x00CA #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xCB 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x00CC #LATIN CAPITAL LETTER I WITH GRAVE
0xCD 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x00CF #LATIN CAPITAL LETTER I WITH DIAERESIS
0xD0 0x00D0 #LATIN CAPITAL LETTER ETH
0xD1 0x00D1 #LATIN CAPITAL LETTER N WITH TILDE
0xD2 0x00D2 #LATIN CAPITAL LETTER O WITH GRAVE
0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x00D5 #LATIN CAPITAL LETTER O WITH TILDE
0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 #MULTIPLICATION SIGN
0xD8 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
0xD9 0x00D9 #LATIN CAPITAL LETTER U WITH GRAVE
0xDA 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x00DD #LATIN CAPITAL LETTER Y WITH ACUTE
0xDE 0x00DE #LATIN CAPITAL LETTER THORN
0xDF 0x00DF #LATIN SMALL LETTER SHARP S
0xE0 0x00E0 #LATIN SMALL LETTER A WITH GRAVE
0xE1 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x00E3 #LATIN SMALL LETTER A WITH TILDE
0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 #LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x00E6 #LATIN SMALL LETTER AE
0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x00E8 #LATIN SMALL LETTER E WITH GRAVE
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
0xEA 0x00EA #LATIN SMALL LETTER E WITH CIRCUMFLEX
0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x00EC #LATIN SMALL LETTER I WITH GRAVE
0xED 0x00ED #LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF #LATIN SMALL LETTER I WITH DIAERESIS
0xF0 0x00F0 #LATIN SMALL LETTER ETH
0xF1 0x00F1 #LATIN SMALL LETTER N WITH TILDE
0xF2 0x00F2 #LATIN SMALL LETTER O WITH GRAVE
0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x00F5 #LATIN SMALL LETTER O WITH TILDE
0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 #DIVISION SIGN
0xF8 0x00F8 #LATIN SMALL LETTER O WITH STROKE
0xF9 0x00F9 #LATIN SMALL LETTER U WITH GRAVE
0xFA 0x00FA #LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB #LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD #LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x00FE #LATIN SMALL LETTER THORN
0xFF 0x00FF #LATIN SMALL LETTER Y WITH DIAERESIS

273
sys/lib/antiword/cp437.txt Executable file
View File

@ -0,0 +1,273 @@
#
# Name: cp437_DOSLatinUS to Unicode table
# Unicode version: 2.0
# Table version: 2.00
# Table format: Format A
# Date: 04/24/96
# Authors: Lori Brownell <loribr@microsoft.com>
# K.D. Chang <a-kchang@microsoft.com>
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp437_DOSLatinUS code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp437_DOSLatinUS order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x00e6 #LATIN SMALL LIGATURE AE
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
0x98 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x00a2 #CENT SIGN
0x9c 0x00a3 #POUND SIGN
0x9d 0x00a5 #YEN SIGN
0x9e 0x20a7 #PESETA SIGN
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
0xa8 0x00bf #INVERTED QUESTION MARK
0xa9 0x2310 #REVERSED NOT SIGN
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x00a1 #INVERTED EXCLAMATION MARK
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
0xe1 0x00df #LATIN SMALL LETTER SHARP S
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
0xe3 0x03c0 #GREEK SMALL LETTER PI
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
0xe6 0x00b5 #MICRO SIGN
0xe7 0x03c4 #GREEK SMALL LETTER TAU
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
0xec 0x221e #INFINITY
0xed 0x03c6 #GREEK SMALL LETTER PHI
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
0xef 0x2229 #INTERSECTION
0xf0 0x2261 #IDENTICAL TO
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
0xf3 0x2264 #LESS-THAN OR EQUAL TO
0xf4 0x2320 #TOP HALF INTEGRAL
0xf5 0x2321 #BOTTOM HALF INTEGRAL
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x2248 #ALMOST EQUAL TO
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x221a #SQUARE ROOT
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE

273
sys/lib/antiword/cp850.txt Executable file
View File

@ -0,0 +1,273 @@
#
# Name: cp850_DOSLatin1 to Unicode table
# Unicode version: 2.0
# Table version: 2.00
# Table format: Format A
# Date: 04/24/96
# Authors: Lori Brownell <loribr@microsoft.com>
# K.D. Chang <a-kchang@microsoft.com>
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp850_DOSLatin1 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp850_DOSLatin1 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x00e6 #LATIN SMALL LIGATURE AE
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
0x98 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE
0x9c 0x00a3 #POUND SIGN
0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE
0x9e 0x00d7 #MULTIPLICATION SIGN
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
0xa8 0x00bf #INVERTED QUESTION MARK
0xa9 0x00ae #REGISTERED SIGN
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x00a1 #INVERTED EXCLAMATION MARK
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE
0xb6 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xb7 0x00c0 #LATIN CAPITAL LETTER A WITH GRAVE
0xb8 0x00a9 #COPYRIGHT SIGN
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x00a2 #CENT SIGN
0xbe 0x00a5 #YEN SIGN
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x00e3 #LATIN SMALL LETTER A WITH TILDE
0xc7 0x00c3 #LATIN CAPITAL LETTER A WITH TILDE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x00a4 #CURRENCY SIGN
0xd0 0x00f0 #LATIN SMALL LETTER ETH
0xd1 0x00d0 #LATIN CAPITAL LETTER ETH
0xd2 0x00ca #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xd3 0x00cb #LATIN CAPITAL LETTER E WITH DIAERESIS
0xd4 0x00c8 #LATIN CAPITAL LETTER E WITH GRAVE
0xd5 0x0131 #LATIN SMALL LETTER DOTLESS I
0xd6 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE
0xd7 0x00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xd8 0x00cf #LATIN CAPITAL LETTER I WITH DIAERESIS
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x00a6 #BROKEN BAR
0xde 0x00cc #LATIN CAPITAL LETTER I WITH GRAVE
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
0xe1 0x00df #LATIN SMALL LETTER SHARP S
0xe2 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xe3 0x00d2 #LATIN CAPITAL LETTER O WITH GRAVE
0xe4 0x00f5 #LATIN SMALL LETTER O WITH TILDE
0xe5 0x00d5 #LATIN CAPITAL LETTER O WITH TILDE
0xe6 0x00b5 #MICRO SIGN
0xe7 0x00fe #LATIN SMALL LETTER THORN
0xe8 0x00de #LATIN CAPITAL LETTER THORN
0xe9 0x00da #LATIN CAPITAL LETTER U WITH ACUTE
0xea 0x00db #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xeb 0x00d9 #LATIN CAPITAL LETTER U WITH GRAVE
0xec 0x00fd #LATIN SMALL LETTER Y WITH ACUTE
0xed 0x00dd #LATIN CAPITAL LETTER Y WITH ACUTE
0xee 0x00af #MACRON
0xef 0x00b4 #ACUTE ACCENT
0xf0 0x00ad #SOFT HYPHEN
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x2017 #DOUBLE LOW LINE
0xf3 0x00be #VULGAR FRACTION THREE QUARTERS
0xf4 0x00b6 #PILCROW SIGN
0xf5 0x00a7 #SECTION SIGN
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x00b8 #CEDILLA
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x00a8 #DIAERESIS
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x00b9 #SUPERSCRIPT ONE
0xfc 0x00b3 #SUPERSCRIPT THREE
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE

273
sys/lib/antiword/cp852.txt Executable file
View File

@ -0,0 +1,273 @@
#
# Name: cp852_DOSLatin2 to Unicode table
# Unicode version: 2.0
# Table version: 2.00
# Table format: Format A
# Date: 04/24/96
# Authors: Lori Brownell <loribr@microsoft.com>
# K.D. Chang <a-kchang@microsoft.com>
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp852_DOSLatin2 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp852_DOSLatin2 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
0x85 0x016f #LATIN SMALL LETTER U WITH RING ABOVE
0x86 0x0107 #LATIN SMALL LETTER C WITH ACUTE
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
0x88 0x0142 #LATIN SMALL LETTER L WITH STROKE
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
0x8a 0x0150 #LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
0x8b 0x0151 #LATIN SMALL LETTER O WITH DOUBLE ACUTE
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
0x8d 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0x8f 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x0139 #LATIN CAPITAL LETTER L WITH ACUTE
0x92 0x013a #LATIN SMALL LETTER L WITH ACUTE
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
0x95 0x013d #LATIN CAPITAL LETTER L WITH CARON
0x96 0x013e #LATIN SMALL LETTER L WITH CARON
0x97 0x015a #LATIN CAPITAL LETTER S WITH ACUTE
0x98 0x015b #LATIN SMALL LETTER S WITH ACUTE
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x0164 #LATIN CAPITAL LETTER T WITH CARON
0x9c 0x0165 #LATIN SMALL LETTER T WITH CARON
0x9d 0x0141 #LATIN CAPITAL LETTER L WITH STROKE
0x9e 0x00d7 #MULTIPLICATION SIGN
0x9f 0x010d #LATIN SMALL LETTER C WITH CARON
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
0xa5 0x0105 #LATIN SMALL LETTER A WITH OGONEK
0xa6 0x017d #LATIN CAPITAL LETTER Z WITH CARON
0xa7 0x017e #LATIN SMALL LETTER Z WITH CARON
0xa8 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
0xa9 0x0119 #LATIN SMALL LETTER E WITH OGONEK
0xaa 0x00ac #NOT SIGN
0xab 0x017a #LATIN SMALL LETTER Z WITH ACUTE
0xac 0x010c #LATIN CAPITAL LETTER C WITH CARON
0xad 0x015f #LATIN SMALL LETTER S WITH CEDILLA
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE
0xb6 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xb7 0x011a #LATIN CAPITAL LETTER E WITH CARON
0xb8 0x015e #LATIN CAPITAL LETTER S WITH CEDILLA
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x017b #LATIN CAPITAL LETTER Z WITH DOT ABOVE
0xbe 0x017c #LATIN SMALL LETTER Z WITH DOT ABOVE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x0102 #LATIN CAPITAL LETTER A WITH BREVE
0xc7 0x0103 #LATIN SMALL LETTER A WITH BREVE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x00a4 #CURRENCY SIGN
0xd0 0x0111 #LATIN SMALL LETTER D WITH STROKE
0xd1 0x0110 #LATIN CAPITAL LETTER D WITH STROKE
0xd2 0x010e #LATIN CAPITAL LETTER D WITH CARON
0xd3 0x00cb #LATIN CAPITAL LETTER E WITH DIAERESIS
0xd4 0x010f #LATIN SMALL LETTER D WITH CARON
0xd5 0x0147 #LATIN CAPITAL LETTER N WITH CARON
0xd6 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE
0xd7 0x00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xd8 0x011b #LATIN SMALL LETTER E WITH CARON
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x0162 #LATIN CAPITAL LETTER T WITH CEDILLA
0xde 0x016e #LATIN CAPITAL LETTER U WITH RING ABOVE
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
0xe1 0x00df #LATIN SMALL LETTER SHARP S
0xe2 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xe3 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
0xe4 0x0144 #LATIN SMALL LETTER N WITH ACUTE
0xe5 0x0148 #LATIN SMALL LETTER N WITH CARON
0xe6 0x0160 #LATIN CAPITAL LETTER S WITH CARON
0xe7 0x0161 #LATIN SMALL LETTER S WITH CARON
0xe8 0x0154 #LATIN CAPITAL LETTER R WITH ACUTE
0xe9 0x00da #LATIN CAPITAL LETTER U WITH ACUTE
0xea 0x0155 #LATIN SMALL LETTER R WITH ACUTE
0xeb 0x0170 #LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
0xec 0x00fd #LATIN SMALL LETTER Y WITH ACUTE
0xed 0x00dd #LATIN CAPITAL LETTER Y WITH ACUTE
0xee 0x0163 #LATIN SMALL LETTER T WITH CEDILLA
0xef 0x00b4 #ACUTE ACCENT
0xf0 0x00ad #SOFT HYPHEN
0xf1 0x02dd #DOUBLE ACUTE ACCENT
0xf2 0x02db #OGONEK
0xf3 0x02c7 #CARON
0xf4 0x02d8 #BREVE
0xf5 0x00a7 #SECTION SIGN
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x00b8 #CEDILLA
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x00a8 #DIAERESIS
0xfa 0x02d9 #DOT ABOVE
0xfb 0x0171 #LATIN SMALL LETTER U WITH DOUBLE ACUTE
0xfc 0x0158 #LATIN CAPITAL LETTER R WITH CARON
0xfd 0x0159 #LATIN SMALL LETTER R WITH CARON
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE

273
sys/lib/antiword/cp862.txt Executable file
View File

@ -0,0 +1,273 @@
#
# Name: cp862_DOSHebrew to Unicode table
# Unicode version: 2.0
# Table version: 2.00
# Table format: Format A
# Date: 04/24/96
# Authors: Lori Brownell <loribr@microsoft.com>
# K.D. Chang <a-kchang@microsoft.com>
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp862_DOSHebrew code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp862_DOSHebrew order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x05d0 #HEBREW LETTER ALEF
0x81 0x05d1 #HEBREW LETTER BET
0x82 0x05d2 #HEBREW LETTER GIMEL
0x83 0x05d3 #HEBREW LETTER DALET
0x84 0x05d4 #HEBREW LETTER HE
0x85 0x05d5 #HEBREW LETTER VAV
0x86 0x05d6 #HEBREW LETTER ZAYIN
0x87 0x05d7 #HEBREW LETTER HET
0x88 0x05d8 #HEBREW LETTER TET
0x89 0x05d9 #HEBREW LETTER YOD
0x8a 0x05da #HEBREW LETTER FINAL KAF
0x8b 0x05db #HEBREW LETTER KAF
0x8c 0x05dc #HEBREW LETTER LAMED
0x8d 0x05dd #HEBREW LETTER FINAL MEM
0x8e 0x05de #HEBREW LETTER MEM
0x8f 0x05df #HEBREW LETTER FINAL NUN
0x90 0x05e0 #HEBREW LETTER NUN
0x91 0x05e1 #HEBREW LETTER SAMEKH
0x92 0x05e2 #HEBREW LETTER AYIN
0x93 0x05e3 #HEBREW LETTER FINAL PE
0x94 0x05e4 #HEBREW LETTER PE
0x95 0x05e5 #HEBREW LETTER FINAL TSADI
0x96 0x05e6 #HEBREW LETTER TSADI
0x97 0x05e7 #HEBREW LETTER QOF
0x98 0x05e8 #HEBREW LETTER RESH
0x99 0x05e9 #HEBREW LETTER SHIN
0x9a 0x05ea #HEBREW LETTER TAV
0x9b 0x00a2 #CENT SIGN
0x9c 0x00a3 #POUND SIGN
0x9d 0x00a5 #YEN SIGN
0x9e 0x20a7 #PESETA SIGN
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
0xa8 0x00bf #INVERTED QUESTION MARK
0xa9 0x2310 #REVERSED NOT SIGN
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x00a1 #INVERTED EXCLAMATION MARK
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
0xe1 0x00df #LATIN SMALL LETTER SHARP S (GERMAN)
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
0xe3 0x03c0 #GREEK SMALL LETTER PI
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
0xe6 0x00b5 #MICRO SIGN
0xe7 0x03c4 #GREEK SMALL LETTER TAU
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
0xec 0x221e #INFINITY
0xed 0x03c6 #GREEK SMALL LETTER PHI
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
0xef 0x2229 #INTERSECTION
0xf0 0x2261 #IDENTICAL TO
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
0xf3 0x2264 #LESS-THAN OR EQUAL TO
0xf4 0x2320 #TOP HALF INTEGRAL
0xf5 0x2321 #BOTTOM HALF INTEGRAL
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x2248 #ALMOST EQUAL TO
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x221a #SQUARE ROOT
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE

273
sys/lib/antiword/cp866.txt Executable file
View File

@ -0,0 +1,273 @@
#
# Name: cp866_DOSCyrillicRussian to Unicode table
# Unicode version: 2.0
# Table version: 2.00
# Table format: Format A
# Date: 04/24/96
# Authors: Lori Brownell <loribr@microsoft.com>
# K.D. Chang <a-kchang@microsoft.com>
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp866_DOSCyrillicRussian code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp866_DOSCyrillicRussian order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x0410 #CYRILLIC CAPITAL LETTER A
0x81 0x0411 #CYRILLIC CAPITAL LETTER BE
0x82 0x0412 #CYRILLIC CAPITAL LETTER VE
0x83 0x0413 #CYRILLIC CAPITAL LETTER GHE
0x84 0x0414 #CYRILLIC CAPITAL LETTER DE
0x85 0x0415 #CYRILLIC CAPITAL LETTER IE
0x86 0x0416 #CYRILLIC CAPITAL LETTER ZHE
0x87 0x0417 #CYRILLIC CAPITAL LETTER ZE
0x88 0x0418 #CYRILLIC CAPITAL LETTER I
0x89 0x0419 #CYRILLIC CAPITAL LETTER SHORT I
0x8a 0x041a #CYRILLIC CAPITAL LETTER KA
0x8b 0x041b #CYRILLIC CAPITAL LETTER EL
0x8c 0x041c #CYRILLIC CAPITAL LETTER EM
0x8d 0x041d #CYRILLIC CAPITAL LETTER EN
0x8e 0x041e #CYRILLIC CAPITAL LETTER O
0x8f 0x041f #CYRILLIC CAPITAL LETTER PE
0x90 0x0420 #CYRILLIC CAPITAL LETTER ER
0x91 0x0421 #CYRILLIC CAPITAL LETTER ES
0x92 0x0422 #CYRILLIC CAPITAL LETTER TE
0x93 0x0423 #CYRILLIC CAPITAL LETTER U
0x94 0x0424 #CYRILLIC CAPITAL LETTER EF
0x95 0x0425 #CYRILLIC CAPITAL LETTER HA
0x96 0x0426 #CYRILLIC CAPITAL LETTER TSE
0x97 0x0427 #CYRILLIC CAPITAL LETTER CHE
0x98 0x0428 #CYRILLIC CAPITAL LETTER SHA
0x99 0x0429 #CYRILLIC CAPITAL LETTER SHCHA
0x9a 0x042a #CYRILLIC CAPITAL LETTER HARD SIGN
0x9b 0x042b #CYRILLIC CAPITAL LETTER YERU
0x9c 0x042c #CYRILLIC CAPITAL LETTER SOFT SIGN
0x9d 0x042d #CYRILLIC CAPITAL LETTER E
0x9e 0x042e #CYRILLIC CAPITAL LETTER YU
0x9f 0x042f #CYRILLIC CAPITAL LETTER YA
0xa0 0x0430 #CYRILLIC SMALL LETTER A
0xa1 0x0431 #CYRILLIC SMALL LETTER BE
0xa2 0x0432 #CYRILLIC SMALL LETTER VE
0xa3 0x0433 #CYRILLIC SMALL LETTER GHE
0xa4 0x0434 #CYRILLIC SMALL LETTER DE
0xa5 0x0435 #CYRILLIC SMALL LETTER IE
0xa6 0x0436 #CYRILLIC SMALL LETTER ZHE
0xa7 0x0437 #CYRILLIC SMALL LETTER ZE
0xa8 0x0438 #CYRILLIC SMALL LETTER I
0xa9 0x0439 #CYRILLIC SMALL LETTER SHORT I
0xaa 0x043a #CYRILLIC SMALL LETTER KA
0xab 0x043b #CYRILLIC SMALL LETTER EL
0xac 0x043c #CYRILLIC SMALL LETTER EM
0xad 0x043d #CYRILLIC SMALL LETTER EN
0xae 0x043e #CYRILLIC SMALL LETTER O
0xaf 0x043f #CYRILLIC SMALL LETTER PE
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x0440 #CYRILLIC SMALL LETTER ER
0xe1 0x0441 #CYRILLIC SMALL LETTER ES
0xe2 0x0442 #CYRILLIC SMALL LETTER TE
0xe3 0x0443 #CYRILLIC SMALL LETTER U
0xe4 0x0444 #CYRILLIC SMALL LETTER EF
0xe5 0x0445 #CYRILLIC SMALL LETTER HA
0xe6 0x0446 #CYRILLIC SMALL LETTER TSE
0xe7 0x0447 #CYRILLIC SMALL LETTER CHE
0xe8 0x0448 #CYRILLIC SMALL LETTER SHA
0xe9 0x0449 #CYRILLIC SMALL LETTER SHCHA
0xea 0x044a #CYRILLIC SMALL LETTER HARD SIGN
0xeb 0x044b #CYRILLIC SMALL LETTER YERU
0xec 0x044c #CYRILLIC SMALL LETTER SOFT SIGN
0xed 0x044d #CYRILLIC SMALL LETTER E
0xee 0x044e #CYRILLIC SMALL LETTER YU
0xef 0x044f #CYRILLIC SMALL LETTER YA
0xf0 0x0401 #CYRILLIC CAPITAL LETTER IO
0xf1 0x0451 #CYRILLIC SMALL LETTER IO
0xf2 0x0404 #CYRILLIC CAPITAL LETTER UKRAINIAN IE
0xf3 0x0454 #CYRILLIC SMALL LETTER UKRAINIAN IE
0xf4 0x0407 #CYRILLIC CAPITAL LETTER YI
0xf5 0x0457 #CYRILLIC SMALL LETTER YI
0xf6 0x040e #CYRILLIC CAPITAL LETTER SHORT U
0xf7 0x045e #CYRILLIC SMALL LETTER SHORT U
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x221a #SQUARE ROOT
0xfc 0x2116 #NUMERO SIGN
0xfd 0x00a4 #CURRENCY SIGN
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE

117
sys/lib/antiword/fontnames Executable file
View File

@ -0,0 +1,117 @@
# Default fontnames translation table
# uses only Standard PostScript (TM) fonts
#
# MS-Word fontname, Italic, Bold, PostScript fontname, Special
Arial, 0, 0, Helvetica, 0
Arial, 0, 1, Helvetica-Bold, 0
Arial, 1, 0, Helvetica-Oblique, 0
Arial, 1, 1, Helvetica-BoldOblique, 0
Arial Black, 0, 0, Helvetica, 0
Arial Black, 0, 1, Helvetica-Bold, 0
Arial Black, 1, 0, Helvetica-Oblique, 0
Arial Black, 1, 1, Helvetica-BoldOblique, 0
Arial CE, 0, 0, Helvetica, 0
Arial CE, 0, 1, Helvetica-Bold, 0
Arial CE, 1, 0, Helvetica-Oblique, 0
Arial CE, 1, 1, Helvetica-BoldOblique, 0
Arial Narrow, 0, 0, Helvetica-Narrow, 0
Arial Narrow, 0, 1, Helvetica-Narrow-Bold, 0
Arial Narrow, 1, 0, Helvetica-Narrow-Oblique, 0
Arial Narrow, 1, 1, Helvetica-Narrow-BoldOblique, 0
AvantGarde, 0, 0, AvantGarde-Book, 0
AvantGarde, 0, 1, AvantGarde-Demi, 0
AvantGarde, 1, 0, AvantGarde-BookOblique, 0
AvantGarde, 1, 1, AvantGarde-DemiOblique, 0
Bookman Old Style, 0, 0, Bookman-Light, 0
Bookman Old Style, 0, 1, Bookman-Demi, 0
Bookman Old Style, 1, 0, Bookman-LightItalic, 0
Bookman Old Style, 1, 1, Bookman-DemiItalic, 0
Century Schoolbook, 0, 0, NewCenturySchlbk-Roman, 0
Century Schoolbook, 0, 1, NewCenturySchlbk-Bold, 0
Century Schoolbook, 1, 0, NewCenturySchlbk-Italic, 0
Century Schoolbook, 1, 1, NewCenturySchlbk-BoldItalic, 0
CG Omega, 0, 0, Helvetica, 0
CG Omega, 0, 1, Helvetica-Bold, 0
CG Omega, 1, 0, Helvetica-Oblique, 0
CG Omega, 1, 1, Helvetica-BoldOblique, 0
Comic Sans MS, 0, 0, Helvetica, 0
Comic Sans MS, 0, 1, Helvetica-Bold, 0
Comic Sans MS, 1, 0, Helvetica-Oblique, 0
Comic Sans MS, 1, 1, Helvetica-BoldOblique, 0
Courier, 0, 0, Courier, 0
Courier, 0, 1, Courier-Bold, 0
Courier, 1, 0, Courier-Oblique, 0
Courier, 1, 1, Courier-BoldOblique, 0
Courier New, 0, 0, Courier, 0
Courier New, 0, 1, Courier-Bold, 0
Courier New, 1, 0, Courier-Oblique, 0
Courier New, 1, 1, Courier-BoldOblique, 0
Fixedsys, 0, 0, Courier, 0
Fixedsys, 0, 1, Courier-Bold, 0
Fixedsys, 1, 0, Courier-Oblique, 0
Fixedsys, 1, 1, Courier-BoldOblique, 0
Helvetica, 0, 0, Helvetica, 0
Helvetica, 0, 1, Helvetica-Bold, 0
Helvetica, 1, 0, Helvetica-Oblique, 0
Helvetica, 1, 1, Helvetica-BoldOblique, 0
Helvetica-Narrow, 0, 0, Helvetica-Narrow, 0
Helvetica-Narrow, 0, 1, Helvetica-Narrow-Bold, 0
Helvetica-Narrow, 1, 0, Helvetica-Narrow-Oblique, 0
Helvetica-Narrow, 1, 1, Helvetica-Narrow-BoldOblique, 0
ITC Bookman, 0, 0, Bookman-Light, 0
ITC Bookman, 0, 1, Bookman-Demi, 0
ITC Bookman, 1, 0, Bookman-LightItalic, 0
ITC Bookman, 1, 1, Bookman-DemiItalic, 0
Lucida Console, 0, 0, Courier, 0
Lucida Console, 0, 1, Courier-Bold, 0
Lucida Console, 1, 0, Courier-Oblique, 0
Lucida Console, 1, 1, Courier-BoldOblique, 0
Lucida Sans Typewriter, 0, 0, Courier, 0
Lucida Sans Typewriter, 0, 1, Courier-Bold, 0
Lucida Sans Typewriter, 1, 0, Courier-Oblique, 0
Lucida Sans Typewriter, 1, 1, Courier-BoldOblique, 0
Monotype.com, 0, 0, Courier, 0
Monotype.com, 0, 1, Courier-Bold, 0
Monotype.com, 1, 0, Courier-Oblique, 0
Monotype.com, 1, 1, Courier-BoldOblique, 0
MS Sans Serif, 0, 0, Helvetica, 0
MS Sans Serif, 0, 1, Helvetica-Bold, 0
MS Sans Serif, 1, 0, Helvetica-Oblique, 0
MS Sans Serif, 1, 1, Helvetica-BoldOblique, 0
New Century Schlbk, 0, 0, NewCenturySchlbk-Roman, 0
New Century Schlbk, 0, 1, NewCenturySchlbk-Bold, 0
New Century Schlbk, 1, 0, NewCenturySchlbk-Italic, 0
New Century Schlbk, 1, 1, NewCenturySchlbk-BoldItalic, 0
NewCenturySchlbk, 0, 0, NewCenturySchlbk-Roman, 0
NewCenturySchlbk, 0, 1, NewCenturySchlbk-Bold, 0
NewCenturySchlbk, 1, 0, NewCenturySchlbk-Italic, 0
NewCenturySchlbk, 1, 1, NewCenturySchlbk-BoldItalic, 0
Palatino, 0, 0, Palatino-Roman, 0
Palatino, 0, 1, Palatino-Bold, 0
Palatino, 1, 0, Palatino-Italic, 0
Palatino, 1, 1, Palatino-BoldItalic, 0
Swiss, 0, 0, Helvetica, 0
Swiss, 0, 1, Helvetica-Bold, 0
Swiss, 1, 0, Helvetica-Oblique, 0
Swiss, 1, 1, Helvetica-BoldOblique, 0
Tahoma, 0, 0, Helvetica, 0
Tahoma, 0, 1, Helvetica-Bold, 0
Tahoma, 1, 0, Helvetica-Oblique, 0
Tahoma, 1, 1, Helvetica-BoldOblique, 0
Trebuchet MS, 0, 0, Helvetica, 0
Trebuchet MS, 0, 1, Helvetica-Bold, 0
Trebuchet MS, 1, 0, Helvetica-Oblique, 0
Trebuchet MS, 1, 1, Helvetica-BoldOblique, 0
Univers, 0, 0, Helvetica, 0
Univers, 0, 1, Helvetica-Bold, 0
Univers, 1, 0, Helvetica-Oblique, 0
Univers, 1, 1, Helvetica-BoldOblique, 0
Verdana, 0, 0, Helvetica, 0
Verdana, 0, 1, Helvetica-Bold, 0
Verdana, 1, 0, Helvetica-Oblique, 0
Verdana, 1, 1, Helvetica-BoldOblique, 0
# All the other fonts
*, 0, 0, Times-Roman, 0
*, 0, 1, Times-Bold, 0
*, 1, 0, Times-Italic, 0
*, 1, 1, Times-BoldItalic, 0

View File

@ -0,0 +1,43 @@
# Default fontnames translation table
# for Cyrillic
#
# by: Dmitry Chernyak <cdl@inkasbank.ru>
#
# MS-Word fontname, Italic, Bold, PostScript fontname, Special
Arial, 0, 0, ArialCyrMT, 0
Arial, 0, 1, ArialCyrMT-Bold, 0
Arial, 1, 0, ArialCyrMT-Italic, 0
Arial, 1, 1, ArialCyrMT-BoldItalic, 0
Courier, 0, 0, CourierCyrPS, 0
Courier, 0, 1, CourierCyrPS-Bold, 0
Courier, 1, 0, CourierCyrPS-Inclined, 0
Courier, 1, 1, CourierCyrPS-BoldInclined, 0
Courier New, 0, 0, CourierCyrPS, 0
Courier New, 0, 1, CourierCyrPS-Bold, 0
Courier New, 1, 0, CourierCyrPS-Inclined, 0
Courier New, 1, 1, CourierCyrPS-BoldInclined, 0
Fixedsys, 0, 0, CourierCyrPS, 0
Fixedsys, 0, 1, CourierCyrPS-Bold, 0
Fixedsys, 1, 0, CourierCyrPS-Inclined, 0
Fixedsys, 1, 1, CourierCyrPS-BoldInclined, 0
Helvetica, 0, 0, ArialCyrMT, 0
Helvetica, 0, 1, ArialCyrMT-Bold, 0
Helvetica, 1, 0, ArialCyrMT-Italic, 0
Helvetica, 1, 1, ArialCyrMT-BoldItalic, 0
Lucida Console, 0, 0, CourierCyrPS, 0
Lucida Console, 0, 1, CourierCyrPS-Bold, 0
Lucida Console, 1, 0, CourierCyrPS-Inclined, 0
Lucida Console, 1, 1, CourierCyrPS-BoldInclined, 0
Swiss, 0, 0, Helvetica, 0
Swiss, 0, 1, Helvetica-Bold, 0
Swiss, 1, 0, Helvetica-Oblique, 0
Swiss, 1, 1, Helvetica-BoldOblique, 0
Univers, 0, 0, Helvetica, 0
Univers, 0, 1, Helvetica-Bold, 0
Univers, 1, 0, Helvetica-Oblique, 0
Univers, 1, 1, Helvetica-BoldOblique, 0
# All the other fonts
*, 0, 0, TimesNRCyrMT, 0
*, 0, 1, TimesNRCyrMT-Bold, 0
*, 1, 0, TimesNRCyrMT-Inclined, 0
*, 1, 1, TimesNRCyrMT-BoldInclined, 0

302
sys/lib/antiword/koi8-r.txt Executable file
View File

@ -0,0 +1,302 @@
#
# Name: KOI8-R (RFC1489) to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 18 August 1999
# Authors: Helmut Richter <richter@lrz.de>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# KOI8-R characters map into Unicode. The underlying document is the
# mapping described in RFC 1489. No statements are made as to whether
# this mapping is the same as the mapping defined as "Code Page 878"
# with some vendors.
#
# Format: Three tab-separated columns
# Column #1 is the KOI8-R code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in KOI8-R order.
#
# Version history
# 1.0 version: created.
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x2500 # BOX DRAWINGS LIGHT HORIZONTAL
0x81 0x2502 # BOX DRAWINGS LIGHT VERTICAL
0x82 0x250C # BOX DRAWINGS LIGHT DOWN AND RIGHT
0x83 0x2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
0x84 0x2514 # BOX DRAWINGS LIGHT UP AND RIGHT
0x85 0x2518 # BOX DRAWINGS LIGHT UP AND LEFT
0x86 0x251C # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0x87 0x2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
0x88 0x252C # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0x89 0x2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
0x8A 0x253C # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0x8B 0x2580 # UPPER HALF BLOCK
0x8C 0x2584 # LOWER HALF BLOCK
0x8D 0x2588 # FULL BLOCK
0x8E 0x258C # LEFT HALF BLOCK
0x8F 0x2590 # RIGHT HALF BLOCK
0x90 0x2591 # LIGHT SHADE
0x91 0x2592 # MEDIUM SHADE
0x92 0x2593 # DARK SHADE
0x93 0x2320 # TOP HALF INTEGRAL
0x94 0x25A0 # BLACK SQUARE
0x95 0x2219 # BULLET OPERATOR
0x96 0x221A # SQUARE ROOT
0x97 0x2248 # ALMOST EQUAL TO
0x98 0x2264 # LESS-THAN OR EQUAL TO
0x99 0x2265 # GREATER-THAN OR EQUAL TO
0x9A 0x00A0 # NO-BREAK SPACE
0x9B 0x2321 # BOTTOM HALF INTEGRAL
0x9C 0x00B0 # DEGREE SIGN
0x9D 0x00B2 # SUPERSCRIPT TWO
0x9E 0x00B7 # MIDDLE DOT
0x9F 0x00F7 # DIVISION SIGN
0xA0 0x2550 # BOX DRAWINGS DOUBLE HORIZONTAL
0xA1 0x2551 # BOX DRAWINGS DOUBLE VERTICAL
0xA2 0x2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xA3 0x0451 # CYRILLIC SMALL LETTER IO
0xA4 0x2553 # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xA5 0x2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xA6 0x2555 # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xA7 0x2556 # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xA8 0x2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
0xA9 0x2558 # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xAA 0x2559 # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xAB 0x255A # BOX DRAWINGS DOUBLE UP AND RIGHT
0xAC 0x255B # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xAD 0x255C # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xAE 0x255D # BOX DRAWINGS DOUBLE UP AND LEFT
0xAF 0x255E # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xB0 0x255F # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xB1 0x2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xB2 0x2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xB3 0x0401 # CYRILLIC CAPITAL LETTER IO
0xB4 0x2562 # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xB5 0x2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xB6 0x2564 # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xB7 0x2565 # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xB8 0x2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xB9 0x2567 # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xBA 0x2568 # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xBB 0x2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xBC 0x256A # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xBD 0x256B # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xBE 0x256C # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xBF 0x00A9 # COPYRIGHT SIGN
0xC0 0x044E # CYRILLIC SMALL LETTER YU
0xC1 0x0430 # CYRILLIC SMALL LETTER A
0xC2 0x0431 # CYRILLIC SMALL LETTER BE
0xC3 0x0446 # CYRILLIC SMALL LETTER TSE
0xC4 0x0434 # CYRILLIC SMALL LETTER DE
0xC5 0x0435 # CYRILLIC SMALL LETTER IE
0xC6 0x0444 # CYRILLIC SMALL LETTER EF
0xC7 0x0433 # CYRILLIC SMALL LETTER GHE
0xC8 0x0445 # CYRILLIC SMALL LETTER HA
0xC9 0x0438 # CYRILLIC SMALL LETTER I
0xCA 0x0439 # CYRILLIC SMALL LETTER SHORT I
0xCB 0x043A # CYRILLIC SMALL LETTER KA
0xCC 0x043B # CYRILLIC SMALL LETTER EL
0xCD 0x043C # CYRILLIC SMALL LETTER EM
0xCE 0x043D # CYRILLIC SMALL LETTER EN
0xCF 0x043E # CYRILLIC SMALL LETTER O
0xD0 0x043F # CYRILLIC SMALL LETTER PE
0xD1 0x044F # CYRILLIC SMALL LETTER YA
0xD2 0x0440 # CYRILLIC SMALL LETTER ER
0xD3 0x0441 # CYRILLIC SMALL LETTER ES
0xD4 0x0442 # CYRILLIC SMALL LETTER TE
0xD5 0x0443 # CYRILLIC SMALL LETTER U
0xD6 0x0436 # CYRILLIC SMALL LETTER ZHE
0xD7 0x0432 # CYRILLIC SMALL LETTER VE
0xD8 0x044C # CYRILLIC SMALL LETTER SOFT SIGN
0xD9 0x044B # CYRILLIC SMALL LETTER YERU
0xDA 0x0437 # CYRILLIC SMALL LETTER ZE
0xDB 0x0448 # CYRILLIC SMALL LETTER SHA
0xDC 0x044D # CYRILLIC SMALL LETTER E
0xDD 0x0449 # CYRILLIC SMALL LETTER SHCHA
0xDE 0x0447 # CYRILLIC SMALL LETTER CHE
0xDF 0x044A # CYRILLIC SMALL LETTER HARD SIGN
0xE0 0x042E # CYRILLIC CAPITAL LETTER YU
0xE1 0x0410 # CYRILLIC CAPITAL LETTER A
0xE2 0x0411 # CYRILLIC CAPITAL LETTER BE
0xE3 0x0426 # CYRILLIC CAPITAL LETTER TSE
0xE4 0x0414 # CYRILLIC CAPITAL LETTER DE
0xE5 0x0415 # CYRILLIC CAPITAL LETTER IE
0xE6 0x0424 # CYRILLIC CAPITAL LETTER EF
0xE7 0x0413 # CYRILLIC CAPITAL LETTER GHE
0xE8 0x0425 # CYRILLIC CAPITAL LETTER HA
0xE9 0x0418 # CYRILLIC CAPITAL LETTER I
0xEA 0x0419 # CYRILLIC CAPITAL LETTER SHORT I
0xEB 0x041A # CYRILLIC CAPITAL LETTER KA
0xEC 0x041B # CYRILLIC CAPITAL LETTER EL
0xED 0x041C # CYRILLIC CAPITAL LETTER EM
0xEE 0x041D # CYRILLIC CAPITAL LETTER EN
0xEF 0x041E # CYRILLIC CAPITAL LETTER O
0xF0 0x041F # CYRILLIC CAPITAL LETTER PE
0xF1 0x042F # CYRILLIC CAPITAL LETTER YA
0xF2 0x0420 # CYRILLIC CAPITAL LETTER ER
0xF3 0x0421 # CYRILLIC CAPITAL LETTER ES
0xF4 0x0422 # CYRILLIC CAPITAL LETTER TE
0xF5 0x0423 # CYRILLIC CAPITAL LETTER U
0xF6 0x0416 # CYRILLIC CAPITAL LETTER ZHE
0xF7 0x0412 # CYRILLIC CAPITAL LETTER VE
0xF8 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN
0xF9 0x042B # CYRILLIC CAPITAL LETTER YERU
0xFA 0x0417 # CYRILLIC CAPITAL LETTER ZE
0xFB 0x0428 # CYRILLIC CAPITAL LETTER SHA
0xFC 0x042D # CYRILLIC CAPITAL LETTER E
0xFD 0x0429 # CYRILLIC CAPITAL LETTER SHCHA
0xFE 0x0427 # CYRILLIC CAPITAL LETTER CHE
0xFF 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN

303
sys/lib/antiword/koi8-u.txt Executable file
View File

@ -0,0 +1,303 @@
#
# Name: KOI8-U (RFC2319) to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 08 September 2001
# Authors: Andriy Rysin <arysin@yahoo.com>
#
# Copyright (c) 1991-2001 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# KOI8-U characters map into Unicode. The underlying document is the
# mapping described in RFC 2319. No statements are made as to whether
# this mapping is the same as the mapping defined as "Code Page 878"
# with some vendors.
#
# Format: Three tab-separated columns
# Column #1 is the KOI8-U code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in KOI8-U order.
#
# Version history
# 1.0 version: created.
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x2500 # BOX DRAWINGS LIGHT HORIZONTAL
0x81 0x2502 # BOX DRAWINGS LIGHT VERTICAL
0x82 0x250C # BOX DRAWINGS LIGHT DOWN AND RIGHT
0x83 0x2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
0x84 0x2514 # BOX DRAWINGS LIGHT UP AND RIGHT
0x85 0x2518 # BOX DRAWINGS LIGHT UP AND LEFT
0x86 0x251C # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0x87 0x2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
0x88 0x252C # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0x89 0x2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
0x8A 0x253C # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0x8B 0x2580 # UPPER HALF BLOCK
0x8C 0x2584 # LOWER HALF BLOCK
0x8D 0x2588 # FULL BLOCK
0x8E 0x258C # LEFT HALF BLOCK
0x8F 0x2590 # RIGHT HALF BLOCK
0x90 0x2591 # LIGHT SHADE
0x91 0x2592 # MEDIUM SHADE
0x92 0x2593 # DARK SHADE
0x93 0x2320 # TOP HALF INTEGRAL
0x94 0x25A0 # BLACK SQUARE
0x95 0x2219 # BULLET OPERATOR
0x96 0x221A # SQUARE ROOT
0x97 0x2248 # ALMOST EQUAL TO
0x98 0x2264 # LESS-THAN OR EQUAL TO
0x99 0x2265 # GREATER-THAN OR EQUAL TO
0x9A 0x00A0 # NO-BREAK SPACE
0x9B 0x2321 # BOTTOM HALF INTEGRAL
0x9C 0x00B0 # DEGREE SIGN
0x9D 0x00B2 # SUPERSCRIPT TWO
0x9E 0x00B7 # MIDDLE DOT
0x9F 0x00F7 # DIVISION SIGN
0xA0 0x2550 # BOX DRAWINGS DOUBLE HORIZONTAL
0xA1 0x2551 # BOX DRAWINGS DOUBLE VERTICAL
0xA2 0x2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xA3 0x0451 # CYRILLIC SMALL LETTER IO
0xA4 0x0454 # CYRILLIC SMALL LETTER UKRAINIAN IE
0xA5 0x2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xA6 0x0456 # CYRILLIC SMALL LETTER BELORUSSIAN-UKRAINIAN I
0xA7 0x0457 # CYRILLIC SMALL LETTER YI (UKRAINIAN)
0xA8 0x2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
0xA9 0x2558 # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xAA 0x2559 # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xAB 0x255A # BOX DRAWINGS DOUBLE UP AND RIGHT
0xAC 0x255B # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xAD 0x0491 # CYRILLIC SMALL LETTER UKRAINIAN GHE WITH UPTURN
0xAE 0x255D # BOX DRAWINGS DOUBLE UP AND LEFT
0xAF 0x255E # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xB0 0x255F # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xB1 0x2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xB2 0x2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xB3 0x0401 # CYRILLIC CAPITAL LETTER IO
0xB4 0x0404 # CYRILLIC CAPITAL LETTER UKRAINIAN IE
0xB5 0x2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xB6 0x0406 # CYRILLIC CAPITAL LETTER BELORUSSIAN-UKRAINIAN I
0xB7 0x0407 # CYRILLIC CAPITAL LETTER YI (UKRAINIAN)
0xB8 0x2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xB9 0x2567 # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xBA 0x2568 # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xBB 0x2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xBC 0x256A # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xBD 0x0490 # CYRILLIC CAPITAL LETTER UKRAINIAN GHE WITH UPTURN
0xBD 0x256B # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xBE 0x256C # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xBF 0x00A9 # COPYRIGHT SIGN
0xC0 0x044E # CYRILLIC SMALL LETTER YU
0xC1 0x0430 # CYRILLIC SMALL LETTER A
0xC2 0x0431 # CYRILLIC SMALL LETTER BE
0xC3 0x0446 # CYRILLIC SMALL LETTER TSE
0xC4 0x0434 # CYRILLIC SMALL LETTER DE
0xC5 0x0435 # CYRILLIC SMALL LETTER IE
0xC6 0x0444 # CYRILLIC SMALL LETTER EF
0xC7 0x0433 # CYRILLIC SMALL LETTER GHE
0xC8 0x0445 # CYRILLIC SMALL LETTER HA
0xC9 0x0438 # CYRILLIC SMALL LETTER I
0xCA 0x0439 # CYRILLIC SMALL LETTER SHORT I
0xCB 0x043A # CYRILLIC SMALL LETTER KA
0xCC 0x043B # CYRILLIC SMALL LETTER EL
0xCD 0x043C # CYRILLIC SMALL LETTER EM
0xCE 0x043D # CYRILLIC SMALL LETTER EN
0xCF 0x043E # CYRILLIC SMALL LETTER O
0xD0 0x043F # CYRILLIC SMALL LETTER PE
0xD1 0x044F # CYRILLIC SMALL LETTER YA
0xD2 0x0440 # CYRILLIC SMALL LETTER ER
0xD3 0x0441 # CYRILLIC SMALL LETTER ES
0xD4 0x0442 # CYRILLIC SMALL LETTER TE
0xD5 0x0443 # CYRILLIC SMALL LETTER U
0xD6 0x0436 # CYRILLIC SMALL LETTER ZHE
0xD7 0x0432 # CYRILLIC SMALL LETTER VE
0xD8 0x044C # CYRILLIC SMALL LETTER SOFT SIGN
0xD9 0x044B # CYRILLIC SMALL LETTER YERU
0xDA 0x0437 # CYRILLIC SMALL LETTER ZE
0xDB 0x0448 # CYRILLIC SMALL LETTER SHA
0xDC 0x044D # CYRILLIC SMALL LETTER E
0xDD 0x0449 # CYRILLIC SMALL LETTER SHCHA
0xDE 0x0447 # CYRILLIC SMALL LETTER CHE
0xDF 0x044A # CYRILLIC SMALL LETTER HARD SIGN
0xE0 0x042E # CYRILLIC CAPITAL LETTER YU
0xE1 0x0410 # CYRILLIC CAPITAL LETTER A
0xE2 0x0411 # CYRILLIC CAPITAL LETTER BE
0xE3 0x0426 # CYRILLIC CAPITAL LETTER TSE
0xE4 0x0414 # CYRILLIC CAPITAL LETTER DE
0xE5 0x0415 # CYRILLIC CAPITAL LETTER IE
0xE6 0x0424 # CYRILLIC CAPITAL LETTER EF
0xE7 0x0413 # CYRILLIC CAPITAL LETTER GHE
0xE8 0x0425 # CYRILLIC CAPITAL LETTER HA
0xE9 0x0418 # CYRILLIC CAPITAL LETTER I
0xEA 0x0419 # CYRILLIC CAPITAL LETTER SHORT I
0xEB 0x041A # CYRILLIC CAPITAL LETTER KA
0xEC 0x041B # CYRILLIC CAPITAL LETTER EL
0xED 0x041C # CYRILLIC CAPITAL LETTER EM
0xEE 0x041D # CYRILLIC CAPITAL LETTER EN
0xEF 0x041E # CYRILLIC CAPITAL LETTER O
0xF0 0x041F # CYRILLIC CAPITAL LETTER PE
0xF1 0x042F # CYRILLIC CAPITAL LETTER YA
0xF2 0x0420 # CYRILLIC CAPITAL LETTER ER
0xF3 0x0421 # CYRILLIC CAPITAL LETTER ES
0xF4 0x0422 # CYRILLIC CAPITAL LETTER TE
0xF5 0x0423 # CYRILLIC CAPITAL LETTER U
0xF6 0x0416 # CYRILLIC CAPITAL LETTER ZHE
0xF7 0x0412 # CYRILLIC CAPITAL LETTER VE
0xF8 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN
0xF9 0x042B # CYRILLIC CAPITAL LETTER YERU
0xFA 0x0417 # CYRILLIC CAPITAL LETTER ZE
0xFB 0x0428 # CYRILLIC CAPITAL LETTER SHA
0xFC 0x042D # CYRILLIC CAPITAL LETTER E
0xFD 0x0429 # CYRILLIC CAPITAL LETTER SHCHA
0xFE 0x0427 # CYRILLIC CAPITAL LETTER CHE
0xFF 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN

1
sys/lib/antiword/roman.txt Executable file

File diff suppressed because one or more lines are too long

406
sys/lib/astar/a100i.cp Executable file
View File

@ -0,0 +1,406 @@
:020000020040BC
:20000000CF5250BA22FFB80080EF585ACF0000FFFFFAB8FD00BA28FFEF2EFF2E0D009C5813
:20002000250002FAC3558BEC9C580B4604509D5DC300C8020000C7060007401FC706EA0600
:200040000040C706EC060000C70606070080803E0000007418C7060400000AC7060600004F
:2000600008C70608000009C7060007204EA106072BC9890E0C07A30E07890E0807A30A07FA
:20008000894EFE6B5EFE4881C390018B078B0E0607894F02FF46FE837EFE107CE6C41E08F7
:2000A0000726C747020400C41E080726C7070000E85D1AC41E080726C7470A4401C41E085D
:2000C0000726C7470E2000C41E080726C747104000C70604070000E88C08C41E080726C710
:2000E00047080C002BC08B160600EEE88824C9C3C8180000568B5E048B47048B5706894655
:20010000FA8956FC8B473A8B573C8946E88956EA8B078946F0C746F20000EB03FF46F28368
:200120007EF21A7D17C45EFA268B078B5EF28BCBD1E303D9D1E339870A0075E0837EF21A2C
:200140007506B801005EC9C3C45EFA268A470224038846F826F647030274070C048846F8C6
:20016000EB0B268A47022404D0E00846F8268B47028BC8A80874312530003D3000741D7706
:200180002B0AC074112C1074072C107415EB1D90804EF840EB16804EF8C0EB10804EF82063
:2001A000EB0A804EF8A0EB04804EF810C45EFA26F6470301750A268A47388B5E04884738FA
:2001C000C45EFA268A470224C03C807507C646F410EB1590268A470224C03CC07506C646EE
:2001E000F408EB04C646F40026F64704087404804EF4028B5EF0C687A600FFC41E08072687
:20020000F64715017406C646FEF0EB04C646FED0C45EFA26F64704107404804EFE098B5E85
:20022000F0C687C600FF8B5E04C747360000E8EDFD8946F68B5E048A4746C45EE8268887B1
:20024000D000B80100BA60FFEFB800C0BA66FFEFC746EC0000C45EE826807F0A00740DBA1A
:2002600060FFED0BC075EEC746EC010026C6470A80837EEC00740FFF76F6E8A8FD83C4029C
:20028000B80B005EC9C38A46F8C45EE826884710268A471224E10A46F4268847128A46FEB3
:2002A0002688472AC436080726F6441501740BC45EE826C6472CF0EB0990C45EE826C64707
:2002C0002CD0B80100BA60FFEFB800C0BA66FFEFC746EC0000C45EE826807F0A00740DBA6E
:2002E00060FFED0BC075EEC746EC010026C6470A46837EEC007403E97DFF8B5EF28BC3D144
:20030000E303D8D1E38A870C00C476E8268884F8008A870C00268884EC008A870D002688FB
:2003200084F0008A870D00268884E4008A870E0026884442FF76F6E8EBFC83C4028B5E0452
:200340008A470B24033C03747AE8D2FC8946F68B5E048A4746C476E8268884D0008B470AEE
:200360008BC82500023D01001AC0240281E1000183F9011AC980E1080AC880C910884EEEAA
:20038000B80100BA60FFEFB800C0BA66FFEFC746EC0000C45EE826807F0A00740DBA60FF4A
:2003A000ED0BC075EEC746EC01008A46EE2688470AFF76F6E86EFC83C402837EEC00740301
:2003C000E9BDFEC45EFA268B078B760489440C268B470289440E2BC05EC9C390C832000093
:2003E000568B5E048B47048B57068946F68956F88B473A8B573C8946CE8956D08B07894689
:20040000E02BC08946FE8946E68946DE8946D88946F489470AC476F6268944282689442A36
:2004200026894430268B0439470C744CC746E80000EB0490FF46E8837EE81A7D17C45EF648
:20044000268B078B5EE88BCBD1E303D9D1E339870A0075E0837EE81A7506B801005EC9C339
:200460008B46E88946FCC45EF6268B078B5E0489470CB801008946FEC45EF6268B47028B3C
:200480005E048BC833470EA93F02746C8BC180E103884EEEF6C402740980C904884EEEEBAC
:2004A0000F908B5EF6268A47022404D0E00846EE8B5EF6268B47028BC8A8087431253000DB
:2004C0003D3000741D772B0AC074112C1074072C107415EB1D90804EEE40EB16804EEEC0A0
:2004E000EB10804EEE20EB0A804EEEA0EB04804EEE10B801008946E68B5EF626F647030165
:20050000750A268A47388B5E04884738C45EF6268A47398B7604884439268B470289440E12
:20052000268B470489441056E83D0F83C4020BC07406B80B005EC9C38B5E048A4710C0E0AF
:20054000068846EAC45EF6268A4F0280E1C080F98075070C108846EAEB0E268A470224C084
:200560003CC07504804EEA0826F64704087404804EEA028A46EA8B5EE03887A600740A88B7
:2005800087A600B801008946DEC41E080726F64715017406C646FAF0EB04C646FAD0C45E07
:2005A000F626F64704107404804EFA098A46FA8B5EE03887C600740A8887C600B8010089D8
:2005C00046F4C45EF6268B472C268B4F048BD1F6C1807507F6C25074020C0250FF7604E855
:2005E000721383C404C45EF6268B470A8B760489441E894420F6441044742C268B47108975
:20060000442C268B471289442E837C2C0075180BC07514268B47062D200089442C268B471D
:20062000062D400089442EC45EF6268B470C8B7604894430268B470E8B5EE0D1E33987D615
:200640000074370BC0750DC744241100C744261300EB1790C45EF6268A470F2AE48B76045B
:20066000894424268A470E894426C45EF6268B470E8B5EE0D1E38987D600C45EF6268B4700
:20068000348B5EE0D1E33987F600743D0BC075108B5E04C747281100C7472A1300EB1790E1
:2006A0008B5EF6268A47352AE48B7604894428268A473489442AC45EF6268B47348B5EE0F8
:2006C000D1E38987F600B801008A46EA24403C01F51AC024308846E28B5EE03A87B60074C5
:2006E0000A8887B600B801008946D88B5E04C747360000E828F98946EC8B5E048A4746C40E
:200700005ECE268887D000268A87D8008846E4B80100BA60FFEFB800C0BA66FFEFC746D6BD
:200720000000C45ECE26807F0A00740DBA60FFED0BC075EEC746D6010026C6470A80837E43
:20074000D600740CFF76ECE8DBF883C402E9E2FD837EE601750A8A46EEC45ECE26884710FC
:20076000837EDE017510C45ECE268A471224210A46EA26884712837ED8017512C45ECE261E
:200780008A471424C80A46E20C0826884714837EF401750A8A46FAC45ECE2688472AC41E09
:2007A000080726F6471501740BC45ECE26C6472CF0EB0990C45ECE26C6472CD0837EE60168
:2007C000740C837EDE017406837ED8017555C746E84000837EE6017505C746E84200837ECC
:2007E000DE017504804EE804837ED8017504804EE808B80100BA60FFEFB800C0BA66FFEF8F
:20080000C746D60000C45ECE26807F0A00740DBA60FFED0BC075EEC746D601008A46E8265F
:2008200088470A837ED6007403E918FF837EFE01753A8B5EFC8BC3D1E303D8D1E38A870C4F
:2008400000C476CE268884F8008A870C00268884EC008A870D00268884F0008A870D0026A7
:200860008884E4008A870E0026884442C45ECE26804F0C108B76048A4424268847348A4446
:2008800026268847368A4428268847388A442A2688473AFF76ECE88CF783C4028A440B24AB
:2008A000033C037477E876F78946EC8A4446C45ECE268887D0008B440A8BC82500013D0162
:2008C000001AC0240881E1000283F9011AC980E1020AC880C910884EDCB80100BA60FFEF4D
:2008E000B800C0BA66FFEFC746D60000C45ECE26807F0A00740DBA60FFED0BC075EEC746AE
:20090000D601008A46DC2688470AFF76ECE815F783C402837ED6007403E916FC8A46E4C0FA
:20092000E8062AE48946D2C41E080726F647150174148A4EE480E12080F901F51BC983E134
:20094000040BC18946D28A46E424103C01F51BC02508000946D28B46D2C45EF62689472E04
:200960002BC05EC9C390C80E00005756FAE82A09E8F307833E0207017506E8011EE8B61D90
:20098000A10007BA62FFEFB80100BA60FFEFB800C0BA66FFEFBA60FFED0BC075F82BFFE90D
:2009A00094008BDFC1E302C49FF006895EF48C46F626C687D00000B80100BA60FFEFB800DB
:2009C000C0BA66FFEFC45EF426807F0A007408BA60FFED0BC075EE26C68780000026C6472E
:2009E0000A81B80100BA60FFEFB800C0BA66FFEFBA60FFED0BC075F8B80100EFB800C0BA0D
:200A000066FFEFC45EF42680BF8000007508BA60FFED0BC075ED2680BF80004373080653DB
:200A2000E8830183C404C45EF426C68796000026C687FC000A47A1EE069933C22BC2C1F857
:200A40000233C22BC23BC77E03E956FFBB03008EC32BDB26C7070C2026C747024000BB0487
:200A60000026C707BE1C26C747024000BB080026C707AE1B26C7470240002BFFBE8C01EBDC
:200A80004490BA60FFED0BC07508C746F20100EB0B90C45EF426807F0A0075E626C6470AD1
:200AA0001A837EF200740DC45EFC26C747160B0080640B7FC45EF426C6470C9326804F12D8
:200AC000204783C648393EEE067F03E9C2008B44048B54068946FC8956FE8B4C3A8B5C3CF2
:200AE000894EF4895EF68EC28BD826C7078025C45EFC26C74702030026C74704000026C786
:200B00004738FF00A1E00626894706A1E606268947088A4446C45EF4268887D0008BC7C008
:200B2000E0032688473026C6471408B80100BA60FFEFB800C0BA66FFEFC746F20000C45EF6
:200B4000F426807F0A00740DBA60FFED0BC075EEC746F2010026C6470A48C45EF426C687AF
:200B6000D8000126C687DA0002C45EFC26C747140D0056E86E0283C402B80100BA60FFEF22
:200B8000B800C0BA66FFEFC746F20000E903FF90B88C07BA28FFEFFBC41E080726C7470218
:200BA00000005E5FC9C3C81E00008B46048B560605DA008946F08956F28B460405DC00899C
:200BC00046EC8956EE8B460405DE008946FC8956FE8B460405CC008946E68956E88B4604BF
:200BE00005D8008946F48956F68B460405E8008946E28956E48B460405D0008946F88956FA
:200C0000FAC45E0426C687800000C45EE626C60701C45EF826C60703C45EE226C60700C4FA
:200C20005EF826C60702C45EE226C60700C45EF826C60701C45EE226C60700C45EF826C667
:200C40000700C45EE226C60700C45EF826C60704C45EF026C607A8C45EEC26C60700C45EB5
:200C6000FC26C60700C45EF426C60701C45EE626C60703C45EE626C60703C45EE626C60784
:200C800003C45EF826C60704C45EF026C607A8C45EEC26C60720C45EFC26C60700C45EE659
:200CA00026C60703C45EE626C60703C45EE626C60703C45EF426C60700C746EA00008E466E
:200CC000E88B5EE626C60703FF46EA837EEA0F7CF0C45EF826C60704C45EF026C60700C4F8
:200CE0005EEC26C60720C45EFC26C60703C45EF426C60701C45EE626C60703C45EE626C687
:200D00000703C45EE626C60703C45EE626C60703C45EF426C60700C45EE626C60700C45EA7
:200D2000F826C60700B80100BA60FFEFB800C0BA66FFEFEB08BA60FFED0BC0740BC45E0418
:200D40002680BF80000074EDC9C3C41E080726833F0074F6E84F00EBF190C41E080726C7FD
:200D600047020000C390C806000056E8B0F28946FA8B5E048A4746C4773A268884D000C421
:200D8000773A26C6443C00C4773A26C6443E00C45F3A26C6473E04FF76FAE888F283C40267
:200DA0002BC05EC9C390C41E0807268B070BC0740B4874144874172DFE037518C41E08078C
:200DC00026C747020000EB12E88FFFEB0D90E840F2EB079026C747020300C41E080726C72F
:200DE000070000C3C8060000568B5E048B47048B57068946FA8956FC80670B7FC476FA26EB
:200E0000F6441401741C53E8E6F283C4020BC07411C45EFA2689471626C7471400005EC9B0
:200E2000C390C45EFA26F64714037438FF7604E8AA0083C4020BC075D88B5E048B4714C41A
:200E400076FA262B44062B47123DFFFF750F8B471A262B44082B47183DFFFF7407E806038A
:200E60000BC075ADC45EFA26F6471504740DFF7604E868F583C4020BC07596C45EFA26F657
:200E80004714017410FF7604E8DBFE83C4020BC07403E97CFFC45EFA26F64714FC7410FF37
:200EA0007604E8350783C4020BC07403E962FFC45EFA26F6471502740B8B5E04FF37E87B24
:200EC0001983C4028B5E04804F0B802BC0C45EFA26894716268947145EC9C390C81A0000F0
:200EE000568B5E048B47048B57068946FC8956FE8B473A8B573C8946E88956EAC7470A0087
:200F0000008B078946F42BC0C476FC268944282689442A26894430268B4404894710268A77
:200F2000443988473953E83F0583C4020BC07406B80B005EC9C3C45EFC268B472C268B4F30
:200F4000048BD1F6C1807507F6C25074020C0250FF7604E8FE0983C404C45EFC268B470ACF
:200F60008B760489441E89442026837F0E00750CC744241100C744261300EB16C45EFC2614
:200F80008A470F2AE48B7604894424268A470E8944268B5EF4D1E3C787D600FFFFC45EFCA4
:200FA00026837F3400750F8B5E04C747281100C7472A1300EB13268A47352AE48B7604890C
:200FC0004428268A473489442A8B5EF4D1E3C787F600FFFF8B5E048A4710C0E0068846F678
:200FE00024403C01F51AC02430B1FF8B76F4888CA600888CB600C7473600008946E6E81D06
:20100000F08946F88B5E048A4746C476E8268884D000268A84D8008846F026804C0C108A8F
:201020004724268844348A4726268844368A4728268844388A472A2688443A268A4412248C
:201040003F0A46F626884412268A441424C80A46E60C0826884414B80100BA60FFEFB8004A
:20106000C0BA66FFEFC746EE0000C45EE826807F0A00740DBA60FFED0BC075EEC746EE01BD
:201080000026C6470A4CFF76F8E899EF83C402837EEE007403E998FE8A46F0C0E8062AE440
:2010A0008946ECC41E080726F647150174148A4EF080E12080F901F51BC983E1040BC1892A
:2010C00046EC8A46F024103C01F51BC02508000946EC8B46ECC45EFC2689472E8B7604F67B
:2010E000441044742C268B471089442C268B471289442E837C2C0075180BC07514268B47AE
:20110000062D200089442C268B47062D400089442EC45EFC268B470C8B5E048947302BC023
:201120005EC9C390C80200008B46042BD20306D80613D23B16EC067F297C063B06EA0677B8
:2011400021A1D8068946FEA1EA068B4E04010ED8062B06D806C41E0807268947068B46FEFC
:20116000C9C32BC0C9C3C80C000057562BFFBE8C012BC08946FA8946F8EB2490C45C0489AF
:201180005EF48C46F6268B47062BD20146F81156FA268B47080146F81156FA4783C64839E9
:2011A0003EEE067FD7833EEE06087506B8E001EB0490B8E003054000A3D8068B0EEA068BE2
:2011C00016EC062BC883DA003B56FA7F0F7C053B4EF87308B804005E5FC9C3902BFFBE8C18
:2011E00001EB31900346FC4889441A8B441889441C8B4418C45EF42689471C8B441A268957
:20120000471E8B441C268947248B441C268947264783C648393EEE067E7AC45C04895EF423
:201220008C46F6268B47068946FE268B4F08894EFC50E8EFFE83C4028944120BC07495031C
:2012400046FE488944148B44128944168B441E89442080640A7BC45EF426806730CF8B4429
:2012600012268947188B44142689471A8B4416268947208B441626894722FF76FCE8A4FE68
:2012800083C4028944180BC07403E957FFB805005E5FC9C32BC05E5FC9C3C80E00005756E2
:2012A000B8ED07BA28FFEFBA26FFED8946F8B8DD07BA28FFEFBA26FFED8946F4B8BD07BAEE
:2012C00028FFEFBA26FFED8946F2C746F60000EB0490FF46F6837EF6077D278B46F88B5E5A
:2012E000F68BCBD1E303D9C1E30239870C0675E28B46F439870E0675D98B46F239871006C3
:2013000075D08B5EF68BC3D1E303D8C1E3028B871206A3EE06C43608072689440C8B871635
:2013200006C4360807268944148B871406A3E2068B8F16068BD183E10483F9011BC94189BB
:201340000E020781E2800083FA011BC941894EFA48750BB801008B16040083C206EF833EFE
:20136000EE06087505B87C06EB03B86C068946FE833E020701740583F9017505C746FE840E
:2013800006C746F60000EB378B5EFE8B76F68A202AC0BA00906BFE488985C6018995C801F9
:2013A0008A2005C6008985CA018995CC018A202AC005C4008985CE018995D001FF46F6A1EF
:2013C000EE063946F67CC13D08007506B8AC06EB0490B88C068946FC833E020701740683E1
:2013E0007EFA017505C746FCBC06C746F60000EB16908B5EF6D1E38B76FC8B006B5EF64879
:201400008987D201FF46F6A1EE063946F67CE3C746F600008A66F62AC0BA00908B5EF6C188
:20142000E3028987F0068997F206FF46F6837EF6047CE1833EEE0608750CA1EA062D2002F8
:20144000C1E804EB0A90A1EA062D2004C1E8058946F824F0A3E606A3E006833E0207017597
:2014600003E8C8135E5FC9C3C8140000C746FA0000833EE206017540833E0207007539C7DC
:2014800046F20000C746F88C01EB1B908B5EF8F6471120740A8BC8B80100D3E00946FAFF18
:2014A00046F28346F8488B46F23906EE067FDD8B46FA3906CC0675042BC0C9C3A3CC068BCD
:2014C0005E048B47048B57068946FC8956FE8B473A8B573C8946EC8956EEE841EB8946F6B9
:2014E0008B5E048A4746C45EEC268887D000B80100BA60FFEFB800C0BA66FFEFC746F00091
:2015000000C45EEC26807F0A00740DBA60FFED0BC075EEC746F0010026C6470A11C45EFC6F
:2015200026804F30018B5E048A670B2500028946F4804F0B02FF76F6E8EAEA83C402837E65
:20154000F0007406B80B00C9C3908A46FA2AE48B16040083C208EE833EEE0610750B8A4675
:20156000FB8B16040083C20AEEF646F5027403E946FFE8A9EA8946F68B5E048A4746C45E50
:20158000EC268887D000B80100BA60FFEFB800C0BA66FFEFC746F00000C45EEC26807F0AD9
:2015A00000740DBA60FFED0BC075EEC746F0010026C6470A12C45EFC26806730FE8B5E04E3
:2015C00080670BFDFF76F6E85BEA83C402837EF0007503E9E2FEE96BFF90C80C0000568B71
:2015E0005E048B47048B57068946FC8956FE8B4F3A8B773C894EF48976F68EC28BF026F62A
:201600004414047503E99700E813EA8946FA8B5E048B47128947168B471E8947208B471649
:20162000C476FC268944208B4716268944228A4746C45EF4268887D000B80100BA60FFEF71
:20164000B800C0BA66FFEFC746F80000C45EF426807F0A00740DBA60FFED0BC075EEC746F8
:20166000F8010026C6470A118B5E04F6470B027525B80100BA60FFEFB800C0BA66FFEFC744
:2016800046F80000C45EF426807F0A007403E9DB0026C6470A12FF76FAE889E983C402C467
:2016A0005EFC26F64714087503E9EA00E86FE98946FA8B5E048B471889471CC476FC268B53
:2016C00044262639442474318B4702C43608072609441A8B4702C43608072609441A8B478E
:2016E00002C4360807260944048B4702C41E080726094704800E0407028B5E048B471CC4EF
:2017000076FC268944248B471C268944268A4746C45EF4268887D000B80100BA60FFEFB88E
:2017200000C0BA66FFEFC746F80000C45EF426807F0A00740DBA60FFED0BC075EEC746F8D7
:20174000010026C6470A82FF76FAE8D8E883C4028B5E04F64710207430833EE2060175202C
:20176000C45EF426C687DA0000EB1E90BA60FFED0BC07403E90DFFC746F80100E912FF90A0
:20178000C45EF426C687D80000837EF8007407B80B005EC9C390C45EFC26F64714107461BD
:2017A000E87BE88946FA8B5E048A4746C45EF4268887D000B80100BA60FFEFB800C0BA669D
:2017C000FFEFC746F80000C45EF426807F0A00740DBA60FFED0BC075EEC746F8010026C62A
:2017E000470A12C45EFC26806730FE8B5E0480670BFDFF76FAE82DE883C402837EF800752E
:201800008EC45EFC26F64714207464E810E88946FA8B5E048A4746C45EF4268887D000B82D
:201820000100BA60FFEFB800C0BA66FFEFC746F80000C45EF426807F0A00740DBA60FFED48
:201840000BC075EEC746F8010026C6470A11C45EFC26804F30018B5E04804F0B02FF76FA8A
:20186000E8C2E783C402837EF8007403E920FFC45EFC26F64714407464E8A2E78946FA8BA4
:201880005E048A4746C45EF4268887D000B80100BA60FFEFB800C0BA66FFEFC746F8000068
:2018A000C45EF426807F0A00740DBA60FFED0BC075EEC746F8010026C6470A18C45EFC268F
:2018C000806730FD8B5E0480670BFEFF76FAE854E783C402837EF8007403E9B2FEC45EFC15
:2018E00026F64714807468E834E78946FA8B5E048A4746C45EF4268887D000B80100BA6057
:20190000FFEFB800C0BA66FFEFC746F80000C45EF426807F0A00740DBA60FFED0BC075EE54
:20192000C746F8010026C6470A14C45EFC26804F30028B5E04804F0B0180670AFEFF76FAE5
:20194000E8E2E683C402837EF8007403E940FE2BC05EC9C3C80A0000568B76048B443A8B61
:20196000543C8946F68956F8E8B3E68946FA8A4446C45EF6268887D000833EE20601751A87
:201980008A46062501003D01001AC0FEC0268887D8008A4606250200EB1B8A460625020068
:2019A0003D01001AC0FEC0C45EF6268887D8008A46062501003D0100F51AC02402268887C8
:2019C000DA00F6460610741A837C34007514C744320100C45EF626F6470C06750526804F57
:2019E0000C02FF76FAE83DE683C4028B46068944225EC9C3C80E0000568B76048B44048BD7
:201A000054068946FC8956FE8B4C3A8B5C3C894EF2895EF48EC28BD88B4C16262B4F222664
:201A20003B4F06760426034F068BC139442E7303E9D900F6440A047503E98C00E8DFE58985
:201A400046F8F6441020741B833EE20601750BC45EF226C687DA0002EB09C45EF226C68747
:201A6000D800018A4446C45EF2268887D000B80100BA60FFEFB800C0BA66FFEFC746F60016
:201A800000C45EF226807F0A00740DBA60FFED0BC075EEC746F6010026C6470A2380640AFC
:201AA000FBC45EFC26806730EFFF76F8E876E583C402837EF6007410C45EFC26C747160BFA
:201AC0000080640B7F5EC9C3F6440A80743EE84DE58946F88A4446C45EF2268887D00083A7
:201AE0003EE20601750826C687DA0002EB09C45EF226C687D8000180640A7FC45EFC26806E
:201B00006730DFFF76F8E81CE583C4025EC9C3906AFFFF360607E84B0083C4046AFFFF366F
:201B20000607E85F0083C4040BC0740DC41E080726C747020200E811F26A00FF360607E812
:201B4000220083C4046A00FF360607E8360083C4040BC0740DC41E080726C747020200E8A6
:201B6000E8F1C390558BEC56BE04008B46068BDE8B4E048EC126890746463936EA0675EBE8
:201B80005EC9C390558BEC56BE04008B46068BDE8B4E048EC12639077406B801005EC9C3F8
:201BA00046463936EA0675E32BC05EC9C390601E068BEC83EC10B8C6028ED8FC8B1604007C
:201BC00083C204EC2AE48946F43DFF007503E9E0008A5EF483E3788BC3C1E30303D881C3B4
:201BE0008C01895EFE8B473A8B573C8946F08956F28B4F048B7706894EFA8976FC8EC28B2C
:201C0000F8268A85D8002AE48946F825C000C1F8068946F6F64710087418A801740C8EC623
:201C20008BD926806730F7EB0990C45EFA26804F30088B5EFEF6471080746DC41E08072693
:201C4000F647150174128A46F82520003D0100F51BC02504000946F68A46F82510003D01E7
:201C600000F51BC02508000946F68B46F6C45EFA2689472E8B5EFE8B4702C4360807260928
:201C8000441C8B4702C43608072609441C8B4702C4360807260944048B4702C41E08072639
:201CA000094704800E040702C45EF026C687C00000B80080BA22FFEF8BE5071F61CF601EAA
:201CC000068BEC83EC24B8C6028ED8FC8B1604004242EC2AE48946E23DFF007503E91F037F
:201CE0008A5EE283E3788BC3C1E30303D881C38C01895EFA8B473A8B573C8946DC8956DE28
:201D00008B4F3E8B7740894EE68976E88B4F048B7706894EF48976F6837F320074788EC2AF
:201D20008BF026804C1220C747340100C747320000F6471020741C833EE20601750CC45E37
:201D4000DC26C687DA0002EB0A90C45EDC26C687D80001C45EE626C6070026C6078126C62E
:201D6000070026C6078226C607FA26C6078226C607FA26C6078226C607FA26C6078226C6D5
:201D800007FA26C6078226C607AC26C6070026C60783E9610290837F34007447C45EDC26D4
:201DA000F6470C04740526806712DF8B5EFAF6471020741B833EE20601750BC45EDC26C66C
:201DC00087DA0000EB09C45EDC26C687D80000C45EF42680672CEF8B5EFA806722EFC7473E
:201DE000340000C45EF4268B47248946F2268B4F26894EEE268B57088956E48BD82BC18926
:201E000046F83BD9730503D08956F8837EF8007503E94601C45EDC26F6470C02741C268008
:201E20006712DFC476F426804C3601C45EDC268A470C24FD0C042688470C8B5EFAF6471090
:201E400020741C833EE20601750CC45EDC26C687DA0002EB0A90C45EDC26C687D800018B00
:201E60005EFA8B471A2B46EE408946EC8B4EF883E90C1BD223CA83C10C894EE02BC11BD2C1
:201E800023C203C18946F02BC8894EEAA10C078B160E070346EE8946FC8956FE1E8B46F0FE
:201EA000C47EE6C576FCFCA44874034FEBF91F837EEA0074288B5EFA8B471803060C078B17
:201EC000160E078946FC8956FE1E8B46EAC47EE6C576FCFCA44874044FEBF9901F8B5EFAD2
:201EE0008B471A8B4EE0014EEE3946EE76098B46EE2B46E48946EE8B46EE89471CC45EF482
:201F0000268947262639472474188B46F82639470C7203E9E0002B46E0263B470C7603E92F
:201F2000D4008B5EFA8B4702C43608072609441A8B4702C43608072609441A8B4702C43648
:201F40000807260944048B4702C41E080726094704800E040702E99D0090C45EDC26F647AA
:201F60000C047410268A470C24FB0C022688470CE9830090C45EF426F647360174698B5E2A
:201F8000FAF6471020741C833EE20601750CC45EDC26C687DA0000EB0A90C45EDC26C687DE
:201FA000D80000C45EDC26804F1220C45EF426806736FE8B5EFA8B4702C43608072609449A
:201FC0001A8B4702C43608072609441A8B4702C4360807260944048B4702C41E0807260935
:201FE0004704800E040702C45EE626C6070026C6078226C60710C45EDC26C687C00000B89F
:202000000080BA22FFEF8BE5071F61CF601E068BEC83EC30B8C6028ED8FC8B160400EC2A79
:20202000E48946D63DFF007503E93C058A5ED683E3788BC3C1E30303D881C38C01895EF81D
:202040008B473A8B573C8946D28956D48B47428B57448946E48956E68B47048B57068946C3
:20206000EE8956F08EC28BF0268B4C22894EF68B7F16897EFA268B5C06895EEC8BC103CBCB
:202080002BCF49894ED83BC776052BCB894ED88BDE26F64703047403D16ED8F646D6047441
:2020A00003E90C03C45ED2268A471C2AE42B46D81BC923C10346D88946F20BC07503E9DF12
:2020C000028B5EF8C7473600008B47142B46FA408946E8C45EEE26F64703047405D1E8895C
:2020E00046E82B46F21BC923C10346F28946EA2B46F2F7D88946E0A10C078B160E070346FF
:20210000FA8946FC8956FE8B5EF8F6470F047470EB1CC45EE4268A078846F4C45EFCFF461F
:20212000FC268807C45EFCFF46FC26C607008B46EAFF4EEA0BC075DA3946E07503E9FF00D1
:202140008B5EF88B471203060C078B160E078946FC8956FEEB1CC45EE4268A078846F4C4F6
:202160005EFCFF46FC268807C45EFCFF46FC26C607008B46E0FF4EE00BC075DAE9C000908C
:20218000F64711107478EB219090C45EE4268A078846F48B5EF8384739740BC45EFCFF46CF
:2021A000FC268807EB03FF4EF28B46EAFF4EEA0BC075D73946E07503E984008B5EF88B4741
:2021C0001203060C078B160E078946FC8956FEEB2090C45EE4268A078846F48B5EF83847F9
:2021E00039740BC45EFCFF46FC268807EB03FF4EF28B46E0FF4EE00BC075D7EB42901E8B8B
:2022000046EAC47EFCC576E4FCA44874034EEBF91F837EE00074288B5EF88B471203060C2A
:20222000078B160E078946FC8956FE1E8B46E0C47EFCC576E4FCA44874044EEBF9901F8B41
:2022400046F22946D80146FA8B5EF8F6470F0474030146FA8B46FA39471473068B46EC2917
:2022600046FA8B46FA894716C476EE2689442026C74432FFFFF6470F0474078B46ECD1E890
:20228000EB038B46EC2B46D88946EA8B5EF88B47108BC8A8447503E9D1008B46EA39472CF6
:2022A0007203E9C600F6C1407430F6470A80752A833EE20601750BC45ED226C687DA00008E
:2022C000EB09C45ED226C687D800008B5EF8804F0A80C45EEE26804F30208B5EF8F647100E
:2022E000047503E985008B470A8BC8A804757CF7C10101752FB80100BA60FFEFB800C0BAD7
:2023000066FFEFC746DA0000C45ED226807F0A00740DBA60FFED0BC075EEC746DA0100269C
:20232000C6470A18B80100BA60FFEFB800C0BA66FFEFC746DA0000C45ED226807F0A0075A8
:202340004F26C6470A24837EDA007410C45EEE26C747160B008B5EF880670B7F8B5EF88056
:202360004F0A04C45EEE26804F30108B46F28B5EF8294720837F20007E09837ED80074038E
:20238000E9DC018B5EF88B471E894720E9810190BA60FFED0BC0759FC746DA0100EBA290D1
:2023A000268A471C2AE48B76F8804C0B08E9AA01C45EE4268A072AE48946DC24703C607575
:2023C0000B8B76F8C744360000268A07837ED8007503E96F01F646DC0F7503E96601C45E46
:2023E000EE26837F2A00750A8B76F88B44162689472A8A46DC2502003D0100F51BC0250416
:20240000008A4EDC83E10483F901F51BC983E1020BC18A4EDC83E1090BC18946E2A8087456
:20242000158B5EF8837F3600740CC45EE4268A072AE4E92A0190F646E20874088B5EF8C735
:20244000473601008B5EF8F6470F04743FC476E4268A048B5F16C4360C072688008B5EF8AC
:20246000FF47168B471639471473068B47128947168A46E28B5EF88D4F168BD98B1FC436B4
:202480000C072688008BD9FF07EB2290F6470F017408C476E4268A04EB038A47388B5F16E2
:2024A000C4360C072688008B5EF8FF47168B5EF88B471639471473068B47128947168B5E9B
:2024C000F88B4716C476EE2689442026C74432FFFF8B471E8947208B46E2260944288B5E69
:2024E000F88B4702C4360807260944168B4702C4360807260944168B4702C436080726090C
:2025000044048B4702C41E0807260947048B5EF88B4702C4360807260944188B4702C4361D
:202520000807260944188B4702C4360807260944048B4702C41E080726094704800E0407D5
:2025400002EB1C90F646DC8075C3837ED800750F8B5EF8804F0B08C45ED22680670CEFC432
:202560005ED226C687C00000B80080BA22FFEF8BE5071F61CF90C818000056C746F4000069
:20258000BE8C01E928018B44048B54068946F88956FA8B4C3A8B5C3C894EE8895EEAF64488
:2025A0000B807503E9BF00F644108074158EC28BD8268B472C3B442274085056E895F38390
:2025C000C404F6440B0874488B4416C45EF8268B4F22262B4706F7D88BD103C8894EEC3B77
:2025E00054167607262B4F06894EECF6440F047403D17EEC837EEC0C7C16FA80640BF78A97
:202600004446C45EE8268887D00026804F0C10FBF6440A84740756E8DAF383C402FA8A44B6
:2026200046C45EE8268887D000268A47162AE4268A8FD8002AEDFB83E00483F801F51BC04E
:2026400083E0048946EEF6C140750BF644100874050C088946EEC45EF8268B473024F30BDF
:2026600046EE26894730C45EF826837F1400743856E870E783C4028B4402C41E080726092F
:20268000471E8B4402C41E08072609471E8B4402C41E0807260947048B4402C41E0807265B
:2026A000094704800E040702FF46F483C648A1EE063946F47D03E9CDFEC41E080726833F4C
:2026C000007403E8E0E6C41E080726F6471201740B800E04070126C747120000F606040708
:2026E000027407F6060407017512C41E080726837F04007417F60604070174102BC08B160E
:202700000800EEB80300EE80260407FD833E0207017403E965FEE8A500E95FFE601E068BFC
:20272000ECB8C6028ED8FCFF06E806B80080BA22FFEF071F61CFBB04008EC3BB080026C7C0
:20274000071C2726C747024000B8409CBA5AFFEFB801E0BA5EFFEFC3FE06E4068026E40643
:2027600007A0E4062AE48B16040083C20E8BD8EE8A87D0068B16040083C20CEEC390C60687
:20278000E406002BC08B16040083C20EEEA0D0062AE48B16040083C20CEEC3908036CF0638
:2027A000808A1EE4062AFF8A87D0062AE48A0ECF062AED03C18B16040083C20CEEC3C80230
:2027C00000008B16040083C20AEC2501008946FEA0CE062AE40BC0740948741A48743DC9C4
:2027E000C390837EFE007541C706E8060000C606CE0601C9C390837EFE007518833EE8061E
:20280000057626C606CE0602C706E8060000E847FFC9C390C606CE0600C9C390837EFE00B5
:2028200075F2833EE8061977DFC9C3902BC08B16040083C208EEB8FF00EEC390558BECB8B0
:1828400001008A4E04D3E0F7D08B16040083C208EEB8FF00EEC9C39088
:0200000202C634
:20000000FF000000000600048004320004C3FF004500048EFF004B000482FF006E000459EA
:20002000FF0086000449FF0096000441FF00C8000431FF002C010382FF0058020341BC000E
:200040001A0402956B00B00402825E00080702573E00D007024E3800600902412F00C01238
:2000600001821700201C01570F00802501410B00403800AE0700004B00820500B77A0050D1
:200080000300009600410300C0DA002D020000E1002B020000FA0027020000FF0021030066
:2000A00001FF00160300FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
:2000C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
:2000E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
:20010000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4176616E73746172204352
:200120006F6E74726F6C2050726F6772616D202056657220312E343400436F7079726967F8
:2001400068742028632920313939332D3139393520204469676920496E7465726E61746969
:200160006F6E616C2020200041313030435056455253494F4E3D312E3434004178787849F4
:200180002E4350001601390168017B01000001002000000000000000000000000000000047
:2001A00000000000000000000000000000000000000000000000000000000000000000003F
:2001C00000000000FF000000000000000000000000000000010002006000000000000000BD
:2001E0000000000000000000000000000000000000000000000000000000000000000000FF
:20020000000000000000000000000000FF00000000000000000000000000000002000400D9
:20022000A0000000000000000000000000000000000000000000000000000000000000001E
:200240000000000000000000000000000000000000000000FF00000000000000000000009F
:200260000000000003000800E0000000000000000000000000000000000000000000000093
:2002800000000000000000000000000000000000000000000000000000000000FF0000005F
:2002A000000000000000000000000000040010002001000000000000000000000000000009
:2002C00000000000000000000000000000000000000000000000000000000000000000001E
:2002E00000000000FF00000000000000000000000000000005002000600100000000000079
:200300000000000000000000000000000000000000000000000000000000000000000000DD
:20032000000000000000000000000000FF0000000000000000000000000000000600400078
:20034000A001000000000000000000000000000000000000000000000000000000000000FC
:200360000000000000000000000000000000000000000000FF00000000000000000000007E
:200380000000000007008000E00100000000000000000000000000000000000000000000F5
:2003A00000000000000000000000000000000000000000000000000000000000FF0000003E
:2003C0000000000000000000000000000800000120020000000000000000000000000000F2
:2003E0000000000000000000000000000000000000000000000000000000000000000000FD
:2004000000000000FF00000000000000000000000000000009000002600200000000000070
:200420000000000000000000000000000000000000000000000000000000000000000000BC
:20044000000000000000000000000000FF0000000000000000000000000000000A0000048F
:20046000A002000000000000000000000000000000000000000000000000000000000000DA
:200480000000000000000000000000000000000000000000FF00000000000000000000005D
:2004A000000000000B000008E0020000000000000000000000000000000000000000000047
:2004C00000000000000000000000000000000000000000000000000000000000FF0000001D
:2004E0000000000000000000000000000C00001020030000000000000000000000000000BD
:200500000000000000000000000000000000000000000000000000000000000000000000DB
:2005200000000000FF0000000000000000000000000000000D00002060030000000000002C
:2005400000000000000000000000000000000000000000000000000000000000000000009B
:20056000000000000000000000000000FF0000000000000000000000000000000E0000402E
:20058000A003000000000000000000000000000000000000000000000000000000000000B8
:2005A0000000000000000000000000000000000000000000FF00000000000000000000003C
:2005C000000000000F000080E00300000000000000000000000000000000000000000000A9
:2005E00000000000000000000000000000000000000000000000000000000000FF000000FC
:2006000000000000000000000000000000000000000010000000013E0C80000000001000EF
:200620000100013F00000D80000008000100013F0C800D80000010000100033F0000000037
:200640000E800800010081320C8000000E8008000100053F00000D800E8008000100033F83
:2006600000000000000010000000013E000001010202030300000101020203030000010111
:2006800000000101000000000101010100000100000001000000010000000100020003004B
:2006A00002000300020003000200030000000100000001000200030002000300000001001E
:1806C00002000300000001000200030055550000F9A4B0999282F880FB
:020000020333C6
:020000020333C6
:020000020FD01D
:2000000088FF0100810080FF0100150032FF0A000F000F000F001A001B0019000F000F006E
:200020000F000F00C0FF0600000000000000000001000402D0FF0600000000000000000001
:200040000100040250FF0400000000000000004058FF0400000000000000004060FF040008
:200060000000000000000040A0FF050038F0F80FF800F881B8A0FAFCB8D00F8ED82E8B16E2
:2000800068002E8B0E6A00BE6C006F83C202E2FAB8C6028ED8BAA4FFB80000EFED83E04091
:2000A0007428B80000BA70FFEFBA76FFEFBA72FFEFBA78FFEFBAA4FFB8F800EFBAA2FFB86D
:2000C000B80FEFC606000001EB0CBAA4FFB87C00EFC606000000BA0000B800008EC0BB00DF
:2000E00004B9FEFB268A0703D043E2F8B8C6028ED88916010033C08ED88BF8BB4000B9008D
:2001000001B800008905895D0283C704E2F6C70620000100891E2200C70648000100891E16
:200120004A00C7064C000100891E4E00C70628000100891E2A00C7062C000100891E2E00D0
:20014000C70630000100891E3200C70630000100891E3200C70634000100891E3600C70645
:2001600038000100891E3A00C7063C000100891E3E00C70640000100891E4200C70644006E
:200180000100891E4600C70650000100891E5200B8D00F8ED82E8B160C002E8B0E0E00BEEF
:2001A00010006F83C202E2FA2E8B1644002E8B0E4600BE48006F83C202E2FA2E8B165000C6
:2001C0002E8B0E5200BE54006F83C202E2FA2E8B165C002E8B0E5E00BE60006F83C202E25C
:2001E000FA2E8B1624002E8B0E2600BE28006F83C202E2FA2E8B1634002E8B0E3600BE38B7
:20020000006F83C202E2FA2E8B1600002E8B0E0200BE04006F83C202E2FA2E8B1606002E5D
:200220008B0E0800BE0A006F83C202E2FAB8C6028ED88EC08ED0BC101733C0509A320040FF
:0402400000FAEBFED7
:020000020FFFEE
:10000000BAA2FFB8F80FEFEA7600D00F0C0000009C
:040000030FFF0000EB
:00000001FF

BIN
sys/lib/astar/a100p.cp Executable file

Binary file not shown.

96
sys/lib/backup/backup Executable file
View File

@ -0,0 +1,96 @@
#!/bin/rc
# backup [-n] [-d dev] [-s set] - backup venti arenas to disc set using dev
# and record that. also print recent fossil dump scores.
rfork ne
cd /sys/lib/backup
. funcs
bind -a . /bin
done=0
while (~ $done 0 && ! ~ $#* 0 && ~ $1 -*) {
switch ($1) {
case -d; rdev=$2; shift
case -n; debug=yes # don't dump; use with -s test
case -s; set=$2 ; shift
case --; done = 1 # no break in rc, alas
case -*
echo usage: $0 '[-n] [-d dev] [-s set]' >[1=2]
exit usage
}
shift
}
fn sigint sighup sigterm {
exit note
}
fn dobackuparenas {
if (~ $debug yes) {
echo pretending to backuparenas $*
shift
for (name)
dumpdone arena0 $name
}
if not
backuparenas $*
}
fn backupdisc {
echo please insert disc $disc of set $set into $rdev and press return to backup
echo -n $"*^': '
if (! ~ $debug yes)
junk=`{read}
if not
echo
dobackuparenas $rdev $*
}
fn backup1 {
progress=no
disc1trks=`{hoc -e $ntracks-$tracks}
disc1arenas=()
if (! ~ $disc1trks 0)
disc1arenas=`{sed $disc1trks^q arenas}
if (! ~ $#disc1arenas 0 && ! ~ $disc1trks 0 && backupdisc $disc1arenas){
tracks = `{hoc -e $tracks+$#disc1arenas}
if (test $tracks -ge $ntracks) {
disc=`{hoc -e $disc+1}
tracks=0
}
updprog
sed 1,$disc1trks^d arenas >morearenas
mv morearenas arenas
arenas=`{cat arenas}
}
}
cd $set
tobackup $set >arenas
quitonfailure $status
arenas=`{cat arenas}
if (~ $#arenas 0) {
echo no sealed arenas not yet on disc exist on $fs
exit ''
}
if (test -s disc)
. disc
if not
updprog
if (! ~ $debug yes && ~ $set set1) {
9fs log
# don't hang in lp
tail -50 /n/$fs/sys/log/fs.archive |
pr -h 'recent fossil dump scores' | lp &
echo fossil dump scores just printed.
}
progress=yes
while (test $#arenas -gt 0 && ~ $progress yes) {
backup1
quitonfailure $status
}
exit ''

33
sys/lib/backup/backuparenas Executable file
View File

@ -0,0 +1,33 @@
#!/bin/rc
# backuparenas dev name ... - dump arena `name' from $fs to blu-ray disc.
# assumes $set is set.
rfork ne
# tunable variables
fs=pie
if (test -e /sys/lib/backup/funcs)
. /sys/lib/backup/funcs
exits=''
fsroot=/n/$fs
if (! test -e $fsroot/!THIS_IS_^`{echo $fs | tr a-z A-Z}^_MAIN) {
import $fs / $fsroot || exit
}
unmount /mnt/cd >[2]/dev/null
cdfs -d $1 || exit
shift
cd $fsroot/dev/fs
for (name) {
grep next /mnt/cd/ctl
if (! {venti/rdarena arena0 $name |
pump -i 65536 -o 1048576 -k 51200 -d 10 >/mnt/cd/wd/$name})
exit
# ls -l /mnt/cd
if (test -e '/env/fn#dumpdone' -a -e '/env/set')
dumpdone arena0 $name
}
echo 'remember to *not* remove /mnt/cd/wd' >[1=2]
# don't remove /mnt/cd/wd, since that would finalize the disc
# and bugger the permanent toc, at least on bd-r.
exit ''

23
sys/lib/backup/dupdisc Executable file
View File

@ -0,0 +1,23 @@
#!/bin/rc
# dupdisc indev outdev - duplicate all blu-ray disc data tracks
rfork ne
if (! ~ $#* 2 || ~ $1 $2 || ~ $1 /dev/* || ~ $2 /dev/*) {
echo usage: $0 indev outdev >[1=2]
exit usage
}
echo copying /dev/$1 tracks to /dev/$2
sleep 2
umount /mnt/cd >[2]/dev/null
cdfs -d /dev/$1 || exit
cdfs -d /dev/$2 -m /n/copy || exit
for (t in `{ls -p /mnt/cd | grep '^d'}) {
echo $t:
grep next /n/copy/ctl
pump -b 1048576 -k 51200 -d 10 </mnt/cd/$t >/n/copy/wd/$t
ls -l /n/copy
}
echo 'remember to *not* rm /mnt/cd/wd' >[1=2]
# don't remove /mnt/cd/wd, since that would finalize the disc
# and bugger the permanent toc, at least on bd-r.

57
sys/lib/backup/funcs Executable file
View File

@ -0,0 +1,57 @@
#!/bin/rc
# funcs - rc functions and definitions common to dump scripts
fn backupinit {
if (! ~ $backupinitdone yes) {
disc=1
tracks=0
# tunable parameters
set=set1
fs=pie
arenas=/dev/sde0/arena0 # on $fs
rdev=/dev/sdE1 # on terminal with bd burner
blocksize=8192
arenasize=1073741824 # twice the venti default, on yoshimi & pie
# trackbytes=$arenasize
# discbytes=`{ls -l $rdev/data | awk '{print $6}'}
# ntracks=`{ hoc -e 'int('$discbytes/$trackbytes')' }
ntracks=45 # for BD dual-layer
backupinitdone=yes
backups=/sys/lib/backup
path=(/bin $backups .)
}
}
# assume we're in $backups/$set
fn updprog {
echo 'disc='$disc 'tracks='$tracks >ndisc && mv ndisc disc
}
# assumes $set is set
fn dumpdone { # arena-part arena-name
@ {
cd $backups/$set
progress=yes
tracks = `{hoc -e $tracks+1}
updprog
if (~ $debug yes)
echo $2 >>fake # pretend these are sealed
echo $2 >>ondisc
}
}
fn quitonfailure { # exit-status
if (! ~ $1 '' 0 '|')
exit $1
}
# caller sets arenabase first
fn arenastart { # arena#
bytes = `{ echo $arenabase' + ('$1' * '$arenasize')' | bc }
blocks = `{ echo $bytes' / '$blocksize | bc }
echo $blocks
}
backupinit

6
sys/lib/backup/mkfile Executable file
View File

@ -0,0 +1,6 @@
clean:V:
rm -f index
setup:V:
mkdir set1
backup:V:
./backup

90
sys/lib/backup/restore Executable file
View File

@ -0,0 +1,90 @@
#!/bin/rc
# restore arena# [dev] - load venti with arenas on dev, stored one per track
# starting with arena#. must have run fmtarenas before restoring
# the first arena in the partition.
# this must be run on the venti server, without venti running on the
# affected arena partition(s).
rfork ne
if (test -e /sys/lib/backup/funcs)
. /sys/lib/backup/funcs
switch ($#*) {
case 1
case 2
rdev=$2
case *
echo usage: $0 arena-num '[dev]' >[1=2]
exit usage
}
starena=$1
if (! ~ $starena [0-9] [0-9][0-9] [0-9][0-9][0-9]) {
echo $0: bad starting arena: $starena >[1=2]
exit bad-arena-num
}
# clear any dregs from a previous run
unmount /mnt/cd >[2]/dev/null
sleep 1
kill cdfs | rc
sleep 1
cdfs -d $rdev || exit
cd /mnt/cd
#for (track in d[0-9]*)
# venti/wrarena $track # slow; takes about 12½ mins. per GB
arena = $starena
# set arenabase for arenastart
arenabase = `{ venti/printarenapart $arenas | sed -e 's/.*arenabase=//' -e 1q }
kill printarenapart | rc # printarenapart leaves a process behind
# echo arenabase $arenabase
skipping=yes
for (track in d[0-9]*) {
if (~ track 'd[0-9]*') {
echo $0: no tracks in /mnt/cd >[1=2]
exit no-tracks
}
if (~ $skipping yes) {
# verify that first track is the expected one
type=`{file $track}
switch ($"type) {
case *': venti arena'
name=`{ venti/printarena $track >[2=1] |
sed -e 's/.*name=([^ =]+).*/\1/' -e 1q }
case *
name=NOT-A-VENTI-ARENA
}
kill printarena | rc # printarena leaves a process behind
echo -n first track is $"name'; is that right? '
switch (`{read}) {
case [yY]*
skipping=no
case skip
skipping=yes
case *
echo aborting, arena is unchanged. >[1=2]
exit 'wrong track'
}
}
if (! ~ $skipping yes) {
# copy each track into its slot in the arena partition
venti/printarena $track >[2=1] | sed 1q | tr -d '\12'
kill printarena | rc # printarena leaves a process behind
off = `{arenastart $arena}
# echo -n writing $track to $arenas at 8K-block offset $off:
sleep 3
echo
# argh! something (cdfs?) appends 60K of *stuff* to each
# arena on optical disc. restrain dd.
count=`{ echo $arenasize/$blocksize | bc }
pump -i 1048576 -o 65536 -d 10 <$track |
dd -quiet 1 -count $count -bs $blocksize -of $arenas \
-oseek $off
arena = `{hoc -e $arena+1}
}
}
# when all done, must run venti/checkarenas, fmtisect, fmtbloom, fmtindex,
# and (the big one) venti/buildindex -b /cfg/pie/venti.conf

47
sys/lib/backup/tobackup Executable file
View File

@ -0,0 +1,47 @@
#!/bin/rc
# tobackup [set] - print names of venti arenas needing to be dumped to disc set
rfork e
cd /sys/lib/backup
. funcs
switch ($#*) {
case 0
case 1
set=$1
case *
echo usage: $0 '[set]' >[1=2]
exit usage
}
if (! test -d $set) {
echo $0: no backup set named $set in $backup >[1=2]
exit 'no backup set'
}
if (! hget -o index http://$fs/index) {
echo $0: 'can''t fetch venti index from' $fs >[1=2]
exit 'no venti index'
}
if (! test -s index) {
echo $0: 'empty venti index from' $fs >[1=2]
exit 'empty index'
}
cd $set
awk '/^arena=/ { name=$1 }
/ disk=sealed/ { print name; name = "" }
' ../index | sed 's/^arena=//' >nsealed
>>sealed
if (! cmp -s sealed nsealed)
cp nsealed sealed
rm -f nsealed
if (! test -s sealed)
exit ''
>>fake
if (test -s ondisc)
comm -23 <{sort -u sealed fake} <{sort -u ondisc}
if not { # first sealed arenas, dump all
cat sealed
chmod +a ondisc >>ondisc
}

246
sys/lib/bclib Executable file
View File

@ -0,0 +1,246 @@
scale = 50
define e(x) {
auto a, b, c, d, e, g, w, y, t, r
r = ibase
ibase = A
t = scale
scale = t + .434*x + 1
w = 0
if(x<0) {
x = -x
w = 1
}
y = 0
while(x>2) {
x /= 2
y++
}
a = 1
b = 1
c = b
d = 1
e = 1
for(a=1; 1; a++) {
b *= x
c = c*a+b
d *= a
g = c/d
if(g == e) {
g = g/1
while(y--) {
g *= g
}
scale = t
if(w==1) {
ibase = r
return 1/g
}
ibase = r
return g/1
}
e = g
}
}
define l(x) {
auto a, b, c, d, e, f, g, u, s, t, r, z
r = ibase
ibase = A
if(x <= 0) {
z = 1-10^scale
ibase = r
return z
}
t = scale
f = 1
scale += scale(x) - length(x) + 1
s = scale
while(x > 2) {
s += (length(x)-scale(x))/2 + 1
if(s>0) {
scale = s
}
x = sqrt(x)
f *= 2
}
while(x < .5) {
s += (length(x)-scale(x))/2 + 1
if(s>0) {
scale = s
}
x = sqrt(x)
f *= 2
}
scale = t + length(f) - scale(f) + 1
u = (x-1)/(x+1)
scale += 1.1*length(t) - 1.1*scale(t)
s = u*u
b = 2*f
c = b
d = 1
e = 1
for(a=3; 1; a=a+2){
b *= s
c = c*a + d*b
d *= a
g = c/d
if(g==e) {
scale = t
ibase = r
return u*c/d
}
e = g
}
}
define s(x) {
auto a, b, c, s, t, y, p, n, i, r
r = ibase
ibase = A
t = scale
y = x/.7853
s = t + length(y) - scale(y)
if(s<t) {
s = t
}
scale = s
p = a(1)
scale = 0
if(x>=0) {
n = (x/(2*p)+1)/2
}
if(x<0) {
n = (x/(2*p)-1)/2
}
x -= 4*n*p
if(n%2 != 0) {
x = -x
}
scale = t + length(1.2*t) - scale(1.2*t)
y = -x*x
a = x
b = 1
s = x
for(i=3; 1; i+=2) {
a *= y
b *= i*(i-1)
c = a/b
if(c==0){
scale = t
ibase = r
return s/1
}
s += c
}
}
define c(x) {
auto t, r
r = ibase
ibase = A
t = scale
scale = scale+1
x = s(x + 2*a(1))
scale = t
ibase = r
return x/1
}
define a(x) {
auto a, b, c, d, e, f, g, s, t, r, z
r = ibase
ibase = A
if(x==0) {
return 0
}
if(x==1) {
z = .7853981633974483096156608458198757210492923498437764/1
ibase = r
if(scale<52) {
return z
}
}
t = scale
f = 1
while(x > .5) {
scale++
x = -(1 - sqrt(1.+x*x))/x
f *= 2
}
while(x < -.5) {
scale++
x = -(1 - sqrt(1.+x*x))/x
f *= 2
}
s = -x*x
b = f
c = f
d = 1
e = 1
for(a=3; 1; a+=2) {
b *= s
c = c*a + d*b
d *= a
g = c/d
if(g==e) {
scale = t
ibase = r
return x*c/d
}
e = g
}
}
define j(n,x) {
auto a,b,c,d,e,g,i,s,k,t,r
r = ibase
ibase = A
t = scale
k = 1.36*x + 1.16*t - n
k = length(k) - scale(k)
if(k>0) {
scale += k
}
s = -x*x/4
if(n<0) {
n = -n
x = -x
}
a = 1
c = 1
for(i=1; i<=n; i++) {
a *= x
c *= 2*i
}
b = a
d = 1
e = 1
for(i=1; 1; i++) {
a *= s
b = b*i*(n+i) + a
c *= i*(n+i)
g = b/c
if(g==e) {
scale = t
ibase = r
return g/1
}
e = g
}
}

BIN
sys/lib/brspell Executable file

Binary file not shown.

0
sys/lib/dist/cdstub/bootdisk.img vendored Executable file
View File

346
sys/lib/dist/cmd/bargraph.c vendored Executable file
View File

@ -0,0 +1,346 @@
#include <u.h>
#include <libc.h>
#include <draw.h>
#include <bio.h>
#include <event.h>
enum {PNCTL=3};
static char* rdenv(char*);
int newwin(char*);
Rectangle screenrect(void);
int nokill;
int textmode;
char *title;
Image *light;
Image *dark;
Image *text;
void
initcolor(void)
{
text = display->black;
light = allocimagemix(display, DPalegreen, DWhite);
dark = allocimage(display, Rect(0,0,1,1), CMAP8, 1, DDarkgreen);
}
Rectangle rbar;
Point ptext;
vlong n, d;
int last;
int lastp = -1;
int first = 1;
char backup[80];
void
drawbar(void)
{
int i, j;
int p;
char buf[200], bar[100], *s;
static char lastbar[100];
if(n > d || n < 0 || d <= 0)
return;
i = (Dx(rbar)*n)/d;
p = (n*100LL)/d;
if(textmode){
bar[0] = '|';
for(j=0; j<i; j++)
bar[j+1] = '#';
for(; j<60; j++)
bar[j+1] = '-';
bar[61] = '|';
bar[62] = ' ';
sprint(bar+63, "%3d%% ", p);
for(i=0; bar[i]==lastbar[i] && bar[i]; i++)
;
memset(buf, '\b', strlen(lastbar)-i);
strcpy(buf+strlen(lastbar)-i, bar+i);
if(buf[0])
write(1, buf, strlen(buf));
strcpy(lastbar, bar);
return;
}
if(lastp == p && last == i)
return;
if(lastp != p){
sprint(buf, "%d%%", p);
stringbg(screen, addpt(screen->r.min, Pt(Dx(rbar)-30, 4)), text, ZP, display->defaultfont, buf, light, ZP);
lastp = p;
}
if(last != i){
draw(screen, Rect(rbar.min.x+last, rbar.min.y, rbar.min.x+i, rbar.max.y),
dark, nil, ZP);
last = i;
}
flushimage(display, 1);
}
void
eresized(int new)
{
Point p, q;
Rectangle r;
if(new && getwindow(display, Refnone) < 0)
fprint(2,"can't reattach to window");
r = screen->r;
draw(screen, r, light, nil, ZP);
p = string(screen, addpt(r.min, Pt(4,4)), text, ZP,
display->defaultfont, title);
p.x = r.min.x+4;
p.y += display->defaultfont->height+4;
q = subpt(r.max, Pt(4,4));
rbar = Rpt(p, q);
ptext = Pt(r.max.x-4-stringwidth(display->defaultfont, "100%"), r.min.x+4);
border(screen, rbar, -2, dark, ZP);
last = 0;
lastp = -1;
drawbar();
}
void
bar(Biobuf *b)
{
char *p, *f[2];
Event e;
int k, die, parent, child;
parent = getpid();
die = 0;
if(textmode)
child = -1;
else
switch(child = rfork(RFMEM|RFPROC)) {
case 0:
sleep(1000);
while(!die && (k = eread(Ekeyboard|Emouse, &e))) {
if(nokill==0 && k == Ekeyboard && (e.kbdc == 0x7F || e.kbdc == 0x03)) { /* del, ctl-c */
die = 1;
postnote(PNPROC, parent, "interrupt");
_exits("interrupt");
}
}
_exits(0);
}
while(!die && (p = Brdline(b, '\n'))) {
p[Blinelen(b)-1] = '\0';
if(tokenize(p, f, 2) != 2)
continue;
n = strtoll(f[0], 0, 0);
d = strtoll(f[1], 0, 0);
drawbar();
}
postnote(PNCTL, child, "kill");
}
void
usage(void)
{
fprint(2, "usage: bargraph [-kt] [-w minx,miny,maxx,maxy] 'title'\n");
exits("usage");
}
void
main(int argc, char **argv)
{
Biobuf b;
char *p, *q;
int lfd;
p = "0,0,200,60";
ARGBEGIN{
case 'w':
p = ARGF();
break;
case 't':
textmode = 1;
break;
case 'k':
nokill = 1;
break;
default:
usage();
}ARGEND;
if(argc != 1)
usage();
title = argv[0];
lfd = dup(0, -1);
while(q = strchr(p, ','))
*q = ' ';
Binit(&b, lfd, OREAD);
if(textmode || newwin(p) < 0){
textmode = 1;
rbar = Rect(0, 0, 60, 1);
}else{
initdraw(0, 0, "bar");
initcolor();
einit(Emouse|Ekeyboard);
eresized(0);
}
bar(&b);
}
/* all code below this line should be in the library, but is stolen from colors instead */
static char*
rdenv(char *name)
{
char *v;
int fd, size;
fd = open(name, OREAD);
if(fd < 0)
return 0;
size = seek(fd, 0, 2);
v = malloc(size+1);
if(v == 0){
fprint(2, "%s: can't malloc: %r\n", argv0);
exits("no mem");
}
seek(fd, 0, 0);
read(fd, v, size);
v[size] = 0;
close(fd);
return v;
}
int
newwin(char *win)
{
char *srv, *mntsrv;
char spec[100];
int srvfd, cons, pid;
switch(rfork(RFFDG|RFPROC|RFNAMEG|RFENVG|RFNOTEG|RFNOWAIT)){
case -1:
fprint(2, "bargraph: can't fork: %r\n");
return -1;
case 0:
break;
default:
exits(0);
}
srv = rdenv("/env/wsys");
if(srv == 0){
mntsrv = rdenv("/mnt/term/env/wsys");
if(mntsrv == 0){
fprint(2, "bargraph: can't find $wsys\n");
return -1;
}
srv = malloc(strlen(mntsrv)+10);
sprint(srv, "/mnt/term%s", mntsrv);
free(mntsrv);
pid = 0; /* can't send notes to remote processes! */
}else
pid = getpid();
USED(pid);
srvfd = open(srv, ORDWR);
free(srv);
if(srvfd == -1){
fprint(2, "bargraph: can't open %s: %r\n", srv);
return -1;
}
sprint(spec, "new -r %s", win);
if(mount(srvfd, -1, "/mnt/wsys", 0, spec) == -1){
fprint(2, "bargraph: can't mount /mnt/wsys: %r (spec=%s)\n", spec);
return -1;
}
close(srvfd);
unmount("/mnt/acme", "/dev");
bind("/mnt/wsys", "/dev", MBEFORE);
cons = open("/dev/cons", OREAD);
if(cons==-1){
NoCons:
fprint(2, "bargraph: can't open /dev/cons: %r");
return -1;
}
dup(cons, 0);
close(cons);
cons = open("/dev/cons", OWRITE);
if(cons==-1)
goto NoCons;
dup(cons, 1);
dup(cons, 2);
close(cons);
// wctlfd = open("/dev/wctl", OWRITE);
return 0;
}
Rectangle
screenrect(void)
{
int fd;
char buf[12*5];
fd = open("/dev/screen", OREAD);
if(fd == -1)
fd=open("/mnt/term/dev/screen", OREAD);
if(fd == -1){
fprint(2, "%s: can't open /dev/screen: %r\n", argv0);
exits("window read");
}
if(read(fd, buf, sizeof buf) != sizeof buf){
fprint(2, "%s: can't read /dev/screen: %r\n", argv0);
exits("screen read");
}
close(fd);
return Rect(atoi(buf+12), atoi(buf+24), atoi(buf+36), atoi(buf+48));
}
int
postnote(int group, int pid, char *note)
{
char file[128];
int f, r;
switch(group) {
case PNPROC:
sprint(file, "/proc/%d/note", pid);
break;
case PNGROUP:
sprint(file, "/proc/%d/notepg", pid);
break;
case PNCTL:
sprint(file, "/proc/%d/ctl", pid);
break;
default:
return -1;
}
f = open(file, OWRITE);
if(f < 0)
return -1;
r = strlen(note);
if(write(f, note, r) != r) {
close(f);
return -1;
}
close(f);
return 0;
}

374
sys/lib/dist/cmd/bflz.c vendored Executable file
View File

@ -0,0 +1,374 @@
/*
* Extraordinarily brute force Lempel & Ziv-like
* compressor. The input file must fit in memory
* during compression, and the output file will
* be reconstructed in memory during decompression.
* We search for large common sequences and use a
* greedy algorithm to choose which sequence gets
* compressed first.
*
* Files begin with "BLZ\n" and a 32-bit uncompressed file length.
*
* Output format is a series of blocks followed by
* a raw data section. Each block begins with a 32-bit big-endian
* number. The top bit is type and the next 31 bits
* are uncompressed size. Type is one of
* 0 - use raw data for this length
* 1 - a 32-bit offset follows
* After the blocks come the raw data. (The end of the blocks can be
* noted by summing block lengths until you reach the file length.)
*/
#include <u.h>
#include <libc.h>
#include <bio.h>
#define malloc sbrk
int minrun = 16;
int win = 16;
ulong outn;
int verbose;
int mindist;
enum { Prime = 16777213 }; /* smallest prime < 2^24 (so p*256+256 < 2^32) */
enum { NOFF = 3 };
Biobuf bout;
ulong length;
uchar *data;
ulong sum32(ulong, void*, long);
uchar *odat;
int nodat;
int nraw;
int rawstart;
int acct;
int zlength;
int maxchain;
int maxrle[256];
int nnew;
typedef struct Node Node;
struct Node {
Node *link;
ulong key;
ulong offset[NOFF];
};
Node *nodepool;
int nnodepool;
Node **hash;
uint nhash;
uint maxlen;
uint maxsame;
uint replacesame = 8*1024*1024;
Node *freelist, **freeend;
uint nalloc;
Node*
allocnode(void)
{
int i;
Node *n;
if(nnodepool == 0){
nnodepool = 256*1024;
nodepool = malloc(sizeof(Node)*nnodepool);
}
if(freelist){
n = freelist;
freelist = n->link;
return n;
}
assert(nnodepool > 0);
nalloc++;
n = &nodepool[--nnodepool];
for(i=0; i<NOFF; i++)
n->offset[i] = -1;
return n;
}
void
freenode(Node *n)
{
if(freelist == nil)
freelist = n;
else
*freeend = n;
freeend = &n->link;
n->link = nil;
}
Node**
llookup(ulong key)
{
uint c;
Node **l, **top, *n;
if(nhash == 0){
uint x;
x = length/8;
for(nhash=1; nhash<x; nhash<<=1)
;
hash = sbrk(sizeof(Node*)*nhash);
}
top = &hash[key&(nhash-1)];
c = 0;
for(l=top; *l; l=&(*l)->link){
c++;
if((*l)->key == key){
/* move to front */
n = *l;
*l = n->link;
n->link = *top;
*top = n;
return top;
}
}
if(c > maxlen)
maxlen = c;
return l;
}
Node*
lookup(ulong key)
{
return *llookup(key);
}
void
insertnode(ulong key, ulong offset)
{
int i;
Node *n, **l;
l = llookup(key);
if(*l == nil){
if(l==&hash[key&(nhash-1)])
nnew++;
*l = allocnode();
(*l)->key = key;
}
n = *l;
/* add or replace last */
for(i=0; i<NOFF-1 && n->offset[i]!=-1; i++)
;
n->offset[i] = offset;
}
void
Bputint(Biobufhdr *b, int n)
{
uchar p[4];
p[0] = n>>24;
p[1] = n>>16;
p[2] = n>>8;
p[3] = n;
Bwrite(b, p, 4);
}
void
flushraw(void)
{
if(nraw){
if(verbose)
fprint(2, "Raw %d+%d\n", rawstart, nraw);
zlength += 4+nraw;
Bputint(&bout, (1<<31)|nraw);
memmove(odat+nodat, data+rawstart, nraw);
nodat += nraw;
nraw = 0;
}
}
int
rawbyte(int i)
{
assert(acct == i);
if(nraw == 0)
rawstart = i;
acct++;
nraw++;
return 1;
}
int
refblock(int i, int len, int off)
{
assert(acct == i);
acct += len;
if(nraw)
flushraw();
if(verbose)
fprint(2, "Copy %d+%d from %d\n", i, len, off);
Bputint(&bout, len);
Bputint(&bout, off);
zlength += 4+4;
return len;
}
int
cmprun(uchar *a, uchar *b, int len)
{
int i;
if(a==b)
return 0;
for(i=0; i<len && a[i]==b[i]; i++)
;
return i;
}
int
countrle(uchar *a)
{
int i;
for(i=0; a[i]==a[0]; i++)
;
return i;
}
void
compress(void)
{
int best, i, j, o, rle, run, maxrun, maxoff;
ulong sum;
Node *n;
sum = 0;
for(i=0; i<win && i<length; i++)
sum = (sum*256+data[i])%Prime;
for(i=0; i<length-win; ){
maxrun = 0;
maxoff = 0;
if(verbose)
fprint(2, "look %.6lux\n", sum);
n = lookup(sum);
if(n){
best = -1;
for(o=0; o<NOFF; o++){
if(n->offset[o] == -1)
break;
run = cmprun(data+i, data+n->offset[o], length-i);
if(run > maxrun && n->offset[o]+mindist < i){
maxrun = run;
maxoff = n->offset[o];
best = o;
}
}
if(best > 0){
o = n->offset[best];
for(j=best; j>0; j--)
n->offset[j] = n->offset[j-1];
n->offset[0] = o;
}
}
if(maxrun >= minrun)
j = i+refblock(i, maxrun, maxoff);
else
j = i+rawbyte(i);
for(; i<j; i++){
/* avoid huge chains from large runs of same byte */
rle = countrle(data+i);
if(rle<4)
insertnode(sum, i);
else if(rle>maxrle[data[i]]){
maxrle[data[i]] = rle;
insertnode(sum, i);
}
sum = (sum*256+data[i+win]) % Prime;
sum = (sum + data[i]*outn) % Prime;
}
}
/* could do better here */
for(; i<length; i++)
rawbyte(i);
flushraw();
}
void
usage(void)
{
fprint(2, "usage: bflz [-n winsize] [file]\n");
exits("usage");
}
void
main(int argc, char **argv)
{
int fd, i, n;
char buf[10485760];
ARGBEGIN{
case 'd':
verbose = 1;
break;
case 's':
replacesame = atoi(EARGF(usage()));
break;
case 'm':
mindist = atoi(EARGF(usage()));
break;
case 'n':
win = atoi(EARGF(usage()));
minrun = win;
break;
default:
usage();
}ARGEND
switch(argc){
default:
usage();
case 0:
fd = 0;
break;
case 1:
if((fd = open(argv[0], OREAD)) < 0)
sysfatal("open %s: %r", argv[0]);
break;
}
while((n = readn(fd, buf, sizeof buf)) > 0){
data = realloc(data, length+n);
if(data == nil)
sysfatal("realloc: %r");
memmove(data+length, buf, n);
length += n;
if(n < sizeof buf)
break;
}
odat = malloc(length);
if(odat == nil)
sysfatal("malloc: %r");
Binit(&bout, 1, OWRITE);
Bprint(&bout, "BLZ\n");
Bputint(&bout, length);
outn = 1;
for(i=0; i<win; i++)
outn = (outn * 256) % Prime;
if(verbose)
fprint(2, "256^%d = %.6lux\n", win, outn);
outn = Prime - outn;
if(verbose)
fprint(2, "outn = %.6lux\n", outn);
compress();
Bwrite(&bout, odat, nodat);
Bterm(&bout);
fprint(2, "brk %p\n", sbrk(1));
fprint(2, "%d nodes used; %d of %d hash slots used\n", nalloc, nnew, nhash);
exits(nil);
}

11
sys/lib/dist/cmd/bzfs/bzfs.h vendored Executable file
View File

@ -0,0 +1,11 @@
int unbzip(int);
void _unbzip(int, int);
int unbflz(int);
int xexpand(int);
void *emalloc(ulong);
void *erealloc(void*, ulong);
char *estrdup(char*);
void ramfsmain(int, char**);
extern int chatty;
void error(char*, ...);

288
sys/lib/dist/cmd/bzfs/mkext.c vendored Executable file
View File

@ -0,0 +1,288 @@
/*
* bzip2-based file system.
* the file system itself is just a bzipped2 xzipped mkfs archive
* prefixed with "bzfilesystem\n" and suffixed with
* a kilobyte of zeros.
*
* changes to the file system are only kept in
* memory, not written back to the disk.
*
* this is intended for use on a floppy boot disk.
* we assume the file is in the dos file system and
* contiguous on the disk: finding it amounts to
* looking at the beginning of each sector for
* "bzfilesystem\n". then we pipe it through
* bunzip2 and store the files in a file tree in memory.
* things are slightly complicated by the fact that
* devfloppy requires reads to be on a 512-byte
* boundary and be a multiple of 512 bytes; we
* fork a process to relieve bunzip2 of this restriction.
*/
#include <u.h>
#include <libc.h>
#include <bio.h>
#include <auth.h>
#include <fcall.h>
#include "bzfs.h"
enum{
LEN = 8*1024,
NFLDS = 6, /* filename, modes, uid, gid, mtime, bytes */
};
void mkdirs(char*, char*);
void mkdir(char*, ulong, ulong, char*, char*);
void extract(char*, ulong, ulong, char*, char*, ulong);
void seekpast(ulong);
void error(char*, ...);
void warn(char*, ...);
void usage(void);
char *mtpt;
Biobufhdr bin;
uchar binbuf[2*LEN];
void
usage(void)
{
fprint(2, "usage: bzfs [-m mtpt] [-s] [-f file] [-h]\n");
exits("usage");
}
/*
* floppy disks can only be read on 512-byte
* boundaries and in 512 byte multiples.
* feed one over a pipe to allow arbitrary reading.
*/
char zero[512];
int
blockread(int in, char *first, int nfirst)
{
int p[2], out, n, rv;
char blk[512];
if(pipe(p) < 0)
sysfatal("pipe: %r");
rv = p[0];
out = p[1];
switch(rfork(RFPROC|RFNOTEG|RFFDG)){
case -1:
sysfatal("fork: %r");
case 0:
close(rv);
break;
default:
close(in);
close(out);
return rv;
}
write(out, first, nfirst);
while((n=read(in, blk, sizeof blk)) > 0){
if(write(out, blk, n) != n)
break;
if(n == sizeof(blk) && memcmp(zero, blk, n) == n)
break;
}
_exits(0);
return -1;
}
enum { NAMELEN = 28 };
void
main(int argc, char **argv)
{
char *rargv[10];
int rargc;
char *fields[NFLDS], name[2*LEN], *p, *namep;
char uid[NAMELEN], gid[NAMELEN];
ulong mode, bytes, mtime;
char *file;
int i, n, stdin, fd, chatty;
char blk[512];
if(argc>1 && strcmp(argv[1], "RAMFS") == 0){
argv[1] = argv[0];
ramfsmain(argc-1, argv+1);
exits(nil);
}
if(argc>1 && strcmp(argv[1], "BUNZIP") == 0){
_unbzip(0, 1);
exits(nil);
}
rfork(RFNOTEG);
stdin = 0;
file = nil;
namep = name;
mtpt = "/root";
chatty = 0;
ARGBEGIN{
case 'd':
chatty = !chatty;
break;
case 'f':
file = ARGF();
break;
case 's':
stdin++;
break;
case 'm':
mtpt = ARGF();
break;
default:
usage();
}ARGEND
if(argc != 0)
usage();
if(file == nil) {
fprint(2, "must specify -f file\n");
usage();
}
if((fd = open(file, OREAD)) < 0) {
fprint(2, "cannot open \"%s\": %r\n", file);
exits("open");
}
rargv[0] = "ramfs";
rargc = 1;
if(stdin)
rargv[rargc++] = "-i";
rargv[rargc++] = "-m";
rargv[rargc++] = mtpt;
rargv[rargc] = nil;
ramfsmain(rargc, rargv);
if(1 || strstr(file, "disk")) { /* search for archive on block boundary */
if(chatty) fprint(2, "searching for bz\n");
for(i=0;; i++){
if((n = readn(fd, blk, sizeof blk)) != sizeof blk)
sysfatal("read %d gets %d: %r\n", i, n);
if(strncmp(blk, "bzfilesystem\n", 13) == 0)
break;
}
if(chatty) fprint(2, "found at %d\n", i);
}
if(chdir(mtpt) < 0)
error("chdir %s: %r", mtpt);
fd = unbflz(unbzip(blockread(fd, blk+13, sizeof(blk)-13)));
Binits(&bin, fd, OREAD, binbuf, sizeof binbuf);
while(p = Brdline(&bin, '\n')){
p[Blinelen(&bin)-1] = '\0';
if(chatty) fprint(2, "%s\n", p);
if(strcmp(p, "end of archive") == 0){
_exits(0);
}
if(getfields(p, fields, NFLDS, 0, " \t") != NFLDS){
warn("too few fields in file header");
continue;
}
strcpy(namep, fields[0]);
mode = strtoul(fields[1], 0, 8);
mtime = strtoul(fields[4], 0, 10);
bytes = strtoul(fields[5], 0, 10);
strncpy(uid, fields[2], NAMELEN);
strncpy(gid, fields[3], NAMELEN);
if(mode & DMDIR)
mkdir(name, mode, mtime, uid, gid);
else
extract(name, mode, mtime, uid, gid, bytes);
}
fprint(2, "premature end of archive\n");
exits("premature end of archive");
}
char buf[8192];
int
ffcreate(char *name, ulong mode, char *uid, char *gid, ulong mtime, int length)
{
int fd, om;
Dir nd;
sprint(buf, "%s/%s", mtpt, name);
om = ORDWR;
if(mode&DMDIR)
om = OREAD;
if((fd = create(buf, om, (mode&DMDIR)|0666)) < 0)
error("create %s: %r", buf);
nulldir(&nd);
nd.mode = mode;
nd.uid = uid;
nd.gid = gid;
nd.mtime = mtime;
if(length)
nd.length = length;
if(dirfwstat(fd, &nd) < 0)
error("fwstat %s: %r", buf);
return fd;
}
void
mkdir(char *name, ulong mode, ulong mtime, char *uid, char *gid)
{
close(ffcreate(name, mode, uid, gid, mtime, 0));
}
void
extract(char *name, ulong mode, ulong mtime, char *uid, char *gid, ulong bytes)
{
int fd, tot, n;
fd = ffcreate(name, mode, uid, gid, mtime, bytes);
for(tot = 0; tot < bytes; tot += n){
n = sizeof buf;
if(tot + n > bytes)
n = bytes - tot;
n = Bread(&bin, buf, n);
if(n <= 0)
error("premature eof reading %s", name);
if(write(fd, buf, n) != n)
error("short write writing %s", name);
}
close(fd);
}
void
error(char *fmt, ...)
{
char buf[1024];
va_list arg;
sprint(buf, "%s: ", argv0);
va_start(arg, fmt);
vseprint(buf+strlen(buf), buf+sizeof(buf), fmt, arg);
va_end(arg);
fprint(2, "%s\n", buf);
exits(0);
}
void
warn(char *fmt, ...)
{
char buf[1024];
va_list arg;
sprint(buf, "%s: ", argv0);
va_start(arg, fmt);
vseprint(buf+strlen(buf), buf+sizeof(buf), fmt, arg);
va_end(arg);
fprint(2, "%s\n", buf);
}
int
_efgfmt(Fmt*)
{
return -1;
}

20
sys/lib/dist/cmd/bzfs/mkfile vendored Executable file
View File

@ -0,0 +1,20 @@
</$objtype/mkfile
TARG=bzfs
OFILES=\
mkext.$O\
oramfs.$O\
unbflz.$O\
unbzip.$O\
HFILES=bzfs.h
BIN=/sys/lib/dist/bin/$objtype
LIB=/sys/src/cmd/bzip2/lib/libbzip2.a$O
</sys/src/cmd/mkone
CFLAGS=$CFLAGS -p -I/sys/src/cmd/bzip2/lib
/sys/src/cmd/bzip2/lib/libbzip2.a$O:
@{cd /sys/src/cmd/bzip2/lib && mk}

927
sys/lib/dist/cmd/bzfs/oramfs.c vendored Executable file
View File

@ -0,0 +1,927 @@
#include <u.h>
#include <libc.h>
#include <auth.h>
#include <fcall.h>
#include "bzfs.h"
/*
* Rather than reading /adm/users, which is a lot of work for
* a toy program, we assume all groups have the form
* NNN:user:user:
* meaning that each user is the leader of his own group.
*/
enum
{
OPERM = 0x3, /* mask of all permission types in open mode */
Nram = 512,
Maxsize = 512*1024*1024,
Maxfdata = 8192,
};
typedef struct Fid Fid;
typedef struct Ram Ram;
struct Fid
{
short busy;
short open;
short rclose;
int fid;
Fid *next;
char *user;
Ram *ram;
};
struct Ram
{
short busy;
short open;
long parent; /* index in Ram array */
Qid qid;
long perm;
char *name;
ulong atime;
ulong mtime;
char *user;
char *group;
char *muid;
char *data;
long ndata;
};
enum
{
Pexec = 1,
Pwrite = 2,
Pread = 4,
Pother = 1,
Pgroup = 8,
Powner = 64,
};
ulong path; /* incremented for each new file */
Fid *fids;
Ram ram[Nram];
int nram;
int mfd[2];
char *user;
uchar mdata[IOHDRSZ+Maxfdata];
uchar rdata[Maxfdata]; /* buffer for data in reply */
uchar statbuf[STATMAX];
Fcall thdr;
Fcall rhdr;
int messagesize = sizeof mdata;
Fid * newfid(int);
uint ramstat(Ram*, uchar*, uint);
void io(void);
void *erealloc(void*, ulong);
void *emalloc(ulong);
char *estrdup(char*);
void ramfsusage(void);
int perm(Fid*, Ram*, int);
char *atom(char*);
char *rflush(Fid*), *rversion(Fid*), *rauth(Fid*),
*rattach(Fid*), *rwalk(Fid*),
*ropen(Fid*), *rcreate(Fid*),
*rread(Fid*), *rwrite(Fid*), *rclunk(Fid*),
*rremove(Fid*), *rstat(Fid*), *rwstat(Fid*);
char *(*fcalls[])(Fid*) = {
[Tversion] rversion,
[Tflush] rflush,
[Tauth] rauth,
[Tattach] rattach,
[Twalk] rwalk,
[Topen] ropen,
[Tcreate] rcreate,
[Tread] rread,
[Twrite] rwrite,
[Tclunk] rclunk,
[Tremove] rremove,
[Tstat] rstat,
[Twstat] rwstat,
};
char Eperm[] = "permission denied";
char Enotdir[] = "not a directory";
char Enoauth[] = "no authentication in ramfs";
char Enotexist[] = "file does not exist";
char Einuse[] = "file in use";
char Eexist[] = "file exists";
char Eisdir[] = "file is a directory";
char Enotowner[] = "not owner";
char Eisopen[] = "file already open for I/O";
char Excl[] = "exclusive use file already open";
char Ename[] = "illegal name";
char Eversion[] = "unknown 9P version";
int debug;
void
notifyf(void *a, char *s)
{
USED(a);
if(strncmp(s, "interrupt", 9) == 0)
noted(NCONT);
noted(NDFLT);
}
void
ramfsmain(int argc, char *argv[])
{
Ram *r;
char *defmnt;
int p[2];
char buf[32];
int fd, srvfd;
int stdio = 0;
srvfd = -1;
defmnt = "/tmp";
ARGBEGIN{
case 'D':
debug = 1;
break;
case 'i': /* this is DIFFERENT from normal ramfs; use 1 for both for kernel */
defmnt = 0;
stdio = 1;
srvfd = 0;
mfd[0] = 1;
mfd[1] = 1;
break;
case 's':
defmnt = 0;
break;
case 'm':
defmnt = ARGF();
break;
default:
ramfsusage();
}ARGEND
if(!stdio){
if(pipe(p) < 0)
error("pipe failed");
srvfd = p[1];
mfd[0] = p[0];
mfd[1] = p[0];
if(defmnt == 0){
fd = create("#s/ramfs", OWRITE, 0666);
if(fd < 0)
error("create of /srv/ramfs failed");
sprint(buf, "%d", p[1]);
if(write(fd, buf, strlen(buf)) < 0)
error("writing /srv/ramfs");
}
}
user = atom(getuser());
notify(notifyf);
nram = 1;
r = &ram[0];
r->busy = 1;
r->data = 0;
r->ndata = 0;
r->perm = DMDIR | 0775;
r->qid.type = QTDIR;
r->qid.path = 0LL;
r->qid.vers = 0;
r->parent = 0;
r->user = user;
r->group = user;
r->muid = user;
r->atime = time(0);
r->mtime = r->atime;
r->name = estrdup(".");
if(debug)
fmtinstall('F', fcallfmt);
switch(rfork(RFFDG|RFPROC|RFNAMEG|RFNOTEG)){
case -1:
error("fork");
case 0:
close(srvfd);
io();
break;
default:
close(mfd[0]); /* don't deadlock if child fails */
if(defmnt && mount(srvfd, -1, defmnt, MREPL|MCREATE, "") < 0)
error("mount failed: %r");
}
}
char*
rversion(Fid*)
{
Fid *f;
for(f = fids; f; f = f->next)
if(f->busy)
rclunk(f);
if(thdr.msize > sizeof mdata)
rhdr.msize = sizeof mdata;
else
rhdr.msize = thdr.msize;
messagesize = rhdr.msize;
if(strncmp(thdr.version, "9P2000", 6) != 0)
return Eversion;
rhdr.version = "9P2000";
return 0;
}
char*
rauth(Fid*)
{
return "ramfs: no authentication required";
}
char*
rflush(Fid *f)
{
USED(f);
return 0;
}
char*
rattach(Fid *f)
{
/* no authentication! */
f->busy = 1;
f->rclose = 0;
f->ram = &ram[0];
rhdr.qid = f->ram->qid;
if(thdr.uname[0])
f->user = atom(thdr.uname);
else
f->user = atom("none");
if(strcmp(user, "none") == 0)
user = f->user;
return 0;
}
char*
clone(Fid *f, Fid **nf)
{
if(f->open)
return Eisopen;
if(f->ram->busy == 0)
return Enotexist;
*nf = newfid(thdr.newfid);
(*nf)->busy = 1;
(*nf)->open = 0;
(*nf)->rclose = 0;
(*nf)->ram = f->ram;
(*nf)->user = f->user; /* no ref count; the leakage is minor */
return 0;
}
char*
rwalk(Fid *f)
{
Ram *r, *fram;
char *name;
Ram *parent;
Fid *nf;
char *err;
ulong t;
int i;
err = nil;
nf = nil;
rhdr.nwqid = 0;
if(rhdr.newfid != rhdr.fid){
err = clone(f, &nf);
if(err)
return err;
f = nf; /* walk the new fid */
}
fram = f->ram;
if(thdr.nwname > 0){
t = time(0);
for(i=0; i<thdr.nwname && i<MAXWELEM; i++){
if((fram->qid.type & QTDIR) == 0){
err = Enotdir;
break;
}
if(fram->busy == 0){
err = Enotexist;
break;
}
fram->atime = t;
name = thdr.wname[i];
if(strcmp(name, ".") == 0){
Found:
rhdr.nwqid++;
rhdr.wqid[i] = fram->qid;
continue;
}
parent = &ram[fram->parent];
#ifdef CHECKS
if(!perm(f, parent, Pexec)){
err = Eperm;
break;
}
#endif
if(strcmp(name, "..") == 0){
fram = parent;
goto Found;
}
for(r=ram; r < &ram[nram]; r++)
if(r->busy && r->parent==fram-ram && strcmp(name, r->name)==0){
fram = r;
goto Found;
}
break;
}
if(i==0 && err == nil)
err = Enotexist;
}
if(nf != nil && (err!=nil || rhdr.nwqid<thdr.nwname)){
/* clunk the new fid, which is the one we walked */
f->busy = 0;
f->ram = nil;
}
if(rhdr.nwqid == thdr.nwname) /* update the fid after a successful walk */
f->ram = fram;
return err;
}
char *
ropen(Fid *f)
{
Ram *r;
int mode, trunc;
if(f->open)
return Eisopen;
r = f->ram;
if(r->busy == 0)
return Enotexist;
if(r->perm & DMEXCL)
if(r->open)
return Excl;
mode = thdr.mode;
if(r->qid.type & QTDIR){
if(mode != OREAD)
return Eperm;
rhdr.qid = r->qid;
return 0;
}
if(mode & ORCLOSE){
/* can't remove root; must be able to write parent */
if(r->qid.path==0 || !perm(f, &ram[r->parent], Pwrite))
return Eperm;
f->rclose = 1;
}
trunc = mode & OTRUNC;
mode &= OPERM;
if(mode==OWRITE || mode==ORDWR || trunc)
if(!perm(f, r, Pwrite))
return Eperm;
if(mode==OREAD || mode==ORDWR)
if(!perm(f, r, Pread))
return Eperm;
if(mode==OEXEC)
if(!perm(f, r, Pexec))
return Eperm;
if(trunc && (r->perm&DMAPPEND)==0){
r->ndata = 0;
if(r->data)
free(r->data);
r->data = 0;
r->qid.vers++;
}
rhdr.qid = r->qid;
rhdr.iounit = messagesize-IOHDRSZ;
f->open = 1;
r->open++;
return 0;
}
char *
rcreate(Fid *f)
{
Ram *r;
char *name;
long parent, prm;
if(f->open)
return Eisopen;
if(f->ram->busy == 0)
return Enotexist;
parent = f->ram - ram;
if((f->ram->qid.type&QTDIR) == 0)
return Enotdir;
/* must be able to write parent */
#ifdef CHECKS
if(!perm(f, f->ram, Pwrite))
return Eperm;
#endif
prm = thdr.perm;
name = thdr.name;
if(strcmp(name, ".")==0 || strcmp(name, "..")==0)
return Ename;
for(r=ram; r<&ram[nram]; r++)
if(r->busy && parent==r->parent)
if(strcmp((char*)name, r->name)==0)
return Einuse;
for(r=ram; r->busy; r++)
if(r == &ram[Nram-1])
return "no free ram resources";
r->busy = 1;
r->qid.path = ++path;
r->qid.vers = 0;
if(prm & DMDIR)
r->qid.type |= QTDIR;
r->parent = parent;
free(r->name);
r->name = estrdup(name);
r->user = f->user;
r->group = f->ram->group;
r->muid = f->ram->muid;
if(prm & DMDIR)
prm = (prm&~0777) | (f->ram->perm&prm&0777);
else
prm = (prm&(~0777|0111)) | (f->ram->perm&prm&0666);
r->perm = prm;
r->ndata = 0;
if(r-ram >= nram)
nram = r - ram + 1;
r->atime = time(0);
r->mtime = r->atime;
f->ram->mtime = r->atime;
f->ram = r;
rhdr.qid = r->qid;
rhdr.iounit = messagesize-IOHDRSZ;
f->open = 1;
if(thdr.mode & ORCLOSE)
f->rclose = 1;
r->open++;
return 0;
}
char*
rread(Fid *f)
{
Ram *r;
uchar *buf;
long off;
int n, m, cnt;
if(f->ram->busy == 0)
return Enotexist;
n = 0;
rhdr.count = 0;
off = thdr.offset;
buf = rdata;
cnt = thdr.count;
if(cnt > messagesize) /* shouldn't happen, anyway */
cnt = messagesize;
if(f->ram->qid.type & QTDIR){
for(r=ram+1; off > 0; r++){
if(r->busy && r->parent==f->ram-ram)
off -= ramstat(r, statbuf, sizeof statbuf);
if(r == &ram[nram-1])
return 0;
}
for(; r<&ram[nram] && n < cnt; r++){
if(!r->busy || r->parent!=f->ram-ram)
continue;
m = ramstat(r, buf+n, cnt-n);
if(m == 0)
break;
n += m;
}
rhdr.data = (char*)rdata;
rhdr.count = n;
return 0;
}
r = f->ram;
if(off >= r->ndata)
return 0;
r->atime = time(0);
n = cnt;
if(off+n > r->ndata)
n = r->ndata - off;
rhdr.data = r->data+off;
rhdr.count = n;
return 0;
}
char*
rwrite(Fid *f)
{
Ram *r;
ulong off;
int cnt;
r = f->ram;
if(r->busy == 0)
return Enotexist;
off = thdr.offset;
if(r->perm & DMAPPEND)
off = r->ndata;
cnt = thdr.count;
if(r->qid.type & QTDIR)
return Eisdir;
if(off+cnt >= Maxsize) /* sanity check */
return "write too big";
if(off+cnt > r->ndata)
r->data = erealloc(r->data, off+cnt);
if(off > r->ndata)
memset(r->data+r->ndata, 0, off-r->ndata);
if(off+cnt > r->ndata)
r->ndata = off+cnt;
memmove(r->data+off, thdr.data, cnt);
r->qid.vers++;
r->mtime = time(0);
rhdr.count = cnt;
return 0;
}
void
realremove(Ram *r)
{
r->ndata = 0;
if(r->data)
free(r->data);
r->data = 0;
r->parent = 0;
memset(&r->qid, 0, sizeof r->qid);
free(r->name);
r->name = nil;
r->busy = 0;
}
char *
rclunk(Fid *f)
{
if(f->open)
f->ram->open--;
if(f->rclose)
realremove(f->ram);
f->busy = 0;
f->open = 0;
f->ram = 0;
return 0;
}
char *
rremove(Fid *f)
{
Ram *r;
if(f->open)
f->ram->open--;
f->busy = 0;
f->open = 0;
r = f->ram;
f->ram = 0;
#ifdef CHECKS
if(r->qid.path == 0 || !perm(f, &ram[r->parent], Pwrite))
return Eperm;
#endif
ram[r->parent].mtime = time(0);
realremove(r);
return 0;
}
char *
rstat(Fid *f)
{
if(f->ram->busy == 0)
return Enotexist;
rhdr.nstat = ramstat(f->ram, statbuf, sizeof statbuf);
rhdr.stat = statbuf;
return 0;
}
char *
rwstat(Fid *f)
{
Ram *r, *s;
Dir dir;
if(f->ram->busy == 0)
return Enotexist;
convM2D(thdr.stat, thdr.nstat, &dir, (char*)statbuf);
r = f->ram;
/*
* To change length, must have write permission on file.
*/
#ifdef CHECKS
if(dir.length!=~0 && dir.length!=r->ndata){
if(!perm(f, r, Pwrite))
return Eperm;
}
#endif
/*
* To change name, must have write permission in parent
* and name must be unique.
*/
if(dir.name[0]!='\0' && strcmp(dir.name, r->name)!=0){
#ifdef CHECKS
if(!perm(f, &ram[r->parent], Pwrite))
return Eperm;
#endif
for(s=ram; s<&ram[nram]; s++)
if(s->busy && s->parent==r->parent)
if(strcmp(dir.name, s->name)==0)
return Eexist;
}
#ifdef OWNERS
/*
* To change mode, must be owner or group leader.
* Because of lack of users file, leader=>group itself.
*/
if(dir.mode!=~0 && r->perm!=dir.mode){
if(strcmp(f->user, r->user) != 0)
if(strcmp(f->user, r->group) != 0)
return Enotowner;
}
/*
* To change group, must be owner and member of new group,
* or leader of current group and leader of new group.
* Second case cannot happen, but we check anyway.
*/
if(dir.gid[0]!='\0' && strcmp(r->group, dir.gid)!=0){
if(strcmp(f->user, r->user) == 0)
if(strcmp(f->user, dir.gid) == 0)
goto ok;
if(strcmp(f->user, r->group) == 0)
if(strcmp(f->user, dir.gid) == 0)
goto ok;
return Enotowner;
ok:;
}
#endif
/* all ok; do it */
if(dir.mode != ~0){
dir.mode &= ~DMDIR; /* cannot change dir bit */
dir.mode |= r->perm&DMDIR;
r->perm = dir.mode;
}
if(dir.name[0] != '\0'){
free(r->name);
r->name = estrdup(dir.name);
}
if(dir.gid[0] != '\0')
r->group = atom(dir.gid);
if(dir.uid[0] != '\0')
r->user = atom(dir.uid);
if(dir.length!=~0 && dir.length!=r->ndata){
r->data = erealloc(r->data, dir.length);
if(r->ndata < dir.length)
memset(r->data+r->ndata, 0, dir.length-r->ndata);
r->ndata = dir.length;
}
if(dir.mtime != ~0)
r->mtime = dir.mtime;
ram[r->parent].mtime = time(0);
return 0;
}
uint
ramstat(Ram *r, uchar *buf, uint nbuf)
{
Dir dir;
dir.name = r->name;
dir.qid = r->qid;
dir.mode = r->perm;
dir.length = r->ndata;
dir.uid = r->user;
dir.gid = r->group;
dir.muid = r->muid;
dir.atime = r->atime;
dir.mtime = r->mtime;
return convD2M(&dir, buf, nbuf);
}
Fid *
newfid(int fid)
{
Fid *f, *ff;
ff = 0;
for(f = fids; f; f = f->next)
if(f->fid == fid)
return f;
else if(!ff && !f->busy)
ff = f;
if(ff){
ff->fid = fid;
return ff;
}
f = emalloc(sizeof *f);
f->ram = nil;
f->fid = fid;
f->next = fids;
fids = f;
return f;
}
void
io(void)
{
char *err;
int n, pid;
pid = getpid();
for(;;){
/*
* reading from a pipe or a network device
* will give an error after a few eof reads.
* however, we cannot tell the difference
* between a zero-length read and an interrupt
* on the processes writing to us,
* so we wait for the error.
*/
n = read9pmsg(mfd[0], mdata, messagesize);
if(n < 0)
error("mount read: %r");
if(n == 0)
continue;
if(convM2S(mdata, n, &thdr) == 0)
continue;
if(debug)
fprint(2, "ramfs %d:<-%F\n", pid, &thdr);
if(!fcalls[thdr.type])
err = "bad fcall type";
else
err = (*fcalls[thdr.type])(newfid(thdr.fid));
if(err){
rhdr.type = Rerror;
rhdr.ename = err;
}else{
rhdr.type = thdr.type + 1;
rhdr.fid = thdr.fid;
}
rhdr.tag = thdr.tag;
if(debug)
fprint(2, "ramfs %d:->%F\n", pid, &rhdr);/**/
n = convS2M(&rhdr, mdata, messagesize);
if(n == 0)
error("convS2M error on write");
if(write(mfd[1], mdata, n) != n)
error("mount write");
}
}
int
perm(Fid *f, Ram *r, int p)
{
if((p*Pother) & r->perm)
return 1;
if(strcmp(f->user, r->group)==0 && ((p*Pgroup) & r->perm))
return 1;
if(strcmp(f->user, r->user)==0 && ((p*Powner) & r->perm))
return 1;
return 0;
}
void *
emalloc(ulong n)
{
void *p;
p = malloc(n);
if(!p)
error("out of memory");
memset(p, 0, n);
return p;
}
void *
erealloc(void *p, ulong n)
{
p = realloc(p, n);
if(!p)
error("out of memory");
return p;
}
char *
estrdup(char *q)
{
char *p;
int n;
n = strlen(q)+1;
p = malloc(n);
if(!p)
error("out of memory");
memmove(p, q, n);
return p;
}
void
ramfsusage(void)
{
fprint(2, "usage: %s [-is] [-m mountpoint]\n", argv0);
exits("usage");
}
/*
* Custom allocators to avoid malloc overheads on small objects.
* We never free these. (See below.)
*/
typedef struct Stringtab Stringtab;
struct Stringtab {
Stringtab *link;
char *str;
};
static Stringtab*
taballoc(void)
{
static Stringtab *t;
static uint nt;
if(nt == 0){
t = malloc(64*sizeof(Stringtab));
if(t == 0)
sysfatal("out of memory");
nt = 64;
}
nt--;
return t++;
}
static char*
xstrdup(char *s)
{
char *r;
int len;
static char *t;
static int nt;
len = strlen(s)+1;
if(len >= 8192)
sysfatal("strdup big string");
if(nt < len){
t = malloc(8192);
if(t == 0)
sysfatal("out of memory");
nt = 8192;
}
r = t;
t += len;
nt -= len;
strcpy(r, s);
return r;
}
/*
* Return a uniquely allocated copy of a string.
* Don't free these -- they stay in the table for the
* next caller who wants that particular string.
* String comparison can be done with pointer comparison
* if you know both strings are atoms.
*/
static Stringtab *stab[1024];
static uint
hash(char *s)
{
uint h;
uchar *p;
h = 0;
for(p=(uchar*)s; *p; p++)
h = h*37 + *p;
return h;
}
char*
atom(char *str)
{
uint h;
Stringtab *tab;
h = hash(str) % nelem(stab);
for(tab=stab[h]; tab; tab=tab->link)
if(strcmp(str, tab->str) == 0)
return tab->str;
tab = taballoc();
tab->str = xstrdup(str);
tab->link = stab[h];
stab[h] = tab;
return tab->str;
}

108
sys/lib/dist/cmd/bzfs/unbflz.c vendored Executable file
View File

@ -0,0 +1,108 @@
#include <u.h>
#include <libc.h>
#include <bio.h>
#include "bzfs.h"
int
Bgetint(Biobuf *b)
{
uchar p[4];
if(Bread(b, p, 4) != 4)
sysfatal("short read");
return (p[0]<<24)|(p[1]<<16)|(p[2]<<8)|p[3];
}
/*
* memmove but make sure overlap works properly.
*/
void
copy(uchar *dst, uchar *src, int n)
{
while(n-- > 0)
*dst++ = *src++;
}
int
unbflz(int in)
{
int rv, out, p[2];
Biobuf *b, bin;
char buf[5];
uchar *data;
int i, j, length, n, m, o, sum;
ulong *blk;
int nblk, mblk;
if(pipe(p) < 0)
sysfatal("pipe: %r");
rv = p[0];
out = p[1];
switch(rfork(RFPROC|RFFDG|RFNOTEG|RFMEM)){
case -1:
sysfatal("fork: %r");
case 0:
close(rv);
break;
default:
close(in);
close(out);
return rv;
}
Binit(&bin, in, OREAD);
b = &bin;
if(Bread(b, buf, 4) != 4)
sysfatal("short read");
if(memcmp(buf, "BLZ\n", 4) != 0)
sysfatal("bad header");
length = Bgetint(b);
data = malloc(length);
if(data == nil)
sysfatal("out of memory");
sum = 0;
nblk = 0;
mblk = 0;
blk = nil;
while(sum < length){
if(nblk>=mblk){
mblk += 16384;
blk = realloc(blk, (mblk+1)*sizeof(blk[0]));
if(blk == nil)
sysfatal("out of memory");
}
n = Bgetint(b);
blk[nblk++] = n;
if(n&(1<<31))
n &= ~(1<<31);
else
blk[nblk++] = Bgetint(b);
sum += n;
}
if(sum != length)
sysfatal("bad compressed data %d %d", sum, length);
i = 0;
j = 0;
while(i < length){
assert(j < nblk);
n = blk[j++];
if(n&(1<<31)){
n &= ~(1<<31);
if((m=Bread(b, data+i, n)) != n)
sysfatal("short read %d %d", n, m);
}else{
o = blk[j++];
copy(data+i, data+o, n);
}
i += n;
}
write(out, data, length);
close(in);
close(out);
_exits(0);
return -1;
}

861
sys/lib/dist/cmd/bzfs/unbzip.c vendored Executable file
View File

@ -0,0 +1,861 @@
#include <u.h>
#include <libc.h>
#include <bio.h>
#include "bzfs.h"
/*
* THIS FILE IS NOT IDENTICAL TO THE ORIGINAL
* FROM THE BZIP2 DISTRIBUTION.
*
* It has been modified, mainly to break the library
* into smaller pieces.
*
* Russ Cox
* rsc@plan9.bell-labs.com
* July 2000
*/
/*---------------------------------------------*/
/*--
Place a 1 beside your platform, and 0 elsewhere.
Attempts to autosniff this even if you don't.
--*/
/*--
Plan 9 from Bell Labs
--*/
#define BZ_PLAN9 1
#define BZ_UNIX 0
#define exit(x) exits((x) ? "whoops" : nil)
#define size_t ulong
#ifdef __GNUC__
# define NORETURN __attribute__ ((noreturn))
#else
# define NORETURN /**/
#endif
/*--
Some more stuff for all platforms :-)
This might have to get moved into the platform-specific
header files if we encounter a machine with different sizes.
--*/
typedef char Char;
typedef unsigned char Bool;
typedef unsigned char UChar;
typedef int Int32;
typedef unsigned int UInt32;
typedef short Int16;
typedef unsigned short UInt16;
#define True ((Bool)1)
#define False ((Bool)0)
/*--
IntNative is your platform's `native' int size.
Only here to avoid probs with 64-bit platforms.
--*/
typedef int IntNative;
#include "bzfs.h"
#include "bzlib.h"
#include "bzlib_private.h"
static int
bunzip(int ofd, char *ofile, Biobuf *bin)
{
int e, n, done, onemore;
char buf[8192];
char obuf[8192];
Biobuf bout;
bz_stream strm;
USED(ofile);
memset(&strm, 0, sizeof strm);
BZ2_bzDecompressInit(&strm, 0, 0);
strm.next_in = buf;
strm.avail_in = 0;
strm.next_out = obuf;
strm.avail_out = sizeof obuf;
done = 0;
Binit(&bout, ofd, OWRITE);
/*
* onemore is a crummy hack to go 'round the loop
* once after we finish, to flush the output buffer.
*/
onemore = 1;
SET(e);
do {
if(!done && strm.avail_in < sizeof buf) {
if(strm.avail_in)
memmove(buf, strm.next_in, strm.avail_in);
n = Bread(bin, buf+strm.avail_in, sizeof(buf)-strm.avail_in);
if(n <= 0)
done = 1;
else
strm.avail_in += n;
strm.next_in = buf;
}
if(strm.avail_out < sizeof obuf) {
Bwrite(&bout, obuf, sizeof(obuf)-strm.avail_out);
strm.next_out = obuf;
strm.avail_out = sizeof obuf;
}
if(onemore == 0)
break;
} while((e=BZ2_bzDecompress(&strm)) == BZ_OK || onemore--);
if(e != BZ_STREAM_END) {
fprint(2, "bunzip2: decompress failed\n");
return 0;
}
if(BZ2_bzDecompressEnd(&strm) != BZ_OK) {
fprint(2, "bunzip2: decompress end failed (can't happen)\n");
return 0;
}
Bterm(&bout);
return 1;
}
void
_unbzip(int in, int out)
{
Biobuf bin;
Binit(&bin, in, OREAD);
if(bunzip(out, nil, &bin) != 1) {
fprint(2, "bunzip2 failed\n");
_exits("bunzip2");
}
}
int
unbzip(int in)
{
int rv, out, p[2];
if(pipe(p) < 0)
sysfatal("pipe: %r");
rv = p[0];
out = p[1];
switch(rfork(RFPROC|RFFDG|RFNOTEG|RFMEM)){
case -1:
sysfatal("fork: %r");
case 0:
close(rv);
break;
default:
close(in);
close(out);
return rv;
}
_unbzip(in, out);
_exits(0);
return -1; /* not reached */
}
int bz_config_ok ( void )
{
if (sizeof(int) != 4) return 0;
if (sizeof(short) != 2) return 0;
if (sizeof(char) != 1) return 0;
return 1;
}
void* default_bzalloc(void *o, int items, int size)
{
USED(o);
return sbrk(items*size);
}
void default_bzfree(void*, void*)
{
}
void
bz_internal_error(int)
{
abort();
}
/*-------------------------------------------------------------*/
/*--- Decompression machinery ---*/
/*--- decompress.c ---*/
/*-------------------------------------------------------------*/
/*--
This file is a part of bzip2 and/or libbzip2, a program and
library for lossless, block-sorting data compression.
Copyright (C) 1996-2000 Julian R Seward. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. The origin of this software must not be misrepresented; you must
not claim that you wrote the original software. If you use this
software in a product, an acknowledgment in the product
documentation would be appreciated but is not required.
3. Altered source versions must be plainly marked as such, and must
not be misrepresented as being the original software.
4. The name of the author may not be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Julian Seward, Cambridge, UK.
jseward@acm.org
bzip2/libbzip2 version 1.0 of 21 March 2000
This program is based on (at least) the work of:
Mike Burrows
David Wheeler
Peter Fenwick
Alistair Moffat
Radford Neal
Ian H. Witten
Robert Sedgewick
Jon L. Bentley
For more information on these sources, see the manual.
--*/
/*---------------------------------------------------*/
static
void makeMaps_d ( DState* s )
{
Int32 i;
s->nInUse = 0;
for (i = 0; i < 256; i++)
if (s->inUse[i]) {
s->seqToUnseq[s->nInUse] = i;
s->nInUse++;
}
}
/*---------------------------------------------------*/
#define RETURN(rrr) \
{ retVal = rrr; goto save_state_and_return; };
#define GET_BITS(lll,vvv,nnn) \
case lll: \
{ int x; if((retVal = getbits(s, lll, &x, nnn)) != 99) \
goto save_state_and_return; vvv=x; }\
int
getbits(DState *s, int lll, int *vvv, int nnn)
{
s->state = lll;
for(;;) {
if (s->bsLive >= nnn) {
UInt32 v;
v = (s->bsBuff >>
(s->bsLive-nnn)) & ((1 << nnn)-1);
s->bsLive -= nnn;
*vvv = v;
return 99;
}
if (s->strm->avail_in == 0) return BZ_OK;
s->bsBuff
= (s->bsBuff << 8) |
((UInt32)
(*((UChar*)(s->strm->next_in))));
s->bsLive += 8;
s->strm->next_in++;
s->strm->avail_in--;
s->strm->total_in_lo32++;
if (s->strm->total_in_lo32 == 0)
s->strm->total_in_hi32++;
}
return -1; /* KEN */
}
#define GET_UCHAR(lll,uuu) \
GET_BITS(lll,uuu,8)
#define GET_BIT(lll,uuu) \
GET_BITS(lll,uuu,1)
/*---------------------------------------------------*/
#define GET_MTF_VAL(label1,label2,lval) \
{ \
if (groupPos == 0) { \
groupNo++; \
if (groupNo >= nSelectors) \
RETURN(BZ_DATA_ERROR); \
groupPos = BZ_G_SIZE; \
gSel = s->selector[groupNo]; \
gMinlen = s->minLens[gSel]; \
gLimit = &(s->limit[gSel][0]); \
gPerm = &(s->perm[gSel][0]); \
gBase = &(s->base[gSel][0]); \
} \
groupPos--; \
zn = gMinlen; \
GET_BITS(label1, zvec, zn); \
while (1) { \
if (zn > 20 /* the longest code */) \
RETURN(BZ_DATA_ERROR); \
if (zvec <= gLimit[zn]) break; \
zn++; \
GET_BIT(label2, zj); \
zvec = (zvec << 1) | zj; \
}; \
if (zvec - gBase[zn] < 0 \
|| zvec - gBase[zn] >= BZ_MAX_ALPHA_SIZE) \
RETURN(BZ_DATA_ERROR); \
lval = gPerm[zvec - gBase[zn]]; \
}
/*---------------------------------------------------*/
Int32 BZ2_decompress ( DState* s )
{
UChar uc;
Int32 retVal;
Int32 minLen, maxLen;
bz_stream* strm = s->strm;
/* stuff that needs to be saved/restored */
Int32 i;
Int32 j;
Int32 t;
Int32 alphaSize;
Int32 nGroups;
Int32 nSelectors;
Int32 EOB;
Int32 groupNo;
Int32 groupPos;
Int32 nextSym;
Int32 nblockMAX;
Int32 nblock;
Int32 es;
Int32 N;
Int32 curr;
Int32 zt;
Int32 zn;
Int32 zvec;
Int32 zj;
Int32 gSel;
Int32 gMinlen;
Int32* gLimit;
Int32* gBase;
Int32* gPerm;
if (s->state == BZ_X_MAGIC_1) {
/*initialise the save area*/
s->save_i = 0;
s->save_j = 0;
s->save_t = 0;
s->save_alphaSize = 0;
s->save_nGroups = 0;
s->save_nSelectors = 0;
s->save_EOB = 0;
s->save_groupNo = 0;
s->save_groupPos = 0;
s->save_nextSym = 0;
s->save_nblockMAX = 0;
s->save_nblock = 0;
s->save_es = 0;
s->save_N = 0;
s->save_curr = 0;
s->save_zt = 0;
s->save_zn = 0;
s->save_zvec = 0;
s->save_zj = 0;
s->save_gSel = 0;
s->save_gMinlen = 0;
s->save_gLimit = NULL;
s->save_gBase = NULL;
s->save_gPerm = NULL;
}
/*restore from the save area*/
i = s->save_i;
j = s->save_j;
t = s->save_t;
alphaSize = s->save_alphaSize;
nGroups = s->save_nGroups;
nSelectors = s->save_nSelectors;
EOB = s->save_EOB;
groupNo = s->save_groupNo;
groupPos = s->save_groupPos;
nextSym = s->save_nextSym;
nblockMAX = s->save_nblockMAX;
nblock = s->save_nblock;
es = s->save_es;
N = s->save_N;
curr = s->save_curr;
zt = s->save_zt;
zn = s->save_zn;
zvec = s->save_zvec;
zj = s->save_zj;
gSel = s->save_gSel;
gMinlen = s->save_gMinlen;
gLimit = s->save_gLimit;
gBase = s->save_gBase;
gPerm = s->save_gPerm;
retVal = BZ_OK;
switch (s->state) {
GET_UCHAR(BZ_X_MAGIC_1, uc);
if (uc != 'B') RETURN(BZ_DATA_ERROR_MAGIC);
GET_UCHAR(BZ_X_MAGIC_2, uc);
if (uc != 'Z') RETURN(BZ_DATA_ERROR_MAGIC);
GET_UCHAR(BZ_X_MAGIC_3, uc)
if (uc != 'h') RETURN(BZ_DATA_ERROR_MAGIC);
GET_BITS(BZ_X_MAGIC_4, s->blockSize100k, 8)
if (s->blockSize100k < '1' ||
s->blockSize100k > '9') RETURN(BZ_DATA_ERROR_MAGIC);
s->blockSize100k -= '0';
if (0 && s->smallDecompress) {
s->ll16 = BZALLOC( s->blockSize100k * 100000 * sizeof(UInt16) );
s->ll4 = BZALLOC(
((1 + s->blockSize100k * 100000) >> 1) * sizeof(UChar)
);
if (s->ll16 == NULL || s->ll4 == NULL) RETURN(BZ_MEM_ERROR);
} else {
s->tt = BZALLOC( s->blockSize100k * 100000 * sizeof(Int32) );
if (s->tt == NULL) RETURN(BZ_MEM_ERROR);
}
GET_UCHAR(BZ_X_BLKHDR_1, uc);
if (uc == 0x17) goto endhdr_2;
if (uc != 0x31) RETURN(BZ_DATA_ERROR);
GET_UCHAR(BZ_X_BLKHDR_2, uc);
if (uc != 0x41) RETURN(BZ_DATA_ERROR);
GET_UCHAR(BZ_X_BLKHDR_3, uc);
if (uc != 0x59) RETURN(BZ_DATA_ERROR);
GET_UCHAR(BZ_X_BLKHDR_4, uc);
if (uc != 0x26) RETURN(BZ_DATA_ERROR);
GET_UCHAR(BZ_X_BLKHDR_5, uc);
if (uc != 0x53) RETURN(BZ_DATA_ERROR);
GET_UCHAR(BZ_X_BLKHDR_6, uc);
if (uc != 0x59) RETURN(BZ_DATA_ERROR);
s->currBlockNo++;
// if (s->verbosity >= 2)
// VPrintf1 ( "\n [%d: huff+mtf ", s->currBlockNo );
s->storedBlockCRC = 0;
GET_UCHAR(BZ_X_BCRC_1, uc);
s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
GET_UCHAR(BZ_X_BCRC_2, uc);
s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
GET_UCHAR(BZ_X_BCRC_3, uc);
s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
GET_UCHAR(BZ_X_BCRC_4, uc);
s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
GET_BITS(BZ_X_RANDBIT, s->blockRandomised, 1);
s->origPtr = 0;
GET_UCHAR(BZ_X_ORIGPTR_1, uc);
s->origPtr = (s->origPtr << 8) | ((Int32)uc);
GET_UCHAR(BZ_X_ORIGPTR_2, uc);
s->origPtr = (s->origPtr << 8) | ((Int32)uc);
GET_UCHAR(BZ_X_ORIGPTR_3, uc);
s->origPtr = (s->origPtr << 8) | ((Int32)uc);
if (s->origPtr < 0)
RETURN(BZ_DATA_ERROR);
if (s->origPtr > 10 + 100000*s->blockSize100k)
RETURN(BZ_DATA_ERROR);
/*--- Receive the mapping table ---*/
for (i = 0; i < 16; i++) {
GET_BIT(BZ_X_MAPPING_1, uc);
if (uc == 1)
s->inUse16[i] = True; else
s->inUse16[i] = False;
}
for (i = 0; i < 256; i++) s->inUse[i] = False;
for (i = 0; i < 16; i++)
if (s->inUse16[i])
for (j = 0; j < 16; j++) {
GET_BIT(BZ_X_MAPPING_2, uc);
if (uc == 1) s->inUse[i * 16 + j] = True;
}
makeMaps_d ( s );
if (s->nInUse == 0) RETURN(BZ_DATA_ERROR);
alphaSize = s->nInUse+2;
/*--- Now the selectors ---*/
GET_BITS(BZ_X_SELECTOR_1, nGroups, 3);
if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR);
GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15);
if (nSelectors < 1) RETURN(BZ_DATA_ERROR);
for (i = 0; i < nSelectors; i++) {
j = 0;
while (True) {
GET_BIT(BZ_X_SELECTOR_3, uc);
if (uc == 0) break;
j++;
if (j >= nGroups) RETURN(BZ_DATA_ERROR);
}
s->selectorMtf[i] = j;
}
/*--- Undo the MTF values for the selectors. ---*/
{
UChar pos[BZ_N_GROUPS], tmp, v;
for (v = 0; v < nGroups; v++) pos[v] = v;
for (i = 0; i < nSelectors; i++) {
v = s->selectorMtf[i];
tmp = pos[v];
while (v > 0) { pos[v] = pos[v-1]; v--; }
pos[0] = tmp;
s->selector[i] = tmp;
}
}
/*--- Now the coding tables ---*/
for (t = 0; t < nGroups; t++) {
GET_BITS(BZ_X_CODING_1, curr, 5);
for (i = 0; i < alphaSize; i++) {
while (True) {
if (curr < 1 || curr > 20) RETURN(BZ_DATA_ERROR);
GET_BIT(BZ_X_CODING_2, uc);
if (uc == 0) break;
GET_BIT(BZ_X_CODING_3, uc);
if (uc == 0) curr++; else curr--;
}
s->len[t][i] = curr;
}
}
/*--- Create the Huffman decoding tables ---*/
for (t = 0; t < nGroups; t++) {
minLen = 32;
maxLen = 0;
for (i = 0; i < alphaSize; i++) {
if (s->len[t][i] > maxLen) maxLen = s->len[t][i];
if (s->len[t][i] < minLen) minLen = s->len[t][i];
}
BZ2_hbCreateDecodeTables (
&(s->limit[t][0]),
&(s->base[t][0]),
&(s->perm[t][0]),
&(s->len[t][0]),
minLen, maxLen, alphaSize
);
s->minLens[t] = minLen;
}
/*--- Now the MTF values ---*/
EOB = s->nInUse+1;
nblockMAX = 100000 * s->blockSize100k;
groupNo = -1;
groupPos = 0;
for (i = 0; i <= 255; i++) s->unzftab[i] = 0;
/*-- MTF init --*/
{
Int32 ii, jj, kk;
kk = MTFA_SIZE-1;
for (ii = 256 / MTFL_SIZE - 1; ii >= 0; ii--) {
for (jj = MTFL_SIZE-1; jj >= 0; jj--) {
s->mtfa[kk] = (UChar)(ii * MTFL_SIZE + jj);
kk--;
}
s->mtfbase[ii] = kk + 1;
}
}
/*-- end MTF init --*/
nblock = 0;
GET_MTF_VAL(BZ_X_MTF_1, BZ_X_MTF_2, nextSym);
while (True) {
if (nextSym == EOB) break;
if (nextSym == BZ_RUNA || nextSym == BZ_RUNB) {
es = -1;
N = 1;
do {
if (nextSym == BZ_RUNA) es = es + (0+1) * N; else
if (nextSym == BZ_RUNB) es = es + (1+1) * N;
N = N * 2;
GET_MTF_VAL(BZ_X_MTF_3, BZ_X_MTF_4, nextSym);
}
while (nextSym == BZ_RUNA || nextSym == BZ_RUNB);
es++;
uc = s->seqToUnseq[ s->mtfa[s->mtfbase[0]] ];
s->unzftab[uc] += es;
if (0 && s->smallDecompress)
while (es > 0) {
if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
s->ll16[nblock] = (UInt16)uc;
nblock++;
es--;
}
else
while (es > 0) {
if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
s->tt[nblock] = (UInt32)uc;
nblock++;
es--;
};
continue;
} else {
if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
/*-- uc = MTF ( nextSym-1 ) --*/
{
Int32 ii, jj, kk, pp, lno, off;
UInt32 nn;
nn = (UInt32)(nextSym - 1);
if (nn < MTFL_SIZE) {
/* avoid general-case expense */
pp = s->mtfbase[0];
uc = s->mtfa[pp+nn];
while (nn > 3) {
Int32 z = pp+nn;
s->mtfa[(z) ] = s->mtfa[(z)-1];
s->mtfa[(z)-1] = s->mtfa[(z)-2];
s->mtfa[(z)-2] = s->mtfa[(z)-3];
s->mtfa[(z)-3] = s->mtfa[(z)-4];
nn -= 4;
}
while (nn > 0) {
s->mtfa[(pp+nn)] = s->mtfa[(pp+nn)-1]; nn--;
};
s->mtfa[pp] = uc;
} else {
/* general case */
lno = nn / MTFL_SIZE;
off = nn % MTFL_SIZE;
pp = s->mtfbase[lno] + off;
uc = s->mtfa[pp];
while (pp > s->mtfbase[lno]) {
s->mtfa[pp] = s->mtfa[pp-1]; pp--;
};
s->mtfbase[lno]++;
while (lno > 0) {
s->mtfbase[lno]--;
s->mtfa[s->mtfbase[lno]]
= s->mtfa[s->mtfbase[lno-1] + MTFL_SIZE - 1];
lno--;
}
s->mtfbase[0]--;
s->mtfa[s->mtfbase[0]] = uc;
if (s->mtfbase[0] == 0) {
kk = MTFA_SIZE-1;
for (ii = 256 / MTFL_SIZE-1; ii >= 0; ii--) {
for (jj = MTFL_SIZE-1; jj >= 0; jj--) {
s->mtfa[kk] = s->mtfa[s->mtfbase[ii] + jj];
kk--;
}
s->mtfbase[ii] = kk + 1;
}
}
}
}
/*-- end uc = MTF ( nextSym-1 ) --*/
s->unzftab[s->seqToUnseq[uc]]++;
if (0 && s->smallDecompress)
s->ll16[nblock] = (UInt16)(s->seqToUnseq[uc]); else
s->tt[nblock] = (UInt32)(s->seqToUnseq[uc]);
nblock++;
GET_MTF_VAL(BZ_X_MTF_5, BZ_X_MTF_6, nextSym);
continue;
}
}
/* Now we know what nblock is, we can do a better sanity
check on s->origPtr.
*/
if (s->origPtr < 0 || s->origPtr >= nblock)
RETURN(BZ_DATA_ERROR);
s->state_out_len = 0;
s->state_out_ch = 0;
BZ_INITIALISE_CRC ( s->calculatedBlockCRC );
s->state = BZ_X_OUTPUT;
// if (s->verbosity >= 2) VPrintf0 ( "rt+rld" );
/*-- Set up cftab to facilitate generation of T^(-1) --*/
s->cftab[0] = 0;
for (i = 1; i <= 256; i++) s->cftab[i] = s->unzftab[i-1];
for (i = 1; i <= 256; i++) s->cftab[i] += s->cftab[i-1];
if (0 && s->smallDecompress) {
/*-- Make a copy of cftab, used in generation of T --*/
for (i = 0; i <= 256; i++) s->cftabCopy[i] = s->cftab[i];
/*-- compute the T vector --*/
for (i = 0; i < nblock; i++) {
uc = (UChar)(s->ll16[i]);
SET_LL(i, s->cftabCopy[uc]);
s->cftabCopy[uc]++;
}
/*-- Compute T^(-1) by pointer reversal on T --*/
i = s->origPtr;
j = GET_LL(i);
do {
Int32 tmp = GET_LL(j);
SET_LL(j, i);
i = j;
j = tmp;
}
while (i != s->origPtr);
s->tPos = s->origPtr;
s->nblock_used = 0;
if (s->blockRandomised) {
BZ_RAND_INIT_MASK;
BZ_GET_SMALL(s->k0); s->nblock_used++;
BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK;
} else {
BZ_GET_SMALL(s->k0); s->nblock_used++;
}
} else {
/*-- compute the T^(-1) vector --*/
for (i = 0; i < nblock; i++) {
uc = (UChar)(s->tt[i] & 0xff);
s->tt[s->cftab[uc]] |= (i << 8);
s->cftab[uc]++;
}
s->tPos = s->tt[s->origPtr] >> 8;
s->nblock_used = 0;
if (s->blockRandomised) {
BZ_RAND_INIT_MASK;
BZ_GET_FAST(s->k0); s->nblock_used++;
BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK;
} else {
BZ_GET_FAST(s->k0); s->nblock_used++;
}
}
RETURN(BZ_OK);
endhdr_2:
GET_UCHAR(BZ_X_ENDHDR_2, uc);
if (uc != 0x72) RETURN(BZ_DATA_ERROR);
GET_UCHAR(BZ_X_ENDHDR_3, uc);
if (uc != 0x45) RETURN(BZ_DATA_ERROR);
GET_UCHAR(BZ_X_ENDHDR_4, uc);
if (uc != 0x38) RETURN(BZ_DATA_ERROR);
GET_UCHAR(BZ_X_ENDHDR_5, uc);
if (uc != 0x50) RETURN(BZ_DATA_ERROR);
GET_UCHAR(BZ_X_ENDHDR_6, uc);
if (uc != 0x90) RETURN(BZ_DATA_ERROR);
s->storedCombinedCRC = 0;
GET_UCHAR(BZ_X_CCRC_1, uc);
s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
GET_UCHAR(BZ_X_CCRC_2, uc);
s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
GET_UCHAR(BZ_X_CCRC_3, uc);
s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
GET_UCHAR(BZ_X_CCRC_4, uc);
s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
s->state = BZ_X_IDLE;
RETURN(BZ_STREAM_END);
default: AssertH ( False, 4001 );
}
AssertH ( False, 4002 );
save_state_and_return:
s->save_i = i;
s->save_j = j;
s->save_t = t;
s->save_alphaSize = alphaSize;
s->save_nGroups = nGroups;
s->save_nSelectors = nSelectors;
s->save_EOB = EOB;
s->save_groupNo = groupNo;
s->save_groupPos = groupPos;
s->save_nextSym = nextSym;
s->save_nblockMAX = nblockMAX;
s->save_nblock = nblock;
s->save_es = es;
s->save_N = N;
s->save_curr = curr;
s->save_zt = zt;
s->save_zn = zn;
s->save_zvec = zvec;
s->save_zj = zj;
s->save_gSel = gSel;
s->save_gMinlen = gMinlen;
s->save_gLimit = gLimit;
s->save_gBase = gBase;
s->save_gPerm = gPerm;
return retVal;
}
/*-------------------------------------------------------------*/
/*--- end decompress.c ---*/
/*-------------------------------------------------------------*/

133
sys/lib/dist/cmd/cdsh.c vendored Executable file
View File

@ -0,0 +1,133 @@
/*
* The `cd' shell.
* Just has cd and lc.
*/
#include <u.h>
#include <libc.h>
#include <bio.h>
char *pwd;
char *root = "/";
void
usage(void)
{
fprint(2, "usage: cdsh [-r root]\n");
exits("usage");
}
int
system(char *cmd)
{
int pid;
if((pid = fork()) < 0)
return -1;
if(pid == 0) {
dup(2, 1);
execl("/bin/rc", "rc", "-c", cmd, nil);
exits("exec");
}
waitpid();
return 0;
}
int
cd(char *s)
{
char *newpwd;
int l;
if(s[0] == '/') {
cleanname(s);
newpwd = strdup(s);
} else {
l = strlen(pwd)+1+strlen(s)+1+50; /* 50 = crud for unicode mistakes */
newpwd = malloc(l);
snprint(newpwd, l, "%s/%s", pwd, s);
cleanname(newpwd);
assert(newpwd[0] == '/');
}
if(chdir(root) < 0 || (newpwd[1] != '\0' && chdir(newpwd+1) < 0)) {
chdir(root);
chdir(pwd+1);
free(newpwd);
return -1;
} else {
free(pwd);
pwd = newpwd;
return 0;
}
}
void
main(int argc, char **argv)
{
char *p;
Biobuf bin;
char *f[2];
int nf;
ARGBEGIN{
case 'r':
root = ARGF();
if(root == nil)
usage();
if(root[0] != '/') {
fprint(2, "root must be rooted\n");
exits("root");
}
break;
default:
usage();
}ARGEND;
if(argc != 0)
usage();
cleanname(root);
if(cd("/") < 0) {
fprint(2, "cannot cd %s: %r\n", root);
exits("root");
}
Binit(&bin, 0, OREAD);
while(fprint(2, "%s%% ", pwd), (p = Brdline(&bin, '\n'))) {
p[Blinelen(&bin)-1] = '\0';
nf = tokenize(p, f, nelem(f));
if(nf < 1)
continue;
if(strcmp(f[0], "exit") == 0)
break;
if(strcmp(f[0], "lc") == 0) {
if(nf == 1) {
if(system("/bin/lc") < 0)
fprint(2, "lc: %r\n");
} else if(nf == 2) {
if(strpbrk(p, "'`{}^@$#&()|\\;><"))
fprint(2, "no shell characters allowed\n");
else {
p = f[1];
*--p = ' ';
*--p = 'c';
*--p = 'l';
if(system(p) < 0)
fprint(2, "lc: %r\n");
}
}
continue;
}
if(strcmp(f[0], "cd") == 0) {
if(nf < 2)
fprint(2, "usage: cd dir\n");
else if(cd(f[1]) < 0)
fprint(2, "cd: %r\n");
continue;
}
fprint(2, "commands are cd, lc, and exit\n");
}
print("%s\n", pwd);
}

59
sys/lib/dist/cmd/clog.c vendored Executable file
View File

@ -0,0 +1,59 @@
#include <u.h>
#include <libc.h>
#include <bio.h>
char *argv0;
int
openlog(char *name)
{
int fd;
fd = open(name, OWRITE);
if(fd < 0){
fprint(2, "%s: can't open %s: %r\n", argv0, name);
return -1;
}
seek(fd, 0, 2);
return fd;
}
void
main(int argc, char **argv)
{
Biobuf in;
int fd;
char *p, *t;
char buf[8192];
argv0 = argv[0];
if(argc != 4){
fprint(2, "usage: %s console logfile prefix\n", argv0);
exits("usage");
}
fd = open(argv[1], OREAD);
if(fd < 0){
fprint(2, "%s: can't open %s: %r\n", argv0, argv[1]);
exits("open");
}
Binit(&in, fd, OREAD);
fd = openlog(argv[2]);
for(;;){
if(p = Brdline(&in, '\n')){
p[Blinelen(&in)-1] = 0;
if(fprint(fd, "%s: %s\n", argv[3], p) < 0){
close(fd);
fd = openlog(argv[2]);
fprint(fd, "%s: %s\n", t, p);
}
} else if(Blinelen(&in) == 0) // true eof
break;
else {
Bread(&in, buf, sizeof buf);
}
}
exits(0);
}

24
sys/lib/dist/cmd/mkfile vendored Executable file
View File

@ -0,0 +1,24 @@
</$objtype/mkfile
CPUS=386
TARG=\
bargraph\
bflz\
cdsh\
tailfsrv\
touchfs\
unbflz\
OFILES=
HFILES=
BIN=/sys/lib/dist/bin/$objtype
</sys/src/cmd/mkmany
all:V: bzfs!all
install:V: bzfs!install
clean:V: bzfs!clean
bzfs!%:V:
cd bzfs; mk $stem; cd ..

76
sys/lib/dist/cmd/multi/mkfile vendored Executable file
View File

@ -0,0 +1,76 @@
objtype=386
</$objtype/mkfile
TARG=multi
PIECES=\
aux/mouse\
aux/pcmcia\
aux/vga\
aux/zerotrunc\
disk/fdisk\
disk/format\
disk/mbr\
disk/prep\
# fossil/fossil\
# fossil/flfmt\
ip/ipconfig\
ip/ppp\
ndb/cs\
ndb/dns\
# replica/applylog\
9660srv\
# awk\
basename\
cat\
chgrp\
chmod\
cleanname\
cmp\
cp\
date\
dd\
dossrv\
echo\
ed\
ext2srv\
# fcp\
grep\
hget\
hoc\
ls\
mc\
mount\
mv\
ps\
read\
# rio\
rm\
sed\
sort\
srv\
# stats\
syscall\
tail\
tee\
test\
wc\
xd\
8.multi:V: mkmulti mkfile
mkmulti $PIECES
ls -l 8.multi
ls -l /386/bin/$PIECES | awk '{s += $6} END{print s}'
scripts:V:
rm -rf ../../pc/multi
mkdir ../../pc/multi
for(i in $PIECES){
b=`{basename $i}
echo '#!/bin/multi' >>../../pc/multi/$b
chmod +x ../../pc/multi/$b
}
BIN=/sys/lib/dist/bin/$objtype
</sys/src/cmd/mkmany

70
sys/lib/dist/cmd/multi/mkmulti vendored Executable file
View File

@ -0,0 +1,70 @@
#!/bin/rc
targ=multi
n=0
dir=`{pwd}
fn grab {
echo using $*
for(i){
n=`{echo 1+$n|hoc}
mv $i $dir/a.$n.8
}
}
fn getfiles {
sed -n 's/^(pcc|8\^l|8l) +(-o [^ ]* +)?([^\-].*)/ \3/p' | sed 's/ -[^ ]*//g' |
sed 's/ [^ ]*\.a//g'
}
rm a.*.8
>multi.h
>multiproto.h
for(i){
echo $i...
b=`{basename $i}
p=$b
if(~ $b [0-9]*)
p=_$b
echo void $p^_main'(int, char**);' >>$dir/multiproto.h
echo "$b", $p^_main, >>$dir/multi.h
d=`{basename -d $i}
if(~ $i disk/prep disk/fdisk){
cd /sys/src/cmd/disk/prep
rm 8.$b
files=`{mk 8.$b | getfiles}
}
if not if(test -d /sys/src/cmd/$i && @{cd /sys/src/cmd/$i && mk 8.out}){
cd /sys/src/cmd/$i
rm 8.out
files=`{mk 8.out | getfiles}
}
if not if(test -d /sys/src/cmd/$i && @{cd /sys/src/cmd/$i && mk 8.$b}){
cd /sys/src/cmd/$i
rm 8.out
files=`{mk 8.$b | getfiles}
}
if not if(test -d /sys/src/cmd/$d && @{cd /sys/src/cmd/$d && mk 8.$b}){
cd /sys/src/cmd/$d
rm 8.$b
files=`{mk 8.$b | getfiles}
}
if not{
echo do not know how to make $i
exit oops
}
aux/8prefix $p^_ $files
grab $files
switch(`{pwd}){
case /sys/src/cmd /sys/src/cmd/aux /sys/src/cmd/ip
rm 8.$b
case *
mk clean
}
}
cd $dir
8c -FVw multi.c
8l -o 8.$targ multi.8 a.*.8
# rm a.*.8

38
sys/lib/dist/cmd/multi/multi.c vendored Executable file
View File

@ -0,0 +1,38 @@
#include <u.h>
#include <libc.h>
#include "multiproto.h"
struct {
char *name;
void (*fn)(int, char**);
} mains[] =
{
#include "multi.h"
};
void
main(int argc, char **argv)
{
int i;
char *cmd, *p;
if(argc == 1){
fprint(2, "usage: multi cmd args...\n");
exits("usage");
}
cmd = argv[1];
if(p = strrchr(cmd, '/'))
cmd = p+1;
argv++;
argc--;
for(i=0; i<nelem(mains); i++){
if(strcmp(cmd, mains[i].name) == 0){
mains[i].fn(argc, argv);
return;
}
}
fprint(2, "multi: no such cmd %s\n", cmd);
exits("no cmd");
}

17
sys/lib/dist/cmd/tailfsrv.c vendored Executable file
View File

@ -0,0 +1,17 @@
#include <u.h>
#include <libc.h>
void
main(void)
{
int fd, p[2];
char buf[8192], n;
pipe(p);
fd = create("/srv/log", OWRITE, 0666);
fprint(fd, "%d", p[0]);
close(fd);
close(p[0]);
while((n = read(p[1], buf, sizeof buf)) >= 0)
write(1, buf, n);
}

66
sys/lib/dist/cmd/touchfs.c vendored Executable file
View File

@ -0,0 +1,66 @@
#include <u.h>
#include <libc.h>
#include <bio.h>
void
Bpass(Biobuf *bin, Biobuf *bout, int n)
{
char buf[8192];
int m;
while(n > 0) {
m = sizeof buf;
if(m > n)
m = n;
m = Bread(bin, buf, m);
if(m <= 0) {
fprint(2, "corrupt archive\n");
exits("notdone");
}
Bwrite(bout, buf, m);
n -= m;
}
assert(n == 0);
}
void
main(int argc, char **argv)
{
char *p, *f[10];
Biobuf bin, bout;
int nf;
ulong d, size;
if(argc != 2) {
fprint(2, "usage: cat mkfs-archive | touchfs date (in seconds)\n");
exits("usage");
}
d = strtoul(argv[1], 0, 0);
quotefmtinstall();
Binit(&bin, 0, OREAD);
Binit(&bout, 1, OWRITE);
while(p = Brdline(&bin, '\n')) {
p[Blinelen(&bin)-1] = '\0';
if(strcmp(p, "end of archive") == 0) {
Bprint(&bout, "end of archive\n");
exits(0);
}
nf = tokenize(p, f, nelem(f));
if(nf != 6) {
fprint(2, "corrupt archive\n");
exits("notdone");
}
Bprint(&bout, "%q %q %q %q %lud %q\n",
f[0], f[1], f[2], f[3], d, f[5]);
size = strtoul(f[5], 0, 0);
Bpass(&bin, &bout, size);
}
fprint(2, "premature end of archive\n");
exits("notdone");
}

109
sys/lib/dist/cmd/unbflz.c vendored Executable file
View File

@ -0,0 +1,109 @@
#include <u.h>
#include <libc.h>
#include <bio.h>
void
usage(void)
{
fprint(2, "usage: unbflz [file]\n");
exits("usage");
}
int
Bgetint(Biobuf *b)
{
uchar p[4];
if(Bread(b, p, 4) != 4)
sysfatal("short read");
return (p[0]<<24)|(p[1]<<16)|(p[2]<<8)|p[3];
}
/*
* memmove but make sure overlap works properly.
*/
void
copy(uchar *dst, uchar *src, int n)
{
while(n-- > 0)
*dst++ = *src++;
}
void
main(int argc, char **argv)
{
Biobuf *b, bin;
char buf[5];
uchar *data;
ulong *blk, l;
int nblk, mblk;
int sum;
int i, j, length, m, n, o;
ARGBEGIN{
default:
usage();
}ARGEND
switch(argc){
default:
usage();
case 0:
Binit(&bin, 0, OREAD);
b = &bin;
break;
case 1:
if((b = Bopen(argv[0], OREAD)) == nil)
sysfatal("open %s: %r", argv[0]);
break;
}
if(Bread(b, buf, 4) != 4)
sysfatal("short read");
if(memcmp(buf, "BLZ\n", 4) != 0)
sysfatal("bad header");
length = Bgetint(b);
data = malloc(length);
if(data == nil)
sysfatal("out of memory");
sum = 0;
nblk = 0;
mblk = 0;
blk = nil;
while(sum < length){
if(nblk>=mblk){
mblk += 16384;
blk = realloc(blk, (mblk+1)*sizeof(blk[0]));
if(blk == nil)
sysfatal("out of memory");
}
l = Bgetint(b);
blk[nblk++] = l;
if(l&(1<<31))
l &= ~(1<<31);
else
blk[nblk++] = Bgetint(b);
sum += l;
}
if(sum != length)
sysfatal("bad compressed data %d %d", sum, length);
i = 0;
j = 0;
while(i < length){
assert(j < nblk);
n = blk[j++];
if(n&(1<<31)){
n &= ~(1<<31);
if((m=Bread(b, data+i, n)) != n)
sysfatal("short read %d %d", n, m);
}else{
o = blk[j++];
copy(data+i, data+o, n);
}
i += n;
}
write(1, data, length);
exits(nil);
}

15
sys/lib/dist/logcompress.awk vendored Executable file
View File

@ -0,0 +1,15 @@
{
verb[$4] = $3
data[$4] = sprintf("%s %s %s %s %s %s", $5, $6, $7, $8, $9, $10)
}
END{
for(i in verb)
if(verb[i] != "d")
printf("a %s %s\n", i, data[i]) |"sort +1"
close("sort +1")
for(i in verb)
if(verb[i] == "d")
printf("d %s %s\n", i, data[i]) |"sort -r +1"
close("sort -r +1")
}

3
sys/lib/dist/logtime.awk vendored Executable file
View File

@ -0,0 +1,3 @@
{
printf("%s %d %s\n", t, NR, $0);
}

221
sys/lib/dist/mkfile vendored Executable file
View File

@ -0,0 +1,221 @@
# /sys/lib/dist/mkfile
src9=/n/sources/plan9 # what to export
dist=/sys/lib/dist # where this machinery lives
scr=/n/other/dist # scratch space before copying to web.protect
# import /sys/lib/dist/web.protect from the outside
x=`{setup}
cd:V: $scr/plan9.iso
ncd:V: $scr/plan9-new.iso.bz2
ncd-dist:V: $scr/plan9-new.iso.bz2
mk $dist/web.protect/plan9-new.iso.bz2
cd-dist:V: $scr/plan9.iso.bz2
mk $dist/web.protect/plan9.iso.bz2
contrib-cd:V: $scr/contrib.iso.bz2
mk $dist/web.protect/contrib.iso.bz2
$scr/%.iso:D: $src9/dist/replica/plan9.log
@ { cd pc; mk cddisk }
rm -f $target
bind pc/cddisk cdstub/bootdisk.img
if(! test -f $src9/bootdisk.img)
bind -a cdstub $src9
title=`{date | sed 's/(...) (...) (..) (..:..):.. (...) (....)/Plan 9 - \2 \3 \6 \4/'}
title=$"title
echo 'CD:' $title
disk/mk9660 -9cj -v $title -s $src9 -b bootdisk.img $target
# copy compressed file from scratch space to the distribution, carefully
$dist/web.protect/%.iso.bz2: $scr/%.iso.bz2
>>$target.new
chmod +t $target.new # waste write buf, not venti store
cp $prereq $target.new
# replace previous version with a flash cut
if (test -e $target)
mv $target $target.old # try to not clobber downloads in progress
mv $target.new $target
cd-cleanup:V:
rm -f $dist/web.protect/*.iso.bz2.old # remove old versions after a delay
# generate replica log & db for $src9 only
scan:V:
test -d $scr # make sure other was mounted above
test -d $src9
test -d $dist/web.protect
lock scan.lock replica/scan $dist/sources.replica
chmod +t $src9/dist/replica/*.^(db log)
# generate replica log & db for all of /n/sources
scanall:V:
@ {
rfork ne
d=/n/sources
test -d $src9
lock scanall.lock replica/scan $dist/sourcesall.replica
chmod +t $src9/dist/replica/*.^(db log)
}
compresslog:V:
{
awk -f logcompress.awk $src9/dist/replica/plan9.log |
awk -f logtime.awk -v 't='^`{date -n} >/tmp/plan9.log
rm -f $src9/dist/replica/plan9.new.log
cp /tmp/plan9.log $src9/dist/replica/plan9.new.log &&
mv $src9/dist/replica/plan9.new.log $src9/dist/replica/plan9.log
} <scan.lock
#restart:V:
# rm -f $src9/dist/replica/plan9.db
# rm -f $src9/dist/replica/plan9.log
# chmod 664 $src9/dist/replica/plan9.db >$src9/dist/replica/plan9.db
# chmod 664 $src9/dist/replica/plan9.log >$src9/dist/replica/plan9.log
# chmod +a $src9/dist/replica/plan9.log
# mk scan
odump:V:
disk/dump9660 -9cj -v 'Plan 9 4e Dumps' -s $src9 \
-p /sys/lib/sysconfig/proto/allproto $scr/distdump.iso
cd.install:V:
# if(~ $sysname achille){
# echo; echo; echo '*** run this on a real machine, like chips.'
# exit bad
# }
bzip2 -9 <$scr/plan9.iso >web.protect/nplan9.iso.bz2
D.install:V:
D=/n/roro/usr/rob/testplan9
9fs roro
test -d $D
cp $D$dist/pc/ndisk $dist/web.protect/ndisk
cp $D$dist/pc/9loaddebug $dist/web.protect/n9loaddebug
reallyinstall:V:
if(! ~ $sysname achille){
echo; echo; echo '*** this needs to run on achille.'
exit bad
}
cd web.protect
for (i in plan9.iso.bz2 disk 9loaddebug vmware.zip)
if(test -f n$i){
mv $i _$i && { mv n$i $i || mv _$i $i }
}
rm /srv/ramfs.9down4e
$dist/startcache
dump:V:
rm -f /srv/9660.xxx
9660srv 9660.xxx
mount /srv/9660.xxx /n/kremvax $scr/plan9.iso
now=`{mtime $dist/web.protect/plan9.iso.bz2 | awk '{print $1}'}
ls -l /rls/plan9/4e.iso
disk/dump9660 -9cj -s /n/kremvax -n $now /rls/plan9/4e.iso
ls -l /rls/plan9/4e.iso
rm /srv/9660.xxx
reencode:V:
rm -f $scr/nplan9.iso
rm -f /srv/9660.xxx
9660srv 9660.xxx
mount /srv/9660.xxx /n/kremvax $scr/plan9.iso
disk/mk9660 -9cj -v 'Plan 9 4th Edition' -s /n/kremvax \
-b bootdisk.img $scr/nplan9.iso
rm /srv/9660.xxx
# compress a cd image in scratch space
$scr/%.iso.bz2:D: $scr/%.iso
@ {
cd $scr
bzip2 -9 <$stem.iso >n$stem.iso.bz2 &&
{
if (test -e $stem.iso.bz2)
mv $stem.iso.bz2 _$stem.iso.bz2
mv n$stem.iso.bz2 $stem.iso.bz2
}
echo `{date} md5 `{md5sum <$stem.iso.bz2} \
sha1 `{sha1sum <$stem.iso.bz2} \
$stem.iso.bz2 >>/usr/web/plan9checksums.txt
}
$scr/contrib.iso:DV:
rm -f $target
disk/mk9660 -9cj -v 'Plan 9 Extras' -s /n/sources \
-p ./contrib.proto $target
rebuild:V:
chmod +l build.lock >>build.lock
rebuild <build.lock
rebuild-mail:V:
chmod +l build.lock >>build.lock
rebuild <build.lock
datemail 'nightly build errors' 9trouble <buildit.out
datemail 'nightly build differences' 9trouble <checkbuild.out
status=''
scansources-mail:V:
scansources | datemail 'nightly fs vs. sources scan' 9trouble
worldwritable-mail:V:
test -e $src9
@ {cd /n/sources; /usr/rsc/bin/$cputype/lsr -t -d} |
awk '$2 ~ /[2367]$/' | grep -vf ok-writable |
datemail 'WRITABLE FILES ON SOURCES' 9trouble || status=''
status=''
@ {
cd $src9
/usr/rsc/bin/$cputype/lsr -t -d $src9
} |
awk '$2 ~ /[2367][^2367].$/' |
datemail 'non-group-writable files on sources' 9trouble
status=''
# use /n/boot to avoid walking the archives mounted under
# /lib/vac, or other mounts or binds.
rfork n
9fs boot
test -e /n/boot/sys
/usr/rsc/bin/$cputype/lsr -t -d /n/boot/sys /n/boot/lib |
grep -v '/lib/audio/|/sys/src/cmd/vac/test/' | # give us a break
awk '$2 ~ /[2367][^2367].$/' |
datemail 'non-group-writable files on fs' 9trouble
status=''
9.tar.gz:V:
@{
rfork n
9fs sources
test -e $src9
bind -a $src9 $src9/sys/src
cd $src9/sys/src
tar c LICENSE NOTICE 9
} | gzip >$target
9-export:V: 9.tar.gz
9fs sources
cp 9.tar.gz /n/sources/extra/9.tgz
chmod +t /n/sources/extra/9.tgz
plan9.tar.bz2:V:
@{
rfork n
9fs sources
cd /n/sources
test -e $src9
bind /n/empty $src9/lib/font
bind /n/empty $src9/sys/lib/postscript/font
bind /n/empty $src9/sys/lib/ghostscript
bind /n/empty $src9/sys/src/cmd/gs
tar c plan9/LICENSE* plan9/NOTICE plan9/*/mkfile plan9/*/include \
plan9/acme/*/src plan9/acme/bin/source \
plan9/^(adm cron lib lp mail rc sys tmp usr)
} | bzip2 >$target
plan9-export:V: plan9.tar.bz2
9fs sources
chmod +t plan9.tar.bz2
mv plan9.tar.bz2 /n/sources/extra/plan9.tar.bz2

1
sys/lib/dist/pc/cd0.proto vendored Executable file
View File

@ -0,0 +1 @@
cddisk

0
sys/lib/dist/pc/emptyfile vendored Executable file
View File

4
sys/lib/dist/pc/glenda/bin/rc/riostart vendored Executable file
View File

@ -0,0 +1,4 @@
#!/bin/rc
window '0 0 100 100' games/clock
window '80 80 610 360' /usr/glenda/lib/first.window

11
sys/lib/dist/pc/glenda/lib/first.window vendored Executable file
View File

@ -0,0 +1,11 @@
#!/bin/rc
echo -n readme > /dev/label
echo 'You have completed the Installation Process.'
cat<<'!'
Welcome to Plan 9.
This is rc.
!
exec rc

16
sys/lib/dist/pc/glenda/lib/profile vendored Executable file
View File

@ -0,0 +1,16 @@
if(test -f '#m/mousectl') {
echo -n accelerated > '#m/mousectl'
echo -n 'res 3' > '#m/mousectl'
}
user=`{cat /dev/user}
home=/usr/$user
bind -a $home/bin/rc /bin
bind -a $home/bin/$cputype /bin
bind -c $home/tmp /tmp
rio -si inst/gui
echo
echo
echo 'failed to start rio. you can start a text-based installation by running'
echo
echo ' inst/textonly'
echo

47
sys/lib/dist/pc/inst/bootfloppy vendored Executable file
View File

@ -0,0 +1,47 @@
#!/bin/rc
rfork e
echo
echo 'Insert a disk other than your installation boot disk'
echo 'into your floppy drive; it will be erased to create'
echo 'the boot floppy.'
echo
echo -n 'Press enter when ready.'
read >/dev/null >[2]/dev/null
if(~ $#adisk 1)
; # do nothing
if not if(~ $#bootfile 0)
adisk=/dev/fd0disk
if not {
switch($bootfile) {
case sd*
adisk=`{echo $bootfile | sed 's#(sd..).*#/dev/\1/data#'}
case fd*
adisk=`{echo $bootfile | sed 's#(fd.).*#/dev/\1disk#'}
case *
echo 'unknown bootfile '^$bootfile^'; mail 9trouble@plan9.bell-labs.com'
exit oops
}
}
if(! ~ `{ls -l $adisk | awk '{print $6}'} 1474560){
echo 'Will not format non-floppy disk '^$"adisk. >[1=2]
exit 'bad adisk'
}
log Formatting boot floppy
if (test -e /n/newfs/386/9loadnousb)
bind /n/newfs/386/9loadnousb /n/newfs/386/9load # cater to old bioses
disk/format -b /386/pbs \
-fd $adisk /n/newfs/386/9load /n/newfs/386/9pcdisk.gz \
/tmp/plan9ini.bak
x=$status
if(~ $x ''){
echo
echo 'Done!'
echo
}
exit $x

55
sys/lib/dist/pc/inst/bootplan9 vendored Executable file
View File

@ -0,0 +1,55 @@
#!/bin/rc
first=`{ls -p '#S' | sed 1q}
if(! ~ $first $disk) {
echo 'warning: The plan 9 partition is not on the boot disk,'
echo 'so making it the active partition will have no effect.'
}
p9offset=`{grep '^part 9fat ' /dev/$disk/ctl |awk '{print $3}'}
if(! ~ $#p9offset 1) {
echo 'could not find plan 9 partition.'
echo 'cannot happen'
exit bad
}
if(test $p9offset -gt 4128695) { # 65536 * 63 - 10
echo
echo 'Your Plan 9 partition is more than 2GB into your disk,'
echo 'and the master boot records used by Windows 9x/ME'
echo 'cannot access it (and thus cannot boot it).'
echo
echo 'You can install the Plan 9 master boot record, which can load'
echo 'partitions far into the disk.'
echo
}
echo 'If you use the Windows NT/2000/XP master boot record'
echo 'or a master boot record from a Unix clone (e.g., LILO or'
echo 'FreeBSD bootmgr), it is probably safe to continue using'
echo 'that boot record rather than install the Plan 9 boot record.'
echo
prompt 'Install the Plan 9 master boot record' y n
switch($rd) {
case n
;
case y
disk/mbr -m /386/mbr /dev/$disk/data
}
log Setting Plan 9 partition active.
p9part=`{disk/fdisk /dev/$disk/data >[2]/dev/null </dev/null |
grep PLAN9 | sed 1q | sed 's/ *(p.) .*/\1/'}
if(~ $#p9part 0){
echo 'You have no Plan 9 partitions (How could this happen?)' >[1=2]
exit 'no plan 9 partition found'
}
p9part=$p9part(1)
{ echo 'A '^$p9part; echo w } | disk/fdisk /dev/$disk/data >[2]/dev/null >/dev/null
x=$status
if(~ $x '' '|'){
echo
echo 'The Plan 9 partition is now marked as active.'
exit ''
}
exit $x

125
sys/lib/dist/pc/inst/bootsetup vendored Executable file
View File

@ -0,0 +1,125 @@
#!/bin/rc
# desc: create a boot floppy or configure hard disk to boot plan 9
# prereq: copydist
switch($1) {
case go
echo
echo 'Initializing Plan 9 FAT configuration partition (9fat)'
echo
fat=(/dev/sd*/9fat)
fat=$fat(1)
disk=`{echo $fat | sed 's:/dev/::;s:/9fat::'}
bootfs=`{echo $fs | sed 's:/dev/(sd..)/(.*):\1!\2:'}
bootfat=`{echo $fs | sed 's:/dev/(sd..)/(.*):\1!9fat:'}
if(! test -f /dev/$disk/9fat) {
echo 'You have no 9fat partition. Can''t setup booting.'
exit
}
if(! test -f /tmp/plan9.ini) {
{
sfs=`{echo $fs | sed 's;/dev;#S;'}
if(~ $fstype fossil fossil+venti){
echo bootfile'='$bootfat!9pcf
echo 'bootargs=local!'^$sfs
echo 'bootdisk=local!'^$sfs
}
if not {
echo bootfile'='$bootfs!/386/9pcdisk
echo 'bootdisk=local!'^$sfs
}
if(~ $fstype fossil+venti){
venti=`{echo $ventiarena | sed 's;/dev;#S;'}
echo venti'='^$venti
}
# sort -u avoids dups which could otherwise trigger
# pointless boot menus.
grep -v '(^\[)|menuitem|adisk|bootfile|bootdisk|bootargs|nobootprompt|mouseport|vgasize|monitor|cdboot' /tmp/plan9.orig |
sort -u
echo 'mouseport='^$mouseport
echo 'monitor='^$monitor
echo 'vgasize='^$vgasize
} >/tmp/plan9.ini
}
if(! test -f /tmp/plan9ini.bak)
cp /tmp/plan9.ini /tmp/plan9ini.bak
need9fatformat=no
if(! isfat /dev/$disk/9fat)
need9fatformat=yes
if not if(! mount -c /srv/dos /n/9fat /dev/$disk/9fat >[2]/dev/null)
need9fatformat=yes
if not if(! test -f /n/9fat/plan9.ini)
need9fatformat=yes
if (test -e /n/newfs/386/9loadnousb)
bind /n/newfs/386/9loadnousb /n/newfs/386/9load # cater to old bioses
if(~ $need9fatformat yes){
log Initializing Plan 9 FAT partition.
disk/format -r 2 -d -b /386/pbs \
/dev/$disk/9fat /n/newfs/386/9load
# silently install pbslba if the partition is way into the disk.
# it''s our only hope. only need this for >8.5GB into the disk.
# but...
# there are so few non-LBA bioses out
# there anymore that we'll do this even if we're only 2GB into
# the disk. it's just not worth the headaches of dealing with
# crappy bioses that don't address the whole 8.5GB properly
9fatoffset=`{grep '^part 9fat ' /dev/$disk/ctl | awk '{print $4}'}
if(! ~ $#9fatoffset 1) {
echo 'could not find plan 9 partition.'
echo 'cannot happen'
exit bad
}
if(test $9fatoffset -gt 2097152) # 2GB
disk/format -b /386/pbslba /dev/$disk/9fat
mount -c /srv/dos /n/9fat /dev/$disk/9fat
}
if(! test -f /n/9fat/4e){
logprog cp /n/newfs/386/9load /n/9fat/9load
logprog cp /n/newfs/386/9pcf /n/9fat/9pcf
if(test -f /n/9fat/plan9.ini && ! test -f /n/9fat/plan9-3e.ini)
logprog mv /n/9fat/plan9.ini /n/9fat/plan9-3e.ini
if(test -f /n/9fat/9pcdisk && ! test -f /n/9fat/9pc3e)
logprog mv /n/9fat/9pcdisk /n/9fat/9pc3e
awk -f /bin/inst/mkini.awk >/n/9fat/plan9.ini
>/n/9fat/4e
}
echo
echo 'There are myriad ways to boot a Plan 9 system.'
echo 'You can use any of the following.'
echo
echo ' floppy - create a boot floppy'
echo ' plan9 - make the plan 9 disk partition the default for booting'
echo ' win9x - add a plan 9 option to windows 9x boot menu'
echo ' winnt - add a plan 9 option to windows nt/2000/xp boot manager'
echo
echo 'If you are upgrading an extant third edition installation and booting'
echo 'from something other than a floppy, you needn''t run anything here.'
echo 'Just type ctl-d.'
oldbootsetup=$didbootsetup
didbootsetup=1
export didbootsetup
prompt 'Enable boot method' floppy plan9 win9x winnt
if(! boot$rd){
didbootsetup=$oldbootsetup
export didbootsetup
}
case checkdone
xxxfat=(/dev/sd*/9fat)
if(! isfat $xxxfat(1) || ! ~ $didbootsetup 1){
bootsetup=ready
export bootsetup
}
}

117
sys/lib/dist/pc/inst/bootwin9x vendored Executable file
View File

@ -0,0 +1,117 @@
#!/bin/rc
dosdisk=`{ls /dev/sd??/dos >[2]/dev/null | sed 1q | sed 's!.*/(.*)/dos!\1!'}
if(~ $#dosdisk 0 || ! c: || ! test -f /n/c:/autoexec.bat || ! test -f /n/c:/config.sys) {
echo 'Could not find autoexec.bat or config.sys on the first FAT disk.'
exit bad
}
for (i in autoexec config msdos)
if(test -f /n/c:/$i.p9) {
echo 'A Plan 9 backup already exists; will not edit system files again.'
exit bad
}
for (i in autoexec.bat config.sys msdos.sys)
if(! cp /n/c:/$i /n/c:/^`{echo $i | sed 's/\.(bat|sys)$/.p9/'}) {
echo 'Could not back up '^$i^'; will not continue.'
exit bad
}
if(! test -d /n/c:/plan9 && ! mkdir /n/c:/plan9) {
echo 'Could not create directory /n/c:/plan9.'
exit bad
}
if(! cp /n/newfs/386/^(9load ld.com 9pcdisk) /tmp/plan9ini.bak /n/c:/plan9) {
echo 'Could not copy Plan 9 boot files into /n/c:/plan9.'
exit bad
}
chmod +w /n/c:/autoexec.bat /n/c:/config.sys /n/c:/msdos.sys
if(grep -si 'Plan ?9' /n/c:/config.sys || grep -si 'Plan ?9' /n/c:/autoexec.bat) {
echo 'Plan 9 entries already in config.sys or autoexec.bat.'
echo 'Not changing them; refer to Plan 9 install documentation'
echo 'to configure manually.'
exit bad
}
if(! grep -si '\[menu\]' /n/c:/config.sys) {
{
echo 1
echo i
echo '[menu] '
echo 'menuitem=windows, Windows '
echo 'menudefault=windows '
echo ' '
echo '[common] '
echo ' '
echo '[windows] '
echo .
echo w
echo q
} | ed /n/c:/config.sys >/dev/null >[2]/dev/null
}
{
echo 1
echo '/\[[Mm][Ee][Nn][Uu]\]'
echo '?^[Mm][Ee][Nn][Uu][Ii][Tt][Ee][Mm]='
echo a
echo 'menuitem=plan9, Plan 9 from Bell Labs '
echo .
echo '$'
echo a
echo ' '
echo '[plan9] '
echo ' '
echo .
echo w
echo q
} | ed /n/c:/config.sys >/dev/null>[2]/dev/null
{
echo 1
echo i
echo '@echo off '
echo 'if %config%==plan9 goto plan9 '
echo 'goto notplan9 '
echo ':plan9 '
echo 'plan9\ld '^$dosdisk^'!dos!plan9/9load '
echo ':notplan9 '
echo .
echo w
echo q
} | ed /n/c:/autoexec.bat >/dev/null>[2]/dev/null
fn zeroopt {
if(grep -s '^'^$1^'=1' /n/c:/msdos.sys) {
{
echo '/^'^$1^'=1/s/=1/=0/'
echo w
echo q
} | ed /n/c:/msdos.sys>/dev/null>[2]/dev/null
}
if not if (grep -s '^'^$1^'=0' /n/c:/msdos.sys)
;
if not {
{
echo 1
echo i
echo '[Options] '
echo 'Logo=0 '
echo .
echo w
echo q
} | ed /n/c:/msdos.sys>/dev/null>[2]/dev/null
}
}
if(grep -si '^\[paths\]' /n/c:/msdos.sys){ # Windows 9x rather than DOS
zeroopt Logo
# zeroopt BootGUI
}
echo 'Plan 9 added to Windows 9X boot menu.'
exit ''

47
sys/lib/dist/pc/inst/bootwinnt vendored Executable file
View File

@ -0,0 +1,47 @@
#!/bin/rc
if(! c: || ! test -f /n/c:/boot.ini) {
echo 'Could not find NT''s boot.ini on the first FAT disk.'
exit bad
}
if(test -f /n/c:/boot.p9) {
echo 'A Plan 9 backup already exists; will not edit boot.ini again.'
exit bad
}
if(! cp /n/c:/boot.ini /n/c:/boot.p9) {
echo 'Could not back up boot.ini; will not continue.'
exit bad
}
chmod +w /n/c:/boot.ini
if(! grep -si '\[operating systems\]' /n/c:/boot.ini) {
echo 'Could not parse boot.ini.'
exit bad
}
if(grep -si 'Plan 9' /n/c:/boot.ini) {
p9file=`{grep 'Plan 9' /n/c:/boot.ini | sed 1q | sed 's/=.*//'}
if(! ~ $p9file [Cc]:'\'*) {
echo 'Unexpected Plan 9 entry in boot.ini already; not continuing.'
exit bad
}
}
if not {
p9file='c:\bootsect.p9'
echo 'c:\bootsect.p9 = "Plan 9 from Bell Labs" ' >>/n/c:/boot.ini
}
p9file=/n/^`{echo $p9file | sed 's!\\!/!g'}
if(dd -if /dev/$disk/plan9 -bs 512 -count 1 -of $p9file >/dev/null >[2]/dev/null) {
echo 'Plan 9 added to Windows NT boot menu.'
exit ''
}
echo 'Error copying Plan 9 boot sector to file.'
exit bad

40
sys/lib/dist/pc/inst/configarch vendored Executable file
View File

@ -0,0 +1,40 @@
#!/bin/rc
# desc: set source of distribution archives
# prereq: mountfs
switch($1) {
case go
echo
echo 'Will you be using a distribution archive on local media or the internet?'
echo
prompt 'Distribution is from' local internet
archmedium=$rd
export archmedium
switch($archmedium) {
case local
exec configlocal go
case internet
exec configip go
}
case checkdone
switch($#archmedium) {
case 1
switch($archmedium) {
case local
exec configlocal checkdone
case internet
exec configip checkdone
case *
configarch=notdone
export configarch
}
case *
configarch=notdone
export configarch
}
}

Some files were not shown because too many files have changed in this diff Show More