Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Added code so that OSX is now supported.
[xestiaab/.git] / source / common / etag.cpp
index 12777b0..95e38e4 100644 (file)
-#include "etag.h" 
+#include "etag.h"
 #include "../common/dirs.h"
 
 ETagDB::~ETagDB(){
-
-       // Write out the database to file.
-       
-       ProcessLock->lock();
-       
-       if (NeedsWrite == TRUE){
-               
-               WriteETagDB();
-       
-       }
-       
-       ProcessLock->unlock();
-
+    
+    // Write out the database to file.
+    
+    ProcessLock->try_lock();
+    
+    if (NeedsWrite == TRUE){
+        
+        WriteETagDB();
+        
+    }
+    
+    ProcessLock->unlock();
+    
 }
 
 void ETagDB::SetupDB(wxString AccountDirInc){
-
-       AccountDir = AccountDirInc;
-       LoadETagDB();
-       //ProcessLock = ProcessLockInc;
-
+    
+    AccountDir = AccountDirInc;
+    LoadETagDB();
+    
 }
 
 void ETagDB::AddETag(wxString Filename, wxString ETag, wxString ETagOriginal){
-
-       // Lock or wait if it is already locked.
-       
-       ProcessLock->lock();
-               
-       // Process the ETag addition.
-       
-       FilenameETag.insert(std::make_pair(Filename, ETag));
-       FilenameETagOriginal.insert(std::make_pair(Filename, ETagOriginal));
-       
-       NeedsWrite = TRUE;
-       
-       // Unlock.
-       
-       ProcessLock->unlock();
-
+    
+    // Lock or wait if it is already locked.
+    
+    ProcessLock->lock();
+    
+    // Process the ETag addition.
+    
+    FilenameETag.insert(std::make_pair(Filename, ETag));
+    FilenameETagOriginal.insert(std::make_pair(Filename, ETagOriginal));
+    
+    NeedsWrite = TRUE;
+    
+    // Unlock.
+    
+    ProcessLock->unlock();
+    
 }
 
 void ETagDB::RemoveETag(wxString Filename){
-
-       // Lock or wait if it is already locked.
-       
-       ProcessLock->lock();
-       
-       // Remove the ETag.
-       
-       Filename.Trim();
-       
-       FilenameETag.erase(Filename);
-       FilenameETagOriginal.erase(Filename);
-       
-       NeedsWrite = TRUE;
-       
-       // Unlock.
-       
-       ProcessLock->unlock();
-
+    
+    // Lock or wait if it is already locked.
+    
+    ProcessLock->lock();
+    
+    // Remove the ETag.
+    
+    Filename.Trim();
+    
+    FilenameETag.erase(Filename);
+    FilenameETagOriginal.erase(Filename);
+    
+    NeedsWrite = TRUE;
+    
+    // Unlock.
+    
+    ProcessLock->unlock();
+    
 }
 
 void ETagDB::UpdateETag(wxString Filename, wxString ETag){
-
-       // Lock or wait if it is already locked.
-       
-       ProcessLock->lock();
-       
-       // Update the ETag.
-
-       FilenameETag.erase(Filename);
-       FilenameETag.insert(std::make_pair(Filename, ETag));    
-       
-       NeedsWrite = TRUE;
-       
-       // Unlock.
-       
-       ProcessLock->unlock();
-
+    
+    // Lock or wait if it is already locked.
+    
+    ProcessLock->lock();
+    
+    // Update the ETag.
+    
+    FilenameETag.erase(Filename);
+    FilenameETag.insert(std::make_pair(Filename, ETag));
+    
+    NeedsWrite = TRUE;
+    
+    // Unlock.
+    
+    ProcessLock->unlock();
+    
 }
 
 void ETagDB::UpdateETag(wxString Filename, wxString ETag, wxString ETagOriginal){
-
-       // Lock or wait if it is already locked.
-       
-       ProcessLock->lock();
-       
-       // Update the ETag.
-
-       FilenameETag.erase(Filename);
-       FilenameETagOriginal.erase(Filename);
-       FilenameETag.insert(std::make_pair(Filename, ETag));
-       FilenameETagOriginal.insert(std::make_pair(Filename, ETagOriginal));
-       
-       std::map<wxString,wxString>::iterator IterWxS;
-       IterWxS = FilenameETagOriginal.find(Filename);
-       NeedsWrite = TRUE;
-       
-       // Unlock.
-       
-       ProcessLock->unlock();
-
+    
+    // Lock or wait if it is already locked.
+    
+    ProcessLock->lock();
+    
+    // Update the ETag.
+    
+    FilenameETag.erase(Filename);
+    FilenameETagOriginal.erase(Filename);
+    FilenameETag.insert(std::make_pair(Filename, ETag));
+    FilenameETagOriginal.insert(std::make_pair(Filename, ETagOriginal));
+    
+    std::map<wxString,wxString>::iterator IterWxS;
+    IterWxS = FilenameETagOriginal.find(Filename);
+    NeedsWrite = TRUE;
+    
+    // Unlock.
+    
+    ProcessLock->unlock();
+    
 }
 
 std::map<wxString,wxString>* ETagDB::GetFilenamePointer(){
-
-       return &FilenameETag;
-
+    
+    return &FilenameETag;
+    
 }
 
 wxString ETagDB::GetETag(wxString Filename){
-
-       // Lock or wait if it is already locked.
-       
-       wxString ETagOut;
-       std::map<wxString,wxString>::iterator IterwxS;
-       
-       ProcessLock->lock();
-       
-       // Get the ETag.
-       
-       //IterwxS = FilenameETag.find(Filename);
-       
-       if (FilenameETag.find(Filename) != FilenameETag.end()){
-       
-               IterwxS = FilenameETag.find(Filename);
-       
-               ETagOut = IterwxS->second;
-       
-       }
-       
-       // Unlock.
-       
-       ProcessLock->unlock();
-       
-       return ETagOut;
-
+    
+    // Lock or wait if it is already locked.
+    
+    wxString ETagOut;
+    std::map<wxString,wxString>::iterator IterwxS;
+    
+    ProcessLock->lock();
+    
+    // Get the ETag.
+    
+    //IterwxS = FilenameETag.find(Filename);
+    
+    if (FilenameETag.find(Filename) != FilenameETag.end()){
+        
+        IterwxS = FilenameETag.find(Filename);
+        
+        ETagOut = IterwxS->second;
+        
+    }
+    
+    // Unlock.
+    
+    ProcessLock->unlock();
+    
+    return ETagOut;
+    
 }
 
 wxString ETagDB::GetETagOriginal(wxString Filename){
-
-       // Lock or wait if it is already locked.
-       
-       wxString ETagOrigOut;
-       std::map<wxString,wxString>::iterator IterwxS;
-       
-       ProcessLock->lock();
-       
-       // Get the ETag.
-       
-       //IterwxS = FilenameETag.find(Filename);
-       
-       if (FilenameETagOriginal.find(Filename) != FilenameETagOriginal.end()){
-       
-               IterwxS = FilenameETagOriginal.find(Filename);
-       
-               ETagOrigOut = IterwxS->second;
-       
-       }
-       
-       // Unlock.
-       
-       ProcessLock->unlock();
-       
-       return ETagOrigOut;
-
+    
+    // Lock or wait if it is already locked.
+    
+    wxString ETagOrigOut;
+    std::map<wxString,wxString>::iterator IterwxS;
+    
+    ProcessLock->lock();
+    
+    // Get the ETag.
+    
+    //IterwxS = FilenameETag.find(Filename);
+    
+    if (FilenameETagOriginal.find(Filename) != FilenameETagOriginal.end()){
+        
+        IterwxS = FilenameETagOriginal.find(Filename);
+        
+        ETagOrigOut = IterwxS->second;
+        
+    }
+    
+    // Unlock.
+    
+    ProcessLock->unlock();
+    
+    return ETagOrigOut;
+    
 }
