xref: /plan9/sys/src/cmd/ip/rlogind.c (revision f19e7b749ec99577072cd8e44030fe810f42c7ad)
1 #include <u.h>
2 #include <libc.h>
3 
4 void	getstr(int, char*, int);
5 
6 void
main(void)7 main(void)
8 {
9 	char luser[128], ruser[128], term[128], err[128];
10 
11 	getstr(0, err, sizeof(err));
12 	getstr(0, ruser, sizeof(ruser));
13 	getstr(0, luser, sizeof(luser));
14 	getstr(0, term, sizeof(term));
15 	write(0, "", 1);
16 
17 	if(luser[0] == '\0')
18 		strncpy(luser, ruser, sizeof luser);
19 	luser[sizeof luser-1] = '\0';
20 	syslog(0, "telnet", "rlogind %s", luser);
21 	execl("/bin/ip/telnetd", "telnetd", "-n", "-u", luser, nil);
22 	fprint(2, "can't exec con service: %r\n");
23 	exits("can't exec");
24 }
25 
26 void
getstr(int fd,char * str,int len)27 getstr(int fd, char *str, int len)
28 {
29 	char c;
30 	int n;
31 
32 	while(--len > 0){
33 		n = read(fd, &c, 1);
34 		if(n < 0)
35 			return;
36 		if(n == 0)
37 			continue;
38 		*str++ = c;
39 		if(c == 0)
40 			break;
41 	}
42 	*str = '\0';
43 }
44