[lxc-devel] [lxc/master] include: add strlcat() implementation

brauner on Github lxc-bot at linuxcontainers.org
Wed Jun 20 11:45:20 UTC 2018


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 408 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20180620/91993246/attachment.bin>
-------------- next part --------------
From 9a5e7ac4a9fe963349717592a5f642f213ab5dae Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Wed, 20 Jun 2018 13:44:02 +0200
Subject: [PATCH] include: add strlcat() implementation

CC: Donghwa Jeong <dh48.jeong at samsung.com>
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
 configure.ac          |  4 ++++
 src/include/strlcat.c | 37 +++++++++++++++++++++++++++++++++++++
 src/include/strlcat.h | 29 +++++++++++++++++++++++++++++
 3 files changed, 70 insertions(+)
 create mode 100644 src/include/strlcat.c
 create mode 100644 src/include/strlcat.h

diff --git a/configure.ac b/configure.ac
index 96dd66594..c24f8f3ee 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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
index 000000000..42fa3f32c
--- /dev/null
+++ b/src/include/strlcat.c
@@ -0,0 +1,37 @@
+/* liblxcapi
+ *
+ * Copyright © 2018 Christian Brauner <christian at 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
index 000000000..1b51e00e6
--- /dev/null
+++ b/src/include/strlcat.h
@@ -0,0 +1,29 @@
+/* liblxcapi
+ *
+ * Copyright © 2018 Christian Brauner <christian at 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


More information about the lxc-devel mailing list