diff options
Diffstat (limited to 'net-ftp/lftp/files/3.6.1-specialchars.patch')
-rw-r--r-- | net-ftp/lftp/files/3.6.1-specialchars.patch | 67 |
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: |