On Fri, Oct 24, 2025 at 06:47:45PM +0200, Quentin Schulz wrote: > Hi Tom, > > On 10/24/25 6:02 PM, Tom Rini wrote: > > For nearly all commands in U-Boot the '?' variable is handled the same > > way with 0 meaning success, 1 meaning any failure. Explain this in the > > general rules section of the cmdline documentation (with a link to a > > counter example) and then remove the redundant wording from most > > commands. We retain a section about the return value in a number of > > places where we are doing something such as always returning a specific > > value or we have useful additional information to go along with the > > normal return codes. > > > > Signed-off-by: Tom Rini <[email protected]> > > --- > > Changes in v2: > > - Rewordings suggested by Quentin > > - After confirming that invalid syntax also always returns 1 and not -1, > > For example cmd/scmi.c do_scmi_set_proto() can return CMD_RET_USAGE which is > a -1 enum and the function returns an int, so I assume this would be > propagated properly? > > I don't have time today to check the cmd function call stack to see if it > is, but this seems odd to me.
I spent a while Tuesday trying to dig in to this. We always pass CMD_RET_USAGE internally, CMD_RET_USAGE is -1. I ended up getting stuck on where we actually set the '?' environment variable. I don't know if we have ever actually passed -1 to the shell. Testing things out in a real shell, "2" is the value of invalid invalid syntax for a command (e.g. /bin/bash --keyboardsmash;echo $?). -- Tom
signature.asc
Description: PGP signature

