scmno****@osdn*****
scmno****@osdn*****
2018年 6月 14日 (木) 19:57:17 JST
Revision: 7134 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/7134 Author: doda Date: 2018-06-14 19:57:17 +0900 (Thu, 14 Jun 2018) Log Message: ----------- Local to Remote の scp で、scp 先 path を host:/some/where とした時に 相手先で host への ssh 接続を行い、そこで scp を起動するようにした。 現在の制限: ・pageant 等でパスフレーズ入力が発生しないようにする必要がある ・path のエスケープ等は行っていない ・小さいファイルの転送が失敗する事がある? Modified Paths: -------------- trunk/ttssh2/ttxssh/ssh.c -------------- next part -------------- Modified: trunk/ttssh2/ttxssh/ssh.c =================================================================== --- trunk/ttssh2/ttxssh/ssh.c 2018-06-14 10:57:13 UTC (rev 7133) +++ trunk/ttssh2/ttxssh/ssh.c 2018-06-14 10:57:17 UTC (rev 7134) @@ -7653,6 +7653,7 @@ int id, remote_id; Channel_t *c; char buff[MAX_PATH + 30]; + char *host_p, *path_p; #ifdef DONT_WANTCONFIRM int want_reply = 0; // false @@ -7717,8 +7718,17 @@ case TYPE_SCP: if (c->scp.dir == TOREMOTE) { - _snprintf_s(buff, sizeof(buff), _TRUNCATE, "scp -t %s", c->scp.remotefile); - + if ((path_p = strchr(c->scp.remotefile, ':')) != NULL) { + host_p = c->scp.remotefile; + *path_p++ = 0; + if (*path_p == 0) { + path_p = "."; + } + _snprintf_s(buff, sizeof(buff), _TRUNCATE, "ssh %s scp -t %s", host_p, path_p); + } + else { + _snprintf_s(buff, sizeof(buff), _TRUNCATE, "scp -t %s", c->scp.remotefile); + } } else { // \x83t\x83@\x83C\x83\x8B\x96\xBC\x82ɋ\xF0\x8A܂܂\xEA\x82Ă\xA2\x82Ă\xE0\x82悢\x82悤\x82ɁA\x83t\x83@\x83C\x83\x8B\x96\xBC\x82\xF0\x93\xF1\x8Fd\x88\xF8\x97p\x95\x84\x82ň͂ށB // (2014.7.13 yutaka)