From: Chris Allegretta Date: Tue, 23 Jul 2002 00:33:07 +0000 (+0000) Subject: Fix to parsing getopt args for -I/--ignorercfiles (DLR) X-Git-Tag: v1.1.10~6 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=1c5c338f9562542c581c5334175f1f6e1a0648be;p=nano.git Fix to parsing getopt args for -I/--ignorercfiles (DLR) git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1239 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- diff --git a/ChangeLog b/ChangeLog index 06af05e6..dd0b146e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -85,7 +85,8 @@ CVS Code - printed as-is and be interpreted as commands by xterm, which will corrupt the display.) (DLR) - Add command line option -I/--ignorercfiles to ignore - /etc/nanorc and ~/.nanorc. (Carl Drinkwater) + /etc/nanorc and ~/.nanorc. (Carl Drinkwater). Fix to parsing + getopt args (DLR). - Fix minor bugs with importing certain text files in Mac format. (DLR) - files.c: diff --git a/nano.c b/nano.c index b3f7e816..41690aa4 100644 --- a/nano.c +++ b/nano.c @@ -2916,35 +2916,26 @@ int main(int argc, char *argv[]) #endif #ifdef ENABLE_NANORC - /* scan through the options and handle -I/--ignorercfiles first, so - that it's handled before we call do_rcfile() and read the other - options */ - - /* stop getopt throwing up an error if we supply other options - as arguments */ - opterr = 0; - + { + /* scan through the options and handle -I/--ignorercfiles + first, so that it's handled before we call do_rcfile() and + read the other options; don't use getopt()/getopt_long() + here, because there's no way to reset it properly + afterward */ + int i; + for (i = 1; i < argc; i++) { + if (!strcmp(argv[i], "--")) + break; + else if (!strcmp(argv[i], "-I")) + SET(NO_RCFILE); #ifdef HAVE_GETOPT_LONG - while ((optchr = getopt_long(argc, argv, "I", - long_options, &option_index)) != EOF) { -#else - while ((optchr = - getopt(argc, argv, "I")) != EOF) { + else if (!strcmp(argv[i], "--ignorercfiles")) + SET(NO_RCFILE); #endif - switch (optchr) { - case 'I': - SET(NO_RCFILE); - break; } } - - if (!ISSET(NO_RCFILE)) - do_rcfile(); - - /* reset the getopt variables so we can read through the command line - arguments again */ - optind = 1; - opterr = 1; + if (!ISSET(NO_RCFILE)) + do_rcfile(); #endif /* ENABLE_NANORC */ #ifdef HAVE_GETOPT_LONG @@ -2983,8 +2974,6 @@ int main(int argc, char *argv[]) break; #endif #ifdef ENABLE_NANORC - /* we need -I/--ignorercfiles again to stop getopt giving us an - error if we've already supplied it */ case 'I': break; #endif diff --git a/nano.h b/nano.h index f157646c..840913e3 100644 --- a/nano.h +++ b/nano.h @@ -186,10 +186,10 @@ typedef struct syntaxtype { #define SAMELINEWRAP (1<<11) #define VIEW_MODE (1<<12) #define USE_MOUSE (1<<13) -#define USE_REGEXP (1<<14) -#define REGEXP_COMPILED (1<<15) -#define TEMP_OPT (1<<16) -#define CUT_TO_END (1<<17) +#define USE_REGEXP (1<<14) +#define REGEXP_COMPILED (1<<15) +#define TEMP_OPT (1<<16) +#define CUT_TO_END (1<<17) #define REVERSE_SEARCH (1<<18) #define MULTIBUFFER (1<<19) #define CLEAR_BACKUPSTRING (1<<20)