| 733 | } |
| 734 | |
| 735 | std::pair<QString, QString> splitExeAndArguments(const QString& cmd) |
| 736 | { |
| 737 | int exeBegin = 0; |
| 738 | int exeEnd = -1; |
| 739 | |
| 740 | if (cmd[0] == '"') { |
| 741 | // surrounded by double-quotes, so find the next one |
| 742 | exeBegin = 1; |
| 743 | exeEnd = cmd.indexOf('"', exeBegin); |
| 744 | |
| 745 | if (exeEnd == -1) { |
| 746 | log::error("missing terminating double-quote in command line '{}'", cmd); |
| 747 | return {}; |
| 748 | } |
| 749 | } else { |
| 750 | // no double-quotes, find the first whitespace |
| 751 | exeEnd = cmd.indexOf(QRegularExpression("\\s")); |
| 752 | if (exeEnd == -1) { |
| 753 | exeEnd = cmd.size(); |
| 754 | } |
| 755 | } |
| 756 | |
| 757 | QString exe = cmd.mid(exeBegin, exeEnd - exeBegin).trimmed(); |
| 758 | QString args = cmd.mid(exeEnd + 1).trimmed(); |
| 759 | |
| 760 | return {std::move(exe), std::move(args)}; |
| 761 | } |
| 762 | |
| 763 | Association getAssociation(const QFileInfo& targetInfo) |
| 764 | { |
no test coverage detected