static gboolean hook_dump(gpointer k, gpointer v, gpointer u) { GString *gstr = u; if (hashstr_len(k) <= 0 || !*hashstr_str(k)) return FALSE; if (gstr->len > 0) g_string_append_c(gstr, ','); g_string_append_printf(gstr, "(%.*s,%"G_GINT64_FORMAT",%"G_GINT64_FORMAT")", (int)hashstr_len(k), hashstr_str(k), OV(v)->version, OV(v)->when); return FALSE; }
GByteArray* version_encode(GTree *t) { asn_enc_rval_t rv; GByteArray *encoded; struct BaseVersion bv; gboolean runner(gpointer _k, gpointer _v, gpointer _u) { (void) _u; if (_k && _v && hashstr_len(_k) > 0) { struct object_version_s *v = _v; struct TableVersion *tv = g_malloc0(sizeof(*tv)); OCTET_STRING_fromBuf(&(tv->name), hashstr_str(_k), hashstr_len(_k)); asn_int64_to_INTEGER(&(tv->version), v->version); asn_int64_to_INTEGER(&(tv->when), v->when); asn_sequence_add(&(bv.list), tv); } return FALSE; }
gboolean _on_table(hashstr_t *k, GTree *rows, gpointer u0) { (void) u0; if (g_tree_nnodes(rows) > 0) { if (0 != g_ascii_strcasecmp(hashstr_str(k), "main.admin")) { gsize max = sizeof("version:")+hashstr_len(k); gchar buf[max]; g_snprintf(buf, max, "version:%s", hashstr_str(k)); sqlx_admin_inc_version(ctx->sq3, buf, 1); } } return FALSE; }