*
*/
+#ifdef UNUSED
+#elif defined(__GNUC__)
+# define UNUSED(x) x __attribute__((unused))
+#elif defined(__LCLINT__)
+# define UNUSED(x) /*@unused@*/ x
+#else
+# define UNUSED(x) x
+#endif
+
static const char *__version__ = "$Revision: 1.14 $";
#include "Python.h"
[RRA:CF:xff:steps:rows]";
static PyObject *
-PyRRD_create(PyObject *self, PyObject *args)
+PyRRD_create(PyObject UNUSED(*self), PyObject *args)
{
PyObject *r;
char **argv;
"N|timestamp:value[:value...] [timestamp:value[:value...] ...]";
static PyObject *
-PyRRD_update(PyObject *self, PyObject *args)
+PyRRD_update(PyObject UNUSED(*self), PyObject *args)
{
PyObject *r;
char **argv;
"[--start|-s start] [--end|-e end]";
static PyObject *
-PyRRD_fetch(PyObject *self, PyObject *args)
+PyRRD_fetch(PyObject UNUSED(*self), PyObject *args)
{
PyObject *r;
rrd_value_t *data, *datai;
"[STACK:vname[#rrggbb[:legend]]]";
static PyObject *
-PyRRD_graph(PyObject *self, PyObject *args)
+PyRRD_graph(PyObject UNUSED(*self), PyObject *args)
{
PyObject *r;
char **argv, **calcpr;
"[--data-source-type|-d ds-name:DST] [--data-source-rename|-r old-name:new-name]";
static PyObject *
-PyRRD_tune(PyObject *self, PyObject *args)
+PyRRD_tune(PyObject UNUSED(*self), PyObject *args)
{
PyObject *r;
char **argv;
return r;
}
+static char PyRRD_first__doc__[] =
+"first(filename): Return the timestamp of the first data sample in an RRD";
+
+static PyObject *
+PyRRD_first(PyObject UNUSED(*self), PyObject *args)
+{
+ PyObject *r;
+ int argc, ts;
+ char **argv;
+
+ if (create_args("first", args, &argc, &argv) < 0)
+ return NULL;
+
+ if ((ts = rrd_first(argc, argv)) == -1) {
+ PyErr_SetString(ErrorObject, rrd_get_error());
+ rrd_clear_error();
+ r = NULL;
+ } else
+ r = PyInt_FromLong((long)ts);
+
+ destroy_args(&argv);
+ return r;
+}
+
static char PyRRD_last__doc__[] =
"last(filename): Return the timestamp of the last data sample in an RRD";
static PyObject *
-PyRRD_last(PyObject *self, PyObject *args)
+PyRRD_last(PyObject UNUSED(*self), PyObject *args)
{
PyObject *r;
int argc, ts;
" resize filename rra-num GROW|SHRINK rows";
static PyObject *
-PyRRD_resize(PyObject *self, PyObject *args)
+PyRRD_resize(PyObject UNUSED(*self), PyObject *args)
{
PyObject *r;
char **argv;
"info(filename): extract header information from an rrd";
static PyObject *
-PyRRD_info(PyObject *self, PyObject *args)
+PyRRD_info(PyObject UNUSED(*self), PyObject *args)
{
PyObject *r, *t, *ds;
rrd_t rrd;
meth("fetch", PyRRD_fetch, PyRRD_fetch__doc__),
meth("graph", PyRRD_graph, PyRRD_graph__doc__),
meth("tune", PyRRD_tune, PyRRD_tune__doc__),
+ meth("first", PyRRD_first, PyRRD_first__doc__),
meth("last", PyRRD_last, PyRRD_last__doc__),
meth("resize", PyRRD_resize, PyRRD_resize__doc__),
meth("info", PyRRD_info, PyRRD_info__doc__),
- {NULL, NULL}
+ {NULL, NULL,0,NULL}
};
#define SET_INTCONSTANT(dict, value) \
d = PyModule_GetDict(m);
SET_STRCONSTANT(d, __version__);
- ErrorObject = PyErr_NewException("_rrdtool.error", NULL, NULL);
+ ErrorObject = PyErr_NewException("rrdtool.error", NULL, NULL);
PyDict_SetItemString(d, "error", ErrorObject);
/* Check for errors */