mirror of
https://github.com/genodelabs/genode.git
synced 2025-06-01 23:20:55 +00:00
dde_linux: streamline strlcpy/strlcat implementations
This commit is contained in:
parent
ce414a5c5a
commit
44a8bec56a
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user