On Tue, Mar 01, 2005 at 10:10:39PM +0100, Clement Hermann wrote: > However, I've got a small problem with MOVE requests, it complains about > it beeing bad formated :
Does this patch fix the problem? > the Destination could even be another server. This is not handled by It could only be done as quote command extension. Same for COPY request. -- Alexander.
Index: FileAccess.cc =================================================================== RCS file: /home/lav/cvsroot/lftp/src/FileAccess.cc,v retrieving revision 1.117 diff -u -p -r1.117 FileAccess.cc --- FileAccess.cc 10 Feb 2005 13:37:16 -0000 1.117 +++ FileAccess.cc 2 Mar 2005 11:01:13 -0000 @@ -402,7 +402,8 @@ const char *FileAccess::GetFileURL(const { if(!f || (f[0]!='/' && f[0]!='~')) f=dir_file(cwd?cwd:"~",f); - u.path=(char*)f; + u.path=alloca_strdup(f); + OptimizePath(u.path,/*strip_trailing_slash*/false); } xfree(url); @@ -571,7 +572,7 @@ int FileAccess::device_prefix_len(const return 0; } -void FileAccess::OptimizePath(char *path) +void FileAccess::OptimizePath(char *path,bool strip_trailing_slash) { int prefix_size=0; @@ -614,7 +615,7 @@ void FileAccess::OptimizePath(char *path if(in[0]=='/') { // double slash or a slash on the end - if(in[1]=='/' || in[1]=='\0') + if(in[1]=='/' || (strip_trailing_slash && in[1]=='\0')) { in++; continue; Index: FileAccess.h =================================================================== RCS file: /home/lav/cvsroot/lftp/src/FileAccess.h,v retrieving revision 1.82 diff -u -p -r1.82 FileAccess.h --- FileAccess.h 4 Feb 2005 15:25:51 -0000 1.82 +++ FileAccess.h 2 Mar 2005 11:00:15 -0000 @@ -221,7 +221,7 @@ public: virtual void Rename(const char *rfile,const char *to); virtual void Mkdir(const char *rfile,bool allpath=false); virtual void Chdir(const char *dir,bool verify=true); - void OptimizePath(char *path); + void OptimizePath(char *path,bool strip_trailing_slash=true); void SetCwd(const char *dir) { xfree(cwd); cwd=xstrdup(dir); } void Remove(const char *rfile) { Open(rfile,REMOVE); } void RemoveDir(const char *dir) { Open(dir,REMOVE_DIR); } Index: Http.cc =================================================================== RCS file: /home/lav/cvsroot/lftp/src/Http.cc,v retrieving revision 1.187 diff -u -p -r1.187 Http.cc --- Http.cc 25 Feb 2005 12:47:41 -0000 1.187 +++ Http.cc 2 Mar 2005 06:54:40 -0000 @@ -609,11 +609,7 @@ void Http::SendRequest(const char *conne case RENAME: { SendMethod("MOVE",efile); - char *efile1=string_alloca(strlen(file1)*3+1); - url::encode_string(file1,efile1,URL_PATH_UNSAFE); - char *pfile1=string_alloca(strlen(ecwd)+1+strlen(efile1)+1+6+1); - DirFile(pfile1,ecwd,efile1); - Send("Destination: %s\r\n",pfile1); + Send("Destination: %s\r\n",GetFileURL(file1)); } } SendAuth();