From fac3d3e373c2dcbe20a73aea30d056b033f961bf Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Mon, 21 Sep 2015 11:56:22 -0700 Subject: Correct incompatible flag checks (support for -s). --- ldid.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/ldid.cpp b/ldid.cpp index ecca2f4..a6b86d2 100644 --- a/ldid.cpp +++ b/ldid.cpp @@ -884,6 +884,10 @@ class Map { clear(); } + bool empty() const { + return data_ == NULL; + } + void open(const char *path, int oflag, int pflag, int mflag) { clear(); @@ -1462,7 +1466,12 @@ int main(int argc, char *argv[]) { if (argv[argi][0] != '-') files.push_back(argv[argi]); else switch (argv[argi][1]) { - case 'r': flag_r = true; break; + case 'r': + _assert(!flag_s); + _assert(!flag_S); + flag_r = true; + break; + case 'e': flag_e = true; break; case 'D': flag_D = true; break; @@ -1470,6 +1479,7 @@ int main(int argc, char *argv[]) { case 'a': flag_a = true; break; case 'A': + _assert(!flag_A); flag_A = true; if (argv[argi][2] != '\0') { const char *cpu = argv[argi] + 2; @@ -1484,11 +1494,13 @@ int main(int argc, char *argv[]) { break; case 's': + _assert(!flag_r); _assert(!flag_S); flag_s = true; break; case 'S': + _assert(!flag_r); _assert(!flag_s); flag_S = true; if (argv[argi][2] != '\0') { @@ -1521,7 +1533,8 @@ int main(int argc, char *argv[]) { break; } - _assert(!flag_S || !flag_r); + _assert(flag_S || key.empty()); + _assert(flag_S || flag_I == NULL); if (files.empty()) usage: { exit(0); -- cgit v1.2.3-56-ge451