The root cause is that the sftp code doesn't handle errors cleanly: if the sftp server side happens to prefix its error message with 'mkdir:' and includes 'permission denied', then the current code ignores the error and continues.
personally i believe the pipe+pexpect setup is beyond salvaging (sorry, but parsing error outputs is way too brittle - what about locales, for example?), so i've rewritten the ssh backend from scratch, to use python-paramiko and no local scp/sftp client programs at all.
the rewritten version does both sftp and scp, uses only one persistent ssh connection and should be a lot more
robust.
i'll provide a patch to update/cleanup the cmdline options and manpage later.
The root cause is that the sftp code doesn't handle errors cleanly: if the sftp server side happens to prefix its error message with 'mkdir:' and includes 'permission denied', then the current code ignores the error and continues.
personally i believe the pipe+pexpect setup is beyond salvaging (sorry, but parsing error outputs is way too brittle - what about locales, for example?), so i've rewritten the ssh backend from scratch, to use python-paramiko and no local scp/sftp client programs at all.
the rewritten version does both sftp and scp, uses only one persistent ssh connection and should be a lot more
robust.
i'll provide a patch to update/cleanup the cmdline options and manpage later.