* [dpdk-dev] [PATCH] examples: optind should be reset to one not zero
@ 2017-02-14 22:09 Keith Wiles
2017-03-09 20:41 ` Thomas Monjalon
0 siblings, 1 reply; 4+ messages in thread
From: Keith Wiles @ 2017-02-14 22:09 UTC (permalink / raw)
To: dev
Signed-off-by: Keith Wiles <keith.wiles@intel.com>
---
app/test-pipeline/config.c | 2 +-
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 +-
25 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/app/test-pipeline/config.c b/app/test-pipeline/config.c
index dd80ed6..1b397c0 100644
--- a/app/test-pipeline/config.c
+++ b/app/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;
}
diff --git a/examples/distributor/main.c b/examples/distributor/main.c
index e7641d2..7b8a759 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 aa9b1d5..a96119c 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 e1e32c6..9e9ecae 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 8b372e9..3ae7d48 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 50fe422..e62674c 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 5a4c9b7..685feec 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 708d76e..b681f8e 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 bad3930..6133bf5 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 62ee933..bd21dba 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 dd9201b..eae7a13 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 60cccdb..068f4e5 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 97d6454..ffcf109 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 3cfbb40..0e3daad 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 15b47c7..978631c 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 f56e8db..dc3d547 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 a50d628..3ce1b65 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 14a038b..97379fa 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 157fd52..07f92a1 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 2d951d9..08df942 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 d30ff4a..75a5272 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 d4dc789..a448039 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 53083df..6845e28 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 0af4f3b..a80961d 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 1565615..abe5eb8 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;
}
--
2.8.0.GIT
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [dpdk-dev] [PATCH] examples: optind should be reset to one not zero
2017-02-14 22:09 [dpdk-dev] [PATCH] examples: optind should be reset to one not zero Keith Wiles
@ 2017-03-09 20:41 ` Thomas Monjalon
2017-03-09 21:11 ` Wiles, Keith
0 siblings, 1 reply; 4+ messages in thread
From: Thomas Monjalon @ 2017-03-09 20:41 UTC (permalink / raw)
To: Keith Wiles; +Cc: dev
2017-02-14 16:09, Keith Wiles:
> Signed-off-by: Keith Wiles <keith.wiles@intel.com>
Please, could explain and describe what was the consequence of this
wrong reset value?
You can just reply and I will integrate it in the commit when applying.
Thanks
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [dpdk-dev] [PATCH] examples: optind should be reset to one not zero
2017-03-09 20:41 ` Thomas Monjalon
@ 2017-03-09 21:11 ` Wiles, Keith
2017-03-10 14:41 ` Thomas Monjalon
0 siblings, 1 reply; 4+ messages in thread
From: Wiles, Keith @ 2017-03-09 21:11 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: dev
> On Mar 9, 2017, at 2:41 PM, Thomas Monjalon <thomas.monjalon@6wind.com> wrote:
>
> 2017-02-14 16:09, Keith Wiles:
>> Signed-off-by: Keith Wiles <keith.wiles@intel.com>
>
> Please, could explain and describe what was the consequence of this
> wrong reset value?
> You can just reply and I will integrate it in the commit when applying.
Here is the man page text:
"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.
— Do not put the next part in the commit message unless you want —
As a side note it appears MacOS is much more picky about trying to use optind of zero and not one. I would get a segfault on DPDK running in MacOS and I assumed Linux/FreeBSD could be fixing optind internally, but it is best to set the correct value in all cases.
I hope that helps.
> Thanks
>
Regards,
Keith
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [dpdk-dev] [PATCH] examples: optind should be reset to one not zero
2017-03-09 21:11 ` Wiles, Keith
@ 2017-03-10 14:41 ` Thomas Monjalon
0 siblings, 0 replies; 4+ messages in thread
From: Thomas Monjalon @ 2017-03-10 14:41 UTC (permalink / raw)
To: Wiles, Keith; +Cc: dev
2017-03-09 21:11, Wiles, Keith:
>
> > On Mar 9, 2017, at 2:41 PM, Thomas Monjalon <thomas.monjalon@6wind.com> wrote:
> >
> > 2017-02-14 16:09, Keith Wiles:
> >> Signed-off-by: Keith Wiles <keith.wiles@intel.com>
> >
> > Please, could explain and describe what was the consequence of this
> > wrong reset value?
> > You can just reply and I will integrate it in the commit when applying.
>
> Here is the man page text:
>
> "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.
>
>
> — Do not put the next part in the commit message unless you want —
> As a side note it appears MacOS is much more picky about trying to use optind of zero and not one. I would get a segfault on DPDK running in MacOS and I assumed Linux/FreeBSD could be fixing optind internally, but it is best to set the correct value in all cases.
>
> I hope that helps.
Applied with this explanation integrated, thanks.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-03-10 14:41 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-14 22:09 [dpdk-dev] [PATCH] examples: optind should be reset to one not zero Keith Wiles
2017-03-09 20:41 ` Thomas Monjalon
2017-03-09 21:11 ` Wiles, Keith
2017-03-10 14:41 ` Thomas Monjalon
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).