--- a/src/lib/str.c Wed May 27 23:57:48 2009 +0300
+++ b/src/lib/str.c Thu May 28 00:35:02 2009 +0300
@@ -185,21 +185,20 @@
/**
* Output the data for a single parameter
*/
-static err_t str_format_param (char **buf, size_t *buf_size, const char *name, const char *flags, str_format_cb func, void *arg)
+static err_t str_format_param (char **buf, size_t *buf_size, const char *name, const char *flags, str_format_cb func, void *arg, error_t *err)
{
const char *value;
ssize_t value_len = -1;
char flag;
bool use_quote = false;
- err_t err;
// look it up
- if ((err = func(name, &value, &value_len, arg)))
- return err;
+ if (func(name, &value, &value_len, arg, err))
+ return PUSH_ERROR(err, &str_errors, ERR_STR_FMT_VALUE);
// not found?
if (!value)
- return ERR_STR_FMT_NAME;
+ return SET_ERROR(err, &str_errors, ERR_STR_FMT_NAME);
// parse flags
while ((flag = *flags++)) {
@@ -212,7 +211,7 @@
default:
// unknown flag
- return ERR_STR_FMT_FLAG;
+ return SET_ERROR(err, &str_errors, ERR_STR_FMT_FLAG);
}
}