summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/utils.c23
-rw-r--r--common/utils.h3
2 files changed, 26 insertions, 0 deletions
diff --git a/common/utils.c b/common/utils.c
index b2b3768..bd2bf1f 100644
--- a/common/utils.c
+++ b/common/utils.c
@@ -29,6 +29,29 @@
#include "utils.h"
+#ifndef HAVE_STPCPY
+/**
+ * Copy characters from one string into another
+ *
+ * @note: The strings should not overlap, as the behavior is undefined.
+ *
+ * @s1: The source string.
+ * @s2: The destination string.
+ *
+ * @return a pointer to the terminating `\0' character of @s1,
+ * or NULL if @s1 or @s2 is NULL.
+ */
+char *stpcpy(char * s1, const char * s2)
+{
+ if (s1 == NULL || s2 == NULL)
+ return NULL;
+
+ strcpy(s1, s2);
+
+ return s1 + strlen(s2);
+}
+#endif
+
/**
* Concatenate strings into a newly allocated string
*
diff --git a/common/utils.h b/common/utils.h
index 129f974..441d188 100644
--- a/common/utils.h
+++ b/common/utils.h
@@ -22,6 +22,9 @@
#ifndef __UTILS_H
#define __UTILS_H
+#ifndef HAVE_STPCPY
+char *stpcpy(char * s1, const char * s2);
+#endif
char *string_concat(const char *str, ...);
#endif