X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fdaemon%2Fcollectd.c;h=517eec7e69b793c7ac5677c8a168ec8205e0ddc2;hb=72a71d40195511fae335e1384cb2eba606ad5caa;hp=8f671b35398a9a91221959e317ad5cc849aeffdc;hpb=fa56155c34eed72740d375208a63571d5f9d59e0;p=collectd.git diff --git a/src/daemon/collectd.c b/src/daemon/collectd.c index 8f671b35..517eec7e 100644 --- a/src/daemon/collectd.c +++ b/src/daemon/collectd.c @@ -76,37 +76,41 @@ static void sig_usr1_handler(int __attribute__((unused)) signal) { } static int init_hostname(void) { - const char *str; - - struct addrinfo *ai_list; - int status; - - str = global_option_get("Hostname"); + const char *str = global_option_get("Hostname"); if ((str != NULL) && (str[0] != 0)) { hostname_set(str); return 0; } - if (gethostname(hostname_g, sizeof(hostname_g)) != 0) { + long hostname_len = sysconf(_SC_HOST_NAME_MAX); + if (hostname_len == -1) { + hostname_len = NI_MAXHOST; + } + char hostname[hostname_len]; + + if (gethostname(hostname, hostname_len) != 0) { fprintf(stderr, "`gethostname' failed and no " "hostname was configured.\n"); return -1; } + hostname_set(hostname); + str = global_option_get("FQDNLookup"); if (IS_FALSE(str)) return 0; + struct addrinfo *ai_list; struct addrinfo ai_hints = {.ai_flags = AI_CANONNAME}; - status = getaddrinfo(hostname_g, NULL, &ai_hints, &ai_list); + int status = getaddrinfo(hostname, NULL, &ai_hints, &ai_list); if (status != 0) { ERROR("Looking up \"%s\" failed. You have set the " "\"FQDNLookup\" option, but I cannot resolve " "my hostname to a fully qualified domain " "name. Please fix the network " "configuration.", - hostname_g); + hostname); return -1; } @@ -155,8 +159,7 @@ static int change_basedir(const char *orig_dir, _Bool create) { dir = strdup(orig_dir); if (dir == NULL) { - char errbuf[1024]; - ERROR("strdup failed: %s", sstrerror(errno, errbuf, sizeof(errbuf))); + ERROR("strdup failed: %s", STRERRNO); return -1; } @@ -174,27 +177,21 @@ static int change_basedir(const char *orig_dir, _Bool create) { free(dir); return 0; } else if (!create || (errno != ENOENT)) { - char errbuf[1024]; - ERROR("change_basedir: chdir (%s): %s", dir, - sstrerror(errno, errbuf, sizeof(errbuf))); + ERROR("change_basedir: chdir (%s): %s", dir, STRERRNO); free(dir); return -1; } status = mkdir(dir, S_IRWXU | S_IRWXG | S_IRWXO); if (status != 0) { - char errbuf[1024]; - ERROR("change_basedir: mkdir (%s): %s", dir, - sstrerror(errno, errbuf, sizeof(errbuf))); + ERROR("change_basedir: mkdir (%s): %s", dir, STRERRNO); free(dir); return -1; } status = chdir(dir); if (status != 0) { - char errbuf[1024]; - ERROR("change_basedir: chdir (%s): %s", dir, - sstrerror(errno, errbuf, sizeof(errbuf))); + ERROR("change_basedir: chdir (%s): %s", dir, STRERRNO); free(dir); return -1; } @@ -318,8 +315,7 @@ static int do_loop(void) { while ((loop == 0) && (nanosleep(&ts_wait, &ts_wait) != 0)) { if (errno != EINTR) { - char errbuf[1024]; - ERROR("nanosleep failed: %s", sstrerror(errno, errbuf, sizeof(errbuf))); + ERROR("nanosleep failed: %s", STRERRNO); return -1; } } @@ -338,8 +334,7 @@ static int pidfile_create(void) { const char *file = global_option_get("PIDFile"); if ((fh = fopen(file, "w")) == NULL) { - char errbuf[1024]; - ERROR("fopen (%s): %s", file, sstrerror(errno, errbuf, sizeof(errbuf))); + ERROR("fopen (%s): %s", file, STRERRNO); return 1; } @@ -407,9 +402,7 @@ static int notify_systemd(void) { fd = socket(AF_UNIX, SOCK_DGRAM, /* protocol = */ 0); #endif if (fd < 0) { - char errbuf[1024]; - ERROR("creating UNIX socket failed: %s", - sstrerror(errno, errbuf, sizeof(errbuf))); + ERROR("creating UNIX socket failed: %s", STRERRNO); return 0; } @@ -432,9 +425,7 @@ static int notify_systemd(void) { if (sendto(fd, buffer, strlen(buffer), MSG_NOSIGNAL, (void *)&su, (socklen_t)su_size) < 0) { - char errbuf[1024]; - ERROR("sendto(\"%s\") failed: %s", notifysocket, - sstrerror(errno, errbuf, sizeof(errbuf))); + ERROR("sendto(\"%s\") failed: %s", notifysocket, STRERRNO); close(fd); return 0; } @@ -584,8 +575,7 @@ int main(int argc, char **argv) { if ((pid = fork()) == -1) { /* error */ - char errbuf[1024]; - fprintf(stderr, "fork: %s", sstrerror(errno, errbuf, sizeof(errbuf))); + fprintf(stderr, "fork: %s", STRERRNO); return 1; } else if (pid != 0) { /* parent */ @@ -638,27 +628,24 @@ int main(int argc, char **argv) { struct sigaction sig_int_action = {.sa_handler = sig_int_handler}; if (0 != sigaction(SIGINT, &sig_int_action, NULL)) { - char errbuf[1024]; ERROR("Error: Failed to install a signal handler for signal INT: %s", - sstrerror(errno, errbuf, sizeof(errbuf))); + STRERRNO); return 1; } struct sigaction sig_term_action = {.sa_handler = sig_term_handler}; if (0 != sigaction(SIGTERM, &sig_term_action, NULL)) { - char errbuf[1024]; ERROR("Error: Failed to install a signal handler for signal TERM: %s", - sstrerror(errno, errbuf, sizeof(errbuf))); + STRERRNO); return 1; } struct sigaction sig_usr1_action = {.sa_handler = sig_usr1_handler}; if (0 != sigaction(SIGUSR1, &sig_usr1_action, NULL)) { - char errbuf[1024]; ERROR("Error: Failed to install a signal handler for signal USR1: %s", - sstrerror(errno, errbuf, sizeof(errbuf))); + STRERRNO); return 1; }