Subversion Repositories planix.SVN

Rev

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

#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");
}