src/lib/str.c
branchnew-lib-errors
changeset 218 5229a5d098b2
parent 216 a10ba529ae39
equal deleted inserted replaced
217:7728d6ec3abf 218:5229a5d098b2
   183 }
   183 }
   184 
   184 
   185 /**
   185 /**
   186  * Output the data for a single parameter
   186  * Output the data for a single parameter
   187  */
   187  */
   188 static err_t str_format_param (char **buf, size_t *buf_size, const char *name, const char *flags, str_format_cb func, void *arg)
   188 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)
   189 {
   189 {
   190     const char *value;
   190     const char *value;
   191     ssize_t value_len = -1;
   191     ssize_t value_len = -1;
   192     char flag;
   192     char flag;
   193     bool use_quote = false;
   193     bool use_quote = false;
   194     err_t err;
       
   195     
   194     
   196     // look it up
   195     // look it up
   197     if ((err = func(name, &value, &value_len, arg)))
   196     if (func(name, &value, &value_len, arg, err))
   198         return err;
   197         return PUSH_ERROR(err, &str_errors, ERR_STR_FMT_VALUE);
   199     
   198     
   200     // not found?
   199     // not found?
   201     if (!value)
   200     if (!value)
   202         return ERR_STR_FMT_NAME;
   201         return SET_ERROR(err, &str_errors, ERR_STR_FMT_NAME);
   203     
   202     
   204     // parse flags
   203     // parse flags
   205     while ((flag = *flags++)) {
   204     while ((flag = *flags++)) {
   206         switch (flag) {
   205         switch (flag) {
   207             case 'r':
   206             case 'r':
   210 
   209 
   211                 break;
   210                 break;
   212 
   211 
   213             default:
   212             default:
   214                 // unknown flag
   213                 // unknown flag
   215                 return ERR_STR_FMT_FLAG;
   214                 return SET_ERROR(err, &str_errors, ERR_STR_FMT_FLAG);
   216     
   215     
   217         }
   216         }
   218     }
   217     }
   219 
   218 
   220     // output value
   219     // output value