[pacman-dev] [PATCH] Added the --bell switch.

Eric Toombs ewtoombs at uwaterloo.ca
Mon Jan 11 05:32:39 UTC 2016


That's a pretty good improvement, but there is also a long delay while
pacman calculates dependencies for large upgrades. You might say that
could be avoided by upgrading more frequently, but it is my style and
the style of many others to opt for large monthly upgrades over small
weekly or daily upgrades. I'll try formatting the patch again with git
send-email.

On 2015-12-14 12:12, Andrew Gregory wrote:
> On 11/19/15 at 07:09am, Eric Toombs wrote:
>> This switch rings the terminal bell when user input is required.
>> Obviously, it has no effect if --noconfirm is also passed.
>> ---
> If your only interest in this is to get a notification when downloads
> are done because you have a slow connection, wouldn't a small wrapper
> script accomplish the same goal?
>
>  pacman -Sy && printf "\a" && pacman -Su
>
> This patch also appears to have some mangled whitespace.  Please use
> `git send-email` to submit patches.
>
> apg
>
>>  doc/pacman.8.txt    |  3 +++
>>  src/pacman/conf.h   |  4 +++-
>>  src/pacman/pacman.c |  3 +++
>>  src/pacman/util.c   | 15 +++++++++------
>>  4 files changed, 18 insertions(+), 7 deletions(-)
>>
>> diff --git a/doc/pacman.8.txt b/doc/pacman.8.txt
>> index 514f559..6e0617a 100644
>> --- a/doc/pacman.8.txt
>> +++ b/doc/pacman.8.txt
>> @@ -148,6 +148,9 @@ Options
>>  *\--arch* <arch>::
>>  	Specify an alternate architecture.
>>  +*\--bell*::
>> +	Sound the terminal bell when input is required.
>> +
>>  *\--cachedir* <dir>::
>>  	Specify an alternative package cache location (a typical default is
>>  	+{localstatedir}/cache/pacman/pkg+). Multiple cache directories can be
>> diff --git a/src/pacman/conf.h b/src/pacman/conf.h
>> index 7a7e9cf..463ae48 100644
>> --- a/src/pacman/conf.h
>> +++ b/src/pacman/conf.h
>> @@ -55,6 +55,7 @@ typedef struct __config_t {
>>  	unsigned short checkspace;
>>  	unsigned short usesyslog;
>>  	unsigned short color;
>> + 	unsigned short bell;
>>  	double deltaratio;
>>  	char *arch;
>>  	char *print_format;
>> @@ -201,7 +202,8 @@ enum {
>>  	OP_VERBOSE,
>>  	OP_DOWNLOADONLY,
>>  	OP_REFRESH,
>> -	OP_ASSUMEINSTALLED
>> +	OP_ASSUMEINSTALLED,
>> +	OP_BELL
>>  };
>>   /* clean method */
>> diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
>> index 94685a7..07282e7 100644
>> --- a/src/pacman/pacman.c
>> +++ b/src/pacman/pacman.c
>> @@ -221,6 +221,7 @@ static void usage(int op, const char * const myname)
>>  		addlist(_("      --logfile <path> set an alternate log file\n"));
>>  		addlist(_("      --noconfirm      do not ask for any confirmation\n"));
>>  		addlist(_("      --confirm        always ask for confirmation\n"));
>> +		addlist(_("      --bell           sound the terminal bell when input
>> is required\n"));
>>  	}
>>  	list = alpm_list_msort(list, alpm_list_count(list), options_cmp);
>>  	for(i = list; i; i = alpm_list_next(i)) {
>> @@ -480,6 +481,7 @@ static int parsearg_global(int opt)
>>  		case OP_CONFIRM:
>>  			config->noconfirm = 0;
>>  			break;
>> +		case OP_BELL: config->bell = 1; break;
>>  		case OP_DBPATH:
>>  		case 'b':
>>  			free(config->dbpath);
>> @@ -981,6 +983,7 @@ static int parseargs(int argc, char *argv[])
>>  		{"gpgdir",     required_argument, 0, OP_GPGDIR},
>>  		{"dbonly",     no_argument,       0, OP_DBONLY},
>>  		{"color",      required_argument, 0, OP_COLOR},
>> +		{"bell",       no_argument,       0, OP_BELL},
>>  		{0, 0, 0, 0}
>>  	};
>>  diff --git a/src/pacman/util.c b/src/pacman/util.c
>> index 5f331e8..9183047 100644
>> --- a/src/pacman/util.c
>> +++ b/src/pacman/util.c
>> @@ -1396,13 +1396,14 @@ int multiselect_question(char *array, int count)
>>  		fprintf(stream, "\n");
>>  		fprintf(stream, _("Enter a selection (default=all)"));
>>  		fprintf(stream, ": ");
>> -		fflush(stream);
>>   		if(config->noconfirm) {
>>  			fprintf(stream, "\n");
>>  			break;
>> +		} else if(config->bell) {
>> +			fprintf(stream, "\a");
>>  		}
>> -
>> +		fflush(stream);
>>  		flush_term_input(fileno(stdin));
>>   		if(safe_fgets(response, response_len, stdin)) {
>> @@ -1463,13 +1464,14 @@ int select_question(int count)
>>  		fprintf(stream, "\n");
>>  		fprintf(stream, _("Enter a number (default=%d)"), preset);
>>  		fprintf(stream, ": ");
>> -		fflush(stream);
>>   		if(config->noconfirm) {
>>  			fprintf(stream, "\n");
>>  			break;
>> +		} else if(config->bell) {
>> +			fprintf(stream, "\a");
>>  		}
>> -
>> +		fflush(stream);
>>  		flush_term_input(fileno(stdin));
>>   		if(safe_fgets(response, sizeof(response), stdin)) {
>> @@ -1517,13 +1519,14 @@ static int question(short preset, const char
>> *format, va_list args)
>>  	}
>>   	fputs(config->colstr.nocolor, stream);
>> -	fflush(stream);
>>   	if(config->noconfirm) {
>>  		fprintf(stream, "\n");
>>  		return preset;
>> +	} else if(config->bell) {
>> +		fprintf(stream, "\a");
>>  	}
>> -
>> +	fflush(stream);
>>  	flush_term_input(fd_in);
>>   	if(safe_fgets(response, sizeof(response), stdin)) {
>> -- 
>> 2.6.2


More information about the pacman-dev mailing list