| 80 | } |
| 81 | |
| 82 | struct command_result *param_feerate_val(struct command *cmd, |
| 83 | const char *name, const char *buffer, |
| 84 | const jsmntok_t *tok, |
| 85 | u32 **feerate_per_kw) |
| 86 | { |
| 87 | jsmntok_t base = *tok; |
| 88 | enum feerate_style style; |
| 89 | unsigned int num; |
| 90 | |
| 91 | if (json_tok_endswith(buffer, tok, |
| 92 | feerate_style_name(FEERATE_PER_KBYTE))) { |
| 93 | style = FEERATE_PER_KBYTE; |
| 94 | base.end -= strlen(feerate_style_name(FEERATE_PER_KBYTE)); |
| 95 | } else if (json_tok_endswith(buffer, tok, |
| 96 | feerate_style_name(FEERATE_PER_KSIPA))) { |
| 97 | style = FEERATE_PER_KSIPA; |
| 98 | base.end -= strlen(feerate_style_name(FEERATE_PER_KSIPA)); |
| 99 | } else |
| 100 | style = FEERATE_PER_KBYTE; |
| 101 | |
| 102 | if (!json_to_number(buffer, &base, &num)) { |
| 103 | return command_fail(cmd, JSONRPC2_INVALID_PARAMS, |
| 104 | "'%s' should be an integer with optional perkw/perkb, not '%.*s'", |
| 105 | name, base.end - base.start, |
| 106 | buffer + base.start); |
| 107 | } |
| 108 | |
| 109 | *feerate_per_kw = tal(cmd, u32); |
| 110 | **feerate_per_kw = feerate_from_style(num, style); |
| 111 | if (**feerate_per_kw < FEERATE_FLOOR) |
| 112 | **feerate_per_kw = FEERATE_FLOOR; |
| 113 | return NULL; |
| 114 | } |
no test coverage detected