#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("No.
| \n");
printf("Common Name
| \n");
printf("Latin Name
|
\n");
}
PrintItem(d[i], j);
}
Matched = 0;
}
if (j>0) {
printf("
\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;
}