diff --git a/src/com/redstoner/modules/logs/LogHandler.java b/src/com/redstoner/modules/logs/LogHandler.java index b7d7c9d..26389ed 100644 --- a/src/com/redstoner/modules/logs/LogHandler.java +++ b/src/com/redstoner/modules/logs/LogHandler.java @@ -8,6 +8,7 @@ import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; +import java.util.regex.Pattern; import java.util.zip.GZIPInputStream; import org.bukkit.command.CommandSender; @@ -61,17 +62,14 @@ public class LogHandler extends Thread regex = "^.*" + regex; if (!regex.endsWith("$")) regex += ".*$"; - boolean singleFile = true; - if (fileName.contains("*")) - singleFile = false; File logFolder = Logs.getLogsDir(); + Pattern fileNamePattern = Pattern.compile(fileName); File[] files = logFolder.listFiles(new FilenameFilter() { - @Override public boolean accept(File dir, String name) { - return name.matches(fileName); + return fileNamePattern.matcher(name).matches(); } }); totalFiles = files.length; @@ -85,6 +83,7 @@ public class LogHandler extends Thread Logs.logger.message(sender, "A total of &e" + totalFiles + "&7 files will be searched!"); boolean progress = (boolean) DataManager.getOrDefault(Utils.getID(sender), "Logs", "progress", true); + Pattern searchPattern = Pattern.compile(regex); for (File file : files) { if (file.getName().endsWith(".gz")) @@ -92,13 +91,13 @@ public class LogHandler extends Thread BufferedReader inputReader = new BufferedReader( new InputStreamReader(new GZIPInputStream(new FileInputStream(file)))); - matches += searchStream(inputReader, regex, sender, singleFile, file.getName()); + matches += searchStream(inputReader, searchPattern, sender, file.getName()); inputReader.close(); } else { BufferedReader inputReader = new BufferedReader(new FileReader(file)); - matches += searchStream(inputReader, regex, sender, singleFile, file.getName()); + matches += searchStream(inputReader, searchPattern, sender, file.getName()); inputReader.close(); } filesSearched++; @@ -137,8 +136,8 @@ public class LogHandler extends Thread * @param filename the name of the file that is currently being searched * @return how many matches it found * @throws IOException if something goes wrong */ - private int searchStream(BufferedReader inputReader, String regex, CommandSender sender, boolean singleFile, - String filename) throws IOException + private int searchStream(BufferedReader inputReader, Pattern searchPattern, CommandSender sender, String filename) + throws IOException { String format = (String) DataManager.getOrDefault(Utils.getID(sender), "Logs", "format", Logs.defaultFormat); boolean colors = (boolean) DataManager.getOrDefault(Utils.getID(sender), "Logs", "colors", true); @@ -152,7 +151,7 @@ public class LogHandler extends Thread { totalLines++; currentLine++; - if (line.matches(regex)) + if (searchPattern.matcher(line).matches()) { if (((p != null) && (!p.isOnline()))) { diff --git a/src/com/redstoner/modules/logs/Logs.java b/src/com/redstoner/modules/logs/Logs.java index bfa96bc..26523cc 100644 --- a/src/com/redstoner/modules/logs/Logs.java +++ b/src/com/redstoner/modules/logs/Logs.java @@ -15,7 +15,7 @@ import com.redstoner.modules.ModuleLogger; import com.redstoner.modules.datamanager.DataManager; @Commands(CommandHolderType.File) -@Version(major = 4, minor = 0, revision = 2, compatible = 4) +@Version(major = 4, minor = 0, revision = 3, compatible = 4) public class Logs implements Module { public static final String defaultFormat = "ยง7 > %f: %r";