From: Heiko Hund Date: Tue, 23 Mar 2010 21:30:01 +0000 (+0100) Subject: Fixed ipsec pool --batch command X-Git-Tag: 4.4.0~195 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0d59713dd98d2eab632376dd258e99cb257921cc;p=thirdparty%2Fstrongswan.git Fixed ipsec pool --batch command --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 --- diff --git a/src/libstrongswan/plugins/attr_sql/pool.c b/src/libstrongswan/plugins/attr_sql/pool.c index 77d189707e..5ecf80b426 100644 --- a/src/libstrongswan/plugins/attr_sql/pool.c +++ b/src/libstrongswan/plugins/attr_sql/pool.c @@ -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) {