src/lib/str.c
branchnew-lib-errors
changeset 218 5229a5d098b2
parent 216 a10ba529ae39
--- 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);
     
         }
     }