|
|
1.1 ! root 1: #include <stdio.h> ! 2: #include <string.h> ! 3: ! 4: extern int ipcdebug; ! 5: ! 6: #define CAT(x) if (x) for(cp=x;bp-buf<sizeof(buf)-1&&*cp;) *bp++ = *cp++; *bp='\0' ! 7: ! 8: /* ! 9: * Create an ipc path that starts in the /cs directory ! 10: * ! 11: * ipcpath("x!y!z", "d", "s") -> "x!y!z" ! 12: * ipcpath("x!y", "d", "s") -> "x!y!s" ! 13: * ipcpath("x", "d", "s") -> "d!x!s" ! 14: * ! 15: * all other combinations abort with an error ! 16: */ ! 17: char * ! 18: ipcpath(machine, defdialer, service) ! 19: char *machine; ! 20: char *defdialer; ! 21: char *service; ! 22: { ! 23: char *field[3]; ! 24: static char buf[256]; ! 25: char ibuf[sizeof buf]; ! 26: char *bp = buf; ! 27: ! 28: *bp = '\0'; ! 29: ! 30: if (machine == NULL) ! 31: machine = ""; ! 32: strcpy(ibuf, machine); ! 33: if (ipcdebug) ! 34: printf("ipcpath called with %s, %s, %s\n", ! 35: ibuf, defdialer, service); ! 36: ! 37: setfields("!"); ! 38: ! 39: switch (getfields(ibuf, field, 3)) { ! 40: case 3: bp = strcat(bp, field[0]); ! 41: bp = strcat(bp, "!"); ! 42: bp = strcat(bp, field[1]); ! 43: bp = strcat(bp, "!"); ! 44: bp = strcat(bp, field[2]); ! 45: break; ! 46: ! 47: case 2: bp = strcat(bp, field[0]); ! 48: bp = strcat(bp, "!"); ! 49: bp = strcat(bp, field[1]); ! 50: bp = strcat(bp, "!"); ! 51: if (service!=NULL && *service!='\0') ! 52: bp = strcat(bp, service); ! 53: break; ! 54: ! 55: case 1: bp = strcat(bp, defdialer); ! 56: bp = strcat(bp, "!"); ! 57: bp = strcat(bp, field[0]); ! 58: bp = strcat(bp, "!"); ! 59: if (service!=NULL && *service!='\0') ! 60: bp = strcat(bp, service); ! 61: break; ! 62: ! 63: default: ! 64: fprintf(stderr, "Illegal machine: %s\n", machine); ! 65: exit(1); ! 66: } ! 67: if(ipcdebug) ! 68: printf("ipcpath returning %s\n", buf); ! 69: return buf; ! 70: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.