Ensure that response_read() always calls fflush() or fclose().
[rrdtool.git] / src / rrd_format.c
index 3e50f1f..501b267 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.3rc5  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.4.3  Copyright by Tobi Oetiker, 1997-2010
  *****************************************************************************
  * rrd_format.c  RRD Database Format helper functions
  *****************************************************************************
@@ -62,7 +62,7 @@ enum dst_en dst_conv(
         converter(DERIVE, DST_DERIVE)
         converter(COMPUTE, DST_CDEF)
         rrd_set_error("unknown data acquisition function '%s'", string);
-    return (-1);
+    return (enum dst_en)(-1);
 }
 
 
@@ -81,9 +81,29 @@ enum cf_en cf_conv(
         converter(DEVSEASONAL, CF_DEVSEASONAL)
         converter(FAILURES, CF_FAILURES)
         rrd_set_error("unknown consolidation function '%s'", string);
-    return (-1);
+    return (enum cf_en)(-1);
 }
 
+const char *cf_to_string (enum cf_en cf)
+{
+    switch (cf)
+    {
+        case CF_AVERAGE:     return "AVERAGE";
+        case CF_MINIMUM:     return "MIN";
+        case CF_MAXIMUM:     return "MAX";
+        case CF_LAST:        return "LAST";
+        case CF_HWPREDICT:   return "HWPREDICT";
+        case CF_SEASONAL:    return "SEASONAL";
+        case CF_DEVPREDICT:  return "DEVPREDICT";
+        case CF_DEVSEASONAL: return "DEVSEASONAL";
+        case CF_FAILURES:    return "FAILURES";
+        case CF_MHWPREDICT:  return "MHWPREDICT";
+
+        default:
+            return NULL;
+    }
+} /* char *cf_to_string */
+
 #undef converter
 
 long ds_match(
@@ -98,3 +118,16 @@ long ds_match(
     rrd_set_error("unknown data source name '%s'", ds_nam);
     return -1;
 }
+
+off_t rrd_get_header_size(
+    rrd_t *rrd)
+{
+    return sizeof(stat_head_t) + \
+        sizeof(ds_def_t) * rrd->stat_head->ds_cnt + \
+        sizeof(rra_def_t) * rrd->stat_head->rra_cnt + \
+        sizeof(time_t) + \
+        sizeof(live_head_t) + \
+        sizeof(pdp_prep_t) * rrd->stat_head->ds_cnt + \
+        sizeof(cdp_prep_t) * rrd->stat_head->ds_cnt * rrd->stat_head->rra_cnt + \
+        sizeof(rra_ptr_t) * rrd->stat_head->rra_cnt;
+}