pair.c 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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 = malloc(sizeof(*pair));
  18. assert(pair);
  19. if (!pair)
  20. return NULL;
  21. // Initialize
  22. memset(pair, 0, sizeof(*pair));
  23. pair->name = faux_str_dup(name);
  24. pair->value = faux_str_dup(value);
  25. return pair;
  26. }
  27. void faux_pair_free(void *ptr) {
  28. faux_pair_t *pair = (faux_pair_t *)ptr;
  29. assert(pair);
  30. if (!pair)
  31. return;
  32. faux_str_free(pair->name);
  33. faux_str_free(pair->value);
  34. free(pair);
  35. }
  36. const char *faux_pair_name(const faux_pair_t *pair) {
  37. assert(pair);
  38. if (!pair)
  39. return NULL;
  40. return pair->name;
  41. }
  42. void faux_pair_set_name(faux_pair_t *pair, const char *name) {
  43. assert(pair);
  44. if (!pair)
  45. return;
  46. faux_str_free(pair->name);
  47. pair->name = faux_str_dup(name);
  48. }
  49. const char *faux_pair_value(const faux_pair_t *pair) {
  50. assert(pair);
  51. if (!pair)
  52. return NULL;
  53. return pair->value;
  54. }
  55. void faux_pair_set_value(faux_pair_t *pair, const char *value) {
  56. assert(pair);
  57. if (!pair)
  58. return;
  59. faux_str_free(pair->value);
  60. pair->value = faux_str_dup(value);
  61. }