int main (int argc, char **argv) { int i, nocase = 0; ACSM_STRUCT * acsm; if (argc < 3) { fprintf (stderr, "Usage: acsmx pattern word-1 word-2 ... word-n -nocase\n"); exit (0); } acsm = acsmNew (); strcpy (text, argv[1]); for (i = 1; i < argc; i++) if (strcmp (argv[i], "-nocase") == 0) nocase = 1; for (i = 2; i < argc; i++) { if (argv[i][0] == '-') continue; acsmAddPattern (acsm, argv[i], strlen (argv[i]), nocase, 0, 0, argv[i], i - 2); } acsmCompile (acsm); acsmSearch (acsm, text, strlen (text), MatchFound, (void *) 0); acsmFree (acsm); printf ("normal pgm end\n"); return (0); }
int main (int argc, char **argv) { int i, nocase = 0; FILE *fd; char filename[20]; ACSM_STRUCT * acsm; if (argc < 3) { fprintf (stderr,"Usage: acsmx filename pattern1 pattern2 ... -nocase\n"); exit (0); } acsm = acsmNew (); strcpy (filename, argv[1]); fd = fopen(filename,"r"); if(fd == NULL) { fprintf(stderr,"Open file error!\n"); exit(1); } for (i = 1; i < argc; i++) if (strcmp (argv[i], "-nocase") == 0) nocase = 1; for (i = 2; i < argc; i++) { if (argv[i][0] == '-') continue; printf("%s,%d\n",argv[i],strlen (argv[i])); acsmAddPattern (acsm, argv[i], strlen (argv[i]), nocase,1); } fgets(text,MAXLEN,fd); /* Generate GtoTo Table and Fail Table */ acsmCompile (acsm); printf("--------------------------------\n"); NS_TIME(time); NS_TIME_START(time); /*Search Pattern*/ //while ( fgets(text,MAXLEN,fd) ) //{ acsmSearch (acsm, text, strlen (text), PrintMatch); // nline++; //} NS_TIME_END(time); PrintSummary(acsm->acsmPatterns); int a[10]={45,45,45,4,1}; #ifdef __HAVE__LOAD__ printf("-------%d\n", getSummary (acsm->acsmPatterns,a)); #endif acsmFree (acsm); printf ("\n### AC Match Finished ###\n"); // system("pause"); return (0); }
void * mpseNew( int method ) { MPSE * p; p = (MPSE*)malloc( sizeof(MPSE) ); if( !p ) return NULL; p->method=method; p->obj =NULL; s_bcnt =0; switch( method ) { case MPSE_AUTO: case MPSE_MWM: p->obj = mwmNew(); return (void*)p; break; case MPSE_AC: p->obj = acsmNew(); return (void*)p; break; case MPSE_KTBM: case MPSE_LOWMEM: p->obj = KTrieNew(); return (void*)p; break; default: return 0; break; } }
int main(int argc, char **argv) { int i, nocase = 0; FILE *fd; char filename[20]; ACSM_STRUCT * acsm; // if (argc < 3) // { // fprintf(stderr, "Usage: acsmx filename pattern1 pattern2 ... -nocase\n"); // exit(0); // } acsm = acsmNew(); strcpy_s(filename, "test.txt"); fd = fopen(filename, "r"); if (fd == NULL) { fprintf(stderr, "Open file error!\n"); exit(1); } for (i = 1; i < argc; i++) if (strcmp(argv[i], "-nocase") == 0) nocase = 1; char a[] = { "test" }; acsmAddPattern(acsm, (unsigned char *)a, strlen(a), nocase); /* Generate GtoTo Table and Fail Table */ acsmCompile(acsm); /*Search Pattern*/ while (fgets(( char*)text, MAXLEN, fd)) { acsmSearch(acsm, text, strlen((char*)text), PrintMatch); nline++; } PrintSummary(acsm->acsmPatterns); acsmFree(acsm); printf("\n### AC Match Finished ###\n"); system("pause"); return (0); }
void * mpseNew( int method, int use_global_counter_flag ) { MPSE * p; p = (MPSE*)calloc( 1,sizeof(MPSE) ); if( !p ) return NULL; p->method = method; p->verbose = 0; p->obj = NULL; p->bcnt = 0; p->inc_global_counter = use_global_counter_flag; switch( method ) { case MPSE_AC_BNFA: p->obj=bnfaNew(); return (void*)p; case MPSE_AC: p->obj = acsmNew(); return (void*)p; case MPSE_ACF: p->obj = acsmNew2(); if(p->obj)acsmSelectFormat2((ACSM_STRUCT2*)p->obj,ACF_FULL ); return (void*)p; case MPSE_ACS: p->obj = acsmNew2(); if(p->obj)acsmSelectFormat2((ACSM_STRUCT2*)p->obj,ACF_SPARSE ); return (void*)p; case MPSE_ACB: p->obj = acsmNew2(); if(p->obj)acsmSelectFormat2((ACSM_STRUCT2*)p->obj,ACF_BANDED ); return (void*)p; case MPSE_ACSB: p->obj = acsmNew2(); if(p->obj)acsmSelectFormat2((ACSM_STRUCT2*)p->obj,ACF_SPARSEBANDS ); return (void*)p; case MPSE_LOWMEM: p->obj = KTrieNew(); return (void*)p; default: free(p); return 0; } }
void * mpseNew( int method, int use_global_counter_flag, void (*userfree)(void *p), void (*optiontreefree)(void **p), void (*neg_list_free)(void **p)) { MPSE * p; p = (MPSE*)calloc( 1,sizeof(MPSE) ); if( !p ) return NULL; p->method = method; p->verbose = 0; p->obj = NULL; p->bcnt = 0; p->inc_global_counter = (char)use_global_counter_flag; switch( method ) { case MPSE_AC_BNFA: p->obj=bnfaNew(userfree, optiontreefree, neg_list_free); if(p->obj) ((bnfa_struct_t*)(p->obj))->bnfaMethod = 1; break; case MPSE_AC_BNFA_Q: p->obj=bnfaNew(userfree, optiontreefree, neg_list_free); if(p->obj) ((bnfa_struct_t*)(p->obj))->bnfaMethod = 0; break; case MPSE_AC: p->obj = acsmNew(userfree, optiontreefree, neg_list_free); break; case MPSE_ACF: p->obj = acsmNew2(userfree, optiontreefree, neg_list_free); if(p->obj)acsmSelectFormat2((ACSM_STRUCT2*)p->obj,ACF_FULL ); break; case MPSE_ACF_Q: p->obj = acsmNew2(userfree, optiontreefree, neg_list_free); if(p->obj)acsmSelectFormat2((ACSM_STRUCT2*)p->obj,ACF_FULLQ ); break; case MPSE_ACS: p->obj = acsmNew2(userfree, optiontreefree, neg_list_free); if(p->obj)acsmSelectFormat2((ACSM_STRUCT2*)p->obj,ACF_SPARSE ); break; case MPSE_ACB: p->obj = acsmNew2(userfree, optiontreefree, neg_list_free); if(p->obj)acsmSelectFormat2((ACSM_STRUCT2*)p->obj,ACF_BANDED ); break; case MPSE_ACSB: p->obj = acsmNew2(userfree, optiontreefree, neg_list_free); if(p->obj)acsmSelectFormat2((ACSM_STRUCT2*)p->obj,ACF_SPARSEBANDS ); break; case MPSE_LOWMEM: p->obj = KTrieNew(0,userfree, optiontreefree, neg_list_free); break; case MPSE_LOWMEM_Q: p->obj = KTrieNew(1,userfree, optiontreefree, neg_list_free); break; #ifdef INTEL_SOFT_CPM case MPSE_INTEL_CPM: p->obj=IntelPmNew(userfree, optiontreefree, neg_list_free); break; #endif default: /* p is free'd below if no case */ break; } if( !p->obj ) { free(p); p = NULL; } return (void *)p; }
int main (int argc, char **argv) { int i, nocase = 0; char filename[20]; ACSM_STRUCT * acsm; acsm = acsmNew (); memset(text,'a',200); strcat(text,"http"); strcat(text,"ut"); strcat(text,"get"); //nocase = 0; for(i=0;i<1;++i) acsmAddPattern (acsm, pro_patern[i], strlen (pro_patern[i]), nocase,1); /* Generate GtoTo Table and Fail Table */ acsmCompile (acsm); printf("--------------------------------\n"); int textlen=strlen (text); NS_TIME(time); NS_TIME_START(time); /*Search Pattern*/ //while ( fgets(text,MAXLEN,fd) ) //{ int n=10000; while(n>0) { n--; acsmSearch (acsm, text, textlen, PrintMatch); } // nline++; //} NS_TIME_END(time); //PrintSummary(acsm->acsmPatterns); ACSM_PATTERN * mlist = acsm->acsmPatterns; printf("\n### Summary ###\n"); for (;mlist!=NULL;mlist=mlist->next) { if(mlist->nocase) printf("%12s : %5d\n",mlist->patrn,mlist->nmatch); else printf("%12s : %5d\n",mlist->casepatrn,mlist->nmatch); mlist->nmatch=0; } mlist = acsm->acsmPatterns; for (;mlist!=NULL;mlist=mlist->next) { if(mlist->nocase) printf("%12s : %5d\n",mlist->patrn,mlist->nmatch); else printf("%12s : %5d\n",mlist->casepatrn,mlist->nmatch); mlist->nmatch=0; } acsmFree (acsm); printf ("\n### AC Match Finished ###\n"); // system("pause"); return (0); }
int main (int argc, char **argv) { int i; unsigned int total_len = 0; struct timeval begtime,endtime; FILE *sfd,*pfd; char sfilename[20] = "string"; char pfilename[20] = "pattern"; //=============================================== if (argc < 4) { fprintf (stderr,"Usage: acsmx stringfile patternfile ... -nocase\n"); exit (0); } strcpy (sfilename, argv[1]); sfd = fopen(sfilename,"r"); if(sfd == NULL) { fprintf(stderr,"Open file error!\n"); exit(1); } strcpy(pfilename,argv[2]); pfd = fopen(pfilename,"r"); if(sfd == NULL) { fprintf(stderr,"Open file error!\n"); exit(1); } thread_num = atoi(argv[3]); acsm = acsmNew (thread_num); //read patterns i = 0; while(fgets(pattern,MAXPATTERNLEN,pfd)) { int len = strlen(pattern); acsmAddPattern (acsm, pattern, len-1); i++; } fclose(pfd); printf("\n\nread %d patterns\n\n===============================",i); /* Generate GtoTo Table and Fail Table */ acsmCompile (acsm); //========================================================= /*read string*/ for(i = 0;i < MAXLINE;i++) { if(!fgets(text[i],MAXLEN,sfd)) break; total_len += strlen(text[i]) - 1; //ignore the last char '\n' } line = i; fclose(sfd); printf("\n\nreading finished...\n=============================\n\n"); printf("%d lines\t%d bytes",line,total_len); printf("\n\n=============================\n"); gettimeofday(&begtime,0); //create multi_thread thread_array = calloc(thread_num,sizeof(pthread_t)); valid_len_array = calloc(thread_num,sizeof(unsigned int)); pthread_barrier_init(&barrier_thread,NULL,thread_num); pthread_barrier_init(&barrier_validation,NULL,thread_num); for(i = 0;i < thread_num; i++) { pthread_create(&thread_array[i], NULL, SearchThread, (void*)i); } //=========================================================== int err; for(i = 0;i < thread_num;i++) { err = pthread_join(thread_array[i],NULL); if(err != 0) { printf("can not join with thread %d:%s\n", i,strerror(err)); } } gettimeofday(&endtime,0); PrintSummary(acsm); acsmFree (acsm); printf ("\n### AC Match Finished ###\n"); printf("\nTime Cost: %lu us\n\n",(endtime.tv_sec - begtime.tv_sec)*1000000 + (endtime.tv_usec - begtime.tv_usec)); printf ("\n====================================\n\n"); printf ("Validation Stage Len:\n\n"); for(i = 0;i < thread_num;i++) printf("rank%d\t%u\n",i,valid_len_array[i]); printf ("\n====================================\n\n"); free(thread_array); free(valid_len_array); pthread_barrier_destroy(&barrier_thread); pthread_barrier_destroy(&barrier_validation); return 0; }