Skip to content

Commit bc4313a

Browse files
committed
Fix issue with arg processing
1 parent fb12605 commit bc4313a

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

libautopen/runner.cpp

+12-3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <string>
44
#include <iterator>
55
#include <array>
6+
#include <algorithm>
67
#include <optional>
78

89
#include <mach-o/swap.h>
@@ -87,13 +88,21 @@ bool startsWith(const std::string &haystack, const std::string &needle) {
8788
return haystack.rfind(needle, 0) == 0;
8889
}
8990

91+
static const std::vector<const std::string> kArgsThatTakeFlags = {"-a", "--architecture", "--bundle-version", "-D", "--detached", "-i", "--identifier", "-o", "--options", "-P", "--pagesize", "-r", "--requirements", "-R", "--test-requirement", "-s", "--sign", "--entitlements", "--extract-certificates", "--file-list", "--keychain", "--prefix", "--strict", "--timestamp", "--runtime-version"};
92+
9093
int run(int argc, const char *argv[], const char *envp[], const char *apple[]) {
9194
sStart = relativeTime();
9295
const char *appPathArg = NULL;
9396
for (int i = 1; i < argc; i++) {
94-
std::optional<std::string> prev = i == 1 ? std::nullopt : std::optional(std::string(argv[i - 1]));
95-
std::string arg = std::string(argv[i]);
96-
if (!startsWith(arg, "-") && (!prev || *prev == "-" || !startsWith(*prev, "-") || prev->find("=") != std::string::npos)) {
97+
const auto arg = std::string(argv[i]);
98+
const auto argIter = std::find(kArgsThatTakeFlags.begin(), kArgsThatTakeFlags.end(), arg);
99+
bool takesArg = argIter != kArgsThatTakeFlags.end();
100+
if (takesArg) {
101+
i++; // Skip over the argument passed for this one
102+
} else if (startsWith(arg, "--")) {
103+
// It's a flag like --digest-algorithm=sha1, don't do anything
104+
} else {
105+
// It looks like it's the binary
97106
hardAssert(!appPathArg, "Multiple candidate binary names found, "s + (appPathArg ?: "") + " and " + argv[i]);
98107
appPathArg = argv[i];
99108
}

0 commit comments

Comments
 (0)