diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2019-04-30 18:56:33 +0200 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2019-05-30 21:08:51 +0900 |
commit | 7e4831d2963e9c239e91cae45a3409b039f003cf (patch) | |
tree | 7aa69977128cff99a124ec78bd4db18e26751e07 | |
parent | 961189af2a6969bddae4d3759defff5027b5701a (diff) | |
download | systemd-7e4831d2963e9c239e91cae45a3409b039f003cf.tar.gz |
util: introduce strnpcpy() and strnscpy()
-rw-r--r-- | src/basic/strxcpyx.c | 23 | ||||
-rw-r--r-- | src/basic/strxcpyx.h | 2 |
2 files changed, 19 insertions, 6 deletions
diff --git a/src/basic/strxcpyx.c b/src/basic/strxcpyx.c index 9210277cde..ef6d3fa324 100644 --- a/src/basic/strxcpyx.c +++ b/src/basic/strxcpyx.c @@ -17,16 +17,13 @@ #include "strxcpyx.h" -size_t strpcpy(char **dest, size_t size, const char *src) { - size_t len; - +size_t strnpcpy(char **dest, size_t size, const char *src, size_t len) { assert(dest); assert(src); if (size == 0) return 0; - len = strlen(src); if (len >= size) { if (size > 1) *dest = mempcpy(*dest, src, size-1); @@ -40,6 +37,13 @@ size_t strpcpy(char **dest, size_t size, const char *src) { return size; } +size_t strpcpy(char **dest, size_t size, const char *src) { + assert(dest); + assert(src); + + return strnpcpy(dest, size, src, strlen(src)); +} + size_t strpcpyf(char **dest, size_t size, const char *src, ...) { va_list va; int i; @@ -76,14 +80,21 @@ size_t strpcpyl(char **dest, size_t size, const char *src, ...) { return size; } -size_t strscpy(char *dest, size_t size, const char *src) { +size_t strnscpy(char *dest, size_t size, const char *src, size_t len) { char *s; assert(dest); assert(src); s = dest; - return strpcpy(&s, size, src); + return strnpcpy(&s, size, src, len); +} + +size_t strscpy(char *dest, size_t size, const char *src) { + assert(dest); + assert(src); + + return strnscpy(dest, size, src, strlen(src)); } size_t strscpyl(char *dest, size_t size, const char *src, ...) { diff --git a/src/basic/strxcpyx.h b/src/basic/strxcpyx.h index 0f2b7499ba..9b66841246 100644 --- a/src/basic/strxcpyx.h +++ b/src/basic/strxcpyx.h @@ -5,8 +5,10 @@ #include "macro.h" +size_t strnpcpy(char **dest, size_t size, const char *src, size_t len); size_t strpcpy(char **dest, size_t size, const char *src); size_t strpcpyf(char **dest, size_t size, const char *src, ...) _printf_(3, 4); size_t strpcpyl(char **dest, size_t size, const char *src, ...) _sentinel_; +size_t strnscpy(char *dest, size_t size, const char *src, size_t len); size_t strscpy(char *dest, size_t size, const char *src); size_t strscpyl(char *dest, size_t size, const char *src, ...) _sentinel_; |