- style(9)

This commit is contained in:
Babak Farrokhi 2015-09-16 09:39:43 +04:30
parent d94abab5ed
commit 7506f09907

View File

@ -121,7 +121,6 @@ fill_iftot(struct iftot *st)
else else
continue; continue;
} }
st->ift_ip += IFA_STAT(ipackets); st->ift_ip += IFA_STAT(ipackets);
st->ift_ib += IFA_STAT(ibytes); st->ift_ib += IFA_STAT(ibytes);
st->ift_op += IFA_STAT(opackets); st->ift_op += IFA_STAT(opackets);
@ -140,7 +139,8 @@ fill_iftot(struct iftot *st)
int int
config(char *iface) config(char *iface)
{ {
printf("graph_order rbytes obytes\n" printf(
"graph_order rbytes obytes\n"
"graph_title %s Interface (%d seconds sampling)\n" "graph_title %s Interface (%d seconds sampling)\n"
"graph_category network\n" "graph_category network\n"
"graph_vlabel bits per second\n" "graph_vlabel bits per second\n"
@ -156,7 +156,9 @@ config(char *iface)
"obytes.negative rbytes\n" "obytes.negative rbytes\n"
"obytes.cdef obytes,8,*\n" "obytes.cdef obytes,8,*\n"
"obytes.min 0\n" "obytes.min 0\n"
"obytes.draw AREA\n", iface, RESOLUTION, RESOLUTION, RESOLUTION); "obytes.draw AREA\n"
,iface, RESOLUTION, RESOLUTION, RESOLUTION
);
return (0); return (0);
} }
@ -169,6 +171,7 @@ wait_for(int seconds)
{ {
struct timespec tp; struct timespec tp;
clock_gettime(CLOCK_REALTIME, &tp); clock_gettime(CLOCK_REALTIME, &tp);
time_t current_epoch = tp.tv_sec; time_t current_epoch = tp.tv_sec;
@ -180,7 +183,6 @@ wait_for(int seconds)
tp.tv_nsec = nsec_to_sleep; tp.tv_nsec = nsec_to_sleep;
nanosleep(&tp, NULL); nanosleep(&tp, NULL);
} }
return current_epoch + seconds; return current_epoch + seconds;
} }
@ -199,6 +201,7 @@ daemon_start()
tot = &ift; tot = &ift;
char *no_fork = getenv("no_fork"); char *no_fork = getenv("no_fork");
if (!no_fork || strcmp("1", no_fork)) { if (!no_fork || strcmp("1", no_fork)) {
/* Check if parent process id is set */ /* Check if parent process id is set */
@ -206,24 +209,19 @@ daemon_start()
/* PPID exists, therefore we are already a daemon */ /* PPID exists, therefore we are already a daemon */
return (EXIT_FAILURE); return (EXIT_FAILURE);
} }
/* Check if we can acquire the pid file */ /* Check if we can acquire the pid file */
pfh = pidfile_open(pid_filename, 0600, &otherpid); pfh = pidfile_open(pid_filename, 0600, &otherpid);
if (pfh == NULL) { if (pfh == NULL) {
if (errno == EEXIST) { if (errno == EEXIST) {
errx(EXIT_FAILURE, errx(EXIT_FAILURE, "Daemon already running, pid: %jd.", (intmax_t)otherpid);
"Daemon already running, pid: %jd.",
(intmax_t) otherpid);
} }
warn("Cannot open or create pidfile: %s", pid_filename); warn("Cannot open or create pidfile: %s", pid_filename);
} }
/* fork ourselves if not asked otherwise */ /* fork ourselves if not asked otherwise */
if (fork()) { if (fork()) {
return (EXIT_SUCCESS); return (EXIT_SUCCESS);
} }
/* we are the child, complete the daemonization */ /* we are the child, complete the daemonization */
/* Close standard IO */ /* Close standard IO */
@ -233,13 +231,14 @@ daemon_start()
/* Block unnecessary signals */ /* Block unnecessary signals */
sigemptyset(&sig_set); sigemptyset(&sig_set);
sigaddset(&sig_set, SIGCHLD); /* ignore child - i.e. we don't need sigaddset(&sig_set, SIGCHLD); /* ignore child - i.e. we
* to wait for it */ * don't need to wait for it */
sigaddset(&sig_set, SIGTSTP); /* ignore Tty stop signals */ sigaddset(&sig_set, SIGTSTP); /* ignore Tty stop signals */
sigaddset(&sig_set, SIGTTOU); /* ignore Tty background writes */ sigaddset(&sig_set, SIGTTOU); /* ignore Tty background
* writes */
sigaddset(&sig_set, SIGTTIN); /* ignore Tty background reads */ sigaddset(&sig_set, SIGTTIN); /* ignore Tty background reads */
sigprocmask(SIG_BLOCK, &sig_set, NULL); /* Block the above specified sigprocmask(SIG_BLOCK, &sig_set, NULL); /* Block the above
* signals */ * specified signals */
/* Catch necessary signals */ /* Catch necessary signals */
sig_action.sa_handler = signal_handler; sig_action.sa_handler = signal_handler;
@ -257,7 +256,6 @@ daemon_start()
pidfile_write(pfh); pidfile_write(pfh);
} }
FILE *cache_file = fopen(cache_filename, "a"); FILE *cache_file = fopen(cache_filename, "a");
/* looping to collect traffic stat every RESOLUTION seconds */ /* looping to collect traffic stat every RESOLUTION seconds */
@ -268,8 +266,7 @@ daemon_start()
flockfile(cache_file); flockfile(cache_file);
fill_iftot(tot); fill_iftot(tot);
fprintf(cache_file, "obytes.value %ld:%lu\nrbytes.value %ld:%lu\n", fprintf(cache_file, "obytes.value %ld:%lu\nrbytes.value %ld:%lu\n", epoch, tot->ift_ob, epoch, tot->ift_ib);
epoch, tot->ift_ob, epoch, tot->ift_ib);
fflush(cache_file); fflush(cache_file);
funlockfile(cache_file); funlockfile(cache_file);
@ -290,6 +287,7 @@ fetch()
/* cat the cache_file to stdout */ /* cat the cache_file to stdout */
char buffer[1024]; char buffer[1024];
while (fgets(buffer, 1024, cache_file)) { while (fgets(buffer, 1024, cache_file)) {
printf("%s", buffer); printf("%s", buffer);
} }
@ -315,12 +313,12 @@ main(int argc, char *argv[])
if (strchr(program_name, '_')) { if (strchr(program_name, '_')) {
interface = strchr(program_name, '_') + 1; interface = strchr(program_name, '_') + 1;
} }
/*
/* program should always run with a valid executable name */ * program should always run with a valid executable name
*/
if (strlen(interface) < 1) { if (strlen(interface) < 1) {
errx(EX_USAGE, "Please run from symlink"); errx(EX_USAGE, "Please run from symlink");
} }
/* resolve paths */ /* resolve paths */
char *MUNIN_PLUGSTATE = getenv("MUNIN_PLUGSTATE"); char *MUNIN_PLUGSTATE = getenv("MUNIN_PLUGSTATE");
@ -333,14 +331,13 @@ main(int argc, char *argv[])
if (argc > 1) { if (argc > 1) {
char *first_arg = argv[1]; char *first_arg = argv[1];
if (!strcmp(first_arg, "config")) { if (!strcmp(first_arg, "config")) {
return config(interface); return config(interface);
} }
if (!strcmp(first_arg, "acquire")) { if (!strcmp(first_arg, "acquire")) {
return daemon_start(); return daemon_start();
} }
} }
return fetch(); return fetch();
} }