Latest patch from asa
This commit is contained in:
parent
e2dd4e2a36
commit
8be1e735f6
@ -3,4 +3,4 @@ GoldED+ 1.1.4.7 [source code]
|
||||
GoldED+ is a successor of the
|
||||
wellknown GoldED mail editor.
|
||||
-----------------------------
|
||||
URL: http://asa.i-connect.com
|
||||
*golded-plus.sourceforge.net*
|
||||
|
@ -56,7 +56,7 @@ $(FOBJPATH)/%.res: %.rc
|
||||
endif
|
||||
|
||||
SOURCES=
|
||||
include bld$(PLATFORM).inc
|
||||
-include bld$(PLATFORM).inc
|
||||
ifeq ($(PLATFORM),cyg)
|
||||
OBJS=$(addprefix $(FOBJPATH)/,$(patsubst %.rc,%.o,$(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(filter %.c %.cpp %.rc,$(SOURCES))))))
|
||||
else
|
||||
@ -74,6 +74,6 @@ clean:
|
||||
|
||||
ifeq ($(FDEPPATH)/dep,$(wildcard $(FDEPPATH)/de?))
|
||||
ifneq ($(DEPS),)
|
||||
include $(DEPS)
|
||||
-include $(DEPS)
|
||||
endif
|
||||
endif
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
GoldED+ compilation how to
|
||||
by Alexander Aganichev, 2:5020/201.58 <asa@eed.miee.ru>
|
||||
by Alexander Aganichev, 2:5020/201.58 <aaganichev@netscape.net>
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
|
@ -12,6 +12,25 @@ ______________________________________________________________________
|
||||
Notes for GoldED+ 1.1.4.7, September 24 2000
|
||||
______________________________________________________________________
|
||||
|
||||
! Message header now translated with default rules in most cases. If
|
||||
there's something wrong with it (f.e. double decoding or no decoding
|
||||
at all) please report. Also, original message header should be
|
||||
handled more carefully now.
|
||||
|
||||
+ Asciitilde now recognized more properly, so even ~anotheruser/file
|
||||
should work. Also environment variables defined as %TEMP%/file
|
||||
should be expanded in more cases. Feel free to report bug if
|
||||
something doesn't work.
|
||||
|
||||
- @CC kludges now created at top of message rather than in place
|
||||
where CC: found (this feature was also silently introduced in
|
||||
1.1.4.5 binaries for some platforms).
|
||||
|
||||
! Added historical section to this file regarding to 3.0.1-asa8
|
||||
release. The older release I have is -asa4 but it doesn't contains
|
||||
notework at all :-( If anyone could recall anything about that
|
||||
versions please let me know.
|
||||
|
||||
- Fixed Bug #109368: Ged+ crashes if there are more than 30 links in
|
||||
the help. Now accepts up to 50, and ignores more.
|
||||
|
||||
@ -828,6 +847,32 @@ ______________________________________________________________________
|
||||
|
||||
+ It is possible now to use Shift-... with clipboard.
|
||||
|
||||
______________________________________________________________________
|
||||
|
||||
Notes for 3.0.1-asa8, April 22 1999
|
||||
______________________________________________________________________
|
||||
|
||||
+ Added @Moderator template token that enables line only if substring
|
||||
"moderator" found in the "From" line.
|
||||
|
||||
+ Improved handling of @_token's and extend tokens with @*pseudo
|
||||
(lookup addressbook), @f* (current from), @*3daddr (boss address).
|
||||
|
||||
+ Incorporated Pavel Gulchouck's stream clipboard patch.
|
||||
|
||||
+ New command-line switch -R: right Alt key will work same as left.
|
||||
|
||||
- Fixed a bug with stripping block of lines after long kludge.
|
||||
|
||||
- Fixed stylecodes support for origin line.
|
||||
|
||||
- Fixed national language word left, word right movement.
|
||||
|
||||
- Areas.BBS parser now properly handles echos with exclamation mark.
|
||||
|
||||
- Fixed ImportEnd flow while importing file without CR at end and
|
||||
option EDITHardTerm set to NO.
|
||||
|
||||
______________________________________________________________________
|
||||
|
||||
Notes for 3.0.1-asa7 build 2, April 05 1999
|
||||
|
@ -22,7 +22,8 @@ assistance!
|
||||
11. А почему GoldED+ так криво поддерживает hpt-шные конфиги (не под UNIXами)?
|
||||
12. Почему не вводится русская "Э" под Win95?
|
||||
13. Глюки отображения под Windows 2000.
|
||||
14. Типа эта... А писать куда автору? ;-)
|
||||
14. Я, крутой линуксоид, привык смотреть список сообщений на русском...
|
||||
15. Типа эта... А писать куда автору? ;-)
|
||||
|
||||
>==============================================================================
|
||||
|
||||
@ -112,14 +113,15 @@ assistance!
|
||||
|
||||
*Q:* Глюки отображения под Windows 2000.
|
||||
*A:* Решаются сменой шрифта на Lucida или грязными хаками registry на предмет
|
||||
перестановки языков с 1250/1252 на 1251. Можно попробовать применить патч
|
||||
на registry с ftp://eed.miee.ru/pub/GoldED+/, но говорят, что становится
|
||||
еще хуже ;-)
|
||||
перестановки языков с 1250/1252 на 1251.
|
||||
|
||||
*Q:* Я, крутой линуксоид, привык смотреть список сообщений на русском...
|
||||
*A:* Ну и смотри: "MsgListFast No"
|
||||
|
||||
*Q:* Типа эта... А писать куда автору? ;-)
|
||||
*A:* Писать лучше всего в Ru.GoldED. Даже лучше сначала его почитать, потом
|
||||
писать. Если уж сильно приспичит, то можно писать на asa@eed.miee.ru
|
||||
или 2:5020/201.58 [временно в дауне], но я совсем не гарантирую, что я
|
||||
отвечу.
|
||||
писать. Если уж сильно приспичит, то можно писать на 2:5020/201.58,
|
||||
2:5020/604.19 или aaganichev@netscape.net, но я совсем не гарантирую, что
|
||||
я отвечу.
|
||||
|
||||
>==============================================================================
|
||||
|
@ -29,4 +29,7 @@ Tips and tricks
|
||||
processed by original fidoconfig library. You may consider using of
|
||||
'-lame' option :-)
|
||||
|
||||
8. If you want add something to this file - feel free to contact me.
|
||||
8. If you have a problem with incorrect recoding in message lister try
|
||||
add "MsgListFast No" to your config.
|
||||
|
||||
9. If you want add something to this file - feel free to contact me.
|
||||
|
@ -78,7 +78,8 @@ bool ReadGoldedCfg(int& force) {
|
||||
if(*CFG->hudsonsyspath == NUL) strcpy(CFG->hudsonsyspath, CFG->hudsonpath);
|
||||
if(*CFG->goldbasepath == NUL) strcpy(CFG->goldbasepath, CFG->hudsonpath);
|
||||
if(*CFG->goldbasesyspath == NUL) strcpy(CFG->goldbasesyspath, CFG->goldbasepath);
|
||||
if(*CFG->jampath == NUL) strcpy(CFG->jampath, CFG->hudsonpath);
|
||||
if(*CFG->jampath == NUL)
|
||||
strcpy(CFG->jampath, CFG->hudsonpath);
|
||||
|
||||
MakePathname(CFG->goldcfg, CFG->goldpath, CFG->goldcfg);
|
||||
MakePathname(CFG->helpcfg.fn, CFG->goldpath, CFG->helpcfg.fn);
|
||||
@ -118,12 +119,6 @@ bool ReadGoldedCfg(int& force) {
|
||||
MakePathname(CFG->semaphore.soupexport, CFG->goldpath, CFG->semaphore.soupexport);
|
||||
MakePathname(CFG->semaphore.exitnow, CFG->goldpath, CFG->semaphore.exitnow);
|
||||
|
||||
strschg_environ(CFG->jampath);
|
||||
strschg_environ(CFG->semaphore.importlist);
|
||||
strschg_environ(CFG->semaphore.exportlist);
|
||||
strschg_environ(CFG->semaphore.echoscan);
|
||||
strschg_environ(CFG->semaphore.netscan);
|
||||
|
||||
if(strieql(CFG->semaphore.exportlist, AddPath(CFG->jampath, "echomail.jam"))) {
|
||||
cout << "* Warning: SEMAPHORE EXPORTLIST must not be the same as ECHOMAIL.JAM!" << endl;
|
||||
SayBibi();
|
||||
|
@ -468,7 +468,7 @@ void GPickArealist::AreaCatchUp(uint n) {
|
||||
if(CFG->switches.get(highlightunread) and CFG->switches.get(areacatchupread)) {
|
||||
w_info(LNG->Wait);
|
||||
for(uint i=AA->lastread()+1; i <= AA->Msgn.Count(); i++) {
|
||||
AA->LoadHdr(msg, AA->Msgn.CvtReln(i));
|
||||
AA->LoadHdr(msg, AA->Msgn.CvtReln(i), false);
|
||||
if(msg->timesread++ == 0)
|
||||
AA->UpdateTimesread(msg);
|
||||
}
|
||||
|
@ -207,6 +207,7 @@ int DoCarboncopy(GMsg* msg, GMsg** carbon) {
|
||||
// Keep list as it was entered
|
||||
break;
|
||||
case CC_HIDDEN:
|
||||
ccline = msg->lin;
|
||||
if(A == AA) {
|
||||
sprintf(buf, "\001CC: %s %s", msg->To(), msg->dest.make_string(temp).c_str());
|
||||
ccline = AddKludge(ccline, buf);
|
||||
|
@ -77,11 +77,11 @@ void Area::DeleteMsg(GMsg* msg, int direction) {
|
||||
reply1st = msg->link.first();
|
||||
}
|
||||
if(replyto) {
|
||||
if(not LoadHdr(downlink, replyto))
|
||||
if(not LoadHdr(downlink, replyto, false))
|
||||
downlink->link.first_set(0);
|
||||
}
|
||||
if(reply1st) {
|
||||
if(not LoadHdr(uplink, reply1st))
|
||||
if(not LoadHdr(uplink, reply1st, false))
|
||||
uplink->link.to_set(0);
|
||||
}
|
||||
|
||||
@ -172,7 +172,7 @@ void Area::DelMsgs(GMsg* msg) {
|
||||
w_progress(MODE_UPDATE, C_INFOW, x+1, Mark.Count(), LNG->Deleting);
|
||||
ulong msgno = Mark[x];
|
||||
if(Msgn.ToReln(msgno)) {
|
||||
if(LoadHdr(msg, msgno)) {
|
||||
if(LoadHdr(msg, msgno, false)) {
|
||||
bool deletethis = false;
|
||||
if(delask) {
|
||||
if(msg->attr.uns() and not (msg->attr.rcv() or msg->attr.del())) {
|
||||
|
@ -417,7 +417,8 @@ char* mime_header_decode(char* decoded, const char* encoded, char *charset) {
|
||||
|
||||
char* strxmimecpy(char* dest, const char* source, int level, int size, bool detect) {
|
||||
|
||||
char buf[500], buf2[500], charset[100];
|
||||
ISub buf, buf2;
|
||||
char charset[100];
|
||||
bool need_reload;
|
||||
int table = -1;
|
||||
|
||||
|
@ -48,7 +48,7 @@ void ResetMsg(GMsg* msg) {
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
|
||||
int Area::LoadHdr(GMsg* msg, ulong msgno) {
|
||||
int Area::LoadHdr(GMsg* msg, ulong msgno, bool enable_recode) {
|
||||
|
||||
ResetMsg(msg);
|
||||
msg->msgno = msgno;
|
||||
@ -56,7 +56,14 @@ int Area::LoadHdr(GMsg* msg, ulong msgno) {
|
||||
|
||||
// Don't translate charsets if we don't know charset
|
||||
// Currently, it only mime-decodes, so it's okay.
|
||||
if(retval) {
|
||||
if(retval and enable_recode) {
|
||||
// Use default translation by default
|
||||
int table = LoadCharset(NULL, NULL, 1);
|
||||
if (table == -1)
|
||||
msg->charsetlevel = LoadCharset(CFG->xlatimport, CFG->xlatlocalset);
|
||||
else
|
||||
msg->charsetlevel = LoadCharset(CFG->xlatcharset[table].imp, CFG->xlatcharset[table].exp);
|
||||
|
||||
// Charset translate header fields
|
||||
strxmimecpy(msg->realby, msg->realby, msg->charsetlevel, sizeof(INam));
|
||||
strxmimecpy(msg->realto, msg->realto, msg->charsetlevel, sizeof(INam));
|
||||
|
@ -223,7 +223,7 @@ static void recursive_mark(GMsg* msg, ulong msgno) {
|
||||
int i;
|
||||
gmsg_links templink;
|
||||
|
||||
if(AA->Msgn.ToReln(msgno) and AA->LoadHdr(msg, msgno)) {
|
||||
if(AA->Msgn.ToReln(msgno) and AA->LoadHdr(msg, msgno, false)) {
|
||||
|
||||
templink = msg->link;
|
||||
|
||||
@ -263,7 +263,7 @@ void MarkMsgs_Thread(GMsg* msg) {
|
||||
while(AA->Msgn.ToReln(msgno)) { // Search backwards
|
||||
AA->Mark.Add(msgno);
|
||||
|
||||
if(not AA->LoadHdr(tempmsg, msgno))
|
||||
if(not AA->LoadHdr(tempmsg, msgno, false))
|
||||
tempmsg->link.to_set(0);
|
||||
msgno = tempmsg->link.to();
|
||||
}
|
||||
|
@ -650,7 +650,7 @@ static void GetLastLink(GMsg* msg, ulong& msgno) {
|
||||
|
||||
if(uplink->link.first()) {
|
||||
while(AA->Msgn.ToReln(uplink->link.first())) {
|
||||
if(not AA->LoadHdr(uplink, uplink->link.first()))
|
||||
if(not AA->LoadHdr(uplink, uplink->link.first(), false))
|
||||
uplink->msgno = 0;
|
||||
}
|
||||
}
|
||||
@ -1080,7 +1080,7 @@ void MakeMsg(int mode, GMsg* omsg) {
|
||||
// If message is a reply, update the links on the original
|
||||
if(CurrArea == OrigArea and (mode == MODE_QUOTE or mode == MODE_REPLYCOMMENT or mode == MODE_REPLY)) {
|
||||
if(AA->Msgn.ToReln(reply_msgno)) {
|
||||
if(AA->LoadHdr(reply, reply_msgno)) {
|
||||
if(AA->LoadHdr(reply, reply_msgno, false)) {
|
||||
ulong replynext;
|
||||
bool ok2save = false;
|
||||
if(AA->issquish()) {
|
||||
@ -1103,7 +1103,7 @@ void MakeMsg(int mode, GMsg* omsg) {
|
||||
replynext = reply->link.first();
|
||||
do {
|
||||
reply_msgno = replynext;
|
||||
if(not AA->LoadHdr(reply, reply_msgno))
|
||||
if(not AA->LoadHdr(reply, reply_msgno, false))
|
||||
break;
|
||||
replynext = reply->link.next();
|
||||
} while(reply->link.next());
|
||||
|
@ -928,7 +928,7 @@ int LoadMessage(GMsg* msg, int margin) {
|
||||
|
||||
if(reader_rcv_noise > 1) {
|
||||
GMsg* tmsg = throw_calloc(1, sizeof(GMsg));
|
||||
AA->LoadHdr(tmsg, msg->msgno);
|
||||
AA->LoadHdr(tmsg, msg->msgno, false);
|
||||
tmsg->attr = msg->attr;
|
||||
tmsg->orig_timesread = msg->orig_timesread;
|
||||
tmsg->received = msg->received;
|
||||
@ -1269,7 +1269,7 @@ void GotoPrevUnread() {
|
||||
int prev = AA->lastread();
|
||||
while(1 < prev) {
|
||||
prev--;
|
||||
AA->LoadHdr(msg, AA->Msgn.CvtReln(prev));
|
||||
AA->LoadHdr(msg, AA->Msgn.CvtReln(prev), false);
|
||||
if(msg->timesread == 0) {
|
||||
AA->set_lastread(prev);
|
||||
found = true;
|
||||
|
@ -491,7 +491,7 @@ public:
|
||||
void ScanArea();
|
||||
void ScanAreaPM();
|
||||
|
||||
int LoadHdr(GMsg* msg, ulong msgno);
|
||||
int LoadHdr(GMsg* msg, ulong msgno, bool enable_recode = true);
|
||||
int LoadMsg(GMsg* msg, ulong msgno, int margin, int mode=0);
|
||||
|
||||
void SaveHdr(int mode, GMsg* msg);
|
||||
|
@ -221,16 +221,8 @@ void MakePathname(char* pathname, const char* path, const char* name) {
|
||||
strbtrim(tmppath);
|
||||
strchg(tmppath, GOLD_WRONG_SLASH_CHR, GOLD_SLASH_CHR);
|
||||
strchg(tmpname, GOLD_WRONG_SLASH_CHR, GOLD_SLASH_CHR);
|
||||
if(strpbrk(tmpname, GOLD_SLASH_STR)){
|
||||
#if defined(__UNIX__)
|
||||
if(tmpname[0] == '~' && tmpname[1] == GOLD_SLASH_CHR){
|
||||
struct passwd* pw = getpwuid(getuid());
|
||||
strxmerge(pathname, sizeof(Path), pw->pw_dir, tmpname+1, NULL);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
strcpy(pathname, tmpname);
|
||||
}
|
||||
if(strpbrk(tmpname, GOLD_SLASH_STR))
|
||||
strschg_environ(strxcpy(pathname, tmpname, sizeof(Path)));
|
||||
else {
|
||||
strcpy(newpath, tmppath);
|
||||
if(*newpath)
|
||||
@ -308,15 +300,8 @@ void TouchFile(const char* filename) {
|
||||
// ------------------------------------------------------------------
|
||||
|
||||
char* PathCopy(char* __dst, const char* __src) {
|
||||
#if defined(__UNIX__)
|
||||
if(__src[0] == '~' && __src[1] == GOLD_SLASH_CHR){
|
||||
struct passwd* pw = getpwuid(getuid());
|
||||
strxmerge(__dst, sizeof(Path), pw->pw_dir, __src+1, NULL);
|
||||
return AddBackslash(__dst);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
return AddBackslash(strxcpy(__dst, __src, sizeof(Path)));
|
||||
strschg_environ(strxcpy(__dst, __src, sizeof(Path)));
|
||||
return AddBackslash(__dst);
|
||||
}
|
||||
|
||||
|
||||
@ -472,3 +457,4 @@ void extractdirname(char *dir, const char *path) {
|
||||
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
|
||||
|
@ -39,7 +39,7 @@
|
||||
string& AddBackslash(string& p) {
|
||||
|
||||
for(size_t posn = 0; (posn=p.find(GOLD_WRONG_SLASH_CHR, posn)) != p.npos; posn++)
|
||||
p[posn] = GOLD_SLASH_CHR;
|
||||
p[posn] = GOLD_SLASH_CHR;
|
||||
if(p[p.length()-1] != GOLD_SLASH_CHR)
|
||||
p += GOLD_SLASH_STR;
|
||||
|
||||
@ -64,6 +64,7 @@ void MakePathname(string& pathname, const string& path, const string& name) {
|
||||
void PathCopy(string& dst, const char* src) {
|
||||
|
||||
dst = src;
|
||||
strschg_environ(dst);
|
||||
AddBackslash(dst);
|
||||
}
|
||||
|
||||
@ -229,7 +230,7 @@ bool maketruepath(string &dirname) {
|
||||
if(access(dirname.c_str(), R_OK)) {
|
||||
dirname = cwd;
|
||||
ok = false;
|
||||
}
|
||||
}
|
||||
for(posn = 0; (posn=dirname.find('\\', posn)) != dirname.npos; posn++)
|
||||
dirname[posn] = '/';
|
||||
while((skipto=dirname.find("/../")) != dirname.npos) {
|
||||
@ -240,7 +241,7 @@ bool maketruepath(string &dirname) {
|
||||
while((skipfrom=dirname.find("/./")) != dirname.npos)
|
||||
dirname.erase(skipfrom, 2);
|
||||
len = dirname.length();
|
||||
if(len > 2 && !strcmp(&(dirname[len-2]), "/."))
|
||||
if(len > 2 && !strcmp(&(dirname.c_str()[len-2]), "/."))
|
||||
dirname.erase(len-2, 2);
|
||||
len = dirname.length();
|
||||
#ifdef __HAVE_DRIVES__
|
||||
|
@ -98,7 +98,7 @@ void GKbd::Init() {
|
||||
#if defined(__USE_NCURSES__)
|
||||
|
||||
// Both screen and keyboard must be initialized at once
|
||||
if(1 == (curses_initialized++)) {
|
||||
if(0 == (curses_initialized++)) {
|
||||
initscr();
|
||||
raw();
|
||||
noecho();
|
||||
@ -295,7 +295,7 @@ GKbd::~GKbd() {
|
||||
|
||||
#if defined(__USE_NCURSES__)
|
||||
|
||||
if(1 == (--curses_initialized))
|
||||
if(0 == (--curses_initialized))
|
||||
endwin();
|
||||
|
||||
#elif defined(__WIN32__)
|
||||
|
@ -134,7 +134,7 @@ GVid::~GVid() {
|
||||
#if defined(__USE_NCURSES__)
|
||||
|
||||
attrset(A_NORMAL);
|
||||
if(1 == (--curses_initialized))
|
||||
if(0 == (--curses_initialized))
|
||||
endwin();
|
||||
|
||||
#elif defined(__UNIX__)
|
||||
@ -160,7 +160,7 @@ void GVid::init() {
|
||||
|
||||
#if defined(__USE_NCURSES__)
|
||||
// Both display and keyboard will be initialized at once
|
||||
if(1 == (curses_initialized++)) {
|
||||
if(0 == (curses_initialized++)) {
|
||||
initscr();
|
||||
raw();
|
||||
noecho();
|
||||
|
Reference in New Issue
Block a user