/* findall.c */ #include <stdio.h> #define YES 1 #define NO 0 /* Grobal */ char data[2000], keyword[180], getword[180]; main() { FILE *inp, *out; char buf[80], dirname[40], fname[40], link[40], link_old[40]; int i, j, key; /* get current directory */ system("pwd>list_dir"); sprintf(fname, "%s", "list_dir"); if((inp=fopen(fname, "r"))==NULL){ printf("Can't open <%s>.\n", fname); exit(0); } fgets(buf, 80, inp); for(i=strlen(buf); buf[i]!='/'; i--); i=i+1; for(j=0; buf[i]!='\n'; i++,j++) dirname[j]=buf[i]; dirname[j]='\0'; fclose(inp); /* open list_all.txt for write */ sprintf(fname, "list_all"); if((out=fopen(fname, "w"))==NULL){ printf("Can't open <%s>.\n", fname); exit(0); } /* open index file for work */ sprintf(fname, "%s.html", dirname); if((inp=fopen(fname, "r"))==NULL){ printf("Can't open <%s>.\n", fname); exit(0); } strcpy(link_old, ""); while(fgets(data,2000,inp)!=NULL){ strcpy(keyword, "=\"../wmaker/preview/"); if((i=search())>=0){ for(i=i+strlen(keyword), j=0;;i++, j++){ if(data[i]=='\"') break; link[j]=data[i]; } link[j]='\0'; if(strcmp(link_old, link)!=0) fprintf(out, "%s\n", link); strcpy(link_old, link); } } } search() { int i, j, key; char buf[180]; strcpy(getword, keyword); for(i=0; data[i]!='\n'; i++){ key=YES; for(j=0; getword[j]!='\0'; j++){ if(getword[j]=='?') getword[j]=data[i+j]; if(getword[j]!=data[i+j]){ key=NO; break; } } if(key==YES){ getword[j]='\0'; return i; } } return -1; }