Move adu_strerror() to adu.c.
[adu.git] / adu.c
diff --git a/adu.c b/adu.c
index 0cd1644c236c17908656eb25c24c12084b7c9967..7d133d619836e3340e5bce2f6b2b3bf83b39d789 100644 (file)
--- a/adu.c
+++ b/adu.c
@@ -125,6 +125,25 @@ __printf_2_3 void __log(int ll, const char* fmt,...)
        va_end(argp);
 }
 
+/**
+ * adu's version of strerror(3).
+ *
+ * \param num The error number.
+ *
+ * \return The error text of \a num.
+ */
+const char *adu_strerror(int num)
+{
+       assert(num > 0);
+       if (num == E_OSL) {
+               assert(osl_errno > 0);
+               return osl_strerror((osl_errno));
+       }
+       if (IS_SYSTEM_ERROR(num))
+               return strerror((num) & ((1 << SYSTEM_ERROR_BIT) - 1));
+       return adu_errlist[num];
+}
+
 static void close_dir_table(void)
 {
        int ret;