From 9d5ca5323910591f2cafbac5070fcb5b6d02d022 Mon Sep 17 00:00:00 2001 From: Keith Wiles Date: Tue, 14 Feb 2017 16:09:41 -0600 Subject: [PATCH] examples: fix optind reset MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The variable optind should be reset to one not zero. From the man page: "The variable optind is the index of the next element to be processed in argv. The system initializes this value to 1. The caller can reset it to 1 to restart scanning of the same argv, or when scanning a new argument vector.” The problem I saw with my application was trying to parse the wrong option, which can happen as DPDK parses the first part of the command line and the application parses the second part. If you call getopt() multiple times in the same execution, the behavior is not maintained when using zero for optind. Signed-off-by: Keith Wiles --- examples/distributor/main.c | 2 +- examples/dpdk_qat/main.c | 2 +- examples/ip_fragmentation/main.c | 2 +- examples/ip_pipeline/config_parse.c | 4 ++-- examples/ip_reassembly/main.c | 2 +- examples/ipsec-secgw/ipsec-secgw.c | 2 +- examples/ipv4_multicast/main.c | 2 +- examples/l2fwd-cat/cat.c | 2 +- examples/l2fwd-crypto/main.c | 2 +- examples/l2fwd-jobstats/main.c | 2 +- examples/l2fwd-keepalive/main.c | 2 +- examples/l2fwd/main.c | 2 +- examples/l3fwd-acl/main.c | 2 +- examples/l3fwd-power/main.c | 2 +- examples/l3fwd-vf/main.c | 2 +- examples/l3fwd/main.c | 2 +- examples/link_status_interrupt/main.c | 2 +- examples/load_balancer/config.c | 2 +- examples/multi_process/l2fwd_fork/main.c | 2 +- examples/multi_process/symmetric_mp/main.c | 2 +- examples/packet_ordering/main.c | 2 +- examples/performance-thread/l3fwd-thread/main.c | 2 +- examples/ptpclient/ptpclient.c | 2 +- examples/qos_meter/main.c | 2 +- test/test-pipeline/config.c | 2 +- 25 files changed, 26 insertions(+), 26 deletions(-) diff --git a/examples/distributor/main.c b/examples/distributor/main.c index e7641d2c7f..7b8a7595ef 100644 --- a/examples/distributor/main.c +++ b/examples/distributor/main.c @@ -487,7 +487,7 @@ parse_args(int argc, char **argv) argv[optind-1] = prgname; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return 0; } diff --git a/examples/dpdk_qat/main.c b/examples/dpdk_qat/main.c index aa9b1d5cc0..a96119cde5 100644 --- a/examples/dpdk_qat/main.c +++ b/examples/dpdk_qat/main.c @@ -582,7 +582,7 @@ parse_args(int argc, char **argv) argv[optind-1] = prgname; ret = optind-1; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return ret; } diff --git a/examples/ip_fragmentation/main.c b/examples/ip_fragmentation/main.c index e1e32c66c8..9e9ecaefb9 100644 --- a/examples/ip_fragmentation/main.c +++ b/examples/ip_fragmentation/main.c @@ -586,7 +586,7 @@ parse_args(int argc, char **argv) argv[optind-1] = prgname; ret = optind-1; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return ret; } diff --git a/examples/ip_pipeline/config_parse.c b/examples/ip_pipeline/config_parse.c index 8b372e94ec..3ae7d48d58 100644 --- a/examples/ip_pipeline/config_parse.c +++ b/examples/ip_pipeline/config_parse.c @@ -1,4 +1,4 @@ -/*- +/*- * BSD LICENSE * * Copyright(c) 2010-2016 Intel Corporation. All rights reserved. @@ -3407,7 +3407,7 @@ app_config_args(struct app_params *app, int argc, char **argv) app_print_usage(argv[0]); } - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ /* Check dependencies between args */ if (preproc_params_present && (preproc_present == 0)) diff --git a/examples/ip_reassembly/main.c b/examples/ip_reassembly/main.c index 50fe4228ef..e62674c5d0 100644 --- a/examples/ip_reassembly/main.c +++ b/examples/ip_reassembly/main.c @@ -718,7 +718,7 @@ parse_args(int argc, char **argv) argv[optind-1] = prgname; ret = optind-1; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return ret; } diff --git a/examples/ipsec-secgw/ipsec-secgw.c b/examples/ipsec-secgw/ipsec-secgw.c index 5a4c9b71b1..685feec1fd 100644 --- a/examples/ipsec-secgw/ipsec-secgw.c +++ b/examples/ipsec-secgw/ipsec-secgw.c @@ -1039,7 +1039,7 @@ parse_args(int32_t argc, char **argv) argv[optind-1] = prgname; ret = optind-1; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return ret; } diff --git a/examples/ipv4_multicast/main.c b/examples/ipv4_multicast/main.c index 708d76e9af..b681f8e2b6 100644 --- a/examples/ipv4_multicast/main.c +++ b/examples/ipv4_multicast/main.c @@ -575,7 +575,7 @@ parse_args(int argc, char **argv) argv[optind-1] = prgname; ret = optind-1; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return ret; } diff --git a/examples/l2fwd-cat/cat.c b/examples/l2fwd-cat/cat.c index bad39305af..6133bf5bbc 100644 --- a/examples/l2fwd-cat/cat.c +++ b/examples/l2fwd-cat/cat.c @@ -686,7 +686,7 @@ parse_args(int argc, char **argv) exit: /* reset getopt lib */ - optind = 0; + optind = 1; /* Restore opterr value */ opterr = oldopterr; diff --git a/examples/l2fwd-crypto/main.c b/examples/l2fwd-crypto/main.c index 62ee9339f4..bd21dba7ed 100644 --- a/examples/l2fwd-crypto/main.c +++ b/examples/l2fwd-crypto/main.c @@ -1450,7 +1450,7 @@ l2fwd_crypto_parse_args(struct l2fwd_crypto_options *options, argv[optind-1] = prgname; retval = optind-1; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return retval; } diff --git a/examples/l2fwd-jobstats/main.c b/examples/l2fwd-jobstats/main.c index dd9201b258..eae7a13a37 100644 --- a/examples/l2fwd-jobstats/main.c +++ b/examples/l2fwd-jobstats/main.c @@ -709,7 +709,7 @@ l2fwd_parse_args(int argc, char **argv) argv[optind-1] = prgname; ret = optind-1; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return ret; } diff --git a/examples/l2fwd-keepalive/main.c b/examples/l2fwd-keepalive/main.c index 60cccdb108..068f4e5f96 100644 --- a/examples/l2fwd-keepalive/main.c +++ b/examples/l2fwd-keepalive/main.c @@ -464,7 +464,7 @@ l2fwd_parse_args(int argc, char **argv) argv[optind-1] = prgname; ret = optind-1; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return ret; } diff --git a/examples/l2fwd/main.c b/examples/l2fwd/main.c index 97d6454303..ffcf109574 100644 --- a/examples/l2fwd/main.c +++ b/examples/l2fwd/main.c @@ -475,7 +475,7 @@ l2fwd_parse_args(int argc, char **argv) argv[optind-1] = prgname; ret = optind-1; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return ret; } diff --git a/examples/l3fwd-acl/main.c b/examples/l3fwd-acl/main.c index 3cfbb40ead..0e3daadf94 100644 --- a/examples/l3fwd-acl/main.c +++ b/examples/l3fwd-acl/main.c @@ -1776,7 +1776,7 @@ parse_args(int argc, char **argv) argv[optind-1] = prgname; ret = optind-1; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return ret; } diff --git a/examples/l3fwd-power/main.c b/examples/l3fwd-power/main.c index 15b47c7ddd..978631cf29 100644 --- a/examples/l3fwd-power/main.c +++ b/examples/l3fwd-power/main.c @@ -1361,7 +1361,7 @@ parse_args(int argc, char **argv) argv[optind-1] = prgname; ret = optind-1; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return ret; } diff --git a/examples/l3fwd-vf/main.c b/examples/l3fwd-vf/main.c index f56e8db900..dc3d547294 100644 --- a/examples/l3fwd-vf/main.c +++ b/examples/l3fwd-vf/main.c @@ -816,7 +816,7 @@ parse_args(int argc, char **argv) argv[optind-1] = prgname; ret = optind-1; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return ret; } diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c index a50d628fca..3ce1b6539b 100644 --- a/examples/l3fwd/main.c +++ b/examples/l3fwd/main.c @@ -688,7 +688,7 @@ parse_args(int argc, char **argv) argv[optind-1] = prgname; ret = optind-1; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return ret; } diff --git a/examples/link_status_interrupt/main.c b/examples/link_status_interrupt/main.c index 14a038b729..97379fa3d6 100644 --- a/examples/link_status_interrupt/main.c +++ b/examples/link_status_interrupt/main.c @@ -451,7 +451,7 @@ lsi_parse_args(int argc, char **argv) argv[optind-1] = prgname; ret = optind-1; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return ret; } diff --git a/examples/load_balancer/config.c b/examples/load_balancer/config.c index 157fd528f0..07f92a1ab8 100644 --- a/examples/load_balancer/config.c +++ b/examples/load_balancer/config.c @@ -758,7 +758,7 @@ app_parse_args(int argc, char **argv) argv[optind - 1] = prgname; ret = optind - 1; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return ret; } diff --git a/examples/multi_process/l2fwd_fork/main.c b/examples/multi_process/l2fwd_fork/main.c index 2d951d9303..08df942d5e 100644 --- a/examples/multi_process/l2fwd_fork/main.c +++ b/examples/multi_process/l2fwd_fork/main.c @@ -865,7 +865,7 @@ l2fwd_parse_args(int argc, char **argv) return -1; } ret = optind-1; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return ret; } diff --git a/examples/multi_process/symmetric_mp/main.c b/examples/multi_process/symmetric_mp/main.c index d30ff4a476..75a52728dc 100644 --- a/examples/multi_process/symmetric_mp/main.c +++ b/examples/multi_process/symmetric_mp/main.c @@ -193,7 +193,7 @@ smp_parse_args(int argc, char **argv) ports[num_ports++] = (uint8_t)i; ret = optind-1; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return ret; } diff --git a/examples/packet_ordering/main.c b/examples/packet_ordering/main.c index d4dc7894eb..a448039d3d 100644 --- a/examples/packet_ordering/main.c +++ b/examples/packet_ordering/main.c @@ -216,7 +216,7 @@ parse_args(int argc, char **argv) } argv[optind-1] = prgname; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return 0; } diff --git a/examples/performance-thread/l3fwd-thread/main.c b/examples/performance-thread/l3fwd-thread/main.c index 53083dfa5e..6845e28729 100644 --- a/examples/performance-thread/l3fwd-thread/main.c +++ b/examples/performance-thread/l3fwd-thread/main.c @@ -3052,7 +3052,7 @@ parse_args(int argc, char **argv) argv[optind-1] = prgname; ret = optind-1; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return ret; } diff --git a/examples/ptpclient/ptpclient.c b/examples/ptpclient/ptpclient.c index 0af4f3b61e..a80961d395 100644 --- a/examples/ptpclient/ptpclient.c +++ b/examples/ptpclient/ptpclient.c @@ -708,7 +708,7 @@ ptp_parse_args(int argc, char **argv) argv[optind-1] = prgname; - optind = 0; /* Reset getopt lib. */ + optind = 1; /* Reset getopt lib. */ return 0; } diff --git a/examples/qos_meter/main.c b/examples/qos_meter/main.c index 1565615567..abe5eb8bfe 100644 --- a/examples/qos_meter/main.c +++ b/examples/qos_meter/main.c @@ -300,7 +300,7 @@ parse_args(int argc, char **argv) argv[optind-1] = prgname; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return 0; } diff --git a/test/test-pipeline/config.c b/test/test-pipeline/config.c index dd80ed6991..1b397c0391 100644 --- a/test/test-pipeline/config.c +++ b/test/test-pipeline/config.c @@ -259,6 +259,6 @@ app_parse_args(int argc, char **argv) argv[optind - 1] = prgname; ret = optind - 1; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return ret; } -- 2.20.1