aboutsummaryrefslogtreecommitdiffstats
path: root/src/libtipidee/tipidee_conf_get_errorfile.c
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2023-10-18 13:07:23 +0000
committerLaurent Bercot <ska@appnovation.com>2023-10-18 13:07:23 +0000
commit1a7e3d00588725da3d8764fa9d624bc8611be070 (patch)
tree65d28b52bd1d4ccdbeb418d4d681b1999ed46b7a /src/libtipidee/tipidee_conf_get_errorfile.c
parent24fb88dbb023ae08adc9989bf19e0c6c569a6607 (diff)
downloadtipidee-1a7e3d00588725da3d8764fa9d624bc8611be070.tar.gz
Add infrastructure for custom error files
Signed-off-by: Laurent Bercot <ska@appnovation.com>
Diffstat (limited to 'src/libtipidee/tipidee_conf_get_errorfile.c')
-rw-r--r--src/libtipidee/tipidee_conf_get_errorfile.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/libtipidee/tipidee_conf_get_errorfile.c b/src/libtipidee/tipidee_conf_get_errorfile.c
new file mode 100644
index 0000000..732ff9d
--- /dev/null
+++ b/src/libtipidee/tipidee_conf_get_errorfile.c
@@ -0,0 +1,24 @@
+/* ISC license. */
+
+#include <string.h>
+#include <errno.h>
+
+#include <skalibs/types.h>
+
+#include <tipidee/conf.h>
+
+char const *tipidee_conf_get_errorfile (tipidee_conf const *conf, char const *docroot, unsigned int status)
+{
+ size_t docrootlen = strlen(docroot) ;
+ char key[7 + docrootlen] ;
+ if (status < 100 || status > 999) goto err ;
+ key[0] = 'E' ; key[1] = ':' ;
+ uint_fmt(key + 2, status) ;
+ key[5] = ':' ;
+ memcpy(key + 6, docroot, docrootlen + 1) ;
+ return tipidee_conf_get_string(conf, key) ;
+
+ err:
+ errno = EINVAL ;
+ return 0 ;
+}