Latest patch from asa

This commit is contained in:
Jacobo Tarrío 2000-10-20 11:14:13 +00:00
parent e2dd4e2a36
commit 8be1e735f6
20 changed files with 101 additions and 60 deletions

View File

@ -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*

View File

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

View File

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

View File

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

View File

@ -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, но я совсем не гарантирую, что
я отвечу.
>==============================================================================

View File

@ -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.

View File

@ -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();

View File

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

View File

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

View File

@ -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())) {

View File

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

View File

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

View File

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

View File

@ -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());

View File

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

View File

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

View File

@ -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) {
// ------------------------------------------------------------------

View File

@ -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__

View File

@ -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__)

View File

@ -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();