diff --git a/src/basic/string-util.c b/src/basic/string-util.c index 128aea99c0..17d35fe1a4 100644 --- a/src/basic/string-util.c +++ b/src/basic/string-util.c @@ -521,6 +521,19 @@ char* strshorten(char *s, size_t l) { return s; } +int strgrowpad0(char **s, size_t l) { + assert(s); + + char *q = realloc(*s, l); + if (!q) + return -ENOMEM; + *s = q; + + size_t sz = strlen(*s); + memzero(*s + sz, l - sz); + return 0; +} + char *strreplace(const char *text, const char *old_string, const char *new_string) { size_t l, old_len, new_len; char *t, *ret = NULL; diff --git a/src/basic/string-util.h b/src/basic/string-util.h index 1dd46f7f20..0703c848f0 100644 --- a/src/basic/string-util.h +++ b/src/basic/string-util.h @@ -152,6 +152,8 @@ char *cellescape(char *buf, size_t len, const char *s); char* strshorten(char *s, size_t l); +int strgrowpad0(char **s, size_t l); + char *strreplace(const char *text, const char *old_string, const char *new_string); char *strip_tab_ansi(char **ibuf, size_t *_isz, size_t highlight[2]);