ed: Add support for ! in w command - sbase - suckless unix tools | |
git clone git://git.suckless.org/sbase | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 0b4c2ceb2f4594cc9d5ca09e39fb57f6e4f82bfb | |
parent 53040766d1a09baa7412c73c9a93afac2bfd6acc | |
Author: Heiko Berges <[email protected]> | |
Date: Thu, 21 Sep 2023 14:56:58 +0200 | |
ed: Add support for ! in w command | |
When the file name begins with ! then the addressed buffer content is | |
piped to the name of the file that is considered a command that is | |
executed in a shell. | |
Diffstat: | |
M ed.c | 10 ++++++++-- | |
1 file changed, 8 insertions(+), 2 deletions(-) | |
--- | |
diff --git a/ed.c b/ed.c | |
@@ -626,8 +626,14 @@ dowrite(const char *fname, int trunc) | |
size_t bytecount = 0; | |
int i, line; | |
- if (!(fp = fopen(fname, (trunc) ? "w" : "a"))) | |
- error("input/output error"); | |
+ if(fname[0] == '!') { | |
+ fname++; | |
+ if((fp = popen(fname, "r")) == NULL) | |
+ error("Bad Exec"); | |
+ } else { | |
+ if ((fp = fopen(fname, "r")) == NULL) | |
+ error("cannot open input file"); | |
+ } | |
line = curln; | |
for (i = line1; i <= line2; ++i) { |