diff options
Diffstat (limited to 'rtemsbsd/rtems/syslog.c')
-rw-r--r-- | rtemsbsd/rtems/syslog.c | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/rtemsbsd/rtems/syslog.c b/rtemsbsd/rtems/syslog.c index 76162563..f356690f 100644 --- a/rtemsbsd/rtems/syslog.c +++ b/rtemsbsd/rtems/syslog.c @@ -37,25 +37,35 @@ * SUCH DAMAGE. */ +#include <errno.h> +#include <stddef.h> +#include <strings.h> + +#define SYSLOG_NAMES #include <syslog.h> #include <rtems/bsd/bsd.h> +static int syslog_priority = LOG_NOTICE; + void syslog(int priority, const char *format, ...) { - va_list ap; + if (priority <= syslog_priority) { + va_list ap; - va_start(ap, format); - vsyslog(priority, format, ap); - va_end(ap); + va_start(ap, format); + vsyslog(priority, format, ap); + va_end(ap); + } } void vsyslog(int priority, const char *format, va_list ap) { - - rtems_bsd_vprintf(priority, format, ap); + if (priority <= syslog_priority) { + rtems_bsd_vprintf(priority, format, ap); + } } void @@ -75,3 +85,18 @@ setlogmask(int mask) { /* TODO */ } + +int +rtems_bsd_setlogpriority(const char* priority) +{ + CODE* c = &prioritynames[0]; + while (c->c_name != NULL) { + if (strcasecmp(c->c_name, priority) == 0) { + syslog_priority = c->c_val; + return 0; + } + ++c; + } + errno = ENOENT; + return -1; +} |