Blame


1 08708877 2003-11-25 devnull #include <u.h>
2 08708877 2003-11-25 devnull #include <libc.h>
3 08708877 2003-11-25 devnull #include <bio.h>
4 08708877 2003-11-25 devnull #include "dict.h"
5 08708877 2003-11-25 devnull
6 08708877 2003-11-25 devnull void
7 08708877 2003-11-25 devnull thesprintentry(Entry e, int cmd)
8 08708877 2003-11-25 devnull {
9 08708877 2003-11-25 devnull char *p, *pe;
10 08708877 2003-11-25 devnull int c, i;
11 08708877 2003-11-25 devnull
12 08708877 2003-11-25 devnull p = e.start;
13 08708877 2003-11-25 devnull pe = e.end;
14 08708877 2003-11-25 devnull while(p < pe) {
15 08708877 2003-11-25 devnull c = *p++;
16 08708877 2003-11-25 devnull if(cmd == 'r') {
17 08708877 2003-11-25 devnull outchar(c);
18 08708877 2003-11-25 devnull continue;
19 08708877 2003-11-25 devnull }
20 08708877 2003-11-25 devnull switch(c) {
21 08708877 2003-11-25 devnull case '*':
22 08708877 2003-11-25 devnull c = *p++;
23 08708877 2003-11-25 devnull if(cmd == 'h' && c != 'L') {
24 08708877 2003-11-25 devnull outnl(0);
25 08708877 2003-11-25 devnull return;
26 08708877 2003-11-25 devnull }
27 08708877 2003-11-25 devnull if(c == 'L' && cmd != 'h')
28 08708877 2003-11-25 devnull outnl(0);
29 08708877 2003-11-25 devnull if(c == 'S') {
30 08708877 2003-11-25 devnull outchar('(');
31 08708877 2003-11-25 devnull outchar(*p++);
32 08708877 2003-11-25 devnull outchar(')');
33 08708877 2003-11-25 devnull }
34 08708877 2003-11-25 devnull break;
35 08708877 2003-11-25 devnull case '#':
36 08708877 2003-11-25 devnull c = *p++;
37 08708877 2003-11-25 devnull i = *p++ - '0' - 1;
38 08708877 2003-11-25 devnull if(i < 0 || i > 4)
39 08708877 2003-11-25 devnull break;
40 08708877 2003-11-25 devnull switch(c) {
41 08708877 2003-11-25 devnull case 'a': outrune(L"áàâäa"[i]); break;
42 08708877 2003-11-25 devnull case 'e': outrune(L"éèêëe"[i]); break;
43 08708877 2003-11-25 devnull case 'o': outrune(L"óòôöo"[i]); break;
44 08708877 2003-11-25 devnull case 'c': outrune(L"ccccç"[i]); break;
45 08708877 2003-11-25 devnull default: outchar(c); break;
46 08708877 2003-11-25 devnull }
47 08708877 2003-11-25 devnull break;
48 08708877 2003-11-25 devnull case '+':
49 08708877 2003-11-25 devnull case '<':
50 08708877 2003-11-25 devnull break;
51 08708877 2003-11-25 devnull case ' ':
52 08708877 2003-11-25 devnull if(cmd == 'h' && *p == '*') {
53 08708877 2003-11-25 devnull outnl(0);
54 08708877 2003-11-25 devnull return;
55 08708877 2003-11-25 devnull }
56 08708877 2003-11-25 devnull default:
57 08708877 2003-11-25 devnull outchar(c);
58 08708877 2003-11-25 devnull }
59 08708877 2003-11-25 devnull }
60 08708877 2003-11-25 devnull outnl(0);
61 08708877 2003-11-25 devnull }
62 08708877 2003-11-25 devnull
63 08708877 2003-11-25 devnull long
64 08708877 2003-11-25 devnull thesnextoff(long fromoff)
65 08708877 2003-11-25 devnull {
66 08708877 2003-11-25 devnull long a;
67 08708877 2003-11-25 devnull char *p;
68 08708877 2003-11-25 devnull
69 08708877 2003-11-25 devnull a = Bseek(bdict, fromoff, 0);
70 08708877 2003-11-25 devnull if(a < 0)
71 08708877 2003-11-25 devnull return -1;
72 08708877 2003-11-25 devnull for(;;) {
73 08708877 2003-11-25 devnull p = Brdline(bdict, '\n');
74 08708877 2003-11-25 devnull if(!p)
75 08708877 2003-11-25 devnull break;
76 08708877 2003-11-25 devnull if(p[0] == '*' && p[1] == 'L')
77 08708877 2003-11-25 devnull return (Boffset(bdict)-Blinelen(bdict));
78 08708877 2003-11-25 devnull }
79 08708877 2003-11-25 devnull return -1;
80 08708877 2003-11-25 devnull }
81 08708877 2003-11-25 devnull
82 08708877 2003-11-25 devnull void
83 08708877 2003-11-25 devnull thesprintkey(void)
84 08708877 2003-11-25 devnull {
85 08708877 2003-11-25 devnull Bprint(bout, "No key\n");
86 08708877 2003-11-25 devnull }