pair.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. assert(pair);
  38. if (!pair)
  39. return;
  40. faux_str_free(pair->name);
  41. faux_str_free(pair->value);
  42. faux_free(pair);
  43. }
  44. const char *faux_pair_name(const faux_pair_t *pair)
  45. {
  46. assert(pair);
  47. if (!pair)
  48. return NULL;
  49. return pair->name;
  50. }
  51. void faux_pair_set_name(faux_pair_t *pair, const char *name)
  52. {
  53. assert(pair);
  54. if (!pair)
  55. return;
  56. faux_str_free(pair->name);
  57. pair->name = faux_str_dup(name);
  58. }
  59. const char *faux_pair_value(const faux_pair_t *pair)
  60. {
  61. assert(pair);
  62. if (!pair)
  63. return NULL;
  64. return pair->value;
  65. }
  66. void faux_pair_set_value(faux_pair_t *pair, const char *value)
  67. {
  68. assert(pair);
  69. if (!pair)
  70. return;
  71. faux_str_free(pair->value);
  72. pair->value = faux_str_dup(value);
  73. }