|
|
1.1 root 1: #include "sam.h"
2:
3: static char *samterm="xsamterm";
4: static char *termargv[20]={"xsamterm", 0};
5: static int targc=1;
6:
7: sunarg(pargv, pargc)
8: uchar **pargv[];
9: int *pargc;
10: {
11: switch((*pargv)[1][1]){
12: case '=': /* X geometry argument */
13: termargv[targc++]=(char *)((*pargv)[1]+1);
14: break;
15: }
16: termargv[targc]=0;
17: }
18: char *memcpy(s1, s2, n)
19: char *s1;
20: register char *s2;
21: register int n;
22: {
23: register char *cs1;
24: cs1=s1;
25: while(n--)
26: *cs1++ = *s2++;
27: return s1;
28: }
29: bootterm(zflag)
30: {
31: int afildes[2], bfildes[2], pid;
32: if((pipe(afildes)==-1)||(pipe(bfildes)==-1)){
33: dprint("sam: can't create pipe to terminal process\n");
34: return 0;
35: }
36: if((pid=fork())==0){
37: close(0);
38: dup(afildes[0]);
39: close(1);
40: dup(bfildes[1]);
41: execvp(samterm, termargv);
42: exit(127);
43: }
44: if(pid==-1){
45: dprint("sam: can't fork samterm\n");
46: return 0;
47: }
48: #ifndef DIST
49: sleep(3); /* for dbx: allow time for child to get out */
50: #endif
51: close(0);
52: dup(bfildes[0]);
53: close(1);
54: dup(afildes[1]);
55: return 1;
56: }
57:
58: /* start the terminal part, then execute sam on remote machine */
59: connectboot(machine,zflag)
60: char *machine;
61: {
62: bootterm(zflag);
63: rawmode(1);
64: execlp("rsh", machine, "exec /usr/jerq/bin/sam -R", 0);
65: exit(127);
66: }
67:
68: /* connectboot means these two aren't called */
69: connectto(machine)
70: char *machine;
71: { return;
72: }
73:
74: join()
75: { return;
76: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.