diff --git a/fldigi-namespace.patch b/fldigi-namespace.patch new file mode 100644 index 0000000..84539fd --- /dev/null +++ b/fldigi-namespace.patch @@ -0,0 +1,1259 @@ +commit d29a4156344ebd06da98e6a66a944368d8310040 +Author: Richard Shaw +Date: Mon Oct 5 14:48:22 2020 -0500 + + c++17 fixes + + * streampos has been in std:: for some time. Depreceated access via + ostringstream has been removed. + * Using namespace std is discouraged and can cause namespace conflicts. c++17 + treats treats them as ambiguous references. + string + vector + empty + byte + +diff --git a/src/flarq-src/b64.cxx b/src/flarq-src/b64.cxx +index 8c0147b6..5422149d 100644 +--- a/src/flarq-src/b64.cxx ++++ b/src/flarq-src/b64.cxx +@@ -89,7 +89,7 @@ void base64::init() + dtable[(int)'='] = 0; + } + +-string base64::encode(string in) ++std::string base64::encode(std::string in) + { + int n; + byte igroup[3], ogroup[4]; +@@ -143,7 +143,7 @@ string base64::encode(string in) + return output; + } + +-string base64::decode(string in) ++std::string base64::decode(std::string in) + { + int i; + output = ""; +@@ -204,10 +204,10 @@ int main(int argc,char*argv[]) + char * cp; + byte c; + +- string inputstring; +- string infilename; +- string outputstring; +- string outfilename; ++ std::string inputstring; ++ std::string infilename; ++ std::string outputstring; ++ std::string outfilename; + + base64 b64; + +diff --git a/src/flarq-src/flarq.cxx b/src/flarq-src/flarq.cxx +index bbc746da..631416d7 100644 +--- a/src/flarq-src/flarq.cxx ++++ b/src/flarq-src/flarq.cxx +@@ -99,27 +99,27 @@ + + // directory structures for all NBEMS applications + static void checkdirectories(void); +-string HomeDir; +-string NBEMS_dir; +-string ARQ_dir; +-string ARQ_files_dir; +-string ARQ_recv_dir; +-string ARQ_send_dir; +-string ARQ_mail_dir; +-string ARQ_mail_in_dir; +-string ARQ_mail_out_dir; +-string ARQ_mail_sent_dir; +-string WRAP_dir; +-string WRAP_recv_dir; +-string WRAP_send_dir; +-string WRAP_auto_dir; +-string ICS_dir; +-string ICS_msg_dir; +-string ICS_tmp_dir; +- +-string MailFileName = ""; +-string MailSaveFileName = ""; +-string Logfile; ++std::string HomeDir; ++std::string NBEMS_dir; ++std::string ARQ_dir; ++std::string ARQ_files_dir; ++std::string ARQ_recv_dir; ++std::string ARQ_send_dir; ++std::string ARQ_mail_dir; ++std::string ARQ_mail_in_dir; ++std::string ARQ_mail_out_dir; ++std::string ARQ_mail_sent_dir; ++std::string WRAP_dir; ++std::string WRAP_recv_dir; ++std::string WRAP_send_dir; ++std::string WRAP_auto_dir; ++std::string ICS_dir; ++std::string ICS_msg_dir; ++std::string ICS_tmp_dir; ++ ++std::string MailFileName = ""; ++std::string MailSaveFileName = ""; ++std::string Logfile; + + struct dirent *entry; + DIR *dp; +@@ -128,7 +128,7 @@ bool SendingEmail = false; + + bool SHOWDEBUG = false; + +-extern void STATUSprint(string s); ++extern void STATUSprint(std::string s); + + Fl_Text_Buffer_mod *txtbuffARQ; + Fl_Text_Buffer_mod *txtbuffRX; +@@ -148,27 +148,27 @@ int arqstate = 0; + bool configured = false; + + bool ioMPSK = false; +-string arq_address = "127.0.0.1"; +-string arq_port = FLDIGI_port; ++std::string arq_address = "127.0.0.1"; ++std::string arq_port = FLDIGI_port; + +-string RX; +-string TX; ++std::string RX; ++std::string TX; + +-string teststring; ++std::string teststring; + +-string statusmsg; ++std::string statusmsg; + +-string MyCall; +-string beacontext; ++std::string MyCall; ++std::string beacontext; + + #if !defined(__APPLE__) && !defined(__WOE32__) && USE_X + Pixmap flarq_icon_pixmap; + #endif + + Socket *tcpip = 0; +-string txbuffer; +-string cmdbuffer; +-string rxbuffer; ++std::string txbuffer; ++std::string cmdbuffer; ++std::string rxbuffer; + + size_t bufsize = 0; + size_t bufptr = 0; +@@ -209,24 +209,24 @@ const char *ASCII[32] = { + "", "", "", "" // 0x1C - 0x1F + }; + +-string AsciiChars; +- +-string incomingText = ""; +-string txtarqload = ""; +-string rxfname = ""; +-string arqstart = "ARQ::STX\n"; +-string arqend = "ARQ::ETX\n"; +-string arqfile = "ARQ:FILE::"; +-string arqemail = "ARQ:EMAIL::\n"; +-string arqascii = "ARQ:ENCODING::ASCII\n"; +-string arqbase64 = "ARQ:ENCODING::BASE64\n"; +-string arqsizespec = "ARQ:SIZE::"; +-size_t startpos = string::npos; +-size_t endpos = string::npos; +-size_t fnamepos = string::npos; +-size_t indx = string::npos; +-size_t sizepos = string::npos; +-size_t lfpos = string::npos; ++std::string AsciiChars; ++ ++std::string incomingText = ""; ++std::string txtarqload = ""; ++std::string rxfname = ""; ++std::string arqstart = "ARQ::STX\n"; ++std::string arqend = "ARQ::ETX\n"; ++std::string arqfile = "ARQ:FILE::"; ++std::string arqemail = "ARQ:EMAIL::\n"; ++std::string arqascii = "ARQ:ENCODING::ASCII\n"; ++std::string arqbase64 = "ARQ:ENCODING::BASE64\n"; ++std::string arqsizespec = "ARQ:SIZE::"; ++size_t startpos = std::string::npos; ++size_t endpos = std::string::npos; ++size_t fnamepos = std::string::npos; ++size_t indx = std::string::npos; ++size_t sizepos = std::string::npos; ++size_t lfpos = std::string::npos; + size_t arqPayloadSize = 0; + bool haveemail = false; + bool rxARQfile = false; +@@ -245,7 +245,7 @@ double TransferTime; + int datedir = 1; + int todir = 1; + int subdir = 1; +-string sendfilename = ""; ++std::string sendfilename = ""; + + void cb_SortByDate() + { +@@ -321,15 +321,15 @@ void selectTrafficOut(bool ComposerOnly) + tblOutgoing->gridEnabled (true); + } + tblOutgoing->clear(); +- string fline, fname, fdate, fto, fsubj; ++ std::string fline, fname, fdate, fto, fsubj; + char szline[10000]; + size_t p; + +- string folder = ARQ_mail_out_dir; ++ std::string folder = ARQ_mail_out_dir; + dp = 0; + dp = opendir(folder.c_str()); + if (dp == 0) { +- string nfound = folder; ++ std::string nfound = folder; + nfound += " not found"; + fl_message("%s", nfound.c_str()); + return; +@@ -340,7 +340,7 @@ void selectTrafficOut(bool ComposerOnly) + if (entry->d_name[0] == '.') + continue; + fname = folder; fname.append(entry->d_name); +- if (fname.find(".eml") == string::npos) ++ if (fname.find(".eml") == std::string::npos) + continue; + int validlines = 0; + ifstream emailtxt(fname.c_str()); +@@ -348,28 +348,28 @@ void selectTrafficOut(bool ComposerOnly) + memset(szline, 0, 10000); + emailtxt.getline(szline,10000); + fline = szline; +- if ((p = fline.find("Date: ")) != string::npos) { ++ if ((p = fline.find("Date: ")) != std::string::npos) { + fdate = fline.substr(p + 6); + validlines++; + continue; + } +- if ((p = fline.find("To: ")) != string::npos) { ++ if ((p = fline.find("To: ")) != std::string::npos) { + fto = fline.substr(p + 4); + p = fto.find('@'); +- if (p != string::npos) fto.replace(p,1,"@@"); ++ if (p != std::string::npos) fto.replace(p,1,"@@"); + p = fto.find("<"); +- if (p != string::npos) fto.erase(p,1); ++ if (p != std::string::npos) fto.erase(p,1); + p = fto.find(">"); +- if (p != string::npos) fto.erase(p,1); ++ if (p != std::string::npos) fto.erase(p,1); + validlines++; + continue; + } +- if ((p = fline.find("Subject: ")) != string::npos) { ++ if ((p = fline.find("Subject: ")) != std::string::npos) { + fsubj = fline.substr(p + 9); + validlines++; + continue; + } +- if ((p = fline.find("//FLARQ COMPOSER")) != string::npos) ++ if ((p = fline.find("//FLARQ COMPOSER")) != std::string::npos) + validlines++; + } + emailtxt.close(); +@@ -390,20 +390,20 @@ void selectTrafficOut(bool ComposerOnly) + //====================================================================================== + // simple email composer + //====================================================================================== +-extern bool fileExists(string fname); ++extern bool fileExists(std::string fname); + + void cb_CancelComposeMail() + { + composer->hide(); + } + +-void readComposedFile(string filename) ++void readComposedFile(std::string filename) + { + ifstream textfile; + textfile.open(filename.c_str()); + if (textfile) { + char szline[10000]; +- string fline, tempstr; ++ std::string fline, tempstr; + size_t p; + txtMailText->clear(); + inpMailFrom->value(""); +@@ -413,27 +413,27 @@ void readComposedFile(string filename) + memset(szline,0, 10000); + textfile.getline(szline,10000); + fline = szline; +- if ((p = fline.find("//FLARQ COMPOSER")) != string::npos) ++ if ((p = fline.find("//FLARQ COMPOSER")) != std::string::npos) + continue; +- if ((p = fline.find("Date: ")) != string::npos) ++ if ((p = fline.find("Date: ")) != std::string::npos) + continue; +- if ((p = fline.find("Content-Type:")) != string::npos) ++ if ((p = fline.find("Content-Type:")) != std::string::npos) + continue; +- if ((p = fline.find("From: ")) != string::npos) { ++ if ((p = fline.find("From: ")) != std::string::npos) { + tempstr = fline.substr(p + 6); + inpMailFrom->value(tempstr.c_str()); + continue; + } +- if ((p = fline.find("To: ")) != string::npos) { ++ if ((p = fline.find("To: ")) != std::string::npos) { + tempstr = fline.substr(p + 4); + p = tempstr.find("<"); +- if (p != string::npos) tempstr.erase(p,1); ++ if (p != std::string::npos) tempstr.erase(p,1); + p = tempstr.find(">"); +- if (p != string::npos) tempstr.erase(p,1); ++ if (p != std::string::npos) tempstr.erase(p,1); + inpMailTo->value(tempstr.c_str()); + continue; + } +- if ((p = fline.find("Subject: ")) != string::npos) { ++ if ((p = fline.find("Subject: ")) != std::string::npos) { + inpMailSubj->value(fline.substr(p + 9).c_str()); + continue; + } +@@ -447,7 +447,7 @@ void readComposedFile(string filename) + + void cb_UseTemplate() + { +- string templatename = ARQ_mail_out_dir; ++ std::string templatename = ARQ_mail_out_dir; + const char *p = FSEL::select("Load Template file", "*.tpl", templatename.c_str()); + if (!p) return; + if (!*p) return; +@@ -463,17 +463,17 @@ void cb_ClearComposer() + inpMailSubj->value(""); + } + +-string nextEmailFile(string fname) ++std::string nextEmailFile(std::string fname) + { + int nbr = 0; + char szNbr[20]; +- string name; +- string ext; +- string nuname; ++ std::string name; ++ std::string ext; ++ std::string nuname; + size_t p; + + p = fname.find_last_of('.'); +- if (p != string::npos) { ++ if (p != std::string::npos) { + ext = fname.substr(p); + name = fname.substr(0,p); + } else { +@@ -495,7 +495,7 @@ string nextEmailFile(string fname) + return nuname; + } + +-void saveComposedText(string filename) ++void saveComposedText(std::string filename) + { + ofstream textfile; + textfile.open(filename.c_str()); +@@ -530,7 +530,7 @@ void SaveComposeMail() + + void SaveComposeTemplate() + { +- string templatename = ARQ_mail_out_dir; ++ std::string templatename = ARQ_mail_out_dir; + const char *p = FSEL::saveas("Save Template file", "*.tpl", templatename.c_str()); + if (!p) return; + if (!*p) return; +@@ -573,11 +573,11 @@ void ComposeMail() + + //====================================================================================== + +-string noCR(string s) ++std::string noCR(std::string s) + { +- string text = s; ++ std::string text = s; + size_t p; +- while ((p = text.find('\r')) != string::npos) ++ while ((p = text.find('\r')) != std::string::npos) + text.erase(p,1); + return text; + } +@@ -606,9 +606,9 @@ void initVals() + + } + +-void testDirectory(string dir) ++void testDirectory(std::string dir) + { +- string tstdir = ARQ_dir; ++ std::string tstdir = ARQ_dir; + tstdir += '/'; + tstdir.append(dir); + ifstream test(tstdir.c_str()); +@@ -621,7 +621,7 @@ void testDirectory(string dir) + void readConfig() + { + extern void cbMenuConfig(); +- string configfname = ARQ_dir; ++ std::string configfname = ARQ_dir; + configfname.append("flarq.config"); + ifstream configfile(configfname.c_str()); + if (configfile) { +@@ -662,7 +662,7 @@ void readConfig() + + void saveConfig() + { +- string configfname = ARQ_dir; ++ std::string configfname = ARQ_dir; + configfname.append("flarq.config"); + ofstream configfile(configfname.c_str()); + if (configfile) { +@@ -730,13 +730,13 @@ void cbMenuAbout() + fl_message2("flarq - ARQ client\nversion: %s\nw1hkj@@w1hkj.com", VERSION); + } + +-string txhold = ""; ++std::string txhold = ""; + + //============================================================================= + + void mpsk_on() + { +- string s; ++ std::string s; + s.append(1, MPSK_CMD).append(MPSK_TX).append(1, MPSK_END); + try { + tcpip->send(s); +@@ -748,7 +748,7 @@ void mpsk_on() + + void mpsk_off_after_buffer_sent() + { +- string s; ++ std::string s; + s.append(1, MPSK_CMD).append(MPSK_TX2RX).append(1, MPSK_END); + try { + tcpip->send(s); +@@ -760,7 +760,7 @@ void mpsk_off_after_buffer_sent() + + void mpsk_off() + { +- string s; ++ std::string s; + s.append(1, MPSK_CMD).append(MPSK_RX).append(1, MPSK_END); + try { + tcpip->send(s); +@@ -770,11 +770,11 @@ void mpsk_off() + } + } + +-void MPSK_client_transmit(const string& s) ++void MPSK_client_transmit(const std::string& s) + { + if (s.empty()) + return; +- string tosend; ++ std::string tosend; + tosend.reserve(s.length() * 2); + for (size_t i = 0; i < s.length(); i++) + tosend.append(1, MPSK_BYTE).append(1, s[i]); +@@ -814,7 +814,7 @@ void MPSK_Socket_rcv_loop(void *) + if (isCmdChar) { + if (cs == MPSK_CMDEND) { + isCmdChar = false; +- if (cmdbuffer.find("RX_AFTER_TX OK") != string::npos) { ++ if (cmdbuffer.find("RX_AFTER_TX OK") != std::string::npos) { + rxbuffer += 0x06; + cmdbuffer.clear(); + txbuffer.clear(); +@@ -848,7 +848,7 @@ void MPSK_Socket_rcv_loop(void *) + + //============================================================================= + +-void client_transmit(const string& s ) ++void client_transmit(const std::string& s ) + { + try { + if (!s.empty()) +@@ -966,7 +966,7 @@ void arqBEACON() + } + } + +-void printstring(string s) ++void printstring(std::string s) + { + for (size_t n = 0; n < s.length(); n++) + if (s[n] < ' ') printf("<%02d>",(int)s[n]); +@@ -1028,7 +1028,7 @@ void arqCONNECT() + } + } + +-bool fileExists(string fname) ++bool fileExists(std::string fname) + { + ifstream test(fname.c_str()); + if (test) { +@@ -1038,17 +1038,17 @@ bool fileExists(string fname) + return false; + } + +-string nextFileName(string fname) ++std::string nextFileName(std::string fname) + { + int nbr = 0; + char szNbr[20]; +- string name; +- string ext; +- string nuname; ++ std::string name; ++ std::string ext; ++ std::string nuname; + size_t p; + + p = fname.find_last_of('.'); +- if (p != string::npos) { ++ if (p != std::string::npos) { + ext = fname.substr(p); + name = fname.substr(0,p); + } else { +@@ -1070,15 +1070,15 @@ string nextFileName(string fname) + void saveEmailFile() + { + static char xfrmsg[80]; +- string tempname; ++ std::string tempname; + + time(&EndTime_t); + TransferTime = difftime(EndTime_t, StartTime_t); + snprintf(xfrmsg, sizeof(xfrmsg), "Transfer Completed in %4.0f sec's", TransferTime); + +- string savetoname = ARQ_mail_in_dir; ++ std::string savetoname = ARQ_mail_in_dir; + +- if (rxfname.find(".eml") == string::npos) ++ if (rxfname.find(".eml") == std::string::npos) + rxfname.append(".eml"); + savetoname.append(rxfname); + while (fileExists(savetoname)) +@@ -1103,7 +1103,7 @@ void saveRxFile() + TransferTime = difftime(EndTime_t, StartTime_t); + snprintf(xfrmsg, sizeof(xfrmsg), "Transfer Completed in %4.0f sec's", TransferTime); + +- string savetoname = ARQ_recv_dir; ++ std::string savetoname = ARQ_recv_dir; + savetoname.append(rxfname); + if (fileExists(savetoname)) + savetoname = nextFileName(savetoname); +@@ -1120,10 +1120,10 @@ void saveRxFile() + rxTextReady = false; + } + +-void payloadText(string s) ++void payloadText(std::string s) + { + static char szPercent[10]; +- string text = noCR(s); ++ std::string text = noCR(s); + + txtARQ->insert(text.c_str()); + txtARQ->show_insert_position(); +@@ -1132,17 +1132,17 @@ void payloadText(string s) + incomingText.append (s); + + if (!rxARQfile) +- if ((startpos = incomingText.find(arqstart)) != string::npos) { ++ if ((startpos = incomingText.find(arqstart)) != std::string::npos) { + rxARQfile = true; + startpos += arqstart.length(); + time(&StartTime_t); + } + if (rxARQfile) { + if (!rxARQhavesize) { +- if ( (sizepos = incomingText.find(arqsizespec)) != string::npos) { ++ if ( (sizepos = incomingText.find(arqsizespec)) != std::string::npos) { + sizepos += arqsizespec.length(); +- if ((lfpos = incomingText.find('\n', sizepos)) != string::npos) { +- string sizechars = incomingText.substr(sizepos, lfpos - sizepos); ++ if ((lfpos = incomingText.find('\n', sizepos)) != std::string::npos) { ++ std::string sizechars = incomingText.substr(sizepos, lfpos - sizepos); + unsigned int tempnbr; + sscanf(sizechars.c_str(), "%u", &tempnbr); + arqPayloadSize = tempnbr; +@@ -1154,7 +1154,7 @@ void payloadText(string s) + } + } + } else { +- if (startpos != string::npos) { ++ if (startpos != std::string::npos) { + float partial = incomingText.length() - startpos; + snprintf(szPercent, sizeof(szPercent), "%3.0f %%", 100.0 * partial / arqPayloadSize); + prgStatus->value( partial / arqPayloadSize ); +@@ -1166,25 +1166,25 @@ void payloadText(string s) + prgStatus->redraw(); + prgStatus->redraw_label(); + } +- if ((endpos = incomingText.find(arqend)) != string::npos) { ++ if ((endpos = incomingText.find(arqend)) != std::string::npos) { + haveemail = false; + fnamepos = incomingText.find(arqfile); + fnamepos += arqfile.length(); + indx = incomingText.find('\n', fnamepos); + rxfname = incomingText.substr(fnamepos, indx - fnamepos); + txtarqload = incomingText.substr(startpos, endpos - startpos); +- if (incomingText.find(arqbase64) != string::npos) { ++ if (incomingText.find(arqbase64) != std::string::npos) { + base64 b64; + txtarqload = b64.decode(txtarqload); + } +- if (incomingText.find(arqemail) != string::npos) ++ if (incomingText.find(arqemail) != std::string::npos) + haveemail = true; +- startpos = string::npos; +- endpos = string::npos; +- fnamepos = string::npos; +- indx = string::npos; +- sizepos = string::npos; +- lfpos = string::npos; ++ startpos = std::string::npos; ++ endpos = std::string::npos; ++ fnamepos = std::string::npos; ++ indx = std::string::npos; ++ sizepos = std::string::npos; ++ lfpos = std::string::npos; + arqPayloadSize = 0; + rxARQfile = false; + rxARQhavesize = false; +@@ -1224,7 +1224,7 @@ void abortTransfer() + digi_arq->abort(); + } + +-void rxBeaconCallsign(string s) ++void rxBeaconCallsign(std::string s) + { + txtURCALL->value(s.c_str()); + beaconrcvd = true; +@@ -1237,7 +1237,7 @@ void moveEmailFile() + + ifstream infile(MailFileName.c_str(), ios::in | ios::binary); + +- if (MailSaveFileName.find(".eml") == string::npos) ++ if (MailSaveFileName.find(".eml") == std::string::npos) + MailSaveFileName.append(".eml"); + while (fileExists(MailSaveFileName)) + MailSaveFileName = nextFileName(MailSaveFileName); +@@ -1273,7 +1273,7 @@ void sendEmailFile() + + char cin; + size_t txtsize; +- string textin = ""; ++ std::string textin = ""; + char sizemsg[40]; + size_t p; + +@@ -1287,7 +1287,7 @@ void sendEmailFile() + TX.append(arqfile); + MailSaveFileName = ARQ_mail_sent_dir; + p = sendfilename.find_last_of('/'); +- if (p != string::npos) p++; ++ if (p != std::string::npos) p++; + MailSaveFileName.append(sendfilename.substr(p)); + TX.append(sendfilename.substr(p)); + TX.append("\n"); +@@ -1296,7 +1296,7 @@ void sendEmailFile() + // only allow ASCII printable characters + while (textfile.get(cin)) textin += (cin & 0xFF); + textfile.close(); +- if ( textin.find_first_not_of(AsciiChars) != string::npos) { ++ if ( textin.find_first_not_of(AsciiChars) != std::string::npos) { + fl_alert2("File contains non-ASCII bytes and must be sent as binary."); + return; + } +@@ -1333,12 +1333,12 @@ void sendAsciiFile() + fl_alert2("Not connected"); + return; + } +- string readfromname = ARQ_send_dir; ++ std::string readfromname = ARQ_send_dir; + readfromname.append(rxfname); + const char *p = FSEL::select("ARQ text file", "*.txt\t*", readfromname.c_str()); + char cin; + size_t txtsize; +- string textin = ""; ++ std::string textin = ""; + char sizemsg[40]; + if (p && *p) { + ifstream textfile; +@@ -1353,7 +1353,7 @@ void sendAsciiFile() + + while (textfile.get(cin)) textin += (cin & 0xFF); + textfile.close(); +- if ( textin.find_first_not_of(AsciiChars) != string::npos) { ++ if ( textin.find_first_not_of(AsciiChars) != std::string::npos) { + fl_alert2("File contains non-ASCII bytes and must be sent as binary."); + return; + } +@@ -1389,8 +1389,8 @@ void sendImageFile() + const char *p = FSEL::select(_("ARQ image file"), "Images\t*.{png,jpg,bmp}", ""); + char cin; + size_t b64size; +- string textin = ""; +- string b64text; ++ std::string textin = ""; ++ std::string b64text; + base64 b64(true); + char sizemsg[40]; + if (p && *p) { +@@ -1438,8 +1438,8 @@ void sendBinaryFile() + const char *p = FSEL::select("ARQ file", "*", ""); + char cin; + size_t b64size; +- string textin = ""; +- string b64text; ++ std::string textin = ""; ++ std::string b64text; + base64 b64(true); + char sizemsg[40]; + if (p && *p) { +@@ -1689,7 +1689,7 @@ void changeMyCall(const char *nucall) + txtMyCall->value(MyCall.c_str()); + digi_arq->myCall(MyCall.c_str()); + +- string title = "flarq "; ++ std::string title = "flarq "; + title.append(VERSION); + title.append(" - "); + title.append(MyCall); +@@ -1702,7 +1702,7 @@ void changeBeaconText(const char *txt) + beacontext = txt; + } + +-void TALKprint(string s) ++void TALKprint(std::string s) + { + txtRX->insert(s.c_str()); + txtRX->show_insert_position(); +@@ -1715,7 +1715,7 @@ void clear_STATUS(void* arg) + } + + +-void STATUSprint(string s, double disptime) ++void STATUSprint(std::string s, double disptime) + { + txtStatus2->value(s.c_str()); + if (disptime > 0.0) { +@@ -1726,7 +1726,7 @@ void STATUSprint(string s, double disptime) + + void cbSendTalk() + { +- string tosend; ++ std::string tosend; + tosend = txtTX->value(); + if (tosend.empty()) return; + tosend += '\n'; +@@ -1737,12 +1737,12 @@ void cbSendTalk() + txtRX->redraw(); + } + +-void arqlog(string nom,string s) ++void arqlog(std::string nom,std::string s) + { + static char szGMT[80]; + tm *now; + time_t tm; +- string strdebug; ++ std::string strdebug; + + time(&tm); + now = localtime( &tm ); +@@ -1758,28 +1758,28 @@ void arqlog(string nom,string s) + logfile << nom << szGMT << strdebug << endl; + } + +-void DEBUGrxprint(string s) ++void DEBUGrxprint(std::string s) + { +- string text = noCR(s); ++ std::string text = noCR(s); + txtRX->insert(text.c_str()); + txtRX->show_insert_position(); + txtRX->redraw(); + arqlog("",s); + } + +-void DEBUGtxprint(string s) ++void DEBUGtxprint(std::string s) + { +- string text = noCR(s); ++ std::string text = noCR(s); + txtRX->insert(text.c_str()); + txtRX->show_insert_position(); + txtRX->redraw(); + arqlog("",s); + } + +-void TXecho(string s) ++void TXecho(std::string s) + { + blocksSent += s.length(); +- string text = noCR(s); ++ std::string text = noCR(s); + txtARQ->insert(text.c_str()); + txtARQ->show_insert_position(); + txtARQ->redraw(); +@@ -1809,13 +1809,13 @@ int main (int argc, char *argv[] ) + + NBEMS_dir.clear(); + { +- string appname = argv[0]; +- string appdir = argv[0]; ++ std::string appname = argv[0]; ++ std::string appdir = argv[0]; + + #ifdef __WIN32__ + size_t p = appdir.find("FL_APPS\\"); +- if (p == string::npos) p = appdir.find("FL_APPS/"); +- if (p == string::npos) { ++ if (p == std::string::npos) p = appdir.find("FL_APPS/"); ++ if (p == std::string::npos) { + char dirbuf[FL_PATH_MAX + 1]; + fl_filename_expand(dirbuf, sizeof(dirbuf) -1, "$USERPROFILE/"); + NBEMS_dir.assign(dirbuf); +@@ -1827,10 +1827,10 @@ int main (int argc, char *argv[] ) + fl_filename_absolute(dirbuf, sizeof(dirbuf), argv[0]); + appdir.assign(dirbuf); + size_t p = appdir.rfind("flarq"); +- if (p != string::npos) ++ if (p != std::string::npos) + appdir.erase(p); + p = appdir.find("FL_APPS/"); +- if (p != string::npos) ++ if (p != std::string::npos) + NBEMS_dir.assign(appdir.substr(0, p + 8)); + else { + fl_filename_expand(dirbuf, FL_PATH_MAX, "$HOME/"); +@@ -1838,7 +1838,7 @@ int main (int argc, char *argv[] ) + } + + DIR *isdir = 0; +- string test_dir; ++ std::string test_dir; + test_dir.assign(NBEMS_dir).append("NBEMS.files/"); + isdir = opendir(test_dir.c_str()); + if (isdir) { +@@ -1896,7 +1896,7 @@ int main (int argc, char *argv[] ) + tcpip->connect(); + } + catch (const SocketException& e) { +- string errmsg; ++ std::string errmsg; + errmsg.append("Could not connect to modem program.\nPlease start "); + if (ioMPSK) + errmsg.append("MultiPSK"); +@@ -1937,7 +1937,7 @@ int main (int argc, char *argv[] ) + + readConfig(); + +- string title = "flarq "; ++ std::string title = "flarq "; + title.append(VERSION); + title.append(" - "); + title.append(MyCall); +@@ -1968,7 +1968,7 @@ int main (int argc, char *argv[] ) + static void checkdirectories(void) + { + struct DIRS { +- string& dir; ++ std::string& dir; + const char* suffix; + void (*new_dir_func)(void); + }; +diff --git a/src/flarq-src/include/arq.h b/src/flarq-src/include/arq.h +index 255e3531..08566f60 100644 +--- a/src/flarq-src/include/arq.h ++++ b/src/flarq-src/include/arq.h +@@ -49,8 +49,6 @@ + + extern int idtimer; + +-using namespace std; +- + #define DEBUG + + #define arq_Version "arq 0.1" +@@ -132,7 +130,7 @@ public: + ~Ccrc16() {}; + void reset() { crcval = 0xFFFF;} + unsigned int val() {return crcval;} +- string sval() { ++ std::string sval() { + snprintf(ss, sizeof(ss), "%04X", crcval); + return ss; + } +@@ -149,31 +147,31 @@ public: + update(c); + return crcval; + } +- unsigned int crc16(string s) { ++ unsigned int crc16(std::string s) { + reset(); + for (size_t i = 0; i < s.length(); i++) + update(s[i]); + return crcval; + } +- string scrc16(string s) { ++ std::string scrc16(std::string s) { + crc16(s); + return sval(); + } + }; + +-// text block; block # and string of text ++// text block; block # and std::string of text + class cTxtBlk { + private: + int number; +- string txt; ++ std::string txt; + public: + cTxtBlk() {number = -1; txt = "";} +- cTxtBlk(int n, string text) { number = n; txt = text; } ++ cTxtBlk(int n, std::string text) { number = n; txt = text; } + ~cTxtBlk() {} + void nbr(int n) { number = n;} + int nbr() { return number; } +- string text() { return txt; } +- void text(string t) { txt = t;} ++ std::string text() { return txt; } ++ void text(std::string t) { txt = t;} + bool operator <(const cTxtBlk &b)const { return number < b.number; } + bool operator ==(const cTxtBlk b)const { return number == b.number; } + }; +@@ -184,15 +182,15 @@ class arq { + private: + bool arqstop; + +- string MyCall; +- string UrCall; ++ std::string MyCall; ++ std::string UrCall; + +- string Header; +- string Frame; +- string Payload; +- string rcvPayload; ++ std::string Header; ++ std::string Frame; ++ std::string Payload; ++ std::string rcvPayload; + +- string logfile; ++ std::string logfile; + + char MyStreamID; + char UrStreamID; +@@ -204,10 +202,10 @@ private: + int blknbr; + + // queues // +- string TxTextQueue; // Text out to mail engine +- string TxPlainTextQueue; // plain text transmit queu +- string RxTextQueue; // Text in from mail engine +- string RxFrameQueue; ++ std::string TxTextQueue; // Text out to mail engine ++ std::string TxPlainTextQueue; // plain text transmit queu ++ std::string RxTextQueue; // Text in from mail engine ++ std::string RxFrameQueue; + char lastRxChar; + bool TXflag; + +@@ -256,19 +254,19 @@ private: + int blkcount; + int Blocks2Send; // number of blocks at beginning of Tx + +- vector MyMissing; // missing Rx blocks +- string MissingRxBlocks; +- vector RxPending; // RxPending Rx blocks (not consecutive) ++ std::vector MyMissing; // missing Rx blocks ++ std::string MissingRxBlocks; ++ std::vector RxPending; // RxPending Rx blocks (not consecutive) + +- list TxBlocks; // fifo of transmit buffers +- list TxMissing; // fifo of sent; RxPending Status report +- list TxPending; // fifo of transmitted buffers pending print ++ std::list TxBlocks; // fifo of transmit buffers ++ std::list TxMissing; // fifo of sent; RxPending Status report ++ std::list TxPending; // fifo of transmitted buffers pending print + + // Ur status + int UrGoodHeader; // Other station's Good Header + int UrLastHeader; // Other station's Header last sent + int UrEndHeader; // Other station's last received Header +- vector UrMissing; // Other station's missing Headers ++ std::vector UrMissing; // Other station's missing Headers + + int LinkState; // status of ARQ link + int Sending; +@@ -286,7 +284,7 @@ private: + void setBufferlength(); + + void checkblocks(); +- string upcase(string s); ++ std::string upcase(std::string s); + void newblocknumber(); + void newHeader(); + void IdHeader(); +@@ -304,16 +302,16 @@ private: + void disconnectFrame(); + void abortFrame(); + void ackAbortFrame(); +- void beaconFrame(string txt); ++ void beaconFrame(std::string txt); + void textFrame(cTxtBlk block); +- void talkFrame(string txt); ++ void talkFrame(std::string txt); + +- void addToTxQue(string s); ++ void addToTxQue(std::string s); + + void sendblocks(); + void transmitdata(); + +- string frame() {return Frame;} ++ std::string frame() {return Frame;} + + bool isUrcall(); + void parseIDENT(); +@@ -330,22 +328,22 @@ private: + void parseDATA(); + void parseTALK(); + +- int parseFrame(string txt); ++ int parseFrame(std::string txt); + + // external functions called by arq class +- void (*sendfnc)(const string& s); ++ void (*sendfnc)(const std::string& s); + bool (*getc1)(char &); + void (*rcvfnc)(); +- void (*printRX)(string s); +- void (*printTX)(string s); +- void (*printRX_DEBUG)(string s); +- void (*printTX_DEBUG)(string s); +- void (*printTALK)(string s); ++ void (*printRX)(std::string s); ++ void (*printTX)(std::string s); ++ void (*printRX_DEBUG)(std::string s); ++ void (*printTX_DEBUG)(std::string s); ++ void (*printTALK)(std::string s); + void (*abortfnc)(); + void (*disconnectfnc)(); +- void (*rxUrCall)(string s); +- void (*qualityfnc)(string s); +- void (*printSTATUS)(string s, double disptime); ++ void (*rxUrCall)(std::string s); ++ void (*qualityfnc)(std::string s); ++ void (*printSTATUS)(std::string s, double disptime); + + public: + arq(); +@@ -356,26 +354,26 @@ public: + + void restart_arq(); + +- string checksum(string &s); ++ std::string checksum(std::string &s); + +- void myCall(string s) { MyCall = upcase(s);} +- string myCall() { return MyCall;} ++ void myCall(std::string s) { MyCall = upcase(s);} ++ std::string myCall() { return MyCall;} + +- void urCall(string s) { UrCall = s;} +- string urCall() { return UrCall;} ++ void urCall(std::string s) { UrCall = s;} ++ std::string urCall() { return UrCall;} + + void newsession(); + +- void setSendFunc( void (*f)(const string& s)) { sendfnc = f;} ++ void setSendFunc( void (*f)(const std::string& s)) { sendfnc = f;} + void setGetCFunc( bool (*f)(char &)) { getc1 = f;} + void setRcvFunc( void (*f)()) { rcvfnc = f;} + +- void setPrintRX( void (*f)(string s)) { printRX = f;} +- void setPrintTX( void (*f)(string s)) { printTX = f;} +- void setPrintTALK (void (*f)(string s)) {printTALK = f;} +- void setPrintRX_DEBUG (void (*f)(string s)){printRX_DEBUG = f;} +- void setPrintTX_DEBUG (void (*f)(string s)) {printTX_DEBUG = f;} +- void setPrintSTATUS (void (*f)(string s, double disptime)) { printSTATUS = f;} ++ void setPrintRX( void (*f)(std::string s)) { printRX = f;} ++ void setPrintTX( void (*f)(std::string s)) { printTX = f;} ++ void setPrintTALK (void (*f)(std::string s)) {printTALK = f;} ++ void setPrintRX_DEBUG (void (*f)(std::string s)){printRX_DEBUG = f;} ++ void setPrintTX_DEBUG (void (*f)(std::string s)) {printTX_DEBUG = f;} ++ void setPrintSTATUS (void (*f)(std::string s, double disptime)) { printSTATUS = f;} + + void setMaxHeaders( int mh ) { maxheaders = mh; } + void setExponent( int exp ) { exponent = exp; setBufferlength(); } +@@ -397,22 +395,22 @@ public: + else _idtimer = (10 * 60 - 10) * 1000 / ARQLOOPTIME; + } + +- void setrxUrCall( void (*f)(string s)) { rxUrCall = f;} +- void setQualityValue( void (*f)(string s)) { qualityfnc = f;} ++ void setrxUrCall( void (*f)(std::string s)) { rxUrCall = f;} ++ void setQualityValue( void (*f)(std::string s)) { qualityfnc = f;} + void setAbortedTransfer( void (*f)()) { abortfnc = f;}; + void setDisconnected( void (*f)()) { disconnectfnc = f;}; + + void rcvChar( char c ); + +- void connect(string callsign);//, int blocksize = 6, int retries = 4); ++ void connect(std::string callsign);//, int blocksize = 6, int retries = 4); + +- void sendblocks( string txt ); ++ void sendblocks( std::string txt ); + +- void sendBeacon (string txt); +- void sendPlainText( string txt ); ++ void sendBeacon (std::string txt); ++ void sendPlainText( std::string txt ); + +- string getText() { return RxTextQueue;} +- void sendText(string txt); ++ std::string getText() { return RxTextQueue;} ++ void sendText(std::string txt); + + bool connected() { return (LinkState == ARQ_CONNECTED); } + void disconnect(); +diff --git a/src/flarq-src/include/b64.h b/src/flarq-src/include/b64.h +index c17ad1d2..e60c6649 100644 +--- a/src/flarq-src/include/b64.h ++++ b/src/flarq-src/include/b64.h +@@ -10,14 +10,12 @@ + + #include + +-using namespace std; +- + typedef unsigned char byte; + + class base64 { + #define LINELEN 72 + private: +- string output; ++ std::string output; + size_t iolen; + size_t iocp; + bool ateof; +@@ -29,6 +27,6 @@ private: + public: + base64(bool t = false) {crlf = t; init(); }; + ~base64(){}; +- string encode(string in); +- string decode(string in); ++ std::string encode(std::string in); ++ std::string decode(std::string in); + }; +diff --git a/src/flarq-src/xml_server.cxx b/src/flarq-src/xml_server.cxx +index eef34228..ed0735a6 100644 +--- a/src/flarq-src/xml_server.cxx ++++ b/src/flarq-src/xml_server.cxx +@@ -139,7 +139,7 @@ public: + flarq_send_text(XmlRpcServer* s) : XmlRpcServerMethod("flarq.send_text", s) {} + + void execute(XmlRpcValue& params, XmlRpcValue &result) { +- std::string txt_to_send = string(params[0]); ++ std::string txt_to_send = std::string(params[0]); + send_xml_text("FLMSG_XFR", txt_to_send); + } + std::string help() { return std::string("send_text"); } +@@ -147,7 +147,7 @@ public: + } flarq_send_text(&flarq_server); + + struct MLIST { +- string name; string signature; string help; ++ std::string name; std::string signature; std::string help; + } mlist[] = { + { "flarq.rcvd_text", "s:n", "return MODE of current VFO" }, + { "flarq.get_state", "s:n", "return PTT state" }, +@@ -160,7 +160,7 @@ public: + + void execute(XmlRpcValue& params, XmlRpcValue& result) { + +- vector methods; ++ std::vector methods; + for (size_t n = 0; n < sizeof(mlist) / sizeof(*mlist); ++n) { + XmlRpcValue::ValueStruct item; + item["name"] = mlist[n].name; +diff --git a/src/logbook/qrzlib.cxx b/src/logbook/qrzlib.cxx +index 1a43d8e8..55ac2e27 100644 +--- a/src/logbook/qrzlib.cxx ++++ b/src/logbook/qrzlib.cxx +@@ -32,7 +32,7 @@ + #include + + #include +-using namespace std; ++//using namespace std; + + #include "qrzlib.h" + #include "configuration.h" +@@ -153,7 +153,7 @@ int checkPath( const char *filename ) + strcpy (QRZdir, pathname); + return 1; + } +- string err = fname; ++ std::string err = fname; + err.append(" not found, performing search"); + LOG_WARN("%s", err.c_str()); + notfound = true; +@@ -178,7 +178,7 @@ int checkPath( const char *filename ) + else + strcpy (QRZdir, QRZpath); + if (notfound) { +- string err = "Using "; ++ std::string err = "Using "; + err.append(fname); + LOG_WARN("%s", err.c_str()); + } +@@ -748,12 +748,12 @@ int QRZ::FindRecord( char *field ) + return( ReadRec() ); + } + +-static char empty[] = { '\0' }; + + + int QRZ::ReadRec() + { + char *comma; ++ static char empty[] = { '\0' }; + + if( found == 1 ) { + Qcall = recbuffer; +diff --git a/src/widgets/picture.cxx b/src/widgets/picture.cxx +index b14ecdf6..431c7c86 100644 +--- a/src/widgets/picture.cxx ++++ b/src/widgets/picture.cxx +@@ -539,7 +539,7 @@ static FILE* open_file(const char* name, const char* suffix) + fclose(fp); + const int n = 5; // rename existing image files to keep up to 5 old versions + ostringstream oldfn, newfn; +- ostringstream::streampos p; ++ std::streampos p; + + oldfn << name << '.'; + newfn << name << '.'; diff --git a/fldigi.spec b/fldigi.spec index 5351984..e88e456 100644 --- a/fldigi.spec +++ b/fldigi.spec @@ -8,7 +8,9 @@ URL: http://www.w1hkj.com/Fldigi.html Source0: http://www.w1hkj.com/files/%{name}/%{name}-%{version}.tar.gz Source100: fldigi.appdata.xml -Patch0: fldigi-nullptr.patch +Patch0: fldigi-namespace.patch +Patch1: fldigi-nullptr.patch +Patch2: nullptr-test.patch BuildRequires: asciidoc BuildRequires: gcc gcc-c++