projects
/
collectd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
write_graphite plugin: Add option to reverse host
[collectd.git]
/
src
/
daemon
/
common.c
diff --git
a/src/daemon/common.c
b/src/daemon/common.c
index
2251d2e
..
99f48ca
100644
(file)
--- a/
src/daemon/common.c
+++ b/
src/daemon/common.c
@@
-27,10
+27,6
@@
* Michał Mirosław <mirq-linux at rere.qmqm.pl>
**/
* Michał Mirosław <mirq-linux at rere.qmqm.pl>
**/
-#if HAVE_CONFIG_H
-#include "config.h"
-#endif
-
#include "collectd.h"
#include "common.h"
#include "collectd.h"
#include "common.h"
@@
-68,12
+64,17
@@
extern kstat_ctl_t *kc;
#endif
extern kstat_ctl_t *kc;
#endif
+#if !defined(MSG_DONTWAIT)
+#if defined(MSG_NONBLOCK)
/* AIX doesn't have MSG_DONTWAIT */
/* AIX doesn't have MSG_DONTWAIT */
-#ifndef MSG_DONTWAIT
#define MSG_DONTWAIT MSG_NONBLOCK
#define MSG_DONTWAIT MSG_NONBLOCK
-#endif
+#else
+/* Windows doesn't have MSG_DONTWAIT or MSG_NONBLOCK */
+#define MSG_DONTWAIT 0
+#endif /* defined(MSG_NONBLOCK) */
+#endif /* !defined(MSG_DONTWAIT) */
-#if !HAVE_GETPWNAM_R
+#if !HAVE_GETPWNAM_R
&& defined(HAVE_GETPWNAM)
static pthread_mutex_t getpwnam_r_lock = PTHREAD_MUTEX_INITIALIZER;
#endif
static pthread_mutex_t getpwnam_r_lock = PTHREAD_MUTEX_INITIALIZER;
#endif
@@
-417,7
+418,7
@@
int strunescape(char *buf, size_t buf_len) {
continue;
if (((i + 1) >= buf_len) || (buf[i + 1] == 0)) {
continue;
if (((i + 1) >= buf_len) || (buf[i + 1] == 0)) {
- ERROR("string unescape: backslash found at end of string.");
+
P_
ERROR("string unescape: backslash found at end of string.");
/* Ensure null-byte at the end of the buffer. */
buf[i] = 0;
return -1;
/* Ensure null-byte at the end of the buffer. */
buf[i] = 0;
return -1;
@@
-606,9
+607,9
@@
int check_create_dir(const char *file_orig) {
* behavior.
*/
if (fields[i][0] == '.') {
* behavior.
*/
if (fields[i][0] == '.') {
- ERROR("Cowardly refusing to create a directory that "
- "begins with a `.' (dot): `%s'",
- file_orig);
+
P_
ERROR("Cowardly refusing to create a directory that "
+
"begins with a `.' (dot): `%s'",
+
file_orig);
return -2;
}
return -2;
}
@@
-619,7
+620,7
@@
int check_create_dir(const char *file_orig) {
if (strjoin(dir + path_is_absolute,
(size_t)(sizeof(dir) - path_is_absolute), fields,
(size_t)(i + 1), "/") < 0) {
if (strjoin(dir + path_is_absolute,
(size_t)(sizeof(dir) - path_is_absolute), fields,
(size_t)(i + 1), "/") < 0) {
- ERROR("strjoin failed: `%s', component #%i", file_orig, i);
+
P_
ERROR("strjoin failed: `%s', component #%i", file_orig, i);
return -1;
}
return -1;
}
@@
-635,16
+636,16
@@
int check_create_dir(const char *file_orig) {
if (EEXIST == errno)
continue;
if (EEXIST == errno)
continue;
- ERROR("check_create_dir: mkdir (%s): %s", dir, STRERRNO);
+
P_
ERROR("check_create_dir: mkdir (%s): %s", dir, STRERRNO);
return -1;
} else {
return -1;
} else {
- ERROR("check_create_dir: stat (%s): %s", dir, STRERRNO);
+
P_
ERROR("check_create_dir: stat (%s): %s", dir, STRERRNO);
return -1;
}
} else if (!S_ISDIR(statbuf.st_mode)) {
return -1;
}
} else if (!S_ISDIR(statbuf.st_mode)) {
- ERROR("check_create_dir: `%s' exists but is not "
- "a directory!",
- dir);
+
P_
ERROR("check_create_dir: `%s' exists but is not "
+
"a directory!",
+
dir);
return -1;
}
break;
return -1;
}
break;
@@
-667,12
+668,12
@@
int get_kstat(kstat_t **ksp_ptr, char *module, int instance, char *name) {
*ksp_ptr = kstat_lookup(kc, module, instance, name);
if (*ksp_ptr == NULL) {
*ksp_ptr = kstat_lookup(kc, module, instance, name);
if (*ksp_ptr == NULL) {
- ERROR("get_kstat: Cound not find kstat %s", ident);
+
P_
ERROR("get_kstat: Cound not find kstat %s", ident);
return -1;
}
if ((*ksp_ptr)->ks_type != KSTAT_TYPE_NAMED) {
return -1;
}
if ((*ksp_ptr)->ks_type != KSTAT_TYPE_NAMED) {
- ERROR("get_kstat: kstat %s has wrong type", ident);
+
P_
ERROR("get_kstat: kstat %s has wrong type", ident);
*ksp_ptr = NULL;
return -1;
}
*ksp_ptr = NULL;
return -1;
}
@@
-683,12
+684,12
@@
int get_kstat(kstat_t **ksp_ptr, char *module, int instance, char *name) {
#endif
if (kstat_read(kc, *ksp_ptr, NULL) == -1) {
#endif
if (kstat_read(kc, *ksp_ptr, NULL) == -1) {
- ERROR("get_kstat: kstat %s could not be read", ident);
+
P_
ERROR("get_kstat: kstat %s could not be read", ident);
return -1;
}
if ((*ksp_ptr)->ks_type != KSTAT_TYPE_NAMED) {
return -1;
}
if ((*ksp_ptr)->ks_type != KSTAT_TYPE_NAMED) {
- ERROR("get_kstat: kstat %s has wrong type", ident);
+
P_
ERROR("get_kstat: kstat %s has wrong type", ident);
return -1;
}
return -1;
}
@@
-700,12
+701,12
@@
long long get_kstat_value(kstat_t *ksp, char *name) {
long long retval = -1LL;
if (ksp == NULL) {
long long retval = -1LL;
if (ksp == NULL) {
- ERROR("get_kstat_value (\"%s\"): ksp is NULL.", name);
+
P_
ERROR("get_kstat_value (\"%s\"): ksp is NULL.", name);
return -1LL;
} else if (ksp->ks_type != KSTAT_TYPE_NAMED) {
return -1LL;
} else if (ksp->ks_type != KSTAT_TYPE_NAMED) {
- ERROR("get_kstat_value (\"%s\"): ksp->ks_type (%#x) "
- "is not KSTAT_TYPE_NAMED (%#x).",
- name, (unsigned int)ksp->ks_type, (unsigned int)KSTAT_TYPE_NAMED);
+
P_
ERROR("get_kstat_value (\"%s\"): ksp->ks_type (%#x) "
+
"is not KSTAT_TYPE_NAMED (%#x).",
+
name, (unsigned int)ksp->ks_type, (unsigned int)KSTAT_TYPE_NAMED);
return -1LL;
}
return -1LL;
}
@@
-723,7
+724,7
@@
long long get_kstat_value(kstat_t *ksp, char *name) {
else if (kn->data_type == KSTAT_DATA_UINT64)
retval = (long long)kn->value.ui64; /* XXX: Might overflow! */
else
else if (kn->data_type == KSTAT_DATA_UINT64)
retval = (long long)kn->value.ui64; /* XXX: Might overflow! */
else
- WARNING("get_kstat_value: Not a numeric value: %s", name);
+
P_
WARNING("get_kstat_value: Not a numeric value: %s", name);
return retval;
}
return retval;
}
@@
-1035,19
+1036,19
@@
int parse_value(const char *value_orig, value_t *ret_value, int ds_type) {
default:
sfree(value);
default:
sfree(value);
- ERROR("parse_value: Invalid data source type: %i.", ds_type);
+
P_
ERROR("parse_value: Invalid data source type: %i.", ds_type);
return -1;
}
if (value == endptr) {
return -1;
}
if (value == endptr) {
- ERROR("parse_value: Failed to parse string as %s: \"%s\".",
- DS_TYPE_TO_STRING(ds_type), value);
+
P_
ERROR("parse_value: Failed to parse string as %s: \"%s\".",
+
DS_TYPE_TO_STRING(ds_type), value);
sfree(value);
return -1;
} else if ((NULL != endptr) && ('\0' != *endptr))
sfree(value);
return -1;
} else if ((NULL != endptr) && ('\0' != *endptr))
- INFO("parse_value: Ignoring trailing garbage \"%s\" after %s value. "
- "Input string was \"%s\".",
- endptr, DS_TYPE_TO_STRING(ds_type), value_orig);
+
P_
INFO("parse_value: Ignoring trailing garbage \"%s\" after %s value. "
+
"Input string was \"%s\".",
+
endptr, DS_TYPE_TO_STRING(ds_type), value_orig);
sfree(value);
return 0;
sfree(value);
return 0;
@@
-1132,6
+1133,9
@@
int parse_value_file(char const *path, value_t *ret_value, int ds_type) {
#if !HAVE_GETPWNAM_R
int getpwnam_r(const char *name, struct passwd *pwbuf, char *buf, size_t buflen,
struct passwd **pwbufp) {
#if !HAVE_GETPWNAM_R
int getpwnam_r(const char *name, struct passwd *pwbuf, char *buf, size_t buflen,
struct passwd **pwbufp) {
+#ifndef HAVE_GETPWNAM
+ return -1;
+#else
int status = 0;
struct passwd *pw;
int status = 0;
struct passwd *pw;
@@
-1174,6
+1178,7
@@
int getpwnam_r(const char *name, struct passwd *pwbuf, char *buf, size_t buflen,
pthread_mutex_unlock(&getpwnam_r_lock);
return status;
pthread_mutex_unlock(&getpwnam_r_lock);
return status;
+#endif /* HAVE_GETPWNAM */
} /* int getpwnam_r */
#endif /* !HAVE_GETPWNAM_R */
} /* int getpwnam_r */
#endif /* !HAVE_GETPWNAM_R */
@@
-1212,7
+1217,7
@@
int walk_directory(const char *dir, dirwalk_callback_f callback,
failure = 0;
if ((dh = opendir(dir)) == NULL) {
failure = 0;
if ((dh = opendir(dir)) == NULL) {
- ERROR("walk_directory: Cannot open '%s': %s", dir, STRERRNO);
+
P_
ERROR("walk_directory: Cannot open '%s': %s", dir, STRERRNO);
return -1;
}
return -1;
}
@@
-1252,7
+1257,7
@@
ssize_t read_file_contents(const char *filename, char *buf, size_t bufsize) {
ret = (ssize_t)fread(buf, 1, bufsize, fh);
if ((ret == 0) && (ferror(fh) != 0)) {
ret = (ssize_t)fread(buf, 1, bufsize, fh);
if ((ret == 0) && (ferror(fh) != 0)) {
- ERROR("read_file_contents: Reading file \"%s\" failed.", filename);
+
P_
ERROR("read_file_contents: Reading file \"%s\" failed.", filename);
ret = -1;
}
ret = -1;
}
@@
-1411,8
+1416,8
@@
int service_name_to_port_number(const char *service_name) {
status = getaddrinfo(/* node = */ NULL, service_name, &ai_hints, &ai_list);
if (status != 0) {
status = getaddrinfo(/* node = */ NULL, service_name, &ai_hints, &ai_list);
if (status != 0) {
- ERROR("service_name_to_port_number: getaddrinfo failed: %s",
- gai_strerror(status));
+
P_
ERROR("service_name_to_port_number: getaddrinfo failed: %s",
+
gai_strerror(status));
return -1;
}
return -1;
}
@@
-1450,7
+1455,7
@@
void set_sock_opts(int sockfd) /* {{{ */
status = getsockopt(sockfd, SOL_SOCKET, SO_TYPE, &socktype,
&(socklen_t){sizeof(socktype)});
if (status != 0) {
status = getsockopt(sockfd, SOL_SOCKET, SO_TYPE, &socktype,
&(socklen_t){sizeof(socktype)});
if (status != 0) {
- WARNING("set_sock_opts: failed to determine socket type");
+
P_
WARNING("set_sock_opts: failed to determine socket type");
return;
}
return;
}
@@
-1458,14
+1463,14
@@
void set_sock_opts(int sockfd) /* {{{ */
status =
setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, &(int){1}, sizeof(int));
if (status != 0)
status =
setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, &(int){1}, sizeof(int));
if (status != 0)
- WARNING("set_sock_opts: failed to set socket keepalive flag");
+
P_
WARNING("set_sock_opts: failed to set socket keepalive flag");
#ifdef TCP_KEEPIDLE
int tcp_keepidle = ((CDTIME_T_TO_MS(plugin_get_interval()) - 1) / 100 + 1);
status = setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPIDLE, &tcp_keepidle,
sizeof(tcp_keepidle));
if (status != 0)
#ifdef TCP_KEEPIDLE
int tcp_keepidle = ((CDTIME_T_TO_MS(plugin_get_interval()) - 1) / 100 + 1);
status = setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPIDLE, &tcp_keepidle,
sizeof(tcp_keepidle));
if (status != 0)
- WARNING("set_sock_opts: failed to set socket tcp keepalive time");
+
P_
WARNING("set_sock_opts: failed to set socket tcp keepalive time");
#endif
#ifdef TCP_KEEPINTVL
#endif
#ifdef TCP_KEEPINTVL
@@
-1474,7
+1479,7
@@
void set_sock_opts(int sockfd) /* {{{ */
status = setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPINTVL, &tcp_keepintvl,
sizeof(tcp_keepintvl));
if (status != 0)
status = setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPINTVL, &tcp_keepintvl,
sizeof(tcp_keepintvl));
if (status != 0)
- WARNING("set_sock_opts: failed to set socket tcp keepalive interval");
+
P_
WARNING("set_sock_opts: failed to set socket tcp keepalive interval");
#endif
}
} /* }}} void set_sock_opts */
#endif
}
} /* }}} void set_sock_opts */
@@
-1558,12
+1563,12
@@
int check_capability(int arg) /* {{{ */
return -1;
if (!(cap = cap_get_proc())) {
return -1;
if (!(cap = cap_get_proc())) {
- ERROR("check_capability: cap_get_proc failed.");
+
P_
ERROR("check_capability: cap_get_proc failed.");
return -1;
}
if (cap_get_flag(cap, cap_value, CAP_EFFECTIVE, &cap_flag_value) < 0) {
return -1;
}
if (cap_get_flag(cap, cap_value, CAP_EFFECTIVE, &cap_flag_value) < 0) {
- ERROR("check_capability: cap_get_flag failed.");
+
P_
ERROR("check_capability: cap_get_flag failed.");
cap_free(cap);
return -1;
}
cap_free(cap);
return -1;
}
@@
-1574,8
+1579,8
@@
int check_capability(int arg) /* {{{ */
#else
int check_capability(__attribute__((unused)) int arg) /* {{{ */
{
#else
int check_capability(__attribute__((unused)) int arg) /* {{{ */
{
- WARNING("check_capability: unsupported capability implementation. "
- "Some plugin(s) may require elevated privileges to work properly.");
+
P_
WARNING("check_capability: unsupported capability implementation. "
+
"Some plugin(s) may require elevated privileges to work properly.");
return 0;
} /* }}} int check_capability */
#endif /* HAVE_CAPABILITY */
return 0;
} /* }}} int check_capability */
#endif /* HAVE_CAPABILITY */