void SG_server__get_dagnode_info( SG_context* pCtx, SG_repo* pRepo, SG_vhash* pvhRequest, SG_varray** ppvaInfo) { char bufDagnum[SG_DAGNUM__BUF_MAX__DEC]; SG_vhash* pvhRefVersionControlHids = NULL; SG_varray* pvaHids = NULL; SG_stringarray* psaHids = NULL; const char* const* paszHids = NULL; SG_uint32 countHids = 0; SG_ERR_CHECK( SG_dagnum__to_sz__decimal(pCtx, SG_DAGNUM__VERSION_CONTROL, bufDagnum, sizeof(bufDagnum)) ); SG_ERR_CHECK( SG_vhash__get__vhash(pCtx, pvhRequest, bufDagnum, &pvhRefVersionControlHids) ); // Ugh. Is vhash->varray->stringarray->char** the best option? SG_ERR_CHECK( SG_vhash__get_keys(pCtx, pvhRefVersionControlHids, &pvaHids) ); SG_ERR_CHECK( SG_varray__to_stringarray(pCtx, pvaHids, &psaHids) ); SG_ERR_CHECK( SG_stringarray__sz_array_and_count(pCtx, psaHids, &paszHids, &countHids) ); SG_ERR_CHECK( SG_history__query(pCtx, NULL, pRepo, 0, NULL, paszHids, countHids, NULL, NULL, 0, 0, 0, SG_FALSE, SG_FALSE, ppvaInfo) ); /* fall through */ fail: SG_VARRAY_NULLFREE(pCtx, pvaHids); SG_STRINGARRAY_NULLFREE(pCtx, psaHids); }
void SG_sync_remote__get_dagnode_info( SG_context* pCtx, SG_repo* pRepo, SG_vhash* pvhRequest, SG_history_result** ppInfo) { char bufDagnum[SG_DAGNUM__BUF_MAX__HEX]; SG_vhash* pvhRefVersionControlHids = NULL; SG_varray* pvaHids = NULL; SG_stringarray* psaHids = NULL; SG_ERR_CHECK( SG_dagnum__to_sz__hex(pCtx, SG_DAGNUM__VERSION_CONTROL, bufDagnum, sizeof(bufDagnum)) ); SG_ERR_CHECK( SG_vhash__get__vhash(pCtx, pvhRequest, bufDagnum, &pvhRefVersionControlHids) ); // Ugh. Is vhash->varray->stringarray the best option? SG_ERR_CHECK( SG_vhash__get_keys(pCtx, pvhRefVersionControlHids, &pvaHids) ); SG_ERR_CHECK( SG_varray__to_stringarray(pCtx, pvaHids, &psaHids) ); SG_ERR_CHECK( SG_history__get_revision_details(pCtx, pRepo, psaHids, NULL, ppInfo) ); /* fall through */ fail: SG_VARRAY_NULLFREE(pCtx, pvaHids); SG_STRINGARRAY_NULLFREE(pCtx, psaHids); }