pd->promise = NULL;
if ((exit_code != 0) && (!(efl_task_flags_get(obj) &
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));
}
}