Add RegEx to File Selection

This commit is contained in:
ME1312 2020-06-13 23:23:06 -04:00
parent 9d01f46c16
commit 3fc249cf07
No known key found for this signature in database
GPG Key ID: FEFFE2F698E88FA8
2 changed files with 158 additions and 106 deletions

View File

@ -50,12 +50,32 @@ public class ReplacementScanner {
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
throw new IllegalStateException("Cannot access zipsearch()", e);
}
if (files.size() <= 0 || whitelist.length <= 0)
return;
boolean csfs = false;
{
long stamp = Math.round(Math.random() * 100000);
File test1 = new File(dir, '.' + stamp + ".ss_fsc");
File test2 = new File(dir, '.' + stamp + ".SS_FSC");
test1.createNewFile();
if (test2.createNewFile()) {
csfs = true;
test2.delete();
}
test1.delete();
}
LinkedHashMap<Pattern, Boolean> rules = new LinkedHashMap<Pattern, Boolean>();
for (String entry : whitelist) {
boolean mode = !entry.startsWith("!");
if (!mode) entry = entry.substring(1);
if (entry.startsWith(".")) entry = entry.substring(1);
String pattern;
if (!entry.startsWith("%")) {
if (entry.startsWith("./"))
entry = entry.substring(1);
StringBuilder rule = new StringBuilder();
if (entry.startsWith("**")) {
@ -113,7 +133,13 @@ public class ReplacementScanner {
if (greedyEnding)
rule.append(".*");
rule.append("$");
rules.put(Pattern.compile(rule.toString()), mode);
pattern = rule.toString();
} else {
pattern = entry.substring(1);
}
if (csfs) rules.put(Pattern.compile(pattern), mode);
else rules.put(Pattern.compile(pattern, Pattern.CASE_INSENSITIVE), mode);
}
for (String file : files) {

View File

@ -50,12 +50,32 @@ public class ReplacementScanner {
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
throw new IllegalStateException("Cannot access zipsearch()", e);
}
if (files.size() <= 0 || whitelist.length <= 0)
return;
boolean csfs = false;
{
long stamp = Math.round(Math.random() * 100000);
File test1 = new File(dir, '.' + stamp + ".ss_fsc");
File test2 = new File(dir, '.' + stamp + ".SS_FSC");
test1.createNewFile();
if (test2.createNewFile()) {
csfs = true;
test2.delete();
}
test1.delete();
}
LinkedHashMap<Pattern, Boolean> rules = new LinkedHashMap<Pattern, Boolean>();
for (String entry : whitelist) {
boolean mode = !entry.startsWith("!");
if (!mode) entry = entry.substring(1);
if (entry.startsWith(".")) entry = entry.substring(1);
String pattern;
if (!entry.startsWith("%")) {
if (entry.startsWith("./"))
entry = entry.substring(1);
StringBuilder rule = new StringBuilder();
if (entry.startsWith("**")) {
@ -113,7 +133,13 @@ public class ReplacementScanner {
if (greedyEnding)
rule.append(".*");
rule.append("$");
rules.put(Pattern.compile(rule.toString()), mode);
pattern = rule.toString();
} else {
pattern = entry.substring(1);
}
if (csfs) rules.put(Pattern.compile(pattern), mode);
else rules.put(Pattern.compile(pattern, Pattern.CASE_INSENSITIVE), mode);
}
for (String file : files) {