don't insert unnecessary linebreaks upon PassCmd invocation

the PassCmd will be typically non-interactive (or it will use a gui
password agent), so starting a new line just makes the progress counter
uglier. so make it configurable and default to no line break.
This commit is contained in:
Oswald Buddenhagen 2015-03-30 14:52:02 +02:00
parent ba2b42ec9b
commit 95276cd967
2 changed files with 12 additions and 4 deletions

View File

@ -1723,13 +1723,18 @@ ensure_user( imap_server_conf_t *srvc )
static const char * static const char *
ensure_password( imap_server_conf_t *srvc ) ensure_password( imap_server_conf_t *srvc )
{ {
if (srvc->pass_cmd) { char *cmd = srvc->pass_cmd;
if (cmd) {
FILE *fp; FILE *fp;
int ret; int ret;
char buffer[80]; char buffer[80];
flushn(); if (*cmd == '+') {
if (!(fp = popen( srvc->pass_cmd, "r" ))) { flushn();
cmd++;
}
if (!(fp = popen( cmd, "r" ))) {
pipeerr: pipeerr:
sys_error( "Skipping account %s, password command failed", srvc->name ); sys_error( "Skipping account %s, password command failed", srvc->name );
return 0; return 0;

View File

@ -288,11 +288,14 @@ If neither a password nor a password command is specified in the
configuration file, \fBmbsync\fR will prompt you for a password. configuration file, \fBmbsync\fR will prompt you for a password.
.. ..
.TP .TP
\fBPassCmd\fR \fIcommand\fR \fBPassCmd\fR [\fB+\fR]\fIcommand\fR
Specify a shell command to obtain a password rather than specifying a Specify a shell command to obtain a password rather than specifying a
password directly. This allows you to use password files and agents. password directly. This allows you to use password files and agents.
The command must produce exactly one line on stdout; the trailing newline is The command must produce exactly one line on stdout; the trailing newline is
optional. optional.
Prepend \fB+\fR to the command to indicate that it produces TTY output
(e.g., a decryption password prompt); failure to do so will merely produce
messier output.
.. ..
.TP .TP
\fBTunnel\fR \fIcommand\fR \fBTunnel\fR \fIcommand\fR