memutil.c 925 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include <string.h>
  2. #include "memcpy.h"
  3. #include "src/main.h"
  4. #include <stdlib.h>
  5. void
  6. str_redup(char **str, const char *newstr)
  7. {
  8. size_t len;
  9. if (!newstr) {
  10. if (*str) free(*str);
  11. *str = NULL;
  12. return;
  13. }
  14. len = strlen(newstr) + 1;
  15. *str = (char *) my_realloc(*str, len);
  16. egg_memcpy(*str, newstr, len);
  17. }
  18. char *
  19. strdup(const char *entry)
  20. {
  21. size_t len = strlen(entry) + 1;
  22. char *target = (char *) my_calloc(1, len);
  23. if (target == NULL) return NULL;
  24. return (char *) egg_memcpy(target, entry, len);
  25. }
  26. void *my_calloc(size_t nmemb, size_t size)
  27. {
  28. void *ptr = calloc(nmemb, size);
  29. if (ptr == NULL)
  30. fatal("Cannot allocate memory", 0);
  31. return ptr;
  32. }
  33. void *my_realloc(void *ptr, size_t size)
  34. {
  35. void *x = realloc(ptr, size);
  36. if (x == NULL && size > 0)
  37. fatal("Cannot allocate memory", 0);
  38. return x;
  39. }