|
|
1.1 ! root 1: #ifndef lint ! 2: static char sccsid[] = "@(#)bind.c 4.2 (Berkeley) 7/7/83"; ! 3: #endif ! 4: ! 5: /* ! 6: * Courier connection management. ! 7: */ ! 8: #include <stdio.h> ! 9: #include "courier.h" ! 10: ! 11: #if DEBUG ! 12: extern int CourierClientDebuggingFlag; ! 13: #endif ! 14: ! 15: #define NBINDINGS 10 ! 16: ! 17: struct binding { ! 18: char *program; /* Courier program name or 0 */ ! 19: char *machine; /* machine name */ ! 20: int connection; /* open connection descriptor */ ! 21: } btab[NBINDINGS]; ! 22: ! 23: CourierProgram(program, machine) ! 24: char *program, *machine; ! 25: { ! 26: register struct binding *bp, *x; ! 27: extern char *malloc(); ! 28: ! 29: x = 0; ! 30: for (bp = &btab[0]; bp < &btab[NBINDINGS]; bp++) ! 31: if (bp->program != 0) { ! 32: if (strcmp(bp->program, program) == 0 && ! 33: strcmp(bp->machine, machine) == 0) ! 34: if (bp->connection >= 0) ! 35: return (bp->connection); ! 36: else ! 37: goto connect; ! 38: } else ! 39: x = bp; ! 40: if (x == 0) { ! 41: fprintf(stderr, "Too many active Courier programs.\n"); ! 42: exit(1); ! 43: } ! 44: bp = x; ! 45: bp->program = malloc(strlen(program)+1); ! 46: strcpy(bp->program, program); ! 47: bp->machine = malloc(strlen(machine)+1); ! 48: strcpy(bp->machine, machine); ! 49: connect: ! 50: bp->connection = CourierActivate(bp->program, bp->machine); ! 51: if (bp->connection >= 0) ! 52: return (bp->connection); ! 53: } ! 54: ! 55: CourierDeactivate(program, machine) ! 56: char *program, *machine; ! 57: { ! 58: register struct binding *bp; ! 59: ! 60: for (bp = &btab[0]; bp < &btab[NBINDINGS]; bp++) ! 61: if (bp->program != 0 && ! 62: strcmp(bp->program, program) == 0 && ! 63: strcmp(bp->machine, machine) == 0) { ! 64: free(bp->program); ! 65: free(bp->machine); ! 66: close(bp->connection); ! 67: bp->program = 0; ! 68: bp->machine = 0; ! 69: bp->connection = -1; ! 70: return; ! 71: } ! 72: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.