Annotation of researchv10no/cmd/gre/htest.c, revision 1.1.1.1

1.1       root        1: #include       <stdio.h>
                      2: #include       "re.h"
                      3: 
                      4: #ifdef PROFILING
                      5: short profb[50000];
                      6: #endif
                      7: 
                      8: main(argc, argv)
                      9:        char **argv;
                     10: {
                     11:        re_re *r;
                     12:        char *pat, *s;
                     13:        char buf[4096];
                     14:        unsigned char map[256];
                     15:        FILE *exprs[1024];
                     16:        char *match[10][2];
                     17:        int n, i, bufc;
                     18:        extern re_debug;
                     19: 
                     20: #ifdef PROFILING
                     21:        { extern etext(); monitor((int (*)())2, etext, profb, ((int)etext) - 2+12+2400, 300); }
                     22: #endif
                     23:        if((argc%2) || (argc < 2)){
                     24:                fprintf(stderr, "Usage: %s {pattern file}* sequence\n", argv[0]);
                     25:                fprintf(stderr, "\tEg: %s '^(a|b)+$' temp0 '(gh+|hb)' temp1  01101\n", argv[0]);
                     26:                exit(1);
                     27:        }
                     28:        for(n = 0; n < 256; n++)
                     29:                map[n] = n;
                     30:        for(n = 0, i = 1; i < argc-1; i++, n++){
                     31:                pat = argv[i++];
                     32:                r = re_recomp(pat, pat+strlen(pat), map);
                     33:                if(r == 0)
                     34:                        exit(1);
                     35:                if((exprs[n] = fopen(argv[i], "w+r")) == NULL){
                     36:                        perror(argv[i]);
                     37:                        exit(1);
                     38:                }
                     39:                re_refile(r, exprs[n]);
                     40:        }
                     41:        bufc = fread(buf, 1, sizeof buf, stdin);
                     42:        for(s = argv[i]; *s; s++){
                     43:                rewind(exprs[n = *s-'0']);
                     44:                r = re_filere(exprs[n]);
                     45: re_debug = 20;
                     46:                if(re_reexec(r, buf, buf+bufc, match)){
                     47:                        printf("%s matched:", argv[1+2*n]);
                     48:                        for(i = 0; i < 10; i++)
                     49:                                if(match[i][0]){
                     50:                                        printf(" G%d='", i);
                     51:                                        fwrite(match[i][0], 1, match[i][1]-match[i][0], stdout);
                     52:                                        putchar('\'');
                     53:                                }
                     54:                        putchar('\n');
                     55:                }
                     56:                re_refree(r);
                     57:        }
                     58:        exit(0);
                     59: }
                     60: 
                     61: void
                     62: re_error(char *s)
                     63: {
                     64:        fprintf(stderr, "pattern error: %s\n", s);
                     65:        /* NOTREACHED */
                     66: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.