summaryrefslogtreecommitdiffstats
path: root/usr.bin/printf
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2010-12-14 01:16:56 +0000
committerdelphij <delphij@FreeBSD.org>2010-12-14 01:16:56 +0000
commitdc620e69a5f031d9bbf327f3f7afaff2e3ade62f (patch)
tree736339ec88fccc87803f5fdf1eb66a9f68ab31fa /usr.bin/printf
parent5715a480cf14c5797c5c5b6c51bf9cef15b1460d (diff)
downloadFreeBSD-src-dc620e69a5f031d9bbf327f3f7afaff2e3ade62f.zip
FreeBSD-src-dc620e69a5f031d9bbf327f3f7afaff2e3ade62f.tar.gz
IEEE Std 1003.1-2008, Section 1.4, Utility Description Defaults says
that when the options section is listed as "None", utility shall recognize "--" as a first argument to be discarded. This implementation is largely based on OpenBSD implementation but we do slightly differently: a) We skip argv[0] as the first step; b) We test whether the next argument is "--" and ignore it. With this change one will get: %printf usage: printf format [arguments ...] %printf -v -v%printf -- -v -v% %printf -- usage: printf format [arguments ...] Which matches the behavior observed on a Debian system but different from the Illumos change.
Diffstat (limited to 'usr.bin/printf')
-rw-r--r--usr.bin/printf/printf.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/usr.bin/printf/printf.c b/usr.bin/printf/printf.c
index 03e0dee..1151855 100644
--- a/usr.bin/printf/printf.c
+++ b/usr.bin/printf/printf.c
@@ -102,7 +102,7 @@ int
main(int argc, char *argv[])
{
size_t len;
- int ch, chopped, end, rval;
+ int chopped, end, rval;
char *format, *fmt, *start;
#ifndef SHELL
@@ -111,15 +111,15 @@ main(int argc, char *argv[])
#ifdef SHELL
optreset = 1; optind = 1; opterr = 0; /* initialize getopt */
#endif
- while ((ch = getopt(argc, argv, "")) != -1)
- switch (ch) {
- case '?':
- default:
- usage();
- /* NOTREACHED */
- }
- argc -= optind;
- argv += optind;
+ /* Skip argv[0] which is the process name */
+ argv++;
+ argc--;
+
+ /* Need to accept/ignore "--" option. */
+ if (argc >= 1 && strcmp(*argv, "--") == 0) {
+ argc--;
+ argv++;
+ }
if (argc < 1) {
usage();
OpenPOWER on IntegriCloud