Fix compatibility back to Linux 2.6.15 and 2.4.32.
[sliver-openvswitch.git] / datapath / linux-2.4 / compat-2.4 / string.c
index e15c16b..4ccaa5a 100644 (file)
@@ -27,4 +27,29 @@ size_t strcspn(const char *s, const char *reject)
        return count;
 }
 EXPORT_SYMBOL(strcspn);
+
+/**
+ * strlcpy - Copy a %NUL terminated string into a sized buffer
+ * @dest: Where to copy the string to
+ * @src: Where to copy the string from
+ * @size: size of destination buffer
+ *
+ * Compatible with *BSD: the result is always a valid
+ * NUL-terminated string that fits in the buffer (unless,
+ * of course, the buffer size is zero). It does not pad
+ * out the result like strncpy() does.
+ */
+size_t strlcpy(char *dest, const char *src, size_t size)
+{
+        size_t ret = strlen(src);
+
+        if (size) {
+                size_t len = (ret >= size) ? size - 1 : ret;
+                memcpy(dest, src, len);
+                dest[len] = '\0';
+        }
+        return ret;
+}
+EXPORT_SYMBOL(strlcpy);
+
 #endif