aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common.c73
-rw-r--r--src/kike.c35
-rw-r--r--src/zyklonb.c50
3 files changed, 35 insertions, 123 deletions
diff --git a/src/common.c b/src/common.c
index 800aea5..6bef268 100644
--- a/src/common.c
+++ b/src/common.c
@@ -505,33 +505,14 @@ str_remove_slice (struct str *self, size_t start, size_t length)
struct error
{
- size_t domain; ///< The domain of the error
- int id; ///< The concrete error ID
char *message; ///< Textual description of the event
};
-static size_t
-error_resolve_domain (size_t *tag)
-{
- // This method is fairly sensitive to the order in which resolution
- // requests come in, does not provide a good way of decoding the number
- // back to a meaningful identifier, and may not play all too well with
- // dynamic libraries when a module is e.g. statically linked into multiple
- // libraries, but it's fast, simple, and more than enough for our purposes.
- static size_t domain_counter;
-
- if (!*tag)
- *tag = ++domain_counter;
- return *tag;
-}
-
static void
-error_set (struct error **e, size_t domain, int id,
- const char *message, ...) ATTRIBUTE_PRINTF (4, 5);
+error_set (struct error **e, const char *message, ...) ATTRIBUTE_PRINTF (2, 3);
static void
-error_set (struct error **e, size_t domain, int id,
- const char *message, ...)
+error_set (struct error **e, const char *message, ...)
{
if (!e)
return;
@@ -544,8 +525,6 @@ error_set (struct error **e, size_t domain, int id,
hard_assert (size >= 0);
struct error *tmp = xmalloc (sizeof *tmp);
- tmp->domain = domain;
- tmp->id = id;
tmp->message = xmalloc (size + 1);
va_start (ap, message);
@@ -1438,14 +1417,6 @@ resolve_config_filename (const char *filename)
return result;
}
-static size_t io_error_domain_tag;
-#define IO_ERROR (error_resolve_domain (&io_error_domain_tag))
-
-enum
-{
- IO_ERROR_FAILED
-};
-
static bool
ensure_directory_existence (const char *path, struct error **e)
{
@@ -1455,16 +1426,14 @@ ensure_directory_existence (const char *path, struct error **e)
{
if (mkdir (path, S_IRWXU | S_IRWXG | S_IRWXO))
{
- error_set (e, IO_ERROR, IO_ERROR_FAILED,
- "cannot create directory `%s': %s",
+ error_set (e, "cannot create directory `%s': %s",
path, strerror (errno));
return false;
}
}
else if (!S_ISDIR (st.st_mode))
{
- error_set (e, IO_ERROR, IO_ERROR_FAILED,
- "cannot create directory `%s': %s",
+ error_set (e, "cannot create directory `%s': %s",
path, "file exists but is not a directory");
return false;
}
@@ -1574,14 +1543,6 @@ xssl_get_error (SSL *ssl, int result, const char **error_info)
// --- Regular expressions -----------------------------------------------------
-static size_t regex_error_domain_tag;
-#define REGEX_ERROR (error_resolve_domain (&regex_error_domain_tag))
-
-enum
-{
- REGEX_ERROR_COMPILATION_FAILED
-};
-
static regex_t *
regex_compile (const char *regex, int flags, struct error **e)
{
@@ -1599,8 +1560,7 @@ regex_compile (const char *regex, int flags, struct error **e)
desc.str + desc.len, desc.alloc - desc.len) - 1;
free (re);
- error_set (e, REGEX_ERROR, REGEX_ERROR_COMPILATION_FAILED,
- "%s: %s", "failed to compile regular expression", desc.str);
+ error_set (e, "%s: %s", "failed to compile regular expression", desc.str);
str_free (&desc);
return NULL;
}
@@ -1793,14 +1753,6 @@ irc_strcmp (const char *a, const char *b)
// The keys are stripped of surrounding whitespace, the values are not.
-static size_t config_error_domain_tag;
-#define CONFIG_ERROR (error_resolve_domain (&config_error_domain_tag))
-
-enum
-{
- CONFIG_ERROR_MALFORMED
-};
-
struct config_item
{
const char *key;
@@ -1828,8 +1780,8 @@ read_config_file (struct str_map *config, struct error **e)
FILE *fp = fopen (filename, "r");
if (!fp)
{
- error_set (e, IO_ERROR, IO_ERROR_FAILED,
- "could not open `%s' for reading: %s", filename, strerror (errno));
+ error_set (e, "could not open `%s' for reading: %s",
+ filename, strerror (errno));
return false;
}
@@ -1851,8 +1803,8 @@ read_config_file (struct str_map *config, struct error **e)
{
if (*start)
{
- error_set (e, CONFIG_ERROR, CONFIG_ERROR_MALFORMED,
- "line %u in config: %s", line_no, "malformed input");
+ error_set (e, "line %u in config: %s",
+ line_no, "malformed input");
errors = true;
break;
}
@@ -1907,8 +1859,8 @@ write_default_config (const char *filename, const char *prolog,
FILE *fp = fopen (path.str, "w");
if (!fp)
{
- error_set (e, IO_ERROR, IO_ERROR_FAILED,
- "could not open `%s' for writing: %s", path.str, strerror (errno));
+ error_set (e, "could not open `%s' for writing: %s",
+ path.str, strerror (errno));
goto error;
}
@@ -1927,8 +1879,7 @@ write_default_config (const char *filename, const char *prolog,
fclose (fp);
if (errno)
{
- error_set (e, IO_ERROR, IO_ERROR_FAILED,
- "writing to `%s' failed: %s", path.str, strerror (errno));
+ error_set (e, "writing to `%s' failed: %s", path.str, strerror (errno));
goto error;
}
diff --git a/src/kike.c b/src/kike.c
index 07ec21f..4e49ffe 100644
--- a/src/kike.c
+++ b/src/kike.c
@@ -425,15 +425,6 @@ server_context_free (struct server_context *self)
// --- Main program ------------------------------------------------------------
-static size_t network_error_domain_tag;
-#define NETWORK_ERROR (error_resolve_domain (&network_error_domain_tag))
-
-enum
-{
- NETWORK_ERROR_INVALID_CONFIGURATION,
- NETWORK_ERROR_FAILED
-};
-
static void
client_kill (struct client *c, const char *reason)
{
@@ -1140,8 +1131,7 @@ irc_initialize_catalog (struct server_context *ctx, struct error **e)
char *path = resolve_config_filename (catalog);
if (!path)
{
- error_set (e, IO_ERROR, IO_ERROR_FAILED, "%s: %s",
- "cannot open file", catalog);
+ error_set (e, "%s: %s", "cannot open file", catalog);
return false;
}
ctx->catalog = catopen (path, NL_CAT_LOCALE);
@@ -1149,7 +1139,7 @@ irc_initialize_catalog (struct server_context *ctx, struct error **e)
if (ctx->catalog == (nl_catd) -1)
{
- error_set (e, IO_ERROR, IO_ERROR_FAILED, "%s: %s",
+ error_set (e, "%s: %s",
"failed reading the message catalog file", strerror (errno));
return false;
}
@@ -1167,8 +1157,7 @@ irc_initialize_motd (struct server_context *ctx, struct error **e)
char *path = resolve_config_filename (motd);
if (!path)
{
- error_set (e, IO_ERROR, IO_ERROR_FAILED, "%s: %s",
- "cannot open file", motd);
+ error_set (e, "%s: %s", "cannot open file", motd);
return false;
}
FILE *fp = fopen (path, "r");
@@ -1176,7 +1165,7 @@ irc_initialize_motd (struct server_context *ctx, struct error **e)
if (!fp)
{
- error_set (e, IO_ERROR, IO_ERROR_FAILED, "%s: %s",
+ error_set (e, "%s: %s",
"failed reading the MOTD file", strerror (errno));
return false;
}
@@ -1201,9 +1190,8 @@ irc_initialize_server_name (struct server_context *ctx, struct error **e)
res = irc_validate_hostname (server_name);
if (res != VALIDATION_OK)
{
- error_set (e, NETWORK_ERROR, NETWORK_ERROR_INVALID_CONFIGURATION,
- "invalid configuration value for `%s': %s", "server_name",
- irc_validate_to_str (res));
+ error_set (e, "invalid configuration value for `%s': %s",
+ "server_name", irc_validate_to_str (res));
return false;
}
ctx->server_name = xstrdup (server_name);
@@ -1213,14 +1201,14 @@ irc_initialize_server_name (struct server_context *ctx, struct error **e)
char hostname[HOST_NAME_MAX];
if (gethostname (hostname, sizeof hostname))
{
- error_set (e, NETWORK_ERROR, NETWORK_ERROR_INVALID_CONFIGURATION,
- "%s: %s", "getting the hostname failed", strerror (errno));
+ error_set (e, "%s: %s",
+ "getting the hostname failed", strerror (errno));
return false;
}
res = irc_validate_hostname (hostname);
if (res != VALIDATION_OK)
{
- error_set (e, NETWORK_ERROR, NETWORK_ERROR_INVALID_CONFIGURATION,
+ error_set (e,
"`%s' is not set and the hostname (`%s') cannot be used: %s",
"server_name", hostname, irc_validate_to_str (res));
return false;
@@ -1246,7 +1234,7 @@ irc_listen (struct server_context *ctx, struct error **e)
int err = getaddrinfo (bind_host, bind_port, &gai_hints, &gai_result);
if (err)
{
- error_set (e, NETWORK_ERROR, NETWORK_ERROR_FAILED, "%s: %s: %s",
+ error_set (e, "%s: %s: %s",
"network setup failed", "getaddrinfo", gai_strerror (err));
return false;
}
@@ -1291,8 +1279,7 @@ irc_listen (struct server_context *ctx, struct error **e)
if (!gai_iter)
{
- error_set (e, NETWORK_ERROR, NETWORK_ERROR_FAILED,
- "network setup failed");
+ error_set (e, "network setup failed");
return false;
}
diff --git a/src/zyklonb.c b/src/zyklonb.c
index de4e3ac..906df7e 100644
--- a/src/zyklonb.c
+++ b/src/zyklonb.c
@@ -106,15 +106,6 @@ plugin_data_free (struct plugin_data *self)
str_free (&self->queued_output);
}
-static size_t connect_error_domain_tag;
-#define CONNECT_ERROR (error_resolve_domain (&connect_error_domain_tag))
-
-enum
-{
- CONNECT_ERROR_INVALID_CONFIGURATION,
- CONNECT_ERROR_FAILED
-};
-
struct bot_context
{
struct str_map config; ///< User configuration
@@ -306,8 +297,7 @@ error_ssl_2:
error_ssl_1:
// XXX: these error strings are really nasty; also there could be
// multiple errors on the OpenSSL stack.
- error_set (e, CONNECT_ERROR, CONNECT_ERROR_FAILED,
- "%s: %s", "could not initialize SSL",
+ error_set (e, "%s: %s", "could not initialize SSL",
ERR_error_string (ERR_get_error (), NULL));
return false;
}
@@ -325,7 +315,7 @@ irc_establish_connection (struct bot_context *ctx,
int err = getaddrinfo (host, port, &gai_hints, &gai_result);
if (err)
{
- error_set (e, CONNECT_ERROR, CONNECT_ERROR_FAILED, "%s: %s: %s",
+ error_set (e, "%s: %s: %s",
"connection failed", "getaddrinfo", gai_strerror (err));
return false;
}
@@ -367,7 +357,7 @@ irc_establish_connection (struct bot_context *ctx,
if (!gai_iter)
{
- error_set (e, CONNECT_ERROR, CONNECT_ERROR_FAILED, "connection failed");
+ error_set (e, "connection failed");
return false;
}
@@ -633,16 +623,6 @@ setup_recovery_handler (struct bot_context *ctx)
/// The name of the special IRC command for interprocess communication
static const char *plugin_ipc_command = "ZYKLONB";
-static size_t plugin_error_domain_tag;
-#define PLUGIN_ERROR (error_resolve_domain (&plugin_error_domain_tag))
-
-enum
-{
- PLUGIN_ERROR_ALREADY_LOADED,
- PLUGIN_ERROR_NOT_LOADED,
- PLUGIN_ERROR_LOADING_FAILED
-};
-
static struct plugin_data *
plugin_find_by_pid (struct bot_context *ctx, pid_t pid)
{
@@ -923,29 +903,26 @@ plugin_load (struct bot_context *ctx, const char *name, struct error **e)
const char *plugin_dir = str_map_find (&ctx->config, "plugin_dir");
if (!plugin_dir)
{
- error_set (e, PLUGIN_ERROR, PLUGIN_ERROR_LOADING_FAILED,
- "plugin directory not set");
+ error_set (e, "plugin directory not set");
return false;
}
if (!is_valid_plugin_name (name))
{
- error_set (e, PLUGIN_ERROR, PLUGIN_ERROR_LOADING_FAILED,
- "invalid plugin name");
+ error_set (e, "invalid plugin name");
return false;
}
if (str_map_find (&ctx->plugins_by_name, name))
{
- error_set (e, PLUGIN_ERROR, PLUGIN_ERROR_ALREADY_LOADED,
- "the plugin has already been loaded");
+ error_set (e, "the plugin has already been loaded");
return false;
}
int stdin_pipe[2];
if (pipe (stdin_pipe) == -1)
{
- error_set (e, PLUGIN_ERROR, PLUGIN_ERROR_LOADING_FAILED, "%s: %s: %s",
+ error_set (e, "%s: %s: %s",
"failed to load the plugin", "pipe", strerror (errno));
goto fail_1;
}
@@ -953,7 +930,7 @@ plugin_load (struct bot_context *ctx, const char *name, struct error **e)
int stdout_pipe[2];
if (pipe (stdout_pipe) == -1)
{
- error_set (e, PLUGIN_ERROR, PLUGIN_ERROR_LOADING_FAILED, "%s: %s: %s",
+ error_set (e, "%s: %s: %s",
"failed to load the plugin", "pipe", strerror (errno));
goto fail_2;
}
@@ -964,7 +941,7 @@ plugin_load (struct bot_context *ctx, const char *name, struct error **e)
pid_t pid = fork ();
if (pid == -1)
{
- error_set (e, PLUGIN_ERROR, PLUGIN_ERROR_LOADING_FAILED, "%s: %s: %s",
+ error_set (e, "%s: %s: %s",
"failed to load the plugin", "fork", strerror (errno));
goto fail_3;
}
@@ -1034,8 +1011,7 @@ plugin_unload (struct bot_context *ctx, const char *name, struct error **e)
if (!plugin)
{
- error_set (e, PLUGIN_ERROR, PLUGIN_ERROR_NOT_LOADED,
- "no such plugin is loaded");
+ error_set (e, "no such plugin is loaded");
return false;
}
@@ -1551,16 +1527,14 @@ irc_connect (struct bot_context *ctx, struct error **e)
// do we tell our caller that he should not try to reconnect?
if (!irc_host)
{
- error_set (e, CONNECT_ERROR, CONNECT_ERROR_INVALID_CONFIGURATION,
- "no hostname specified in configuration");
+ error_set (e, "no hostname specified in configuration");
return false;
}
bool use_ssl;
if (!set_boolean_if_valid (&use_ssl, ssl_use_str))
{
- error_set (e, CONNECT_ERROR, CONNECT_ERROR_INVALID_CONFIGURATION,
- "invalid configuration value for `%s'", "use_ssl");
+ error_set (e, "invalid configuration value for `%s'", "use_ssl");
return false;
}