summaryrefslogtreecommitdiff
path: root/pjlib/src/pj/errno.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjlib/src/pj/errno.c')
-rw-r--r--pjlib/src/pj/errno.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/pjlib/src/pj/errno.c b/pjlib/src/pj/errno.c
index 9aca83de..652b8099 100644
--- a/pjlib/src/pj/errno.c
+++ b/pjlib/src/pj/errno.c
@@ -18,8 +18,10 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <pj/errno.h>
+#include <pj/log.h>
#include <pj/string.h>
#include <pj/compat/string.h>
+#include <pj/compat/stdarg.h>
#include <pj/assert.h>
/* Prototype for platform specific error message, which will be defined
@@ -196,3 +198,30 @@ PJ_DEF(pj_str_t) pj_strerror( pj_status_t statcode,
return errstr;
}
+#if PJ_LOG_MAX_LEVEL >= 1
+static void call_logger(const char *sender, int level, const char *format, ...)
+{
+ va_list arg;
+ va_start(arg, format);
+ pj_log(sender, level, format, arg);
+ va_end(arg);
+}
+
+/*
+ * perror()
+ */
+PJ_DEF(void) pj_perror(int log_level, const char *sender,
+ pj_status_t status, const char *title,
+ int options)
+{
+ char errmsg[PJ_ERR_MSG_SIZE];
+
+ PJ_ASSERT_ON_FAIL(options==0, return);
+ PJ_UNUSED_ARG(options);
+
+ pj_strerror(status, errmsg, sizeof(errmsg));
+ call_logger(sender, log_level, "%s: %s", title, errmsg);
+}
+#endif /* #if PJ_LOG_MAX_LEVEL >= 1 */
+
+