158,42 → 158,41 |
/* now make the translation. */ |
void translate(char *p) |
{ |
char *p1, *p2, *pp; |
int t; |
char *p1, *p2, *pp; |
int t; |
|
if(entrycount<=0 && suffixcnt<=0) return; |
snprintf(outbuf,sizeof(outbuf),"%s",p); |
for(p1=find_word_start(outbuf); |
p1!=NULL && p1-outbuf<MAX_LINELEN && *p1!=0; |
p1=p2) { |
p2=find_word_end(p1); |
for(pp=p1;pp<p2 && |
((!has_digits && isalpha(*pp)) || |
(has_digits && isalnum(*pp)) || (*pp&128)!=0 || |
strchr("_",*pp)!=NULL);pp++); |
p2=find_word_start(p2); |
if(pp==p1 || |
(has_digits==0 && isdigit(*pp)) || |
(*pp!=0 && !isspace(*pp) && strchr(",.?!/;",*pp)==NULL)) continue; |
t=search_list2(entry,entrycount,sizeof(entry[0]),p1); |
if(t<0) { |
switch(unknown_type) { |
case unk_leave: break; |
case unk_delete: { |
ovlstrcpy(p1,find_word_start(pp)); p2=p1; |
break; |
} |
case unk_replace: { |
string_modify3(outbuf,p1,pp,unkbuf); |
p2=find_word_start(p1+strlen(unkbuf)); |
} |
} |
continue; |
if(entrycount<=0 && suffixcnt<=0) return; |
snprintf(outbuf,sizeof(outbuf),"%s",p); |
for(p1=find_word_start(outbuf); |
p1!=NULL && p1-outbuf<MAX_LINELEN && *p1!=0; |
p1=p2) { |
p2=find_word_end(p1); |
for(pp=p1;pp<p2 && |
((!has_digits && isalpha(*pp)) || |
(has_digits && isalnum(*pp)) || (*pp&128)!=0 || |
strchr("_",*pp)!=NULL);pp++); |
p2=find_word_start(p2); |
if(pp==p1 || |
(has_digits==0 && isdigit(*pp)) || |
(*pp!=0 && !isspace(*pp) && strchr(",.?!/;",*pp)==NULL)) continue; |
t=search_list2(entry,entrycount,sizeof(entry[0]),p1); |
if(t<0) { |
switch(unknown_type) { |
case unk_leave: break; |
case unk_delete: { |
ovlstrcpy(p1,find_word_start(pp)); p2=p1; |
break; |
} |
case unk_replace: { |
string_modify3(outbuf,p1,pp,unkbuf); |
p2=find_word_start(p1+strlen(unkbuf)); |
} |
} |
string_modify3(outbuf,p1,p1+strlen((char*)entry[t].original), |
continue; |
} |
string_modify3(outbuf,p1,p1+strlen((char*)entry[t].original), |
(char*)entry[t].replace); |
p2=find_word_start(p1+strlen((char*)entry[t].replace)); |
} |
snprintf(p,MAX_LINELEN,"%s",outbuf); |
p2=find_word_start(p1+strlen((char*)entry[t].replace)); |
} |
snprintf(p,MAX_LINELEN,"%s",outbuf); |
} |
|