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);