|
Packit |
fcad23 |
/*
|
|
Packit |
fcad23 |
* Copyright © 2003 Sun Microsystems, Inc. All rights reserved.
|
|
Packit |
fcad23 |
* Use is subject to license terms specified in the COPYING file
|
|
Packit |
fcad23 |
* distributed with the Net-SNMP package.
|
|
Packit |
fcad23 |
*/
|
|
Packit |
fcad23 |
#include <net-snmp/net-snmp-config.h>
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
#if HAVE_STRING_H
|
|
Packit |
fcad23 |
#include <string.h>
|
|
Packit |
fcad23 |
#else
|
|
Packit |
fcad23 |
#include <strings.h>
|
|
Packit |
fcad23 |
#endif
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
#include <sys/types.h>
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
#include <net-snmp/library/system.h>
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
/*
|
|
Packit |
fcad23 |
* Copies src to the dest buffer. The copy will never overflow the dest buffer
|
|
Packit |
fcad23 |
* and dest will always be null terminated, len is the size of the dest buffer.
|
|
Packit |
fcad23 |
*
|
|
Packit |
fcad23 |
* Returns the length of the src buffer.
|
|
Packit |
fcad23 |
*/
|
|
Packit |
fcad23 |
size_t
|
|
Packit |
fcad23 |
strlcpy(char *dest, const char *src, size_t len)
|
|
Packit |
fcad23 |
{
|
|
Packit |
fcad23 |
size_t src_len = strlen(src);
|
|
Packit |
fcad23 |
size_t new_len;
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
if (len == 0) {
|
|
Packit |
fcad23 |
return (src_len);
|
|
Packit |
fcad23 |
}
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
if (src_len >= len) {
|
|
Packit |
fcad23 |
new_len = len - 1;
|
|
Packit |
fcad23 |
} else {
|
|
Packit |
fcad23 |
new_len = src_len;
|
|
Packit |
fcad23 |
}
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
memcpy(dest, src, new_len);
|
|
Packit |
fcad23 |
dest[new_len] = '\0';
|
|
Packit |
fcad23 |
return (src_len);
|
|
Packit |
fcad23 |
}
|