diff --git a/src/util/webster.c b/src/util/webster.c index 9554425..280da72 100755 --- a/src/util/webster.c +++ b/src/util/webster.c @@ -28,11 +28,11 @@ int main(int argc, char **argv) pid = atoi(argv[2]); snprintf(buf, sizeof(buf), - "wget http://www.m-w.com/cgi-bin/dictionary?book=Dictionary\\&va=%s" + "wget http://www.thefreedictionary.com/%s" " -Owebster.html -o/dev/null", argv[1]); system(buf); - parse_webster_html(); + parse_webster_html(argv[1]); if (pid) kill(pid, SIGUSR2); @@ -40,9 +40,9 @@ int main(int argc, char **argv) return (0); } -void parse_webster_html(void) { +void parse_webster_html(char *arg) { FILE *infile, *outfile; - char scanbuf[MEM_USE], *p, *q; + char scanbuf[MEM_USE], outline[MEM_USE], *p, *q; outfile = fopen("websterinfo", "w"); if (!outfile) @@ -58,78 +58,81 @@ void parse_webster_html(void) { unlink("webster.html"); /* We can still read */ for ( ; get_line(infile, buf)!=0; ) { - p = buf; - skip_spaces(&p); - /*
tag means word wasn't found in dictionary */ - /* list on the form + + if (strncmp(buf, "", 37) != 0) + continue; // read until we hit the line with results in it. + + p = buf+37; - 1. XXX - 2. YYY - ... -- follows */ - if (!strncmp(p, "
", 5)) {
- fprintf(outfile, "Did you really mean any of these instead ?\n");
- for (; get_line(infile, buf) != 0;) {
- p = buf;
- skip_spaces(&p);
- if (!strncmp(p, "", 6))
- break;
- p = strchr(p, '>');
- p++; /* p now points to first letter of word. */
- q = strchr(p, '<');
- *q = '\0';
- fprintf(outfile, "%s\n", p);
- }
- break;
- } else if (!strncmp(p, "Main Entry:", 10)) {
- int coloumn = 0;
- /* Date: means word was found in dictionary */
- /* M-W has changed their site layout, so we need to find the correct line :*/
- while (*p != '<') {
- get_line(infile, buf);
- p = buf;
- skip_spaces(&p);
- }
- /* The next line contains ALL info on that word.
- * Including html tags, this can be very much
- */
- fprintf(outfile, "That means:\n");
- /* remove all tags from this line - ALL tags */
- for (q = scanbuf; *p && q - scanbuf < sizeof(scanbuf); p++) {
- if (*p == '&') {
- /* > and < translates into '"' */
- if ((*(p+1) == 'l' || *(p+1) == 'g') && *(p+2) == 't' && *(p+3) == ';') {
- *q++='"';
- coloumn++;
- p += 3;
- continue;
- }
- }
- if (*p == '<') {
- /* ", 3) || !strncmp(p, "