From: Adam Dickmeiss Date: Fri, 10 Jun 2011 12:30:32 +0000 (+0200) Subject: Fix return values for cql_to_ccl_buf X-Git-Tag: v4.2.2~2 X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=commitdiff_plain;h=211fa151f2239cfecd08a212e00be8d27f7a35a7;hp=02d2f2409c58ab49ab535758d85d70fae0f651f4 Fix return values for cql_to_ccl_buf --- diff --git a/include/yaz/cql.h b/include/yaz/cql.h index 148a9e0..60d9d5c 100644 --- a/include/yaz/cql.h +++ b/include/yaz/cql.h @@ -264,7 +264,9 @@ void cql_to_ccl_stdio(struct cql_node *cn, FILE *f); \param cn CQL node (tree) \param out buffer \param max size of buffer (max chars to write) - \returns length of resulting buffer + \retval 0 OK + \retval -1 conversion error + \retval -2 buffer too small (truncated) */ YAZ_EXPORT int cql_to_ccl_buf(struct cql_node *cn, char *out, int max); diff --git a/src/cql2ccl.c b/src/cql2ccl.c index 90ee5d6..48bb284 100644 --- a/src/cql2ccl.c +++ b/src/cql2ccl.c @@ -3,7 +3,7 @@ * See the file LICENSE for details. */ /** - * \file xcqlutil.c + * \file cql2ccl.c * \brief Implements CQL to XCQL conversion. */ #if HAVE_CONFIG_H @@ -21,8 +21,8 @@ static int cql_to_ccl_r(struct cql_node *cn, void *client_data); static void pr_term(struct cql_node *cn, - void (*pr)(const char *buf, void *client_data), - void *client_data) + void (*pr)(const char *buf, void *client_data), + void *client_data) { while (cn) { @@ -111,7 +111,6 @@ static int node(struct cql_node *cn, pr(split_op, client_data); pr(" ", client_data); } - return -1; } return 0; } @@ -171,13 +170,16 @@ void cql_to_ccl_stdio(struct cql_node *cn, FILE *f) int cql_to_ccl_buf(struct cql_node *cn, char *out, int max) { struct cql_buf_write_info info; + int r; info.off = 0; info.max = max; info.buf = out; - cql_to_ccl(cn, cql_buf_write_handler, &info); + r = cql_to_ccl(cn, cql_buf_write_handler, &info); if (info.off >= 0) info.buf[info.off] = '\0'; - return info.off; + else + return -2; /* buffer overflow */ + return r; } /*