The child thread was created because execlp will not return if successful.
The eprintf was placed after the call to execlp to catch any error, but the
child continued to return a (closed) fds[0], resulting in a second slideshow
being run by the child.

This commit fixes the issue by killing the child.
---
 sent.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sent.c b/sent.c
index fc5e389..88abe90 100644
--- a/sent.c
+++ b/sent.c
@@ -153,7 +153,7 @@ filter(int fd, const char *cmd)
                close(fds[0]);
                close(fds[1]);
                execlp(cmd, cmd, (char *)0);
-               eprintf("execlp %s:", cmd);
+               die("execlp %s:", cmd);
        }
        close(fds[1]);
        return fds[0];
-- 
2.6.2

Attachment: signature.asc
Description: PGP signature

Reply via email to