Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00028 #include "../../select.h"
00029 #include "pv_select.h"
00030
00031 int pv_parse_select_name(pv_spec_p sp, str *in)
00032 {
00033 select_t *sel = 0;
00034 char c;
00035 char *p;
00036 if (in == NULL || in->s == NULL || sp == NULL)
00037 return -1;
00038
00039 c = in->s[in->len];
00040 in->s[in->len] = '\0';
00041 p = in->s;
00042 if(parse_select(&p, &sel)<0)
00043 {
00044 LM_ERR("invalid select name [%.*s]\n",
00045 in->len, in->s);
00046 in->s[in->len] = c;
00047 return -1;
00048 }
00049 in->s[in->len] = c;
00050 sp->pvp.pvn.u.dname = (void*)sel;
00051 sp->pvp.pvn.type = PV_NAME_OTHER;
00052 return 0;
00053 }
00054
00055
00056 int pv_get_select(struct sip_msg *msg, pv_param_t *param, pv_value_t *res)
00057 {
00058 str s = {0, 0};
00059 select_t *sel = 0;
00060
00061 sel = (select_t*)param->pvn.u.dname;
00062
00063 if(sel==0 || run_select(&s, sel, msg)<0 || s.s==0)
00064 return pv_get_null(msg, param, res);
00065 return pv_get_strval(msg, param, res, &s);
00066 }
00067