efl task - support flag to ignore exit code errors for future resolve

This commit is contained in:
Carsten Haitzler 2018-04-04 02:34:10 +09:00
parent 6e308e6039
commit 6fbf6d6c67
3 changed files with 12 additions and 7 deletions

View File

@ -193,8 +193,10 @@ _exe_exit_eval(Eo *obj, Efl_Exe_Data *pd)
Eina_Promise *p = pd->promise;
int exit_code = efl_task_exit_code_get(obj);
pd->promise = NULL;
if (exit_code != 0) eina_promise_reject(p, exit_code + 1000000);
else eina_promise_resolve(p, eina_value_int_init(0));
if ((exit_code != 0) && (!(efl_task_flags_get(obj) &
EFL_TASK_FLAGS_NO_EXIT_CODE_ERROR)))
eina_promise_reject(p, exit_code + 1000000);
else eina_promise_resolve(p, eina_value_int_init(exit_code));
}
}
}

View File

@ -12,9 +12,10 @@ enum Efl.Task.Priority {
enum Efl.Task.Flags {
[[ ]]
none = 0,
use_stdin = 1,
use_stdout = 2
none = 0,
use_stdin = 1,
use_stdout = 2,
no_exit_code_error = 4,
}
class Efl.Task (Efl.Object, Efl.Io.Reader, Efl.Io.Writer, Efl.Io.Closer)

View File

@ -323,8 +323,10 @@ _thread_exit_eval(Eo *obj, Efl_Thread_Data *pd)
Eina_Promise *p = pd->promise;
int exit_code = efl_task_exit_code_get(obj);
pd->promise = NULL;
if (exit_code != 0) eina_promise_reject(p, exit_code + 1000000);
else eina_promise_resolve(p, eina_value_int_init(0));
if ((exit_code != 0) && (!(efl_task_flags_get(obj) &
EFL_TASK_FLAGS_NO_EXIT_CODE_ERROR)))
eina_promise_reject(p, exit_code + 1000000);
else eina_promise_resolve(p, eina_value_int_init(exit_code));
}
}
}