]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/basic/strxcpyx.c
1 /* SPDX-License-Identifier: LGPL-2.1+ */
4 * Concatenates/copies strings. In any case, terminates in all cases
5 * with '\0' and moves the @dest pointer forward to the added '\0'.
6 * Returns the remaining size, and 0 if the string was truncated.
8 * Due to the intended usage, these helpers silently noop invocations
9 * having zero size. This is technically an exception to the above
10 * statement "terminates in all cases". It's unexpected for such calls to
11 * occur outside of a loop where this is the preferred behavior.
20 size_t strpcpy(char **dest
, size_t size
, const char *src
) {
32 *dest
= mempcpy(*dest
, src
, size
-1);
35 *dest
= mempcpy(*dest
, src
, len
);
43 size_t strpcpyf(char **dest
, size_t size
, const char *src
, ...) {
54 i
= vsnprintf(*dest
, size
, src
, va
);
64 size_t strpcpyl(char **dest
, size_t size
, const char *src
, ...) {
72 size
= strpcpy(dest
, size
, src
);
73 src
= va_arg(va
, char *);
79 size_t strscpy(char *dest
, size_t size
, const char *src
) {
86 return strpcpy(&s
, size
, src
);
89 size_t strscpyl(char *dest
, size_t size
, const char *src
, ...) {
99 size
= strpcpy(&s
, size
, src
);
100 src
= va_arg(va
, char *);