#include <u.h>
#include <libc.h>
#include <bio.h>
#include "dict.h"
/*
* dictd-based dictionary files
* slightly modified
*/
/*
* the index file contains the name of the world,
* in lowercase, and the location in the dictionary file
* as a character offset from the beginning.
*
* the index file is created separately by gunzipping
* the original dictionary file and running a program
* which looks for the beginning of each word.
*
* the dictionary is a flat file, unencrypted (and utf-8
* encoded!)
*
* entries in the dictionary are separated by an empty
* line.
*/
#define GSHORT(p) (((p)[0]<<8)|(p)[1])
void
dictdprintentry(Entry e, int cmd)
{
uchar *p, *pe;
p = (uchar *)e.start;
pe = (uchar *)e.end;
if(cmd == 'h')
while(*p != '\n' && p < pe)
outchar(*p++);
else
while(p < pe) {
if(*p == '\n')
*p = ' ';
outchar(*p++);
}
outnl(0);
}
long
dictdnextoff(long fromoff)
{
int o, n, a;
o = 0;
a = Bseek(bdict, fromoff, 0);
if(a < 0)
return -1;
for(;;) {
n = Bgetc(bdict);
if(!n)
break;
if(n == '\n' && o == '\n')
return (Boffset(bdict)-2);
o = n;
}
return -1;
}
void
dictdprintkey(void)
{
Bprint(bout, "No key\n");
}
|