add dict
This commit is contained in:
parent
091f74d0a0
commit
0870887793
27 changed files with 8343 additions and 0 deletions
86
src/cmd/dict/thesaurus.c
Normal file
86
src/cmd/dict/thesaurus.c
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
#include <u.h>
|
||||
#include <libc.h>
|
||||
#include <bio.h>
|
||||
#include "dict.h"
|
||||
|
||||
void
|
||||
thesprintentry(Entry e, int cmd)
|
||||
{
|
||||
char *p, *pe;
|
||||
int c, i;
|
||||
|
||||
p = e.start;
|
||||
pe = e.end;
|
||||
while(p < pe) {
|
||||
c = *p++;
|
||||
if(cmd == 'r') {
|
||||
outchar(c);
|
||||
continue;
|
||||
}
|
||||
switch(c) {
|
||||
case '*':
|
||||
c = *p++;
|
||||
if(cmd == 'h' && c != 'L') {
|
||||
outnl(0);
|
||||
return;
|
||||
}
|
||||
if(c == 'L' && cmd != 'h')
|
||||
outnl(0);
|
||||
if(c == 'S') {
|
||||
outchar('(');
|
||||
outchar(*p++);
|
||||
outchar(')');
|
||||
}
|
||||
break;
|
||||
case '#':
|
||||
c = *p++;
|
||||
i = *p++ - '0' - 1;
|
||||
if(i < 0 || i > 4)
|
||||
break;
|
||||
switch(c) {
|
||||
case 'a': outrune(L"áàâäa"[i]); break;
|
||||
case 'e': outrune(L"éèêëe"[i]); break;
|
||||
case 'o': outrune(L"óòôöo"[i]); break;
|
||||
case 'c': outrune(L"ccccç"[i]); break;
|
||||
default: outchar(c); break;
|
||||
}
|
||||
break;
|
||||
case '+':
|
||||
case '<':
|
||||
break;
|
||||
case ' ':
|
||||
if(cmd == 'h' && *p == '*') {
|
||||
outnl(0);
|
||||
return;
|
||||
}
|
||||
default:
|
||||
outchar(c);
|
||||
}
|
||||
}
|
||||
outnl(0);
|
||||
}
|
||||
|
||||
long
|
||||
thesnextoff(long fromoff)
|
||||
{
|
||||
long a;
|
||||
char *p;
|
||||
|
||||
a = Bseek(bdict, fromoff, 0);
|
||||
if(a < 0)
|
||||
return -1;
|
||||
for(;;) {
|
||||
p = Brdline(bdict, '\n');
|
||||
if(!p)
|
||||
break;
|
||||
if(p[0] == '*' && p[1] == 'L')
|
||||
return (Boffset(bdict)-Blinelen(bdict));
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void
|
||||
thesprintkey(void)
|
||||
{
|
||||
Bprint(bout, "No key\n");
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue