From dac78460c25fda77b287952640a87fc7f33a4fe0 Mon Sep 17 00:00:00 2001 From: "Mikhail S. Pobolovets" Date: Mon, 26 Jan 2009 16:56:55 +0200 Subject: [PATCH 1/2] Port number in shell link can be specified now vfs/ChangeLog: * fish.c: Iterpret SUP.flags as port number if SUP.flags is not in * 0, FISH_FLAG_COMPRESSED and FISH_FLAG_RSH. Weakness: port number Originally by Andrew V. Samoilov Signed-off-by: Mikhail S. Pobolovets --- vfs/fish.c | 41 ++++++++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/vfs/fish.c b/vfs/fish.c index 29b5f67b8..5d24d5276 100644 --- a/vfs/fish.c +++ b/vfs/fish.c @@ -216,13 +216,22 @@ static int fish_open_archive_int (struct vfs_class *me, struct vfs_s_super *super) { { - const char *argv[10]; + char gbuf[10]; + const char *argv[10]; /* All of 10 is used now */ const char *xsh = (SUP.flags == FISH_FLAG_RSH ? "rsh" : "ssh"); int i = 0; argv[i++] = xsh; if (SUP.flags == FISH_FLAG_COMPRESSED) argv[i++] = "-C"; + + if (SUP.flags > FISH_FLAG_RSH) + { + argv[i++] = "-p"; + g_snprintf (gbuf, sizeof (gbuf), "%d", SUP.flags); + argv[i++] = gbuf; + } + argv[i++] = "-l"; argv[i++] = SUP.user; argv[i++] = SUP.host; @@ -320,7 +329,7 @@ fish_open_archive (struct vfs_class *me, struct vfs_s_super *super, SUP.user = user; SUP.flags = flags; if (!strncmp (op, "rsh:", 4)) - SUP.flags |= FISH_FLAG_RSH; + SUP.flags = FISH_FLAG_RSH; SUP.cwdir = NULL; if (password) SUP.password = password; @@ -1056,22 +1065,28 @@ static void fish_fill_names (struct vfs_class *me, fill_names_f func) { struct vfs_s_super *super = MEDATA->supers; - const char *flags; char *name; - - while (super){ - switch (SUP.flags & (FISH_FLAG_RSH | FISH_FLAG_COMPRESSED)) { - case FISH_FLAG_RSH: + + char gbuf[10]; + + while (super) + { + const char *flags = ""; + switch (SUP.flags) + { + case FISH_FLAG_RSH: flags = ":r"; break; - case FISH_FLAG_COMPRESSED: + case FISH_FLAG_COMPRESSED: flags = ":C"; break; - case FISH_FLAG_RSH | FISH_FLAG_COMPRESSED: - flags = ""; - break; - default: - flags = ""; + default: + if (SUP.flags > FISH_FLAG_RSH) + { + break; + g_snprintf (gbuf, sizeof (gbuf), ":%d", SUP.flags); + flags = gbuf; + } break; } From a73bd631e57d6f9ee89f3a3fc1870fa879b01fb0 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT service" Date: Sat, 31 Jan 2009 19:13:48 +0100 Subject: [PATCH 2/2] added missing changelog entry --- ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ChangeLog b/ChangeLog index d66c4191c..727c8750c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ + +2009-01-26 Mikhail S. Pobolovets + + * vfs/fish.c: Iterpret SUP.flags as port number if SUP.flags is not in + 0, FISH_FLAG_COMPRESSED and FISH_FLAG_RSH. Weakness: port number + 2009-01-25 Ilia Maslakov * src/boxes.c, src/boxes.h, src/dir.c, src/dir.h: