Code

error: Actually check for strerror in configure and fix GNU-specific code.
[sysdb.git] / src / utils / error.c
index f940be6d232b05eb5eceff1b08f6aa13d62642ac..6d23c6bcf68b8e32661e7c49943ccb0c19d9b8b0 100644 (file)
@@ -39,6 +39,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <strings.h>
 
 /*
  * private data types
@@ -276,13 +277,33 @@ sdb_error_get_prio(void)
        return ctx->prio;
 } /* sdb_error_get_prio */
 
+int
+sdb_error_parse_priority(char *prio)
+{
+       if (! strcasecmp(prio, "EMERG"))
+               return SDB_LOG_EMERG;
+       else if (! strcasecmp(prio, "ERROR"))
+               return SDB_LOG_ERR;
+       else if (! strcasecmp(prio, "WARNING"))
+               return SDB_LOG_WARNING;
+       else if (! strcasecmp(prio, "NOTICE"))
+               return SDB_LOG_NOTICE;
+       else if (! strcasecmp(prio, "INFO"))
+               return SDB_LOG_INFO;
+       else if (! strcasecmp(prio, "DEBUG"))
+               return SDB_LOG_DEBUG;
+       return -1;
+} /* sdb_error_parse_priority */
+
 char *
 sdb_strerror(int errnum, char *strerrbuf, size_t buflen)
 {
+       *strerrbuf = '\0';
+
 #if STRERROR_R_CHAR_P
        {
                char *tmp = strerror_r(errnum, strerrbuf, buflen);
-               if (*strerrbuf = '\0') {
+               if (*strerrbuf == '\0') {
                        if (tmp && (tmp != strerrbuf) && (*tmp != '\0'))
                                strncpy(strerrbuf, tmp, buflen);
                        else