diff libmlk-core/mlk/core/err.c @ 547:c7664b679a95

misc: remove error codes for now
author David Demelier <markand@malikania.fr>
date Mon, 06 Mar 2023 20:03:00 +0100
parents 773a082f0b91
children cba66f7d8a53
line wrap: on
line diff
--- a/libmlk-core/mlk/core/err.c	Mon Mar 06 20:01:00 2023 +0100
+++ b/libmlk-core/mlk/core/err.c	Mon Mar 06 20:03:00 2023 +0100
@@ -16,23 +16,52 @@
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#include <SDL.h>
+#include <assert.h>
+#include <stdio.h>
+
+#include <mlk/util/util.h>
 
 #include "err.h"
 
-const char *
-mlk_err_string(int e)
+#define ERR_MAX         128
+#define DEFAULT_ERR     "no error"
+
+static _Thread_local char err[ERR_MAX] = DEFAULT_ERR;
+
+int
+mlk_errf(const char *fmt, ...)
 {
-	switch (e) {
-	case MLK_ERR_SDL:
-		return SDL_GetError();
-	case MLK_ERR_NO_MEM:
-		return "out of memory";
-	case MLK_ERR_NO_SUPPORT:
-		return "operation not supported";
-	case MLK_ERR_FORMAT:
-		return "invalid format or corrupt file";
-	default:
-		return "no error";
-	}
+	assert(fmt);
+
+	va_list ap;
+
+	va_start(ap, fmt);
+	mlk_errva(fmt, ap);
+	va_end(ap);
+
+	return -1;
 }
+
+int
+mlk_errva(const char *fmt, va_list ap)
+{
+	assert(fmt);
+
+	int ret;
+
+	/* Don't keep an empty string... */
+	ret = vsnprintf(err, sizeof (err), fmt, ap);
+
+	if (ret < 0)
+		mlk_util_strlcpy(err, "unknown error", sizeof (err));
+	else if (ret == 0)
+		mlk_util_strlcpy(err, DEFAULT_ERR, sizeof (err));
+
+	return -1;
+}
+
+const char *
+mlk_err(void)
+{
+	return err;
+}