From 8e6f88f680675911ee9d32862c75927c4303ced9 Mon Sep 17 00:00:00 2001 From: mellon Date: Tue, 14 Oct 1997 20:38:09 +0000 Subject: [PATCH] Fix command-line argument processing --- usr.sbin/pppd/chat/chat.c | 47 +++++++++++++++------------------------ 1 file changed, 18 insertions(+), 29 deletions(-) diff --git a/usr.sbin/pppd/chat/chat.c b/usr.sbin/pppd/chat/chat.c index 1dd0f0d0475a..f019d7d4b785 100644 --- a/usr.sbin/pppd/chat/chat.c +++ b/usr.sbin/pppd/chat/chat.c @@ -1,4 +1,4 @@ -/* $NetBSD: chat.c,v 1.11 1997/09/26 20:14:42 christos Exp $ */ +/* $NetBSD: chat.c,v 1.12 1997/10/14 20:38:09 mellon Exp $ */ /* * Chat -- a program for automatic session establishment (i.e. dial @@ -76,7 +76,7 @@ #if 0 static char rcsid[] = "Id: chat.c,v 1.15 1997/07/14 03:50:22 paulus Exp "; #else -__RCSID("$NetBSD: chat.c,v 1.11 1997/09/26 20:14:42 christos Exp $"); +__RCSID("$NetBSD: chat.c,v 1.12 1997/10/14 20:38:09 mellon Exp $"); #endif #endif @@ -123,18 +123,6 @@ __RCSID("$NetBSD: chat.c,v 1.11 1997/09/26 20:14:42 christos Exp $"); #define O_NONBLOCK O_NDELAY #endif -/*************** Micro getopt() *********************************************/ -#define OPTION(c,v) (_O&2&&**v?*(*v)++:!c||_O&4?0:(!(_O&1)&& \ - ((--c,++v),_O=4,c)&&**v=='-'&&v[0][1]?*++*v=='-'\ - &&!v[0][1]?(--c,++v,0):(_O=2,*(*v)++):0)) -#define OPTARG(c,v) (_O&2?**v||(++v,--c)?(_O=1,--c,*v++): \ - (_O=4,(char*)0):(char*)0) -#define OPTONLYARG(c,v) (_O&2&&**v?(_O=1,--c,*v++):(char*)0) -#define ARG(c,v) (c?(--c,*v++):(char*)0) - -static int _O = 0; /* Internal state */ -/*************** Micro getopt() *********************************************/ - char *program_name; #define MAX_ABORTS 50 @@ -246,12 +234,12 @@ int argc; char **argv; { int option; - char *arg; + int i; program_name = *argv; tzset(); - while ((option = OPTION(argc, argv)) != 0) + while ((option = getopt(argc, argv, ":evVf:t:r:")) != -1) { switch (option) { @@ -268,9 +256,9 @@ char **argv; break; case 'f': - if ((arg = OPTARG(argc, argv)) != NULL) + if (optarg != NULL) { - chat_file = copy_of(arg); + chat_file = copy_of(optarg); } else { @@ -279,9 +267,9 @@ char **argv; break; case 't': - if ((arg = OPTARG(argc, argv)) != NULL) + if (optarg != NULL) { - timeout = atoi(arg); + timeout = atoi(optarg); } else { @@ -290,14 +278,13 @@ char **argv; break; case 'r': - arg = OPTARG (argc, argv); - if (arg) + if (optarg) { if (report_fp != NULL) { fclose (report_fp); } - report_file = copy_of (arg); + report_file = copy_of (optarg); report_fp = fopen (report_file, "a"); if (report_fp != NULL) { @@ -311,11 +298,14 @@ char **argv; } break; + case ':': default: usage(); break; } } + argc -= optind; + argv += optind; /* * Default the report file to the stderr location */ @@ -343,8 +333,7 @@ char **argv; if (chat_file != NULL) { - arg = ARG(argc, argv); - if (arg != NULL) + if (argc) { usage(); } @@ -355,13 +344,13 @@ char **argv; } else { - while ((arg = ARG(argc, argv)) != NULL) + for (i = 0; i < argc; i++) { - chat_expect(arg); + chat_expect(argv [i]); - if ((arg = ARG(argc, argv)) != NULL) + if (++i < argc) { - chat_send(arg); + chat_send(argv [i]); } } }