int pv_get_ht_cv(struct sip_msg *msg, pv_param_t *param, pv_value_t *res) { str htname; ht_pv_t *hpv; int cnt = 0; hpv = (ht_pv_t*)param->pvn.u.dname; if(hpv->ht==NULL) { hpv->ht = ht_get_table(&hpv->htname); if(hpv->ht==NULL) return pv_get_null(msg, param, res); } if(pv_printf_s(msg, hpv->pve, &htname)!=0) { LM_ERR("cannot get $ht name\n"); return -1; } cnt = ht_count_cells_re(&htname, hpv->ht, 1); /* integer */ return pv_get_sintval(msg, param, res, cnt); }
int ht_api_count_cells_re(str *hname, str *sre, int mode) { ht_t* ht; ht = ht_get_table(hname); if(ht==NULL) return -1; if(ht_count_cells_re(sre, ht, mode /* 0 - name; 1 - value */)<0) return -1; return 0; }