packages feed

eventlog-socket-0.1.2.0: cbits/eventlog_socket/string.c

#include "./string.h"

HIDDEN char *es_strdup(const char *const str) {
  if (str == NULL) {
    errno = EINVAL;
    return NULL;
  }
  char *str_dup = malloc(strlen(str) + 1);
  if (str_dup == NULL) {
    return NULL; // `malloc` sets errno.
  }
  strcpy(str_dup, str);
  return str_dup;
}

HIDDEN char *es_strndup(const size_t str_len, const char str[str_len + 1]) {
  if (str == NULL) {
    errno = EINVAL;
    return NULL;
  }
  char *str_dup = malloc(str_len + 1);
  if (str_dup == NULL) {
    return NULL; // `malloc` sets errno.
  }
  strncpy(str_dup, str, str_len);
  str_dup[str_len] = '\0';
  return str_dup;
}