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

@@ -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; }