#include "NameHeader.h" #include "web.h" #include "token.h" #define HTMLSRC_ENG "/home/httpd/html/animal/HTMLSrc/Search.html" static int lang = 0; main() { int fd; FILE *fin; /* html template */ DATA_ENG *d; char query[128]; /* user query */ getentry entries[16]; /* arguments from the user via http */ POSTINFO PostInfo[20]; int PostInfoCnt; int Matched = 0; /* matched > 0 or not = 0 */ char buf[256]; int i, j, k, x; printf("Content-type: text/html\n\n"); if ( (fd = open(DATA_FILE_ENG, O_RDONLY)) < 0) { printf("Can't open data file [%s]\n", DATA_FILE_ENG); exit(0); } read(fd, (char *) &cnt, sizeof(int)); d = (DATA_ENG *) malloc(sizeof(DATA_ENG)*cnt); read(fd, (char *) d, sizeof(DATA_ENG)*cnt); close(fd); strcpy(query, "\0"); /* initialize user query as NULL */ i = ProcessGetMethod( entries ); /* extract user's requirements */ for (x=0; x<=i; x++) { if (!strcasecmp(entries[x].name, "qt")) { strcpy(query, entries[x].val); trim(query); continue; } } if ( (fin=fopen(HTMLSRC_ENG, "r")) == NULL) { printf("Can't Open HTML template\n"); exit(0); } while (fgets(buf, 256, fin)) { char *ptr; if ( (ptr=(char*)strstr(buf, "__QUERY__")) != NULL ){ *ptr = '\0'; printf("%s%s%s", buf, query, ptr+9); } else if ( strstr(buf, "__RESULT__") ) { if (strlen(query) < 1) { printf("

Enter an animal name.\n"); continue; } PostInfoCnt = GetTokens(query, PostInfo); for (i=0, j=0; i < cnt; i++) { sprintf(buf, "%s %s", d[i].eng, d[i].sci); strlower(buf); for (k=0; k < PostInfoCnt; k++) { if (strstr(buf, PostInfo[k].Key)) Matched++; } if (Matched == PostInfoCnt) { j++; if (j==1) { printf("\n"); printf("\n"); printf("\n"); printf("\n"); } PrintItem(d[i], j); } Matched = 0; } if (j>0) { printf("
No.
Common Name
Latin Name
\n"); } else printf("Sorry. There's no match for your search in the dictionary.\n"); printf("
Try image search for \"%s\".\n", esc_url(query), query); } else if ((ptr=(char *)strstr(buf, "__IMG_SEARCH_LINK__")) != NULL ) { *ptr = '\0'; printf("%s", buf); WebSearch(query, "image"); printf("%s", ptr+19); } else if ( (ptr = (char *)strstr(buf, "__WEB_SEARCH_LINK__")) != NULL ) { *ptr = '\0'; printf("%s", buf); WebSearch(query, "web"); printf("%s", ptr+19); } else if ( (ptr = (char *)strstr(buf, "__AUDIO_SEARCH_LINK__")) != NULL ) { *ptr = '\0'; printf("%s", buf); WebSearch(query, "audio"); printf("%s", ptr+21); } else if ( (ptr = (char *)strstr(buf, "__VIDEO_SEARCH_LINK__")) != NULL ) { *ptr = '\0'; printf("%s", buf); WebSearch(query, "video"); printf("%s", ptr+21); } else printf("%s", buf); } free(d); fclose(fin); } PrintItem(DATA_ENG d, int j) { char *ptr; char eng[MAX_ENG_LEN]; char buf[MAX_ENG_LEN]; char buf2[MAX_ENG_LEN]; int i, cnt=0; strcpy(eng, d.eng); printf("%d", j); printf(""); while (1) { if (ptr=(char *)strstr(d.eng, ",")) { *ptr = '\0'; trim(d.eng); if (d.eng[0] == '*') printf("%s, ", d.eng+1); else { strcpy(buf, d.eng); for (i=0; i%s,\n", buf, d.eng); } strcpy(d.eng, ptr+1); } else { trim(d.eng); if (d.eng[0] == '*') printf("%s", d.eng+1); else { strcpy(buf, d.eng); for (i=0; i%s\n", buf, d.eng); } printf("\n"); break; } } printf(" %s\n", d.sci); return 0; }