diff --git a/src/include/adif_io.h b/src/include/adif_io.h index 6fffd433..c4b58e86 100644 --- a/src/include/adif_io.h +++ b/src/include/adif_io.h @@ -19,8 +19,8 @@ private: cQsoRec adifqso; FILE *adiFile; void fillfield(int, char *); - std::string log_checksum; - std::string file_checksum; +// std::string log_checksum; +// std::string file_checksum; public: cAdifIO (); ~cAdifIO () {}; @@ -30,10 +30,10 @@ public: int writeFile (const char *, cQsoDb *); int writeLog (const char *, cQsoDb *); bool log_changed(const char *fname); - std::string get_checksum() { return log_checksum; } - void set_checksum( std::string s ) { log_checksum = s; } - std::string get_file_checksum() { return file_checksum; } - void do_checksum(cQsoDb &); +// std::string get_checksum() { return log_checksum; } +// void set_checksum( std::string s ) { log_checksum = s; } +// std::string get_file_checksum() { return file_checksum; } +// void do_checksum(cQsoDb &); }; // crc 16 cycle redundancy check sum diff --git a/src/include/threads.h b/src/include/threads.h index d83c501b..5231773c 100644 --- a/src/include/threads.h +++ b/src/include/threads.h @@ -37,9 +37,19 @@ int sem_timedwait(sem_t* sem, const struct timespec* abs_timeout); int sem_timedwait_rel(sem_t* sem, double rel_timeout); int pthread_cond_timedwait_rel(pthread_cond_t* cond, pthread_mutex_t* mutex, double rel_timeout); +//enum { +// INVALID_TID = -1, +// TRX_TID, QRZ_TID, RIGCTL_TID, NORIGCTL_TID, LOGBOOK_TID, +//#if USE_XMLRPC +// XMLRPC_TID, +//#endif +// ARQ_TID, ARQSOCKET_TID, +// FLMAIN_TID, +// NUM_THREADS, NUM_QRUNNER_THREADS = NUM_THREADS - 1 +//}; enum { INVALID_TID = -1, - TRX_TID, QRZ_TID, RIGCTL_TID, NORIGCTL_TID, LOGBOOK_TID, + TRX_TID, QRZ_TID, RIGCTL_TID, NORIGCTL_TID, #if USE_XMLRPC XMLRPC_TID, #endif diff --git a/src/logbook/adif_io.cxx b/src/logbook/adif_io.cxx index dcef617a..d62cd401 100644 --- a/src/logbook/adif_io.cxx +++ b/src/logbook/adif_io.cxx @@ -94,18 +94,6 @@ void initfields() fields[i].name = new string(fieldnames[i]); } -/* -int fieldnbr (const char *s) { - for (int i = 0; i < NUMFIELDS; i++) - if (fields[i].name == s) { -// if (strncasecmp( fields[i].name, s, fields[i].size) == 0) { - if (fields[i].type == COMMENT) return(NOTES); - return fields[i].type; - } - return -1; -} -*/ - int findfield( char *p ) { int m; @@ -186,7 +174,6 @@ void cAdifIO::readFile (const char *fname, cQsoDb *db) { // relaxed file integrity test to all importing from non conforming log programs if ((strcasestr(buff, "'); - if (p) { - p++; - file_checksum.clear(); - for (int i = 0; i < 4; i++, p++) file_checksum += *p; - } - } char *p1 = buff, *p2; if (*p1 != '<') { // yes, skip over header to start of records @@ -238,7 +216,6 @@ void cAdifIO::readFile (const char *fname, cQsoDb *db) { p2 = strchr(p1,'<'); } - log_checksum = file_checksum; db->SortByDate(); delete [] buff; } @@ -360,61 +337,7 @@ int cAdifIO::writeLog (const char *fname, cQsoDb *db) { fprintf (adiFile, "%s", records.c_str()); fclose (adiFile); - log_checksum = s_checksum; return 0; } -void cAdifIO::do_checksum(cQsoDb &db) -{ - Ccrc16 checksum; - string sFld; - cQsoRec *rec; - string records; - string record; - char recfield[200]; - - records.clear(); - for (int i = 0; i < db.nbrRecs(); i++) { - rec = db.getRec(i); - record.clear(); - for (int j = 0; j < NUMFIELDS; j++) { - sFld = rec->getField(j); - if (!sFld.empty()) { - snprintf(recfield, sizeof(recfield), adifmt, - fields[j].name->c_str(), sFld.length()); - record.append(recfield).append(sFld); - } - } - record.append(szEOR); - record.append(szEOL); - records.append(record); - } - log_checksum = checksum.scrc16(records); -} - -bool cAdifIO::log_changed (const char *fname) -{ - int retval; -// open the adif file - FILE *adiFile = fopen (fname, "r"); - if (!adiFile) - return false; - -// read first 2048 chars - char buff[2048]; - retval = fread (buff, 2048, 1, adiFile); - fclose (adiFile); - - if (retval) { - string sbuff = buff; - size_t p = sbuff.find("", p); - if (p == string::npos) return false; - p++; - if (log_checksum != sbuff.substr(p, 4)) - return true; - } - return false; -} diff --git a/src/logbook/logbook.cxx b/src/logbook/logbook.cxx index 501a7617..4b3b26db 100644 --- a/src/logbook/logbook.cxx +++ b/src/logbook/logbook.cxx @@ -13,40 +13,6 @@ using namespace std; -std::string log_checksum; - -pthread_t logbook_thread; -pthread_mutex_t logbook_mutex = PTHREAD_MUTEX_INITIALIZER; -bool logbook_exit = false; - -static void *logbook_loop(void *args) -{ - SET_THREAD_ID(LOGBOOK_TID); - int cnt = 5; - for (;;) { - /* see if we are being canceled */ - if (logbook_exit) - break; - if (cnt-- == 0) { - cnt = 5; - pthread_mutex_lock (&logbook_mutex); - - if (adifFile.log_changed(logbook_filename.c_str())) { - qsodb.deleteRecs(); - adifFile.readFile (logbook_filename.c_str(), &qsodb); - REQ(loadBrowser,0); - qsodb.isdirty(0); - } - - pthread_mutex_unlock (&logbook_mutex); - } - MilliSleep(100); - - } -// exit the arq thread - return NULL; -} - void start_logbook () { create_logbook_dialogs(); @@ -71,17 +37,10 @@ void start_logbook () qsodb.isdirty(0); activateButtons(); - if (pthread_create(&logbook_thread, NULL, logbook_loop, NULL) < 0) - LOG_ERROR("%s", "pthread_create failed"); } void close_logbook() { saveLogbook(); -// tell the logbook thread to kill it self - logbook_exit = true; -// and then wait for it to die - pthread_join(logbook_thread, NULL); - logbook_exit = false; } diff --git a/src/logbook/logsupport.cxx b/src/logbook/logsupport.cxx index 33a5f243..74aec2b7 100644 --- a/src/logbook/logsupport.cxx +++ b/src/logbook/logsupport.cxx @@ -149,9 +149,9 @@ void saveLogbook() cQsoDb::reverse = false; qsodb.SortByDate(); - pthread_mutex_lock (&logbook_mutex); +// pthread_mutex_lock (&logbook_mutex); adifFile.writeLog (logbook_filename.c_str(), &qsodb); - pthread_mutex_unlock (&logbook_mutex); +// pthread_mutex_unlock (&logbook_mutex); qsodb.isdirty(0); restore_sort(); @@ -208,9 +208,9 @@ void cb_mnuSaveLogbook(Fl_Menu_*m, void* d) { cQsoDb::reverse = false; qsodb.SortByDate(); - pthread_mutex_lock (&logbook_mutex); +// pthread_mutex_lock (&logbook_mutex); adifFile.writeLog (logbook_filename.c_str(), &qsodb); - pthread_mutex_unlock (&logbook_mutex); +// pthread_mutex_unlock (&logbook_mutex); qsodb.isdirty(0); restore_sort(); @@ -606,9 +606,9 @@ void saveRecord() { cQsoDb::reverse = false; qsodb.SortByDate(); - pthread_mutex_lock (&logbook_mutex); +// pthread_mutex_lock (&logbook_mutex); adifFile.writeLog (logbook_filename.c_str(), &qsodb); - pthread_mutex_unlock (&logbook_mutex); +// pthread_mutex_unlock (&logbook_mutex); qsodb.isdirty(0); } @@ -651,9 +651,9 @@ cQsoRec rec; cQsoDb::reverse = false; qsodb.SortByDate(); - pthread_mutex_lock (&logbook_mutex); +// pthread_mutex_lock (&logbook_mutex); adifFile.writeLog (logbook_filename.c_str(), &qsodb); - pthread_mutex_unlock (&logbook_mutex); +// pthread_mutex_unlock (&logbook_mutex); qsodb.isdirty(0); restore_sort(); @@ -672,9 +672,9 @@ void deleteRecord () { cQsoDb::reverse = false; qsodb.SortByDate(); - pthread_mutex_lock (&logbook_mutex); +// pthread_mutex_lock (&logbook_mutex); adifFile.writeLog (logbook_filename.c_str(), &qsodb); - pthread_mutex_unlock (&logbook_mutex); +// pthread_mutex_unlock (&logbook_mutex); qsodb.isdirty(0); restore_sort();