kparg.c 769 B

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