feat(lsm): add str copy_n functions

This commit is contained in:
Jef Roosens 2023-11-02 13:08:36 +01:00
parent afd18d3a37
commit 7a21bed2b2
Signed by: Jef Roosens
GPG key ID: B75D4F293C7052DB
2 changed files with 41 additions and 2 deletions

View file

@ -47,6 +47,20 @@ lsm_error lsm_str_init_copy(lsm_str **ptr, char *s) {
return lsm_error_ok;
}
lsm_error lsm_str_init_copy_n(lsm_str **ptr, char *s, uint64_t len) {
lsm_str *str = calloc(1, sizeof(lsm_str));
if (str == NULL) {
return lsm_error_failed_alloc;
}
lsm_str_overwrite_copy_n(str, s, len);
*ptr = str;
return lsm_error_ok;
}
void lsm_str_overwrite(lsm_str *str, char *s) {
str->len = strlen(s);
@ -59,8 +73,10 @@ void lsm_str_overwrite(lsm_str *str, char *s) {
}
lsm_error lsm_str_overwrite_copy(lsm_str *str, char *s) {
str->len = strlen(s);
return lsm_str_overwrite_copy_n(str, s, strlen(s));
}
lsm_error lsm_str_overwrite_copy_n(lsm_str *str, char *s, uint64_t len) {
if (str->len <= 8) {
memcpy(str->data.val, s, str->len);
} else {
@ -74,6 +90,8 @@ lsm_error lsm_str_overwrite_copy(lsm_str *str, char *s) {
str->data.ptr = buf;
}
str->len = len;
return lsm_error_ok;
}