X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=postlicyd%2Fquery.c;h=599b9ec213eb7eee288609f358530618be8542c2;hb=5c6356faa58d3109101e88ecfce207326d89ceab;hp=4a4ae9ca8a80e6fb75f19bf03341efe3f5a5b1eb;hpb=8950d42993b7148718f712b8d7e77aaa21ef14ce;p=apps%2Fpfixtools.git diff --git a/postlicyd/query.c b/postlicyd/query.c index 4a4ae9c..599b9ec 100644 --- a/postlicyd/query.c +++ b/postlicyd/query.c @@ -259,3 +259,24 @@ ssize_t query_format(char *dest, size_t len, const char *fmt, const query_t *que } return pos; } + +bool query_format_buffer(buffer_t *buf, const char *fmt, const query_t *query) +{ + buffer_ensure(buf, m_strlen(fmt) + 64); + + ssize_t size = array_free_space(*buf); + ssize_t format_size = query_format(array_end(*buf), + size, fmt, query); + if (format_size == -1) { + return false; + } else if (format_size > size) { + buffer_ensure(buf, format_size + 1); + query_format(array_end(*buf), + array_free_space(*buf), + fmt, query); + array_len(*buf) += format_size; + } else { + array_len(*buf) += format_size; + } + return true; +}