summaryrefslogtreecommitdiff
path: root/src/commands.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2012-09-12 19:54:46 +0200
committerMaxime Coste <frrrwww@gmail.com>2012-09-12 19:54:46 +0200
commitf6d2533caed435f407f034cf0ffcdf3c4f0999aa (patch)
tree57bffdd8bad9af5a0ec8f2f97e354c9b7df52850 /src/commands.cc
parenta467d7311593dc4a7f6ffe4a4db9254e5ade3b8c (diff)
rework fifo handling, use real fifos in {make,grep}.kak, update README
Diffstat (limited to 'src/commands.cc')
-rw-r--r--src/commands.cc12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/commands.cc b/src/commands.cc
index 2ef70a17..90dfa394 100644
--- a/src/commands.cc
+++ b/src/commands.cc
@@ -247,11 +247,15 @@ Buffer* open_fifo(const String& name , const String& filename, Context& context)
EventManager::instance().watch(fd, [buffer, &context](int fd) {
char data[512];
ssize_t count = read(fd, data, 512);
- if (count > 0)
+ buffer->insert(buffer->end()-1,
+ count > 0 ? String(data, data+count)
+ : "*** kak: fifo closed ***\n");
+ buffer->reset_undo_data();
+ context.draw_ifn();
+ if (count <= 0)
{
- buffer->insert(buffer->end()-1, String(data, data + count));
- buffer->reset_undo_data();
- context.draw_ifn();
+ close(fd);
+ EventManager::instance().unwatch(fd);
}
});