Code

fix various problems with the tcl bindings -- Peter Breitenlohner
[rrdtool-all.git] / program / bindings / tcl / tclrrd.c
index 2a2fb410c0aa6167fbf3cce5e4cf3edf1b8dab77..ad8a8a3aac9dcd2d7501ede87b7d0f6d571cd4ad 100644 (file)
 #include <rrd_tool.h>
 #include <rrd_format.h>
 
-
+extern int Tclrrd_Init(Tcl_Interp *interp, int safe);
 
 extern int __getopt_initialized;
 
 
 /*
  * some rrd_XXX() functions might modify the argv strings passed to it.
- * Furthermore, they use getopt() without initializing getopt's optind
- * variable themselves. Hence, we need to do some preparation before
+ * Hence, we need to do some preparation before
  * calling the rrd library functions.
  */
 static char ** getopt_init(argc, argv)
@@ -34,8 +33,6 @@ static char ** getopt_init(argc, argv)
     char **argv2;
     int i;
     
-    optind = 0;
-
     argv2 = calloc(argc, sizeof(char *));
     for (i = 0; i < argc; i++) {
        argv2[i] = strdup(argv[i]);
@@ -170,7 +167,7 @@ Rrd_Fetch(clientData, interp, argc, argv)
     int argc;
     char *argv[];
 {
-    time_t start, end;
+    time_t start, end, j;
     unsigned long step, ds_cnt, i, ii;
     rrd_value_t *data, *datai;
     char **ds_namv;
@@ -183,7 +180,7 @@ Rrd_Fetch(clientData, interp, argc, argv)
                  &ds_cnt, &ds_namv, &data) != -1) {
         datai = data;
         listPtr = Tcl_GetObjResult(interp);
-        for (i = start; i <= end; i += step) {
+        for (j = start; j <= end; j += step) {
             for (ii = 0; ii < ds_cnt; ii++) {
                sprintf(s, "%.2f", *(datai++));
                 Tcl_ListObjAppendElement(interp, listPtr,
@@ -217,13 +214,14 @@ Rrd_Graph(clientData, interp, argc, argv)
 {
     char **calcpr;
     int xsize, ysize;
+    double ymin, ymax;
     Tcl_Obj *listPtr;
     char **argv2;
     
     calcpr = NULL;
 
     argv2 = getopt_init(argc, argv);
-    if (rrd_graph(argc, argv2, &calcpr, &xsize, &ysize) != -1 ) {
+    if (rrd_graph(argc, argv2, &calcpr, &xsize, &ysize, NULL, &ymin, &ymax) != -1 ) {
         listPtr = Tcl_GetObjResult(interp);
         Tcl_ListObjAppendElement(interp, listPtr, Tcl_NewIntObj(xsize));
         Tcl_ListObjAppendElement(interp, listPtr, Tcl_NewIntObj(ysize));