From fc385eca3c19ea03391d00a7d4004637432aa4d2 Mon Sep 17 00:00:00 2001 From: David Brown Date: Sun, 18 Dec 2016 16:34:33 +0000 Subject: [PATCH] Update bootstrap C sources. --- bootstrap/unix-44/Compiler.c | 4 ++-- bootstrap/unix-44/OPM.c | 17 ++++++++++++----- bootstrap/unix-44/OPM.h | 2 +- bootstrap/unix-44/OPT.c | 9 +++++++-- bootstrap/unix-48/Compiler.c | 4 ++-- bootstrap/unix-48/OPM.c | 17 ++++++++++++----- bootstrap/unix-48/OPM.h | 2 +- bootstrap/unix-48/OPT.c | 9 +++++++-- bootstrap/unix-88/Compiler.c | 4 ++-- bootstrap/unix-88/OPM.c | 17 ++++++++++++----- bootstrap/unix-88/OPM.h | 2 +- bootstrap/unix-88/OPT.c | 9 +++++++-- bootstrap/windows-48/Compiler.c | 4 ++-- bootstrap/windows-48/OPM.c | 17 ++++++++++++----- bootstrap/windows-48/OPM.h | 2 +- bootstrap/windows-48/OPT.c | 9 +++++++-- bootstrap/windows-88/Compiler.c | 4 ++-- bootstrap/windows-88/OPM.c | 17 ++++++++++++----- bootstrap/windows-88/OPM.h | 2 +- bootstrap/windows-88/OPT.c | 9 +++++++-- 20 files changed, 110 insertions(+), 50 deletions(-) diff --git a/bootstrap/unix-44/Compiler.c b/bootstrap/unix-44/Compiler.c index f26c1a32..ed38ce7b 100644 --- a/bootstrap/unix-44/Compiler.c +++ b/bootstrap/unix-44/Compiler.c @@ -46,7 +46,7 @@ void Compiler_Module (BOOLEAN *done) OPV_Module(p); if (OPM_noerr) { if ((__IN(10, OPM_Options, 32) && __STRCMP(OPM_modName, "SYSTEM") != 0)) { - OPM_DeleteNewSym((void*)OPT_SelfName, 256); + OPM_DeleteSym((void*)OPT_SelfName, 256); OPM_LogVT100((CHAR*)"32m", 4); OPM_LogWStr((CHAR*)" Main program.", 16); OPM_LogVT100((CHAR*)"0m", 3); @@ -62,7 +62,7 @@ void Compiler_Module (BOOLEAN *done) } } } else { - OPM_DeleteNewSym((void*)OPT_SelfName, 256); + OPM_DeleteSym((void*)OPT_SelfName, 256); } } } diff --git a/bootstrap/unix-44/OPM.c b/bootstrap/unix-44/OPM.c index 3411635b..11aa9008 100644 --- a/bootstrap/unix-44/OPM.c +++ b/bootstrap/unix-44/OPM.c @@ -49,8 +49,8 @@ export CHAR OPM_ResourceDir[1024]; static void OPM_Append (Files_Rider *R, ADDRESS *R__typ, Files_File F); export void OPM_CloseFiles (void); export void OPM_CloseOldSym (void); -export void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len); export void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len); +export void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len); export void OPM_FPrint (INT32 *fp, INT64 val); export void OPM_FPrintLReal (INT32 *fp, LONGREAL val); export void OPM_FPrintReal (INT32 *fp, REAL val); @@ -436,8 +436,10 @@ void OPM_InitOptions (void) OPM_VerboseListSizes(); } __MOVE(OPM_InstallDir, OPM_ResourceDir, 1024); - Strings_Append((CHAR*)"/", 2, (void*)OPM_ResourceDir, 1024); - Strings_Append(OPM_Model, 10, (void*)OPM_ResourceDir, 1024); + if (OPM_ResourceDir[0] != 0x00) { + Strings_Append((CHAR*)"/", 2, (void*)OPM_ResourceDir, 1024); + Strings_Append(OPM_Model, 10, (void*)OPM_ResourceDir, 1024); + } modules[0] = 0x00; Platform_GetEnv((CHAR*)"MODULES", 8, (void*)modules, 1024); __MOVE(".", searchpath, 2); @@ -766,6 +768,9 @@ void OPM_OldSym (CHAR *modName, ADDRESS modName__len, BOOLEAN *done) { CHAR tag, ver; OPM_FileName fileName; + INT16 res; + OPM_oldSFile = NIL; + *done = 0; OPM_MakeFileName((void*)modName, modName__len, (void*)fileName, 32, (CHAR*)".sym", 5); OPM_oldSFile = Files_Old(fileName, 32); *done = OPM_oldSFile != NIL; @@ -774,7 +779,9 @@ void OPM_OldSym (CHAR *modName, ADDRESS modName__len, BOOLEAN *done) Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&tag); Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&ver); if (tag != 0xf7 || ver != 0x83) { - OPM_err(-306); + if (!__IN(4, OPM_Options, 32)) { + OPM_err(-306); + } OPM_CloseOldSym(); *done = 0; } @@ -818,7 +825,7 @@ void OPM_RegisterNewSym (void) } } -void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len) +void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len) { OPM_FileName fn; INT16 res; diff --git a/bootstrap/unix-44/OPM.h b/bootstrap/unix-44/OPM.h index da0a48ee..51f64007 100644 --- a/bootstrap/unix-44/OPM.h +++ b/bootstrap/unix-44/OPM.h @@ -23,8 +23,8 @@ import CHAR OPM_ResourceDir[1024]; import void OPM_CloseFiles (void); import void OPM_CloseOldSym (void); -import void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len); import void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len); +import void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len); import void OPM_FPrint (INT32 *fp, INT64 val); import void OPM_FPrintLReal (INT32 *fp, LONGREAL val); import void OPM_FPrintReal (INT32 *fp, REAL val); diff --git a/bootstrap/unix-44/OPT.c b/bootstrap/unix-44/OPT.c index 02532034..3f58d991 100644 --- a/bootstrap/unix-44/OPT.c +++ b/bootstrap/unix-44/OPT.c @@ -1493,7 +1493,12 @@ void OPT_Import (OPS_Name aliasName, OPS_Name name, BOOLEAN *done) OPT_impCtxt.nofm = 0; OPT_impCtxt.self = __STRCMP(aliasName, "@self") == 0; OPT_impCtxt.reffp = 0; - OPM_OldSym((void*)name, 256, &*done); + if ((OPT_impCtxt.self && __IN(17, OPM_Options, 32))) { + OPM_DeleteSym((void*)name, 256); + *done = 0; + } else { + OPM_OldSym((void*)name, 256, &*done); + } if (*done) { OPT_InMod(&mno); OPT_InLinks(); @@ -1902,7 +1907,7 @@ void OPT_Export (BOOLEAN *ext, BOOLEAN *new) OPT_newsf = 0; OPT_symNew = 0; if (!OPM_noerr || OPT_findpc) { - OPM_DeleteNewSym((void*)OPT_SelfName, 256); + OPM_DeleteSym((void*)OPT_SelfName, 256); } } } diff --git a/bootstrap/unix-48/Compiler.c b/bootstrap/unix-48/Compiler.c index f26c1a32..ed38ce7b 100644 --- a/bootstrap/unix-48/Compiler.c +++ b/bootstrap/unix-48/Compiler.c @@ -46,7 +46,7 @@ void Compiler_Module (BOOLEAN *done) OPV_Module(p); if (OPM_noerr) { if ((__IN(10, OPM_Options, 32) && __STRCMP(OPM_modName, "SYSTEM") != 0)) { - OPM_DeleteNewSym((void*)OPT_SelfName, 256); + OPM_DeleteSym((void*)OPT_SelfName, 256); OPM_LogVT100((CHAR*)"32m", 4); OPM_LogWStr((CHAR*)" Main program.", 16); OPM_LogVT100((CHAR*)"0m", 3); @@ -62,7 +62,7 @@ void Compiler_Module (BOOLEAN *done) } } } else { - OPM_DeleteNewSym((void*)OPT_SelfName, 256); + OPM_DeleteSym((void*)OPT_SelfName, 256); } } } diff --git a/bootstrap/unix-48/OPM.c b/bootstrap/unix-48/OPM.c index 3411635b..11aa9008 100644 --- a/bootstrap/unix-48/OPM.c +++ b/bootstrap/unix-48/OPM.c @@ -49,8 +49,8 @@ export CHAR OPM_ResourceDir[1024]; static void OPM_Append (Files_Rider *R, ADDRESS *R__typ, Files_File F); export void OPM_CloseFiles (void); export void OPM_CloseOldSym (void); -export void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len); export void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len); +export void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len); export void OPM_FPrint (INT32 *fp, INT64 val); export void OPM_FPrintLReal (INT32 *fp, LONGREAL val); export void OPM_FPrintReal (INT32 *fp, REAL val); @@ -436,8 +436,10 @@ void OPM_InitOptions (void) OPM_VerboseListSizes(); } __MOVE(OPM_InstallDir, OPM_ResourceDir, 1024); - Strings_Append((CHAR*)"/", 2, (void*)OPM_ResourceDir, 1024); - Strings_Append(OPM_Model, 10, (void*)OPM_ResourceDir, 1024); + if (OPM_ResourceDir[0] != 0x00) { + Strings_Append((CHAR*)"/", 2, (void*)OPM_ResourceDir, 1024); + Strings_Append(OPM_Model, 10, (void*)OPM_ResourceDir, 1024); + } modules[0] = 0x00; Platform_GetEnv((CHAR*)"MODULES", 8, (void*)modules, 1024); __MOVE(".", searchpath, 2); @@ -766,6 +768,9 @@ void OPM_OldSym (CHAR *modName, ADDRESS modName__len, BOOLEAN *done) { CHAR tag, ver; OPM_FileName fileName; + INT16 res; + OPM_oldSFile = NIL; + *done = 0; OPM_MakeFileName((void*)modName, modName__len, (void*)fileName, 32, (CHAR*)".sym", 5); OPM_oldSFile = Files_Old(fileName, 32); *done = OPM_oldSFile != NIL; @@ -774,7 +779,9 @@ void OPM_OldSym (CHAR *modName, ADDRESS modName__len, BOOLEAN *done) Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&tag); Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&ver); if (tag != 0xf7 || ver != 0x83) { - OPM_err(-306); + if (!__IN(4, OPM_Options, 32)) { + OPM_err(-306); + } OPM_CloseOldSym(); *done = 0; } @@ -818,7 +825,7 @@ void OPM_RegisterNewSym (void) } } -void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len) +void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len) { OPM_FileName fn; INT16 res; diff --git a/bootstrap/unix-48/OPM.h b/bootstrap/unix-48/OPM.h index da0a48ee..51f64007 100644 --- a/bootstrap/unix-48/OPM.h +++ b/bootstrap/unix-48/OPM.h @@ -23,8 +23,8 @@ import CHAR OPM_ResourceDir[1024]; import void OPM_CloseFiles (void); import void OPM_CloseOldSym (void); -import void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len); import void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len); +import void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len); import void OPM_FPrint (INT32 *fp, INT64 val); import void OPM_FPrintLReal (INT32 *fp, LONGREAL val); import void OPM_FPrintReal (INT32 *fp, REAL val); diff --git a/bootstrap/unix-48/OPT.c b/bootstrap/unix-48/OPT.c index b95c2810..85113943 100644 --- a/bootstrap/unix-48/OPT.c +++ b/bootstrap/unix-48/OPT.c @@ -1493,7 +1493,12 @@ void OPT_Import (OPS_Name aliasName, OPS_Name name, BOOLEAN *done) OPT_impCtxt.nofm = 0; OPT_impCtxt.self = __STRCMP(aliasName, "@self") == 0; OPT_impCtxt.reffp = 0; - OPM_OldSym((void*)name, 256, &*done); + if ((OPT_impCtxt.self && __IN(17, OPM_Options, 32))) { + OPM_DeleteSym((void*)name, 256); + *done = 0; + } else { + OPM_OldSym((void*)name, 256, &*done); + } if (*done) { OPT_InMod(&mno); OPT_InLinks(); @@ -1902,7 +1907,7 @@ void OPT_Export (BOOLEAN *ext, BOOLEAN *new) OPT_newsf = 0; OPT_symNew = 0; if (!OPM_noerr || OPT_findpc) { - OPM_DeleteNewSym((void*)OPT_SelfName, 256); + OPM_DeleteSym((void*)OPT_SelfName, 256); } } } diff --git a/bootstrap/unix-88/Compiler.c b/bootstrap/unix-88/Compiler.c index f26c1a32..ed38ce7b 100644 --- a/bootstrap/unix-88/Compiler.c +++ b/bootstrap/unix-88/Compiler.c @@ -46,7 +46,7 @@ void Compiler_Module (BOOLEAN *done) OPV_Module(p); if (OPM_noerr) { if ((__IN(10, OPM_Options, 32) && __STRCMP(OPM_modName, "SYSTEM") != 0)) { - OPM_DeleteNewSym((void*)OPT_SelfName, 256); + OPM_DeleteSym((void*)OPT_SelfName, 256); OPM_LogVT100((CHAR*)"32m", 4); OPM_LogWStr((CHAR*)" Main program.", 16); OPM_LogVT100((CHAR*)"0m", 3); @@ -62,7 +62,7 @@ void Compiler_Module (BOOLEAN *done) } } } else { - OPM_DeleteNewSym((void*)OPT_SelfName, 256); + OPM_DeleteSym((void*)OPT_SelfName, 256); } } } diff --git a/bootstrap/unix-88/OPM.c b/bootstrap/unix-88/OPM.c index 2bc2c145..874cf058 100644 --- a/bootstrap/unix-88/OPM.c +++ b/bootstrap/unix-88/OPM.c @@ -49,8 +49,8 @@ export CHAR OPM_ResourceDir[1024]; static void OPM_Append (Files_Rider *R, ADDRESS *R__typ, Files_File F); export void OPM_CloseFiles (void); export void OPM_CloseOldSym (void); -export void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len); export void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len); +export void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len); export void OPM_FPrint (INT32 *fp, INT64 val); export void OPM_FPrintLReal (INT32 *fp, LONGREAL val); export void OPM_FPrintReal (INT32 *fp, REAL val); @@ -436,8 +436,10 @@ void OPM_InitOptions (void) OPM_VerboseListSizes(); } __MOVE(OPM_InstallDir, OPM_ResourceDir, 1024); - Strings_Append((CHAR*)"/", 2, (void*)OPM_ResourceDir, 1024); - Strings_Append(OPM_Model, 10, (void*)OPM_ResourceDir, 1024); + if (OPM_ResourceDir[0] != 0x00) { + Strings_Append((CHAR*)"/", 2, (void*)OPM_ResourceDir, 1024); + Strings_Append(OPM_Model, 10, (void*)OPM_ResourceDir, 1024); + } modules[0] = 0x00; Platform_GetEnv((CHAR*)"MODULES", 8, (void*)modules, 1024); __MOVE(".", searchpath, 2); @@ -766,6 +768,9 @@ void OPM_OldSym (CHAR *modName, ADDRESS modName__len, BOOLEAN *done) { CHAR tag, ver; OPM_FileName fileName; + INT16 res; + OPM_oldSFile = NIL; + *done = 0; OPM_MakeFileName((void*)modName, modName__len, (void*)fileName, 32, (CHAR*)".sym", 5); OPM_oldSFile = Files_Old(fileName, 32); *done = OPM_oldSFile != NIL; @@ -774,7 +779,9 @@ void OPM_OldSym (CHAR *modName, ADDRESS modName__len, BOOLEAN *done) Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&tag); Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&ver); if (tag != 0xf7 || ver != 0x83) { - OPM_err(-306); + if (!__IN(4, OPM_Options, 32)) { + OPM_err(-306); + } OPM_CloseOldSym(); *done = 0; } @@ -818,7 +825,7 @@ void OPM_RegisterNewSym (void) } } -void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len) +void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len) { OPM_FileName fn; INT16 res; diff --git a/bootstrap/unix-88/OPM.h b/bootstrap/unix-88/OPM.h index da0a48ee..51f64007 100644 --- a/bootstrap/unix-88/OPM.h +++ b/bootstrap/unix-88/OPM.h @@ -23,8 +23,8 @@ import CHAR OPM_ResourceDir[1024]; import void OPM_CloseFiles (void); import void OPM_CloseOldSym (void); -import void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len); import void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len); +import void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len); import void OPM_FPrint (INT32 *fp, INT64 val); import void OPM_FPrintLReal (INT32 *fp, LONGREAL val); import void OPM_FPrintReal (INT32 *fp, REAL val); diff --git a/bootstrap/unix-88/OPT.c b/bootstrap/unix-88/OPT.c index 1a106cda..f9c49d00 100644 --- a/bootstrap/unix-88/OPT.c +++ b/bootstrap/unix-88/OPT.c @@ -1493,7 +1493,12 @@ void OPT_Import (OPS_Name aliasName, OPS_Name name, BOOLEAN *done) OPT_impCtxt.nofm = 0; OPT_impCtxt.self = __STRCMP(aliasName, "@self") == 0; OPT_impCtxt.reffp = 0; - OPM_OldSym((void*)name, 256, &*done); + if ((OPT_impCtxt.self && __IN(17, OPM_Options, 32))) { + OPM_DeleteSym((void*)name, 256); + *done = 0; + } else { + OPM_OldSym((void*)name, 256, &*done); + } if (*done) { OPT_InMod(&mno); OPT_InLinks(); @@ -1902,7 +1907,7 @@ void OPT_Export (BOOLEAN *ext, BOOLEAN *new) OPT_newsf = 0; OPT_symNew = 0; if (!OPM_noerr || OPT_findpc) { - OPM_DeleteNewSym((void*)OPT_SelfName, 256); + OPM_DeleteSym((void*)OPT_SelfName, 256); } } } diff --git a/bootstrap/windows-48/Compiler.c b/bootstrap/windows-48/Compiler.c index f26c1a32..ed38ce7b 100644 --- a/bootstrap/windows-48/Compiler.c +++ b/bootstrap/windows-48/Compiler.c @@ -46,7 +46,7 @@ void Compiler_Module (BOOLEAN *done) OPV_Module(p); if (OPM_noerr) { if ((__IN(10, OPM_Options, 32) && __STRCMP(OPM_modName, "SYSTEM") != 0)) { - OPM_DeleteNewSym((void*)OPT_SelfName, 256); + OPM_DeleteSym((void*)OPT_SelfName, 256); OPM_LogVT100((CHAR*)"32m", 4); OPM_LogWStr((CHAR*)" Main program.", 16); OPM_LogVT100((CHAR*)"0m", 3); @@ -62,7 +62,7 @@ void Compiler_Module (BOOLEAN *done) } } } else { - OPM_DeleteNewSym((void*)OPT_SelfName, 256); + OPM_DeleteSym((void*)OPT_SelfName, 256); } } } diff --git a/bootstrap/windows-48/OPM.c b/bootstrap/windows-48/OPM.c index 3411635b..11aa9008 100644 --- a/bootstrap/windows-48/OPM.c +++ b/bootstrap/windows-48/OPM.c @@ -49,8 +49,8 @@ export CHAR OPM_ResourceDir[1024]; static void OPM_Append (Files_Rider *R, ADDRESS *R__typ, Files_File F); export void OPM_CloseFiles (void); export void OPM_CloseOldSym (void); -export void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len); export void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len); +export void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len); export void OPM_FPrint (INT32 *fp, INT64 val); export void OPM_FPrintLReal (INT32 *fp, LONGREAL val); export void OPM_FPrintReal (INT32 *fp, REAL val); @@ -436,8 +436,10 @@ void OPM_InitOptions (void) OPM_VerboseListSizes(); } __MOVE(OPM_InstallDir, OPM_ResourceDir, 1024); - Strings_Append((CHAR*)"/", 2, (void*)OPM_ResourceDir, 1024); - Strings_Append(OPM_Model, 10, (void*)OPM_ResourceDir, 1024); + if (OPM_ResourceDir[0] != 0x00) { + Strings_Append((CHAR*)"/", 2, (void*)OPM_ResourceDir, 1024); + Strings_Append(OPM_Model, 10, (void*)OPM_ResourceDir, 1024); + } modules[0] = 0x00; Platform_GetEnv((CHAR*)"MODULES", 8, (void*)modules, 1024); __MOVE(".", searchpath, 2); @@ -766,6 +768,9 @@ void OPM_OldSym (CHAR *modName, ADDRESS modName__len, BOOLEAN *done) { CHAR tag, ver; OPM_FileName fileName; + INT16 res; + OPM_oldSFile = NIL; + *done = 0; OPM_MakeFileName((void*)modName, modName__len, (void*)fileName, 32, (CHAR*)".sym", 5); OPM_oldSFile = Files_Old(fileName, 32); *done = OPM_oldSFile != NIL; @@ -774,7 +779,9 @@ void OPM_OldSym (CHAR *modName, ADDRESS modName__len, BOOLEAN *done) Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&tag); Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&ver); if (tag != 0xf7 || ver != 0x83) { - OPM_err(-306); + if (!__IN(4, OPM_Options, 32)) { + OPM_err(-306); + } OPM_CloseOldSym(); *done = 0; } @@ -818,7 +825,7 @@ void OPM_RegisterNewSym (void) } } -void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len) +void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len) { OPM_FileName fn; INT16 res; diff --git a/bootstrap/windows-48/OPM.h b/bootstrap/windows-48/OPM.h index da0a48ee..51f64007 100644 --- a/bootstrap/windows-48/OPM.h +++ b/bootstrap/windows-48/OPM.h @@ -23,8 +23,8 @@ import CHAR OPM_ResourceDir[1024]; import void OPM_CloseFiles (void); import void OPM_CloseOldSym (void); -import void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len); import void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len); +import void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len); import void OPM_FPrint (INT32 *fp, INT64 val); import void OPM_FPrintLReal (INT32 *fp, LONGREAL val); import void OPM_FPrintReal (INT32 *fp, REAL val); diff --git a/bootstrap/windows-48/OPT.c b/bootstrap/windows-48/OPT.c index b95c2810..85113943 100644 --- a/bootstrap/windows-48/OPT.c +++ b/bootstrap/windows-48/OPT.c @@ -1493,7 +1493,12 @@ void OPT_Import (OPS_Name aliasName, OPS_Name name, BOOLEAN *done) OPT_impCtxt.nofm = 0; OPT_impCtxt.self = __STRCMP(aliasName, "@self") == 0; OPT_impCtxt.reffp = 0; - OPM_OldSym((void*)name, 256, &*done); + if ((OPT_impCtxt.self && __IN(17, OPM_Options, 32))) { + OPM_DeleteSym((void*)name, 256); + *done = 0; + } else { + OPM_OldSym((void*)name, 256, &*done); + } if (*done) { OPT_InMod(&mno); OPT_InLinks(); @@ -1902,7 +1907,7 @@ void OPT_Export (BOOLEAN *ext, BOOLEAN *new) OPT_newsf = 0; OPT_symNew = 0; if (!OPM_noerr || OPT_findpc) { - OPM_DeleteNewSym((void*)OPT_SelfName, 256); + OPM_DeleteSym((void*)OPT_SelfName, 256); } } } diff --git a/bootstrap/windows-88/Compiler.c b/bootstrap/windows-88/Compiler.c index f26c1a32..ed38ce7b 100644 --- a/bootstrap/windows-88/Compiler.c +++ b/bootstrap/windows-88/Compiler.c @@ -46,7 +46,7 @@ void Compiler_Module (BOOLEAN *done) OPV_Module(p); if (OPM_noerr) { if ((__IN(10, OPM_Options, 32) && __STRCMP(OPM_modName, "SYSTEM") != 0)) { - OPM_DeleteNewSym((void*)OPT_SelfName, 256); + OPM_DeleteSym((void*)OPT_SelfName, 256); OPM_LogVT100((CHAR*)"32m", 4); OPM_LogWStr((CHAR*)" Main program.", 16); OPM_LogVT100((CHAR*)"0m", 3); @@ -62,7 +62,7 @@ void Compiler_Module (BOOLEAN *done) } } } else { - OPM_DeleteNewSym((void*)OPT_SelfName, 256); + OPM_DeleteSym((void*)OPT_SelfName, 256); } } } diff --git a/bootstrap/windows-88/OPM.c b/bootstrap/windows-88/OPM.c index 2bc2c145..874cf058 100644 --- a/bootstrap/windows-88/OPM.c +++ b/bootstrap/windows-88/OPM.c @@ -49,8 +49,8 @@ export CHAR OPM_ResourceDir[1024]; static void OPM_Append (Files_Rider *R, ADDRESS *R__typ, Files_File F); export void OPM_CloseFiles (void); export void OPM_CloseOldSym (void); -export void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len); export void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len); +export void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len); export void OPM_FPrint (INT32 *fp, INT64 val); export void OPM_FPrintLReal (INT32 *fp, LONGREAL val); export void OPM_FPrintReal (INT32 *fp, REAL val); @@ -436,8 +436,10 @@ void OPM_InitOptions (void) OPM_VerboseListSizes(); } __MOVE(OPM_InstallDir, OPM_ResourceDir, 1024); - Strings_Append((CHAR*)"/", 2, (void*)OPM_ResourceDir, 1024); - Strings_Append(OPM_Model, 10, (void*)OPM_ResourceDir, 1024); + if (OPM_ResourceDir[0] != 0x00) { + Strings_Append((CHAR*)"/", 2, (void*)OPM_ResourceDir, 1024); + Strings_Append(OPM_Model, 10, (void*)OPM_ResourceDir, 1024); + } modules[0] = 0x00; Platform_GetEnv((CHAR*)"MODULES", 8, (void*)modules, 1024); __MOVE(".", searchpath, 2); @@ -766,6 +768,9 @@ void OPM_OldSym (CHAR *modName, ADDRESS modName__len, BOOLEAN *done) { CHAR tag, ver; OPM_FileName fileName; + INT16 res; + OPM_oldSFile = NIL; + *done = 0; OPM_MakeFileName((void*)modName, modName__len, (void*)fileName, 32, (CHAR*)".sym", 5); OPM_oldSFile = Files_Old(fileName, 32); *done = OPM_oldSFile != NIL; @@ -774,7 +779,9 @@ void OPM_OldSym (CHAR *modName, ADDRESS modName__len, BOOLEAN *done) Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&tag); Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&ver); if (tag != 0xf7 || ver != 0x83) { - OPM_err(-306); + if (!__IN(4, OPM_Options, 32)) { + OPM_err(-306); + } OPM_CloseOldSym(); *done = 0; } @@ -818,7 +825,7 @@ void OPM_RegisterNewSym (void) } } -void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len) +void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len) { OPM_FileName fn; INT16 res; diff --git a/bootstrap/windows-88/OPM.h b/bootstrap/windows-88/OPM.h index da0a48ee..51f64007 100644 --- a/bootstrap/windows-88/OPM.h +++ b/bootstrap/windows-88/OPM.h @@ -23,8 +23,8 @@ import CHAR OPM_ResourceDir[1024]; import void OPM_CloseFiles (void); import void OPM_CloseOldSym (void); -import void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len); import void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len); +import void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len); import void OPM_FPrint (INT32 *fp, INT64 val); import void OPM_FPrintLReal (INT32 *fp, LONGREAL val); import void OPM_FPrintReal (INT32 *fp, REAL val); diff --git a/bootstrap/windows-88/OPT.c b/bootstrap/windows-88/OPT.c index 1a106cda..f9c49d00 100644 --- a/bootstrap/windows-88/OPT.c +++ b/bootstrap/windows-88/OPT.c @@ -1493,7 +1493,12 @@ void OPT_Import (OPS_Name aliasName, OPS_Name name, BOOLEAN *done) OPT_impCtxt.nofm = 0; OPT_impCtxt.self = __STRCMP(aliasName, "@self") == 0; OPT_impCtxt.reffp = 0; - OPM_OldSym((void*)name, 256, &*done); + if ((OPT_impCtxt.self && __IN(17, OPM_Options, 32))) { + OPM_DeleteSym((void*)name, 256); + *done = 0; + } else { + OPM_OldSym((void*)name, 256, &*done); + } if (*done) { OPT_InMod(&mno); OPT_InLinks(); @@ -1902,7 +1907,7 @@ void OPT_Export (BOOLEAN *ext, BOOLEAN *new) OPT_newsf = 0; OPT_symNew = 0; if (!OPM_noerr || OPT_findpc) { - OPM_DeleteNewSym((void*)OPT_SelfName, 256); + OPM_DeleteSym((void*)OPT_SelfName, 256); } } }