diff --git a/OpenSim/Server/Base/ServerUtils.cs b/OpenSim/Server/Base/ServerUtils.cs index d06d612a2d..d6d3957ce5 100644 --- a/OpenSim/Server/Base/ServerUtils.cs +++ b/OpenSim/Server/Base/ServerUtils.cs @@ -139,8 +139,7 @@ namespace OpenSim.Server.Base if (a.AddinFile.Contains(Registry.DefaultAddinsFolder)) { m_log.InfoFormat("[SERVER]: Adding {0} from registry", a.Name); - connector.PluginPath = String.Format("{0}/{1}", Registry.DefaultAddinsFolder, a.Name.Replace(',', '.')); - } + connector.PluginPath = System.IO.Path.Combine(Registry.DefaultAddinsFolder,a.Name.Replace(',', '.')); } else { m_log.InfoFormat("[SERVER]: Adding {0} from ./bin", a.Name); @@ -216,20 +215,27 @@ namespace OpenSim.Server.Base /// /// The arguments which control which constructor is invoked on the plugin /// - public static T LoadPlugin(string dllName, Object[] args) where T:class - { - // This is good to debug configuration problems - //if (dllName == string.Empty) - // Util.PrintCallStack(); + public static T LoadPlugin (string dllName, Object[] args) where T:class + { + // This is good to debug configuration problems + //if (dllName == string.Empty) + // Util.PrintCallStack(); + + string className = String.Empty; - string[] parts = dllName.Split(new char[] {':'}); + // The path for a dynamic plugin will contain ":" on Windows + string[] parts = dllName.Split (new char[] {':'}); - dllName = parts[0]; - - string className = String.Empty; - - if (parts.Length > 1) - className = parts[1]; + if (parts [0].Length > 1) { + dllName = parts [0]; + if (parts.Length > 1) + className = parts[1]; + } else { + // This is Windows - we must replace the ":" in the path + dllName = String.Format ("{0}:{1}", parts [0], parts [1]); + if (parts.Length > 2) + className = parts[2]; + } return LoadPlugin(dllName, className, args); }