isync

mailbox synchronization program
git clone https://git.code.sf.net/p/isync/isync
Log | Files | Refs | README | LICENSE

commit 95276cd9672e7416265357303fd9db496ac01608
parent ba2b42ec9b3d1031423e94f8ad476164c9f1cc7f
Author: Oswald Buddenhagen <ossi@users.sf.net>
Date:   Mon, 30 Mar 2015 14:52:02 +0200

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.

Diffstat:
Msrc/drv_imap.c | 11++++++++---
Msrc/mbsync.1 | 5++++-
2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/drv_imap.c b/src/drv_imap.c @@ -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; diff --git a/src/mbsync.1 b/src/mbsync.1 @@ -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