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 *
ensure_password( imap_server_conf_t *srvc )
{
if (srvc->pass_cmd) {
char *cmd = srvc->pass_cmd;
if (cmd) {
FILE *fp;
int ret;
char buffer[80];
flushn();
if (!(fp = popen( srvc->pass_cmd, "r" ))) {
if (*cmd == '+') {
flushn();
cmd++;
}
if (!(fp = popen( cmd, "r" ))) {
pipeerr:
sys_error( "Skipping account %s, password command failed", srvc->name );
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.
..
.TP
\fBPassCmd\fR \fIcommand\fR
\fBPassCmd\fR [\fB+\fR]\fIcommand\fR
Specify a shell command to obtain a password rather than specifying a
password directly. This allows you to use password files and agents.
The command must produce exactly one line on stdout; the trailing newline is
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
\fBTunnel\fR \fIcommand\fR