فهرست منبع

core: pv - helper function to evaluate a dynamic string

Daniel-Constantin Mierla 9 سال پیش
والد
کامیت
fe0e98427b
2فایلهای تغییر یافته به همراه32 افزوده شده و 1 حذف شده
  1. 30 1
      pv_core.c
  2. 2 0
      pvar.h

+ 30 - 1
pv_core.c

@@ -53,7 +53,8 @@ static int pv_get_retcode(struct sip_msg* msg, pv_param_t* p, pv_value_t* res)
 
 
 
-/** register built-in core pvars.
+/**
+ * register built-in core pvars.
  * should be called before parsing the config script.
  * @return 0 on success
  */
@@ -62,4 +63,32 @@ int pv_register_core_vars(void)
 	return register_pvars_mod("core", core_pvs);
 }
 
+/**
+ *
+ */
+int pv_eval_str(sip_msg_t *msg, str *dst, str *src)
+{
+	pv_elem_t *xmodel=NULL;
+	str sval = STR_NULL;
+
+	if(pv_parse_format(src, &xmodel)<0) {
+		LM_ERR("error in parsing src parameter\n");
+		return -1;
+	}
+
+	if(pv_printf_s(msg, xmodel, &sval)!=0) {
+		LM_ERR("cannot eval parsed parameter\n");
+		pv_elem_free_all(xmodel);
+		goto error;
+	}
+
+	dst->s = sval.s;
+	dst->len = sval.len;
+	pv_elem_free_all(xmodel);
+
+	return 1;
+error:
+	return -1;
+}
+
 /* vi: set ts=4 sw=4 tw=79:ai:cindent: */

+ 2 - 0
pvar.h

@@ -300,5 +300,7 @@ typedef struct _pv_xavp_name {
 	struct _pv_xavp_name *next;
 } pv_xavp_name_t;
 
+int pv_eval_str(sip_msg_t *msg, str *dst, str *src);
+
 #endif