From 7dcb9a0ac0224bb7e29321fb86faf153c2a31f70 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Thu, 23 Jan 2025 19:11:09 -0700 Subject: [PATCH] src/vipw.c: Restore the original terminal pgrp after editing This fixes a problem when the shell is not in monitor mode (job control enabled) which resulted in the terminal pgrp being set to an invalid value once vipw exited. Fixes: 7eca1112fbd7 (2019-11-11; "Fix vipw not resuming correctly when suspended") Closes: Reported-by: Tested-by: Alejandro Colomar Reviewed-by: Alejandro Colomar --- src/vipw.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/vipw.c b/src/vipw.c index a855e0d7f..dbc87db9a 100644 --- a/src/vipw.c +++ b/src/vipw.c @@ -372,8 +372,14 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) } } - if (orig_pgrp != -1) + if (orig_pgrp != -1) { + /* Restore terminal pgrp after editing. */ + if (tcsetpgrp(STDIN_FILENO, orig_pgrp) == -1) { + fprintf(stderr, "%s: %s: %s", Prog, + "tcsetpgrp", strerror(errno)); + } sigprocmask(SIG_SETMASK, &omask, NULL); + } if (-1 == pid) { vipwexit (editor, 1, 1);