summaryrefslogtreecommitdiff
path: root/src/gallium/auxiliary/util/u_string.h
diff options
context:
space:
mode:
authorBen Skeggs <skeggsb@gmail.com>2008-08-11 16:07:56 +1000
committerBen Skeggs <skeggsb@gmail.com>2008-08-11 16:07:56 +1000
commitf56eda6a85912dee9eef9099f6023c6bab05a41a (patch)
tree068107b1bcf1aec4847c059e18a3e5f3a0b3c303 /src/gallium/auxiliary/util/u_string.h
parentce8e846ffea8e1a11b8ae4ba05a7386e7c34cc9f (diff)
parent5549d35db5323829702099af6e53a8dd7c451524 (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.h37
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