|
|
1.1 ! root 1: /* ! 2: * Switch module ! 3: */ ! 4: ! 5: #include <malloc.h> ! 6: #include "switch.h" ! 7: ! 8: #define DEFMOD "opt", "join" ! 9: ! 10: typedef struct { ! 11: modsw_t *mod; ! 12: char *tag; ! 13: } pq_t; ! 14: ! 15: char * ! 16: pq_open(argv) ! 17: char *argv[]; ! 18: { ! 19: register pq_t *pq = (pq_t *) malloc(sizeof (pq_t)); ! 20: static char *defv[] = { DEFMOD, 0 }; ! 21: ! 22: if (!argv || !argv[0]) ! 23: argv = defv; ! 24: for (pq->mod = modsw; pq->mod->name; pq->mod++) ! 25: if (!strcmp(argv[0], pq->mod->name)) { ! 26: if (pq->tag = (*pq->mod->open)(&argv[1])) ! 27: return (char *) pq; ! 28: break; ! 29: } ! 30: if (!pq->mod->name) ! 31: error(0, "pq %s: Not configured", argv[0]); ! 32: free((char *) pq); ! 33: return 0; ! 34: } ! 35: ! 36: pq_close(pq) ! 37: pq_t *pq; ! 38: { ! 39: int rv = pq ? (*pq->mod->close)(pq->tag) ! 40: : error(0, "pq: close: Not opened"); ! 41: if (pq) ! 42: free((char *) pq); ! 43: return rv; ! 44: } ! 45: ! 46: pq_read(pq, arg, n) ! 47: pq_t *pq; ! 48: char *arg; ! 49: { ! 50: return pq ? (*pq->mod->read)(pq->tag, arg, n) ! 51: : error(0, "pq: read: Not opened"); ! 52: } ! 53: ! 54: pq_write(pq, arg, n) ! 55: pq_t *pq; ! 56: char *arg; ! 57: { ! 58: return pq ? (*pq->mod->write)(pq->tag, arg, n) ! 59: : error(0, "pq: write: Not opened"); ! 60: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.