diff --git a/include/QF/dstring.h b/include/QF/dstring.h index e43bb1055..0f03f720a 100644 --- a/include/QF/dstring.h +++ b/include/QF/dstring.h @@ -52,6 +52,7 @@ void dstring_clear (dstring_t *dstr); // String-specific functions dstring_t *dstring_newstr (void); void dstring_appendstr (dstring_t *dstr, const char *str); +void dstring_appendsubstr (dstring_t *dstr, const char *str, unsigned int len); void dstring_insertstr (dstring_t *dstr, const char *str, unsigned int pos); void dstring_clearstr (dstring_t *dstr); diff --git a/libs/util/dstring.c b/libs/util/dstring.c index 0ebeb2673..1914c857b 100644 --- a/libs/util/dstring.c +++ b/libs/util/dstring.c @@ -123,6 +123,15 @@ dstring_appendstr (dstring_t *dstr, const char *str) { strcat(dstr->str, str); } +void +dstring_appendsubstr (dstring_t *dstr, const char *str, unsigned int len) { + if (len > strlen (str)) + len = strlen (str); + dstr->size += len; + dstring_adjust(dstr); + strncat(dstr->str, str, len); +} + void dstring_insertstr (dstring_t *dstr, const char *str, unsigned int pos) {