in rrd > 1.3 it's called rrd_info_push ... and not just info_push ...
[rrdtool.git] / src / rrd_info.c
index 9b2363f..a4e2862 100644 (file)
@@ -21,9 +21,17 @@ char     *sprintf_alloc(
     char *fmt,
     ...)
 {
-    int       maxlen = 1024 + strlen(fmt);
     char     *str = NULL;
     va_list   argp;
+#ifdef HAVE_VASPRINTF
+    va_start( argp, fmt );
+    if (vasprintf( &str, fmt, argp ) == -1){
+        va_end(argp);
+        rrd_set_error ("vasprintf failed.");
+        return(NULL);
+    }
+#else
+    int       maxlen = 1024 + strlen(fmt);
     str = (char*)malloc(sizeof(char) * (maxlen + 1));
     if (str != NULL) {
         va_start(argp, fmt);
@@ -33,6 +41,7 @@ char     *sprintf_alloc(
         vsprintf(str, fmt, argp);
 #endif
     }
+#endif /* HAVE_VASPRINTF */
     va_end(argp);
     return str;
 }
@@ -169,6 +178,11 @@ rrd_info_t *rrd_info_r(
 
     for (i = 0; i < rrd.stat_head->ds_cnt; i++) {
 
+        info.u_cnt=i;
+        cd= rrd_info_push(cd,sprintf_alloc("ds[%s].index",
+                                     rrd.ds_def[i].ds_nam),
+                     RD_I_CNT, info);
+    
         info.u_str = rrd.ds_def[i].dst;
         cd = rrd_info_push(cd, sprintf_alloc("ds[%s].type",
                                              rrd.ds_def[i].ds_nam),