[RISU,v6,07/10] risu: handle trace through stdin/stdout

Message ID 20170621154244.28309-8-alex.bennee@linaro.org
State New
Headers show
Series
  • Record/replay patches
Related show

Commit Message

Alex Bennée June 21, 2017, 3:42 p.m.
Trace files can get quite large so it would be useful to be able to
just capture the trace stream with stdin/stdout for processing in a
pipe line. The sort of case where this is useful is for building
static binaries where zlib support is missing for whatever reason.

It can also be used in testing pipelines.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>


---
v6
  - use STDIN/OUT_FILENO instead of fileno(foo)
  - strcmp instead of strncmp
---
 risu.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

-- 
2.13.0

Patch hide | download patch | download mbox

diff --git a/risu.c b/risu.c
index 93c274b..476475c 100644
--- a/risu.c
+++ b/risu.c
@@ -312,7 +312,11 @@  int main(int argc, char **argv)
 
     if (ismaster) {
         if (trace) {
-            master_fd = open(trace_fn, O_WRONLY|O_CREAT, S_IRWXU);
+            if (strcmp(trace_fn, "-")==0) {
+                master_fd = STDOUT_FILENO;
+            } else {
+                master_fd = open(trace_fn, O_WRONLY|O_CREAT, S_IRWXU);
+            }
         } else {
             fprintf(stderr, "master port %d\n", port);
             master_fd = master_connect(port);
@@ -320,7 +324,11 @@  int main(int argc, char **argv)
         return master();
     } else {
         if (trace) {
-            apprentice_fd = open(trace_fn, O_RDONLY);
+            if (strcmp(trace_fn, "-")==0) {
+                apprentice_fd = STDIN_FILENO;
+            } else {
+                apprentice_fd = open(trace_fn, O_RDONLY);
+            }
         } else {
             fprintf(stderr, "apprentice host %s port %d\n", hostname, port);
             apprentice_fd = apprentice_connect(hostname, port);