]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
include: add strlcat() implementation
authorChristian Brauner <christian.brauner@ubuntu.com>
Wed, 20 Jun 2018 11:44:02 +0000 (13:44 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Mon, 10 Dec 2018 13:21:15 +0000 (14:21 +0100)
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]
src/lxc/Makefile.am

index d58c84c66c3bf4d2d0176c6d89983858187aa2b9..649b57afd134cf110203933ea0b70045787b8881 100644 (file)
@@ -684,6 +684,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
index 065bf058288687f3cb8b9f1cfe69bd51c3aa6f23..60400d4010328fc2fb606073f473a3501faa5ed1 100644 (file)
@@ -152,6 +152,10 @@ if !HAVE_STRLCPY
 liblxc_la_SOURCES += ../include/strlcpy.c ../include/strlcpy.h
 endif
 
+if !HAVE_STRLCAT
+liblxc_la_SOURCES += ../include/strlcat.c ../include/strlcat.h
+endif
+
 if !HAVE_GETGRGID_R
 liblxc_la_SOURCES += ../include/getgrgid_r.c ../include/getgrgid_r.h
 endif
@@ -312,6 +316,10 @@ if !HAVE_STRLCPY
 init_lxc_static_SOURCES += ../include/strlcpy.c ../include/strlcpy.h
 endif
 
+if !HAVE_STRLCAT
+init_lxc_static_SOURCES += ../include/strlcat.c ../include/strlcat.h
+endif
+
 if !HAVE_GETGRGID_R
 liblxc_la_SOURCES += ../include/getgrgid_r.c ../include/getgrgid_r.h
 endif