Title: [213768] trunk/Source/_javascript_Core
- Revision
- 213768
- Author
- [email protected]
- Date
- 2017-03-11 22:27:49 -0800 (Sat, 11 Mar 2017)
Log Message
Allow regular expressions to be used when selecting a process name in JSC config file
https://bugs.webkit.org/show_bug.cgi?id=169495
Reviewed by Saam Barati.
Only added regular _expression_ selectors for unix like platforms.
* runtime/ConfigFile.cpp:
(JSC::ConfigFileScanner::tryConsumeRegExPattern):
(JSC::ConfigFile::parse):
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (213767 => 213768)
--- trunk/Source/_javascript_Core/ChangeLog 2017-03-12 06:21:05 UTC (rev 213767)
+++ trunk/Source/_javascript_Core/ChangeLog 2017-03-12 06:27:49 UTC (rev 213768)
@@ -1,3 +1,16 @@
+2017-03-11 Michael Saboff <[email protected]>
+
+ Allow regular expressions to be used when selecting a process name in JSC config file
+ https://bugs.webkit.org/show_bug.cgi?id=169495
+
+ Reviewed by Saam Barati.
+
+ Only added regular _expression_ selectors for unix like platforms.
+
+ * runtime/ConfigFile.cpp:
+ (JSC::ConfigFileScanner::tryConsumeRegExPattern):
+ (JSC::ConfigFile::parse):
+
2017-03-11 Jon Lee <[email protected]>
WebGPU prototype - Front-End
Modified: trunk/Source/_javascript_Core/runtime/ConfigFile.cpp (213767 => 213768)
--- trunk/Source/_javascript_Core/runtime/ConfigFile.cpp 2017-03-12 06:21:05 UTC (rev 213767)
+++ trunk/Source/_javascript_Core/runtime/ConfigFile.cpp 2017-03-12 06:27:49 UTC (rev 213768)
@@ -37,6 +37,7 @@
#include <wtf/text/StringBuilder.h>
#if OS(UNIX) || OS(DARWIN)
+#include <regex.h>
#include <unistd.h>
#endif
@@ -136,6 +137,32 @@
return nullptr;
}
+ char* tryConsumeRegExPattern(bool& ignoreCase)
+ {
+ if (!fillBufferIfNeeded())
+ return nullptr;
+
+ if (*m_srcPtr != '/')
+ return nullptr;
+
+ char* stringStart = m_srcPtr + 1;
+
+ char* stringEnd = strchr(stringStart, '/');
+ if (stringEnd) {
+ *stringEnd = '\0';
+ m_srcPtr = stringEnd + 1;
+ if (*m_srcPtr == 'i') {
+ ignoreCase = true;
+ m_srcPtr++;
+ } else
+ ignoreCase = false;
+
+ return stringStart;
+ }
+
+ return nullptr;
+ }
+
char* tryConsumeUpto(bool& foundChar, char c)
{
if (!fillBufferIfNeeded())
@@ -339,13 +366,31 @@
};
auto parsePredicate = [&](bool& predicateMatches, const char* matchValue) {
- char* predicateValue = nullptr;
- if (scanner.tryConsume("==")
- && (predicateValue = scanner.tryConsumeString()) && matchValue) {
+ if (scanner.tryConsume("==")) {
+ char* predicateValue = nullptr;
+ if ((predicateValue = scanner.tryConsumeString()) && matchValue) {
predicateMatches = !strcmp(predicateValue, matchValue);
return true;
+ }
}
+#if OS(UNIX) || OS(DARWIN)
+ else if (scanner.tryConsume("=~")) {
+ char* predicateRegExString = nullptr;
+ bool ignoreCase { false };
+ if ((predicateRegExString = scanner.tryConsumeRegExPattern(ignoreCase)) && matchValue) {
+ regex_t predicateRegEx;
+ int regexFlags = REG_EXTENDED;
+ if (ignoreCase)
+ regexFlags |= REG_ICASE;
+ if (regcomp(&predicateRegEx, predicateRegExString, regexFlags))
+ return false;
+ predicateMatches = !regexec(&predicateRegEx, matchValue, 0, nullptr, 0);
+ return true;
+ }
+ }
+#endif
+
return false;
};
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes