Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • cellframe/cellframe-sdk
  • MIKA83/cellframe-sdk
2 results
Show changes
Commits on Source (8)
Showing with 88 additions and 81 deletions
cmake_minimum_required(VERSION 2.8)
project (json-c)
file(GLOB JSON_C_SRCS FILES *.c)
file(GLOB JSON_C_HEADERS FILES *.h)
add_library(${PROJECT_NAME} STATIC ${JSON_C_SRCS} ${JSON_C_HEADERS})
target_include_directories(json-c PUBLIC . )
...@@ -2,7 +2,7 @@ project(cellframe-sdk C) ...@@ -2,7 +2,7 @@ project(cellframe-sdk C)
cmake_minimum_required(VERSION 2.8) cmake_minimum_required(VERSION 2.8)
set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD 11)
set(CELLFRAME_SDK_NATIVE_VERSION "2.6-94") set(CELLFRAME_SDK_NATIVE_VERSION "2.6-95")
add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"") add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"")
set(DAPSDK_MODULES "") set(DAPSDK_MODULES "")
...@@ -32,6 +32,12 @@ endif() ...@@ -32,6 +32,12 @@ endif()
add_subdirectory(dap-sdk) add_subdirectory(dap-sdk)
add_subdirectory(3rdparty/monero_crypto) add_subdirectory(3rdparty/monero_crypto)
add_subdirectory(3rdparty/cuttdb) add_subdirectory(3rdparty/cuttdb)
if (ANDROID)
add_subdirectory(3rdparty/libmagic)
add_subdirectory(3rdparty/json-c)
include_directories(cellframe-sdk/3rdparty/)
endif()
add_subdirectory(modules/) add_subdirectory(modules/)
add_library(${PROJECT_NAME} STATIC cellframe-sdk.c) add_library(${PROJECT_NAME} STATIC cellframe-sdk.c)
......
...@@ -12,7 +12,7 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") ...@@ -12,7 +12,7 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Android") elseif(${CMAKE_SYSTEM_NAME} MATCHES "Android")
set(ANDROID ON) set(ANDROID ON)
set(UNIX ON) set(UNIX ON)
set(LINUX ON) set(LINUX OFF)
set(OS_TYPE_MOBILE ON) set(OS_TYPE_MOBILE ON)
message("[*] ANDROID build") message("[*] ANDROID build")
add_definitions(-DANDROID -DDAP_OS_ANDROID) add_definitions(-DANDROID -DDAP_OS_ANDROID)
...@@ -69,13 +69,6 @@ if(UNIX) ...@@ -69,13 +69,6 @@ if(UNIX)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_CCOPT}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_CCOPT}")
set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} ${_LOPT}") set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} ${_LOPT}")
if (ANDROID)
add_subdirectory(lib/json-c)
add_subdirectory(lib/sqlite3)
#add_subdirectory(lib/libev)
include_directories(lib/)
else()
endif(ANDROID)
endif() endif()
if(WIN32) if(WIN32)
......
...@@ -72,6 +72,8 @@ typedef uint8_t byte_t; ...@@ -72,6 +72,8 @@ typedef uint8_t byte_t;
// Extracts a size_t from a pointer // Extracts a size_t from a pointer
#define DAP_POINTER_TO_SIZE(p) ((size_t) (p)) #define DAP_POINTER_TO_SIZE(p) ((size_t) (p))
#define DAP_END_OF_DAYS 4102444799
#if defined(__GNUC__) ||defined (__clang__) #if defined(__GNUC__) ||defined (__clang__)
#define DAP_ALIGN_PACKED __attribute__((aligned(1),packed)) #define DAP_ALIGN_PACKED __attribute__((aligned(1),packed))
#else #else
......
...@@ -7,7 +7,7 @@ unix { ...@@ -7,7 +7,7 @@ unix {
DEFINES += DAP_OS_UNIX DEFINES += DAP_OS_UNIX
} }
android { android {
DEFINES += DAP_OS_ANDROID DEFINES += DAP_OS_ANDROID DAP_OS_LINUX DAP_OS_UNIX
} }
unix: !android { unix: !android {
......
...@@ -1068,11 +1068,14 @@ void dap_usleep(time_t a_microseconds) ...@@ -1068,11 +1068,14 @@ void dap_usleep(time_t a_microseconds)
char* dap_ctime_r(time_t *a_time, char* a_buf){ char* dap_ctime_r(time_t *a_time, char* a_buf){
struct tm *l_time = localtime(a_time); if (*a_time > DAP_END_OF_DAYS) {
char *l_str_time = asctime_r(l_time, a_buf); 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) if (l_str_time)
return l_str_time; return l_str_time;
else else
return "(null)\n"; return "(null)\r\n";
// localtime_r()
} }
...@@ -386,9 +386,13 @@ dap_events_socket_t * dap_events_socket_queue_ptr_create_input(dap_events_socket ...@@ -386,9 +386,13 @@ dap_events_socket_t * dap_events_socket_queue_ptr_create_input(dap_events_socket
l_es->port = a_es->port; l_es->port = a_es->port;
l_es->mq_num = a_es->mq_num; l_es->mq_num = a_es->mq_num;
WCHAR l_direct_name[MQ_MAX_Q_NAME_LEN + 1] = { 0 }; WCHAR l_direct_name[MQ_MAX_Q_NAME_LEN] = { 0 };
size_t l_sz_in_words = sizeof(l_direct_name)/sizeof(l_direct_name[0]); int pos = 0;
int pos = _snwprintf_s(l_direct_name, l_sz_in_words, l_sz_in_words - 1, L"DIRECT=OS:.\\PRIVATE$\\DapEventSocketQueue%d", l_es->mq_num); #ifdef DAP_BRAND
pos = _snwprintf_s(l_direct_name, sizeof(l_direct_name)/sizeof(l_direct_name[0]), _TRUNCATE, L"DIRECT=OS:.\\PRIVATE$\\" DAP_BRAND "__esmq%d", l_es->mq_num);
#else
pos = _snwprintf_s(l_direct_name, sizeof(l_direct_name)/sizeof(l_direct_name[0]), _TRUNCATE, L"DIRECT=OS:.\\PRIVATE$\\%hs__esmq%d", dap_get_appname(), l_es->mq_num);
#endif
if (pos < 0) { if (pos < 0) {
log_it(L_ERROR, "Message queue path error"); log_it(L_ERROR, "Message queue path error");
DAP_DELETE(l_es); DAP_DELETE(l_es);
...@@ -550,10 +554,14 @@ dap_events_socket_t * s_create_type_queue_ptr(dap_worker_t * a_w, dap_events_soc ...@@ -550,10 +554,14 @@ dap_events_socket_t * s_create_type_queue_ptr(dap_worker_t * a_w, dap_events_soc
QUEUEPROPID l_qp_id[1]; QUEUEPROPID l_qp_id[1];
HRESULT l_q_status[1]; HRESULT l_q_status[1];
WCHAR l_pathname[MAX_PATH] = { 0 }; WCHAR l_pathname[MQ_MAX_Q_NAME_LEN - 10] = { 0 };
static atomic_uint s_queue_num = 0; static atomic_uint s_queue_num = 0;
size_t l_sz_in_words = sizeof(l_pathname)/sizeof(l_pathname[0]); int pos = 0;
int pos = _snwprintf_s(l_pathname, l_sz_in_words, l_sz_in_words - 1, L".\\PRIVATE$\\DapEventSocketQueue%d", l_es->mq_num = s_queue_num++); #ifdef DAP_BRAND
pos = _snwprintf_s(l_pathname, sizeof(l_pathname)/sizeof(l_pathname[0]), _TRUNCATE, L".\\PRIVATE$\\" DAP_BRAND "__esmq%d", l_es->mq_num = s_queue_num++);
#else
pos = _snwprintf_s(l_pathname, sizeof(l_pathname)/sizeof(l_pathname[0]), _TRUNCATE, L".\\PRIVATE$\\%hs__esmq%d", dap_get_appname(), l_es->mq_num = s_queue_num++);
#endif
if (pos < 0) { if (pos < 0) {
log_it(L_ERROR, "Message queue path error"); log_it(L_ERROR, "Message queue path error");
DAP_DELETE(l_es); DAP_DELETE(l_es);
...@@ -570,7 +578,7 @@ dap_events_socket_t * s_create_type_queue_ptr(dap_worker_t * a_w, dap_events_soc ...@@ -570,7 +578,7 @@ dap_events_socket_t * s_create_type_queue_ptr(dap_worker_t * a_w, dap_events_soc
l_qps.aPropVar = l_qp_var; l_qps.aPropVar = l_qp_var;
l_qps.aStatus = l_q_status; l_qps.aStatus = l_q_status;
WCHAR l_direct_name[MQ_MAX_Q_NAME_LEN + 1] = { 0 }; WCHAR l_direct_name[MQ_MAX_Q_NAME_LEN] = { 0 };
WCHAR l_format_name[sizeof(l_direct_name) - 10] = { 0 }; WCHAR l_format_name[sizeof(l_direct_name) - 10] = { 0 };
DWORD l_buflen = sizeof(l_format_name); DWORD l_buflen = sizeof(l_format_name);
HRESULT hr = MQCreateQueue(NULL, &l_qps, l_format_name, &l_buflen); HRESULT hr = MQCreateQueue(NULL, &l_qps, l_format_name, &l_buflen);
...@@ -579,9 +587,7 @@ dap_events_socket_t * s_create_type_queue_ptr(dap_worker_t * a_w, dap_events_soc ...@@ -579,9 +587,7 @@ dap_events_socket_t * s_create_type_queue_ptr(dap_worker_t * a_w, dap_events_soc
DAP_DELETE(l_es); DAP_DELETE(l_es);
return NULL; return NULL;
} }
_snwprintf_s(l_direct_name, sizeof(l_direct_name)/sizeof(l_direct_name[0]), _TRUNCATE, L"DIRECT=OS:%ls", l_pathname);
wcsncpy(l_direct_name, L"DIRECT=OS:", 10);
wcscat_s(l_direct_name, l_buflen, l_pathname);
hr = MQOpenQueue(l_direct_name, MQ_SEND_ACCESS, MQ_DENY_NONE, &(l_es->mqh)); hr = MQOpenQueue(l_direct_name, MQ_SEND_ACCESS, MQ_DENY_NONE, &(l_es->mqh));
if (hr == MQ_ERROR_QUEUE_NOT_FOUND) { if (hr == MQ_ERROR_QUEUE_NOT_FOUND) {
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
#define DAP_EVENTS_CAPS_EVENT_EVENTFD #define DAP_EVENTS_CAPS_EVENT_EVENTFD
#include <netinet/in.h> #include <netinet/in.h>
#include <sys/eventfd.h> #include <sys/eventfd.h>
#include <mqueue.h> #include <unistd.h>
#elif defined(DAP_OS_LINUX) #elif defined(DAP_OS_LINUX)
// #define DAP_EVENTS_CAPS_EPOLL // #define DAP_EVENTS_CAPS_EPOLL
#define DAP_EVENTS_CAPS_POLL #define DAP_EVENTS_CAPS_POLL
......
project(libdap-server C) project(libdap-server C)
cmake_minimum_required(VERSION 3.0) cmake_minimum_required(VERSION 3.0)
if (ANDROID)
add_subdirectory(../../../3rdparty/libmagic)
endif()
add_subdirectory(http_server) add_subdirectory(http_server)
add_subdirectory(enc_server) add_subdirectory(enc_server)
......
...@@ -31,20 +31,6 @@ ...@@ -31,20 +31,6 @@
#define LOG_TAG "dap_chain_datum" #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 * @brief dap_chain_datum_create
* @param a_type_id * @param a_type_id
......
...@@ -63,8 +63,31 @@ ...@@ -63,8 +63,31 @@
#define DAP_CHAIN_DATUM_CUSTOM 0xffff #define DAP_CHAIN_DATUM_CUSTOM 0xffff
#define DAP_DATUM_TYPE_STR(t, s) \
extern const char * c_datum_type_str[]; 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 #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 ...@@ -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 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 * ); 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 * @brief dap_chain_datum_size
......
...@@ -2151,10 +2151,12 @@ void dap_chain_net_proc_mempool (dap_chain_net_t * a_net) ...@@ -2151,10 +2151,12 @@ void dap_chain_net_proc_mempool (dap_chain_net_t * a_net)
}else{ }else{
l_datums[i] = l_datum; l_datums[i] = l_datum;
if(i < l_objs_size_tmp) { 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; 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", 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); dap_ctime_r(&l_ts_create, buf), l_datum->header.data_size);
} }
} }
......
...@@ -1713,13 +1713,13 @@ int com_tx_wallet(int argc, char ** argv, void *arg_func, char **str_reply) ...@@ -1713,13 +1713,13 @@ int com_tx_wallet(int argc, char ** argv, void *arg_func, char **str_reply)
if(l_addr_tokens_size > 0) if(l_addr_tokens_size > 0)
dap_string_append_printf(l_string_ret, "balance:\n"); dap_string_append_printf(l_string_ret, "balance:\n");
else 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++) { for(size_t i = 0; i < l_addr_tokens_size; i++) {
if(l_addr_tokens[i]) { if(l_addr_tokens[i]) {
uint128_t l_balance = dap_chain_ledger_calc_balance(l_ledger, l_addr, 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_coins = dap_chain_balance_to_coins(l_balance);
char *l_balance_datoshi = dap_chain_balance_print(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]); l_balance_datoshi, l_addr_tokens[i]);
if(i < l_addr_tokens_size - 1) if(i < l_addr_tokens_size - 1)
dap_string_append_printf(l_string_ret, "\n"); 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 ...@@ -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++) { for(size_t i = 0; i < l_objs_size; i++) {
dap_chain_datum_t * l_datum = (dap_chain_datum_t*) l_objs[i].value; 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; time_t l_ts_create = (time_t) l_datum->header.ts_create;
if (l_datum->header.data_size > l_objs[i].value_len) { 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); //log_it(L_ERROR, "Trash datum in GDB %s.%s, key: %s", a_net->pub.name, a_chain->name, l_objs[i].key);
continue; continue;
} }
char buf[50]; char buf[50] = {[0]='\0'};
dap_hash_fast_t l_data_hash; 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(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); 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 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)); 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_net_dump_datum(a_str_tmp, l_datum, a_hash_out_type);
} }
dap_chain_global_db_objs_delete(l_objs, l_objs_size); 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 ...@@ -2277,8 +2277,10 @@ int com_mempool_proc(int argc, char ** argv, void *arg_func, char ** a_str_reply
if(l_datum) { if(l_datum) {
char buf[50]; char buf[50];
time_t l_ts_create = (time_t) l_datum->header.ts_create; 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", 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); 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) ; int l_verify_datum= dap_chain_net_verify_datum_for_add( l_net, l_datum) ;
if (l_verify_datum != 0){ if (l_verify_datum != 0){
......
...@@ -470,7 +470,7 @@ void dap_chain_net_srv_order_dump_to_string(dap_chain_net_srv_order_t *a_order,d ...@@ -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, " 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 ) 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) ); 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) if ( a_order->node_addr.uint64)
......
...@@ -1509,9 +1509,11 @@ static int s_cli_dag(int argc, char ** argv, void *arg_func, char **a_str_reply) ...@@ -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; time_t l_datum_ts_create = (time_t) l_datum->header.ts_create;
// Nested datum // 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\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\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\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); dap_string_append_printf(l_str_tmp,"\t\t\t\t\t\tdata_size=%u\n", l_datum->header.data_size);
......