-#else
- fd_set readfds;
- int maxfd;
-#endif
-
-
- memset(&G, 0, sizeof G);
-
- if (tcgetattr(0, &G.termios_def) < 0)
- exit(1);
-
- G.termios_raw = G.termios_def;
-
- cfmakeraw(&G.termios_raw);
-
- if (argc < 2) usage(telnet_usage);
- port = (argc > 2)? getport(argv[2]): 23;
-
- G.buf = xmalloc(DATABUFSIZE);
- G.iacbuf = xmalloc(IACBUFSIZE);
-
- host = getserver(argv[1]);
-
- G.netfd = remote_connect(host, port);
-
- signal(SIGINT, fgotsig);
-
-#ifdef USE_POLL
- ufds[0].fd = 0; ufds[1].fd = G.netfd;
- ufds[0].events = ufds[1].events = POLLIN;
-#else
- FD_ZERO(&readfds);
- FD_SET(0, &readfds);
- FD_SET(G.netfd, &readfds);
- maxfd = G.netfd + 1;
-#endif
-
- while (1)
- {
-#ifndef USE_POLL
- fd_set rfds = readfds;
-
- switch (select(maxfd, &rfds, NULL, NULL, NULL))
-#else
- switch (poll(ufds, 2, -1))
-#endif
- {
- case 0:
- /* timeout */
- case -1:
- /* error, ignore and/or log something, bay go to loop */
- if (G.gotsig)
- conescape();
- else
- sleep(1);
- break;
- default:
-
-#ifdef USE_POLL
- if (ufds[0].revents) /* well, should check POLLIN, but ... */
-#else
- if (FD_ISSET(0, &rfds))
-#endif
- {
- G.len = read(0, G.buf, DATABUFSIZE);
-
- if (G.len <= 0)
- doexit(0);
-
- TRACE(0, ("Read con: %d\n", G.len));
-
- handlenetoutput();
- }