summaryrefslogtreecommitdiffstats
path: root/rtemsbsd/rtems/syslog.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-04 13:04:42 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-06 14:07:31 +0200
commit54a577d44fc467221d6e7d831bd6f9c1d88849c5 (patch)
tree1b0ff9bab84ac1739076ce28b8103ddb0490d21f /rtemsbsd/rtems/syslog.c
parentbcd.c: Import from FreeBSD (diff)
downloadrtems-libbsd-54a577d44fc467221d6e7d831bd6f9c1d88849c5.tar.bz2
subr_prf.c: Port to RTEMS
Diffstat (limited to 'rtemsbsd/rtems/syslog.c')
-rw-r--r--rtemsbsd/rtems/syslog.c125
1 files changed, 4 insertions, 121 deletions
diff --git a/rtemsbsd/rtems/syslog.c b/rtemsbsd/rtems/syslog.c
index d8274e09..76162563 100644
--- a/rtemsbsd/rtems/syslog.c
+++ b/rtemsbsd/rtems/syslog.c
@@ -7,7 +7,7 @@
*/
/*
- * Copyright (c) 2014 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2014, 2016 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
@@ -37,46 +37,9 @@
* SUCH DAMAGE.
*/
-#include <machine/rtems-bsd-user-space.h>
-#include <machine/rtems-bsd-program.h>
-
#include <syslog.h>
-#include <stdarg.h>
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-
-typedef struct {
- int mask;
-} rtems_bsd_syslog_context;
-
-/* FIXME: This should be thread specific */
-static rtems_bsd_syslog_context rtems_bsd_syslog_instance = {
- .mask = LOG_UPTO(LOG_DEBUG)
-};
-
-static const char * const rtems_bsd_syslog_priorities[] = {
- [LOG_EMERG] = "emerg",
- [LOG_ALERT] = "alert",
- [LOG_CRIT] = "crit",
- [LOG_ERR] = "err",
- [LOG_WARNING] = "warning",
- [LOG_NOTICE] = "notice",
- [LOG_INFO] = "info",
- [LOG_DEBUG] = "debug"
-};
-
-static rtems_bsd_syslog_context *
-rtems_bsd_syslog_get_context(void)
-{
- return &rtems_bsd_syslog_instance;
-}
-static void
-rtems_bsd_syslog_format_buffer_overflow(void)
-{
- fputs("err: syslog: format buffer overflow\n", stderr);
-}
+#include <rtems/bsd/bsd.h>
void
syslog(int priority, const char *format, ...)
@@ -91,83 +54,8 @@ syslog(int priority, const char *format, ...)
void
vsyslog(int priority, const char *format, va_list ap)
{
- rtems_bsd_syslog_context *ctx = rtems_bsd_syslog_get_context();
- int pri = LOG_PRI(priority);
- char fmt[128];
- char buf[128];
- const char *src;
- char *dst;
- size_t rem;
- char *m;
- int n;
- size_t len;
-
- if ((LOG_MASK(pri) & ctx->mask) == 0) {
- return;
- }
-
- /* Expand the %m in the format string and add a newline character */
-
- src = format;
- dst = &fmt[0];
- rem = sizeof(fmt) - 2;
-
- while ((m = strstr(src, "%m")) != NULL) {
- size_t c = m - src;
-
- if (c > rem) {
- rtems_bsd_syslog_format_buffer_overflow();
- return;
- }
- memcpy(dst, src, c);
- dst += c;
- src += c + 2;
- rem -= c;
-
- n = sniprintf(dst, rem, "%s", strerror(errno));
- if (n > rem || n < 0) {
- rtems_bsd_syslog_format_buffer_overflow();
- return;
- }
-
- dst += (size_t) n;
- rem -= (size_t) n;
- }
-
- len = strlen(src);
- if (len > rem) {
- rtems_bsd_syslog_format_buffer_overflow();
- return;
- }
-
- memcpy(dst, src, len);
- dst += len;
- dst[0] = '\n';
- dst[1] = '\0';
-
- /* Print into buffer */
-
- dst = &buf[0];
- rem = sizeof(buf) - 1;
-
- n = sniprintf(dst, rem, "%s: ", rtems_bsd_syslog_priorities[pri]);
- if (n <= rem) {
- dst += (size_t) n;
- rem -= (size_t) n;
- }
-
- n = sniprintf(dst, rem, "%s: ", rtems_bsd_program_get_name());
- if (n <= rem) {
- dst += (size_t) n;
- rem -= (size_t) n;
- }
-
- vsniprintf(dst, rem, &fmt[0], ap);
-
- /* Write in one rush */
-
- fputs(&buf[0], stderr);
+ rtems_bsd_vprintf(priority, format, ap);
}
void
@@ -185,10 +73,5 @@ closelog(void)
int
setlogmask(int mask)
{
- rtems_bsd_syslog_context *ctx = rtems_bsd_syslog_get_context();
- int cur = ctx->mask;
-
- ctx->mask = mask & LOG_UPTO(LOG_DEBUG);
-
- return cur;
+ /* TODO */
}