/**
* collectd - src/utils_complain.c
- * Copyright (C) 2006-2007 Florian octo Forster
+ * Copyright (C) 2006-2013 Florian octo Forster
* Copyright (C) 2008 Sebastian tokkee Harl
*
* This program is free software; you can redistribute it and/or modify it
* Sebastian tokkee Harl <sh at tokkee.org>
**/
+#include "collectd.h"
#include "utils_complain.h"
#include "plugin.h"
static int vcomplain (int level, c_complain_t *c,
const char *format, va_list ap)
{
- time_t now;
+ cdtime_t now;
char message[512];
- now = time (NULL);
+ now = cdtime ();
if (c->last + c->interval > now)
return 0;
c->last = now;
- if (c->interval < interval_g)
- c->interval = interval_g;
+ if (c->interval < plugin_get_interval ())
+ c->interval = plugin_get_interval ();
else
c->interval *= 2;
- if (c->interval > 86400)
- c->interval = 86400;
+ if (c->interval > TIME_T_TO_CDTIME_T (86400))
+ c->interval = TIME_T_TO_CDTIME_T (86400);
vsnprintf (message, sizeof (message), format, ap);
message[sizeof (message) - 1] = '\0';
- plugin_log (level, message);
+ plugin_log (level, "%s", message);
return 1;
} /* vcomplain */
{
va_list ap;
- /* reset the old interval */
- if (c->interval < 0)
- c->interval *= -1;
-
va_start (ap, format);
- vcomplain (level, c, format, ap);
+ if (vcomplain (level, c, format, ap))
+ c->complained_once = 1;
va_end (ap);
} /* c_complain */
{
va_list ap;
- if (c->interval < 0)
+ if (c->complained_once)
return;
va_start (ap, format);
if (vcomplain (level, c, format, ap))
- c->interval *= -1;
+ c->complained_once = 1;
va_end (ap);
} /* c_complain_once */
return;
c->interval = 0;
+ c->complained_once = 0;
va_start (ap, format);
vsnprintf (message, sizeof (message), format, ap);
message[sizeof (message) - 1] = '\0';
va_end (ap);
- plugin_log (level, message);
+ plugin_log (level, "%s", message);
} /* c_release */
/* vim: set sw=4 ts=4 tw=78 noexpandtab : */