Random fixes
This commit is contained in:
parent
542867d190
commit
5c40b1a909
@ -12,6 +12,21 @@ ______________________________________________________________________
|
|||||||
Notes for GoldED+ 1.1.5, /snapshot/
|
Notes for GoldED+ 1.1.5, /snapshot/
|
||||||
______________________________________________________________________
|
______________________________________________________________________
|
||||||
|
|
||||||
|
! AREALISTGROUPORDER now supports #num format entries.
|
||||||
|
|
||||||
|
! You can now use area groups in the *SCAN* keywords: just prepend the
|
||||||
|
'>' character before the group, i.e.:
|
||||||
|
|
||||||
|
AREASCAN >#12
|
||||||
|
AREASCANEXCL >G
|
||||||
|
|
||||||
|
- When calling unpacker the path to the area will be converted to the
|
||||||
|
full qualified path.
|
||||||
|
|
||||||
|
! EditNewline now deletes the selected block.
|
||||||
|
|
||||||
|
- Fixed exit from the locked/non-existing JAM areas.
|
||||||
|
|
||||||
- Fixed small bug in UUE decoder which prevents unsorted multipart UUE
|
- Fixed small bug in UUE decoder which prevents unsorted multipart UUE
|
||||||
from decoding.
|
from decoding.
|
||||||
|
|
||||||
|
@ -601,10 +601,7 @@ bool AreaList::GetAreaFirstPart(AreaCfg& aa, char*& key, char*& val) {
|
|||||||
|
|
||||||
// Get group (letter)
|
// Get group (letter)
|
||||||
getkeyval(&key, &val);
|
getkeyval(&key, &val);
|
||||||
if(*key == '#')
|
aa.groupid = getgroup(key);
|
||||||
aa.groupid = atoi(key+1)+0x8000u;
|
|
||||||
else
|
|
||||||
aa.groupid = (isupper(*key) ? *key : 0);
|
|
||||||
|
|
||||||
// Get type
|
// Get type
|
||||||
word crc = getkeyvalcrc(&key, &val);
|
word crc = getkeyvalcrc(&key, &val);
|
||||||
@ -931,10 +928,7 @@ void AreaList::GetAreaDesc(char* val) {
|
|||||||
getkeyval(&key, &val);
|
getkeyval(&key, &val);
|
||||||
if(*key) {
|
if(*key) {
|
||||||
if(*key != '-') {
|
if(*key != '-') {
|
||||||
if(*key == '#')
|
aa->set_groupid(getgroup(key));
|
||||||
aa->set_groupid(atoi(key+1)+0x8000u);
|
|
||||||
else
|
|
||||||
aa->set_groupid(toupper(*key));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get aka (optional)
|
// Get aka (optional)
|
||||||
|
@ -35,6 +35,17 @@ extern char v7nodeflags[16][9];
|
|||||||
extern char v7modemtype[8][9];
|
extern char v7modemtype[8][9];
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
|
int getgroup(const char *key)
|
||||||
|
{
|
||||||
|
if(*key == '#')
|
||||||
|
return atoi(key+1)+0x8000u;
|
||||||
|
else
|
||||||
|
return (isupper(*key) ? *key : 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
// Read GOLDED.CFG
|
// Read GOLDED.CFG
|
||||||
|
|
||||||
@ -156,19 +167,22 @@ void WriteGoldGed() {
|
|||||||
|
|
||||||
// Check scan in/excludes
|
// Check scan in/excludes
|
||||||
for(i = CFG->areascan.begin(); i != CFG->areascan.end(); i++) {
|
for(i = CFG->areascan.begin(); i != CFG->areascan.end(); i++) {
|
||||||
if(strwild((*AL.item)->echoid(), i->c_str())) {
|
const char *current = i->c_str();
|
||||||
|
if(((current[0] == '>') and ((*AL.item)->groupid() == getgroup(current+1))) or strwild((*AL.item)->echoid(), current)) {
|
||||||
(*AL.item)->set_scan(true);
|
(*AL.item)->set_scan(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(i = CFG->areascanexcl.begin(); i != CFG->areascanexcl.end(); i++) {
|
for(i = CFG->areascanexcl.begin(); i != CFG->areascanexcl.end(); i++) {
|
||||||
if(strwild((*AL.item)->echoid(), i->c_str())) {
|
const char *current = i->c_str();
|
||||||
|
if(((current[0] == '>') and ((*AL.item)->groupid() == getgroup(current+1))) or strwild((*AL.item)->echoid(), current)) {
|
||||||
(*AL.item)->set_scanexcl(true);
|
(*AL.item)->set_scanexcl(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(i = CFG->areascanincl.begin(); i != CFG->areascanincl.end(); i++) {
|
for(i = CFG->areascanincl.begin(); i != CFG->areascanincl.end(); i++) {
|
||||||
if(strwild((*AL.item)->echoid(), i->c_str())) {
|
const char *current = i->c_str();
|
||||||
|
if(((current[0] == '>') and ((*AL.item)->groupid() == getgroup(current+1))) or strwild((*AL.item)->echoid(), current)) {
|
||||||
(*AL.item)->set_scanincl(true);
|
(*AL.item)->set_scanincl(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -176,19 +190,22 @@ void WriteGoldGed() {
|
|||||||
|
|
||||||
// Check pmscan in/excludes
|
// Check pmscan in/excludes
|
||||||
for(i = CFG->areapmscan.begin(); i != CFG->areapmscan.end(); i++) {
|
for(i = CFG->areapmscan.begin(); i != CFG->areapmscan.end(); i++) {
|
||||||
if(strwild((*AL.item)->echoid(), i->c_str())) {
|
const char *current = i->c_str();
|
||||||
|
if(((current[0] == '>') and ((*AL.item)->groupid() == getgroup(current+1))) or strwild((*AL.item)->echoid(), current)) {
|
||||||
(*AL.item)->set_pmscan(true);
|
(*AL.item)->set_pmscan(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(i = CFG->areapmscanexcl.begin(); i != CFG->areapmscanexcl.end(); i++) {
|
for(i = CFG->areapmscanexcl.begin(); i != CFG->areapmscanexcl.end(); i++) {
|
||||||
if(strwild((*AL.item)->echoid(), i->c_str())) {
|
const char *current = i->c_str();
|
||||||
|
if(((current[0] == '>') and ((*AL.item)->groupid() == getgroup(current+1))) or strwild((*AL.item)->echoid(), current)) {
|
||||||
(*AL.item)->set_pmscanexcl(true);
|
(*AL.item)->set_pmscanexcl(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(i = CFG->areapmscanincl.begin(); i != CFG->areapmscanincl.end(); i++) {
|
for(i = CFG->areapmscanincl.begin(); i != CFG->areapmscanincl.end(); i++) {
|
||||||
if(strwild((*AL.item)->echoid(), i->c_str())) {
|
const char *current = i->c_str();
|
||||||
|
if(((current[0] == '>') and ((*AL.item)->groupid() == getgroup(current+1))) or strwild((*AL.item)->echoid(), current)) {
|
||||||
(*AL.item)->set_pmscanincl(true);
|
(*AL.item)->set_pmscanincl(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -58,16 +58,33 @@ int AreaTypeOrder[17] = {
|
|||||||
|
|
||||||
int compare_groups(int _ga, int _gb)
|
int compare_groups(int _ga, int _gb)
|
||||||
{
|
{
|
||||||
char *gap, *gbp;
|
|
||||||
|
|
||||||
register int ga = _ga ? _ga : INT_MAX;
|
register int ga = _ga ? _ga : INT_MAX;
|
||||||
register int gb = _gb ? _gb : INT_MAX;
|
register int gb = _gb ? _gb : INT_MAX;
|
||||||
|
|
||||||
if((ga > 0xff) || (gb > 0xff))
|
const char *gap = NULL;
|
||||||
return compare_two(ga, gb);
|
const char *gbp = NULL;
|
||||||
|
|
||||||
gap = strchr(CFG->arealistgrouporder, (char)ga);
|
const char *g;
|
||||||
gbp = strchr(CFG->arealistgrouporder, (char)gb);
|
|
||||||
|
for(g = CFG->arealistgrouporder; *g != NUL;) {
|
||||||
|
|
||||||
|
int gr = getgroup(g);
|
||||||
|
|
||||||
|
if(gr == ga)
|
||||||
|
gap = g;
|
||||||
|
|
||||||
|
if(gr == gb)
|
||||||
|
gbp = g;
|
||||||
|
|
||||||
|
if(*g == '#') {
|
||||||
|
do {
|
||||||
|
g++;
|
||||||
|
} while(isdigit(*g));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
g++;
|
||||||
|
}
|
||||||
|
|
||||||
if(gap == NULL) {
|
if(gap == NULL) {
|
||||||
if(gbp != NULL)
|
if(gbp != NULL)
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -493,7 +493,9 @@ const char* Unpack(const char* archive) {
|
|||||||
mkdir(newdir, S_IWUSR);
|
mkdir(newdir, S_IWUSR);
|
||||||
char cmdline[1024];
|
char cmdline[1024];
|
||||||
strxcpy(cmdline, i->second.c_str(), sizeof(cmdline));
|
strxcpy(cmdline, i->second.c_str(), sizeof(cmdline));
|
||||||
strxcpy(newname, archive, sizeof(Path));
|
std::string archive_truename = archive;
|
||||||
|
maketruepath(archive_truename);
|
||||||
|
strxcpy(newname, archive_truename.c_str(), sizeof(Path));
|
||||||
strchg(newname, GOLD_WRONG_SLASH_CHR, GOLD_SLASH_CHR);
|
strchg(newname, GOLD_WRONG_SLASH_CHR, GOLD_SLASH_CHR);
|
||||||
strischg(cmdline, "@file", newname);
|
strischg(cmdline, "@file", newname);
|
||||||
// Store current drive/dir and change it to the temporary
|
// Store current drive/dir and change it to the temporary
|
||||||
|
@ -2140,12 +2140,16 @@ int IEclass::handlekey(gkey __key) {
|
|||||||
|
|
||||||
case KK_EditDelChar:
|
case KK_EditDelChar:
|
||||||
case KK_EditDelLeft:
|
case KK_EditDelLeft:
|
||||||
|
if(selecting) {
|
||||||
|
__key = KK_EditUndefine;
|
||||||
|
}
|
||||||
|
// fall through
|
||||||
|
|
||||||
case KK_EditPaste:
|
case KK_EditPaste:
|
||||||
|
case KK_EditNewline:
|
||||||
if(selecting) {
|
if(selecting) {
|
||||||
BlockCut(true);
|
BlockCut(true);
|
||||||
batch_mode = BATCH_MODE;
|
batch_mode = BATCH_MODE;
|
||||||
if(__key != KK_EditPaste)
|
|
||||||
__key = KK_EditUndefine;
|
|
||||||
}
|
}
|
||||||
goto noselecting;
|
goto noselecting;
|
||||||
break;
|
break;
|
||||||
|
@ -55,6 +55,8 @@ void WriteGoldGed();
|
|||||||
void InstallDetect(char* path);
|
void InstallDetect(char* path);
|
||||||
int InstallFinish();
|
int InstallFinish();
|
||||||
|
|
||||||
|
int getgroup(const char *key);
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
// GCKEYS prototypes
|
// GCKEYS prototypes
|
||||||
|
@ -83,7 +83,7 @@ bool edit_pathname(char* buf, int buf_size, char* title, int helpcat) {
|
|||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
int PopupLocked(long tries, int isopen, const char* file) {
|
bool PopupLocked(long tries, int isopen, const char* file) {
|
||||||
|
|
||||||
// Close popup window if requested
|
// Close popup window if requested
|
||||||
if(tries == 0) {
|
if(tries == 0) {
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
void ErrorExit(int type) {
|
void ErrorExit(int type) {
|
||||||
|
|
||||||
static int in_error_exit = false;
|
static int in_error_exit = 0;
|
||||||
|
|
||||||
if(not in_error_exit++) {
|
if(not in_error_exit++) {
|
||||||
error_exit = type;
|
error_exit = type;
|
||||||
|
@ -287,7 +287,7 @@ extern int WidePersonalmail;
|
|||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
int PopupLocked(long __tries, int __isopen, const char* __file);
|
bool PopupLocked(long __tries, int __isopen, const char* __file);
|
||||||
const char* Unpack(const char* archive);
|
const char* Unpack(const char* archive);
|
||||||
void CleanUnpacked(const char* unpacked);
|
void CleanUnpacked(const char* unpacked);
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@ int EzycomArea::test_open(const char* __file, int __mode, int __share) {
|
|||||||
if(_fh == -1) {
|
if(_fh == -1) {
|
||||||
|
|
||||||
// Tell the world
|
// Tell the world
|
||||||
if(PopupLocked(++_tries, false, _path) == false) {
|
if((errno != EACCES) or (PopupLocked(++_tries, false, _path) == false)) {
|
||||||
WideLog->ErrOpen();
|
WideLog->ErrOpen();
|
||||||
raw_close();
|
raw_close();
|
||||||
WideLog->printf("! A Ezycom msgbase file could not be opened.");
|
WideLog->printf("! A Ezycom msgbase file could not be opened.");
|
||||||
|
@ -163,7 +163,8 @@ void JamArea::close() {
|
|||||||
|
|
||||||
if(isopen) {
|
if(isopen) {
|
||||||
if(isopen == 1) {
|
if(isopen == 1) {
|
||||||
save_lastread();
|
if(data->fhjhr != -1)
|
||||||
|
save_lastread();
|
||||||
if(data->islocked)
|
if(data->islocked)
|
||||||
unlock();
|
unlock();
|
||||||
raw_close();
|
raw_close();
|
||||||
|
@ -70,7 +70,7 @@ int PcbWideTestOpen(char* __file) {
|
|||||||
if(_fh == -1) {
|
if(_fh == -1) {
|
||||||
|
|
||||||
// Tell the world
|
// Tell the world
|
||||||
if(PopupLocked(++_tries, false, __file) == false) {
|
if((errno != EACCES) or (PopupLocked(++_tries, false, __file) == false)) {
|
||||||
WideLog->ErrOpen();
|
WideLog->ErrOpen();
|
||||||
PcbWideClose();
|
PcbWideClose();
|
||||||
WideLog->printf("! A PCBoard msgbase file could not be opened.");
|
WideLog->printf("! A PCBoard msgbase file could not be opened.");
|
||||||
@ -173,7 +173,7 @@ int PcbArea::test_open(const char* __file) {
|
|||||||
if(_fh == -1) {
|
if(_fh == -1) {
|
||||||
|
|
||||||
// Tell the world
|
// Tell the world
|
||||||
if(PopupLocked(++_tries, false, __file) == false) {
|
if((errno != EACCES) or (PopupLocked(++_tries, false, __file) == false)) {
|
||||||
WideLog->ErrOpen();
|
WideLog->ErrOpen();
|
||||||
raw_close();
|
raw_close();
|
||||||
PcbWideClose();
|
PcbWideClose();
|
||||||
|
@ -133,7 +133,7 @@ int SquishArea::test_open(const char* __file) {
|
|||||||
if(_fh == -1) {
|
if(_fh == -1) {
|
||||||
|
|
||||||
// Tell the world
|
// Tell the world
|
||||||
if(PopupLocked(++_tries, false, __file) == false) {
|
if((errno != EACCES) or (PopupLocked(++_tries, false, __file) == false)) {
|
||||||
|
|
||||||
// User requested to exit
|
// User requested to exit
|
||||||
WideLog->ErrOpen();
|
WideLog->ErrOpen();
|
||||||
|
@ -82,7 +82,7 @@ int WCatArea::test_open(const char* __file) {
|
|||||||
if(_fh == -1) {
|
if(_fh == -1) {
|
||||||
|
|
||||||
// Tell the world
|
// Tell the world
|
||||||
if(PopupLocked(++_tries, false, __file) == false) {
|
if((errno != EACCES) or (PopupLocked(++_tries, false, __file) == false)) {
|
||||||
|
|
||||||
// User requested to exit
|
// User requested to exit
|
||||||
WideLog->ErrOpen();
|
WideLog->ErrOpen();
|
||||||
|
@ -95,7 +95,7 @@ int XbbsArea::test_open(const char* __file, int sharemode) {
|
|||||||
if(_fh == -1) {
|
if(_fh == -1) {
|
||||||
|
|
||||||
// Tell the world
|
// Tell the world
|
||||||
if(PopupLocked(++_tries, false, __file) == false) {
|
if((errno != EACCES) or (PopupLocked(++_tries, false, __file) == false)) {
|
||||||
|
|
||||||
// User requested to exit
|
// User requested to exit
|
||||||
WideLog->ErrOpen();
|
WideLog->ErrOpen();
|
||||||
|
Reference in New Issue
Block a user