mirror of
https://github.com/genodelabs/genode.git
synced 2025-04-08 11:55:24 +00:00
dde_linux: streamline strlcpy/strlcat implementations
This commit is contained in:
parent
ce414a5c5a
commit
44a8bec56a
@ -255,7 +255,7 @@ int snprintf(char *str, size_t size, const char *format, ...)
|
||||
size_t strlcpy(char *dest, const char *src, size_t size)
|
||||
{
|
||||
size_t ret = strlen(src);
|
||||
|
||||
|
||||
if (size) {
|
||||
size_t len = (ret >= size) ? size - 1 : ret;
|
||||
Genode::memcpy(dest, src, len);
|
||||
|
@ -215,19 +215,22 @@ int strcmp(const char *s1, const char *s2)
|
||||
size_t strlen(const char *s) { return Genode::strlen(s); }
|
||||
|
||||
|
||||
size_t strlcat(char *dest, const char *src, size_t dest_size)
|
||||
size_t strlcat(char *dest, const char *src, size_t count)
|
||||
{
|
||||
size_t len_d = strlen(dest);
|
||||
size_t len_s = strlen(src);
|
||||
size_t dsize = strlen(dest);
|
||||
size_t len = strlen(src);
|
||||
size_t res = dsize + len;
|
||||
|
||||
if (len_d > dest_size)
|
||||
return 0;
|
||||
/* This would be a bug */
|
||||
BUG_ON(dsize >= count);
|
||||
|
||||
size_t len = dest_size - len_d - 1;
|
||||
|
||||
memcpy(dest + len_d, src, len);
|
||||
dest[len_d + len] = 0;
|
||||
return len;
|
||||
dest += dsize;
|
||||
count -= dsize;
|
||||
if (len >= count)
|
||||
len = count-1;
|
||||
memcpy(dest, src, len);
|
||||
dest[len] = 0;
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
|
@ -119,7 +119,7 @@ char *strcpy(char *dst, const char *src)
|
||||
size_t strlcpy(char *dest, const char *src, size_t size)
|
||||
{
|
||||
size_t ret = strlen(src);
|
||||
|
||||
|
||||
if (size) {
|
||||
size_t len = (ret >= size) ? size - 1 : ret;
|
||||
Genode::memcpy(dest, src, len);
|
||||
|
Loading…
x
Reference in New Issue
Block a user