set -q: Return 255 if no variable name was passed

Previously this strictly returned the number of unset variables. So if
no variable was given, it would return *true*, which is highly
suspect.
This commit is contained in:
Fabian Homborg
2021-08-09 18:01:44 +02:00
parent 35c53a94b5
commit eee38836cf
3 changed files with 13 additions and 1 deletions

View File

@@ -466,6 +466,10 @@ static int builtin_set_query(const wchar_t *cmd, set_cmd_opts_t &opts, int argc,
int retval = 0;
env_mode_flags_t scope = compute_scope(opts);
// No variables given, this is an error.
// 255 is the maximum return code we allow.
if (argc == 0) return 255;
for (int i = 0; i < argc; i++) {
auto split = split_var_and_indexes(argv[i], scope, parser.vars(), streams);
if (!split) {