Merge branch 'collectd-4.7' into collectd-4.8
authorFlorian Forster <octo@leeloo.lan.home.verplant.org>
Thu, 17 Sep 2009 16:33:53 +0000 (18:33 +0200)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Thu, 17 Sep 2009 16:33:53 +0000 (18:33 +0200)
1  2 
src/perl.c

diff --combined 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);