mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-11-16 12:34:45 +00:00
2003-03-18 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: AC_CHECK_FUNCS(strlcpy strlcat). * src/strlcat.c: New (extracted from pppd/utils.c). * src/strlcpy.c: New (extracted from pppd/utils.c). * Makefile.am: Add BSD_C_FILES, strlcat.c, strlcpy.c.
This commit is contained in:
@@ -1,3 +1,10 @@
|
|||||||
|
2003-03-18 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||||
|
|
||||||
|
* configure.ac: AC_CHECK_FUNCS(strlcpy strlcat).
|
||||||
|
* src/strlcat.c: New (extracted from pppd/utils.c).
|
||||||
|
* src/strlcpy.c: New (extracted from pppd/utils.c).
|
||||||
|
* Makefile.am: Add BSD_C_FILES, strlcat.c, strlcpy.c.
|
||||||
|
|
||||||
2003-03-06 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
2003-03-06 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||||
|
|
||||||
* configure.ac: Remove AC_CONFIG_AUX_DIR.
|
* configure.ac: Remove AC_CONFIG_AUX_DIR.
|
||||||
|
|||||||
@@ -133,7 +133,11 @@ LIBC_GLUE_C_FILES = src/__getpid.c src/__gettod.c src/__times.c \
|
|||||||
|
|
||||||
UNIX_LIBC_C_FILES = src/unixlibc.c src/hosterr.c
|
UNIX_LIBC_C_FILES = src/unixlibc.c src/hosterr.c
|
||||||
|
|
||||||
COMMON_C_FILES = src/gxx_wrappers.c src/printk.c $(BASE_FS_C_FILES) \
|
BSD_LIBC_C_FILES = src/strlcpy.c src/strlcat.c
|
||||||
|
|
||||||
|
COMMON_C_FILES = src/gxx_wrappers.c src/printk.c \
|
||||||
|
$(BSD_LIBC_C_FILES) \
|
||||||
|
$(BASE_FS_C_FILES) \
|
||||||
$(MALLOC_C_FILES) $(TERMIOS_C_FILES) $(ERROR_C_FILES) \
|
$(MALLOC_C_FILES) $(TERMIOS_C_FILES) $(ERROR_C_FILES) \
|
||||||
$(ASSOCIATION_C_FILES)
|
$(ASSOCIATION_C_FILES)
|
||||||
|
|
||||||
|
|||||||
@@ -71,6 +71,9 @@ AC_CHECK_DECLS([ECHOPRT],,,[#include <termios.h>])
|
|||||||
## BSD-ism, excluded from POSIX, but available on most platforms
|
## BSD-ism, excluded from POSIX, but available on most platforms
|
||||||
AC_CHECK_DECLS([sbrk],,,[#include <unistd.h>])
|
AC_CHECK_DECLS([sbrk],,,[#include <unistd.h>])
|
||||||
|
|
||||||
|
## Check if libc provides BSD's strlcpy/strlcat
|
||||||
|
AC_CHECK_FUNCS(strlcpy strlcat)
|
||||||
|
|
||||||
AM_CONDITIONAL([NEED_SYS_CDEFS_H],[test x"$NEED_SYS_CDEFS_H" = x"yes"])
|
AM_CONDITIONAL([NEED_SYS_CDEFS_H],[test x"$NEED_SYS_CDEFS_H" = x"yes"])
|
||||||
|
|
||||||
AM_CONFIG_HEADER([src/config.h])
|
AM_CONFIG_HEADER([src/config.h])
|
||||||
|
|||||||
41
cpukit/libcsupport/src/strlcat.c
Normal file
41
cpukit/libcsupport/src/strlcat.c
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* utils.c - various utility functions used in pppd.
|
||||||
|
*
|
||||||
|
* Copyright (c) 1999 The Australian National University.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms are permitted
|
||||||
|
* provided that the above copyright notice and this paragraph are
|
||||||
|
* duplicated in all such forms and that any documentation,
|
||||||
|
* advertising materials, and other materials related to such
|
||||||
|
* distribution and use acknowledge that the software was developed
|
||||||
|
* by the Australian National University. The name of the University
|
||||||
|
* may not be used to endorse or promote products derived from this
|
||||||
|
* software without specific prior written permission.
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
|
||||||
|
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#ifndef HAVE_STRLCAT
|
||||||
|
/*
|
||||||
|
* strlcat - like strcat/strncat, doesn't overflow destination buffer,
|
||||||
|
* always leaves destination null-terminated (for len > 0).
|
||||||
|
*/
|
||||||
|
size_t
|
||||||
|
strlcat(dest, src, len)
|
||||||
|
char *dest;
|
||||||
|
const char *src;
|
||||||
|
size_t len;
|
||||||
|
{
|
||||||
|
size_t dlen = strlen(dest);
|
||||||
|
|
||||||
|
return dlen + strlcpy(dest + dlen, src, (len > dlen? len - dlen: 0));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
49
cpukit/libcsupport/src/strlcpy.c
Normal file
49
cpukit/libcsupport/src/strlcpy.c
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* utils.c - various utility functions used in pppd.
|
||||||
|
*
|
||||||
|
* Copyright (c) 1999 The Australian National University.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms are permitted
|
||||||
|
* provided that the above copyright notice and this paragraph are
|
||||||
|
* duplicated in all such forms and that any documentation,
|
||||||
|
* advertising materials, and other materials related to such
|
||||||
|
* distribution and use acknowledge that the software was developed
|
||||||
|
* by the Australian National University. The name of the University
|
||||||
|
* may not be used to endorse or promote products derived from this
|
||||||
|
* software without specific prior written permission.
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
|
||||||
|
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#ifndef HAVE_STRLCPY
|
||||||
|
/*
|
||||||
|
* strlcpy - like strcpy/strncpy, doesn't overflow destination buffer,
|
||||||
|
* always leaves destination null-terminated (for len > 0).
|
||||||
|
*/
|
||||||
|
size_t
|
||||||
|
strlcpy(dest, src, len)
|
||||||
|
char *dest;
|
||||||
|
const char *src;
|
||||||
|
size_t len;
|
||||||
|
{
|
||||||
|
size_t ret = strlen(src);
|
||||||
|
|
||||||
|
if (len != 0) {
|
||||||
|
if (ret < len)
|
||||||
|
strcpy(dest, src);
|
||||||
|
else {
|
||||||
|
strncpy(dest, src, len - 1);
|
||||||
|
dest[len-1] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user