tb_bool_t tb_object_data_writ_to_url(tb_object_ref_t object, tb_char_t const* url) { // check tb_object_data_t* data = tb_object_data_cast(object); tb_assert_and_check_return_val(data && tb_object_data_getp((tb_object_ref_t)data) && url, tb_false); // make stream tb_stream_ref_t stream = tb_stream_init_from_url(url); tb_assert_and_check_return_val(stream, tb_false); // ctrl if (tb_stream_type(stream) == TB_STREAM_TYPE_FILE) tb_stream_ctrl(stream, TB_STREAM_CTRL_FILE_SET_MODE, TB_FILE_MODE_WO | TB_FILE_MODE_CREAT | TB_FILE_MODE_TRUNC); // open stream tb_bool_t ok = tb_false; if (tb_stream_open(stream)) { // writ stream if (tb_stream_bwrit(stream, (tb_byte_t const*)tb_object_data_getp((tb_object_ref_t)data), tb_object_data_size((tb_object_ref_t)data))) ok = tb_true; } // exit stream tb_stream_exit(stream); // ok? return ok; }
tb_object_ref_t tb_object_dump(tb_object_ref_t object, tb_size_t format) { // check tb_assert_and_check_return_val(object, tb_null); // data tb_object_ref_t odata = tb_object_data(object, format); if (odata) { // the data and size tb_byte_t const* data = (tb_byte_t const*)tb_object_data_getp(odata); tb_size_t size = tb_object_data_size(odata); if (data && size) { // done tb_char_t const* p = (tb_char_t const*)data; tb_char_t const* e = (tb_char_t const*)data + size; tb_char_t b[4096 + 1]; if (p && p < e) { while (p < e && *p && tb_isspace(*p)) p++; while (p < e && *p) { tb_char_t* q = b; tb_char_t const* d = b + 4096; for (; p < e && q < d && *p; p++, q++) *q = *p; *q = '\0'; tb_printf("%s", b); } tb_printf("\n"); } } // exit data tb_object_exit(odata); } // the object return object; }
tb_object_ref_t tb_object_dump(tb_object_ref_t object) { // check tb_assert_and_check_return_val(object, tb_null); // data tb_object_ref_t odata = tb_object_data(object, TB_OBJECT_FORMAT_XML); if (odata) { // data & size tb_byte_t const* data = (tb_byte_t const*)tb_object_data_getp(odata); tb_size_t size = tb_object_data_size(odata); if (data && size) { tb_char_t const* p = tb_strstr((tb_char_t const*)data, "?>"); tb_char_t const* e = (tb_char_t const*)data + size; tb_char_t b[4096 + 1]; if (p && p + 2 < e) { p += 2; while (p < e && *p && tb_isspace(*p)) p++; while (p < e && *p) { tb_char_t* q = b; tb_char_t const* d = b + 4096; for (; p < e && q < d && *p; p++, q++) *q = *p; *q = '\0'; tb_printf("%s", b); } tb_printf("\n"); } } // exit data tb_object_exit(odata); } return object; }
static tb_object_ref_t tb_object_data_copy(tb_object_ref_t object) { return tb_object_data_init_from_data(tb_object_data_getp(object), tb_object_data_size(object)); }