Skip to content

Commit

Permalink
include: add strlcat() implementation
Browse files Browse the repository at this point in the history
CC: Donghwa Jeong <dh48.jeong@samsung.com>
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
  • Loading branch information
Christian Brauner committed Jun 22, 2018
1 parent f6b5182 commit 3eab444
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 0 deletions.
4 changes: 4 additions & 0 deletions configure.ac
Expand Up @@ -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
Expand Down
37 changes: 37 additions & 0 deletions src/include/strlcat.c
@@ -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);
}
29 changes: 29 additions & 0 deletions src/include/strlcat.h
@@ -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

0 comments on commit 3eab444

Please sign in to comment.