You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by si...@apache.org on 2007/01/01 16:18:15 UTC
svn commit: r491585 - /spamassassin/trunk/spamc/getopt.c
Author: sidney
Date: Mon Jan 1 07:18:15 2007
New Revision: 491585
URL: http://svn.apache.org/viewvc?view=rev&rev=491585
Log:
bug 5263: fix bugs when a longopt with no arguments is last on the command line
Modified:
spamassassin/trunk/spamc/getopt.c
Modified: spamassassin/trunk/spamc/getopt.c
URL: http://svn.apache.org/viewvc/spamassassin/trunk/spamc/getopt.c?view=diff&rev=491585&r1=491584&r2=491585
==============================================================================
--- spamassassin/trunk/spamc/getopt.c (original)
+++ spamassassin/trunk/spamc/getopt.c Mon Jan 1 07:18:15 2007
@@ -193,6 +193,7 @@
char *bp, *opt = NULL;
int i;
+ spamc_optarg = NULL; /* clear any left over state from previous option */
if(spamc_optreset)
spamc_optreset = optchr = dash = 0;
if(spamc_optind >= argc) {
@@ -223,7 +224,7 @@
if(cp[1] == ':') {
/* requires an argument */
if(!argv[spamc_optind] || (argv[spamc_optind][0] == '-') ||
- (spamc_optind == argc)) {
+ (spamc_optind >= argc)) {
return(optiserr(argc, argv, spamc_optind-1, optstring, optchr, OPTERRARG));
}
spamc_optarg = argv[spamc_optind++];
@@ -251,7 +252,7 @@
if((strcmp(longopt+2, longopts[i].name)) == 0) {
*longindex = i;
if(longopts[i].has_arg == required_argument) {
- if(((!argv[spamc_optind]) || (argv[spamc_optind][0] == '-')) &&
+ if(((spamc_optind >= argc) || (!argv[spamc_optind]) || (argv[spamc_optind][0] == '-')) &&
(opt == NULL))
return(longoptiserr(argc, argv, spamc_optind-1, OPTERRARG));
if(opt != NULL) {
@@ -260,7 +261,7 @@
spamc_optarg = argv[spamc_optind++];
}
} else if(longopts[i].has_arg == optional_argument) {
- if(((argv[spamc_optind]) && (argv[spamc_optind][0] != '-')) ||
+ if(((spamc_optind < argc) && (argv[spamc_optind]) && (argv[spamc_optind][0] != '-')) ||
(opt != NULL)) {
if(opt != NULL) {
spamc_optarg = opt;
@@ -268,8 +269,6 @@
spamc_optarg = argv[spamc_optind++];
}
}
- } else {
- spamc_optarg = NULL;
}
if(longopts[i].flag == NULL) {
return(longopts[i].val);