Few fixes to different internet fields

This commit is contained in:
Alexander S. Aganichev 2001-11-17 21:28:10 +00:00
parent 500807f9a0
commit 71c0ee1b4e
11 changed files with 42 additions and 25 deletions

View File

@ -12,6 +12,13 @@ ______________________________________________________________________
Notes for GoldED+ 1.1.5, /snapshot/
______________________________________________________________________
- Fixed old bug with ADDRESSLOOKUPFIRST when it set to the ORIGIN and
no valid address defined in the origin.
! InternetRFCBody now could be defined to the digit, which specify the
number of RFC headers will be tried for detection. Only usefull
when you often receive messages multiple times gated by ifmail.
! Synchronized with recent Fidoconfig features. Removed -lame feature,
slashes no longer parsed as escape sequencies in neither case.

View File

@ -710,7 +710,7 @@ CfgGed::CfgGed() {
ignorecharset = false;
intensecolors = false;
internetmsgid = false;
internetrfcbody = false;
internetrfcbody = 0;
internetviagate = false;
keybmode = KEYB_POLL;
logformat = 0;

View File

@ -205,7 +205,9 @@ void CfgInternetmsgid() {
void CfgInternetrfcbody() {
bool flag = GetYesno(val);
int flag = atoi(val);
if(flag == 0)
flag = GetYesno(val) ? 1 : 0;
if(cfgingroup)
CFG->grp.AddItm(GRP_INTERNETRFCBODY, flag);
else

View File

@ -243,7 +243,7 @@ public:
Node internetgate;
int internetgateexp;
bool internetmsgid;
bool internetrfcbody;
int internetrfcbody;
bool internetviagate;
Invalidate invalidate;
Path jampath;

View File

@ -226,7 +226,7 @@ const char* get_informative_string(void) {
// ------------------------------------------------------------------
void DoKludges(int mode, GMsg* msg, bool attronly) {
void DoKludges(int mode, GMsg* msg, int kludges) {
char* buf = (char*)throw_malloc(4096);
char* buf2 = (char*)throw_malloc(1024);
@ -240,9 +240,9 @@ void DoKludges(int mode, GMsg* msg, bool attronly) {
// Strip all the kludges we insert ourselves
while(line) {
int stripkludges = (~kludges)&(GKLUD_RFC|GKLUD_FWD|GKLUD_INTL|GKLUD_FMPT|GKLUD_TOPT|GKLUD_FLAGS|GKLUD_AREA|GKLUD_MSGID|GKLUD_REPLY|GKLUD_PID|GKLUD_CHARSET|GKLUD_KNOWN|GKLUD_PATH|GKLUD_SEENBY);
int stripkludges = attronly ? GKLUD_FLAGS : (GKLUD_RFC|GKLUD_FWD|GKLUD_INTL|GKLUD_FMPT|GKLUD_TOPT|GKLUD_FLAGS|GKLUD_AREA|GKLUD_MSGID|GKLUD_REPLY|GKLUD_PID|GKLUD_CHARSET|GKLUD_KNOWN|(mode==MODE_FORWARD?(GKLUD_PATH|GKLUD_SEENBY):0));
while(line) {
if(line->kludge & stripkludges) {
bool waswrapped;
@ -258,7 +258,7 @@ void DoKludges(int mode, GMsg* msg, bool attronly) {
line = msg->lin;
if(attronly) {
if(kludges == GKLUD_FLAGS) {
if(AA->isnet())
MakeFlags(msg, &line, buf);
}
@ -443,6 +443,15 @@ void DoKludges(int mode, GMsg* msg, bool attronly) {
mime_header_encode(buf2, msg->re, msg);
strxcpy(msg->re, buf2, sizeof(ISub));
}
if(AA->Internetrfcbody() and not AA->isnewsgroup() and line->next) {
const char *nline_txt = line->next->txt.c_str();
if(not strblank(nline_txt) and not strnieql(nline_txt, "XPost:", 6) and
not strnieql(nline_txt, "Copy:", 5) and not strnieql(nline_txt, "BCopy:", 6)) {
line = AddKludge(line, "");
line->kludge = GKLUD_RFC;
}
}
}
else {
if(*msg->ifrom) {
@ -577,11 +586,11 @@ void DoKludges(int mode, GMsg* msg, bool attronly) {
line = AddKludge(line, buf);
line->kludge = GKLUD_RFC;
}
}
if(AA->Internetrfcbody() and line->next and not strblank(line->next->txt.c_str())) {
line = AddKludge(line, "");
line->kludge = GKLUD_RFC;
if(AA->Internetrfcbody() and line->next and not strblank(line->next->txt.c_str())) {
line = AddKludge(line, "");
line->kludge = GKLUD_RFC;
}
}
}
else if(((mode != MODE_CHANGE) or AA->Internetrfcbody()) and AA->isnet()) {

View File

@ -1610,7 +1610,7 @@ void ScanKludges(GMsg* msg, int getvalue) {
ptr++;
msg->orig.reset(ptr);
}
else if(msg->msgid.valid())
if(msg->msgid.valid())
msg->orig = msg->msgid;
}
@ -2481,7 +2481,8 @@ void MakeLineIndex(GMsg* msg, int margin, bool getvalue, bool header_recode) {
}
// Scan msg body top for RFC headerlines
if(AA->Internetrfcbody()) {
int irfcbody = AA->Internetrfcbody();
if(irfcbody != 0) {
if(msg->lin) {
Line* linep = msg->lin;
int headerlines = 0;
@ -2512,7 +2513,7 @@ void MakeLineIndex(GMsg* msg, int margin, bool getvalue, bool header_recode) {
}
}
}
else
else if(--irfcbody == 0)
break;
}
}
@ -2521,7 +2522,8 @@ void MakeLineIndex(GMsg* msg, int margin, bool getvalue, bool header_recode) {
linep->type |= GLINE_KLUD;
linep->color = C_READK;
}
break;
if(--irfcbody == 0)
break;
}
if(linep->type & GLINE_WRAP) {
while(linep and (linep->type & GLINE_WRAP)) {

View File

@ -934,7 +934,7 @@ void MakeMsg(int mode, GMsg* omsg, bool ignore_replyto) {
}
}
}
else if(*omsg->iaddr and (strlen(omsg->iaddr) < sizeof(Name))) {
else if(not AA->isinternet() and *omsg->iaddr and (strlen(omsg->iaddr) < sizeof(Name))) {
if(not isuucp(msg->to))
strcpy(msg->realto, msg->to);
strcpy(msg->to, omsg->iaddr);

View File

@ -95,7 +95,7 @@ void GetAreaconf();
char* MakeOrigin(GMsg* msg, const char* _origin);
char* MakeTearline(GMsg* msg, char* buf);
void DoKludges(int mode, GMsg* msg, bool attronly = false);
void DoKludges(int mode, GMsg* msg, int kludges = 0);
void DoTearorig(int mode, GMsg* msg);
void GetRandom(int mode, GMsg* msg);
char* GetRandomLine(char* __buf, size_t __bufsize, const char* __file);

View File

@ -56,7 +56,7 @@ void ChangeAttributes() {
AskAttributes(reader_msg);
if(memcmp(msg, reader_msg, sizeof(GMsg))) {
msg->charsetlevel = LoadCharset(CFG->xlatlocalset, msg->charset);
DoKludges(MODE_CHANGE, reader_msg, true);
DoKludges(MODE_CHANGE, reader_msg, GKLUD_FLAGS);
reader_msg->LinesToText();
AA->SaveMsg(GMSG_UPDATE, reader_msg);
}

View File

@ -946,16 +946,13 @@ void ConfirmMsg() {
}
}
if(not CFG->switches.get(rcvdisablescfm)) {
GMsg* msg = (GMsg*)throw_malloc(sizeof(GMsg));
memcpy(msg, reader_msg, sizeof(GMsg));
reader_msg->attr.rrq0();
reader_msg->attr.cfm0();
reader_msg->attr.upd1();
msg->charsetlevel = LoadCharset(CFG->xlatlocalset, msg->charset);
DoKludges(MODE_CHANGE, reader_msg, true);
reader_msg->charsetlevel = LoadCharset(CFG->xlatlocalset, reader_msg->charset);
DoKludges(MODE_CHANGE, reader_msg, GKLUD_FLAGS);
reader_msg->LinesToText();
AA->SaveMsg(GMSG_UPDATE, reader_msg);
throw_free(msg);
}
}

View File

@ -281,7 +281,7 @@ struct AreaData {
IAdr internetaddress;
Node internetgate;
bool internetmsgid;
bool internetrfcbody;
int internetrfcbody;
Path loadlanguage;
int msglistdate;
bool msglistfast;
@ -537,7 +537,7 @@ public:
const char* Internetaddress() const { return adat->internetaddress; }
const Node& Internetgate() const { return adat->internetgate; }
bool Internetmsgid() const { return adat->internetmsgid; }
bool Internetrfcbody() const { return adat->internetrfcbody; }
int Internetrfcbody() const { return adat->internetrfcbody; }
const char* Loadlanguage() const { return adat->loadlanguage; }
int Msglistdate() const { return adat->msglistdate; }
bool Msglistfast() const { return adat->msglistfast; }