diff options
author | Ben Skeggs <skeggsb@gmail.com> | 2008-08-11 16:07:56 +1000 |
---|---|---|
committer | Ben Skeggs <skeggsb@gmail.com> | 2008-08-11 16:07:56 +1000 |
commit | f56eda6a85912dee9eef9099f6023c6bab05a41a (patch) | |
tree | 068107b1bcf1aec4847c059e18a3e5f3a0b3c303 /src/gallium/auxiliary/util/u_string.h | |
parent | ce8e846ffea8e1a11b8ae4ba05a7386e7c34cc9f (diff) | |
parent | 5549d35db5323829702099af6e53a8dd7c451524 (diff) |
Merge remote branch 'upstream/gallium-0.1' into nouveau-gallium-0.1
Diffstat (limited to 'src/gallium/auxiliary/util/u_string.h')
-rw-r--r-- | src/gallium/auxiliary/util/u_string.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/util/u_string.h b/src/gallium/auxiliary/util/u_string.h index 73c88d87b4..abc3232b49 100644 --- a/src/gallium/auxiliary/util/u_string.h +++ b/src/gallium/auxiliary/util/u_string.h @@ -176,6 +176,43 @@ util_memmove(void *dest, const void *src, size_t n) #endif +/** + * Printable string buffer + */ +struct util_strbuf +{ + char *str; + char *ptr; + size_t left; +}; + + +static INLINE void +util_strbuf_init(struct util_strbuf *sbuf, char *str, size_t size) +{ + sbuf->str = str; + sbuf->str[0] = 0; + sbuf->ptr = sbuf->str; + sbuf->left = size; +} + + +static INLINE void +util_strbuf_printf(struct util_strbuf *sbuf, const char *format, ...) +{ + if(sbuf->left > 1) { + size_t written; + va_list ap; + va_start(ap, format); + written = util_vsnprintf(sbuf->ptr, sbuf->left, format, ap); + va_end(ap); + sbuf->ptr += written; + sbuf->left -= written; + } +} + + + #ifdef __cplusplus } #endif |