pair.c 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /** @file pair.c
  2. * Ini file pairs key/value.
  3. */
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <assert.h>
  7. #include "private.h"
  8. #include "faux/str.h"
  9. #include "faux/ini.h"
  10. int faux_pair_compare(const void *first, const void *second) {
  11. const faux_pair_t *f = (const faux_pair_t *)first;
  12. const faux_pair_t *s = (const faux_pair_t *)second;
  13. return strcmp(f->name, s->name);
  14. }
  15. faux_pair_t *faux_pair_new(const char *name, const char *value) {
  16. faux_pair_t *pair = NULL;
  17. pair = faux_zmalloc(sizeof(*pair));
  18. assert(pair);
  19. if (!pair)
  20. return NULL;
  21. // Initialize
  22. pair->name = faux_str_dup(name);
  23. pair->value = faux_str_dup(value);
  24. return pair;
  25. }
  26. void faux_pair_free(void *ptr) {
  27. faux_pair_t *pair = (faux_pair_t *)ptr;
  28. assert(pair);
  29. if (!pair)
  30. return;
  31. faux_str_free(pair->name);
  32. faux_str_free(pair->value);
  33. faux_free(pair);
  34. }
  35. const char *faux_pair_name(const faux_pair_t *pair) {
  36. assert(pair);
  37. if (!pair)
  38. return NULL;
  39. return pair->name;
  40. }
  41. void faux_pair_set_name(faux_pair_t *pair, const char *name) {
  42. assert(pair);
  43. if (!pair)
  44. return;
  45. faux_str_free(pair->name);
  46. pair->name = faux_str_dup(name);
  47. }
  48. const char *faux_pair_value(const faux_pair_t *pair) {
  49. assert(pair);
  50. if (!pair)
  51. return NULL;
  52. return pair->value;
  53. }
  54. void faux_pair_set_value(faux_pair_t *pair, const char *value) {
  55. assert(pair);
  56. if (!pair)
  57. return;
  58. faux_str_free(pair->value);
  59. pair->value = faux_str_dup(value);
  60. }