summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-ftp/lftp/files/3.6.1-specialchars.patch')
-rw-r--r--net-ftp/lftp/files/3.6.1-specialchars.patch67
1 files changed, 67 insertions, 0 deletions
diff --git a/net-ftp/lftp/files/3.6.1-specialchars.patch b/net-ftp/lftp/files/3.6.1-specialchars.patch
new file mode 100644
index 000000000000..5057d2dedbf6
--- /dev/null
+++ b/net-ftp/lftp/files/3.6.1-specialchars.patch
@@ -0,0 +1,67 @@
+--- src/GetJob.cc 23 Apr 2007 07:11:45 -0000 1.28
++++ src/GetJob.cc 28 Dec 2007 11:12:35 -0000
+@@ -99,33 +99,44 @@ bool GetJob::IsRemoteNonURL(const Parsed
+ // store & put || !store & get
+ return (!url.proto && (mode==FA::STORE ^ !reverse));
+ }
++bool GetJob::IsLocalNonURL(const ParsedURL &url,FA::open_mode mode)
++{
++ // store & get || !store & put
++ return (!url.proto && (mode==FA::STORE ^ reverse));
++}
+ bool GetJob::IsLocal(const ParsedURL &url)
+ {
+ return !url.proto || !strcasecmp(url.proto,"file");
+ }
++// create copy peer from a cloned session
+ FileCopyPeer *GetJob::CreateCopyPeer(FileAccess *session,const char *path,FA::open_mode mode)
+ {
+ ParsedURL url(path,true);
+ if(IsRemoteNonURL(url,mode))
+ return new FileCopyPeerFA(session,path,mode);
+ Delete(session); // delete cloned session.
+- return CreateCopyPeer(url,mode);
++ return CreateCopyPeer(url,path,mode);
+ }
++// create copy peer using a session reference
+ FileCopyPeer *GetJob::CreateCopyPeer(const FileAccessRef& session,const char *path,FA::open_mode mode)
+ {
+ ParsedURL url(path,true);
+ if(IsRemoteNonURL(url,mode))
+ return new FileCopyPeerFA(session,path,mode);
+- return CreateCopyPeer(url,mode);
++ return CreateCopyPeer(url,path,mode);
+ }
+-FileCopyPeer *GetJob::CreateCopyPeer(const ParsedURL &url,FA::open_mode mode)
++FileCopyPeer *GetJob::CreateCopyPeer(const ParsedURL &url,const char *path,FA::open_mode mode)
+ {
++ if(IsLocalNonURL(url,mode))
++ return CreateCopyPeer(path,mode);
+ if(IsLocal(url))
+- return (mode==FA::STORE)
+- ? DstLocal(url.path)
+- : SrcLocal(url.path);
++ return CreateCopyPeer(url.path,mode);
+ return new FileCopyPeerFA(&url,mode);
+ }
++FileCopyPeer *GetJob::CreateCopyPeer(const char *path,FA::open_mode mode)
++{
++ return mode==FA::STORE ? DstLocal(path) : SrcLocal(path);
++}
+
+ void GetJob::NextFile()
+ {
+--- src/GetJob.h 23 Apr 2007 07:11:46 -0000 1.15
++++ src/GetJob.h 28 Dec 2007 11:10:07 -0000
+@@ -29,8 +29,10 @@ class GetJob : public CopyJobEnv
+ {
+ FileCopyPeer *SrcLocal(const char *src);
+ FileCopyPeer *DstLocal(const char *dst);
+- FileCopyPeer *CreateCopyPeer(const ParsedURL &url,FA::open_mode mode);
++ FileCopyPeer *CreateCopyPeer(const ParsedURL &url,const char *path,FA::open_mode mode);
++ FileCopyPeer *CreateCopyPeer(const char *path,FA::open_mode mode);
+ bool IsRemoteNonURL(const ParsedURL &url,FA::open_mode mode);
++ bool IsLocalNonURL(const ParsedURL &url,FA::open_mode mode);
+ static bool IsLocal(const ParsedURL &url);
+
+ protected: