AmendHub

Download:

jcs

/

wikipedia

/

amendments

/

26

util: Add xstrndup


jcs made amendment 26 over 2 years ago
--- util.c Wed Aug 31 22:54:33 2022 +++ util.c Mon Sep 5 23:44:26 2022 @@ -300,6 +300,25 @@ xstrdup(const char *str, char *note) return cp; } +char * +xstrndup(const char *str, size_t maxlen, char *note) +{ + char *copy; + const char *cp; + size_t len; + + /* strnlen */ + for (cp = str; maxlen != 0 && *cp != '\0'; cp++, maxlen--) + ; + + len = (size_t)(cp - str); + copy = xmalloc(len + 1, note); + (void)memcpy(copy, str, len); + copy[len] = '\0'; + + return copy; +} + /* * String functions */ --- util.h Wed Aug 31 23:13:02 2022 +++ util.h Mon Sep 5 23:44:40 2022 @@ -97,6 +97,7 @@ void * xcalloc(size_t, size_t, char *note); void * xrealloc(void *src, size_t size); void * xreallocarray(void *, size_t, size_t); char * xstrdup(const char *, char *note); +char * xstrndup(const char *str, size_t maxlen, char *note); short getline(char *str, size_t len, char **ret); const char * ordinal(unsigned short n);