[PATCH 1/6] fc -s: refuse multiple events instead of ignoring

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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(+)

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]
 	 */
-- 
2.30.2

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux