summaryrefslogtreecommitdiff
path: root/error.c
diff options
context:
space:
mode:
Diffstat (limited to 'error.c')
-rw-r--r--error.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/error.c b/error.c
new file mode 100644
index 0000000..e88ab4f
--- /dev/null
+++ b/error.c
@@ -0,0 +1,50 @@
+#include <string.h>
+#include "fhp/fhp.h"
+
+//
+// error functions
+//
+
+static const char *
+fhp_errors[] = {
+ "OK",
+ "callback error",
+ "bad state",
+ "invalid character",
+ "invalid character in HTTP method",
+ "invalid character in HTTP URL",
+ "invalid percent-encoded character in HTTP URL",
+ "invalid character in HTTP version",
+ "invalid character after carriage return",
+ "invalid character in HTTP header name",
+ "invalid error code",
+ "buffer too small",
+ "invalid body type",
+ "too many transfer encodings",
+ "invalid character in transfer encoding name",
+ "invalid character in transfer encoding",
+ "bad transfer encoding state",
+ "transfer encoding parser already done",
+};
+
+fhp_err_t
+fhp_strerror(
+ fhp_err_t err,
+ char * const buf,
+ size_t len
+) {
+ // check error code
+ if (err >= FHP_ERR_LAST)
+ return FHP_ERR_INVALID_ERROR;
+
+ // check buffer size
+ size_t err_len = strlen(fhp_errors[err]) + 1;
+ if (len < err_len)
+ return FHP_ERR_BUFFER_TOO_SMALL;
+
+ // copy string
+ memcpy(buf, fhp_errors[err], err_len);
+
+ // return success
+ return FHP_OK;
+}