hbase.c 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. #include "hbase.h"
  2. #include <assert.h>
  3. #include <stdio.h>
  4. #include <string.h>
  5. unsigned int g_alloc_cnt = 0;
  6. unsigned int g_free_cnt = 0;
  7. void* safe_malloc(size_t size) {
  8. ++g_alloc_cnt;
  9. void* ptr = malloc(size);
  10. if (!ptr) {
  11. fprintf(stderr, "malloc failed!\n");
  12. exit(-1);
  13. }
  14. return ptr;
  15. }
  16. void* safe_realloc(void* oldptr, size_t newsize, size_t oldsize) {
  17. ++g_alloc_cnt;
  18. ++g_free_cnt;
  19. void* ptr = realloc(oldptr, newsize);
  20. if (!ptr) {
  21. fprintf(stderr, "realloc failed!\n");
  22. exit(-1);
  23. }
  24. if (newsize > oldsize) {
  25. int addsize = newsize - oldsize;
  26. memset((char*)ptr + addsize, 0, addsize);
  27. }
  28. return ptr;
  29. }
  30. void* safe_calloc(size_t nmemb, size_t size) {
  31. ++g_alloc_cnt;
  32. void* ptr = calloc(nmemb, size);
  33. if (!ptr) {
  34. fprintf(stderr, "calloc failed!\n");
  35. exit(-1);
  36. }
  37. return ptr;
  38. }
  39. void* safe_zalloc(size_t size) {
  40. ++g_alloc_cnt;
  41. void* ptr = malloc(size);
  42. if (!ptr) {
  43. fprintf(stderr, "malloc failed!\n");
  44. exit(-1);
  45. }
  46. memset(ptr, 0, size);
  47. return ptr;
  48. }
  49. char* strupper(char* str) {
  50. char* p = str;
  51. while (*p != '\0') {
  52. if (*p >= 'a' && *p <= 'z') {
  53. *p &= ~0x20;
  54. }
  55. ++p;
  56. }
  57. return str;
  58. }
  59. char* strlower(char* str) {
  60. char* p = str;
  61. while (*p != '\0') {
  62. if (*p >= 'A' && *p <= 'Z') {
  63. *p |= 0x20;
  64. }
  65. ++p;
  66. }
  67. return str;
  68. }
  69. char* strreverse(char* str) {
  70. if (str == NULL) return NULL;
  71. char* b = str;
  72. char* e = str;
  73. while(*e) {++e;}
  74. --e;
  75. char tmp;
  76. while (e > b) {
  77. tmp = *e;
  78. *e = *b;
  79. *b = tmp;
  80. --e;
  81. ++b;
  82. }
  83. return str;
  84. }
  85. // n = sizeof(dest_buf)
  86. char* safe_strncpy(char* dest, const char* src, size_t n) {
  87. assert(dest != NULL && src != NULL);
  88. char* ret = dest;
  89. while (*src != '\0' && --n > 0) {
  90. *dest++ = *src++;
  91. }
  92. *dest = '\0';
  93. return ret;
  94. }
  95. // n = sizeof(dest_buf)
  96. char* safe_strncat(char* dest, const char* src, size_t n) {
  97. assert(dest != NULL && src != NULL);
  98. char* ret = dest;
  99. while (*dest) {++dest;--n;}
  100. while (*src != '\0' && --n > 0) {
  101. *dest++ = *src++;
  102. }
  103. *dest = '\0';
  104. return ret;
  105. }