]> andersk Git - moira.git/commitdiff
define strlcpy/strlcat (if needed)
authordanw <danw>
Wed, 6 Oct 1999 03:04:02 +0000 (03:04 +0000)
committerdanw <danw>
Wed, 6 Oct 1999 03:04:02 +0000 (03:04 +0000)
lib/strs.c

index 8b3d3ceeb7b756f51eb83e68e34c3ba3377c8de4..36598ed2f7a2fff586b85b548fd295b4497ffc5d 100644 (file)
@@ -75,3 +75,43 @@ char *lowercase(char *s)
     }
   return s;
 }
+
+#ifndef HAVE_STRLCPY
+/* Copy as much of SRC will fit into a DST of size SIZE, always
+ * NUL-terminating. (Originally from OpenBSD.)
+ */
+size_t strlcpy(char *dst, const char *src, size_t size)
+{
+  size_t len = strlen(src);
+
+  if (len < size)
+    memcpy(dst, src, len + 1);
+  else
+    {
+      memcpy(dst, src, size - 1);
+      dst[size - 1] = '\0';
+    }
+  return len;
+}
+#endif
+
+#ifndef HAVE_STRLCAT
+/* Catenate as must of SRC will fit onto the end of DST, which is
+ * in a buffer of size SIZE, always NUL-terminating. (Originally
+ * from OpenBSD.)
+ */
+size_t strlcat(char *dst, const char *src, size_t size)
+{
+  size_t dlen = strlen(dst);
+  size_t slen = strlen(src);
+
+  if (dlen + slen < size)
+    memcpy(dst + dlen, src, slen + 1);
+  else
+    {
+      memcpy(dst + dlen, src, size - dlen - 1);
+      dst[size - 1] = '\0';
+    }
+  return dlen + slen;
+}
+#endif
This page took 0.125443 seconds and 5 git commands to generate.