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