summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-06-03 14:54:05 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-06-06 12:57:07 +0200
commit214156d98c3421a84fe8ad27ba8891651eea7291 (patch)
tree90c1e146f07c5719d4079d6ff1e4eba25bad5cd9
parent3ad5f86cf6803204b98760cdce0c56ef6d79bccd (diff)
mghttpd: Add RTEMS printer support
-rw-r--r--cpukit/include/rtems/print.h4
-rw-r--r--cpukit/mghttpd/mongoose.c12
-rw-r--r--cpukit/mghttpd/mongoose.h4
3 files changed, 18 insertions, 2 deletions
diff --git a/cpukit/include/rtems/print.h b/cpukit/include/rtems/print.h
index 5268e8c744..91c45150a6 100644
--- a/cpukit/include/rtems/print.h
+++ b/cpukit/include/rtems/print.h
@@ -39,10 +39,10 @@ extern "C" {
* Type definition for the printer structure used to access the kernel print
* support.
*/
-typedef struct {
+typedef struct rtems_printer {
void *context;
rtems_print_plugin_t printer;
-}rtems_printer;
+} rtems_printer;
/**
* @brief check if the printer is valid.
diff --git a/cpukit/mghttpd/mongoose.c b/cpukit/mghttpd/mongoose.c
index dd243d3320..a89fc56885 100644
--- a/cpukit/mghttpd/mongoose.c
+++ b/cpukit/mghttpd/mongoose.c
@@ -5519,3 +5519,15 @@ struct mg_context *mg_start(const struct mg_callbacks *callbacks,
return ctx;
}
+#ifdef __rtems__
+#include <rtems/print.h>
+
+static int mg_printer_plugin(void *context, const char *fmt, va_list ap) {
+ return mg_vprintf(context, fmt, ap);
+}
+
+void rtems_print_printer_mg_printf(rtems_printer *printer, struct mg_connection *conn) {
+ printer->context = conn;
+ printer->printer = mg_printer_plugin;
+}
+#endif /* __rtems__ */
diff --git a/cpukit/mghttpd/mongoose.h b/cpukit/mghttpd/mongoose.h
index ad7c40f2dd..330ed6701b 100644
--- a/cpukit/mghttpd/mongoose.h
+++ b/cpukit/mghttpd/mongoose.h
@@ -256,6 +256,10 @@ enum {
// Works exactly like mg_write(), but allows to do message formatting.
int mg_printf(struct mg_connection *,
PRINTF_FORMAT_STRING(const char *fmt), ...) PRINTF_ARGS(2, 3);
+#ifdef __rtems__
+struct rtems_printer;
+void rtems_print_printer_mg_printf(struct rtems_printer *, struct mg_connection *);
+#endif /* __rtems__ */
// Send contents of the entire file together with HTTP headers.