-       
-bool ETagDB::WriteETagDB(){
-
-       // Lock or wait if it is already locked.
-       
-       ProcessLock->lock();
-       
-       // Write the ETag database.
-       
-       wxString AccountETagDB;
-       std::map<wxString,wxString>::iterator IterwxS;
-       int LineSeek = 0;
-       
-
 
+bool ETagDB::WriteETagDB(){
+    
+    // Lock or wait if it is already locked.
+    
+    ProcessLock->lock();
+    
+    // Write the ETag database.
+    
+    wxString AccountETagDB;
+    std::map<wxString,wxString>::iterator IterwxS;
+    int LineSeek = 0;
+    
+    
+    
 #if defined(__HAIKU__)
     
     //preffilename = wxT("noo");
-
+    
 #elif defined(__WIN32__)
-
-       AccountETagDB.Clear();
-       AccountETagDB = GetAccountDir(AccountDir, FALSE);
-       AccountETagDB.Append(wxT("\\etag.db"));
-
+    
+    AccountETagDB.Clear();
+    AccountETagDB = GetAccountDir(AccountDir, FALSE);
+    AccountETagDB.Append(wxT("\\etag.db"));
+    
 #else
-
-       AccountETagDB.Clear();
-       AccountETagDB = GetAccountDir(AccountDir, FALSE); 
-       AccountETagDB.Append(wxT("/etag.db"));
-
+    
+    // This entry applies to OSX as well.
+    
+    AccountETagDB.Clear();
+    AccountETagDB = GetAccountDir(AccountDir, FALSE);
+    AccountETagDB.Append(wxT("/etag.db"));
+    
 #endif
-
-       wxTextFile ETagDBFile;
-       wxString SettingLine;
-       
-       if (wxFileExists(AccountETagDB) == FALSE){
-
-               if (ETagDBFile.Create(AccountETagDB) == FALSE){
-                       ////ProcessLock.unlock();
-                       return FALSE;
-               }
-       
-       } else {
-       
-               if (ETagDBFile.Open(AccountETagDB) == FALSE){
-                       ////ProcessLock.unlock();
-                       return FALSE;
-               }
-       
-       }
-       
-       ETagDBFile.Clear();
-       
-       for (std::map<wxString,wxString>::iterator iter = FilenameETag.begin(); 
-        iter != FilenameETag.end(); ++iter){
-       
-               // Get Original ETag as well.
-               
-               IterwxS = FilenameETagOriginal.find(iter->first);
-               
-               if (iter->first.IsEmpty()){
-                       continue;
-               }
-               
-               SettingLine = iter->first + wxT("|") + iter->second + wxT("|") + IterwxS->second;
-               
-               ETagDBFile.InsertLine(SettingLine, LineSeek);
-               
-               LineSeek++;
-       
-       }
-       
-       ETagDBFile.Write();
-       
-       NeedsWrite = FALSE;
-       
-       // Unlock.
-       
-       ProcessLock->unlock();
-       
-       return TRUE;
-
+    
+    wxTextFile ETagDBFile;
+    wxString SettingLine;
+    
+    if (wxFileExists(AccountETagDB) == FALSE){
+        
+        if (ETagDBFile.Create(AccountETagDB) == FALSE){
+            ////ProcessLock.unlock();
+            return FALSE;
+        }
+        
+    } else {
+        
+        if (ETagDBFile.Open(AccountETagDB) == FALSE){
+            ////ProcessLock.unlock();
+            return FALSE;
+        }
+        
+    }
+    
+    ETagDBFile.Clear();
+    
+    for (std::map<wxString,wxString>::iterator iter = FilenameETag.begin();
+         iter != FilenameETag.end(); ++iter){
+        
+        // Get Original ETag as well.
+        
+        IterwxS = FilenameETagOriginal.find(iter->first);
+        
+        if (iter->first.IsEmpty()){
+            continue;
+        }
+        
+        SettingLine = iter->first + wxT("|") + iter->second + wxT("|") + IterwxS->second;
+        
+        ETagDBFile.InsertLine(SettingLine, LineSeek);
+        
+        LineSeek++;
+        
+    }
+    
+    ETagDBFile.Write();
+    
+    NeedsWrite = FALSE;
+    
+    // Unlock.
+    
+    ProcessLock->unlock();
+    
+    return TRUE;
+    
 }
 
 bool ETagDB::LoadETagDB(){
-
-       // Lock or wait if it is already locked.
-       
-       ProcessLock->lock();
-       
-       // Load the ETag database.
-       
-       wxString AccountETagDB;
-       wxString AccountDirPath;
-       
+    
+    // Lock or wait if it is already locked.
+    
+    ProcessLock->lock();
+    
+    // Load the ETag database.
+    
+    wxString AccountETagDB;
+    wxString AccountDirPath;
+    
 #if defined(__HAIKU__)
     
     //preffilename = wxT("noo");
-
+    
 #elif defined(__WIN32__)
-
-       AccountDirPath = GetAccountDir(AccountDir, FALSE);
-
-       AccountETagDB = AccountDirPath;
-       AccountETagDB.Append(wxT("\\etag.db"));
-
+    
+    AccountDirPath = GetAccountDir(AccountDir, FALSE);
+    
+    AccountETagDB = AccountDirPath;
+    AccountETagDB.Append(wxT("\\etag.db"));
+    
 #else
-
-       AccountDirPath = GetAccountDir(AccountDir, bool FALSE);
-       
-       AccountETagDB = AccountDirPath;
-       AccountETagDB.Append(wxT("/etag.db"));
-
+    
+    AccountDirPath = GetAccountDir(AccountDir, FALSE);
+    
+    AccountETagDB = AccountDirPath;
+    AccountETagDB.Append(wxT("/etag.db"));
+    
 #endif
-       
-       wxTextFile ETagDBFile;
-       
-       if (wxFileExists(AccountETagDB) == FALSE){
-       
-               if (ETagDBFile.Create(AccountETagDB) == FALSE){
-                       ////ProcessLock.unlock();
-                       //ProcessLock->unlock();
-                       return FALSE;           
-               }
-       
-       } else {
-       
-               if (ETagDBFile.Open(AccountETagDB, wxConvUTF8) == FALSE){
-                       ////ProcessLock.unlock();
-                       //ProcessLock->unlock();
-                       return FALSE;
-               }
-               
-       }
-       
-       wxString wxSFilename;
-       wxString wxSValue;
-       wxString ETagContactFilename;
-       
-       for (wxStringTokenizer ETagDBLine(ETagDBFile.GetFirstLine(), wxT("|"));
-               !ETagDBFile.Eof(); ETagDBLine.SetString(ETagDBFile.GetNextLine(), wxT("|"), wxTOKEN_DEFAULT) )
-       {
-       
-               // Split the file into three.
-               
-               wxSFilename = ETagDBLine.GetNextToken();
-               
-               // Get the ETag.
-               
-               wxSValue = ETagDBLine.GetNextToken();
-               FilenameETag.insert(std::make_pair(wxSFilename, wxSValue));
-               
-               // Get the original ETag.
-       
-               wxSValue = ETagDBLine.GetNextToken();
-               wxSValue.Trim();
-               FilenameETagOriginal.insert(std::make_pair(wxSFilename, wxSValue));
-                       
-       }
-       
-       // Unlock.
-       
-       ProcessLock->unlock();
-
-       return TRUE;
-
+    
+    wxTextFile ETagDBFile;
+    
+    if (wxFileExists(AccountETagDB) == FALSE){
+        
+        if (ETagDBFile.Create(AccountETagDB) == FALSE){
+            ////ProcessLock.unlock();
+            //ProcessLock->unlock();
+            return FALSE;
+        }
+        
+    } else {
+        
+        if (ETagDBFile.Open(AccountETagDB, wxConvUTF8) == FALSE){
+            ////ProcessLock.unlock();
+            //ProcessLock->unlock();
+            return FALSE;
+        }
+        
+    }
+    
+    wxString wxSFilename;
+    wxString wxSValue;
+    wxString ETagContactFilename;
+    
+    for (wxStringTokenizer ETagDBLine(ETagDBFile.GetFirstLine(), wxT("|"));
+         !ETagDBFile.Eof(); ETagDBLine.SetString(ETagDBFile.GetNextLine(), wxT("|"), wxTOKEN_DEFAULT) )
+    {
+        
+        // Split the file into three.
+        
+        wxSFilename = ETagDBLine.GetNextToken();
+        
+        // Get the ETag.
+        
+        wxSValue = ETagDBLine.GetNextToken();
+        FilenameETag.insert(std::make_pair(wxSFilename, wxSValue));
+        
+        // Get the original ETag.
+        
+        wxSValue = ETagDBLine.GetNextToken();
+        wxSValue.Trim();
+        FilenameETagOriginal.insert(std::make_pair(wxSFilename, wxSValue));
+        
+    }
+    
+    // Unlock.
+    
+    ProcessLock->unlock();
+    
+    return TRUE;
+    
 }
 
-void ETagDB::DeleteETagDB(){ 
-
-       // Lock or wait if it is already locked.
-       
-       ProcessLock->lock();
-       
-       wxString AccountETagDB;
-       
-       // Delete the ETagDB.
-       
+void ETagDB::DeleteETagDB(){
+    
+    // Lock or wait if it is already locked.
+    
+    ProcessLock->lock();
+    
+    wxString AccountETagDB;
+    
+    // Delete the ETagDB.
+    
 #if defined(__HAIKU__)
     
     //preffilename = wxT("noo");
-
+    
 #elif defined(__WIN32__)
-
-       AccountETagDB.Clear();
-       AccountETagDB = GetAccountDir(AccountDir, FALSE);
-       AccountETagDB.Append(wxT("\\etag.db"));
-
-       wxRemoveFile(AccountETagDB);
-
+    
+    AccountETagDB.Clear();
+    AccountETagDB = GetAccountDir(AccountDir, FALSE);
+    AccountETagDB.Append(wxT("\\etag.db"));
+    
+    wxRemoveFile(AccountETagDB);
+    
 #else
-
-       AccountETagDB.Clear();
-       AccountETagDB = GetAccountDir(AccountDir, FALSE);
-       AccountETagDB.Append(wxT("/etag.db"));
-       
-       wxRemoveFile(AccountETagDB);
-
+    
+    AccountETagDB.Clear();
+    AccountETagDB = GetAccountDir(AccountDir, FALSE);
+    AccountETagDB.Append(wxT("/etag.db"));
+    
+    wxRemoveFile(AccountETagDB);
+    
 #endif
-       
-       // Unlock.
-       
-       ProcessLock->unlock();
-
+    
+    // Unlock.
+    
+    ProcessLock->unlock();
+    
 }
 
 bool ETagDB::CheckETagExists(wxString Filename){
-
-       if (FilenameETag.find(Filename) == FilenameETag.end()){
-       
-               return FALSE;
-       
-       } else {
-       
-               return TRUE;
-       
-       }       
-
+    
+    if (FilenameETag.find(Filename) == FilenameETag.end()){
+        
+        return FALSE;
+        
+    } else {
+        
+        return TRUE;
+        
+    }  
+    
 }
 
 std::map<wxString,ETagData> ETagDB::GetETagData(){
-
-       // Lock the database.
-       
-       ProcessLock->lock();
-       
-       // Go through each of the ETags and process them accordingly.
-
-       std::map<wxString,ETagData> DataSet;
-       
-       for (std::map<wxString,wxString>::iterator iter = FilenameETag.begin(); 
-        iter != FilenameETag.end(); ++iter){
-       
-               std::map<wxString,wxString>::iterator origiter = FilenameETagOriginal.find(iter->first);
-       
-               ETagData etd;
-               
-               etd.ETagValue = iter->second;
-               etd.ETagOrigValue = origiter->second;
-               
-               DataSet.insert(std::make_pair(iter->first, etd));
-       
-       }
-       
-       // Unlock the database.
-
-       ProcessLock->unlock();
-       
-       return DataSet;
-
+    
+    // Lock the database.
+    
+    ProcessLock->lock();
+    
+    // Go through each of the ETags and process them accordingly.
+    
+    std::map<wxString,ETagData> DataSet;
+    
+    for (std::map<wxString,wxString>::iterator iter = FilenameETag.begin(); 
+         iter != FilenameETag.end(); ++iter){
+        
+        std::map<wxString,wxString>::iterator origiter = FilenameETagOriginal.find(iter->first);
+        
+        ETagData etd;
+        
+        etd.ETagValue = iter->second;
+        etd.ETagOrigValue = origiter->second;
+        
+        DataSet.insert(std::make_pair(iter->first, etd));
+        
+    }
+    
+    // Unlock the database.
+    
+    ProcessLock->unlock();
+    
+    return DataSet;
+    
 }
 
 bool ETagDB::GetWriteStatus(){
-
-       return NeedsWrite;
-
+    
+    return NeedsWrite;
+    
 }
\ No newline at end of file
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy