Introduction
Introduction Statistics Contact Development Disclaimer Help
Ensure commands are followed by a blank - sbase - suckless unix tools
git clone git://git.suckless.org/sbase
Log
Files
Refs
README
LICENSE
---
commit 95b96039755e86cf263bae342ed719e751bf0c1b
parent 67a00c86f97f672c9fbceba9ad7ac1f747cca10b
Author: Rene Kita <[email protected]>
Date: Tue, 26 Sep 2023 08:17:00 +0200
Ensure commands are followed by a blank
POSIX.1-2017 demands in Shell & Utilities under 'Commands in ed':
The e, E, f, r, and w commands shall take an optional file parameter,
separated from the command letter by one or more <blank> characters.
Ensure at least one <blank> character (as defined for the POSIX locale)
is present or error out.
Signed-off-by: Rene Kita <[email protected]>
Diffstat:
M ed.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+), 0 deletions(-)
---
diff --git a/ed.c b/ed.c
@@ -474,6 +474,24 @@ skipblank(void)
back(c);
}
+static void
+ensureblank(void)
+{
+ char c;
+
+ switch ((c = input())) {
+ case ' ':
+ case '\t':
+ skipblank();
+ case '\n':
+ back(c);
+ case EOF:
+ break;
+ default:
+ error("unknown command");
+ }
+}
+
static int
getnum(void)
{
@@ -1145,10 +1163,12 @@ repeat:
case 'w':
trunc = 1;
case 'W':
+ ensureblank();
deflines(nextln(0), lastln);
dowrite(getfname(cmd), trunc);
break;
case 'r':
+ ensureblank();
if (nlines > 1)
goto bad_address;
deflines(lastln, lastln);
@@ -1260,6 +1280,7 @@ repeat:
quit();
break;
case 'f':
+ ensureblank();
if (nlines > 0)
goto unexpected;
if (back(input()) != '\n')
@@ -1271,6 +1292,7 @@ repeat:
case 'E':
modflag = 0;
case 'e':
+ ensureblank();
if (nlines > 0)
goto unexpected;
if (modflag)
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.