Fixed ipsec pool --batch command
authorHeiko Hund <hhund@astaro.com>
Tue, 23 Mar 2010 21:30:01 +0000 (22:30 +0100)
committerMartin Willi <martin@revosec.ch>
Wed, 24 Mar 2010 07:21:36 +0000 (08:21 +0100)
--batch mode has shown to be buggy in very obscure ways in the first real
life tests. For example a batch file

       --del pool1
       --replace pool2 --addresses file1

returned the error "/usr/libexec/ipsec/pool: unrecognized option '--lace'"
which was gone after moving the --del behind --replace. With the patch
from below applied everything works like a charm. From the info on the
man page it seem to be unrelated to this problem, though:

       A program that scans multiple  argument  vectors,  or
       rescans  the same vector more than once, and wants to
       make use of GNU extensions such as '+' and '-' at the
       start   of   optstring,   or  changes  the  value  of
       POSIXLY_CORRECT  between  scans,  must   reinitialize
       getopt()  by  resetting  optind to 0, rather than the
       traditional value of 1.  (Resetting to 0  forces  the
       invocation of an internal initialization routine that
       rechecks POSIXLY_CORRECT and checks  for  GNU  exten-
       sions in optstring.)

Signed-off-by: Heiko Hund <hhund@astaro.com>
src/libstrongswan/plugins/attr_sql/pool.c

index 77d1897..5ecf80b 100644 (file)
@@ -1156,8 +1156,8 @@ static void do_args(int argc, char *argv[])
                OP_BATCH
        } operation = OP_UNDEF;
 
-       /* set option index to first argument */
-       optind = 1;
+       /* reinit getopt state */
+       optind = 0;
 
        while (TRUE)
        {