Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <u.h>
2
#include <libc.h>
3
#include <bio.h>
4
#include "dict.h"
5
 
6
void
7
thesprintentry(Entry e, int cmd)
8
{
9
	char *p, *pe;
10
	int c, i;
11
 
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
}
62
 
63
long
64
thesnextoff(long fromoff)
65
{
66
	long a;
67
	char *p;
68
 
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
}
81
 
82
void
83
thesprintkey(void)
84
{
85
	Bprint(bout, "No key\n");
86
}