예제 #1
0
static int pv_alt(sip_msg_t* msg, pv_param_t* param, pv_value_t* res)
{
    int ind_local, local = 0, type = GEN_URI;

    ind_local = param->pvn.u.isname.name.n;

    if (ind_local & PV_CERT_PEER) {
        local = 0;
        ind_local = ind_local ^ PV_CERT_PEER;
    } else if (ind_local & PV_CERT_LOCAL) {
        local = 1;
        ind_local = ind_local ^ PV_CERT_LOCAL;
    } else {
        BUG("could not determine certificate\n");
        return pv_get_null(msg, param, res);
    }

    switch(ind_local) {
    case PV_COMP_E:
        type = GEN_EMAIL;
        break;
    case PV_COMP_HOST:
        type = GEN_DNS;
        break;
    case PV_COMP_URI:
        type = GEN_URI;
        break;
    case PV_COMP_IP:
        type = GEN_IPADD;
        break;
    default:
        BUG("ind_local=%d\n", ind_local);
        return pv_get_null(msg, param, res);
    }

    if (get_alt(&res->rs, local, type, msg) < 0) {
        return pv_get_null(msg, param, res);
    }

    res->flags = PV_VAL_STR;
    return 0;
}
예제 #2
0
String InputEventKey::as_text() const {

	String kc = keycode_get_string(scancode);
	if (kc == String())
		return kc;

	if (get_metakey()) {
		kc = find_keycode_name(KEY_META) + ("+" + kc);
	}
	if (get_alt()) {
		kc = find_keycode_name(KEY_ALT) + ("+" + kc);
	}
	if (get_shift()) {
		kc = find_keycode_name(KEY_SHIFT) + ("+" + kc);
	}
	if (get_control()) {
		kc = find_keycode_name(KEY_CONTROL) + ("+" + kc);
	}
	return kc;
}
예제 #3
0
static int sel_alt(str* res, select_t* s, sip_msg_t* msg)
{
	int type = GEN_URI, local = 0, i;

	for(i = 1; i <= s->n - 1; i++) {
		switch(s->params[i].v.i) {
		case CERT_LOCAL: local = 1; break;
		case CERT_PEER:  local = 0; break;
		case COMP_E:     type = GEN_EMAIL; break;
		case COMP_HOST:  type = GEN_DNS;   break;
		case COMP_URI:   type = GEN_URI;   break;
		case COMP_IP:    type = GEN_IPADD; break;
		default:
			BUG("Bug in sel_alt: %d\n", s->params[s->n - 1].v.i);
			return -1;
		}
	}
	
	return get_alt(res, local, type, msg);
}