Browse Source
We don't need them in common/json, since lightning-cli doesn't need these, but plugins want them. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>plugin-timeout-inc
Rusty Russell
6 years ago
committed by
Christian Decker
16 changed files with 89 additions and 60 deletions
@ -0,0 +1,46 @@ |
|||
#include <bitcoin/pubkey.h> |
|||
#include <bitcoin/short_channel_id.h> |
|||
#include <common/json_helpers.h> |
|||
#include <errno.h> |
|||
|
|||
bool json_to_bitcoin_amount(const char *buffer, const jsmntok_t *tok, |
|||
uint64_t *satoshi) |
|||
{ |
|||
char *end; |
|||
unsigned long btc, sat; |
|||
|
|||
btc = strtoul(buffer + tok->start, &end, 10); |
|||
if (btc == ULONG_MAX && errno == ERANGE) |
|||
return false; |
|||
if (end != buffer + tok->end) { |
|||
/* Expect always 8 decimal places. */ |
|||
if (*end != '.' || buffer + tok->end - end != 9) |
|||
return false; |
|||
sat = strtoul(end+1, &end, 10); |
|||
if (sat == ULONG_MAX && errno == ERANGE) |
|||
return false; |
|||
if (end != buffer + tok->end) |
|||
return false; |
|||
} else |
|||
sat = 0; |
|||
|
|||
*satoshi = btc * (uint64_t)100000000 + sat; |
|||
if (*satoshi != btc * (uint64_t)100000000 + sat) |
|||
return false; |
|||
|
|||
return true; |
|||
} |
|||
|
|||
bool json_to_pubkey(const char *buffer, const jsmntok_t *tok, |
|||
struct pubkey *pubkey) |
|||
{ |
|||
return pubkey_from_hexstr(buffer + tok->start, |
|||
tok->end - tok->start, pubkey); |
|||
} |
|||
|
|||
bool json_to_short_channel_id(const char *buffer, const jsmntok_t *tok, |
|||
struct short_channel_id *scid) |
|||
{ |
|||
return (short_channel_id_from_str(buffer + tok->start, |
|||
tok->end - tok->start, scid)); |
|||
} |
@ -0,0 +1,22 @@ |
|||
/* More specialized (bitcoin, lightning-specific) JSON helpers. */ |
|||
#ifndef LIGHTNING_COMMON_JSON_HELPERS_H |
|||
#define LIGHTNING_COMMON_JSON_HELPERS_H |
|||
#include "config.h" |
|||
#include <common/json.h> |
|||
|
|||
struct pubkey; |
|||
struct short_channel_id; |
|||
|
|||
/* Extract a pubkey from this */ |
|||
bool json_to_pubkey(const char *buffer, const jsmntok_t *tok, |
|||
struct pubkey *pubkey); |
|||
|
|||
/* Extract satoshis from this (may be a string, or a decimal number literal) */ |
|||
bool json_to_bitcoin_amount(const char *buffer, const jsmntok_t *tok, |
|||
uint64_t *satoshi); |
|||
|
|||
/* Extract a short_channel_id from this */ |
|||
bool json_to_short_channel_id(const char *buffer, const jsmntok_t *tok, |
|||
struct short_channel_id *scid); |
|||
|
|||
#endif /* LIGHTNING_COMMON_JSON_HELPERS_H */ |
Loading…
Reference in new issue