From 68c6a0725a815f7f6350f3e9634a1de37f09a3f7 Mon Sep 17 00:00:00 2001
From: Xavier L'Heureux <xavier.lheureux@icloud.com>
Date: Thu, 4 Jul 2019 09:31:50 -0400
Subject: [PATCH] Use a finer-grained approach to setting the terminal leader

---
 src/main.rs | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/main.rs b/src/main.rs
index 62035960..8bb81e20 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -133,12 +133,14 @@ fn parse_args() -> CommandLineArgs {
 
 fn set_unique_pid() -> nix::Result<()> {
     let pgid = unistd::getpid();
-    if pgid == unistd::tcgetpgrp(nix::libc::STDIN_FILENO)? {
-        return Ok(());
+    if pgid != unistd::getpgrp() {
+        unistd::setpgid(pgid, pgid)?;
     }
-    unistd::setpgid(pgid, pgid)?;
-    unsafe { signal::signal(Signal::SIGTTOU, SigHandler::SigIgn) }?;
-    unistd::tcsetpgrp(nix::libc::STDIN_FILENO, pgid)
+    if pgid != unistd::tcgetpgrp(nix::libc::STDIN_FILENO)? {
+        unsafe { signal::signal(Signal::SIGTTOU, SigHandler::SigIgn) }?;
+        unistd::tcsetpgrp(nix::libc::STDIN_FILENO, pgid)?;
+    }
+    Ok(())
 }
 
 fn main() {
-- 
GitLab