[PATCH] Add bell option to sudo prompt
Michael Spradling <[email protected]> Fri, 24 May 2019 13:35:02 -0400
| Newsgroups | gmane.comp.tools.sudo.devel |
|---|---|
| Message-ID | <20190524173502.GA2544@mswork1> |
I was wondering if you would entertain the idea of adding a bell when sudo prompts the user for a password. This is a nice thing to have when their are long scripts that run and have a sudo prompt at the end. Before this change, the sudo ends up timing out since I don't catch it in before the timeout occurs. Thanks, Michael ____________________________________________________________ sudo-workers mailing list <[email protected]> For list information, options, or to unsubscribe, visit: https://www.sudo.ws/mailman/listinfo/sudo-workers
patch.diff
(text/plain, 3.5 KB)
# HG changeset patch # User Michael Spradling <[email protected]> # Date 1558718158 14400 # Fri May 24 13:15:58 2019 -0400 # Node ID b8a810555274acefd14bf580bd33e0269309e9bf # Parent 8a3db9d71297934aa7f7b60caeea2bf4c6e4c207 Add bell option to sudo prompt Sometimes it would be nice to have sudo perform a bell indication when it prompts the user. For example, this is nice when their is a long running process that does a sudo prompt at the end of the script. diff -r 8a3db9d71297 -r b8a810555274 src/parse_args.c --- a/src/parse_args.c Mon May 06 10:04:07 2019 -0600 +++ b/src/parse_args.c Fri May 24 13:15:58 2019 -0400 @@ -1,6 +1,4 @@ /* - * SPDX-License-Identifier: ISC - * * Copyright (c) 1993-1996, 1998-2017 Todd C. Miller <[email protected]> * * Permission to use, copy, modify, and distribute this software for any @@ -133,11 +131,12 @@ * Note that we must disable arg permutation to support setting environment * variables and to better support the optional arg of the -h flag. */ -static const char short_opts[] = "+Aa:bC:c:D:Eeg:Hh::iKklnPp:r:SsT:t:U:u:Vv"; +static const char short_opts[] = "+Aa:bBC:c:D:Eeg:Hh::iKklnPp:r:SsT:t:U:u:Vv"; static struct option long_opts[] = { { "askpass", no_argument, NULL, 'A' }, { "auth-type", required_argument, NULL, 'a' }, { "background", no_argument, NULL, 'b' }, + { "bell", no_argument, NULL, 'B' }, { "close-from", required_argument, NULL, 'C' }, { "login-class", required_argument, NULL, 'c' }, { "preserve-env", optional_argument, NULL, 'E' }, @@ -317,6 +316,9 @@ case 'b': SET(flags, MODE_BACKGROUND); break; + case 'B': + SET(tgetpass_flags, TGP_BELL); + break; case 'C': if (strtonum(optarg, 3, INT_MAX, NULL) == 0) { sudo_warnx(U_("the argument to -C must be a number greater than or equal to 3")); @@ -711,6 +713,8 @@ #endif sudo_lbuf_append(&lbuf, " -b, --background %s\n", _("run command in the background")); + sudo_lbuf_append(&lbuf, " -B, --bell %s\n", + _("Bell prompt when prompting")); sudo_lbuf_append(&lbuf, " -C, --close-from=num %s\n", _("close all file descriptors >= num")); #ifdef HAVE_LOGIN_CAP_H diff -r 8a3db9d71297 -r b8a810555274 src/sudo.h --- a/src/sudo.h Mon May 06 10:04:07 2019 -0600 +++ b/src/sudo.h Fri May 24 13:15:58 2019 -0400 @@ -1,6 +1,4 @@ /* - * SPDX-License-Identifier: ISC - * * Copyright (c) 1993-1996, 1998-2005, 2007-2016 * Todd C. Miller <[email protected]> * @@ -38,7 +36,6 @@ #include "sudo_fatal.h" #include "sudo_conf.h" #include "sudo_debug.h" -#include "sudo_queue.h" #include "sudo_util.h" #ifdef HAVE_PRIV_SET @@ -86,6 +83,7 @@ #define TGP_ASKPASS 0x04 /* read from askpass helper program */ #define TGP_MASK 0x08 /* mask user input when reading */ #define TGP_NOECHO_TRY 0x10 /* turn off echo if possible */ +#define TGP_BELL 0x20 /* bell on password prompt */ /* name/value pairs for command line settings. */ struct sudo_settings { diff -r 8a3db9d71297 -r b8a810555274 src/tgetpass.c --- a/src/tgetpass.c Mon May 06 10:04:07 2019 -0600 +++ b/src/tgetpass.c Fri May 24 13:15:58 2019 -0400 @@ -1,6 +1,4 @@ /* - * SPDX-License-Identifier: ISC - * * Copyright (c) 1996, 1998-2005, 2007-2018 * Todd C. Miller <[email protected]> * @@ -128,6 +126,9 @@ enum tgetpass_errval errval; debug_decl(tgetpass, SUDO_DEBUG_CONV) + if (ISSET(flags, TGP_BELL)) + printf("\a"); + (void) fflush(stdout); if (askpass == NULL) {