void fly_to_analyse(char *path, char *config) { char *p = ReadLines(config); char *last=p; char title[128],description[512],reference[512],match[1024],relevance[512]; int result=0,sz=0; while(!result && strlen(last)>16) { switch (parse_eggs(&p, &last)) { case TITLE: sz = p - last; memset(title,0,127); snprintf(title,127,"%.*s", sz, last); strcpy(title,ClearStr(title,10)); break; case DESCRIPTION: sz = p - last; memset(description,0,511); snprintf(description,511,"%.*s", sz, last); strcpy(description,ClearStr(description,16)); break; case REFERENCE: sz = p - last - 1; memset(reference,0,511); snprintf(reference,511,"%.*s", sz, last); strcpy(reference,ClearStr(reference,14)); break; case RELEVANCE: sz = p - last; memset(relevance,0,511); snprintf(relevance,511,"%.*s", sz, last); strcpy(relevance,ClearStr(relevance,14)); break; case MATCH: sz = p - last; memset(match,0,1023); snprintf(match,1023,"%.*s", sz, last); strcpy(match,ClearStr(match,10)); char *result2=Search_for(path,match); // TODO* need validate before print out if(result2!=NULL) if(strlen(result2)>8) { fprintf(stdout,"\n-------------------\n %sTitle:%s %s \n %sDescription:%s %s \n %sRelevance:%s %s \n %sReference:%s %s \n %sMatch:%s %s \n%s%s%s\n",YELLOW,LAST,title,YELLOW,LAST,description,YELLOW,LAST,relevance,YELLOW,LAST,reference,YELLOW,LAST,match,CYAN,result2,LAST); if(log_file != NULL) { FILE *arq; arq=fopen(log_file,"a"); if ( arq == NULL ) { DEBUG("error in XML file %s",log_file); perror("Error "); exit(-1); } fprintf(arq,"<report_mosca>\n <Path>%s</Path>\n <Module>%s</Module>\n <Title>%s</Title>\n <Description>%s</Description>\n <Level>%s</Level>\n <Reference>%s</Reference>\n <Match>%s</Match>\n <Result>%s</Result>\n</report_mosca>\n\n",path,config,title,description,relevance,reference,match,result2); if( fclose(arq) == EOF ) { DEBUG("error in Write() file %s",log_file); perror("Error "); exit(-1); } arq=NULL; } } xfree((void **)&result2); break; case END: result=1; break; } } }
void fly_to_analyse(char *path, char *config) { char *p = ReadLines(config); char *last=p; char *result2=NULL; char title[128],description[512],reference[512],match[128],relevance[512]; int result=0,sz=0; while(!result) switch (parse_eggs(&p, &last)) { case TITLE: sz = p - last; memset(title,0,127); snprintf(title,127,"%.*s", sz, last); // DEBUG("%s\n",title); strcpy(title,ClearStr(title,10)); break; case DESCRIPTION: sz = p - last; memset(description,0,511); snprintf(description,511,"%.*s", sz, last); strcpy(description,ClearStr(description,16)); break; case REFERENCE: sz = p - last - 1; memset(reference,0,511); snprintf(reference,511,"%.*s", sz, last); strcpy(reference,ClearStr(reference,14)); break; case RELEVANCE: sz = p - last; memset(relevance,0,511); snprintf(relevance,511,"%.*s", sz, last); strcpy(relevance,ClearStr(relevance,14)); break; /* TODO* fix bug when test first rule of egg file */ case MATCH: sz = p - last; memset(match,0,127); snprintf(match,127,"%.*s", sz, last); strcpy(match,ClearStr(match,10)); result2=Search_for(path,match); // TODO* need validate before print out if(strlen(result2)>8) { fprintf(stdout,"\n-------------------\n %sTitle:%s %s \n %sDescription:%s %s \n %sRelevance:%s %s \n %sReference:%s %s \n %sMatch:%s %s \n%s%s%s\n",YELLOW,LAST,title,YELLOW,LAST,description,YELLOW,LAST,relevance,YELLOW,LAST,reference,YELLOW,LAST,match,CYAN,result2,LAST); if(log_file != NULL) { // TODO* call one time write()... optimize WriteFile(log_file," Path: "); WriteFile(log_file,path); WriteFile(log_file,"\n Module: "); WriteFile(log_file,config); WriteFile(log_file,"\n Title: "); WriteFile(log_file,title); WriteFile(log_file,"\n Description: "); WriteFile(log_file,description); WriteFile(log_file,"\n reference: "); WriteFile(log_file,reference); WriteFile(log_file,"\n Match: "); WriteFile(log_file,match); WriteFile(log_file,"\n Result: \n"); WriteFile(log_file,result2); } } break; case END: result=1; break; } }