diff options
Diffstat (limited to 'src/message.c')
-rw-r--r-- | src/message.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/message.c b/src/message.c new file mode 100644 index 0000000..29f9970 --- /dev/null +++ b/src/message.c @@ -0,0 +1,58 @@ +#include <stdio.h> +#include <stdarg.h> +#include <string.h> +#include <limits.h> +#include <pthread.h> + +#include <message.h> + +/* mscp error message buffer */ + +#define MSCP_ERRMSG_SIZE (PATH_MAX * 2) + +static char errmsg[MSCP_ERRMSG_SIZE]; + +void _mscp_set_error(const char *fmt, ...) +{ + va_list va; + + memset(errmsg, 0, sizeof(errmsg)); + va_start(va, fmt); + vsnprintf(errmsg, sizeof(errmsg) - 1, fmt, va); + va_end(va); +} + +const char *mscp_get_error() +{ + return errmsg; +} + + +/* message print functions */ + +static int mprint_serverity = MSCP_SEVERITY_WARN; +static pthread_mutex_t mprint_lock = PTHREAD_MUTEX_INITIALIZER; + +void mprint_set_severity(int serverity) +{ + if (serverity < 0) + mprint_serverity = -1; /* no print */ + mprint_serverity = serverity; +} + +void mprint(int fd, int serverity, const char *fmt, ...) +{ + va_list va; + int ret; + + if (fd < 0) + return; + + if (serverity <= mprint_serverity) { + pthread_mutex_lock(&mprint_lock); + va_start(va, fmt); + vdprintf(fd, fmt, va); + va_end(va); + pthread_mutex_unlock(&mprint_lock); + } +} |