ksession.c 909 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /** @file ksession.c
  2. */
  3. #include <assert.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <faux/list.h>
  8. #include <klish/khelper.h>
  9. #include <klish/kcommand.h>
  10. #include <klish/kparam.h>
  11. #include <klish/ksession.h>
  12. struct ksession_s {
  13. kscheme_t *scheme;
  14. kpath_t *path;
  15. };
  16. // Scheme
  17. KGET(session, kscheme_t *, scheme);
  18. // Path
  19. KGET(session, kpath_t *, path);
  20. ksession_t *ksession_new()
  21. {
  22. ksession_t *session = NULL;
  23. session = faux_zmalloc(sizeof(*session));
  24. assert(session);
  25. if (!session)
  26. return NULL;
  27. // Parsed arguments list
  28. session->pargs = faux_list_new(FAUX_LIST_UNSORTED, FAUX_LIST_NONUNIQUE,
  29. NULL, NULL, (void (*)(void *))kparg_free);
  30. assert(session->pargs);
  31. return session;
  32. }
  33. void ksession_free(ksession_t *session)
  34. {
  35. if (!session)
  36. return;
  37. faux_list_free(session->pargs);
  38. free(session);
  39. }
  40. bool_t ksession_parse_command(const kscheme_t scheme,