#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef ushort wchar;
#define MAX_WORD_LEN 32
int checkbit (char *p ,int value)
{
int idiv=value/8;
int imod=value%8;
return *(p+idiv) & 0x1 << imod ;
}
void setbit(char *p , int value)
{
int idiv=value/8;
int imod=value%8;
*(p+idiv) = *(p+idiv) | 0x1 << imod ;
}
int is_hotword( char *pbuffer)
{
char filename[100]="\0";
sprintf(filename,"%s/%s",".","hotword.txt");
char filenamesearch[100]="\0";
sprintf(filenamesearch,"%s/%s",".","hotwordsearch.txt");
static FILE *fp=NULL;
static FILE *fpsearch=NULL;
static char hotword[256]="\0";
if(!fp)
{
fp=fopen(filename,"rt");
char buffer[256]="\0";
while (fgets(buffer, sizeof(buffer) - 1, fp) > 0)
{
char *pvalue = (char *)memchr(buffer, '\t', sizeof(buffer));
int ikeylen = (pvalue - buffer) > MAX_WORD_LEN ? MAX_WORD_LEN : (pvalue - buffer);
char tmpword[3]="\0";
memcpy(tmpword , buffer ,ikeylen);
ushort value=*(ushort *) tmpword;
setbit(pbuffer, value);
}
fpsearch=fopen (filenamesearch ,"rt");
while (fgets(buffer, sizeof(buffer) - 1, fpsearch) > 0)
{
char *pvalue = (char *)memchr(buffer, '\t', sizeof(buffer));
int ikeylen = (pvalue - buffer) > MAX_WORD_LEN ? MAX_WORD_LEN : (pvalue - buffer);
char tmpword[3]="\0";
memcpy(tmpword , buffer ,ikeylen);
ushort value=*(ushort *) tmpword;
if ( checkbit (pbuffer ,value ) )
{
printf("find %s \n",tmpword);
}
}
}
}