• R/O
  • SSH
  • HTTPS

ttssh2: Commit


Commit MetaInfo

Revision7134 (tree)
Time2018-06-14 19:57:17
Authordoda

Log Message

Local to Remote の scp で、scp 先 path を host:/some/where とした時に
相手先で host への ssh 接続を行い、そこで scp を起動するようにした。

現在の制限:
・pageant 等でパスフレーズ入力が発生しないようにする必要がある
・path のエスケープ等は行っていない
・小さいファイルの転送が失敗する事がある?

Change Summary

Incremental Difference

--- trunk/ttssh2/ttxssh/ssh.c (revision 7133)
+++ trunk/ttssh2/ttxssh/ssh.c (revision 7134)
@@ -7653,6 +7653,7 @@
76537653 int id, remote_id;
76547654 Channel_t *c;
76557655 char buff[MAX_PATH + 30];
7656+ char *host_p, *path_p;
76567657
76577658 #ifdef DONT_WANTCONFIRM
76587659 int want_reply = 0; // false
@@ -7717,8 +7718,17 @@
77177718
77187719 case TYPE_SCP:
77197720 if (c->scp.dir == TOREMOTE) {
7720- _snprintf_s(buff, sizeof(buff), _TRUNCATE, "scp -t %s", c->scp.remotefile);
7721-
7721+ if ((path_p = strchr(c->scp.remotefile, ':')) != NULL) {
7722+ host_p = c->scp.remotefile;
7723+ *path_p++ = 0;
7724+ if (*path_p == 0) {
7725+ path_p = ".";
7726+ }
7727+ _snprintf_s(buff, sizeof(buff), _TRUNCATE, "ssh %s scp -t %s", host_p, path_p);
7728+ }
7729+ else {
7730+ _snprintf_s(buff, sizeof(buff), _TRUNCATE, "scp -t %s", c->scp.remotefile);
7731+ }
77227732 } else {
77237733 // ファイル名に空白を含まれていてもよいように、ファイル名を二重引用符で囲む。
77247734 // (2014.7.13 yutaka)
Show on old repository browser