예제 #1
0
파일: string.c 프로젝트: uzur/chck
static inline char*
ccopy(const char *str, size_t len)
{
   assert(str);
   char *cpy = chck_calloc_add_of(len, 1);
   return (cpy ? memcpy(cpy, str, len) : NULL);
}
예제 #2
0
파일: buffer.c 프로젝트: uzur/chck
bool
chck_buffer_read_string_of_type(char **str, size_t *out_len, enum chck_bits bits, struct chck_buffer *buf)
{
   assert(buf && str);
   *str = NULL;

   if (out_len)
      *out_len = 0;

   size_t len = 0;
   if (unlikely(!chck_buffer_read_int(&len, bits, buf)))
      return false;

   if (out_len)
      *out_len = len;

   if (len <= 0)
      return true;

   if (!(*str = chck_calloc_add_of(len, 1)))
      return false;

   if (unlikely(chck_buffer_read(*str, 1, len, buf) != len)) {
      free(*str);
      return false;
   }

   return true;
}
예제 #3
0
파일: xdg.c 프로젝트: Cloudef/chck
static inline char*
ccopy(const char *str)
{
   assert(str);
   const size_t size = strlen(str);
   char *cpy = chck_calloc_add_of(size, 1);
   return (cpy ? memcpy(cpy, str, size) : NULL);
}