forked from enlightenment/efl
efl exe - map some "well known" exit codes to specific errnos
This commit is contained in:
parent
6fbf6d6c67
commit
78d7fded5d
|
@ -195,7 +195,39 @@ _exe_exit_eval(Eo *obj, Efl_Exe_Data *pd)
|
||||||
pd->promise = NULL;
|
pd->promise = NULL;
|
||||||
if ((exit_code != 0) && (!(efl_task_flags_get(obj) &
|
if ((exit_code != 0) && (!(efl_task_flags_get(obj) &
|
||||||
EFL_TASK_FLAGS_NO_EXIT_CODE_ERROR)))
|
EFL_TASK_FLAGS_NO_EXIT_CODE_ERROR)))
|
||||||
eina_promise_reject(p, exit_code + 1000000);
|
{
|
||||||
|
Eina_Error err = exit_code + 1000000;
|
||||||
|
// Code Meaning Example Comments
|
||||||
|
// ---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
// 1 Catchall for general errors let "var1 = 1/0" Miscellaneous errors, such as "divide by zero" and other impermissible operations
|
||||||
|
// 2 Misuse of shell builtins empty_function() {} Missing keyword or command, or permission problem (and diff return code on a failed binary file comparison).
|
||||||
|
// 126 Command invoked cannot execute /dev/null Permission problem or command is not an executable
|
||||||
|
// 127 "command not found" illegal_command Possible problem with $PATH or a typo
|
||||||
|
// 128 Invalid argument to exit exit 3.14159 exit takes only integer args in the range 0 - 255 (see first footnote)
|
||||||
|
// 128+n Fatal error signal "n" kill -9 $PPID $? returns 137 (128 + 9)
|
||||||
|
// 130 Script terminated by Control-C Ctl-C Control-C is fatal error signal 2, (130 = 128 + 2, see above)
|
||||||
|
// 255* Exit status out of range exit -1 exit takes only integer args in the range 0 - 255
|
||||||
|
//
|
||||||
|
// According to the above table, exit codes 1 - 2,
|
||||||
|
// 126 - 165, and 255 [1] have special meanings, and
|
||||||
|
// should therefore be avoided for user-specified exit
|
||||||
|
// parameters. Ending a script with exit 127 would
|
||||||
|
// certainly cause confusion when troubleshooting (is
|
||||||
|
// the error code a "command not found" or a user-defined
|
||||||
|
// one?). However, many scripts use an exit 1 as a general
|
||||||
|
// bailout-upon-error. Since exit code 1 signifies so many
|
||||||
|
// possible errors, it is not particularly useful in
|
||||||
|
// debugging.
|
||||||
|
if (exit_code == 1 ) err = EBADF;
|
||||||
|
else if (exit_code == 2 ) err = EDOM;
|
||||||
|
else if (exit_code == 126) err = ENOEXEC;
|
||||||
|
else if (exit_code == 127) err = ENOENT;
|
||||||
|
else if (exit_code == 128) err = EINVAL;
|
||||||
|
else if (exit_code == 129) err = EFAULT;
|
||||||
|
else if (exit_code == 130) err = EINTR;
|
||||||
|
else if ((exit_code >= 131) && (exit_code <= 165)) err = EFAULT;
|
||||||
|
eina_promise_reject(p, err);
|
||||||
|
}
|
||||||
else eina_promise_resolve(p, eina_value_int_init(exit_code));
|
else eina_promise_resolve(p, eina_value_int_init(exit_code));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue