Fix a bug which may cause some comments in rulesets not being filtered

This commit is contained in:
Tindy X 2020-02-09 16:53:22 +08:00
parent 3eefeb740e
commit 6f64f27361
No known key found for this signature in database
GPG Key ID: C6AD413169968D58

View File

@ -320,11 +320,13 @@ void rulesetToClash(YAML::Node &base_rule, std::vector<ruleset_content> &ruleset
strStrm.clear();
strStrm<<retrived_rules;
std::string::size_type lineSize;
while(getline(strStrm, strLine, delimiter))
{
strLine = replace_all_distinct(strLine, "\r", ""); //remove line break
if(!strLine.size() || strLine.find("#") == 0 || strLine.find(";") == 0) //remove comments
lineSize = strLine.size();
if(!lineSize || strLine[0] == ';' || strLine[0] == '#' || (lineSize >= 2 && strLine[0] == '/' && strLine[1] == '/')) //empty lines and comments are ignored
continue;
strLine = replace_all_distinct(strLine, "\r", ""); //remove line break
if(strLine.find("USER-AGENT") == 0 || strLine.find("URL-REGEX") == 0 || strLine.find("PROCESS-NAME") == 0 || strLine.find("AND") == 0 || strLine.find("OR") == 0) //remove unsupported types
continue;
/*
@ -417,13 +419,15 @@ void rulesetToSurge(INIReader &base_rule, std::vector<ruleset_content> &ruleset_
strStrm.clear();
strStrm<<retrived_rules;
std::string::size_type lineSize;
while(getline(strStrm, strLine, delimiter))
{
lineSize = strLine.size();
if(!lineSize || strLine[0] == ';' || strLine[0] == '#' || (lineSize >= 2 && strLine[0] == '/' && strLine[1] == '/')) //empty lines and comments are ignored
continue;
if((surge_ver == -1 || surge_ver == -2) && (strLine.find("IP-CIDR6") == 0 || strLine.find("URL-REGEX") == 0 || strLine.find("PROCESS-NAME") == 0 || strLine.find("AND") == 0 || strLine.find("OR") == 0)) //remove unsupported types
continue;
strLine = replace_all_distinct(strLine, "\r", ""); //remove line break
if(!strLine.size() || strLine.find("#") == 0 || strLine.find(";") == 0) //remove comments
continue;
strLine += "," + rule_group;
if(surge_ver == -1 || surge_ver == -2)
{