Blob


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