mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-15 11:20:03 +00:00
86 lines
1.2 KiB
C
86 lines
1.2 KiB
C
#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");
|
|
}
|