ksession.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /** @file ksession.h
  2. *
  3. * @brief Klish session
  4. */
  5. #ifndef _klish_ksession_h
  6. #define _klish_ksession_h
  7. #include <klish/kscheme.h>
  8. #include <klish/kpath.h>
  9. #include <klish/kpargv.h>
  10. #include <klish/kexec.h>
  11. #define KSESSION_STARTING_ENTRY "main"
  12. typedef struct ksession_s ksession_t;
  13. C_DECL_BEGIN
  14. ksession_t *ksession_new(const kscheme_t *scheme, const char *start_entry);
  15. void ksession_free(ksession_t *session);
  16. const kscheme_t *ksession_scheme(const ksession_t *session);
  17. kpath_t *ksession_path(const ksession_t *session);
  18. // Done
  19. bool_t ksession_done(const ksession_t *session);
  20. bool_t ksession_set_done(ksession_t *session, bool_t done);
  21. kpargv_t *ksession_parse_line(ksession_t *session, const faux_argv_t *argv,
  22. kpargv_purpose_e purpose);
  23. faux_list_t *ksession_split_pipes(const char *raw_line, faux_error_t *error);
  24. kpargv_t *ksession_parse_for_completion(ksession_t *session,
  25. const char *raw_line);
  26. kexec_t *ksession_parse_for_exec(ksession_t *session, const char *raw_line,
  27. faux_error_t *error);
  28. kexec_t *ksession_parse_for_local_exec(ksession_t *session,
  29. const kentry_t *entry, const kpargv_t *parent_pargv);
  30. bool_t ksession_exec_locally(ksession_t *session, const kentry_t *entry,
  31. kpargv_t *parent_pargv, int *retcode, const char **out);
  32. C_DECL_END
  33. #endif // _klish_ksession_h