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