@@ -385,10 +385,11 @@ static void telnet_client (int host, int sock,
385
385
}
386
386
}
387
387
388
- static void telnet_server (int sock , void (* process ) (unsigned char , int , int ),
388
+ static void telnet_server (int host , int sock ,
389
+ void (* process ) (unsigned char , int , int ),
389
390
const unsigned char * options )
390
391
{
391
- int host , connection , size ;
392
+ int connection , size ;
392
393
int reader_fd , writer_fd ;
393
394
char * banner ;
394
395
@@ -471,10 +472,14 @@ static void usage (const char *argv0, int code)
471
472
472
473
int main (int argc , char * * argv )
473
474
{
475
+ void (* telnet ) (int , int ,
476
+ void (* ) (unsigned char , int , int ),
477
+ const unsigned char * ) = NULL ;
474
478
void (* process ) (unsigned char , int , int ) = NULL ;
475
479
const unsigned char * client_options ;
476
480
const unsigned char * server_options ;
477
- int opt , client = 1 , server = 0 ;
481
+ const unsigned char * options ;
482
+ int opt ;
478
483
int host = -1 ;
479
484
int sock = -1 ;
480
485
@@ -488,8 +493,9 @@ int main (int argc, char **argv)
488
493
server_options = bin_options ;
489
494
break ;
490
495
case 'c' :
491
- client = 1 ;
492
- server = 0 ;
496
+ if (telnet != NULL )
497
+ usage (argv [0 ], 1 );
498
+ telnet = telnet_client ;
493
499
break ;
494
500
case 'n' :
495
501
if (process != NULL )
@@ -513,25 +519,32 @@ int main (int argc, char **argv)
513
519
sock = atoi (optarg );
514
520
break ;
515
521
case 's' :
516
- client = 0 ;
517
- server = 1 ;
522
+ if (telnet != NULL )
523
+ usage (argv [0 ], 1 );
524
+ telnet = telnet_server ;
518
525
break ;
519
526
default :
520
527
usage (argv [0 ], 1 );
521
528
}
522
529
}
523
530
524
- if (client )
531
+ if (telnet == telnet_client )
525
532
host = atoi (argv [optind ++ ]);
526
533
527
- if (argc != optind || ( client && server ) )
534
+ if (argc != optind )
528
535
usage (argv [0 ], 1 );
529
536
537
+ /* These are the defaults. */
530
538
if (sock == -1 )
531
539
sock = NEW_TELNET ;
532
-
533
540
if (process == NULL )
534
541
process = process_new ;
542
+ if (telnet == NULL )
543
+ telnet = telnet_client ;
544
+ if (client_options == NULL )
545
+ client_options = new_client_options ;
546
+ if (server_options == NULL )
547
+ server_options = new_server_options ;
535
548
536
549
if (ncp_init (NULL ) == -1 ) {
537
550
fprintf (stderr , "NCP initialization error: %s.\n" , strerror (errno ));
@@ -540,10 +553,11 @@ int main (int argc, char **argv)
540
553
exit (1 );
541
554
}
542
555
543
- if (client )
544
- telnet_client (host , sock , process , client_options );
545
- else if (server )
546
- telnet_server (sock , process , server_options );
556
+ if (telnet == telnet_client )
557
+ options = client_options ;
558
+ else
559
+ options = server_options ;
560
+ telnet (host , sock , process , options );
547
561
548
562
return 0 ;
549
563
}
0 commit comments