diff options
-rw-r--r-- | OpenSim/Framework/Communications/Capabilities/Caps.cs | 2 | ||||
-rw-r--r-- | OpenSim/Framework/Util.cs | 81 |
2 files changed, 56 insertions, 27 deletions
diff --git a/OpenSim/Framework/Communications/Capabilities/Caps.cs b/OpenSim/Framework/Communications/Capabilities/Caps.cs index 8f41d62..5df6a06 100644 --- a/OpenSim/Framework/Communications/Capabilities/Caps.cs +++ b/OpenSim/Framework/Communications/Capabilities/Caps.cs | |||
@@ -553,7 +553,7 @@ namespace OpenSim.Region.Capabilities | |||
553 | { | 553 | { |
554 | Directory.CreateDirectory(assetPath); | 554 | Directory.CreateDirectory(assetPath); |
555 | } | 555 | } |
556 | FileStream fs = File.Create(Path.Combine(assetPath, filename)); | 556 | FileStream fs = File.Create(Path.Combine(assetPath, Util.safeFileName(filename))); |
557 | BinaryWriter bw = new BinaryWriter(fs); | 557 | BinaryWriter bw = new BinaryWriter(fs); |
558 | bw.Write(data); | 558 | bw.Write(data); |
559 | bw.Close(); | 559 | bw.Close(); |
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index 8ba6643..847436f 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs | |||
@@ -37,8 +37,8 @@ using System.Text; | |||
37 | using libsecondlife; | 37 | using libsecondlife; |
38 | using Nini.Config; | 38 | using Nini.Config; |
39 | 39 | ||
40 | using System.Runtime.Serialization; | 40 | using System.Runtime.Serialization; |
41 | using System.Runtime.Serialization.Formatters.Binary; | 41 | using System.Runtime.Serialization.Formatters.Binary; |
42 | namespace OpenSim.Framework | 42 | namespace OpenSim.Framework |
43 | { | 43 | { |
44 | public class Util | 44 | public class Util |
@@ -48,7 +48,13 @@ namespace OpenSim.Framework | |||
48 | private static object XferLock = new object(); | 48 | private static object XferLock = new object(); |
49 | private static Dictionary<LLUUID, string> capsURLS = new Dictionary<LLUUID, string>(); | 49 | private static Dictionary<LLUUID, string> capsURLS = new Dictionary<LLUUID, string>(); |
50 | 50 | ||
51 | #region Vector Equasions | 51 | // Get a list of invalid path characters (OS dependent) |
52 | private static string regexInvalidPathChars = "[" + new String(Path.GetInvalidPathChars()) + "]"; | ||
53 | // Get a list of invalid file characters (OS dependent) | ||
54 | private static string regexInvalidFileChars = "[" + new String(Path.GetInvalidFileNameChars()) + "]"; | ||
55 | |||
56 | |||
57 | #region Vector Equasions | ||
52 | /// <summary> | 58 | /// <summary> |
53 | /// Get the distance between two 3d vectors | 59 | /// Get the distance between two 3d vectors |
54 | /// </summary> | 60 | /// </summary> |
@@ -60,7 +66,7 @@ namespace OpenSim.Framework | |||
60 | float dx = a.X - b.X; | 66 | float dx = a.X - b.X; |
61 | float dy = a.Y - b.Y; | 67 | float dy = a.Y - b.Y; |
62 | float dz = a.Z - b.Z; | 68 | float dz = a.Z - b.Z; |
63 | return Math.Sqrt(dx*dx + dy*dy + dz*dz); | 69 | return Math.Sqrt(dx * dx + dy * dy + dz * dz); |
64 | } | 70 | } |
65 | 71 | ||
66 | /// <summary> | 72 | /// <summary> |
@@ -68,7 +74,8 @@ namespace OpenSim.Framework | |||
68 | /// </summary> | 74 | /// </summary> |
69 | /// <param name="a">A 3d vector</param> | 75 | /// <param name="a">A 3d vector</param> |
70 | /// <returns>The magnitude of the vector</returns> | 76 | /// <returns>The magnitude of the vector</returns> |
71 | public static double GetMagnitude(LLVector3 a) { | 77 | public static double GetMagnitude(LLVector3 a) |
78 | { | ||
72 | return Math.Sqrt((a.X * a.X) + (a.Y * a.Y) + (a.Z * a.Z)); | 79 | return Math.Sqrt((a.X * a.X) + (a.Y * a.Y) + (a.Z * a.Z)); |
73 | } | 80 | } |
74 | 81 | ||
@@ -91,16 +98,16 @@ namespace OpenSim.Framework | |||
91 | /// Returns if a vector is a zero vector (has all zero components) | 98 | /// Returns if a vector is a zero vector (has all zero components) |
92 | /// </summary> | 99 | /// </summary> |
93 | /// <returns></returns> | 100 | /// <returns></returns> |
94 | public static bool IsZeroVector( LLVector3 v ) | 101 | public static bool IsZeroVector(LLVector3 v) |
95 | { | 102 | { |
96 | if( v.X == 0 && v.Y == 0 && v.Z == 0) | 103 | if (v.X == 0 && v.Y == 0 && v.Z == 0) |
97 | { | 104 | { |
98 | return true; | 105 | return true; |
99 | } | 106 | } |
100 | 107 | ||
101 | return false; | 108 | return false; |
102 | } | 109 | } |
103 | # endregion | 110 | # endregion |
104 | 111 | ||
105 | public static ulong UIntsToLong(uint X, uint Y) | 112 | public static ulong UIntsToLong(uint X, uint Y) |
106 | { | 113 | { |
@@ -299,7 +306,7 @@ namespace OpenSim.Framework | |||
299 | for (int j = 0; j < 16 && (i + j) < bytes.Length; j++) | 306 | for (int j = 0; j < 16 && (i + j) < bytes.Length; j++) |
300 | { | 307 | { |
301 | if (bytes[i + j] >= 0x20 && bytes[i + j] < 0x7E) | 308 | if (bytes[i + j] >= 0x20 && bytes[i + j] < 0x7E) |
302 | output.Append((char) bytes[i + j]); | 309 | output.Append((char)bytes[i + j]); |
303 | else | 310 | else |
304 | output.Append("."); | 311 | output.Append("."); |
305 | } | 312 | } |
@@ -358,6 +365,28 @@ namespace OpenSim.Framework | |||
358 | return null; | 365 | return null; |
359 | } | 366 | } |
360 | 367 | ||
368 | /// <summary> | ||
369 | /// Removes all invalid path chars (OS dependent) | ||
370 | /// </summary> | ||
371 | /// <param name="path">path</param> | ||
372 | /// <returns>safe path</returns> | ||
373 | public static string safePath(string path) | ||
374 | { | ||
375 | return System.Text.RegularExpressions.Regex.Replace(path, @regexInvalidPathChars, string.Empty); | ||
376 | } | ||
377 | |||
378 | /// <summary> | ||
379 | /// Removes all invalid filename chars (OS dependent) | ||
380 | /// </summary> | ||
381 | /// <param name="path">filename</param> | ||
382 | /// <returns>safe filename</returns> | ||
383 | public static string safeFileName(string filename) | ||
384 | { | ||
385 | return System.Text.RegularExpressions.Regex.Replace(filename, @regexInvalidFileChars, string.Empty); ; | ||
386 | } | ||
387 | |||
388 | |||
389 | |||
361 | // | 390 | // |
362 | // directory locations | 391 | // directory locations |
363 | // | 392 | // |
@@ -365,12 +394,12 @@ namespace OpenSim.Framework | |||
365 | public static string homeDir() | 394 | public static string homeDir() |
366 | { | 395 | { |
367 | string temp; | 396 | string temp; |
368 | // string personal=(Environment.GetFolderPath(Environment.SpecialFolder.Personal)); | 397 | // string personal=(Environment.GetFolderPath(Environment.SpecialFolder.Personal)); |
369 | // temp = Path.Combine(personal,".OpenSim"); | 398 | // temp = Path.Combine(personal,".OpenSim"); |
370 | temp = "."; | 399 | temp = "."; |
371 | return temp; | 400 | return temp; |
372 | } | 401 | } |
373 | 402 | ||
374 | public static string assetsDir() | 403 | public static string assetsDir() |
375 | { | 404 | { |
376 | return Path.Combine(configDir(), "assets"); | 405 | return Path.Combine(configDir(), "assets"); |
@@ -439,10 +468,10 @@ namespace OpenSim.Framework | |||
439 | 468 | ||
440 | public static void AddDataRowToConfig(IConfigSource config, DataRow row) | 469 | public static void AddDataRowToConfig(IConfigSource config, DataRow row) |
441 | { | 470 | { |
442 | config.Configs.Add((string) row[0]); | 471 | config.Configs.Add((string)row[0]); |
443 | for (int i = 0; i < row.Table.Columns.Count; i++) | 472 | for (int i = 0; i < row.Table.Columns.Count; i++) |
444 | { | 473 | { |
445 | config.Configs[(string) row[0]].Set(row.Table.Columns[i].ColumnName, row[i]); | 474 | config.Configs[(string)row[0]].Set(row.Table.Columns[i].ColumnName, row[i]); |
446 | } | 475 | } |
447 | } | 476 | } |
448 | 477 | ||
@@ -468,25 +497,25 @@ namespace OpenSim.Framework | |||
468 | 497 | ||
469 | public static string CleanString(string input) | 498 | public static string CleanString(string input) |
470 | { | 499 | { |
471 | if(input.Length == 0) | 500 | if (input.Length == 0) |
472 | return input; | 501 | return input; |
473 | 502 | ||
474 | int clip=input.Length; | 503 | int clip = input.Length; |
475 | 504 | ||
476 | // Test for ++ string terminator | 505 | // Test for ++ string terminator |
477 | int pos=input.IndexOf("\0"); | 506 | int pos = input.IndexOf("\0"); |
478 | if(pos != -1 && pos < clip) | 507 | if (pos != -1 && pos < clip) |
479 | clip=pos; | 508 | clip = pos; |
480 | 509 | ||
481 | // Test for CR | 510 | // Test for CR |
482 | pos=input.IndexOf("\r"); | 511 | pos = input.IndexOf("\r"); |
483 | if(pos != -1 && pos < clip) | 512 | if (pos != -1 && pos < clip) |
484 | clip=pos; | 513 | clip = pos; |
485 | 514 | ||
486 | // Test for LF | 515 | // Test for LF |
487 | pos=input.IndexOf("\n"); | 516 | pos = input.IndexOf("\n"); |
488 | if(pos != -1 && pos < clip) | 517 | if (pos != -1 && pos < clip) |
489 | clip=pos; | 518 | clip = pos; |
490 | 519 | ||
491 | // Truncate string before first end-of-line character found | 520 | // Truncate string before first end-of-line character found |
492 | return input.Substring(0, clip); | 521 | return input.Substring(0, clip); |