From e67c4e5744edfe865137f9699a3bd4be368b5b6f Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Thu, 19 Oct 2017 06:28:23 +0200 Subject: [PATCH] MINOR: ist: add ist0() to add a trailing zero to a string. This function modifies the string to add a zero after the end, and returns the start pointer. The purpose is to use it on strings extracted by parsers from larger strings cut with delimiters that are not important and can be destroyed. It allows any such string to be used with regular string functions. It's also convenient to use with printf() to show data extracted from writable areas. --- include/common/ist.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/include/common/ist.h b/include/common/ist.h index c57aa8977..bd98ab008 100644 --- a/include/common/ist.h +++ b/include/common/ist.h @@ -98,6 +98,21 @@ static inline struct ist ist2(const void *ptr, size_t len) return (struct ist){ .ptr = (char *)ptr, .len = len }; } +/* This function MODIFIES the string to add a zero AFTER the end, and returns + * the start pointer. The purpose is to use it on strings extracted by parsers + * from larger strings cut with delimiters that are not important and can be + * destroyed. It allows any such string to be used with regular string + * functions. It's also convenient to use with printf() to show data extracted + * from writable areas. The caller is obviously responsible for ensuring that + * the string is valid and that the first byte past the end is writable. If + * these conditions cannot be satisfied, use istpad() below instead. + */ +static inline char *ist0(struct ist ist) +{ + ist.ptr[ist.len] = 0; + return ist.ptr; +} + /* returns the length of the string */ static inline size_t istlen(const struct ist ist) {