in rrd > 1.3 it's called rrd_info_push ... and not just info_push ...
[rrdtool.git] / src / rrd_info.c
index 73407a9..a4e2862 100644 (file)
@@ -24,8 +24,12 @@ char     *sprintf_alloc(
     char     *str = NULL;
     va_list   argp;
 #ifdef HAVE_VASPRINTF
-       va_start( argp, fmt );
-       vasprintf( &str, fmt, argp );
+    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));
@@ -37,7 +41,7 @@ char     *sprintf_alloc(
         vsprintf(str, fmt, argp);
 #endif
     }
-#endif // HAVE_VASPRINTF
+#endif /* HAVE_VASPRINTF */
     va_end(argp);
     return str;
 }
@@ -174,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),