aboutsummaryrefslogtreecommitdiff
path: root/paludis/elike_dep_parser.cc
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2012-05-06 21:39:04 +0100
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2012-05-12 11:33:35 +0100
commit9f8c0f33e4fdfb87c8fd1ba1f8440eb7ddc0bc32 (patch)
tree9a0080e171294a41790ad29af160323b65370667 /paludis/elike_dep_parser.cc
parent57229d3c88a580548406b10198088698421f7967 (diff)
downloadpaludis-9f8c0f33e4fdfb87c8fd1ba1f8440eb7ddc0bc32.tar.gz
paludis-9f8c0f33e4fdfb87c8fd1ba1f8440eb7ddc0bc32.tar.xz
Support parsing ?? deps
Diffstat (limited to 'paludis/elike_dep_parser.cc')
-rw-r--r--paludis/elike_dep_parser.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/paludis/elike_dep_parser.cc b/paludis/elike_dep_parser.cc
index 7418ce642..07e233ca5 100644
--- a/paludis/elike_dep_parser.cc
+++ b/paludis/elike_dep_parser.cc
@@ -213,6 +213,20 @@ namespace
callbacks.on_exactly_one()();
parse(parser, callbacks, options, true, true);
}
+ else if (parser.consume(simple_parser::exact("??")))
+ {
+ if (! parser.consume(+simple_parser::any_of(" \t\r\n")))
+ error(parser, callbacks, "Expected space after '?""?'");
+
+ if (! parser.consume(simple_parser::exact("(")))
+ error(parser, callbacks, "Expected '(' after '?""?' then space");
+
+ if (! parser.consume(+simple_parser::any_of(" \t\r\n")))
+ error(parser, callbacks, "Expected space after '?? ('");
+
+ callbacks.on_at_most_one()();
+ parse(parser, callbacks, options, true, true);
+ }
else if (parser.consume(+simple_parser::any_except(" \t\r\n") >> word))
{
if ('?' == word.at(word.length() - 1))