Exemple #1
0
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);
}
Exemple #2
0
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;
}
Exemple #3
0
Fichier : Array.c Projet : awm/atp
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;
}
Exemple #5
0
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);
}
Exemple #6
0
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;
}