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"
7 08708877 2003-11-25 devnull thesprintentry(Entry e, int cmd)
9 08708877 2003-11-25 devnull char *p, *pe;
10 08708877 2003-11-25 devnull int c, i;
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;
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);
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(')');
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)
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;
48 08708877 2003-11-25 devnull case '+':
49 08708877 2003-11-25 devnull case '<':
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);
57 08708877 2003-11-25 devnull outchar(c);
60 08708877 2003-11-25 devnull outnl(0);
64 08708877 2003-11-25 devnull thesnextoff(long fromoff)
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');
76 08708877 2003-11-25 devnull if(p[0] == '*' && p[1] == 'L')
77 08708877 2003-11-25 devnull return (Boffset(bdict)-Blinelen(bdict));
79 08708877 2003-11-25 devnull return -1;
83 08708877 2003-11-25 devnull thesprintkey(void)
85 08708877 2003-11-25 devnull Bprint(bout, "No key\n");