aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--networking/telnetd.c44
1 files changed, 12 insertions, 32 deletions
diff --git a/networking/telnetd.c b/networking/telnetd.c
index 890e58466..9fa8faf66 100644
--- a/networking/telnetd.c
+++ b/networking/telnetd.c
@@ -362,23 +362,16 @@ free_session(struct tsession *ts)
362int 362int
363telnetd_main(int argc, char **argv) 363telnetd_main(int argc, char **argv)
364{ 364{
365#ifndef CONFIG_FEATURE_TELNETD_INETD 365 unsigned long opt;
366 sockaddr_type sa;
367 int master_fd;
368#endif /* CONFIG_FEATURE_TELNETD_INETD */
369 fd_set rdfdset, wrfdset; 366 fd_set rdfdset, wrfdset;
370 int selret; 367 int selret;
371#ifndef CONFIG_FEATURE_TELNETD_INETD 368#ifndef CONFIG_FEATURE_TELNETD_INETD
369 sockaddr_type sa;
370 int master_fd;
372 int on = 1; 371 int on = 1;
373 int portnbr = 23; 372 int portnbr = 23;
374 struct in_addr bind_addr = { .s_addr = 0x0 }; 373 struct in_addr bind_addr = { .s_addr = 0x0 };
375#endif /* CONFIG_FEATURE_TELNETD_INETD */ 374 char *opt_portnbr, *opt_bindaddr;
376 int c;
377 static const char options[] =
378#ifdef CONFIG_FEATURE_TELNETD_INETD
379 "f:l:";
380#else /* CONFIG_EATURE_TELNETD_INETD */
381 "f:l:p:b:";
382#endif /* CONFIG_FEATURE_TELNETD_INETD */ 375#endif /* CONFIG_FEATURE_TELNETD_INETD */
383 int maxlen, w, r; 376 int maxlen, w, r;
384 377
@@ -394,29 +387,16 @@ telnetd_main(int argc, char **argv)
394 openlog(bb_applet_name, 0, LOG_USER); 387 openlog(bb_applet_name, 0, LOG_USER);
395 logmode = LOGMODE_SYSLOG; 388 logmode = LOGMODE_SYSLOG;
396 389
397 for (;;) { 390 opt = bb_getopt_ulflags(argc, argv, "f:l:" USE_FEATURE_TELNETD_INETD("p:b:"),
398 c = getopt( argc, argv, options); 391 &issuefile, &loginpath
399 if (c == EOF) break; 392 SKIP_FEATURE_TELNETD_INETD(, &opt_portnbr, &opt_bindaddr));
400 switch (c) { 393 //if (opt & 1) // -f
401 case 'f': 394 //if (opt & 2) // -l
402 issuefile = optarg;
403 break;
404 case 'l':
405 loginpath = optarg;
406 break;
407#ifndef CONFIG_FEATURE_TELNETD_INETD 395#ifndef CONFIG_FEATURE_TELNETD_INETD
408 case 'p': 396 if (opt & 4) portnbr = atoi(opt_portnbr); // -p
409 portnbr = atoi(optarg); 397 if (opt & 8) // -b
410 break; 398 if (inet_aton(opt_bindaddr, &bind_addr) == 0) bb_show_usage();
411 case 'b':
412 if (inet_aton(optarg, &bind_addr) == 0)
413 bb_show_usage();
414 break;
415#endif /* CONFIG_FEATURE_TELNETD_INETD */ 399#endif /* CONFIG_FEATURE_TELNETD_INETD */
416 default:
417 bb_show_usage();
418 }
419 }
420 400
421 if (access(loginpath, X_OK) < 0) { 401 if (access(loginpath, X_OK) < 0) {
422 bb_error_msg_and_die("'%s' unavailable", loginpath); 402 bb_error_msg_and_die("'%s' unavailable", loginpath);