diff options
Diffstat (limited to 'plugins/utils.c')
-rw-r--r-- | plugins/utils.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/plugins/utils.c b/plugins/utils.c index 8b31c5a2..dbb25202 100644 --- a/plugins/utils.c +++ b/plugins/utils.c | |||
@@ -265,7 +265,62 @@ is_option (char *str) | |||
265 | return FALSE; | 265 | return FALSE; |
266 | } | 266 | } |
267 | 267 | ||
268 | void set_threshold_start (threshold *this, double value) { | ||
269 | this->start = value; | ||
270 | this->start_infinity = FALSE; | ||
271 | } | ||
272 | |||
273 | void set_threshold_end (threshold *this, double value) { | ||
274 | this->end = value; | ||
275 | this->end_infinity = FALSE; | ||
276 | } | ||
277 | |||
278 | threshold | ||
279 | *parse_threshold (char *str) { | ||
280 | threshold *temp_threshold; | ||
281 | double start; | ||
282 | double end; | ||
283 | char *end_str; | ||
268 | 284 | ||
285 | temp_threshold = (threshold *) malloc(sizeof(threshold)); | ||
286 | |||
287 | /* Set defaults */ | ||
288 | temp_threshold->start = 0; | ||
289 | temp_threshold->start_infinity = FALSE; | ||
290 | temp_threshold->end = 0; | ||
291 | temp_threshold->end_infinity = TRUE; | ||
292 | temp_threshold->alert_on = OUTSIDE; | ||
293 | |||
294 | if (str[0] == '@') { | ||
295 | temp_threshold->alert_on = INSIDE; | ||
296 | str++; | ||
297 | } | ||
298 | |||
299 | end_str = index(str, ':'); | ||
300 | if (end_str != NULL) { | ||
301 | if (str[0] == '~') { | ||
302 | temp_threshold->start_infinity = TRUE; | ||
303 | } else { | ||
304 | start = strtod(str, NULL); /* Will stop at the ':' */ | ||
305 | set_threshold_start(temp_threshold, start); | ||
306 | } | ||
307 | end_str++; /* Move past the ':' */ | ||
308 | } else { | ||
309 | end_str = str; | ||
310 | } | ||
311 | end = strtod(end_str, NULL); | ||
312 | if (strcmp(end_str, "") != 0) { | ||
313 | set_threshold_end(temp_threshold, end); | ||
314 | } | ||
315 | |||
316 | if (temp_threshold->start_infinity == TRUE || | ||
317 | temp_threshold->end_infinity == TRUE || | ||
318 | temp_threshold->start <= temp_threshold->end) { | ||
319 | return temp_threshold; | ||
320 | } | ||
321 | free(temp_threshold); | ||
322 | return NULL; | ||
323 | } | ||
269 | 324 | ||
270 | #ifdef NEED_GETTIMEOFDAY | 325 | #ifdef NEED_GETTIMEOFDAY |
271 | int | 326 | int |