diff --git a/src/rrd_rpncalc.c b/src/rrd_rpncalc.c
index bf74e396ab24ac4c9c1ccc3412c525ba6734103d..eb7c94b2e5be67d8dd74afd2e7d060ee01bbc824 100644 (file)
--- a/src/rrd_rpncalc.c
+++ b/src/rrd_rpncalc.c
/****************************************************************************
- * RRDtool 1.2.16 Copyright by Tobi Oetiker, 1997-2006
+ * RRDtool 1.2.23 Copyright by Tobi Oetiker, 1997-2007
****************************************************************************
* rrd_rpncalc.c RPN calculator functions
****************************************************************************/
add_op(OP_RAD2DEG,RAD2DEG)
add_op(OP_DEG2RAD,DEG2RAD)
add_op(OP_AVG,AVG)
+ add_op(OP_ABS,ABS)
#undef add_op
}
(*str)[offset] = '\0';
return 0;
}
-void parseCDEF_DS(char *def,rrd_t *rrd, int ds_idx)
+void parseCDEF_DS(const char *def,rrd_t *rrd, int ds_idx)
{
rpnp_t *rpnp = NULL;
rpn_cdefds_t *rpnc = NULL;
@@ -340,6 +341,7 @@ rpn_parse(void *key_hash,const char *const expr_const,long (*lookup)(void *,char
match_op(OP_RAD2DEG,RAD2DEG)
match_op(OP_DEG2RAD,DEG2RAD)
match_op(OP_AVG,AVG)
+ match_op(OP_ABS,ABS)
#undef match_op
count++;
sum+=val;
}
- // now push the result bavk on stack
+ /* now push the result back on stack */
if (count>0) {
rpnstack -> s[++stptr]=sum/count;
} else {
}
}
break;
+ case OP_ABS:
+ stackunderflow(0);
+ rpnstack -> s[stptr] = fabs(rpnstack -> s[stptr]);
+ break;
case OP_END:
break;
}