Correctly handle rule w/ leading whitespace within a quoted path. Uncomment test case that validates correct behavior.
This commit is contained in:
parent
a2e82147eb
commit
5275975d86
|
@ -131,6 +131,11 @@ void cFSParserUtil::AddSubTypeProps( cFCOPropVector& v ) const
|
||||||
v.AddItemAndGrow( cFSPropSet::PROP_FILETYPE );
|
v.AddItemAndGrow( cFSPropSet::PROP_FILETYPE );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void trim_leading_whitespace(std::string &str)
|
||||||
|
{
|
||||||
|
str.erase(str.begin(), std::find_if(str.begin(), str.end(), std::not1(std::ptr_fun<int, int>(std::isspace))));
|
||||||
|
}
|
||||||
|
|
||||||
void cFSParserUtil::InterpretFCOName( const std::list<TSTRING>& l, cFCOName& nameOut ) const
|
void cFSParserUtil::InterpretFCOName( const std::list<TSTRING>& l, cFCOName& nameOut ) const
|
||||||
{
|
{
|
||||||
TSTRING strT;
|
TSTRING strT;
|
||||||
|
@ -141,6 +146,12 @@ void cFSParserUtil::InterpretFCOName( const std::list<TSTRING>& l, cFCOName& nam
|
||||||
strT = cDevicePath::AsPosix(strT);
|
strT = cDevicePath::AsPosix(strT);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//Trim any remaining whitespace before actual path, for cases like " /foo",
|
||||||
|
// otherwise it'll be flagged as a relative path.
|
||||||
|
//Don't trim trailing whitespace, since that could potentially be a valid path.
|
||||||
|
if(strT[0] != '/')
|
||||||
|
trim_leading_whitespace(strT);
|
||||||
|
|
||||||
// let cFCOName handle interpretation
|
// let cFCOName handle interpretation
|
||||||
nameOut = strT;
|
nameOut = strT;
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ FOO = ping;
|
||||||
# test quoted strings
|
# test quoted strings
|
||||||
"/qfoo" -> +p ;
|
"/qfoo" -> +p ;
|
||||||
"/Program Files" -> +p ;
|
"/Program Files" -> +p ;
|
||||||
#" /lots o' spaces " -> +p ;
|
" /lots o' spaces " -> +p ;
|
||||||
#" colon: semicolon; quote' " -> +p ;
|
#" colon: semicolon; quote' " -> +p ;
|
||||||
|
|
||||||
# test attributes
|
# test attributes
|
||||||
|
|
Loading…
Reference in New Issue