summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 9981430)
raw | patch | inline | side by side (parent: 9981430)
author | Sebastian Harl <sh@tokkee.org> | |
Sun, 10 Mar 2013 20:45:08 +0000 (21:45 +0100) | ||
committer | Sebastian Harl <sh@tokkee.org> | |
Sun, 10 Mar 2013 20:45:08 +0000 (21:45 +0100) |
diff --git a/src/backend/collectd.c b/src/backend/collectd.c
index e0e924e2c959e946f7e645a6879aba0be5ede13c..2a834f51982ca1248763674cecb34c41370215ac 100644 (file)
--- a/src/backend/collectd.c
+++ b/src/backend/collectd.c
#include "sysdb.h"
#include "core/plugin.h"
#include "core/store.h"
+#include "utils/error.h"
#include "utils/string.h"
#include "utils/unixsock.h"
status = sdb_store_host(&host);
if (status < 0) {
- fprintf(stderr, "collectd backend: Failed to store/update "
+ sdb_error_set(SDB_LOG_ERR, "collectd backend: Failed to store/update "
"host '%s'.\n", name);
return -1;
}
else if (status > 0) /* value too old */
return 0;
- fprintf(stderr, "collectd backend: Added/updated host '%s' "
+ sdb_error_set(SDB_LOG_DEBUG, "collectd backend: Added/updated host '%s' "
"(last update timestamp = %"PRIscTIME").\n",
name, last_update);
return 0;
status = sdb_store_service(&svc);
if (status < 0) {
- fprintf(stderr, "collectd backend: Failed to store/update "
+ sdb_error_set(SDB_LOG_ERR, "collectd backend: Failed to store/update "
"service '%s/%s'.\n", host, name);
return -1;
}
if (! state->current_host) {
char errbuf[1024];
- fprintf(stderr, "collectd backend: Failed to allocate "
+ sdb_error_set(SDB_LOG_ERR, "collectd backend: Failed to allocate "
"string buffer: %s\n",
sdb_strerror(errno, errbuf, sizeof(errbuf)));
return -1;
/* new host */
sdb_collectd_add_host(hostname, last_update);
- fprintf(stderr, "collectd backend: Added/updated "
+ sdb_error_set(SDB_LOG_DEBUG, "collectd backend: Added/updated "
"%i service%s (%i failed) for host '%s'.\n",
state->svc_updated, state->svc_updated == 1 ? "" : "s",
state->svc_failed, state->current_host);
client = SDB_OBJ_WRAPPER(user_data)->data;
if (sdb_unixsock_client_connect(client)) {
- fprintf(stderr, "collectd backend: "
+ sdb_error_set(SDB_LOG_ERR, "collectd backend: "
"Failed to connect to collectd.\n");
return -1;
}
- fprintf(stderr, "collectd backend: Successfully "
+ sdb_error_set(SDB_LOG_INFO, "collectd backend: Successfully "
"connected to collectd @ %s.\n",
sdb_unixsock_client_path(client));
return 0;
client = SDB_OBJ_WRAPPER(user_data)->data;
if (sdb_unixsock_client_send(client, "LISTVAL") <= 0) {
- fprintf(stderr, "collectd backend: Failed to send LISTVAL command "
- "to collectd @ %s.\n", sdb_unixsock_client_path(client));
+ sdb_error_set(SDB_LOG_ERR, "collectd backend: Failed to send LISTVAL "
+ "command to collectd @ %s.\n",
+ sdb_unixsock_client_path(client));
return -1;
}
line = sdb_unixsock_client_recv(client, buffer, sizeof(buffer));
if (! line) {
- fprintf(stderr, "collectd backend: Failed to read status "
+ sdb_error_set(SDB_LOG_ERR, "collectd backend: Failed to read status "
"of LISTVAL command from collectd @ %s.\n",
sdb_unixsock_client_path(client));
return -1;
errno = 0;
count = strtol(line, &endptr, /* base */ 0);
if (errno || (line == endptr)) {
- fprintf(stderr, "collectd backend: Failed to parse status "
+ sdb_error_set(SDB_LOG_ERR, "collectd backend: Failed to parse status "
"of LISTVAL command from collectd @ %s.\n",
sdb_unixsock_client_path(client));
return -1;
}
if (count < 0) {
- fprintf(stderr, "collectd backend: Failed to get value list "
- "from collectd @ %s: %s\n", sdb_unixsock_client_path(client),
+ sdb_error_set(SDB_LOG_ERR, "collectd backend: Failed to get value "
+ "list from collectd @ %s: %s\n",
+ sdb_unixsock_client_path(client),
msg ? msg : line);
return -1;
}
/* column count = */ 4,
SDB_TYPE_DATETIME, SDB_TYPE_STRING,
SDB_TYPE_STRING, SDB_TYPE_STRING)) {
- fprintf(stderr, "collectd backend: Failed to read response "
+ sdb_error_set(SDB_LOG_ERR, "collectd backend: Failed to read response "
"from collectd @ %s.\n", sdb_unixsock_client_path(client));
return -1;
}
if (state.current_host) {
sdb_collectd_add_host(state.current_host, state.current_timestamp);
- fprintf(stderr, "collectd backend: Added/updated "
+ sdb_error_set(SDB_LOG_DEBUG, "collectd backend: Added/updated "
"%i service%s (%i failed) for host '%s'.\n",
state.svc_updated, state.svc_updated == 1 ? "" : "s",
state.svc_failed, state.current_host);
int i;
if (oconfig_get_string(ci, &name)) {
- fprintf(stderr, "collectd backend: Instance requires a single "
- "string argument\n\tUsage: <Instance NAME>\n");
+ sdb_error_set(SDB_LOG_ERR, "collectd backend: Instance requires a "
+ "single string argument\n\tUsage: <Instance NAME>\n");
return -1;
}
if (! strcasecmp(child->key, "Socket"))
oconfig_get_string(child, &socket_path);
else
- fprintf(stderr, "collectd backend: Ignoring unknown config "
- "option '%s' inside <Instance %s>.\n",
+ sdb_error_set(SDB_LOG_WARNING, "collectd backend: Ignoring "
+ "unknown config option '%s' inside <Instance %s>.\n",
child->key, name);
}
if (! socket_path) {
- fprintf(stderr, "collectd backend: Instance '%s' missing "
+ sdb_error_set(SDB_LOG_ERR, "collectd backend: Instance '%s' missing "
"the 'Socket' option.\n", name);
return -1;
}
client = sdb_unixsock_client_create(socket_path);
if (! client) {
char errbuf[1024];
- fprintf(stderr, "collectd backend: Failed to create unixsock client: "
- "%s\n", sdb_strerror(errno, errbuf, sizeof(errbuf)));
+ sdb_error_set(SDB_LOG_ERR, "collectd backend: Failed to create "
+ "unixsock client: %s\n",
+ sdb_strerror(errno, errbuf, sizeof(errbuf)));
return -1;
}
(void (*)(void *))sdb_unixsock_client_destroy);
if (! user_data) {
sdb_unixsock_client_destroy(client);
- fprintf(stderr, "collectd backend: Failed to allocate sdb_object_t\n");
+ sdb_error_set(SDB_LOG_ERR, "collectd backend: Failed to allocate "
+ "sdb_object_t\n");
return -1;
}
if (! strcasecmp(child->key, "Instance"))
sdb_collectd_config_instance(child);
else
- fprintf(stderr, "collectd backend: Ignoring unknown config "
- "option '%s'.\n", child->key);
+ sdb_error_set(SDB_LOG_WARNING, "collectd backend: Ignoring "
+ "unknown config option '%s'.\n", child->key);
}
return 0;
} /* sdb_collectd_config */
index a5126fb037e8c3e9a70412b989692b3bdb1e6c3e..f65e7589437b5073770020424de0c01f86ad5146 100644 (file)
#include "sysdb.h"
#include "core/plugin.h"
#include "core/store.h"
+#include "utils/error.h"
#include "utils/string.h"
#include "utils/unixsock.h"
status = sdb_store_host(&host);
if (status < 0) {
- fprintf(stderr, "MK Livestatus backend: Failed to store/update "
- "host '%s'.\n", hostname);
+ sdb_error_set(SDB_LOG_ERR, "MK Livestatus backend: Failed to "
+ "store/update host '%s'.\n", hostname);
free(hostname);
return -1;
}
else if (status > 0) /* value too old */
return 0;
- fprintf(stderr, "MK Livestatus backend: Added/updated host '%s' "
- "(last update timestamp = %"PRIscTIME").\n",
+ sdb_error_set(SDB_LOG_DEBUG, "MK Livestatus backend: Added/updated "
+ "host '%s' (last update timestamp = %"PRIscTIME").\n",
hostname, timestamp);
free(hostname);
return 0;
status = sdb_store_service(&svc);
if (status < 0) {
- fprintf(stderr, "MK Livestatus backend: Failed to store/update "
- "service '%s / %s'.\n", hostname, svcname);
+ sdb_error_set(SDB_LOG_ERR, "MK Livestatus backend: Failed to "
+ "store/update service '%s / %s'.\n", hostname, svcname);
free(hostname);
free(svcname);
return -1;
else if (status > 0) /* value too old */
return 0;
- fprintf(stderr, "MK Livestatus backend: Added/updated service '%s / %s' "
- "(last update timestamp = %"PRIscTIME").\n",
+ sdb_error_set(SDB_LOG_DEBUG, "MK Livestatus backend: Added/updated "
+ "service '%s / %s' (last update timestamp = %"PRIscTIME").\n",
hostname, svcname, timestamp);
free(hostname);
free(svcname);
client = SDB_OBJ_WRAPPER(user_data)->data;
if (sdb_unixsock_client_connect(client)) {
- fprintf(stderr, "MK Livestatus backend: "
+ sdb_error_set(SDB_LOG_ERR, "MK Livestatus backend: "
"Failed to connect to livestatus @ %s.\n",
sdb_unixsock_client_path(client));
return -1;
}
- fprintf(stderr, "MK Livestatus backend: Successfully "
+ sdb_error_set(SDB_LOG_INFO, "MK Livestatus backend: Successfully "
"connected to livestatus @ %s.\n",
sdb_unixsock_client_path(client));
return 0;
status = sdb_unixsock_client_send(client, "GET hosts\r\n"
"Columns: name last_check");
if (status <= 0) {
- fprintf(stderr, "MK Livestatus backend: Failed to send "
+ sdb_error_set(SDB_LOG_ERR, "MK Livestatus backend: Failed to send "
"'GET hosts' command to livestatus @ %s.\n",
sdb_unixsock_client_path(client));
return -1;
if (sdb_unixsock_client_process_lines(client, sdb_livestatus_get_host,
/* user data */ NULL, /* -> EOF */ -1, /* delim */ ";",
/* column count */ 2, SDB_TYPE_STRING, SDB_TYPE_DATETIME)) {
- fprintf(stderr, "MK Livestatus backend: Failed to read response "
- "from livestatus @ %s while reading hosts.\n",
+ sdb_error_set(SDB_LOG_ERR, "MK Livestatus backend: Failed to read "
+ "response from livestatus @ %s while reading hosts.\n",
sdb_unixsock_client_path(client));
return -1;
}
if ((! sdb_unixsock_client_eof(client))
|| sdb_unixsock_client_error(client)) {
char errbuf[1024];
- fprintf(stderr, "MK Livestatus backend: Failed to read host "
- "from livestatus @ %s: %s\n",
+ sdb_error_set(SDB_LOG_ERR, "MK Livestatus backend: Failed to read "
+ "host from livestatus @ %s: %s\n",
sdb_unixsock_client_path(client),
sdb_strerror(errno, errbuf, sizeof(errbuf)));
return -1;
status = sdb_unixsock_client_send(client, "GET services\r\n"
"Columns: host_name description last_check");
if (status <= 0) {
- fprintf(stderr, "MK Livestatus backend: Failed to send "
+ sdb_error_set(SDB_LOG_ERR, "MK Livestatus backend: Failed to send "
"'GET services' command to livestatus @ %s.\n",
sdb_unixsock_client_path(client));
return -1;
/* user data */ NULL, /* -> EOF */ -1, /* delim */ ";",
/* column count */ 3, SDB_TYPE_STRING, SDB_TYPE_STRING,
SDB_TYPE_DATETIME)) {
- fprintf(stderr, "MK Livestatus backend: Failed to read response "
- "from livestatus @ %s while reading services.\n",
+ sdb_error_set(SDB_LOG_ERR, "MK Livestatus backend: Failed to read "
+ "response from livestatus @ %s while reading services.\n",
sdb_unixsock_client_path(client));
return -1;
}
if ((! sdb_unixsock_client_eof(client))
|| sdb_unixsock_client_error(client)) {
char errbuf[1024];
- fprintf(stderr, "MK Livestatus backend: Failed to read services "
- "from livestatus @ %s: %s\n",
+ sdb_error_set(SDB_LOG_ERR, "MK Livestatus backend: Failed to read "
+ "services from livestatus @ %s: %s\n",
sdb_unixsock_client_path(client),
sdb_strerror(errno, errbuf, sizeof(errbuf)));
return -1;
int i;
if (oconfig_get_string(ci, &name)) {
- fprintf(stderr, "MK Livestatus backend: Instance requires a single "
- "string argument\n\tUsage: <Instance NAME>\n");
+ sdb_error_set(SDB_LOG_ERR, "MK Livestatus backend: Instance requires "
+ "a single string argument\n\tUsage: <Instance NAME>\n");
return -1;
}
if (! strcasecmp(child->key, "Socket"))
oconfig_get_string(child, &socket_path);
else
- fprintf(stderr, "MK Livestatus backend: Ignoring unknown config "
- "option '%s' inside <Instance %s>.\n",
+ sdb_error_set(SDB_LOG_WARNING, "MK Livestatus backend: Ignoring "
+ "unknown config option '%s' inside <Instance %s>.\n",
child->key, name);
}
if (! socket_path) {
- fprintf(stderr, "MK Livestatus backend: Instance '%s' missing "
- "the 'Socket' option.\n", name);
+ sdb_error_set(SDB_LOG_ERR, "MK Livestatus backend: Instance '%s' "
+ "missing the 'Socket' option.\n", name);
return -1;
}
client = sdb_unixsock_client_create(socket_path);
if (! client) {
char errbuf[1024];
- fprintf(stderr, "MK Livestatus backend: Failed to create unixsock "
- "client: %s\n", sdb_strerror(errno, errbuf, sizeof(errbuf)));
+ sdb_error_set(SDB_LOG_ERR, "MK Livestatus backend: Failed to create "
+ "unixsock client: %s\n",
+ sdb_strerror(errno, errbuf, sizeof(errbuf)));
return -1;
}
(void (*)(void *))sdb_unixsock_client_destroy);
if (! user_data) {
sdb_unixsock_client_destroy(client);
- fprintf(stderr, "MK Livestatus backend: Failed to "
+ sdb_error_set(SDB_LOG_ERR, "MK Livestatus backend: Failed to "
"allocate sdb_object_t\n");
return -1;
}
if (! strcasecmp(child->key, "Instance"))
sdb_livestatus_config_instance(child);
else
- fprintf(stderr, "MK Livestatus backend: Ignoring unknown config "
- "option '%s'.\n", child->key);
+ sdb_error_set(SDB_LOG_WARNING, "MK Livestatus backend: Ignoring "
+ "unknown config option '%s'.\n", child->key);
}
return 0;
} /* sdb_livestatus_config */
index f03380871a1de9dc38c733cea763f592f7624c2f..4c92c151770c53a34b44b147df793658c3343752 100644 (file)
#include "sysdb.h"
#include "core/plugin.h"
#include "core/store.h"
+#include "utils/error.h"
#include "utils/dbi.h"
#include "utils/string.h"
status = sdb_store_host(&host);
if (status < 0) {
- fprintf(stderr, "puppet storeconfigs backend: Failed to store/update "
- "host '%s'.\n", host.host_name);
+ sdb_error_set(SDB_LOG_ERR, "puppet storeconfigs backend: Failed to "
+ "store/update host '%s'.\n", host.host_name);
free(host.host_name);
return -1;
}
else if (! status)
- fprintf(stderr, "puppet storeconfigs backend: Added/updated host '%s' "
- "(last update timestamp = %"PRIscTIME").\n",
- host.host_name, host.host_last_update);
+ sdb_error_set(SDB_LOG_DEBUG, "puppet storeconfigs backend: "
+ "Added/updated host '%s' (last update timestamp = "
+ "%"PRIscTIME").\n", host.host_name, host.host_last_update);
free(host.host_name);
return 0;
} /* sdb_puppet_stcfg_get_hosts */
status = sdb_store_attribute(&attr);
if (status < 0) {
- fprintf(stderr, "puppet storeconfigs backend: Failed to store/update "
- "host attribute '%s' for host '%s'.\n", attr.attr_name,
- attr.hostname);
+ sdb_error_set(SDB_LOG_ERR, "puppet storeconfigs backend: Failed to "
+ "store/update host attribute '%s' for host '%s'.\n",
+ attr.attr_name, attr.hostname);
free(attr.hostname);
free(attr.attr_name);
free(attr.attr_value);
client = SDB_OBJ_WRAPPER(user_data)->data;
if (sdb_dbi_client_connect(client)) {
- fprintf(stderr, "puppet storeconfigs backend: "
+ sdb_error_set(SDB_LOG_ERR, "puppet storeconfigs backend: "
"Failed to connect to the storeconfigs DB.\n");
return -1;
}
- fprintf(stderr, "puppet storeconfigs backend: Successfully "
+ sdb_error_set(SDB_LOG_INFO, "puppet storeconfigs backend: Successfully "
"connected to the storeconfigs DB.\n");
return 0;
} /* sdb_puppet_stcfg_init */
client = SDB_OBJ_WRAPPER(user_data)->data;
if (sdb_dbi_client_check_conn(client)) {
- fprintf(stderr, "puppet storeconfigs backend: "
+ sdb_error_set(SDB_LOG_ERR, "puppet storeconfigs backend: "
"Connection to storeconfigs DB failed.\n");
return -1;
}
if (sdb_dbi_exec_query(client, "SELECT name, updated_at FROM hosts;",
sdb_puppet_stcfg_get_hosts, NULL, /* #columns = */ 2,
/* col types = */ SDB_TYPE_STRING, SDB_TYPE_DATETIME)) {
- fprintf(stderr, "puppet storeconfigs backend: Failed to retrieve "
- "hosts from the storeconfigs DB.\n");
+ sdb_error_set(SDB_LOG_ERR, "puppet storeconfigs backend: Failed to "
+ "retrieve hosts from the storeconfigs DB.\n");
return -1;
}
sdb_puppet_stcfg_get_attrs, NULL, /* #columns = */ 4,
/* col types = */ SDB_TYPE_STRING, SDB_TYPE_STRING,
SDB_TYPE_STRING, SDB_TYPE_DATETIME)) {
- fprintf(stderr, "puppet storeconfigs backend: Failed to retrieve "
- "host attributes from the storeconfigs DB.\n");
+ sdb_error_set(SDB_LOG_ERR, "puppet storeconfigs backend: Failed to "
+ "retrieve host attributes from the storeconfigs DB.\n");
return -1;
}
return 0;
int i;
if (oconfig_get_string(ci, &name)) {
- fprintf(stderr, "puppet storeconfigs backend: Connection requires a "
- "single string argument\n\tUsage: <Connection NAME>\n");
+ sdb_error_set(SDB_LOG_ERR, "puppet storeconfigs backend: Connection "
+ "requires a single string argument\n"
+ "\tUsage: <Connection NAME>\n");
return -1;
}
if (! strcasecmp(child->key, "DBAdapter")) {
if (oconfig_get_string(child, &driver)) {
- fprintf(stderr, "puppet storeconfigs backend: DBAdapter "
- "requires a single string argument inside "
+ sdb_error_set(SDB_LOG_ERR, "puppet storeconfigs backend: "
+ "DBAdapter requires a single string argument inside "
"<Connection %s>\n\tUsage: DBAdapter NAME\n",
name);
}
}
else if (! strcasecmp(child->key, "DBName")) {
if (oconfig_get_string(child, &database)) {
- fprintf(stderr, "puppet storeconfigs backend: DBName"
- "requires a single string argument inside "
+ sdb_error_set(SDB_LOG_ERR, "puppet storeconfigs backend: "
+ "DBName requires a single string argument inside "
"<Connection %s>\n\tUsage: DBName NAME\n",
name);
}
if ((child->values_num != 2)
|| (child->values[0].type != OCONFIG_TYPE_STRING)
|| (child->values[1].type != OCONFIG_TYPE_STRING)) {
- fprintf(stderr, "puppet storeconfigs backend: DBIOption "
- "requires exactly two string arguments inside "
- "<Connection %s>\n\tUsage: DBIOption KEY VALUE\n",
- name);
+ sdb_error_set(SDB_LOG_ERR, "puppet storeconfigs backend: "
+ "DBIOption requires exactly two string arguments "
+ "inside <Connection %s>\n"
+ "\tUsage: DBIOption KEY VALUE\n", name);
continue;
}
value = child->values[1].value.string;
}
else {
- fprintf(stderr, "puppet storeconfigs backend: Ignoring unknown "
- "config option '%s' inside <Connection %s>.\n",
- child->key, name);
+ sdb_error_set(SDB_LOG_WARNING, "puppet storeconfigs backend: "
+ "Ignoring unknown config option '%s' inside "
+ "<Connection %s>.\n", child->key, name);
continue;
}
if (status) {
- fprintf(stderr, "puppet storeconfigs backend: Option '%s' "
- "requires a single string argument inside "
+ sdb_error_set(SDB_LOG_ERR, "puppet storeconfigs backend: Option "
+ "'%s' requires a single string argument inside "
"<Connection %s>\n\tUsage: DBAdapter NAME\n",
child->key, name);
continue;
if (! options) {
if (! (options = sdb_dbi_options_create())) {
char errmsg[1024];
- fprintf(stderr, "puppet storeconfigs backend: Failed to "
- "create DBI options object: %s\n",
+ sdb_error_set(SDB_LOG_ERR, "puppet storeconfigs backend: "
+ "Failed to create DBI options object: %s\n",
sdb_strerror(errno, errmsg, sizeof(errmsg)));
continue;
}
if (sdb_dbi_options_add(options, key, value)) {
char errmsg[1024];
- fprintf(stderr, "puppet storeconfigs backend: Failed to add "
- "option '%s': %s\n", key,
+ sdb_error_set(SDB_LOG_ERR, "puppet storeconfigs backend: "
+ "Failed to add option '%s': %s\n", key,
sdb_strerror(errno, errmsg, sizeof(errmsg)));
continue;
}
}
if (! driver) {
- fprintf(stderr, "puppet storeconfigs backend: Connection '%s' "
- "missing the 'DBAdapter' option.\n", name);
+ sdb_error_set(SDB_LOG_ERR, "puppet storeconfigs backend: "
+ "Connection '%s' " "missing the 'DBAdapter' option.\n",
+ name);
return -1;
}
if (! database) {
- fprintf(stderr, "puppet storeconfigs backend: Connection '%s' "
- "missing the 'DBName' option.\n", name);
+ sdb_error_set(SDB_LOG_ERR, "puppet storeconfigs backend: "
+ "Connection '%s' missing the 'DBName' option.\n", name);
return -1;
}
client = sdb_dbi_client_create(driver, database);
if (! client) {
char errbuf[1024];
- fprintf(stderr, "puppet storeconfigs backend: "
+ sdb_error_set(SDB_LOG_ERR, "puppet storeconfigs backend: "
"Failed to create DBI client: %s\n",
sdb_strerror(errno, errbuf, sizeof(errbuf)));
return -1;
(void (*)(void *))sdb_dbi_client_destroy);
if (! user_data) {
sdb_dbi_client_destroy(client);
- fprintf(stderr, "puppet storeconfigs backend: "
+ sdb_error_set(SDB_LOG_ERR, "puppet storeconfigs backend: "
"Failed to allocate sdb_object_t\n");
return -1;
}
if (! strcasecmp(child->key, "Connection"))
sdb_puppet_stcfg_config_conn(child);
else
- fprintf(stderr, "puppet storeconfigs backend: Ignoring unknown "
- "config option '%s'.\n", child->key);
+ sdb_error_set(SDB_LOG_WARNING, "puppet storeconfigs backend: "
+ "Ignoring unknown config option '%s'.\n", child->key);
}
return 0;
} /* sdb_puppet_stcfg_config */
sdb_plugin_set_info(info, SDB_PLUGIN_INFO_PLUGIN_VERSION, SDB_VERSION);
if (dbi_initialize(/* driver dir = */ NULL) < 0) {
- fprintf(stderr, "puppet storeconfigs backend: failed to initialize "
- "DBI; possibly you don't have any drivers installed.\n");
+ sdb_error_set(SDB_LOG_ERR, "puppet storeconfigs backend: failed to "
+ "initialize DBI; possibly you don't have any drivers "
+ "installed.\n");
return -1;
}
diff --git a/src/core/plugin.c b/src/core/plugin.c
index 5c9a233eadc873440fc5c6ce54a1937f4c160db3..7f5883aa20cefa0a4e1e07afb8b89a3afe54a598 100644 (file)
--- a/src/core/plugin.c
+++ b/src/core/plugin.c
#include "sysdb.h"
#include "core/plugin.h"
+#include "utils/error.h"
#include "utils/llist.h"
#include "utils/string.h"
#include "utils/time.h"
assert(obj);
if (sdb_plugin_find_by_name(*list, name)) {
- fprintf(stderr, "plugin: %s callback '%s' has already been "
- "registered. Ignoring newly registered version.\n",
- type, name);
+ sdb_error_set(SDB_LOG_WARNING, "plugin: %s callback '%s' "
+ "has already been registered. Ignoring newly "
+ "registered version.\n", type, name);
return -1;
}
/* pass control to the list */
sdb_object_deref(obj);
- fprintf(stderr, "plugin: Registered %s callback '%s'.\n", type, name);
+ sdb_error_set(SDB_LOG_INFO, "plugin: Registered %s callback '%s'.\n",
+ type, name);
return 0;
} /* sdb_plugin_add_callback */
if (access(filename, R_OK)) {
char errbuf[1024];
- fprintf(stderr, "plugin: Failed to load plugin '%s': %s\n",
+ sdb_error_set(SDB_LOG_ERR, "plugin: Failed to load plugin '%s': %s\n",
name, sdb_strerror(errno, errbuf, sizeof(errbuf)));
return -1;
}
lh = lt_dlopen(filename);
if (! lh) {
- fprintf(stderr, "plugin: Failed to load plugin '%s': %s\n"
+ sdb_error_set(SDB_LOG_ERR, "plugin: Failed to load plugin '%s': %s\n"
"The most common cause for this problem are missing "
"dependencies.\n", name, lt_dlerror());
return -1;
mod_init = (int (*)(sdb_plugin_info_t *))lt_dlsym(lh, "sdb_module_init");
if (! mod_init) {
- fprintf(stderr, "plugin: Failed to load plugin '%s': "
+ sdb_error_set(SDB_LOG_ERR, "plugin: Failed to load plugin '%s': "
"could not find symbol 'sdb_module_init'\n", name);
return -1;
}
status = mod_init(&plugin_info);
if (status) {
- fprintf(stderr, "plugin: Failed to initialize plugin '%s'\n", name);
+ sdb_error_set(SDB_LOG_ERR, "plugin: Failed to initialize "
+ "plugin '%s'\n", name);
return -1;
}
/* compare minor version */
if ((plugin_info.version < 0)
|| ((int)(plugin_info.version / 100) != (int)(SDB_VERSION / 100)))
- fprintf(stderr, "plugin: WARNING: version of plugin '%s' (%i.%i.%i) "
- "does not match our version (%i.%i.%i); "
- "this might cause problems\n",
+ sdb_error_set(SDB_LOG_WARNING, "plugin: WARNING: version of "
+ "plugin '%s' (%i.%i.%i) does not match our version "
+ "(%i.%i.%i); this might cause problems\n",
name, SDB_VERSION_DECODE(plugin_info.version),
SDB_VERSION_DECODE(SDB_VERSION));
- fprintf(stderr, "plugin: Successfully loaded "
+ sdb_error_set(SDB_LOG_INFO, "plugin: Successfully loaded "
"plugin '%s' v%i (%s)\n\t%s\n",
plugin_info.name, plugin_info.plugin_version,
plugin_info.description, plugin_info.copyright);
@@ -435,8 +438,8 @@ sdb_plugin_register_collector(const char *name, sdb_plugin_collector_cb callback
if (! (SDB_PLUGIN_CCB(obj)->ccb_next_update = sdb_gettime())) {
char errbuf[1024];
- fprintf(stderr, "plugin: Failed to determine current time: %s\n",
- sdb_strerror(errno, errbuf, sizeof(errbuf)));
+ sdb_error_set(SDB_LOG_ERR, "plugin: Failed to determine current "
+ "time: %s\n", sdb_strerror(errno, errbuf, sizeof(errbuf)));
sdb_object_deref(obj);
return -1;
}
@@ -450,7 +453,7 @@ sdb_plugin_register_collector(const char *name, sdb_plugin_collector_cb callback
/* pass control to the list */
sdb_object_deref(obj);
- fprintf(stderr, "plugin: Registered collector callback '%s' "
+ sdb_error_set(SDB_LOG_INFO, "plugin: Registered collector callback '%s' "
"(interval = %.3fs).\n", name,
SDB_TIME_TO_DOUBLE(SDB_PLUGIN_CCB(obj)->ccb_interval));
return 0;
plugin = sdb_plugin_find_by_name(config_list, name);
if (! plugin) {
- fprintf(stderr, "plugin: Plugin '%s' did not register "
+ /* XXX: check if any such plugin has been loaded */
+ sdb_error_set(SDB_LOG_ERR, "plugin: Plugin '%s' did not register "
"a config callback.\n", name);
errno = ENOENT;
return -1;
if (! (now = sdb_gettime())) {
char errbuf[1024];
- fprintf(stderr, "plugin: Failed to determine current time: %s\n",
- sdb_strerror(errno, errbuf, sizeof(errbuf)));
+ sdb_error_set(SDB_LOG_ERR, "plugin: Failed to determine current "
+ "time: %s\n", sdb_strerror(errno, errbuf, sizeof(errbuf)));
now = SDB_PLUGIN_CCB(obj)->ccb_next_update;
}
while (loop->do_loop && sdb_sleep(interval, &interval)) {
if (errno != EINTR) {
char errbuf[1024];
- fprintf(stderr, "plugin: Failed to sleep: %s\n",
+ sdb_error_set(SDB_LOG_ERR, "plugin: Failed to sleep: %s\n",
sdb_strerror(errno, errbuf, sizeof(errbuf)));
return -1;
}
if (! interval)
interval = loop->default_interval;
if (! interval) {
- fprintf(stderr, "plugin: No interval configured "
+ sdb_error_set(SDB_LOG_WARNING, "plugin: No interval configured "
"for plugin '%s'; skipping any further "
"iterations.\n", SDB_PLUGIN_CCB(obj)->ccb_name);
sdb_object_deref(obj);
if (! (now = sdb_gettime())) {
char errbuf[1024];
- fprintf(stderr, "plugin: Failed to determine current time: %s\n",
- sdb_strerror(errno, errbuf, sizeof(errbuf)));
+ sdb_error_set(SDB_LOG_ERR, "plugin: Failed to determine current "
+ "time: %s\n", sdb_strerror(errno, errbuf, sizeof(errbuf)));
now = SDB_PLUGIN_CCB(obj)->ccb_next_update;
}
if (now > SDB_PLUGIN_CCB(obj)->ccb_next_update) {
- fprintf(stderr, "plugin: Plugin '%s' took too long; "
- "skipping iterations to keep up.\n",
+ sdb_error_set(SDB_LOG_WARNING, "plugin: Plugin '%s' took too "
+ "long; skipping iterations to keep up.\n",
SDB_PLUGIN_CCB(obj)->ccb_name);
SDB_PLUGIN_CCB(obj)->ccb_next_update = now;
}
if (sdb_llist_insert_sorted(collector_list, obj,
sdb_plugin_cmp_next_update)) {
- fprintf(stderr, "plugin: Failed to re-insert "
- "plugin '%s' into collector list.\n",
+ sdb_error_set(SDB_LOG_ERR, "plugin: Failed to re-insert "
+ "plugin '%s' into collector list. Unable to further "
+ "use the plugin.\n",
SDB_PLUGIN_CCB(obj)->ccb_name);
sdb_object_deref(obj);
return -1;
diff --git a/src/core/store.c b/src/core/store.c
index cbd5f0c05595ccdca54ce2dba48b02d386fed972..a0bbf55ce39173c536c4758fce4efefcfeca81cf 100644 (file)
--- a/src/core/store.c
+++ b/src/core/store.c
#include "sysdb.h"
#include "core/store.h"
+#include "utils/error.h"
#include "utils/llist.h"
#include "utils/string.h"
if (old) {
if (old->host_last_update > last_update) {
- fprintf(stderr, "store: Cannot update host '%s' - "
+ sdb_error_set(SDB_LOG_DEBUG, "store: Cannot update host '%s' - "
"value too old (%"PRIscTIME" < %"PRIscTIME")\n",
host->host_name, last_update, old->host_last_update);
/* don't report an error; the host may be updated by multiple
sdb_host_t *new = sdb_host_clone(host);
if (! new) {
char errbuf[1024];
- fprintf(stderr, "store: Failed to clone host object: %s\n",
- sdb_strerror(errno, errbuf, sizeof(errbuf)));
+ sdb_error_set(SDB_LOG_ERR, "store: Failed to clone host object: "
+ "%s\n", sdb_strerror(errno, errbuf, sizeof(errbuf)));
pthread_rwlock_unlock(&host_lock);
return -1;
}
if (! new->attributes) {
if (! (new->attributes = sdb_llist_create())) {
char errbuf[1024];
- fprintf(stderr, "store: Failed to initialize "
+ sdb_error_set(SDB_LOG_ERR, "store: Failed to initialize "
"host object '%s': %s\n", host->host_name,
sdb_strerror(errno, errbuf, sizeof(errbuf)));
sdb_object_deref(SDB_OBJ(new));
if (! new->services) {
if (! (new->services = sdb_llist_create())) {
char errbuf[1024];
- fprintf(stderr, "store: Failed to initialize "
+ sdb_error_set(SDB_LOG_ERR, "store: Failed to initialize "
"host object '%s': %s\n", host->host_name,
sdb_strerror(errno, errbuf, sizeof(errbuf)));
sdb_object_deref(SDB_OBJ(new));
if (old) {
if (old->host_last_update > last_update) {
- fprintf(stderr, "store: Cannot update attribute '%s/%s' - "
- "value too old (%"PRIscTIME" < %"PRIscTIME")\n",
+ sdb_error_set(SDB_LOG_DEBUG, "store: Cannot update attribute "
+ "'%s/%s' - value too old (%"PRIscTIME" < %"PRIscTIME")\n",
attr->hostname, attr->attr_name, last_update,
old->host_last_update);
status = 1;
sdb_attribute_t *new = sdb_attribute_clone(attr);
if (! new) {
char errbuf[1024];
- fprintf(stderr, "store: Failed to clone attribute object: %s\n",
- sdb_strerror(errno, errbuf, sizeof(errbuf)));
+ sdb_error_set(SDB_LOG_ERR, "store: Failed to clone attribute "
+ "object: %s\n", sdb_strerror(errno, errbuf, sizeof(errbuf)));
pthread_rwlock_unlock(&host_lock);
return -1;
}
if (old) {
if (old->host_last_update > last_update) {
- fprintf(stderr, "store: Cannot update service '%s/%s' - "
- "value too old (%"PRIscTIME" < %"PRIscTIME")\n",
+ sdb_error_set(SDB_LOG_DEBUG, "store: Cannot update service "
+ "'%s/%s' - value too old (%"PRIscTIME" < %"PRIscTIME")\n",
svc->hostname, svc->svc_name, last_update,
old->host_last_update);
status = 1;
sdb_service_t *new = sdb_service_clone(svc);
if (! new) {
char errbuf[1024];
- fprintf(stderr, "store: Failed to clone service object: %s\n",
- sdb_strerror(errno, errbuf, sizeof(errbuf)));
+ sdb_error_set(SDB_LOG_ERR, "store: Failed to clone service "
+ "object: %s\n", sdb_strerror(errno, errbuf, sizeof(errbuf)));
pthread_rwlock_unlock(&host_lock);
return -1;
}
diff --git a/src/daemon/config.c b/src/daemon/config.c
index aa5cb990b8612ff446c659c2cd9137d4a25df7ff..ea870c2d21c636110a54d553fedf73fc82888165 100644 (file)
--- a/src/daemon/config.c
+++ b/src/daemon/config.c
#include "sysdb.h"
#include "core/plugin.h"
+#include "utils/error.h"
#include "utils/time.h"
#include "daemon/config.h"
assert(ci && interval);
if (oconfig_get_number(ci, &interval_dbl)) {
- fprintf(stderr, "config: Interval requires "
+ sdb_error_set(SDB_LOG_ERR, "config: Interval requires "
"a single numeric argument\n"
"\tUsage: Interval SECONDS\n");
return -1;
}
if (interval_dbl <= 0.0) {
- fprintf(stderr, "config: Invalid interval: %f\n"
+ sdb_error_set(SDB_LOG_ERR, "config: Invalid interval: %f\n"
"\tInterval may not be less than or equal to zero.\n",
interval_dbl);
return -1;
ctx.interval = default_interval;
if (oconfig_get_string(ci, &name)) {
- fprintf(stderr, "config: LoadBackend requires a single "
+ sdb_error_set(SDB_LOG_ERR, "config: LoadBackend requires a single "
"string argument\n"
"\tUsage: LoadBackend BACKEND\n");
return -1;
return -1;
}
else {
- fprintf(stderr, "config: Unknown option '%s' inside 'LoadBackend' "
- "-- see the documentation for details.\n", child->key);
- return -1;
+ sdb_error_set(SDB_LOG_WARNING, "config: Unknown option '%s' "
+ "inside 'LoadBackend' -- see the documentation for "
+ "details.\n", child->key);
+ continue;
}
}
assert(ci);
if (oconfig_get_string(ci, &name)) {
- fprintf(stderr, "config: %s requires a single "
+ sdb_error_set(SDB_LOG_ERR, "config: %s requires a single "
"string argument\n"
"\tUsage: LoadBackend BACKEND\n",
ci->key);
}
if (status) {
- fprintf(stderr, "config: Failed to parse option '%s'\n",
- child->key);
+ sdb_error_start(SDB_LOG_ERR, "config: Failed to parse option "
+ "'%s'\n", child->key);
if (status > 0)
- fprintf(stderr, "\tUnknown option '%s' -- "
+ sdb_error_append("\tUnknown option '%s' -- "
"see the documentation for details\n",
child->key);
+ sdb_error_finish();
retval = -1;
}
}
diff --git a/src/daemon/sysdbd.c b/src/daemon/sysdbd.c
index ef53a24693a909810108aa113c9c3a8a5843fa08..d4851f8e42f123fa71dbbceae972fb0a24897390 100644 (file)
--- a/src/daemon/sysdbd.c
+++ b/src/daemon/sysdbd.c
#include "sysdb.h"
#include "core/plugin.h"
#include "core/store.h"
+#include "utils/error.h"
#include "utils/string.h"
#include "daemon/config.h"
if ((pid = fork()) < 0) {
char errbuf[1024];
- fprintf(stderr, "Failed to fork to background: %s\n",
+ sdb_error_set(SDB_LOG_ERR, "Failed to fork to background: %s\n",
sdb_strerror(errno, errbuf, sizeof(errbuf)));
return errno;
}
if (chdir("/")) {
char errbuf[1024];
- fprintf(stderr, "Failed to change working directory to /: %s\n",
+ sdb_error_set(SDB_LOG_ERR, "Failed to change working directory to "
+ "the root directory: %s\n",
sdb_strerror(errno, errbuf, sizeof(errbuf)));
return errno;
}
close(0);
if (open("/dev/null", O_RDWR)) {
char errbuf[1024];
- fprintf(stderr, "Failed to connect stdin to '/dev/null': %s\n",
- sdb_strerror(errno, errbuf, sizeof(errbuf)));
+ sdb_error_set(SDB_LOG_ERR, "Failed to connect stdin to '/dev/null': "
+ "%s\n", sdb_strerror(errno, errbuf, sizeof(errbuf)));
return errno;
}
close(1);
if (dup(0) != 1) {
char errbuf[1024];
- fprintf(stderr, "Could not connect stdout to '/dev/null': %s\n",
- sdb_strerror(errno, errbuf, sizeof(errbuf)));
+ sdb_error_set(SDB_LOG_ERR, "Could not connect stdout to '/dev/null': "
+ "%s\n", sdb_strerror(errno, errbuf, sizeof(errbuf)));
return errno;
}
close(2);
if (dup(0) != 2) {
char errbuf[1024];
- fprintf(stdout, "Could not connect stderr to '/dev/null': %s\n",
- sdb_strerror(errno, errbuf, sizeof(errbuf)));
+ sdb_error_set(SDB_LOG_ERR, "Could not connect stderr to '/dev/null': "
+ "%s\n", sdb_strerror(errno, errbuf, sizeof(errbuf)));
return errno;
}
return 0;
config_filename = CONFIGFILE;
if (daemon_parse_config(config_filename)) {
- fprintf(stderr, "Failed to parse configuration file.\n");
+ sdb_error_set(SDB_LOG_ERR, "Failed to parse configuration file.\n");
exit(1);
}
if (sigaction(SIGINT, &sa_intterm, /* old action */ NULL)) {
char errbuf[1024];
- fprintf(stderr, "Failed to install signal handler for SIGINT: %s\n",
- sdb_strerror(errno, errbuf, sizeof(errbuf)));
+ sdb_error_set(SDB_LOG_ERR, "Failed to install signal handler for "
+ "SIGINT: %s\n", sdb_strerror(errno, errbuf, sizeof(errbuf)));
exit(1);
}
if (sigaction(SIGTERM, &sa_intterm, /* old action */ NULL)) {
char errbuf[1024];
- fprintf(stderr, "Failed to install signal handler for SIGTERM: %s\n",
- sdb_strerror(errno, errbuf, sizeof(errbuf)));
+ sdb_error_set(SDB_LOG_ERR, "Failed to install signal handler for "
+ "SIGTERM: %s\n", sdb_strerror(errno, errbuf, sizeof(errbuf)));
exit(1);
}
if (daemonize())
exit(1);
- fprintf(stderr, "SysDB daemon "SDB_VERSION_STRING SDB_VERSION_EXTRA
- " (pid %i) initialized successfully\n", (int)getpid());
+ sdb_error_set(SDB_LOG_INFO, "SysDB daemon "SDB_VERSION_STRING
+ SDB_VERSION_EXTRA " (pid %i) initialized successfully\n",
+ (int)getpid());
sdb_plugin_init_all();
sdb_plugin_collector_loop(&plugin_main_loop);
- fprintf(stderr, "Shutting down SysDB daemon "SDB_VERSION_STRING
+ sdb_error_set(SDB_LOG_INFO, "Shutting down SysDB daemon "SDB_VERSION_STRING
SDB_VERSION_EXTRA" (pid %i)\n", (int)getpid());
fprintf(stderr, "Store dump:\n");
diff --git a/src/utils/dbi.c b/src/utils/dbi.c
index 380a841321a1c6507f0c6f07a7f322e2d3e8ba6b..dc1d6e4fc3af78460366c714e21146d9dfe31869 100644 (file)
--- a/src/utils/dbi.c
+++ b/src/utils/dbi.c
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#include "utils/error.h"
#include "utils/dbi.h"
#include <assert.h>
}
break;
default:
- fprintf(stderr, "dbi: Unexpected type %i while "
+ sdb_error_set(SDB_LOG_ERR, "dbi: Unexpected type %i while "
"parsing query result.\n", type);
return -1;
}
for (i = 0; i < num_fields; ++i) {
types[i] = dbi_result_get_field_type_idx(res, i + 1);
if (types[i] == DBI_TYPE_ERROR) {
- fprintf(stderr, "dbi: failed to fetch data: %s\n",
+ sdb_error_set(SDB_LOG_ERR, "dbi: failed to fetch data: %s\n",
sdb_dbi_strerror(client->conn));
return -1;
}
for (n = 0; n < num_rows; ++n) {
if (! dbi_result_seek_row(res, n + 1)) {
- fprintf(stderr, "dbi: Failed to retrieve row %llu: %s\n",
- n, sdb_dbi_strerror(client->conn));
+ sdb_error_set(SDB_LOG_ERR, "dbi: Failed to retrieve row %llu: "
+ "%s\n", n, sdb_dbi_strerror(client->conn));
continue;
}
driver = dbi_driver_open(client->driver);
if (! driver) {
- fprintf(stderr, "dbi: failed to open DBI driver '%s'; "
+ sdb_error_start(SDB_LOG_ERR, "dbi: failed to open DBI driver '%s'; "
"possibly it's not installed.\n",
client->driver);
- fprintf(stderr, "dbi: known drivers:\n");
+ sdb_error_append("dbi: known drivers:\n");
for (driver = dbi_driver_list(NULL); driver;
driver = dbi_driver_list(driver)) {
- fprintf(stderr, "\t- %s\n", dbi_driver_get_name(driver));
+ sdb_error_append("\t- %s\n", dbi_driver_get_name(driver));
}
+ sdb_error_finish();
return -1;
}
client->conn = dbi_conn_open(driver);
if (! client->conn) {
- fprintf(stderr, "dbi: failed to open connection object.\n");
+ sdb_error_set(SDB_LOG_ERR, "dbi: failed to open connection "
+ "object.\n");
return -1;
}
continue;
/* else: error */
- fprintf(stderr, "dbi: failed to set option '%s': %s\n",
- client->options->options[i].key,
+ sdb_error_start(SDB_LOG_ERR, "dbi: failed to set option '%s': "
+ "%s\n", client->options->options[i].key,
sdb_dbi_strerror(client->conn));
- fprintf(stderr, "dbi: known driver options:\n");
+ sdb_error_append("dbi: known driver options:\n");
for (opt = dbi_conn_get_option_list(client->conn, NULL); opt;
opt = dbi_conn_get_option_list(client->conn, opt))
- fprintf(stderr, "\t- %s\n", opt);
+ sdb_error_append("\t- %s\n", opt);
+ sdb_error_finish();
dbi_conn_close(client->conn);
return -1;
}
if (dbi_conn_set_option(client->conn, "dbname", client->database)) {
- fprintf(stderr, "dbi: failed to set option 'dbname': %s\n",
+ sdb_error_set(SDB_LOG_ERR, "dbi: failed to set option 'dbname': %s\n",
sdb_dbi_strerror(client->conn));
dbi_conn_close(client->conn);
return -1;
}
if (dbi_conn_connect(client->conn) < 0) {
- fprintf(stderr, "dbi: failed to connect to database '%s': %s\n",
- client->database, sdb_dbi_strerror(client->conn));
+ sdb_error_set(SDB_LOG_ERR, "dbi: failed to connect to database '%s': "
+ "%s\n", client->database, sdb_dbi_strerror(client->conn));
dbi_conn_close(client->conn);
return -1;
}
res = dbi_conn_query(client->conn, query);
if (! res) {
- fprintf(stderr, "dbi: failed to execute query '%s': %s\n",
+ sdb_error_set(SDB_LOG_ERR, "dbi: failed to execute query '%s': %s\n",
query, sdb_dbi_strerror(client->conn));
return -1;
}
if (dbi_result_get_numrows(res) == DBI_ROW_ERROR) {
- fprintf(stderr, "dbi: failed to fetch rows for query '%s': %s\n",
- query, sdb_dbi_strerror(client->conn));
+ sdb_error_set(SDB_LOG_ERR, "dbi: failed to fetch rows for query "
+ "'%s': %s\n", query, sdb_dbi_strerror(client->conn));
dbi_result_free(res);
return -1;
}
int i;
if (n != (int)num_fields) {
- fprintf(stderr, "dbi: number of returned fields (%i) does not "
- "match the number of requested fields (%i) "
+ sdb_error_set(SDB_LOG_ERR, "dbi: number of returned fields (%i) "
+ "does not match the number of requested fields (%i) "
"for query '%s'.\n", num_fields, n, query);
dbi_result_free(res);
return -1;
/* column count starts at 1 */
if ((unsigned int)field_type != type) {
- fprintf(stderr, "dbi: type of column '%s' (%u) does not match "
- "requested type (%u).\n",
+ sdb_error_set(SDB_LOG_ERR, "dbi: type of column '%s' (%u) "
+ "does not match requested type (%u).\n",
dbi_result_get_field_name(res, (unsigned int)i + 1),
field_type, type);
status = -1;
diff --git a/src/utils/unixsock.c b/src/utils/unixsock.c
index 564aba70bab4c4a592e86da6bf4be93187f50513..b4b9772a0e9dbe1684abed2e7af3d8b9fad8fc06 100644 (file)
--- a/src/utils/unixsock.c
+++ b/src/utils/unixsock.c
*/
#include "utils/unixsock.h"
+#include "utils/error.h"
#include "utils/string.h"
#include <assert.h>
data->data.binary.datum = (const unsigned char *)string;
break;
default:
- fprintf(stderr, "unixsock: Unexpected type %i while "
+ sdb_error_set(SDB_LOG_ERR, "unixsock: Unexpected type %i while "
"parsing query result.\n", type);
return -1;
}
|| (type == SDB_TYPE_DATETIME)) {
if (errno || (string == endptr)) {
char errbuf[1024];
- fprintf(stderr, "unixsock: Failed to parse string '%s' "
- "as numeric value (type %i): %s\n", string, type,
+ sdb_error_set(SDB_LOG_ERR, "unixsock: Failed to parse string "
+ "'%s' as numeric value (type %i): %s\n", string, type,
sdb_strerror(errno, errbuf, sizeof(errbuf)));
return -1;
}
else if (endptr && (*endptr != '\0'))
- fprintf(stderr, "unixsock: Ignoring garbage after number "
- "while parsing numeric value (type %i): %s.\n",
+ sdb_error_set(SDB_LOG_WARNING, "unixsock: Ignoring garbage after "
+ "number while parsing numeric value (type %i): %s.\n",
type, endptr);
}
char *next;
if (! line) { /* this must no happen */
- fprintf(stderr, "unixsock: Unexpected EOL while parsing line "
- "(expected %i columns delimited by '%s'; got %i): %s\n",
- column_count, delim, /* last line number */ i, orig_line);
+ sdb_error_set(SDB_LOG_ERR, "unixsock: Unexpected EOL while "
+ "parsing line (expected %i columns delimited by '%s'; "
+ "got %i): %s\n", column_count, delim,
+ /* last line number */ i, orig_line);
return -1;
}
fd = socket(AF_UNIX, SOCK_STREAM, /* protocol = */ 0);
if (fd < 0) {
char errbuf[1024];
- fprintf(stderr, "unixsock: Failed to open socket: %s\n",
+ sdb_error_set(SDB_LOG_ERR, "unixsock: Failed to open socket: %s\n",
sdb_strerror(errno, errbuf, sizeof(errbuf)));
return -1;
}
if (connect(fd, (struct sockaddr *)&sa, sizeof(sa))) {
char errbuf[1024];
- fprintf(stderr, "unixsock: Failed to connect to %s: %s\n",
+ sdb_error_set(SDB_LOG_ERR, "unixsock: Failed to connect to %s: %s\n",
sa.sun_path, sdb_strerror(errno, errbuf, sizeof(errbuf)));
close(fd);
return -1;
client->fh = fdopen(fd, "r+");
if (! client->fh) {
char errbuf[1024];
- fprintf(stderr, "unixsock: Failed to open I/O stream for %s: %s\n",
- sa.sun_path, sdb_strerror(errno, errbuf, sizeof(errbuf)));
+ sdb_error_set(SDB_LOG_ERR, "unixsock: Failed to open I/O "
+ "stream for %s: %s\n", sa.sun_path,
+ sdb_strerror(errno, errbuf, sizeof(errbuf)));
close(fd);
return -1;
}
status = fprintf(client->fh, "%s\r\n", msg);
if (status < 0) {
char errbuf[1024];
- fprintf(stderr, "unixsock: Failed to write to socket (%s): %s\n",
- client->path, sdb_strerror(errno, errbuf, sizeof(errbuf)));
+ sdb_error_set(SDB_LOG_ERR, "unixsock: Failed to write to "
+ "socket (%s): %s\n", client->path,
+ sdb_strerror(errno, errbuf, sizeof(errbuf)));
return status;
}
return status;
if (! buffer) {
if (! feof(client->fh)) {
char errbuf[1024];
- fprintf(stderr, "unixsock: Failed to read from socket (%s): %s\n",
- client->path, sdb_strerror(errno, errbuf, sizeof(errbuf)));
+ sdb_error_set(SDB_LOG_ERR, "unixsock: Failed to read "
+ "from socket (%s): %s\n", client->path,
+ sdb_strerror(errno, errbuf, sizeof(errbuf)));
}
return buffer;
}
types[i] = va_arg(ap, int);
if ((types[i] < 1) || (types[i] > SDB_TYPE_BINARY)) {
- fprintf(stderr, "unixsock: Unknown column type %i while "
- "processing response from the UNIX socket @ %s.\n",
- types[i], client->path);
+ sdb_error_set(SDB_LOG_ERR, "unixsock: Unknown column "
+ "type %i while processing response from the "
+ "UNIX socket @ %s.\n", types[i], client->path);
va_end(ap);
free(types);
return -1;
column_count = sdb_unixsock_get_column_count(line, delim);
if ((n_cols >= 0) && (n_cols != column_count)) {
- fprintf(stderr, "unixsock: number of columns (%i) does not "
- "match the number of requested columns (%i) while "
- "processing response from the UNIX socket @ %s: %s\n",
- column_count, n_cols, client->path, line);
+ sdb_error_set(SDB_LOG_ERR, "unixsock: number of columns (%i) "
+ "does not match the number of requested columns (%i) "
+ "while processing response from the UNIX socket @ %s: "
+ "%s\n", column_count, n_cols, client->path, line);
continue;
}
|| ((max_lines < 0) && (! sdb_unixsock_client_eof(client)))
|| sdb_unixsock_client_error(client)) {
char errbuf[1024];
- fprintf(stderr, "unixsock: Unexpected end of data while reading "
- "from socket (%s): %s\n", client->path,
+ sdb_error_set(SDB_LOG_ERR, "unixsock: Unexpected end of data while "
+ "reading from socket (%s): %s\n", client->path,
sdb_strerror(errno, errbuf, sizeof(errbuf)));
return -1;
}