diff --git a/dap-sdk/core/include/dap_common.h b/dap-sdk/core/include/dap_common.h index fdbbfc47941324f7791e12e08ef0a1aa74b97c70..c745691b7d57f58c656dc45ca323c4ac328175e6 100755 --- a/dap-sdk/core/include/dap_common.h +++ b/dap-sdk/core/include/dap_common.h @@ -72,6 +72,8 @@ typedef uint8_t byte_t; // Extracts a size_t from a pointer #define DAP_POINTER_TO_SIZE(p) ((size_t) (p)) +#define DAP_END_OF_DAYS 4102444799 + #if defined(__GNUC__) ||defined (__clang__) #define DAP_ALIGN_PACKED __attribute__((aligned(1),packed)) #else diff --git a/dap-sdk/core/src/dap_common.c b/dap-sdk/core/src/dap_common.c index d841a31371cbe6d36057afa9f1ecf199850149e7..489a5e1fe503a5ea47b933b9d47f617d5d73ead9 100755 --- a/dap-sdk/core/src/dap_common.c +++ b/dap-sdk/core/src/dap_common.c @@ -1068,11 +1068,14 @@ void dap_usleep(time_t a_microseconds) char* dap_ctime_r(time_t *a_time, char* a_buf){ - struct tm *l_time = localtime(a_time); - char *l_str_time = asctime_r(l_time, a_buf); + if (*a_time > DAP_END_OF_DAYS) { + return "(null)\r\n"; + } + struct tm l_time; + localtime_r(a_time, &l_time); + char *l_str_time = asctime_r(&l_time, a_buf); if (l_str_time) return l_str_time; else - return "(null)\n"; -// localtime_r() + return "(null)\r\n"; } diff --git a/modules/common/dap_chain_datum.c b/modules/common/dap_chain_datum.c index 0768ef82f4b955c51d1115430dd950d5de0753a7..80fa7d5b110c7edac513d279a9d7f3decb9d5231 100644 --- a/modules/common/dap_chain_datum.c +++ b/modules/common/dap_chain_datum.c @@ -31,20 +31,6 @@ #define LOG_TAG "dap_chain_datum" -const char * c_datum_type_str[]={ - [DAP_CHAIN_DATUM_TX]="DATUM_TX", - [DAP_CHAIN_DATUM_TX_REQUEST]="DATUM_TX_REQUEST", - [DAP_CHAIN_DATUM_WASM_CODE]="DATUM_WASM_CODE", - [DAP_CHAIN_DATUM_WASM_DATA]="DATUM_WASM_DATA", - [DAP_CHAIN_DATUM_EVM_CODE]="DATUM_EVM_CODE", - [DAP_CHAIN_DATUM_EVM_DATA]="DATUM_EVM_DATA", - [DAP_CHAIN_DATUM_CA]="DATUM_CA", - [DAP_CHAIN_DATUM_CUSTOM]="DATUM_CUSTOM", - [DAP_CHAIN_DATUM_TOKEN_DECL]="DATUM_TOKEN_DECL", - [DAP_CHAIN_DATUM_TOKEN_EMISSION]="DATUM_TOKEN_EMISSION", - [DAP_CHAIN_DATUM_CUSTOM] = "DAP_CHAIN_DATUM_CUSTOM" -}; - /** * @brief dap_chain_datum_create * @param a_type_id diff --git a/modules/common/include/dap_chain_datum.h b/modules/common/include/dap_chain_datum.h index 162c43ba1f683693debc129b668368ed4e6bf37b..188a5a400d12af00abc5f18910fe6e6da862ac4a 100644 --- a/modules/common/include/dap_chain_datum.h +++ b/modules/common/include/dap_chain_datum.h @@ -63,8 +63,31 @@ #define DAP_CHAIN_DATUM_CUSTOM 0xffff - -extern const char * c_datum_type_str[]; +#define DAP_DATUM_TYPE_STR(t, s) \ + switch (t) { \ + case DAP_CHAIN_DATUM_TX: \ + s = "DATUM_TX"; break; \ + case DAP_CHAIN_DATUM_TX_REQUEST: \ + s = "DATUM_WASM_CODE"; break; \ + case DAP_CHAIN_DATUM_WASM_CODE: \ + s = "DATUM_WASM_CODE"; break; \ + case DAP_CHAIN_DATUM_WASM_DATA: \ + s = "DATUM_WASM_DATA"; break; \ + case DAP_CHAIN_DATUM_EVM_CODE: \ + s = "DATUM_EVM_CODE"; break; \ + case DAP_CHAIN_DATUM_EVM_DATA: \ + s = "DATUM_EVM_DATA"; break; \ + case DAP_CHAIN_DATUM_CA: \ + s = "DATUM_CA"; break; \ + case DAP_CHAIN_DATUM_CUSTOM: \ + s = "DATUM_CUSTOM"; break; \ + case DAP_CHAIN_DATUM_TOKEN_DECL: \ + s = "DATUM_TOKEN_DECL"; break; \ + case DAP_CHAIN_DATUM_TOKEN_EMISSION:\ + s = "DATUM_TOKEN_EMISSION"; break;\ + default: \ + s = "DATUM_UNKNOWN"; break; \ +} #define DAP_CHAIN_DATUM_ID_SIZE 2 @@ -109,29 +132,6 @@ typedef dap_chain_datum_t* (*dap_chain_datum_callback_iter_get_first_t)(dap_chai typedef dap_chain_datum_t* (*dap_chain_datum_callback_iter_get_next_t)(dap_chain_datum_iter_t * ); typedef void (*dap_chain_datum_callback_iter_delete_t)(dap_chain_datum_iter_t * ); -/** - * @brief dap_chain_datum_typeid_to_str - * @param a_type_id - * @return - */ -static inline const char * dap_chain_datum_type_id_to_str(uint16_t a_type_id){ - switch ( a_type_id ){ - case DAP_CHAIN_DATUM_TX: - case DAP_CHAIN_DATUM_TX_REQUEST: - case DAP_CHAIN_DATUM_WASM_CODE: - case DAP_CHAIN_DATUM_WASM_DATA: - case DAP_CHAIN_DATUM_EVM_CODE: - case DAP_CHAIN_DATUM_EVM_DATA: - case DAP_CHAIN_DATUM_CA: - case DAP_CHAIN_DATUM_TOKEN_DECL: - case DAP_CHAIN_DATUM_TOKEN_EMISSION: - case DAP_CHAIN_DATUM_TOKEN_DISMISSAL: - case DAP_CHAIN_DATUM_CUSTOM: - return c_datum_type_str[a_type_id]; - default: - return "(wrong datum type id)"; - } -} /** * @brief dap_chain_datum_size diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index 258e8f8fb2fe22f43699cc1b4744a48c23b4a32c..46f637ca35f87e6d02d231d2ccacc08730b1ca5f 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -2151,10 +2151,12 @@ void dap_chain_net_proc_mempool (dap_chain_net_t * a_net) }else{ l_datums[i] = l_datum; if(i < l_objs_size_tmp) { - char buf[50]; + char buf[50] = { '\0' }; + const char *l_type = NULL; + DAP_DATUM_TYPE_STR(l_datum->header.type_id, l_type) time_t l_ts_create = (time_t) l_datum->header.ts_create; log_it(L_INFO, "\t\t0x%s: type_id=%s ts_create=%s data_size=%u", - l_objs[i].key, c_datum_type_str[l_datum->header.type_id], + l_objs[i].key, l_type, dap_ctime_r(&l_ts_create, buf), l_datum->header.data_size); } } diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c index c1fd94f152e049956d45446ca7ebdf3144e4d467..aaf69fdca92942daa3268b652a89ad0c699e4c1d 100644 --- a/modules/net/dap_chain_node_cli_cmd.c +++ b/modules/net/dap_chain_node_cli_cmd.c @@ -1713,13 +1713,13 @@ int com_tx_wallet(int argc, char ** argv, void *arg_func, char **str_reply) if(l_addr_tokens_size > 0) dap_string_append_printf(l_string_ret, "balance:\n"); else - dap_string_append_printf(l_string_ret, "balance:\u00a00"); + dap_string_append_printf(l_string_ret, "balance:\xA0""0"); for(size_t i = 0; i < l_addr_tokens_size; i++) { if(l_addr_tokens[i]) { uint128_t l_balance = dap_chain_ledger_calc_balance(l_ledger, l_addr, l_addr_tokens[i]); char *l_balance_coins = dap_chain_balance_to_coins(l_balance); char *l_balance_datoshi = dap_chain_balance_print(l_balance); - dap_string_append_printf(l_string_ret, "\t\u00a0%s (%s) %s", l_balance_coins, + dap_string_append_printf(l_string_ret, "\t\xA0""%s (%s) %s", l_balance_coins, l_balance_datoshi, l_addr_tokens[i]); if(i < l_addr_tokens_size - 1) dap_string_append_printf(l_string_ret, "\n"); @@ -2053,22 +2053,22 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a for(size_t i = 0; i < l_objs_size; i++) { dap_chain_datum_t * l_datum = (dap_chain_datum_t*) l_objs[i].value; time_t l_ts_create = (time_t) l_datum->header.ts_create; - if (l_datum->header.data_size > l_objs[i].value_len) { - log_it(L_ERROR, "Trash datum in GDB %s.%s, key: %s", a_net->pub.name, a_chain->name, l_objs[i].key); + if (!l_datum->header.data_size || (l_datum->header.data_size > l_objs[i].value_len)) { + //log_it(L_ERROR, "Trash datum in GDB %s.%s, key: %s", a_net->pub.name, a_chain->name, l_objs[i].key); continue; } - char buf[50]; + char buf[50] = {[0]='\0'}; dap_hash_fast_t l_data_hash; - char l_data_hash_str[70]={[0]='\0'}; + char l_data_hash_str[70] = {[0]='\0'}; dap_hash_fast(l_datum->data,l_datum->header.data_size,&l_data_hash); dap_hash_fast_to_str(&l_data_hash,l_data_hash_str,sizeof (l_data_hash_str)-1); - + const char *l_type = NULL; + DAP_DATUM_TYPE_STR(l_datum->header.type_id, l_type) dap_string_append_printf(a_str_tmp, "hash %s: type_id=%s data_size=%u data_hash=%s ts_create=%s", // \n included in timestamp - l_objs[i].key, c_datum_type_str[l_datum->header.type_id], + l_objs[i].key, l_type, l_datum->header.data_size, l_data_hash_str, dap_ctime_r(&l_ts_create, buf)); dap_chain_net_dump_datum(a_str_tmp, l_datum, a_hash_out_type); } - dap_chain_global_db_objs_delete(l_objs, l_objs_size); } @@ -2277,8 +2277,10 @@ int com_mempool_proc(int argc, char ** argv, void *arg_func, char ** a_str_reply if(l_datum) { char buf[50]; time_t l_ts_create = (time_t) l_datum->header.ts_create; + const char *l_type = NULL; + DATUM_TYPE_STR(l_datum->header.type_id, l_type) dap_string_append_printf(l_str_tmp, "hash %s: type_id=%s ts_create=%s data_size=%u\n", - l_datum_hash_out_str, c_datum_type_str[l_datum->header.type_id], + l_datum_hash_out_str, l_type, dap_ctime_r(&l_ts_create, buf), l_datum->header.data_size); int l_verify_datum= dap_chain_net_verify_datum_for_add( l_net, l_datum) ; if (l_verify_datum != 0){ diff --git a/modules/net/srv/dap_chain_net_srv_order.c b/modules/net/srv/dap_chain_net_srv_order.c index db2c45a75de7b2c17b3ea6dcbe3690c5f2c476ee..a5e1499e1bc0f2922a0cff4aa530aa1223cfd84a 100644 --- a/modules/net/srv/dap_chain_net_srv_order.c +++ b/modules/net/srv/dap_chain_net_srv_order.c @@ -470,7 +470,7 @@ void dap_chain_net_srv_order_dump_to_string(dap_chain_net_srv_order_t *a_order,d } dap_string_append_printf(a_str_out, " srv_uid: 0x%016llX\n", a_order->srv_uid.uint64 ); - dap_string_append_printf(a_str_out, " price: \u00a0%.7Lf (%llu)\n", dap_chain_datoshi_to_coins(a_order->price) , a_order->price); + dap_string_append_printf(a_str_out, " price: \xA0""%.7Lf (%llu)\n", dap_chain_datoshi_to_coins(a_order->price) , a_order->price); if( a_order->price_unit.uint32 ) dap_string_append_printf(a_str_out, " price_unit: %s\n", dap_chain_net_srv_price_unit_uid_to_str(a_order->price_unit) ); if ( a_order->node_addr.uint64) diff --git a/modules/type/dag/dap_chain_cs_dag.c b/modules/type/dag/dap_chain_cs_dag.c index f92184c08e26d465ebbeaf1683337207a84acc36..4083a15849b7f202a143b99564ad05ca7ffeb7e0 100644 --- a/modules/type/dag/dap_chain_cs_dag.c +++ b/modules/type/dag/dap_chain_cs_dag.c @@ -1509,9 +1509,11 @@ static int s_cli_dag(int argc, char ** argv, void *arg_func, char **a_str_reply) time_t l_datum_ts_create = (time_t) l_datum->header.ts_create; // Nested datum + const char *l_datum_type = NULL; + DAP_DATUM_TYPE_STR(l_datum->header.type_id, l_datum_type) dap_string_append_printf(l_str_tmp,"\t\t\t\tdatum:\tdatum_size: %u\n",l_datum_size); dap_string_append_printf(l_str_tmp,"\t\t\t\t\t\tversion:=0x%02X\n", l_datum->header.version_id); - dap_string_append_printf(l_str_tmp,"\t\t\t\t\t\ttype_id:=%s\n", c_datum_type_str[l_datum->header.type_id]); + dap_string_append_printf(l_str_tmp,"\t\t\t\t\t\ttype_id:=%s\n", l_datum_type); dap_string_append_printf(l_str_tmp,"\t\t\t\t\t\tts_create=%s\n", dap_ctime_r( &l_datum_ts_create,buf )); dap_string_append_printf(l_str_tmp,"\t\t\t\t\t\tdata_size=%u\n", l_datum->header.data_size);