Date: Sun, 30 Jul 2017 22:08:56 +0000 From: bugzilla-noreply@freebsd.org To: freebsd-standards@FreeBSD.org Subject: [Bug 220587] /bin/sh Incorrect options handling Message-ID: <bug-220587-15-cP83i1EuiM@https.bugs.freebsd.org/bugzilla/> In-Reply-To: <bug-220587-15@https.bugs.freebsd.org/bugzilla/>
index | next in thread | previous in thread | raw e-mail
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=220587 --- Comment #5 from Jilles Tjoelker <jilles@FreeBSD.org> --- I think this is the right direction but I do have some things that need to be changed. So that installworld does not fail, the new directory should be added to the appropriate file in etc/mtree/ (BSD.tests.dist in this case). Perhaps it should be named "invocation" instead of "options", since tests for a few set options are under "execution" already. Also, I would like this split up in two patches, one that adds some testcases that already work (and will not be broken by the change) and one that fixes the bug and adds testcases that fail with the previous version. The variable saw_minus_c would be more consistently named cflag. I suppose it is OK to start using <stdbool.h> at this point. A -c without a command_string operand (as in "sh -c" or "sh -c -s") should not be ignored, since this causes commands to be read from unexpected sources. (This is one situation for a testcase that already passes.) The current code also rejects -cc, even if a command_string operand is given. Accepting this, as your patch does, seems consistent with other shells. The -f option is better suited than the -m option as a "dummy" option since -m may cause the shell to stop itself in certain situations. The -a option is also suitable. I like to be able to run testcases with various other shells, where possible. To help with this, avoid echoing things starting with '-' or containing '\' and do not assume that $- contains only the expected characters in the order sh currently happens to put them. For example, ${SH} -f -c -a 'echo $-:$0:$@' -foo -bar | grep -qx "fa:-foo:-bar" could be fixed as case `${SH} -f -c -a 'echo $-:$-:$0:$@' -foo -bar` in *f*:*a*:-foo:-bar) : ;; *) echo bad ;; esac (I have not used $() here since shells/heirloom-sh may pass a few related tests, even though it will not pass this one.) -- You are receiving this mail because: You are the assignee for the bug.help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-220587-15-cP83i1EuiM>
