Message ID | 96c003b30fc95cdf5aed3162901abaa9b89430e2.1675798292.git.nabijaczleweli@nabijaczleweli.xyz (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Herbert Xu |
Headers | show |
Series | [1/6] fc -s: refuse multiple events instead of ignoring | expand |
On Tue, Feb 07, 2023 at 08:33:25PM +0100, наб wrote: > The POSIX SYNOPSIS (and our manual which steals it verbatim) says: > fc -s [old=new] [first] > and, indeed, we only use the first non-= argument > instead of enforcing the usage, which is confusing. > > bash: > 2025 ls > 2026 id > $ fc -s ls=who 2025 2026 > who > nabijaczleweli pts/2 2023-02-07 17:36 (192.168.1.109) > nabijaczleweli pts/3 2023-02-07 17:38 (192.168.1.109) > nabijaczleweli pts/4 2023-02-07 16:58 (192.168.1.109) > nabijaczleweli pts/5 2023-02-07 17:45 (192.168.1.109) > ksh93: > 240 id > 241 ls > $ fc -s ls=who 241 240 > ksh: hist: -e - requires single argument > yash: > 2 ls > 3 id > $ fc -s ls=who 2 3 > fc: too many operands are specified > zsh: > 2 id > 3 ls > tarta% fc -s ls=who 3 2 > fc: bad option: -s > dash (before): > 1 ls > 2 id > $ fc -s ls=who 1 2 > who > nabijaczleweli pts/2 2023-02-07 17:36 (192.168.1.109) > nabijaczleweli pts/3 2023-02-07 17:38 (192.168.1.109) > nabijaczleweli pts/4 2023-02-07 16:58 (192.168.1.109) > nabijaczleweli pts/5 2023-02-07 17:45 (192.168.1.109) > dash (after): > 1 ls > 2 id > $ fc -s ls=who 1 2 > src/dash: 3: fc: -s takes one history argument > > Adapted-from: NetBSD src bin/sh/histedit.c rev 1.38 by aymeric@ > --- > Here's a quick few that fix my report and a couple of the ones you list > at the end of that thread. > > src/histedit.c | 7 +++++++ > 1 file changed, 7 insertions(+) All applied. Thanks.
diff --git a/src/histedit.c b/src/histedit.c index f5c90ab..fc87283 100644 --- a/src/histedit.c +++ b/src/histedit.c @@ -296,6 +296,13 @@ histcmd(int argc, char **argv) *repl++ = '\0'; argc--, argv++; } + + /* + * If -s is specified, accept only one operand + */ + if (sflg && argc >= 2) + sh_error("too many args"); + /* * determine [first] and [last] */