From: Florian Forster Date: Thu, 17 Sep 2009 16:33:53 +0000 (+0200) Subject: Merge branch 'collectd-4.7' into collectd-4.8 X-Git-Tag: collectd-4.8.1~9 X-Git-Url: https://git.octo.it/?a=commitdiff_plain;h=1ef654ef7d8225667666b206819d63689dd3b2e4;hp=-c;p=collectd.git Merge branch 'collectd-4.7' into collectd-4.8 --- 1ef654ef7d8225667666b206819d63689dd3b2e4 diff --combined src/perl.c index 50def1fc,cc1e974f..a2f5da29 --- a/src/perl.c +++ b/src/perl.c @@@ -145,6 -145,11 +145,11 @@@ typedef struct } while (0) /* + * Public variable + */ + extern char **environ; + + /* * private variables */ @@@ -194,8 -199,6 +199,8 @@@ struct { "Collectd::TYPE_DATASET", PLUGIN_DATASET }, { "Collectd::DS_TYPE_COUNTER", DS_TYPE_COUNTER }, { "Collectd::DS_TYPE_GAUGE", DS_TYPE_GAUGE }, + { "Collectd::DS_TYPE_DERIVE", DS_TYPE_DERIVE }, + { "Collectd::DS_TYPE_ABSOLUTE", DS_TYPE_ABSOLUTE }, { "Collectd::LOG_ERR", LOG_ERR }, { "Collectd::LOG_WARNING", LOG_WARNING }, { "Collectd::LOG_NOTICE", LOG_NOTICE }, @@@ -269,10 -272,7 +274,10 @@@ static int hv2data_source (pTHX_ HV *ha if (NULL != (tmp = hv_fetch (hash, "type", 4, 0))) { ds->type = SvIV (*tmp); - if ((DS_TYPE_COUNTER != ds->type) && (DS_TYPE_GAUGE != ds->type)) { + if ((DS_TYPE_COUNTER != ds->type) + && (DS_TYPE_GAUGE != ds->type) + && (DS_TYPE_DERIVE != ds->type) + && (DS_TYPE_ABSOLUTE != ds->type)) { log_err ("hv2data_source: Invalid DS type."); return -1; } @@@ -325,12 -325,8 +330,12 @@@ static int av2value (pTHX_ char *name, if (NULL != tmp) { if (DS_TYPE_COUNTER == ds->ds[i].type) value[i].counter = SvIV (*tmp); - else + else if (DS_TYPE_GAUGE == ds->ds[i].type) value[i].gauge = SvNV (*tmp); + else if (DS_TYPE_DERIVE == ds->ds[i].type) + value[i].derive = SvIV (*tmp); + else if (DS_TYPE_ABSOLUTE == ds->ds[i].type) + value[i].absolute = SvIV (*tmp); } else { return -1; @@@ -646,12 -642,8 +651,12 @@@ static int value_list2hv (pTHX_ value_l if (DS_TYPE_COUNTER == ds->ds[i].type) val = newSViv (vl->values[i].counter); - else + else if (DS_TYPE_GAUGE == ds->ds[i].type) val = newSVnv (vl->values[i].gauge); + else if (DS_TYPE_DERIVE == ds->ds[i].type) + val = newSViv (vl->values[i].derive); + else if (DS_TYPE_ABSOLUTE == ds->ds[i].type) + val = newSViv (vl->values[i].absolute); if (NULL == av_store (values, i, val)) { av_undef (values);