/*****************************************************************************
- * RRDtool 1.2.12 Copyright by Tobi Oetiker, 1997-2005
+ * RRDtool 1.2.13 Copyright by Tobi Oetiker, 1997-2006
*****************************************************************************
* rrd_cgi.c RRD Web Page Generator
*****************************************************************************/
/* for how long is the output of the cgi valid ? */
char* rrdgoodfor(long, const char **);
+/* return rrdcgi version string */
+char* rrdgetinternal(long, const char **);
+
char* rrdstrip(char *buf);
char* scanargs(char *line, int *argc, char ***args);
parse(&buffer, i, "<RRD::TIME::LAST", printtimelast);
parse(&buffer, i, "<RRD::TIME::NOW", printtimenow);
parse(&buffer, i, "<RRD::TIME::STRFTIME", printstrftime);
+ parse(&buffer, i, "<RRD::INTERNAL", rrdgetinternal);
}
return buffer;
}
parse(&buffer, i, "<RRD::TIME::LAST", printtimelast);
parse(&buffer, i, "<RRD::TIME::NOW", printtimenow);
parse(&buffer, i, "<RRD::TIME::STRFTIME", printstrftime);
+ parse(&buffer, i, "<RRD::INTERNAL", rrdgetinternal);
}
if (!filter) {
if (envvar) {
return stralloc(envvar);
} else {
-#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__)
- _snprintf(buf, sizeof(buf), "[ERROR:_getenv_'%s'_failed", args[0]);
-#else
snprintf(buf, sizeof(buf), "[ERROR:_getenv_'%s'_failed", args[0]);
-#endif
return stralloc(buf);
}
}
if (value) {
return stralloc(value);
} else {
-#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__)
- _snprintf(buf, sizeof(buf), "[ERROR:_getvar_'%s'_failed", args[0]);
-#else
snprintf(buf, sizeof(buf), "[ERROR:_getvar_'%s'_failed", args[0]);
-#endif
return stralloc(buf);
}
}
return stralloc("");
}
+char* rrdgetinternal(long argc, const char **args){
+ if (argc == 1) {
+ if( strcasecmp( args[0], "VERSION") == 0) {
+ return stralloc(PACKAGE_VERSION);
+ } else if( strcasecmp( args[0], "COMPILETIME") == 0) {
+ return stralloc(__DATE__ " " __TIME__);
+ } else {
+ return stralloc("[ERROR: internal unknown argument]");
+ }
+ } else {
+ return stralloc("[ERROR: internal expected 1 argument]");
+ }
+}
+
/* Format start or end times using strftime. We always need both the
* start and end times, because, either might be relative to the other.
* */