Commit 016b8741 authored by jan.koester's avatar jan.koester
Browse files

TEST

parent 005c4760
Loading
Loading
Loading
Loading
+24 −5
Changes for commands/filesystem/find.cpp: 24 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -634,7 +634,7 @@ namespace fresh { namespace cmd {
                else break;
            }
            
            std::vector<std::string> paths;
            std::vector paths;
            for(; i < argc; ++i){
                std::string a = argv[i];
                if(a == "!" || a == "(" || (a.size() > 1 && a[0] == '-')) break;
@@ -643,11 +643,30 @@ namespace fresh { namespace cmd {
            if(paths.empty()) paths.push_back(".");

            Parser p(s);
            for(; i < argc; ++i) p.toks.push_back(argv[i]);
            for(; i < argc; ++i) {
                std::string arg = argv[i];
                // Split concatenated leading '(' (e.g. "(-name" -> "(" "-name")
                while (arg.size() > 1 && arg[0] == '(') {
                    p.toks.push_back("(");
                    arg = arg.substr(1);
                }
                // Split concatenated trailing ')' (e.g. "*.S)" -> "*.S" ")")
                std::size_t trailing_cnt = 0;
                while (arg.size() > 1 && arg.back() == ')') {
                    trailing_cnt++;
                    arg.pop_back();
                }
                if (!arg.empty()) {
                    p.toks.push_back(arg);
                }
                while (trailing_cnt--) {
                    p.toks.push_back(")");
                }
            }

            NodePtr expr;
            if(p.toks.empty()){
                expr = std::make_unique<Const>(true);
                expr = std::make_unique(true);
            }else{
                expr = p.parseExpr();
                if(expr && p.more()){ p.error = "unexpected '" + p.peek() + "'"; expr.reset(); }
@@ -658,9 +677,9 @@ namespace fresh { namespace cmd {
            }

            if(!p.hasAction){
                auto a = std::make_unique<And>();
                auto a = std::make_unique();
                a->l = std::move(expr);
                a->r = std::make_unique<Print>('\n');
                a->r = std::make_unique('\n');
                expr = std::move(a);
            }