From 4a7d377d160cd95c89acad2abaf08bc533ff02a8 Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Tue, 29 Sep 2026 08:15:36 -0300 Subject: A builtin that needs its argument, written bare to an exec, is EINVAL as through ctl Through a ctl the bare word was refused up front (EINVAL); through exec it ran, failed with EIO or asked for the argument. The exec now refuses it the same way before it runs. Co-Authored-By: Claude Opus 5.5 --- docs/fs.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'docs') diff --git a/docs/fs.md b/docs/fs.md index 84b27b1f..4b0214c3 100644 --- a/docs/fs.md +++ b/docs/fs.md @@ -262,7 +262,10 @@ refused here has done nothing. A line that then fails as it runs fails the write with the error the editor reports for it and the line, e.g. `Mount: already mounted "Mount peer /tmp/s"` (EIO), and `control message needs its argument "Save"` (EINVAL), for a builtin that would have asked at a prompt -(a `Save` on a scratch) rather than open one nobody is there to answer. The +(a `Save` on a scratch) rather than open one nobody is there to answer. A +builtin that means nothing without its argument (`Mount`, `Msg`, `Find`), +written bare to an `exec` or `/tagexec`, is refused the same way, `wrong +#args in control message "Mount"` (EINVAL), before it runs. The lines before a failing one have taken effect and those after it never run, which is what acme's ctl loop does (editors/acme/xfid.c:600-790). An error that only happens as the editor performs what a line asked for -- a `Save` -- cgit v1.3