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