V9/jtools/src/sam/sun.c

Compare this file to the similar file:
Show the results in this format:

#include "sam.h"

static char	*samterm="xsamterm";
static char	*termargv[20]={"xsamterm", 0};
static int	targc=1;

sunarg(pargv, pargc)
	uchar **pargv[];
	int *pargc;
{
	switch((*pargv)[1][1]){
	case '=':	/* X geometry argument */
		termargv[targc++]=(char *)((*pargv)[1]+1);
		break;
	}
	termargv[targc]=0;
}
char *memcpy(s1, s2, n)
char *s1;
register char *s2;
register int n;
{
	register char *cs1;
	cs1=s1;
	while(n--)
		*cs1++ = *s2++;
	return s1;
}
bootterm(zflag)
{
	int afildes[2], bfildes[2], pid;
	if((pipe(afildes)==-1)||(pipe(bfildes)==-1)){
		dprint("sam: can't create pipe to terminal process\n");
		return 0;
	}
	if((pid=fork())==0){
		close(0);
		dup(afildes[0]);
		close(1);
		dup(bfildes[1]);
		execvp(samterm, termargv);
		exit(127);
	}
	if(pid==-1){
		dprint("sam: can't fork samterm\n");
		return 0;
	}
#ifndef DIST
	sleep(3);	/* for dbx: allow time for child to get out */
#endif
	close(0);
	dup(bfildes[0]);
	close(1);
	dup(afildes[1]);
	return 1;
}

/* start the terminal part, then execute sam on remote machine */
connectboot(machine,zflag)
	char *machine;
{
	bootterm(zflag);
	rawmode(1);
	execlp("rsh", machine, "exec /usr/jerq/bin/sam -R", 0);
	exit(127);
}

/* connectboot means these two aren't called */
connectto(machine)
	char *machine;
{	return;
}

join()
{	return;
}