projects
/
collectd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Common stuff now builds as a library.
[collectd.git]
/
src
/
daemon
/
collectd.c
diff --git
a/src/daemon/collectd.c
b/src/daemon/collectd.c
index
2edfa37
..
9ab929b
100644
(file)
--- a/
src/daemon/collectd.c
+++ b/
src/daemon/collectd.c
@@
-47,16
+47,6
@@
#define COLLECTD_LOCALE "C"
#endif
#define COLLECTD_LOCALE "C"
#endif
-/*
- * Global variables
- */
-char hostname_g[DATA_MAX_NAME_LEN];
-cdtime_t interval_g;
-int timeout_g;
-#if HAVE_LIBKSTAT
-kstat_ctl_t *kc;
-#endif /* HAVE_LIBKSTAT */
-
static int loop = 0;
static void *do_flush(void __attribute__((unused)) * arg) {
static int loop = 0;
static void *do_flush(void __attribute__((unused)) * arg) {
@@
-93,11
+83,11
@@
static int init_hostname(void) {
str = global_option_get("Hostname");
if ((str != NULL) && (str[0] != 0)) {
str = global_option_get("Hostname");
if ((str != NULL) && (str[0] != 0)) {
- sstrncpy(hostname_g, str,
sizeof(hostname_g)
);
+ sstrncpy(hostname_g, str,
hostname_g_size
);
return 0;
}
return 0;
}
- if (gethostname(hostname_g,
sizeof(hostname_g)
) != 0) {
+ if (gethostname(hostname_g,
hostname_g_size
) != 0) {
fprintf(stderr, "`gethostname' failed and no "
"hostname was configured.\n");
return -1;
fprintf(stderr, "`gethostname' failed and no "
"hostname was configured.\n");
return -1;
@@
-125,7
+115,7
@@
static int init_hostname(void) {
if (ai_ptr->ai_canonname == NULL)
continue;
if (ai_ptr->ai_canonname == NULL)
continue;
- sstrncpy(hostname_g, ai_ptr->ai_canonname,
sizeof(hostname_g)
);
+ sstrncpy(hostname_g, ai_ptr->ai_canonname,
hostname_g_size
);
break;
}
break;
}
@@
-158,7
+148,7
@@
static int init_global_variables(void) {
return 0;
} /* int init_global_variables */
return 0;
} /* int init_global_variables */
-static int change_basedir(const char *orig_dir) {
+static int change_basedir(const char *orig_dir
, _Bool create
) {
char *dir;
size_t dirlen;
int status;
char *dir;
size_t dirlen;
int status;
@@
-183,7
+173,7
@@
static int change_basedir(const char *orig_dir) {
if (status == 0) {
free(dir);
return 0;
if (status == 0) {
free(dir);
return 0;
- } else if (
errno != ENOENT
) {
+ } else if (
!create || (errno != ENOENT)
) {
char errbuf[1024];
ERROR("change_basedir: chdir (%s): %s", dir,
sstrerror(errno, errbuf, sizeof(errbuf)));
char errbuf[1024];
ERROR("change_basedir: chdir (%s): %s", dir,
sstrerror(errno, errbuf, sizeof(errbuf)));
@@
-250,6
+240,7
@@
__attribute__((noreturn)) static void exit_usage(int status) {
#if COLLECT_DAEMON
" -f Don't fork to the background.\n"
#endif
#if COLLECT_DAEMON
" -f Don't fork to the background.\n"
#endif
+ " -B Don't create the BaseDir\n"
" -h Display help (this message)\n"
"\nBuiltin defaults:\n"
" Config file " CONFIGFILE "\n"
" -h Display help (this message)\n"
"\nBuiltin defaults:\n"
" Config file " CONFIGFILE "\n"
@@
-459,6
+450,7
@@
int main(int argc, char **argv) {
int test_config = 0;
int test_readall = 0;
const char *basedir;
int test_config = 0;
int test_readall = 0;
const char *basedir;
+ _Bool opt_create_basedir = 1;
#if COLLECT_DAEMON
pid_t pid;
int daemonize = 1;
#if COLLECT_DAEMON
pid_t pid;
int daemonize = 1;
@@
-469,7
+461,7
@@
int main(int argc, char **argv) {
while (1) {
int c;
while (1) {
int c;
- c = getopt(argc, argv, "htTC:"
+ c = getopt(argc, argv, "
B
htTC:"
#if COLLECT_DAEMON
"fP:"
#endif
#if COLLECT_DAEMON
"fP:"
#endif
@@
-479,6
+471,9
@@
int main(int argc, char **argv) {
break;
switch (c) {
break;
switch (c) {
+ case 'B':
+ opt_create_basedir = 0;
+ break;
case 'C':
configfile = optarg;
break;
case 'C':
configfile = optarg;
break;
@@
-533,7
+528,7
@@
int main(int argc, char **argv) {
fprintf(stderr,
"Don't have a basedir to use. This should not happen. Ever.");
return 1;
fprintf(stderr,
"Don't have a basedir to use. This should not happen. Ever.");
return 1;
- } else if (change_basedir(basedir)) {
+ } else if (change_basedir(basedir
, opt_create_basedir
)) {
fprintf(stderr, "Error: Unable to change to directory `%s'.\n", basedir);
return 1;
}
fprintf(stderr, "Error: Unable to change to directory `%s'.\n", basedir);
return 1;
}
@@
-612,7
+607,7
@@
int main(int argc, char **argv) {
status);
return 1;
}
status);
return 1;
}
- } /* if (daemonize) */
+ } /* if (
config.
daemonize) */
#endif /* COLLECT_DAEMON */
struct sigaction sig_pipe_action = {.sa_handler = SIG_IGN};
#endif /* COLLECT_DAEMON */
struct sigaction sig_pipe_action = {.sa_handler = SIG_IGN};
@@
-676,7
+671,7
@@
int main(int argc, char **argv) {
}
#if COLLECT_DAEMON
}
#if COLLECT_DAEMON
- if (daemonize)
+ if (
config.
daemonize)
pidfile_remove();
#endif /* COLLECT_DAEMON */
pidfile_remove();
#endif /* COLLECT_DAEMON */