kparg.c 813 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /** @file kparg.c
  2. * @brief Parsed ARGument
  3. */
  4. #include <assert.h>
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <string.h>
  8. #include <faux/str.h>
  9. #include <klish/khelper.h>
  10. #include <klish/kentry.h>
  11. #include <klish/kpargv.h> // Contains parg and pargv
  12. struct kparg_s {
  13. const kentry_t *entry;
  14. char *value;
  15. };
  16. // Entry
  17. KGET(parg, const kentry_t *, entry);
  18. // Value
  19. KSET_STR(parg, value);
  20. KGET_STR(parg, value);
  21. kparg_t *kparg_new(const kentry_t *entry, const char *value)
  22. {
  23. kparg_t *parg = NULL;
  24. if (!entry)
  25. return NULL;
  26. parg = faux_zmalloc(sizeof(*parg));
  27. assert(parg);
  28. if (!parg)
  29. return NULL;
  30. // Initialize
  31. parg->entry = entry;
  32. kparg_set_value(parg, value);
  33. return parg;
  34. }
  35. void kparg_free(kparg_t *parg)
  36. {
  37. if (!parg)
  38. return;
  39. faux_str_free(parg->value);
  40. faux_free(parg);
  41. }