Applied SeqMsgID patch
This commit is contained in:
parent
034d8d2511
commit
8be702a36f
2
Makefile
2
Makefile
@ -4,7 +4,7 @@ include GNUmakef.def
|
||||
|
||||
.PHONY: all clean distclean dirs sourcelists deps
|
||||
|
||||
LIBS=gall gcfg gmb3 glibc uulib smblib
|
||||
LIBS=gall gcfg gmb3 glibc uulib smblib msgidlib
|
||||
EXECUTABLES=golded3 goldnode rddt
|
||||
|
||||
all: sourcelists
|
||||
|
@ -12,6 +12,34 @@ ______________________________________________________________________
|
||||
Notes for GoldED+ 1.1.5, /snapshot/
|
||||
______________________________________________________________________
|
||||
|
||||
+ Added Husky compatible MSGID generation algorithm. The following
|
||||
keywords are added for configuration:
|
||||
|
||||
SeqMsgId Yes/No/Maybe
|
||||
Yes - Use SeqMsgId algorithm
|
||||
No - Do not use SeqMsgId algorithm
|
||||
Maybe - Use SeqMsgId algorithm if SeqDir is set explicitly (default)
|
||||
|
||||
SeqDir pathname
|
||||
If SeqDir not explicitly defined and SeqMsgId is set, then SEQDIR
|
||||
environment variable will be used. Note that pathname mapping (by
|
||||
using MapPath rules) only occurs when SeqDir defined explicitly.
|
||||
|
||||
SeqOutRun num[y][d][h][w][m]
|
||||
SeqOutRun defines maximum "run-away" time for the MSGID. If not
|
||||
defined explicitly, then SEQOUT environment variable is used. If
|
||||
SEQOUT is also not set, then default value equals to 3 years is
|
||||
used.
|
||||
The num defines number in seconds if neither one of modificators
|
||||
is in use. The following modificators can be used:
|
||||
y - year
|
||||
d - day
|
||||
h - hour
|
||||
w - week
|
||||
m - month (31 days)
|
||||
|
||||
Thanks to Alexander Reznikov for the patch.
|
||||
|
||||
- Fixed active messages counter for JAM messagebases if message
|
||||
restored by removing DEL attribute.
|
||||
|
||||
@ -484,8 +512,8 @@ ______________________________________________________________________
|
||||
- GoldED+ will now treat all unknown charsets to be equal to
|
||||
Xlatimport.
|
||||
|
||||
- Fixed AreaReplyDirect operation when AreaReply is defined (Thanks to
|
||||
Pavel Gulchouck for the patch).
|
||||
- Fixed AreaReplyDirect operation when AreaReplyTo is defined (Thanks
|
||||
to Pavel Gulchouck for the patch).
|
||||
|
||||
- Fixed problem with incorrect updating of timesread field when
|
||||
MSGLISTFIRST is YES.
|
||||
|
@ -3,8 +3,8 @@
|
||||
TOP=..
|
||||
SHORTTARGET=ged
|
||||
TARGET=golded3
|
||||
GLIBS=gmb3 gall gcfg uulib smblib
|
||||
INCS=-I. -I$(TOP)/goldlib/gall -I$(TOP)/goldlib/gcfg -I$(TOP)/goldlib/gmb3 -I$(TOP)/goldlib/uulib -I$(TOP)/goldlib/smblib
|
||||
GLIBS=gmb3 gall gcfg uulib smblib msgidlib
|
||||
INCS=-I. -I$(TOP)/goldlib/gall -I$(TOP)/goldlib/gcfg -I$(TOP)/goldlib/gmb3 -I$(TOP)/goldlib/uulib -I$(TOP)/goldlib/smblib -I$(TOP)/goldlib/msgidlib
|
||||
|
||||
ifeq ($(findstring EMX, $(PATH)), EMX)
|
||||
STDLIBS=-los2me -lstdcpp
|
||||
|
@ -106,6 +106,9 @@ bool ReadGoldedCfg(int& force) {
|
||||
MakePathname(CFG->outputfile, CFG->goldpath, CFG->outputfile);
|
||||
MakePathname(CFG->inputfile, CFG->goldpath, CFG->inputfile);
|
||||
|
||||
if(*CFG->seqdir)
|
||||
MakePathname(CFG->seqdir, CFG->goldpath, CFG->seqdir);
|
||||
|
||||
if(*CFG->souptosslog)
|
||||
MakePathname(CFG->souptosslog, CFG->goldpath, CFG->souptosslog);
|
||||
|
||||
@ -327,7 +330,7 @@ void InstallDetect(char* path) {
|
||||
if(fexist(cmdlinecfgbak))
|
||||
remove(cmdlinecfgbak);
|
||||
rename(CFG->goldcfg, cmdlinecfgbak);
|
||||
std::cout << "WARNING: Existing config backed up to " << cmdlinecfgbak << "!!!" << std::endl;
|
||||
std::cout << "Warning: Existing config backed up to " << cmdlinecfgbak << "!!!" << std::endl;
|
||||
}
|
||||
|
||||
std::cout << "Please wait while GoldED+ is detecting your software." << std::endl;
|
||||
@ -585,6 +588,7 @@ CfgGed::CfgGed() {
|
||||
*pathreportfile = 0;
|
||||
*pcboardpath = 0;
|
||||
*quotebuffile = 0;
|
||||
*seqdir = 0;
|
||||
*soundpath = 0;
|
||||
*soupexportpath = 0;
|
||||
*soupimportpath = 0;
|
||||
@ -754,6 +758,8 @@ CfgGed::CfgGed() {
|
||||
screenmaxcol = 0;
|
||||
screenmaxrow = 0;
|
||||
screensize = 0;
|
||||
seqmsgid = MAYBE;
|
||||
seqoutrun = 0;
|
||||
sharemode = cmdlinesharemode;
|
||||
showdeleted = false;
|
||||
soupexportmargin = 76;
|
||||
|
@ -318,6 +318,9 @@ const word CRC_SCREENUSEBIOS = 0x43DE;
|
||||
const word CRC_SEARCHFOR = 0x9FA6;
|
||||
const word CRC_SEMAPHORE = 0x02FB;
|
||||
const word CRC_SERIALNO = 0x6EDE;
|
||||
const word CRC_SEQDIR = 0x6426;
|
||||
const word CRC_SEQMSGID = 0xFAB3;
|
||||
const word CRC_SEQOUTRUN = 0x46A9;
|
||||
const word CRC_SHAREMODE = 0x068E;
|
||||
const word CRC_SHOWDELETED = 0xA9CE;
|
||||
const word CRC_SOUNDDEVICE = 0x831D;
|
||||
|
@ -511,6 +511,9 @@ SwitchS:
|
||||
case CRC_SCREENSIZE : CfgScreensize (); break;
|
||||
case CRC_SEARCHFOR : CfgSearchfor (); break;
|
||||
case CRC_SEMAPHORE : CfgSemaphore (); break;
|
||||
case CRC_SEQDIR : CfgSeqDir (); break;
|
||||
case CRC_SEQMSGID : CfgSeqMsgId (); break;
|
||||
case CRC_SEQOUTRUN : CfgSeqOutRun (); break;
|
||||
case CRC_SHAREMODE : CfgSharemode (); break;
|
||||
case CRC_SHOWDELETED : CfgShowdeleted (); break;
|
||||
case CRC_SOUNDPATH : CfgSoundpath (); break;
|
||||
|
@ -344,6 +344,74 @@ void CfgSemaphore() {
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
|
||||
void CfgSeqDir() {
|
||||
|
||||
MapPath(PathCopy(CFG->seqdir, val));
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
|
||||
void CfgSeqMsgId() {
|
||||
|
||||
CFG->seqmsgid = GetYesno(val);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
|
||||
void CfgSeqOutRun_Error() {
|
||||
|
||||
std::cout << "* Warning: Bad SeqOutrun value \'" << val << "\', ignored."<< std::endl;
|
||||
}
|
||||
|
||||
void CfgSeqOutRun() {
|
||||
|
||||
char *p;
|
||||
ulong s = 0;
|
||||
|
||||
if(not isdigit((int)(*val))) {
|
||||
CfgSeqOutRun_Error();
|
||||
return;
|
||||
}
|
||||
|
||||
s = (ulong)atol(val);
|
||||
p = val;
|
||||
while(isdigit((int)(*p)))
|
||||
p++;
|
||||
if(*p == '\0') {
|
||||
CFG->seqoutrun = s;
|
||||
if(veryverbose)
|
||||
std::cout << " SeqOutRun: \'" << val << "\' --> " << CFG->seqoutrun << std::endl;
|
||||
return;
|
||||
}
|
||||
if(p[1]) {
|
||||
CfgSeqOutRun_Error();
|
||||
return;
|
||||
}
|
||||
switch(tolower(*p)) {
|
||||
case 'y':
|
||||
s *= 365;
|
||||
case 'd':
|
||||
s *= 24;
|
||||
case 'h':
|
||||
s *= 60*60;
|
||||
break;
|
||||
case 'w':
|
||||
s *= 7l*24*60*60;
|
||||
break;
|
||||
case 'm':
|
||||
s *= 31l*24*60*60;
|
||||
break;
|
||||
default:
|
||||
CfgSeqOutRun_Error();
|
||||
return;
|
||||
}
|
||||
CFG->seqoutrun = s;
|
||||
if(veryverbose)
|
||||
std::cout << " SeqOutRun: \'" << val << "\' --> " << CFG->seqoutrun << std::endl;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
|
||||
void CfgSharemode() {
|
||||
|
||||
if(atoi(val))
|
||||
|
@ -303,6 +303,9 @@ void CfgScreensize ();
|
||||
void CfgScreenusebios ();
|
||||
void CfgSearchfor ();
|
||||
void CfgSemaphore ();
|
||||
void CfgSeqDir ();
|
||||
void CfgSeqMsgId ();
|
||||
void CfgSeqOutRun ();
|
||||
void CfgSharemode ();
|
||||
void CfgShowdeleted ();
|
||||
void CfgSounddevice ();
|
||||
|
@ -303,6 +303,9 @@ public:
|
||||
int screensize;
|
||||
INam searchfor;
|
||||
Semaphore semaphore;
|
||||
Path seqdir;
|
||||
int seqmsgid;
|
||||
ulong seqoutrun;
|
||||
int sharemode; // share;
|
||||
bool showdeleted;
|
||||
Path soundpath;
|
||||
|
@ -32,7 +32,6 @@
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
|
||||
static ulong msgcount = 0;
|
||||
int _use_fwd = true;
|
||||
|
||||
|
||||
@ -329,7 +328,7 @@ void DoKludges(int mode, GMsg* msg, int kludges) {
|
||||
strcpy(buf, msg->iorig);
|
||||
strchg(buf, '@', '.');
|
||||
}
|
||||
sprintf(buf2, "<GED%08lX@%s>", time(NULL)+(msgcount++), buf);
|
||||
sprintf(buf2, "<GED%08lX@%s>", getMsgId(), buf);
|
||||
throw_release(msg->messageid);
|
||||
msg->messageid = throw_strdup(buf2);
|
||||
CvtMessageIDtoMSGID(buf2, buf, AA->echoid(), "MSGID");
|
||||
@ -337,7 +336,7 @@ void DoKludges(int mode, GMsg* msg, int kludges) {
|
||||
}
|
||||
else {
|
||||
msg->orig.make_string(buf2, msg->odom);
|
||||
sprintf(msg->msgids, "%s %08lx", buf2, time(NULL)+(msgcount++));
|
||||
sprintf(msg->msgids, "%s %08lx", buf2, getMsgId());
|
||||
}
|
||||
if(CFG->switches.get(usemsgid) and not AA->ispcboard()) {
|
||||
sprintf(buf, "\001MSGID: %s", msg->msgids);
|
||||
|
@ -423,6 +423,13 @@ void update_addressbook(GMsg* msg, bool reverse = false, bool force = false);
|
||||
void edit_addressbook(GMsg* msg);
|
||||
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// GEMSGID prototypes
|
||||
|
||||
ulong getMsgId();
|
||||
ulong getClassicMsgId();
|
||||
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// SOFTCR management
|
||||
|
||||
|
@ -64,6 +64,7 @@ gemlst cpp all ovl bcd bco bcx djg emx lnx rsx wcn wco wcx cyg be
|
||||
gemnus cpp all ovl bcd bco bcx djg emx lnx rsx wcn wco wcx cyg be
|
||||
gemrks cpp all ovl bcd bco bcx djg emx lnx rsx wcn wco wcx cyg be
|
||||
gemsgs cpp all ovl bcd bco bcx djg emx lnx rsx wcn wco wcx cyg be
|
||||
gemsgid cpp all ovl bcd bco bcx djg emx lnx rsx wcn wco wcx cyg be
|
||||
genode cpp all ovl bcd bco bcx djg emx lnx rsx wcn wco wcx cyg be
|
||||
geplay cpp all ovl bcd bco bcx djg emx lnx rsx wcn wco wcx cyg be
|
||||
gepost cpp all ovl bcd bco bcx djg emx lnx rsx wcn wco wcx cyg be
|
||||
|
Reference in New Issue
Block a user