#REFACTORING by cg
authorClaus Gittinger <cg@exept.de>
Tue, 11 Oct 2016 17:50:50 +0200
changeset 4010 d9ce3f4aabe2
parent 4008 21b0132a3925
child 4011 0d24f003c0e9
#REFACTORING by cg class: ObjectFileLoader changed: #binaryClassFilenameForPackage:inDirectory: class lib searching refactored; if an explicit dir is given, do NOT search in binDir (which it did).
ObjectFileLoader.st
--- a/ObjectFileLoader.st	Tue Oct 11 01:47:04 2016 +0200
+++ b/ObjectFileLoader.st	Tue Oct 11 17:50:50 2016 +0200
@@ -3752,58 +3752,48 @@
 !ObjectFileLoader class methodsFor:'queries'!
 
 binaryClassFilenameForPackage:aPackageId inDirectory:packageDirOrNil
-    |shLibName exeDir binaryClassLibraryFilename|
+    |tryAction shLibName exePath exeDir|
 
     "Is there a shared library (.dll or .so) ?"
     shLibName := aPackageId asPackageId libraryName asFilename
-			withSuffix:self sharedLibrarySuffix.
-
-    exeDir := OperatingSystem pathOfSTXExecutable asFilename directory.
-    binaryClassLibraryFilename := exeDir / shLibName.
-    binaryClassLibraryFilename exists ifFalse:[
-	exeDir baseName = 'bin' ifTrue:[
-	    binaryClassLibraryFilename := exeDir directory / 'lib' / shLibName.
-	].
-	binaryClassLibraryFilename exists ifFalse:[
-	    binaryClassLibraryFilename := exeDir directory / 'plugin' / shLibName.
-	    binaryClassLibraryFilename exists ifFalse:[
-"/                binaryClassLibraryFilename := Filename currentDirectory / shLibName.
-"/                binaryClassLibraryFilename exists ifFalse:[
-		    packageDirOrNil notNil ifTrue:[
-			binaryClassLibraryFilename := packageDirOrNil / shLibName.
-			binaryClassLibraryFilename exists ifFalse:[
-			    "/ mhmh - is this a good idea ? (temporary kludge)
-			    ExternalAddress pointerSize == 4 ifTrue:[
-				binaryClassLibraryFilename := packageDirOrNil / 'objbc' / shLibName.
-				binaryClassLibraryFilename exists ifFalse:[
-				    binaryClassLibraryFilename := packageDirOrNil / 'objvc' / shLibName.
-				]
-			    ] ifFalse:[
-				binaryClassLibraryFilename := packageDirOrNil / 'objmingw' / shLibName.
-			    ].
-			]
-		    ]
-"/                ].
-	    ].
-	].
-	packageDirOrNil notNil ifTrue:[
-	    binaryClassLibraryFilename exists ifFalse:[
-		"/ look in package directory
-		binaryClassLibraryFilename := packageDirOrNil / shLibName.
-		binaryClassLibraryFilename exists ifFalse:[
-		    ExternalAddress pointerSize == 4 ifTrue:[
-			binaryClassLibraryFilename := packageDirOrNil / 'objbc' / shLibName.
-			binaryClassLibraryFilename exists ifFalse:[
-			    binaryClassLibraryFilename := packageDirOrNil / 'objvc' / shLibName.
-			]
-		    ] ifFalse:[
-			binaryClassLibraryFilename := packageDirOrNil / 'objmingw' / shLibName.
-		    ].
-		].
-	    ].
-	].
+                        withSuffix:(self sharedLibrarySuffix).
+
+    tryAction :=
+        [:dir |
+            |binaryClassLibraryFilename|
+            
+            binaryClassLibraryFilename := dir / shLibName.
+            binaryClassLibraryFilename exists ifFalse:[
+                "/ mhmh - is this a good idea ? (temporary kludge)
+                ExternalAddress pointerSize == 4 ifTrue:[
+                    binaryClassLibraryFilename := dir / 'objbc' / shLibName.
+                    binaryClassLibraryFilename exists ifFalse:[
+                        binaryClassLibraryFilename := dir / 'objvc' / shLibName.
+                    ]
+                ] ifFalse:[
+                    binaryClassLibraryFilename := dir / 'objmingw' / shLibName.
+                ].
+            ].
+            (binaryClassLibraryFilename notNil and:[binaryClassLibraryFilename exists]) ifTrue:[
+                ^ binaryClassLibraryFilename
+            ].    
+        ].
+        
+    packageDirOrNil notNil ifTrue:[
+        tryAction value:packageDirOrNil.
+        ^ nil
     ].
-    ^ binaryClassLibraryFilename
+    
+    exePath := OperatingSystem pathOfSTXExecutable.
+    exePath notNil ifTrue:[
+        exeDir := exePath asFilename directory.
+        tryAction value:exeDir.
+        exeDir baseName = 'bin' ifTrue:[
+            tryAction value:(exeDir directory / 'lib').
+        ].
+        tryAction value:(exeDir directory / 'plugin').
+    ].
+    ^ nil
 !
 
 canLoadObjectFiles