From 9a62bfab0ea6c60ad2ce8b853b3dae95ef57ac69 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Sat, 11 Jun 2011 00:50:20 +0100
Subject: If the flotsam asset cache console command "fcache clear" is
 specified on its own, clear both memory and file caches

---
 .../Region/CoreModules/Asset/FlotsamAssetCache.cs  | 37 +++++++++++++++-------
 1 file changed, 26 insertions(+), 11 deletions(-)

diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
index d9280c6..48ee277 100644
--- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
+++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
@@ -201,7 +201,7 @@ namespace Flotsam.RegionModules.AssetCache
                     }
 
                     MainConsole.Instance.Commands.AddCommand(Name, true, "fcache status", "fcache status", "Display cache status", HandleConsoleCommand);
-                    MainConsole.Instance.Commands.AddCommand(Name, true, "fcache clear",  "fcache clear [file] [memory]", "Remove all assets in the file and/or memory cache", HandleConsoleCommand);
+                    MainConsole.Instance.Commands.AddCommand(Name, true, "fcache clear",  "fcache clear [file] [memory]", "Remove all assets in the cache.  If file or memory is specified then only this cache is cleared.", HandleConsoleCommand);
                     MainConsole.Instance.Commands.AddCommand(Name, true, "fcache assets", "fcache assets", "Attempt a deep scan and cache of all assets in all scenes", HandleConsoleCommand);
                     MainConsole.Instance.Commands.AddCommand(Name, true, "fcache expire", "fcache expire <datetime>", "Purge cached assets older then the specified date/time", HandleConsoleCommand);
                 }
@@ -729,24 +729,39 @@ namespace Flotsam.RegionModules.AssetCache
                         break;
 
                     case "clear":
-                        if (cmdparams.Length < 3)
+                        if (cmdparams.Length < 2)
                         {
-                            m_log.Warn("[FLOTSAM ASSET CACHE] Please specify memory and/or file cache.");
+                            m_log.Warn("[FLOTSAM ASSET CACHE] Usage is fcache clear [file] [memory]");
                             break;
                         }
+
+                        bool clearMemory = false, clearFile = false;
+
+                        if (cmdparams.Length == 2)
+                        {
+                            clearMemory = true;
+                            clearFile = true;
+                        }
                         foreach (string s in cmdparams)
                         {
                             if (s.ToLower() == "memory")
-                            {
-                                m_MemoryCache.Clear();
-                                m_log.Info("[FLOTSAM ASSET CACHE] Memory cache cleared.");
-                            }
+                                clearMemory = true;
                             else if (s.ToLower() == "file")
-                            {
-                                ClearFileCache();
-                                m_log.Info("[FLOTSAM ASSET CACHE] File cache cleared.");
-                            }
+                                clearFile = true;
+                        }
+
+                        if (clearMemory)
+                        {
+                            m_MemoryCache.Clear();
+                            m_log.Info("[FLOTSAM ASSET CACHE] Memory cache cleared.");
                         }
+    
+                        if (clearFile)
+                        {
+                            ClearFileCache();
+                            m_log.Info("[FLOTSAM ASSET CACHE] File cache cleared.");
+                        }
+
                         break;
 
 
-- 
cgit v1.1