win32 compatibility for moving files

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1099 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
csoler 2009-03-26 13:24:27 +00:00
parent 97a1ac3422
commit 4d278ac414
4 changed files with 53 additions and 1 deletions

View File

@ -29,6 +29,8 @@
#include "pqi/pqibin.h" #include "pqi/pqibin.h"
#include "pqi/pqiarchive.h" #include "pqi/pqiarchive.h"
#include "pqi/pqistreamer.h" #include "pqi/pqistreamer.h"
#include "pqi/pqinotify.h"
#include <errno.h>
#include "serialiser/rsconfigitems.h" #include "serialiser/rsconfigitems.h"
@ -505,8 +507,26 @@ bool p3Config::saveConfiguration()
std::cerr << "renaming " << fnametmp.c_str() << " to " << fname.c_str() << std::endl ; std::cerr << "renaming " << fnametmp.c_str() << " to " << fname.c_str() << std::endl ;
if(0 != rename(fnametmp.c_str(),fname.c_str())) #ifdef WIN32
std::wstring from,to ;
for(std::string::const_iterator it = fnametmp.begin(); it!=fnametmp.end();++it) from += *it;
for(std::string::const_iterator it = fname .begin(); it!=fname .end();++it) to += *it;
int err = !MoveFileEx(from.c_str(), to.c_str(), MOVEFILE_REPLACE_EXISTING) ;
#else
int err = rename(fnametmp.c_str(),fname.c_str());
#endif
if(0 != err)
{
std::ostringstream errlog;
#ifdef WIN32
errlog << err << ", " << errno ;
#else
errlog << err << :", " << GetLastError() ;
#endif
getPqiNotify()->AddSysMessage(0, RS_SYS_WARNING, "File rename error", "Error while renaming file " + fname + ": got error "+errlog.str());
return false ; return false ;
}
std::cerr << "Successfully wrote p3config file " << fname.c_str() << std::endl ; std::cerr << "Successfully wrote p3config file " << fname.c_str() << std::endl ;
/* else okay */ /* else okay */

View File

@ -459,7 +459,15 @@ bool p3ChatService::saveConfiguration()
setHash(out->gethash()); setHash(out->gethash());
delete pa_out; delete pa_out;
#ifdef WIN32
std::wstring from,to ;
for(std::string::const_iterator it = msgfiletmp.begin(); it!=msgfiletmp.end();++it) from += *it;
for(std::string::const_iterator it = msgfile .begin(); it!=msgfile .end();++it) to += *it;
if(!MoveFileEx(from.c_str(), to.c_str(), MOVEFILE_REPLACE_EXISTING))
#else
if(0 != rename(msgfiletmp.c_str(),msgfile.c_str())) if(0 != rename(msgfiletmp.c_str(),msgfile.c_str()))
#endif
return false ; return false ;
return true; return true;

View File

@ -788,7 +788,15 @@ void p3GroupDistrib::locked_publishPendingMsgs()
mPendingPublish.clear(); mPendingPublish.clear();
delete streamer; delete streamer;
#ifdef WIN32
std::wstring from,to ;
for(std::string::const_iterator it = filenametmp.begin(); it!=filenametmp.end();++it) from += *it;
for(std::string::const_iterator it = filename .begin(); it!=filename .end();++it) to += *it;
if(!MoveFileEx(from.c_str(), to.c_str(), MOVEFILE_REPLACE_EXISTING))
#else
if(0 != rename(filenametmp.c_str(),filename.c_str())) if(0 != rename(filenametmp.c_str(),filename.c_str()))
#endif
std::cerr << "Could not rename file " << filenametmp << " into " << filename << std::endl ; std::cerr << "Could not rename file " << filenametmp << " into " << filename << std::endl ;
else else
std::cerr << "Successfull wrote file " << filename << std::endl ; std::cerr << "Successfull wrote file " << filename << std::endl ;
@ -925,7 +933,15 @@ void p3GroupDistrib::publishDistribGroups()
/* cleanup */ /* cleanup */
delete streamer; delete streamer;
#ifdef WIN32
std::wstring from,to ;
for(std::string::const_iterator it = filenametmp.begin(); it!=filenametmp.end();++it) from += *it;
for(std::string::const_iterator it = filename .begin(); it!=filename .end();++it) to += *it;
if(!MoveFileEx(from.c_str(), to.c_str(), MOVEFILE_REPLACE_EXISTING))
#else
if(0 != rename(filenametmp.c_str(),filename.c_str())) if(0 != rename(filenametmp.c_str(),filename.c_str()))
#endif
std::cerr << "Could not rename file " << filenametmp << " into " << filename << std::endl ; std::cerr << "Could not rename file " << filenametmp << " into " << filename << std::endl ;
else else
std::cerr << "Successfull wrote file " << filename << std::endl ; std::cerr << "Successfull wrote file " << filename << std::endl ;

View File

@ -289,7 +289,15 @@ bool p3MsgService::saveConfiguration()
if(!written) if(!written)
return false ; return false ;
#ifdef WIN32
std::wstring from,to ;
for(std::string::const_iterator it = msgfiletmp.begin(); it!=msgfiletmp.end();++it) from += *it;
for(std::string::const_iterator it = msgfile .begin(); it!=msgfile .end();++it) to += *it;
if(!MoveFileEx(from.c_str(), to.c_str(), MOVEFILE_REPLACE_EXISTING))
#else
if(0 != rename(msgfiletmp.c_str(),msgfile.c_str())) if(0 != rename(msgfiletmp.c_str(),msgfile.c_str()))
#endif
return false ; return false ;
return true; return true;