GNU bug report logs -
#14115
[PATCH] echo: adding support for '--' in option parsing
Previous Next
Reported by: Hemmo Nieminen <hemmo.nieminen <at> iki.fi>
Date: Mon, 1 Apr 2013 15:18:01 UTC
Severity: normal
Tags: notabug, patch, wontfix
Done: Eric Blake <eblake <at> redhat.com>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your bug report
#14115: [PATCH] echo: adding support for '--' in option parsing
which was filed against the coreutils package, has been closed.
The explanation is attached below, along with your original report.
If you require more details, please reply to 14115 <at> debbugs.gnu.org.
--
14115: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=14115
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
[Message part 3 (text/plain, inline)]
tag 14115 notabug wontfix
thanks
On 04/01/2013 03:49 AM, Hemmo Nieminen wrote:
> A '--' can now be used to mark the end of echo's options that should be
> parsed. This makes it possible to e.g. print lines where the first
> argument matches some of echo's options (e.g. 'echo -- -e').
Sorry, such behavior would violate POSIX, which special-cases 'echo' as
one of the few utilities that MUST NOT interpret '--' specially. You
would end up breaking existing scripts that rely on POSIX semantics.
POSIX already admits that options to 'echo' are not portable, and that
you are better off using printf(1) if then thing you need to output
something that starts with a '-'.
I'm closing this bug as rejected, since we will not be applying the
patch; but you are free to continue discussing the issue.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
[signature.asc (application/pgp-signature, attachment)]
[Message part 5 (message/rfc822, inline)]
A '--' can now be used to mark the end of echo's options that should be
parsed. This makes it possible to e.g. print lines where the first
argument matches some of echo's options (e.g. 'echo -- -e').
---
src/echo.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/echo.c b/src/echo.c
index 58e6975..6f76d1b 100644
--- a/src/echo.c
+++ b/src/echo.c
@@ -39,7 +39,7 @@ usage (int status)
else
{
printf (_("\
-Usage: %s [SHORT-OPTION]... [STRING]...\n\
+Usage: %s [SHORT-OPTION]... [--] [STRING]...\n\
or: %s LONG-OPTION\n\
"), program_name, program_name);
fputs (_("\
@@ -59,6 +59,8 @@ Echo the STRING(s) to standard output.\n\
fputs (VERSION_OPTION_DESCRIPTION, stdout);
fputs (_("\
\n\
+A '--' can be used to mark the end of SHORT-OPTIONs.\n\
+\n\
If -e is in effect, the following sequences are recognized:\n\
\n\
"), stdout);
@@ -149,6 +151,12 @@ main (int argc, char **argv)
char const *temp = argv[0] + 1;
size_t i;
+ if (temp[0] == '-' && temp[1] == '\0') {
+ argc--;
+ argv++;
+ goto just_echo;
+ }
+
/* If it appears that we are handling options, then make sure that
all of the options specified are actually valid. Otherwise, the
string should just be echoed. */
--
1.8.2
This bug report was last modified 12 years and 112 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.