pair.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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. {
  12. const faux_pair_t *f = (const faux_pair_t *)first;
  13. const faux_pair_t *s = (const faux_pair_t *)second;
  14. return strcmp(f->name, s->name);
  15. }
  16. int faux_pair_kcompare(const void *key, const void *list_item)
  17. {
  18. const char *f = (const char *)key;
  19. const faux_pair_t *s = (const faux_pair_t *)list_item;
  20. return strcmp(f, s->name);
  21. }
  22. faux_pair_t *faux_pair_new(const char *name, const char *value)
  23. {
  24. faux_pair_t *pair = NULL;
  25. pair = faux_zmalloc(sizeof(*pair));
  26. assert(pair);
  27. if (!pair)
  28. return NULL;
  29. // Initialize
  30. pair->name = faux_str_dup(name);
  31. pair->value = faux_str_dup(value);
  32. return pair;
  33. }
  34. void faux_pair_free(void *ptr)
  35. {
  36. faux_pair_t *pair = (faux_pair_t *)ptr;
  37. if (!pair)
  38. return;
  39. faux_str_free(pair->name);
  40. faux_str_free(pair->value);
  41. faux_free(pair);
  42. }
  43. const char *faux_pair_name(const faux_pair_t *pair)
  44. {
  45. assert(pair);
  46. if (!pair)
  47. return NULL;
  48. return pair->name;
  49. }
  50. void faux_pair_set_name(faux_pair_t *pair, const char *name)
  51. {
  52. assert(pair);
  53. if (!pair)
  54. return;
  55. faux_str_free(pair->name);
  56. pair->name = faux_str_dup(name);
  57. }
  58. const char *faux_pair_value(const faux_pair_t *pair)
  59. {
  60. assert(pair);
  61. if (!pair)
  62. return NULL;
  63. return pair->value;
  64. }
  65. void faux_pair_set_value(faux_pair_t *pair, const char *value)
  66. {
  67. assert(pair);
  68. if (!pair)
  69. return;
  70. faux_str_free(pair->value);
  71. pair->value = faux_str_dup(value);
  72. }