From 8be1e735f61530c0e8811dfb5a53bbddfd8a8286 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Tarr=C3=ADo?= Date: Fri, 20 Oct 2000 11:14:13 +0000 Subject: [PATCH] Latest patch from asa --- File_id.diz | 2 +- GNUmakef.inc | 4 ++-- docs/building.txt | 2 +- docs/notework.txt | 45 +++++++++++++++++++++++++++++++++++++++ docs/rusfaq.txt | 16 ++++++++------ docs/tips.txt | 5 ++++- golded3/gccfgg.cpp | 9 ++------ golded3/gearea.cpp | 2 +- golded3/gecarb.cpp | 1 + golded3/gecmfd.cpp | 6 +++--- golded3/geline.cpp | 3 ++- golded3/gelmsg.cpp | 11 ++++++++-- golded3/gemrks.cpp | 4 ++-- golded3/gepost.cpp | 6 +++--- golded3/geread.cpp | 4 ++-- golded3/gmarea.h | 2 +- goldlib/gall/gfilutl1.cpp | 24 +++++---------------- goldlib/gall/gfilutl2.cpp | 7 +++--- goldlib/gall/gkbdbase.cpp | 4 ++-- goldlib/gall/gvidinit.cpp | 4 ++-- 20 files changed, 101 insertions(+), 60 deletions(-) diff --git a/File_id.diz b/File_id.diz index e389759..505110a 100644 --- a/File_id.diz +++ b/File_id.diz @@ -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* diff --git a/GNUmakef.inc b/GNUmakef.inc index 205a7b4..9f893a5 100644 --- a/GNUmakef.inc +++ b/GNUmakef.inc @@ -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 diff --git a/docs/building.txt b/docs/building.txt index 92d8655..30ec999 100644 --- a/docs/building.txt +++ b/docs/building.txt @@ -1,6 +1,6 @@ GoldED+ compilation how to -by Alexander Aganichev, 2:5020/201.58 +by Alexander Aganichev, 2:5020/201.58 ------------------------------------------------------------------------------- diff --git a/docs/notework.txt b/docs/notework.txt index 1dda2a3..49a009c 100644 --- a/docs/notework.txt +++ b/docs/notework.txt @@ -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 diff --git a/docs/rusfaq.txt b/docs/rusfaq.txt index f4ff3b5..e87cc3e 100644 --- a/docs/rusfaq.txt +++ b/docs/rusfaq.txt @@ -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, но я совсем не гарантирую, что + я отвечу. >============================================================================== diff --git a/docs/tips.txt b/docs/tips.txt index cacdddf..766e049 100644 --- a/docs/tips.txt +++ b/docs/tips.txt @@ -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. diff --git a/golded3/gccfgg.cpp b/golded3/gccfgg.cpp index 079ab75..19baa59 100644 --- a/golded3/gccfgg.cpp +++ b/golded3/gccfgg.cpp @@ -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(); diff --git a/golded3/gearea.cpp b/golded3/gearea.cpp index d88f2ea..f22f88b 100644 --- a/golded3/gearea.cpp +++ b/golded3/gearea.cpp @@ -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); } diff --git a/golded3/gecarb.cpp b/golded3/gecarb.cpp index 678f571..98c9349 100644 --- a/golded3/gecarb.cpp +++ b/golded3/gecarb.cpp @@ -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); diff --git a/golded3/gecmfd.cpp b/golded3/gecmfd.cpp index f8efcc8..e5728a6 100644 --- a/golded3/gecmfd.cpp +++ b/golded3/gecmfd.cpp @@ -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())) { diff --git a/golded3/geline.cpp b/golded3/geline.cpp index 21656e8..5aebe1c 100644 --- a/golded3/geline.cpp +++ b/golded3/geline.cpp @@ -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; diff --git a/golded3/gelmsg.cpp b/golded3/gelmsg.cpp index 13a59f9..f4ff5c1 100644 --- a/golded3/gelmsg.cpp +++ b/golded3/gelmsg.cpp @@ -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)); diff --git a/golded3/gemrks.cpp b/golded3/gemrks.cpp index 3246fa5..c3ce113 100644 --- a/golded3/gemrks.cpp +++ b/golded3/gemrks.cpp @@ -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(); } diff --git a/golded3/gepost.cpp b/golded3/gepost.cpp index 1f5fa2d..ee2fa4b 100644 --- a/golded3/gepost.cpp +++ b/golded3/gepost.cpp @@ -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()); diff --git a/golded3/geread.cpp b/golded3/geread.cpp index de4ddc5..b8cb77c 100644 --- a/golded3/geread.cpp +++ b/golded3/geread.cpp @@ -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; diff --git a/golded3/gmarea.h b/golded3/gmarea.h index 0dc57c1..1b2c1b0 100644 --- a/golded3/gmarea.h +++ b/golded3/gmarea.h @@ -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); diff --git a/goldlib/gall/gfilutl1.cpp b/goldlib/gall/gfilutl1.cpp index 6a646bf..d33a3ab 100644 --- a/goldlib/gall/gfilutl1.cpp +++ b/goldlib/gall/gfilutl1.cpp @@ -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) { // ------------------------------------------------------------------ + diff --git a/goldlib/gall/gfilutl2.cpp b/goldlib/gall/gfilutl2.cpp index fee081e..82739f6 100644 --- a/goldlib/gall/gfilutl2.cpp +++ b/goldlib/gall/gfilutl2.cpp @@ -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__ diff --git a/goldlib/gall/gkbdbase.cpp b/goldlib/gall/gkbdbase.cpp index 48a6810..9237c38 100644 --- a/goldlib/gall/gkbdbase.cpp +++ b/goldlib/gall/gkbdbase.cpp @@ -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__) diff --git a/goldlib/gall/gvidinit.cpp b/goldlib/gall/gvidinit.cpp index af7e9ce..fc92cd6 100644 --- a/goldlib/gall/gvidinit.cpp +++ b/goldlib/gall/gvidinit.cpp @@ -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();