summaryrefslogtreecommitdiff
path: root/src/filter.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/filter.h')
-rw-r--r--src/filter.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/filter.h b/src/filter.h
new file mode 100644
index 0000000..60a176f
--- /dev/null
+++ b/src/filter.h
@@ -0,0 +1,25 @@
+#ifndef FILTER_H
+#define FILTER_H
+
+#include "umbrella.h"
+
+/*
+ * filter_start — spawn the unit's log_filter executable as a persistent
+ * subprocess with stdin/stdout pipes. No-op if log_filter
+ * is empty. Safe to call on every unit unconditionally.
+ *
+ * filter_apply — write buf to the filter's stdin, read back the
+ * transformed output into buf. Updates *len. If the filter
+ * suppresses all output (returns 0 bytes), *len is set to 0.
+ * Falls back to pass-through on timeout or error.
+ *
+ * filter_stop — signal and close the filter subprocess for one unit.
+ * filter_stop_all — stop filters for all loaded units.
+ */
+
+void filter_start(Unit *u);
+void filter_apply(Unit *u, char *buf, int bufsize, int *len);
+void filter_stop(Unit *u);
+void filter_stop_all(void);
+
+#endif /* FILTER_H */