- closes trac#947
Signed-off-by: Jakub Filak <jfilak(a)redhat.com>
---
src/include/run_event.h | 5 +++++
src/lib/run_event.c | 21 +++++++++++++++++++++
2 files changed, 26 insertions(+)
diff --git a/src/include/run_event.h b/src/include/run_event.h
index 9dcc355..49c2a38 100644
--- a/src/include/run_event.h
+++ b/src/include/run_event.h
@@ -36,6 +36,8 @@ struct run_event_state {
/* Can take ownership of log_line, which is malloced. In this case, return NULL.
* Otherwise should return log_line (it will be freed by caller)
+ *
+ * The default value prints log_line with trailing newline to stdout.
*/
char* (*logging_callback)(char *log_line, void *param);
void *logging_param;
@@ -43,6 +45,9 @@ struct run_event_state {
/*
* Called if any error occures during communication with child's command.
*
+ * The default value prints error_line with trailing newline to stderr and
+ * exits with an error code.
+ *
* @param error_line An error message
* @param param a custom param
*/
diff --git a/src/lib/run_event.c b/src/lib/run_event.c
index a60913e..ea90029 100644
--- a/src/lib/run_event.c
+++ b/src/lib/run_event.c
@@ -21,10 +21,16 @@
#include "client.h"
#include "internal_libreport.h"
+static char *run_event_stdio_log(char *log_line, void *param);
+static void run_event_stdio_error_and_die(const char *error_line, void *param);
+
struct run_event_state *new_run_event_state()
{
struct run_event_state *state = xzalloc(sizeof(struct run_event_state));
+ state->logging_callback = run_event_stdio_log;
+ state->error_callback = run_event_stdio_error_and_die;
+
state->alert_callback = run_event_stdio_alert;
state->ask_callback = run_event_stdio_ask;
state->ask_yes_no_callback = run_event_stdio_ask_yes_no;
@@ -55,6 +61,10 @@ void make_run_event_state_forwarding(struct run_event_state *state)
state->ask_yes_no_yesforever_callback= run_event_stdio_ask_yes_no_yesforever;
state->ask_password_callback = run_event_stdio_ask_password;
+ /*
+ * Not sure if we should reset even logging_callback and error_callback?
+ */
+
xsetenv("REPORT_CLIENT_SLAVE", "1");
}
@@ -731,3 +741,14 @@ char *run_event_stdio_ask_password(const char *msg, void *param)
{
return ask_password(msg);
}
+
+static char *run_event_stdio_log(char *log_line, void *param)
+{
+ printf("%s\n", log_line);
+ return log_line;
+}
+
+static void run_event_stdio_error_and_die(const char *error_line, void *param)
+{
+ error_msg_and_die("Can't write bytes to child's stdin");
+}
--
1.7.11.7