diff options
Diffstat (limited to 'OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL')
-rw-r--r-- | OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs | 54 |
1 files changed, 46 insertions, 8 deletions
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs index b919f22..883ed5e 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs | |||
@@ -81,6 +81,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
81 | public bool in_startup = true; | 81 | public bool in_startup = true; |
82 | public void ReadConfig() | 82 | public void ReadConfig() |
83 | { | 83 | { |
84 | |||
85 | // Get some config | ||
84 | WriteScriptSourceToDebugFile = m_scriptEngine.ScriptConfigSource.GetBoolean("WriteScriptSourceToDebugFile", true); | 86 | WriteScriptSourceToDebugFile = m_scriptEngine.ScriptConfigSource.GetBoolean("WriteScriptSourceToDebugFile", true); |
85 | CompileWithDebugInformation = m_scriptEngine.ScriptConfigSource.GetBoolean("CompileWithDebugInformation", true); | 87 | CompileWithDebugInformation = m_scriptEngine.ScriptConfigSource.GetBoolean("CompileWithDebugInformation", true); |
86 | CleanUpOldScriptsOnStartup = m_scriptEngine.ScriptConfigSource.GetBoolean("CleanUpOldScriptsOnStartup", true); | 88 | CleanUpOldScriptsOnStartup = m_scriptEngine.ScriptConfigSource.GetBoolean("CleanUpOldScriptsOnStartup", true); |
@@ -91,16 +93,18 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
91 | { | 93 | { |
92 | FilePrefix = FilePrefix.Replace(c, '_'); | 94 | FilePrefix = FilePrefix.Replace(c, '_'); |
93 | } | 95 | } |
94 | // First time we start? | 96 | |
97 | // First time we start? Delete old files | ||
95 | if (in_startup) | 98 | if (in_startup) |
96 | { | 99 | { |
97 | in_startup = false; | 100 | in_startup = false; |
98 | DeleteOldFiles(); | 101 | DeleteOldFiles(); |
99 | } | 102 | } |
100 | 103 | ||
101 | LanguageMapping.Add("cs", enumCompileType.cs); | 104 | // Map name and enum type of our supported languages |
102 | LanguageMapping.Add("vb", enumCompileType.vb); | 105 | LanguageMapping.Add(enumCompileType.cs.ToString(), enumCompileType.cs); |
103 | LanguageMapping.Add("lsl", enumCompileType.lsl); | 106 | LanguageMapping.Add(enumCompileType.vb.ToString(), enumCompileType.vb); |
107 | LanguageMapping.Add(enumCompileType.lsl.ToString(), enumCompileType.lsl); | ||
104 | 108 | ||
105 | // Allowed compilers | 109 | // Allowed compilers |
106 | string allowedCompilers = m_scriptEngine.ScriptConfigSource.GetString("AllowedCompilers", "lsl;cs;vb"); | 110 | string allowedCompilers = m_scriptEngine.ScriptConfigSource.GetString("AllowedCompilers", "lsl;cs;vb"); |
@@ -112,6 +116,12 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
112 | { | 116 | { |
113 | m_scriptEngine.Log.Error(m_scriptEngine.ScriptEngineName, "Config error. Compiler is unable to recongnize language type \"" + strl + "\" specified in \"AllowedCompilers\"."); | 117 | m_scriptEngine.Log.Error(m_scriptEngine.ScriptEngineName, "Config error. Compiler is unable to recongnize language type \"" + strl + "\" specified in \"AllowedCompilers\"."); |
114 | } | 118 | } |
119 | else | ||
120 | { | ||
121 | #if DEBUG | ||
122 | m_scriptEngine.Log.Debug(m_scriptEngine.ScriptEngineName, "Config OK. Compiler recongnized language type \"" + strl + "\" specified in \"AllowedCompilers\"."); | ||
123 | #endif | ||
124 | } | ||
115 | AllowedCompilers.Add(strlan, true); | 125 | AllowedCompilers.Add(strlan, true); |
116 | } | 126 | } |
117 | if (AllowedCompilers.Count == 0) | 127 | if (AllowedCompilers.Count == 0) |
@@ -122,7 +132,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
122 | 132 | ||
123 | // Is this language recognized at all? | 133 | // Is this language recognized at all? |
124 | if (!LanguageMapping.ContainsKey(defaultCompileLanguage)) | 134 | if (!LanguageMapping.ContainsKey(defaultCompileLanguage)) |
125 | m_scriptEngine.Log.Error(m_scriptEngine.ScriptEngineName, "Config error. Default language specified in \"DefaultCompileLanguage\" is not recognized as a valid language. Scripts may not be executed!"); | 135 | { |
136 | m_scriptEngine.Log.Error(m_scriptEngine.ScriptEngineName, | ||
137 | "Config error. Default language \"" + defaultCompileLanguage + "\" specified in \"DefaultCompileLanguage\" is not recognized as a valid language. Changing default to: \"lsl\"."); | ||
138 | defaultCompileLanguage = "lsl"; | ||
139 | } | ||
126 | 140 | ||
127 | // Is this language in allow-list? | 141 | // Is this language in allow-list? |
128 | if (!AllowedCompilers.ContainsKey(defaultCompileLanguage)) | 142 | if (!AllowedCompilers.ContainsKey(defaultCompileLanguage)) |
@@ -132,6 +146,10 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
132 | } | 146 | } |
133 | else | 147 | else |
134 | { | 148 | { |
149 | #if DEBUG | ||
150 | m_scriptEngine.Log.Debug(m_scriptEngine.ScriptEngineName, | ||
151 | "Config OK. Default language \"" + defaultCompileLanguage + "\" specified in \"DefaultCompileLanguage\" is recognized as a valid language."); | ||
152 | #endif | ||
135 | // LANGUAGE IS IN ALLOW-LIST | 153 | // LANGUAGE IS IN ALLOW-LIST |
136 | DefaultCompileLanguage = LanguageMapping[defaultCompileLanguage]; | 154 | DefaultCompileLanguage = LanguageMapping[defaultCompileLanguage]; |
137 | } | 155 | } |
@@ -140,6 +158,9 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
140 | 158 | ||
141 | } | 159 | } |
142 | 160 | ||
161 | /// <summary> | ||
162 | /// Delete old script files | ||
163 | /// </summary> | ||
143 | private void DeleteOldFiles() | 164 | private void DeleteOldFiles() |
144 | { | 165 | { |
145 | 166 | ||
@@ -227,10 +248,27 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
227 | compileScript = LSL_Converter.Convert(Script); | 248 | compileScript = LSL_Converter.Convert(Script); |
228 | l = enumCompileType.cs; | 249 | l = enumCompileType.cs; |
229 | } | 250 | } |
230 | else | 251 | |
252 | switch (l) | ||
231 | { | 253 | { |
232 | // We don't need to convert | 254 | case enumCompileType.cs: |
233 | compileScript = Script; | 255 | compileScript = String.Empty + |
256 | "using OpenSim.Region.ScriptEngine.Common; using System.Collections.Generic;" + | ||
257 | String.Empty + "namespace SecondLife { " + | ||
258 | String.Empty + "public class Script : OpenSim.Region.ScriptEngine.Common.LSL_BaseClass { " + | ||
259 | @"public Script() { } " + | ||
260 | Script + | ||
261 | "} }\r\n"; | ||
262 | break; | ||
263 | case enumCompileType.vb: | ||
264 | compileScript = String.Empty + | ||
265 | "Imports OpenSim.Region.ScriptEngine.Common: Imports System.Collections.Generic: " + | ||
266 | String.Empty + "NameSpace SecondLife { " + | ||
267 | String.Empty + "Public Class Script: Inherits OpenSim.Region.ScriptEngine.Common.LSL_BaseClass: " + | ||
268 | @"Public Sub New(): End Sub: " + | ||
269 | Script + | ||
270 | ":End Class :End Namespace\r\n"; | ||
271 | break; | ||
234 | } | 272 | } |
235 | return CompileFromCSorVBText(Script, l); | 273 | return CompileFromCSorVBText(Script, l); |
236 | } | 274 | } |