]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
include: add strlcat() implementation 2420/head
authorChristian Brauner <christian.brauner@ubuntu.com>
Wed, 20 Jun 2018 11:44:02 +0000 (13:44 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Wed, 20 Jun 2018 11:44:02 +0000 (13:44 +0200)
CC: Donghwa Jeong <dh48.jeong@samsung.com>
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
configure.ac
src/include/strlcat.c [new file with mode: 0644]
src/include/strlcat.h [new file with mode: 0644]

index 96dd6659400a07fade7fd9d6fb5b0781550e9038..c24f8f3ee99227f073ff44ebfae9c487e8f43bd2 100644 (file)
@@ -632,6 +632,10 @@ AC_CHECK_FUNCS([strlcpy],
        AM_CONDITIONAL(HAVE_STRLCPY, true)
        AC_DEFINE(HAVE_STRLCPY,1,[Have strlcpy]),
        AM_CONDITIONAL(HAVE_STRLCPY, false))
+AC_CHECK_FUNCS([strlcat],
+       AM_CONDITIONAL(HAVE_STRLCAT, true)
+       AC_DEFINE(HAVE_STRLCAT,1,[Have strlcat]),
+       AM_CONDITIONAL(HAVE_STRLCAT, false))
 
 # Check for some libraries
 AX_PTHREAD
diff --git a/src/include/strlcat.c b/src/include/strlcat.c
new file mode 100644 (file)
index 0000000..42fa3f3
--- /dev/null
@@ -0,0 +1,37 @@
+/* liblxcapi
+ *
+ * Copyright © 2018 Christian Brauner <christian@brauner.io>.
+ * Copyright © 2018 Canonical Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2, as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * This function has been copied from musl.
+ */
+
+#include <limits.h>
+#include <stdint.h>
+#include <string.h>
+
+#ifndef HAVE_STRLCPY
+#include "strlcpy.h"
+#endif
+
+size_t strlcat(char *d, const char *s, size_t n)
+{
+       size_t l = strnlen(d, n);
+       if (l == n)
+               return l + strlen(s);
+
+       return l + strlcpy(d + l, s, n - l);
+}
diff --git a/src/include/strlcat.h b/src/include/strlcat.h
new file mode 100644 (file)
index 0000000..1b51e00
--- /dev/null
@@ -0,0 +1,29 @@
+/* liblxcapi
+ *
+ * Copyright © 2018 Christian Brauner <christian@brauner.io>.
+ * Copyright © 2018 Canonical Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2, as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * This function has been copied from musl.
+ */
+
+#ifndef _STRLCAT_H
+#define _STRLCAT_H
+
+#include <stdio.h>
+
+extern size_t strlcat(char *d, const char *s, size_t n);
+
+#endif