|
|
researchv10 Dan Cross
/*
* Switch module
*/
#include <malloc.h>
#include "switch.h"
#define DEFMOD "opt", "join"
typedef struct {
modsw_t *mod;
char *tag;
} pq_t;
char *
pq_open(argv)
char *argv[];
{
register pq_t *pq = (pq_t *) malloc(sizeof (pq_t));
static char *defv[] = { DEFMOD, 0 };
if (!argv || !argv[0])
argv = defv;
for (pq->mod = modsw; pq->mod->name; pq->mod++)
if (!strcmp(argv[0], pq->mod->name)) {
if (pq->tag = (*pq->mod->open)(&argv[1]))
return (char *) pq;
break;
}
if (!pq->mod->name)
error(0, "pq %s: Not configured", argv[0]);
free((char *) pq);
return 0;
}
pq_close(pq)
pq_t *pq;
{
int rv = pq ? (*pq->mod->close)(pq->tag)
: error(0, "pq: close: Not opened");
if (pq)
free((char *) pq);
return rv;
}
pq_read(pq, arg, n)
pq_t *pq;
char *arg;
{
return pq ? (*pq->mod->read)(pq->tag, arg, n)
: error(0, "pq: read: Not opened");
}
pq_write(pq, arg, n)
pq_t *pq;
char *arg;
{
return pq ? (*pq->mod->write)(pq->tag, arg, n)
: error(0, "pq: write: Not opened");
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.