kexec.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /** @file kexec.h
  2. *
  3. * @brief Klish exec
  4. */
  5. #ifndef _klish_kexec_h
  6. #define _klish_kexec_h
  7. #include <faux/list.h>
  8. #include <faux/buf.h>
  9. #include <klish/kcontext.h>
  10. #include <klish/ksession.h>
  11. typedef struct kexec_s kexec_t;
  12. typedef faux_list_node_t kexec_contexts_node_t;
  13. C_DECL_BEGIN
  14. kexec_t *kexec_new(ksession_t *session, kcontext_type_e type);
  15. void kexec_free(kexec_t *exec);
  16. // Dry-run
  17. bool_t kexec_dry_run(const kexec_t *exec);
  18. bool_t kexec_set_dry_run(kexec_t *exec, bool_t dry_run);
  19. // STDIN
  20. int kexec_stdin(const kexec_t *exec);
  21. bool_t kexec_set_stdin(kexec_t *exec, int stdin);
  22. // STDOUT
  23. int kexec_stdout(const kexec_t *exec);
  24. bool_t kexec_set_stdout(kexec_t *exec, int stdout);
  25. // STDERR
  26. int kexec_stderr(const kexec_t *exec);
  27. bool_t kexec_set_stderr(kexec_t *exec, int stderr);
  28. // BUFIN
  29. faux_buf_t *kexec_bufin(const kexec_t *exec);
  30. bool_t kexec_set_bufin(kexec_t *exec, faux_buf_t *bufin);
  31. // BUFOUT
  32. faux_buf_t *kexec_bufout(const kexec_t *exec);
  33. bool_t kexec_set_bufout(kexec_t *exec, faux_buf_t *bufout);
  34. // BUFERR
  35. faux_buf_t *kexec_buferr(const kexec_t *exec);
  36. bool_t kexec_set_buferr(kexec_t *exec, faux_buf_t *buferr);
  37. // Return code
  38. bool_t kexec_done(const kexec_t *exec);
  39. bool_t kexec_retcode(const kexec_t *exec, int *status);
  40. // Saved path
  41. kpath_t *kexec_saved_path(const kexec_t *exec);
  42. // Line
  43. const char *kexec_line(const kexec_t *exec);
  44. bool_t kexec_set_line(kexec_t *exec, const char *line);
  45. // CONTEXTs
  46. bool_t kexec_add_contexts(kexec_t *exec, kcontext_t *context);
  47. ssize_t kexec_contexts_len(const kexec_t *exec);
  48. bool_t kexec_contexts_is_empty(const kexec_t *exec);
  49. kexec_contexts_node_t *kexec_contexts_iter(const kexec_t *exec);
  50. kcontext_t *kexec_contexts_each(kexec_contexts_node_t **iter);
  51. bool_t kexec_continue_command_execution(kexec_t *exec, pid_t pid, int wstatus);
  52. bool_t kexec_exec(kexec_t *exec);
  53. bool_t kexec_need_stdin(const kexec_t *exec);
  54. bool_t kexec_interactive(const kexec_t *exec);
  55. bool_t kexec_set_winsize(kexec_t *exec);
  56. const kaction_t *kexec_current_action(const kexec_t *exec);
  57. C_DECL_END
  58. #endif // _klish_kexec_h