Attempt to fix tell m-w

This commit is contained in:
JamDog 2010-11-04 12:36:24 +00:00
parent 062a5d4eb4
commit 7f6196c1be
2 changed files with 29 additions and 28 deletions

View file

@ -29,7 +29,8 @@ all: $(BINDIR)/asciipasswd \
$(BINDIR)/shopconv \
$(BINDIR)/sign \
$(BINDIR)/split \
$(BINDIR)/wld2html
$(BINDIR)/wld2html \
$(BINDIR)/webster
asciipasswd: $(BINDIR)/asciipasswd

View file

@ -25,7 +25,7 @@ int main(int argc, char **argv)
}
pid = atoi(argv[2]);
snprintf(buf, sizeof(buf),
snprintf(buf, sizeof(buf),
"lynx -accept_all_cookies -source http://www.thefreedictionary.com/%s"
" >webster.html", argv[1]);
system(buf);
@ -41,9 +41,9 @@ int main(int argc, char **argv)
void parse_webster_html(char *arg) {
FILE *infile, *outfile;
char scanbuf[MEM_USE], outline[MEM_USE], *p, *q;
outfile = fopen("websterinfo", "w");
if (!outfile)
if (!outfile)
exit(1);
infile = fopen("webster.html", "r");
@ -54,13 +54,13 @@ void parse_webster_html(char *arg) {
}
unlink("webster.html"); /* We can still read */
for ( ; get_line(infile, buf)!=0; ) {
if (strncmp(buf, "<script>write_ads(AdsNum, 0)</script>", 37) != 0)
if (strncmp(buf, "<script>write_ads(AdsNum, 0, 1)</script>", 40) != 0)
continue; // read until we hit the line with results in it.
p = buf+37;
p = buf+40;
if (strncmp(p, "<br>", 4) == 0)
{
@ -71,9 +71,9 @@ void parse_webster_html(char *arg) {
{
while (strncmp(p, "ds-list", 7)) //seek to the definition
p++;
strncpy(scanbuf, p, sizeof(scanbuf)); // strtok on a copy.
p = strtok(scanbuf, ">"); // chop the line at the end of tags: <br><b>word</b> becomes "<br" "<b" "word</b"
p = strtok(NULL, ">"); // skip the rest of this tag.
@ -82,51 +82,51 @@ void parse_webster_html(char *arg) {
while (1)
{
q = outline;
while (*p != '<')
{
assert(p < scanbuf+sizeof(scanbuf));
*q++ = *p++;
}
}
if (!strncmp(p, "<br", 3) || !strncmp(p, "<p", 2) || !strncmp(p, "<div class=\"ds-list\"", 23) || !strncmp(p, "<div class=\"sds-list\"", 24))
*q++ = '\n';
// if it's not a <br> tag or a <div class="sds-list"> or <div class="ds-list"> tag, ignore it.
*q++='\0';
fprintf(outfile, "%s", outline);
if (!strncmp(p, "</table", 7))
goto end;
p = strtok(NULL, ">");
}
p = strtok(NULL, ">");
}
}
else if (strncmp(p, "<div>", 5) == 0) // not found, but suggestions are ample:
{
strncpy(scanbuf, p, sizeof(scanbuf)); // strtok on a copy.
p = strtok(scanbuf, ">"); // chop the line at the end of tags: <br><b>word</b> becomes "<br>" "<b>" "word</b>"
p = strtok(NULL, ">"); // skip the rest of this tag.
while (1)
{
q = outline;
while (*p != '<')
*q++ = *p++;
if (!strncmp(p, "<td ", 4))
*q++ = '\n';
// if it's not a <td> tag, ignore it.
*q++='\0';
fprintf(outfile, "%s", outline);
if (!strncmp(p, "</table", 7))
goto end;
p = strtok(NULL, ">");
}
p = strtok(NULL, ">");
}
}
else
{
@ -137,16 +137,16 @@ void parse_webster_html(char *arg) {
goto end;
}
}
end:
fclose(infile);
fprintf(outfile, "~");
fclose(outfile);
}
/* get_line reads the next non-blank line off of the input stream.
* The newline character is removed from the input.
* The newline character is removed from the input.
*/
int get_line(FILE * fl, char *buf)
{