Annotation of researchv10dc/cmd/post/opt.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Query optimization module
                      3:  */
                      4: 
                      5: #include <malloc.h>
                      6: #include <string.h>
                      7: 
                      8: typedef struct {
                      9:        char    *tag;
                     10:        short   count;
                     11:        short   copy[512];
                     12: } opt_t;
                     13: 
                     14: extern char    *pq_open();
                     15: 
                     16: char *
                     17: opt_open(argv)
                     18: char   *argv[];
                     19: {
                     20:        opt_t   *opt = (opt_t *) malloc(sizeof (opt_t));
                     21: 
                     22:        if ((opt->tag = pq_open(argv)) == 0) {
                     23:                free((char *) opt);
                     24:                return 0;
                     25:        }
                     26:        opt->count = -1;
                     27:        return (char *) opt;
                     28: }
                     29: 
                     30: opt_close(opt)
                     31: opt_t  *opt;
                     32: {
                     33:        int rv = pq_close(opt->tag);
                     34:        free((char *) opt);
                     35:        return rv;
                     36: }
                     37: 
                     38: opt_read(opt, argv)
                     39: register opt_t *opt;
                     40: register char  *argv[];
                     41: {
                     42:        register int    rv, i;
                     43: 
                     44:        if ((rv = pq_read(opt->tag, argv)) > 0)
                     45:                for (i = opt->count; i >= 0; i--)
                     46:                        argv[i] = argv[opt->copy[i]];
                     47:        return rv;
                     48: }
                     49: 
                     50: opt_write(opt, argv)
                     51: register opt_t *opt;
                     52: register char  *argv[];
                     53: {
                     54:        register int    i, j, k = 0;
                     55:        char    *vec[512];
                     56: 
                     57:        for (i = 0; argv[i]; i++) {
                     58:                for (j = 0; j < k; j++)
                     59:                        if (eqattr(argv[i], vec[j])) {
                     60:                                if (!strchr(vec[j], '='))
                     61:                                        vec[j] = argv[i];
                     62:                                break;
                     63:                        }
                     64:                if (j == k)
                     65:                        vec[k++] = argv[i];
                     66:                opt->copy[i] = j;
                     67:        }
                     68:        opt->copy[i] = k;
                     69:        opt->count = i;
                     70:        vec[k] = 0;
                     71:        return pq_write(opt->tag, vec);
                     72: }

unix.superglobalmegacorp.com

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