Add uc_dstr_copy

This commit is contained in:
Nils O. Selåsdal
2013-12-05 01:24:41 +01:00
parent 9723a579cc
commit 565de6ace7
3 changed files with 58 additions and 0 deletions
+21
View File
@@ -17,6 +17,27 @@ void uc_dstr_destroy(struct DStr *str)
free(str->str);
}
int uc_dstr_copy(struct DStr *dest, const struct DStr *src)
{
char *s;
uc_dstr_init(dest);
if (src->allocated == 0) {
return 0;
}
s = uc_dstr_put(dest, src->len);
if (s == NULL) {
return -1;
}
//+1 to copy a potential nul terminator, uc_dstr_put
//guarantees we have room for it.
memcpy(s, src->str, UC_MIN(src->len + 1, src->allocated));
return 0;
}
size_t uc_dstr_available(const struct DStr *str)
{
return str->allocated - str->len;