mirror of
https://github.com/munin-monitoring/contrib.git
synced 2025-07-22 14:16:00 +00:00
The compilation is very easy, a simple `make` should work, as I provided a convenient `Makefile`
93 lines
1.7 KiB
C
93 lines
1.7 KiB
C
/*
|
|
* Copyright (C) 2008-2013 Helmut Grohne <helmut@subdivi.de> - All rights reserved.
|
|
*
|
|
* This copyrighted material is made available to anyone wishing to use,
|
|
* modify, copy, or redistribute it subject to the terms and conditions
|
|
* of the GNU General Public License v.2 or v.3.
|
|
*/
|
|
#include <errno.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
#include "common.h"
|
|
|
|
extern char **environ;
|
|
|
|
int writeyes(void)
|
|
{
|
|
puts("yes");
|
|
return 0;
|
|
}
|
|
|
|
int autoconf_check_readable(const char *path)
|
|
{
|
|
if (0 == access(path, R_OK))
|
|
return writeyes();
|
|
else {
|
|
printf("no (%s is not readable, errno=%d)\n", path, errno);
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
int getenvint(const char *name, int defvalue)
|
|
{
|
|
const char *value;
|
|
value = getenv(name);
|
|
if (value == NULL)
|
|
return defvalue;
|
|
return atoi(value);
|
|
}
|
|
|
|
static
|
|
/*@null@ */
|
|
/*@observer@ */
|
|
const char *getenv_composed(const char *name1, const char *name2)
|
|
{
|
|
char **p;
|
|
size_t len1 = strlen(name1), len2 = strlen(name2);
|
|
for (p = environ; *p; ++p) {
|
|
if (0 == strncmp(*p, name1, len1) &&
|
|
0 == strncmp(len1 + *p, name2, len2) &&
|
|
(*p)[len1 + len2] == '=')
|
|
return len1 + len2 + 1 + *p;
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
void print_warning(const char *name)
|
|
{
|
|
const char *p;
|
|
p = getenv_composed(name, "_warning");
|
|
if (p == NULL)
|
|
p = getenv("warning");
|
|
if (p == NULL)
|
|
return;
|
|
|
|
printf("%s.warning %s\n", name, p);
|
|
}
|
|
|
|
void print_critical(const char *name)
|
|
{
|
|
const char *p;
|
|
p = getenv_composed(name, "_critical");
|
|
if (p == NULL)
|
|
p = getenv("critical");
|
|
if (p == NULL)
|
|
return;
|
|
|
|
printf("%s.critical %s\n", name, p);
|
|
}
|
|
|
|
void print_warncrit(const char *name)
|
|
{
|
|
print_warning(name);
|
|
print_critical(name);
|
|
}
|
|
|
|
int fail(const char *message)
|
|
{
|
|
fputs(message, stderr);
|
|
fputc('\n', stderr);
|
|
return 1;
|
|
}
|