free(err);
}
-static void initialize(void)
-{
- cdecl__init_i18n();
- err_no_mem.err.str = cdecl__strerror(CDECL_ENOMEM);
-
- gl_tls_key_init(tls_key, free_err);
-
- /*
- * This default error message is a stop-gap measure until all library
- * error conditions use the new interface.
- */
- cdecl__set_error(&(const struct cdecl_error){ .code = CDECL_ENOPARSE });
-}
-
-const struct cdecl_error *cdecl_get_error(void)
-{
- struct err_state *state;
-
- gl_once(tls_initialized, initialize);
-
- state = gl_tls_get(tls_key);
- assert(state);
-
- return &state->err;
-}
-
-void cdecl__set_error(const struct cdecl_error *err)
+static void set_error(const struct cdecl_error *err)
{
struct err_state *state;
size_t need_len = 0;
- gl_once(tls_initialized, initialize);
-
if (err->str) {
need_len = strlen(err->str) + 1;
}
state->err.str = cdecl__strerror(state->err.code);
}
}
+
+static void initialize(void)
+{
+ cdecl__init_i18n();
+ err_no_mem.err.str = cdecl__strerror(CDECL_ENOMEM);
+
+ gl_tls_key_init(tls_key, free_err);
+
+ /*
+ * This default error message is a stop-gap measure until all library
+ * error conditions use the new interface.
+ */
+ set_error(&(const struct cdecl_error){ .code = CDECL_ENOPARSE });
+}
+
+const struct cdecl_error *cdecl_get_error(void)
+{
+ struct err_state *state;
+
+ gl_once(tls_initialized, initialize);
+
+ state = gl_tls_get(tls_key);
+ assert(state);
+
+ return &state->err;
+}
+
+void cdecl__set_error(const struct cdecl_error *err)
+{
+ gl_once(tls_initialized, initialize);
+
+ set_error(err);
+}