From 9b2dd6e5ddd10e9beee061f3d1a25f047d80d290 Mon Sep 17 00:00:00 2001 From: deva Date: Tue, 18 Oct 2005 14:04:41 +0000 Subject: *** empty log message *** --- src/file.cc | 135 +++++++++++++++--------------------------------------------- 1 file changed, 34 insertions(+), 101 deletions(-) (limited to 'src/file.cc') diff --git a/src/file.cc b/src/file.cc index f3c0cbc..3a59334 100644 --- a/src/file.cc +++ b/src/file.cc @@ -27,12 +27,16 @@ #include #include "file.h" +#include "miav_config.h" + #include #include #include #include #include +#include + // For ntoh* #include @@ -77,6 +81,9 @@ File::~File() info->info("[%s]", filelist[cnt].c_str()); } + std::string *trash = config->readString("server_trash"); + std::string *later = config->readString("server_later"); + switch(savestate) { case NO_CHANGE: info->warn("File had no savestate!"); @@ -88,16 +95,12 @@ File::~File() case DELETE: info->info("Files in this session is to be deleted (moved to trash)."); - for(unsigned int cnt = 0; cnt < filelist.size(); cnt ++) { - // TODO: Move file filelist[cnt] to trash - } + Move((char*)trash->c_str()); break; case LATER: info->info("Files in this session is stored for later decisson."); - for(unsigned int cnt = 0; cnt < filelist.size(); cnt ++) { - // TODO: Move file filelist[cnt] to the later folder. - } + Move((char*)later->c_str()); break; } @@ -105,6 +108,28 @@ File::~File() delete extension; } +int File::Move(char *destination) +{ + char newfile[256]; + char filename[256]; + + createPath(destination); + for(unsigned int cnt = 0; cnt < filelist.size(); cnt ++) { + // TODO: Check is the file exists... if not make som noise! + + + // TODO: Move file filelist[cnt] to the destination folder. + strcpy(filename, (char*)filelist[cnt].c_str()); + sprintf(newfile, "%s%s", destination, strrchr(filename, '/')); + if(rename((char*)filelist[cnt].c_str(), newfile) == -1) + info->error("Error moving file %s to %s:", + (char*)filelist[cnt].c_str(), + newfile, + strerror(errno)); + } + return 0; +} + int File::Open() { char fname[256]; @@ -162,100 +187,7 @@ int File::Write(void* data, int size) return w; } -/* -int File::Write(char* data, int size) -{ - return Write((void*)data, size); -} - -int File::Write(unsigned long long int val) -{ - int res; - int written = 0; - unsigned long int *h_u = (unsigned long int *)&val; - unsigned long int *h_l = (unsigned long int *)(((char*)&val) + sizeof(unsigned long int)); - - *h_u = htonl(*h_u); - *h_l = htonl(*h_l); - - if((res = Write((void*)h_l, sizeof(*h_l))) < 0) { - return res; - } - written += res; - - if((res = Write((void*)h_u, sizeof(*h_u))) < 0) { - return res; - } - written += res; - - return written; -} - -int File::Write(long long int val) -{ - int res; - int written = 0; - unsigned long int *h_u = (unsigned long int *)&val; - unsigned long int *h_l = (unsigned long int *)(((char*)&val) + sizeof(unsigned long int)); - - *h_u = htonl(*h_u); - *h_l = htonl(*h_l); - - if((res = Write((void*)h_l, sizeof(*h_l))) < 0) { - return res; - } - written += res; - - if((res = Write((void*)h_u, sizeof(*h_u))) < 0) { - return res; - } - written += res; - - return written; -} - -int File::Write(long int val) -{ - val = htonl(val); - - return Write((char*)&val, sizeof(val)); -} - -int File::Write(unsigned long int val) -{ - val = htonl(val); - - return Write((char*)&val, sizeof(val)); -} - -int File::Write(int val) -{ - val = htonl(val); - - return Write((char*)&val, sizeof(val)); -} - -int File::Write(unsigned int val) -{ - val = htonl(val); - - return Write((char*)&val, sizeof(val)); -} -int File::Write(short int val) -{ - val = htons(val); - - return Write((char*)&val, sizeof(val)); -} - -int File::Write(unsigned short int val) -{ - val = htons(val); - - return Write((char*)&val, sizeof(val)); -} -*/ int File::createPath(char* path) { // struct stat stats; @@ -281,9 +213,10 @@ int File::createPath(char* path) return 0; } -void File::setSaveState(n_savestate savestate) +void File::setSaveState(n_savestate s) { - this->savestate = savestate; + savestate = s; + info->info("SETTING SAVESTATE TO: %d", savestate); } #ifdef __TEST_FILE -- cgit v1.2.3