/* * test_open -- test rpmemd_db_pool_open() */ static int test_open(const char *root_dir, const char *pool_desc) { struct rpmem_pool_attr attr1, attr2; struct rpmemd_db_pool *prp; struct rpmemd_db *db; int ret; memset(&attr1, 0, sizeof(attr1)); attr1.major = 1; db = rpmemd_db_init(root_dir, POOL_MODE); if (db == NULL) { FAILED_FUNC("rpmemd_db_init"); } prp = rpmemd_db_pool_create(db, pool_desc, 0, &attr1); if (prp == NULL) { FAILED_FUNC("rpmemd_db_pool_create"); } rpmemd_db_pool_close(db, prp); prp = rpmemd_db_pool_open(db, pool_desc, 0, &attr2); if (prp == NULL) { FAILED_FUNC("rpmemd_db_pool_open"); } rpmemd_db_pool_close(db, prp); ret = rpmemd_db_pool_remove(db, pool_desc); if (ret) { FAILED_FUNC("rpmemd_db_pool_remove"); } rpmemd_db_fini(db); compare_attr(&attr1, &attr2); return 0; }
/* Compare media descriptor */ PJ_DEF(pj_status_t) pjmedia_sdp_media_cmp( const pjmedia_sdp_media *sd1, const pjmedia_sdp_media *sd2, unsigned option) { unsigned i; pj_status_t status; PJ_ASSERT_RETURN(sd1 && sd2 && option==0, PJ_EINVAL); PJ_UNUSED_ARG(option); /* Compare media type. */ if (pj_strcmp(&sd1->desc.media, &sd2->desc.media) != 0) return PJMEDIA_SDP_EMEDIANOTEQUAL; /* Compare port number. */ if (sd1->desc.port != sd2->desc.port) return PJMEDIA_SDP_EPORTNOTEQUAL; /* Compare port count. */ if (sd1->desc.port_count != sd2->desc.port_count) return PJMEDIA_SDP_EPORTNOTEQUAL; /* Compare transports. */ if (pj_strcmp(&sd1->desc.transport, &sd2->desc.transport) != 0) return PJMEDIA_SDP_ETPORTNOTEQUAL; /* For zeroed port media, stop comparing here */ if (sd1->desc.port == 0) return PJ_SUCCESS; /* Compare number of formats. */ if (sd1->desc.fmt_count != sd2->desc.fmt_count) return PJMEDIA_SDP_EFORMATNOTEQUAL; /* Compare formats, in order. */ for (i=0; i<sd1->desc.fmt_count; ++i) { if (pj_strcmp(&sd1->desc.fmt[i], &sd2->desc.fmt[i]) != 0) return PJMEDIA_SDP_EFORMATNOTEQUAL; } /* Compare connection line, if they exist. */ if (sd1->conn) { if (!sd2->conn) return PJMEDIA_SDP_EMEDIANOTEQUAL; status = compare_conn(sd1->conn, sd2->conn); } else { if (sd2->conn) return PJMEDIA_SDP_EMEDIANOTEQUAL; } /* Compare attributes. */ status = compare_attr(sd1->attr_count, sd1->attr, sd2->attr_count, sd2->attr); if (status != PJ_SUCCESS) return status; /* Looks equal */ return PJ_SUCCESS; }
const char *cql_lookup_reverse(cql_transform_t ct, const char *category, Z_AttributeList *attributes) { struct cql_prop_entry *e; size_t clen = strlen(category); for (e = ct->entry; e; e = e->next) { if (!strncmp(e->pattern, category, clen)) { /* category matches.. See if attributes in pattern value are all listed in actual attributes */ int i; for (i = 0; i < e->attr_list.num_attributes; i++) { /* entry attribute */ Z_AttributeElement *e_ae = e->attr_list.attributes[i]; int j; for (j = 0; j < attributes->num_attributes; j++) { /* actual attribute */ Z_AttributeElement *a_ae = attributes->attributes[j]; int r = compare_attr(e_ae, a_ae); if (r == 0) break; } if (j == attributes->num_attributes) break; /* i was not found at all.. try next pattern */ } if (i == e->attr_list.num_attributes) return e->pattern + clen; } } return 0; }
/* * Compare two SDP session for equality. */ PJ_DEF(pj_status_t) pjmedia_sdp_session_cmp( int inst_id, const pjmedia_sdp_session *sd1, const pjmedia_sdp_session *sd2, unsigned option) { unsigned i; pj_status_t status; PJ_ASSERT_RETURN(sd1 && sd2 && option==0, PJ_EINVAL); PJ_UNUSED_ARG(option); /* Compare the origin line. */ if (pj_strcmp(&sd1->origin.user, &sd2->origin.user) != 0) return PJMEDIA_SDP_EORIGINNOTEQUAL; if (sd1->origin.id != sd2->origin.id) return PJMEDIA_SDP_EORIGINNOTEQUAL; if (sd1->origin.version != sd2->origin.version) return PJMEDIA_SDP_EORIGINNOTEQUAL; if (pj_strcmp(&sd1->origin.net_type, &sd2->origin.net_type) != 0) return PJMEDIA_SDP_EORIGINNOTEQUAL; if (pj_strcmp(&sd1->origin.addr_type, &sd2->origin.addr_type) != 0) return PJMEDIA_SDP_EORIGINNOTEQUAL; if (pj_strcmp(&sd1->origin.addr, &sd2->origin.addr) != 0) return PJMEDIA_SDP_EORIGINNOTEQUAL; /* Compare the subject line. */ if (pj_strcmp(&sd1->name, &sd2->name) != 0) return PJMEDIA_SDP_ENAMENOTEQUAL; /* Compare connection line, when they exist */ if (sd1->conn) { if (!sd2->conn) return PJMEDIA_SDP_ECONNNOTEQUAL; status = compare_conn(sd1->conn, sd2->conn); if (status != PJ_SUCCESS) return status; } else { if (sd2->conn) return PJMEDIA_SDP_ECONNNOTEQUAL; } /* Compare time line. */ if (sd1->time.start != sd2->time.start) return PJMEDIA_SDP_ETIMENOTEQUAL; if (sd1->time.stop != sd2->time.stop) return PJMEDIA_SDP_ETIMENOTEQUAL; /* Compare attributes. */ status = compare_attr(inst_id, sd1->attr_count, sd1->attr, sd2->attr_count, sd2->attr); if (status != PJ_SUCCESS) return status; /* Compare media lines. */ if (sd1->media_count != sd2->media_count) return PJMEDIA_SDP_EMEDIANOTEQUAL; for (i=0; i<sd1->media_count; ++i) { status = pjmedia_sdp_media_cmp(inst_id, sd1->media[i], sd2->media[i], 0); if (status != PJ_SUCCESS) return status; } /* Looks equal. */ return PJ_SUCCESS; }