kexec.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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 <klish/kcontext.h>
  9. typedef struct kexec_s kexec_t;
  10. typedef faux_list_node_t kexec_contexts_node_t;
  11. C_DECL_BEGIN
  12. kexec_t *kexec_new(void);
  13. void kexec_free(kexec_t *exec);
  14. // Dry-run
  15. bool_t kexec_dry_run(const kexec_t *exec);
  16. bool_t kexec_set_dry_run(kexec_t *exec, bool_t dry_run);
  17. // STDIN
  18. int kexec_stdin(const kexec_t *exec);
  19. bool_t kexec_set_stdin(kexec_t *exec, int stdin);
  20. // STDOUT
  21. int kexec_stdout(const kexec_t *exec);
  22. bool_t kexec_set_stdout(kexec_t *exec, int stdout);
  23. // STDERR
  24. int kexec_stderr(const kexec_t *exec);
  25. bool_t kexec_set_stderr(kexec_t *exec, int stderr);
  26. // CONTEXTs
  27. bool_t kexec_add_contexts(kexec_t *exec, kcontext_t *context);
  28. ssize_t kexec_contexts_len(const kexec_t *exec);
  29. bool_t kexec_contexts_is_empty(const kexec_t *exec);
  30. kexec_contexts_node_t *kexec_contexts_iter(const kexec_t *exec);
  31. kcontext_t *kexec_contexts_each(kexec_contexts_node_t **iter);
  32. bool_t kexec_exec(kexec_t *exec);
  33. C_DECL_END
  34. #endif // _klish_kexec_h