void MergeRules(FcitxXkbRules* rules, FcitxXkbRules* rulesextra) { utarray_concat(rules->modelInfos, rulesextra->modelInfos); utarray_concat(rules->optionGroupInfos, rulesextra->optionGroupInfos); FcitxXkbLayoutInfo* layoutInfo; UT_array toAdd; utarray_init(&toAdd, fcitx_ptr_icd); for (layoutInfo = (FcitxXkbLayoutInfo*) utarray_front(rulesextra->layoutInfos); layoutInfo != NULL; layoutInfo = (FcitxXkbLayoutInfo*) utarray_next(rulesextra->layoutInfos, layoutInfo)) { FcitxXkbLayoutInfo* l = FindByName(rules, layoutInfo->name); if (l) { utarray_concat(l->languages, layoutInfo->languages); utarray_concat(l->variantInfos, layoutInfo->variantInfos); } else utarray_push_back(&toAdd, &layoutInfo); } unsigned int i; for(i = 0;i < utarray_len(&toAdd);i++) { FcitxXkbLayoutInfo* p = *(FcitxXkbLayoutInfo**)utarray_eltptr(&toAdd, i); utarray_push_back(rules->layoutInfos, p); } utarray_done(&toAdd); FcitxXkbRulesFree(rulesextra); }
int MPII_Genutil_sched_imcast(const void *buf, int count, MPI_Datatype dt, UT_array * dests, int num_dests, int tag, MPIR_Comm * comm_ptr, MPII_Genutil_sched_t * sched, int n_in_vtcs, int *in_vtcs) { vtx_t *vtxp; int vtx_id; /* assign a new vertex */ vtx_id = MPII_Genutil_vtx_create(sched, &vtxp); vtxp->vtx_kind = MPII_GENUTIL_VTX_KIND__IMCAST; MPII_Genutil_vtx_add_dependencies(sched, vtx_id, n_in_vtcs, in_vtcs); /* store the arguments */ vtxp->u.imcast.buf = (void *) buf; vtxp->u.imcast.count = count; vtxp->u.imcast.dt = dt; vtxp->u.imcast.num_dests = num_dests; utarray_new(vtxp->u.imcast.dests, &ut_int_icd, MPL_MEM_COLL); utarray_concat(vtxp->u.imcast.dests, dests, MPL_MEM_COLL); vtxp->u.imcast.tag = tag; vtxp->u.imcast.comm = comm_ptr; vtxp->u.imcast.req = (struct MPIR_Request **) MPL_malloc(sizeof(struct MPIR_Request *) * num_dests, MPL_MEM_COLL); vtxp->u.imcast.last_complete = -1; MPL_DBG_MSG_FMT(MPIR_DBG_COLL, VERBOSE, (MPL_DBG_FDEST, "Gentran: schedule [%d] imcast", vtx_id)); return vtx_id; }
ATP_Array ATP_arrayDuplicate(const ATP_Array *p_array) { UT_array *l_copy; utarray_new(l_copy, &cs_valueIcd); utarray_concat(l_copy, CCAST(p_array)); return (struct ATP_ArrayImpl *) l_copy; }
OMX_ERRORTYPE tiz_vector_append (tiz_vector_t * p_dst, const tiz_vector_t * p_src) { assert (p_dst); assert (p_src); utarray_concat (p_dst->p_uta, p_src->p_uta); return OMX_ErrorNone; }
FCITX_EXPORT_API void FcitxCandidateWordMerge(FcitxCandidateWordList* candList, FcitxCandidateWordList* newList, int position) { void *p; if (!newList) return; if (position >= 0) { utarray_inserta(&candList->candWords, &newList->candWords, position); } else { utarray_concat(&candList->candWords, &newList->candWords); } utarray_steal(&newList->candWords, p); newList->currentPage = 0; free(p); }
int enum_tainted_file( dba_context* ctx ) { const char* img; uint64_t haddr; UT_array* fnames = NULL; UT_array* fnames_part = NULL; char** fname; char** fname_prev; json_object* jo_taint_report; json_object* jo_tainted_farr; // get JSON object for taint result json_object_object_get_ex( ctx->result, DBA_JSON_KEY_TAINT, &jo_taint_report ); // add array JSON object to store enumerated tainted files jo_tainted_farr = json_object_new_array(); json_object_object_add( jo_taint_report, RFT_TAINTED_FILE, jo_tainted_farr ); /// enumerate each disk blocks to search tainted blocks /// and recover the blocks to high-level file information img = get_device_image( "ide0-hd0" ); for( haddr = 0; haddr < HD_MAX_SIZE; haddr += GUEST_FS_BLOCKSIZE ) { // check disk address is tainted if( (dift_get_disk_dirty(haddr) & ctx->taint.tag) == 0 ) continue; // check if tainted address corresponds to a file fnames_part = tsk_get_filename_by_haddr( img, haddr ); if( fnames_part == NULL ) continue; if( fnames == NULL ) { fnames = fnames_part; continue; } utarray_concat( fnames, fnames_part ); utarray_free( fnames_part ); } // empty record, return if( fnames == NULL ) return 0; /// add the found tainted file into DBA taint report /// and remove the duplicate records fname_prev = NULL; utarray_sort( fnames, sort_string ); for( fname = (char**)utarray_front(fnames); fname != NULL; fname = (char**)utarray_next(fnames, fname) ) { if( fname_prev != NULL && strcmp( *fname_prev, *fname ) != 0 ) json_object_array_add( jo_tainted_farr, json_object_new_string(*fname) ); fname_prev = fname; } utarray_free( fnames ); return 0; }