hbase.c 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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. memset((char*)ptr + oldsize, 0, newsize - oldsize);
  26. }
  27. return ptr;
  28. }
  29. void* safe_calloc(size_t nmemb, size_t size) {
  30. ++g_alloc_cnt;
  31. void* ptr = calloc(nmemb, size);
  32. if (!ptr) {
  33. fprintf(stderr, "calloc failed!\n");
  34. exit(-1);
  35. }
  36. return ptr;
  37. }
  38. void* safe_zalloc(size_t size) {
  39. ++g_alloc_cnt;
  40. void* ptr = malloc(size);
  41. if (!ptr) {
  42. fprintf(stderr, "malloc failed!\n");
  43. exit(-1);
  44. }
  45. memset(ptr, 0, size);
  46. return ptr;
  47. }
  48. char* strupper(char* str) {
  49. char* p = str;
  50. while (*p != '\0') {
  51. if (*p >= 'a' && *p <= 'z') {
  52. *p &= ~0x20;
  53. }
  54. ++p;
  55. }
  56. return str;
  57. }
  58. char* strlower(char* str) {
  59. char* p = str;
  60. while (*p != '\0') {
  61. if (*p >= 'A' && *p <= 'Z') {
  62. *p |= 0x20;
  63. }
  64. ++p;
  65. }
  66. return str;
  67. }
  68. char* strreverse(char* str) {
  69. if (str == NULL) return NULL;
  70. char* b = str;
  71. char* e = str;
  72. while(*e) {++e;}
  73. --e;
  74. char tmp;
  75. while (e > b) {
  76. tmp = *e;
  77. *e = *b;
  78. *b = tmp;
  79. --e;
  80. ++b;
  81. }
  82. return str;
  83. }
  84. // n = sizeof(dest_buf)
  85. char* safe_strncpy(char* dest, const char* src, size_t n) {
  86. assert(dest != NULL && src != NULL);
  87. char* ret = dest;
  88. while (*src != '\0' && --n > 0) {
  89. *dest++ = *src++;
  90. }
  91. *dest = '\0';
  92. return ret;
  93. }
  94. // n = sizeof(dest_buf)
  95. char* safe_strncat(char* dest, const char* src, size_t n) {
  96. assert(dest != NULL && src != NULL);
  97. char* ret = dest;
  98. while (*dest) {++dest;--n;}
  99. while (*src != '\0' && --n > 0) {
  100. *dest++ = *src++;
  101. }
  102. *dest = '\0';
  103. return ret;
  104. }
  105. bool getboolean(const char* str) {
  106. if (str == NULL) return false;
  107. int len = strlen(str);
  108. if (len == 0) return false;
  109. switch (len) {
  110. case 1: return *str == '1' || *str == 'y' || *str == 'Y';
  111. case 2: return stricmp(str, "on") == 0;
  112. case 3: return stricmp(str, "yes") == 0;
  113. case 4: return stricmp(str, "true") == 0;
  114. case 6: return stricmp(str, "enable") == 0;
  115. default: return false;
  116. }
  117. }