include: add strlcat() implementation

CC: Donghwa Jeong <dh48.jeong@samsung.com> Signed-off-by: 's avatarChristian Brauner <christian.brauner@ubuntu.com>
parent 6787abb5
...@@ -684,6 +684,10 @@ AC_CHECK_FUNCS([strlcpy], ...@@ -684,6 +684,10 @@ AC_CHECK_FUNCS([strlcpy],
AM_CONDITIONAL(HAVE_STRLCPY, true) AM_CONDITIONAL(HAVE_STRLCPY, true)
AC_DEFINE(HAVE_STRLCPY,1,[Have strlcpy]), AC_DEFINE(HAVE_STRLCPY,1,[Have strlcpy]),
AM_CONDITIONAL(HAVE_STRLCPY, false)) 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 # Check for some libraries
AX_PTHREAD AX_PTHREAD
......
/* 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);
}
/* 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
...@@ -152,6 +152,10 @@ if !HAVE_STRLCPY ...@@ -152,6 +152,10 @@ if !HAVE_STRLCPY
liblxc_la_SOURCES += ../include/strlcpy.c ../include/strlcpy.h liblxc_la_SOURCES += ../include/strlcpy.c ../include/strlcpy.h
endif endif
if !HAVE_STRLCAT
liblxc_la_SOURCES += ../include/strlcat.c ../include/strlcat.h
endif
if !HAVE_GETGRGID_R if !HAVE_GETGRGID_R
liblxc_la_SOURCES += ../include/getgrgid_r.c ../include/getgrgid_r.h liblxc_la_SOURCES += ../include/getgrgid_r.c ../include/getgrgid_r.h
endif endif
...@@ -312,6 +316,10 @@ if !HAVE_STRLCPY ...@@ -312,6 +316,10 @@ if !HAVE_STRLCPY
init_lxc_static_SOURCES += ../include/strlcpy.c ../include/strlcpy.h init_lxc_static_SOURCES += ../include/strlcpy.c ../include/strlcpy.h
endif endif
if !HAVE_STRLCAT
init_lxc_static_SOURCES += ../include/strlcat.c ../include/strlcat.h
endif
if !HAVE_GETGRGID_R if !HAVE_GETGRGID_R
liblxc_la_SOURCES += ../include/getgrgid_r.c ../include/getgrgid_r.h liblxc_la_SOURCES += ../include/getgrgid_r.c ../include/getgrgid_r.h
endif endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment