From 97517acbaee0871f593c27c4a8821b609e4fd44c Mon Sep 17 00:00:00 2001 From: Dmitriy Gerasimov <naeper@demlabs.net> Date: Wed, 22 May 2019 17:01:58 +0700 Subject: [PATCH] [+] Macros for scanf and printf calls. New node address representation like 0123::4567::89ab::cdef [*] Some fixes in ledger --- dap_chain_common.h | 18 ++++++++++++++++++ dap_chain_ledger.c | 6 +++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/dap_chain_common.h b/dap_chain_common.h index c6935d4..2b91016 100755 --- a/dap_chain_common.h +++ b/dap_chain_common.h @@ -63,6 +63,24 @@ typedef union dap_chain_node_addr{ uint8_t raw[sizeof(uint64_t)]; // Access to selected octects } DAP_ALIGN_PACKED dap_chain_node_addr_t; +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +#define NODE_ADDR_FP_STR "%04hX::%04hX::%04hX::%04hX" +#define NODE_ADDR_FP_ARGS(a) a->words[2],a->words[3],a->words[0],a->words[1] +#define NODE_ADDR_FPS_ARGS(a) &a->words[2],&a->words[3],&a->words[0],&a->words[1] +#define NODE_ADDR_FP_ARGS_S(a) a.words[2],a.words[3],a.words[0],a.words[1] +#define NODE_ADDR_FPS_ARGS_S(a) &a.words[2],&a.words[3],&a.words[0],&a.words[1] +#else +#define NODE_ADDR_FP_STR "%04hX::%04hX::%04hX::%04hX" +#define NODE_ADDR_FP_ARGS(a) a->words[3],a->words[2],a->words[1],a->words[0] +#define NODE_ADDR_FPS_ARGS(a) &a->words[3],&a->words[2],&a->words[1],&a->words[0] +#define NODE_ADDR_FP_ARGS_S(a) a.words[3],a.words[2],a.words[1],a.words[0] +#define NODE_ADDR_FPS_ARGS_S(a) &a.words[3],&a.words[2],&a.words[1],&a.words[0] + +#endif + +inline static int dap_chain_node_addr_from_str( dap_chain_node_addr_t * a_addr, const char * a_addr_str){ + return (int) sscanf(a_addr_str,NODE_ADDR_FP_STR,NODE_ADDR_FPS_ARGS(a_addr) )-4; +} /** * * diff --git a/dap_chain_ledger.c b/dap_chain_ledger.c index 710a2cc..3c18424 100755 --- a/dap_chain_ledger.c +++ b/dap_chain_ledger.c @@ -1020,7 +1020,7 @@ uint64_t dap_chain_ledger_tx_cache_get_out_cond_value(dap_ledger_t *a_ledger, da { uint64_t l_ret_value = 0; - const dap_chain_datum_tx_t *l_tx_tmp; + dap_chain_datum_tx_t *l_tx_tmp; dap_chain_hash_fast_t l_tx_first_hash = { 0 }; // start hash //memcpy(&l_tx_first_hash, 0, sizeof(dap_chain_hash_fast_t)); /* size_t l_pub_key_size = a_key_from->pub_key_data_size; @@ -1032,8 +1032,8 @@ uint64_t dap_chain_ledger_tx_cache_get_out_cond_value(dap_ledger_t *a_ledger, da // Get out_cond item from transaction if(l_tx_tmp) { - const dap_chain_tx_out_cond_t *l_tx_out_cond = (const dap_chain_tx_out_cond_t*) dap_chain_datum_tx_item_get( - (dap_chain_datum_tx_t*) l_tx_tmp, NULL, TX_ITEM_TYPE_OUT_COND, NULL); + dap_chain_tx_out_cond_t *l_tx_out_cond =(dap_chain_tx_out_cond_t *)dap_chain_datum_tx_item_get( + l_tx_tmp, NULL, TX_ITEM_TYPE_OUT_COND, NULL); // TODO check relations a_addr with cond_data and public key -- GitLab