diff --git a/golded3/gecarb.cpp b/golded3/gecarb.cpp index 05a16d5..15d53ce 100644 --- a/golded3/gecarb.cpp +++ b/golded3/gecarb.cpp @@ -216,6 +216,7 @@ int DoCarboncopy(GMsg* msg, GMsg** carbon) { if((*carbon)[n].attr.tou()) { sprintf(buf, "\001CC: %s %s", (*carbon)[n].To(), (*carbon)[n].dest.make_string(temp).c_str()); ccline = AddKludge(ccline, buf); + (*carbon)[n].attr.tou0(); } } break; @@ -229,6 +230,7 @@ int DoCarboncopy(GMsg* msg, GMsg** carbon) { if((*carbon)[n].attr.tou()) { sprintf(buf, buf2, (*carbon)[n].To(), (*carbon)[n].dest.make_string(temp).c_str()); ccline = AddLine(ccline, buf); + (*carbon)[n].attr.tou0(); } } break; @@ -242,7 +244,7 @@ int DoCarboncopy(GMsg* msg, GMsg** carbon) { hline += msg->To(); ++line_items; } - for(n=0; n < cc; n++) + for(n=0; n < cc; n++) { if((*carbon)[n].attr.tou()) { const char *user = (*carbon)[n].To(); if((hline.length() + strlen(user) + 2 > margintext) and line_items) { @@ -255,7 +257,9 @@ int DoCarboncopy(GMsg* msg, GMsg** carbon) { hline += ", "; hline += user; ++line_items; + (*carbon)[n].attr.tou0(); } + } if(line_items) { sprintf(buf, LNG->CCTo, hline.c_str()); ccline = AddLine(ccline, buf); diff --git a/golded3/gedoit.cpp b/golded3/gedoit.cpp index 933a5c6..bc4899d 100644 --- a/golded3/gedoit.cpp +++ b/golded3/gedoit.cpp @@ -70,17 +70,14 @@ void SaveLines(int mode, const char* savefile, GMsg* msg, int margin, bool clip) if(mode == MODE_WRITE) { if(AA->LoadMsg(msg, msg->msgno, margin) == false) { msg->txt = throw_strdup(""); - msg->attr.tou0(); msg->TextToLines(margin); } } else if((mode == MODE_SAVE) or (mode == MODE_SAVENOCTRL)) { - msg->attr.tou0(); msg->TextToLines(margin); } TemplateToText(((mode == MODE_WRITE) and prnheader) ? ((prnheader & WRITE_ONLY_HEADER) ? MODE_HEADER : MODE_WRITEHEADER) : MODE_WRITE, msg, msg, AA->WTpl(), CurrArea); - msg->attr.tou1(); - msg->TextToLines(margin); + msg->TextToLines(margin, false); #endif int n = 0; Line** lin = msg->line; @@ -403,9 +400,7 @@ void QuoteBuf(GMsg* msg) { char openmode[4]; TemplateToText(MODE_QUOTEBUF, msg, msg, AA->Tpl(), CurrArea); - msg->attr.tou1(); - msg->TextToLines(-CFG->quotemargin); - msg->attr.tou0(); + msg->TextToLines(-CFG->quotemargin, false); msg->charsetlevel = LoadCharset(CFG->xlatlocalset, CFG->xlatlocalset); msg->LinesToText(); diff --git a/golded3/geedit2.cpp b/golded3/geedit2.cpp index 5a90e7f..6e42d51 100644 --- a/golded3/geedit2.cpp +++ b/golded3/geedit2.cpp @@ -827,7 +827,7 @@ void IEclass::LoadFile() { AA->SetXlatimport(CFG->xlatlocalset); // Index message text - msgptr->TextToLines(margintext-1); + msgptr->TextToLines(margintext-1, false); _line = currline = msgptr->lin; // Restore charset diff --git a/golded3/geline.cpp b/golded3/geline.cpp index 582f12b..bf57224 100644 --- a/golded3/geline.cpp +++ b/golded3/geline.cpp @@ -559,6 +559,7 @@ static void KludgeREPLYADDR(GMsg* msg, const char* ptr) { INam name; char *buf=throw_strdup(ptr); + *name = NUL; ParseInternetAddr(buf, *msg->realby ? name : msg->realby, msg->iaddr); if(*name) strxcpy(msg->realby, name, sizeof(INam)); @@ -1782,9 +1783,9 @@ int cmp_quotes(char* q1, char* q2) { // ------------------------------------------------------------------ -void GMsg::TextToLines(int __line_width, bool header_recode) { +void GMsg::TextToLines(int __line_width, bool getvalue, bool header_recode) { - MakeLineIndex(this, __line_width, header_recode); + MakeLineIndex(this, __line_width, getvalue, header_recode); } @@ -1832,7 +1833,7 @@ inline bool put_on_new_line(const char *ptr, const char *prev_ptr) { // ------------------------------------------------------------------ -void MakeLineIndex(GMsg* msg, int margin, bool header_recode) { +void MakeLineIndex(GMsg* msg, int margin, bool getvalue, bool header_recode) { uint idx=0; uint len; @@ -1856,7 +1857,6 @@ void MakeLineIndex(GMsg* msg, int margin, bool header_recode) { uint qlen=0, qlen2=0; int wraps=0, para=0, chslev; bool reflow = false, quoteflag = false; - bool getvalue = not msg->attr.tou(); bool quotewraphard = AA->Quotewraphard(); bool qpencoded = getvalue and IsQuotedPrintable(AA->Xlatimport()); bool gotmime = false; @@ -2946,7 +2946,7 @@ Line* AddHexdump(Line*& line, void* data, size_t datalen) { // ------------------------------------------------------------------ -char* ParseInternetAddr(char* __string, char* __name, char* __addr) { +char* ParseInternetAddr(char* __string, char* __name, char* __addr, bool detect_charset) { *__name = *__addr = NUL; char* commaptr = NULL; @@ -3021,7 +3021,7 @@ char* ParseInternetAddr(char* __string, char* __name, char* __addr) { if(not strchr(__addr, '@')) *__addr = NUL; - strxmimecpy(__name, __name, 0, strlen(__name)+1, true); + strxmimecpy(__name, __name, 0, strlen(__name)+1, detect_charset); return __name; } diff --git a/golded3/gelmsg.cpp b/golded3/gelmsg.cpp index dba14fa..0f737aa 100644 --- a/golded3/gelmsg.cpp +++ b/golded3/gelmsg.cpp @@ -90,7 +90,6 @@ int Area::LoadMsg(GMsg* msg, ulong msgno, int margin, int mode) { if(not (msg->attr.uns() and not msg->attr.rcv())) return true; } - msg->attr.tou0(); msg->TextToLines(margin); return true; } diff --git a/golded3/gepost.cpp b/golded3/gepost.cpp index 7dcb9cf..919e364 100644 --- a/golded3/gepost.cpp +++ b/golded3/gepost.cpp @@ -510,10 +510,8 @@ static void MakeMsg2(int& mode, int& status, int& forwstat, int& topline, GMsg* HeaderView->Use(AA, msg); HeaderView->Paint(); } - msg->attr.tou1(); // Ignore any kludge address found msg->attr.pos1(); - msg->TextToLines(CFG->dispmargin-1); - msg->attr.tou0(); + msg->TextToLines(CFG->dispmargin-1, false); // Ignore any kludge address found msg->attr.pos0(); } uint lineno = position = reader_topline+1; @@ -623,9 +621,7 @@ static void MakeMsg2(int& mode, int& status, int& forwstat, int& topline, GMsg* LoadText(msg, AddPath(CFG->goldpath, EDIT->File())); if(mode == MODE_FORWARD) msg->attr.pos1(); - msg->attr.tou1(); // ignore any kludge address found - msg->TextToLines(CFG->dispmargin-1); - msg->attr.tou0(); + msg->TextToLines(CFG->dispmargin-1, false); // Ignore any kludge address found msg->attr.pos0(); if(not savedirect) { @@ -733,7 +729,6 @@ void MakeMsg(int mode, GMsg* omsg, bool ignore_replyto) { AA->RandomizeData(mode); } - msg->attr.tou0(); msg->TextToLines(CFG->dispmargin-1); msg->orig = AA->Aka().addr; msg->charsetlevel = LoadCharset(CFG->xlatlocalset, AA->Xlatexport()); @@ -766,8 +761,7 @@ void MakeMsg(int mode, GMsg* omsg, bool ignore_replyto) { msg->messageid = NULL; msg->inreplyto = NULL; msg->references = NULL; - msg->attr.tou0(); - msg->TextToLines(CFG->dispmargin-1, false); + msg->TextToLines(CFG->dispmargin-1, true, false); msg->msgid.reset(); *msg->iorig = NUL; *msg->idest = NUL; @@ -793,8 +787,7 @@ void MakeMsg(int mode, GMsg* omsg, bool ignore_replyto) { msg->messageid = NULL; msg->inreplyto = NULL; msg->references = NULL; - msg->attr.tou0(); - msg->TextToLines(CFG->dispmargin-1, false); + msg->TextToLines(CFG->dispmargin-1, true, false); break; case MODE_NEW: wfill(MINROW, 0, MAXROW-2, MAXCOL-1, ' ', C_READW); @@ -837,8 +830,7 @@ void MakeMsg(int mode, GMsg* omsg, bool ignore_replyto) { case MODE_REPLYCOMMENT: if(CurrArea != OrigArea) AA->SetXlatimport(AL.AreaIdToPtr(OrigArea)->Xlatimport()); - omsg->attr.tou0(); - omsg->TextToLines(-CFG->quotemargin, false); + omsg->TextToLines(-CFG->quotemargin, true, false); if(ignore_replyto) *omsg->ireplyto = NUL; if(omsg->attr.rot()) diff --git a/golded3/geprot.h b/golded3/geprot.h index 65a46ce..7becf2d 100644 --- a/golded3/geprot.h +++ b/golded3/geprot.h @@ -175,7 +175,7 @@ Line* DeleteLine(Line* line); Line* FirstLine(Line* line); Line* InsertLine(Line* newline, Line* oldline, int pos); Line* LastLine(Line* line); -void MakeLineIndex(GMsg* msg, int rmargin, bool header_recode = true); +void MakeLineIndex(GMsg* msg, int rmargin, bool getvalue, bool header_recode); void MsgLineReIndex(GMsg* msg, int viewhidden=-1, int viewkludge=-1, int viewquote=-1); char* XlatStr(char* dest, const char* src, int level, Chs* chrtbl, int qpencoded=false, bool i51=false); char* mime_header_decode(char* decoded, const char* encoded, char* charset = NULL); @@ -221,7 +221,7 @@ void Rot13(GMsg* msg); void ResetMsg(GMsg* msg); int DoCarboncopy(GMsg* msg, GMsg** carbon); void DoCrosspost(GMsg* msg, std::vector &postareas); -char* ParseInternetAddr(char* __string, char* __name, char* __addr); +char* ParseInternetAddr(char* __string, char* __name, char* __addr, bool detect_charset = true); // ------------------------------------------------------------------ diff --git a/golded3/geqwks.cpp b/golded3/geqwks.cpp index 34bbf6f..afc6bb2 100644 --- a/golded3/geqwks.cpp +++ b/golded3/geqwks.cpp @@ -233,7 +233,6 @@ int ImportQWK() { AA->istossed = true; update_statuslinef("%s: %u", AA->echoid(), imported); - msg->attr.tou0(); msg->TextToLines(CFG->dispmargin-1); if(msg->messageid or msg->references or msg->inreplyto or *msg->ifrom) { char kbuf[256]; diff --git a/golded3/geread2.cpp b/golded3/geread2.cpp index 03aacaa..2ee4e2c 100644 --- a/golded3/geread2.cpp +++ b/golded3/geread2.cpp @@ -585,9 +585,8 @@ int ExternUtil(GMsg *msg, ExtUtil *extutil) { WipeFile(tmpfile, 0); EDIT->HardLines(hardlines); - msg->attr.tou1(); // Ignore any kludge address found - msg->TextToLines(CFG->dispmargin-(int)CFG->switches.get(disppagebar)); - msg->attr.tou0(); + // Ignore any kludge address found + msg->TextToLines(CFG->dispmargin-(int)CFG->switches.get(disppagebar), false); } return YES; @@ -690,7 +689,7 @@ void ReadPeekURLs(GMsg* msg) { --end; if(begin < end) { buf[0] = ' '; - strxcpy(buf+1, ptr, MinV((end-ptr)+1, MAXCOL-2-2-2)); + strxcpy(buf+1, ptr, MinV((long)((end-ptr)+1), (long)(MAXCOL-2-2-2))); strcat(buf, " "); for(i = urls.begin(); i != urls.end(); i++) if(strieql(*i, buf)) diff --git a/golded3/gesoup.cpp b/golded3/gesoup.cpp index 037eeb5..3a70b61 100644 --- a/golded3/gesoup.cpp +++ b/golded3/gesoup.cpp @@ -235,7 +235,7 @@ void ProcessSoupMsg(char* lbuf, GMsg* msg, int& msgs, char* areaname, int tossto if(MatchRFC(mptr, "From: ")) { INam fromname; IAdr fromaddr; - ParseInternetAddr(mptr, fromname, fromaddr); + ParseInternetAddr(mptr, fromname, fromaddr, false); strxcpy(msg->by, *fromname ? fromname : fromaddr, sizeof(msg->by)); if(AA->Internetgate().addr.net) { char abuf[40]; @@ -254,7 +254,7 @@ void ProcessSoupMsg(char* lbuf, GMsg* msg, int& msgs, char* areaname, int tossto strxcpy(msg->ito, mptr, sizeof(msg->ito)); INam toname; IAdr toaddr; - ParseInternetAddr(mptr, toname, toaddr); + ParseInternetAddr(mptr, toname, toaddr, false); strxcpy(msg->to, *toname ? toname : toaddr, sizeof(msg->to)); } else if(MatchRFC(mptr, "X-Comment-To: ")) { @@ -275,7 +275,7 @@ void ProcessSoupMsg(char* lbuf, GMsg* msg, int& msgs, char* areaname, int tossto else if(MatchRFC(mptr, "X-To: ")) { INam toname; IAdr toaddr; - ParseInternetAddr(mptr, toname, toaddr); + ParseInternetAddr(mptr, toname, toaddr, false); strxcpy(msg->to, *toname ? toname : toaddr, sizeof(msg->to)); } else if(MatchRFC(mptr, "Subject: ")) { @@ -310,13 +310,13 @@ void ProcessSoupMsg(char* lbuf, GMsg* msg, int& msgs, char* areaname, int tossto else if(MatchRFC(mptr, "Sender: ")) { INam sendername; IAdr senderaddr; - ParseInternetAddr(mptr, sendername, senderaddr); + ParseInternetAddr(mptr, sendername, senderaddr, false); CurrArea = CheckMailinglists(senderaddr, CurrArea); } else if(MatchRFC(mptr, "X-Mailing-List: ")) { INam listname; IAdr listaddr; - ParseInternetAddr(mptr, listname, listaddr); + ParseInternetAddr(mptr, listname, listaddr, false); CurrArea = CheckMailinglists(listaddr, CurrArea); } diff --git a/golded3/gmarea.h b/golded3/gmarea.h index 7995b0f..b261934 100644 --- a/golded3/gmarea.h +++ b/golded3/gmarea.h @@ -103,7 +103,7 @@ public: bool to_you() { return (you_and_I & TO_YOU); } bool by_you() { return (you_and_I & BY_YOU); } - void TextToLines(int __line_width, bool header_recode = true); + void TextToLines(int __line_width, bool getvalue = true, bool header_recode = true); void LinesToText(); };