summaryrefslogtreecommitdiffstats
path: root/rtemsbsd/rtems/syslog.c
diff options
context:
space:
mode:
Diffstat (limited to 'rtemsbsd/rtems/syslog.c')
-rw-r--r--rtemsbsd/rtems/syslog.c37
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;
+}