|
|
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.