summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xgnome2-libs/gvfs/DETAILS1
-rw-r--r--gnome2-libs/gvfs/HISTORY5
-rwxr-xr-xgnome2-libs/gvfs/PRE_BUILD4
-rw-r--r--gnome2-libs/gvfs/openssh56.patch56
4 files changed, 66 insertions, 0 deletions
diff --git a/gnome2-libs/gvfs/DETAILS b/gnome2-libs/gvfs/DETAILS
index 92c69deaf5..e26a2e12dc 100755
--- a/gnome2-libs/gvfs/DETAILS
+++ b/gnome2-libs/gvfs/DETAILS
@@ -1,5 +1,6 @@
SPELL=gvfs
VERSION=1.6.3
+ PATCHLEVEL=1
BRANCH=`echo $VERSION|cut -d . -f 1,2`
SOURCE=$SPELL-$VERSION.tar.bz2
SOURCE_DIRECTORY="$BUILD_DIRECTORY/$SPELL-$VERSION"
diff --git a/gnome2-libs/gvfs/HISTORY b/gnome2-libs/gvfs/HISTORY
index a7f49603a0..f0bbab663b 100644
--- a/gnome2-libs/gvfs/HISTORY
+++ b/gnome2-libs/gvfs/HISTORY
@@ -1,3 +1,8 @@
+2010-09-18 Vlad Glagolev <stealth@sourcemage.org>
+ * PRE_BUILD: added, to apply patch
+ * openssh56.patch: added, to fix a bug with openssh 5.6 release
+ (gnome bug #629184)
+
2010-07-13 Ladislav Hagara <hgr@vabo.cz>
* DETAILS: 1.6.3
diff --git a/gnome2-libs/gvfs/PRE_BUILD b/gnome2-libs/gvfs/PRE_BUILD
new file mode 100755
index 0000000000..b7dd25a1a4
--- /dev/null
+++ b/gnome2-libs/gvfs/PRE_BUILD
@@ -0,0 +1,4 @@
+default_pre_build &&
+cd "$SOURCE_DIRECTORY" &&
+
+patch -p0 < "$SPELL_DIRECTORY/openssh56.patch"
diff --git a/gnome2-libs/gvfs/openssh56.patch b/gnome2-libs/gvfs/openssh56.patch
new file mode 100644
index 0000000000..d3a146e966
--- /dev/null
+++ b/gnome2-libs/gvfs/openssh56.patch
@@ -0,0 +1,56 @@
+--- daemon/gvfsbackendsftp.c
++++ daemon/gvfsbackendsftp.c
+@@ -24,6 +24,7 @@
+ #include <config.h>
+
+ #include <stdlib.h>
++#include <sys/poll.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <sys/time.h>
+@@ -852,6 +853,9 @@ handle_login (GVfsBackend *backend,
+ const gchar *authtype = NULL;
+ gchar *object = NULL;
+ char *prompt;
++ /*
++ * TODO: compare this with sshfs.c where the prompt appears on stdin_fd
++ */
+
+ if (op_backend->client_vendor == SFTP_VENDOR_SSH)
+ prompt_fd = stderr_fd;
+@@ -864,14 +868,13 @@ handle_login (GVfsBackend *backend,
+ ret_val = TRUE;
+ while (1)
+ {
+- FD_ZERO (&ifds);
+- FD_SET (stdout_fd, &ifds);
+- FD_SET (prompt_fd, &ifds);
+-
+- tv.tv_sec = SFTP_READ_TIMEOUT;
+- tv.tv_usec = 0;
++ struct pollfd fds[2];
++ fds[0].fd = stdout_fd;
++ fds[0].events = POLLIN;
++ fds[1].fd = prompt_fd;
++ fds[1].events = POLLIN;
+
+- ret = select (MAX (stdout_fd, prompt_fd)+1, &ifds, NULL, NULL, &tv);
++ ret = poll(fds, 2, SFTP_READ_TIMEOUT);
+
+ if (ret <= 0)
+ {
+@@ -882,11 +885,11 @@ handle_login (GVfsBackend *backend,
+ break;
+ }
+
+- if (FD_ISSET (stdout_fd, &ifds))
++ if (fds[0].revents)
+ break; /* Got reply to initial INIT request */
+
+- g_assert (FD_ISSET (prompt_fd, &ifds));
+-
++ if (!(fds[1].revents & POLLIN))
++ continue;
+
+ len = g_input_stream_read (prompt_stream,
+ buffer, sizeof (buffer) - 1,