diff options
Diffstat (limited to 'OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs')
-rw-r--r-- | OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs index 883ed5e..2e0d1a3 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs | |||
@@ -107,19 +107,25 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
107 | LanguageMapping.Add(enumCompileType.lsl.ToString(), enumCompileType.lsl); | 107 | LanguageMapping.Add(enumCompileType.lsl.ToString(), enumCompileType.lsl); |
108 | 108 | ||
109 | // Allowed compilers | 109 | // Allowed compilers |
110 | string allowedCompilers = m_scriptEngine.ScriptConfigSource.GetString("AllowedCompilers", "lsl;cs;vb"); | 110 | string allowComp = m_scriptEngine.ScriptConfigSource.GetString("AllowedCompilers", "lsl;cs;vb"); |
111 | AllowedCompilers.Clear(); | 111 | AllowedCompilers.Clear(); |
112 | foreach (string strl in allowedCompilers.Split(';')) | 112 | |
113 | #if DEBUG | ||
114 | m_scriptEngine.Log.Debug(m_scriptEngine.ScriptEngineName, "Allowed languages: " + allowComp); | ||
115 | #endif | ||
116 | |||
117 | |||
118 | foreach (string strl in allowComp.Split(';')) | ||
113 | { | 119 | { |
114 | string strlan = strl.Trim(" \t".ToCharArray()).ToLower(); | 120 | string strlan = strl.Trim(" \t".ToCharArray()).ToLower(); |
115 | if (!LanguageMapping.ContainsKey(strlan)) | 121 | if (!LanguageMapping.ContainsKey(strlan)) |
116 | { | 122 | { |
117 | m_scriptEngine.Log.Error(m_scriptEngine.ScriptEngineName, "Config error. Compiler is unable to recongnize language type \"" + strl + "\" specified in \"AllowedCompilers\"."); | 123 | m_scriptEngine.Log.Error(m_scriptEngine.ScriptEngineName, "Config error. Compiler is unable to recongnize language type \"" + strlan + "\" specified in \"AllowedCompilers\"."); |
118 | } | 124 | } |
119 | else | 125 | else |
120 | { | 126 | { |
121 | #if DEBUG | 127 | #if DEBUG |
122 | m_scriptEngine.Log.Debug(m_scriptEngine.ScriptEngineName, "Config OK. Compiler recongnized language type \"" + strl + "\" specified in \"AllowedCompilers\"."); | 128 | m_scriptEngine.Log.Debug(m_scriptEngine.ScriptEngineName, "Config OK. Compiler recongnized language type \"" + strlan + "\" specified in \"AllowedCompilers\"."); |
123 | #endif | 129 | #endif |
124 | } | 130 | } |
125 | AllowedCompilers.Add(strlan, true); | 131 | AllowedCompilers.Add(strlan, true); |
@@ -228,19 +234,25 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
228 | if (Script.StartsWith("//c#", true, CultureInfo.InvariantCulture)) | 234 | if (Script.StartsWith("//c#", true, CultureInfo.InvariantCulture)) |
229 | l = enumCompileType.cs; | 235 | l = enumCompileType.cs; |
230 | if (Script.StartsWith("//vb", true, CultureInfo.InvariantCulture)) | 236 | if (Script.StartsWith("//vb", true, CultureInfo.InvariantCulture)) |
237 | { | ||
231 | l = enumCompileType.vb; | 238 | l = enumCompileType.vb; |
239 | // We need to remove //vb, it won't compile with that | ||
240 | |||
241 | Script = Script.Substring(4, Script.Length - 4); | ||
242 | } | ||
232 | if (Script.StartsWith("//lsl", true, CultureInfo.InvariantCulture)) | 243 | if (Script.StartsWith("//lsl", true, CultureInfo.InvariantCulture)) |
233 | l = enumCompileType.lsl; | 244 | l = enumCompileType.lsl; |
234 | 245 | ||
246 | |||
235 | if (!AllowedCompilers.ContainsKey(l.ToString())) | 247 | if (!AllowedCompilers.ContainsKey(l.ToString())) |
236 | { | 248 | { |
237 | // Not allowed to compile to this language! | 249 | // Not allowed to compile to this language! |
238 | string errtext = String.Empty; | 250 | string errtext = String.Empty; |
239 | errtext += "The compiler for language \"" + l.ToString() + "\" is not in list of allowed compilers. Script will not be executed!"; | 251 | errtext += "The compiler for language \"" + l.ToString() + "\" is not in list of allowed compilers. Script will not be executed!"; |
240 | throw new Exception(errtext); | 252 | //throw new Exception(errtext); |
241 | } | 253 | } |
242 | 254 | ||
243 | string compileScript; | 255 | string compileScript = Script; |
244 | 256 | ||
245 | if (l == enumCompileType.lsl) | 257 | if (l == enumCompileType.lsl) |
246 | { | 258 | { |
@@ -257,7 +269,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
257 | String.Empty + "namespace SecondLife { " + | 269 | String.Empty + "namespace SecondLife { " + |
258 | String.Empty + "public class Script : OpenSim.Region.ScriptEngine.Common.LSL_BaseClass { " + | 270 | String.Empty + "public class Script : OpenSim.Region.ScriptEngine.Common.LSL_BaseClass { " + |
259 | @"public Script() { } " + | 271 | @"public Script() { } " + |
260 | Script + | 272 | compileScript + |
261 | "} }\r\n"; | 273 | "} }\r\n"; |
262 | break; | 274 | break; |
263 | case enumCompileType.vb: | 275 | case enumCompileType.vb: |
@@ -266,7 +278,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
266 | String.Empty + "NameSpace SecondLife { " + | 278 | String.Empty + "NameSpace SecondLife { " + |
267 | String.Empty + "Public Class Script: Inherits OpenSim.Region.ScriptEngine.Common.LSL_BaseClass: " + | 279 | String.Empty + "Public Class Script: Inherits OpenSim.Region.ScriptEngine.Common.LSL_BaseClass: " + |
268 | @"Public Sub New(): End Sub: " + | 280 | @"Public Sub New(): End Sub: " + |
269 | Script + | 281 | compileScript + |
270 | ":End Class :End Namespace\r\n"; | 282 | ":End Class :End Namespace\r\n"; |
271 | break; | 283 | break; |
272 | } | 284 | } |