xref: /plan9/sys/src/cmd/ip/rlogind.c (revision f19e7b749ec99577072cd8e44030fe810f42c7ad)
17dd7cddfSDavid du Colombier #include <u.h>
27dd7cddfSDavid du Colombier #include <libc.h>
37dd7cddfSDavid du Colombier 
47dd7cddfSDavid du Colombier void	getstr(int, char*, int);
57dd7cddfSDavid du Colombier 
67dd7cddfSDavid du Colombier void
main(void)77dd7cddfSDavid du Colombier main(void)
87dd7cddfSDavid du Colombier {
97dd7cddfSDavid du Colombier 	char luser[128], ruser[128], term[128], err[128];
107dd7cddfSDavid du Colombier 
117dd7cddfSDavid du Colombier 	getstr(0, err, sizeof(err));
127dd7cddfSDavid du Colombier 	getstr(0, ruser, sizeof(ruser));
137dd7cddfSDavid du Colombier 	getstr(0, luser, sizeof(luser));
147dd7cddfSDavid du Colombier 	getstr(0, term, sizeof(term));
157dd7cddfSDavid du Colombier 	write(0, "", 1);
167dd7cddfSDavid du Colombier 
177dd7cddfSDavid du Colombier 	if(luser[0] == '\0')
189a747e4fSDavid du Colombier 		strncpy(luser, ruser, sizeof luser);
199a747e4fSDavid du Colombier 	luser[sizeof luser-1] = '\0';
207dd7cddfSDavid du Colombier 	syslog(0, "telnet", "rlogind %s", luser);
21*f19e7b74SDavid du Colombier 	execl("/bin/ip/telnetd", "telnetd", "-n", "-u", luser, nil);
227dd7cddfSDavid du Colombier 	fprint(2, "can't exec con service: %r\n");
237dd7cddfSDavid du Colombier 	exits("can't exec");
247dd7cddfSDavid du Colombier }
257dd7cddfSDavid du Colombier 
267dd7cddfSDavid du Colombier void
getstr(int fd,char * str,int len)277dd7cddfSDavid du Colombier getstr(int fd, char *str, int len)
287dd7cddfSDavid du Colombier {
297dd7cddfSDavid du Colombier 	char c;
307dd7cddfSDavid du Colombier 	int n;
317dd7cddfSDavid du Colombier 
327dd7cddfSDavid du Colombier 	while(--len > 0){
337dd7cddfSDavid du Colombier 		n = read(fd, &c, 1);
347dd7cddfSDavid du Colombier 		if(n < 0)
357dd7cddfSDavid du Colombier 			return;
367dd7cddfSDavid du Colombier 		if(n == 0)
377dd7cddfSDavid du Colombier 			continue;
387dd7cddfSDavid du Colombier 		*str++ = c;
397dd7cddfSDavid du Colombier 		if(c == 0)
407dd7cddfSDavid du Colombier 			break;
417dd7cddfSDavid du Colombier 	}
427dd7cddfSDavid du Colombier 	*str = '\0';
437dd7cddfSDavid du Colombier }
44