[cmds] the output of the :pipe commands should go to the top of the output stack and not to a temp file

pull/627/head
Timothy Stack 6 years ago
parent 53c1f03205
commit ea5ac46c0e

@ -731,6 +731,7 @@ int sql_callback(exec_context &ec, sqlite3_stmt *stmt)
future<string> pipe_callback(exec_context &ec, const string &cmdline, auto_fd &fd)
{
if (lnav_data.ld_output_stack.empty()) {
auto pp = make_shared<piper_proc>(fd, false);
static int exec_count = 0;
char desc[128];
@ -754,6 +755,23 @@ future<string> pipe_callback(exec_context &ec, const string &cmdline, auto_fd &f
task();
return task.get_future();
} else {
return std::async(std::launch::async, [&]() {
FILE *file = lnav_data.ld_output_stack.top();
char buffer[1024];
ssize_t rc;
if (file == stdout) {
lnav_data.ld_stdout_used = true;
}
while ((rc = read(fd, buffer, sizeof(buffer))) > 0) {
fwrite(buffer, rc, 1, file);
}
return string();
});
}
}
void add_global_vars(exec_context &ec)

@ -562,10 +562,12 @@ check_output "pipe-to is not working" <<EOF
EOF
run_test ${lnav_test} -n \
-c ":echo Hello, World!" \
-c ":goto 2" \
-c ":pipe-line-to sed -e 's/World!/Bork!/g' -e 's/2009//g'" \
${test_dir}/logfile_multiline.0
check_output "pipe-line-to is not working" <<EOF
Hello, World!
-07-20 22:59:30,221:ERROR:Goodbye, Bork!
EOF

Loading…
Cancel
Save