diff options
author | Ralf Corsepius <ralf.corsepius@rtems.org> | 2003-03-25 20:48:35 +0000 |
---|---|---|
committer | Ralf Corsepius <ralf.corsepius@rtems.org> | 2003-03-25 20:48:35 +0000 |
commit | 34b5bdb6269544fb6ee8099db0fcf4402afaa1c0 (patch) | |
tree | 246e07f8e83028fdb4d08d076b5c7f5d34155fd1 /cpukit/libcsupport/src/strlcpy.c | |
parent | 2003-03-25 Joel Sherrill <joel@OARcorp.com> (diff) | |
download | rtems-34b5bdb6269544fb6ee8099db0fcf4402afaa1c0.tar.bz2 |
Merger from rtems-4-6-branch.
Diffstat (limited to 'cpukit/libcsupport/src/strlcpy.c')
-rw-r--r-- | cpukit/libcsupport/src/strlcpy.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/cpukit/libcsupport/src/strlcpy.c b/cpukit/libcsupport/src/strlcpy.c new file mode 100644 index 0000000000..2773e877cb --- /dev/null +++ b/cpukit/libcsupport/src/strlcpy.c @@ -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 |