diff options
author | Jay Freeman (saurik) <saurik@saurik.com> | 2015-09-21 11:56:22 -0700 |
---|---|---|
committer | Jay Freeman (saurik) <saurik@saurik.com> | 2015-09-21 11:56:22 -0700 |
commit | fac3d3e373c2dcbe20a73aea30d056b033f961bf (patch) | |
tree | fccb389a4e324d4b96887114b698f4c89c8a219f /ldid.cpp | |
parent | b9652d6e8e113addbf4275ba9db0635bb23e05f0 (diff) | |
download | ldid-fac3d3e373c2dcbe20a73aea30d056b033f961bf.tar.gz ldid-fac3d3e373c2dcbe20a73aea30d056b033f961bf.tar.zst ldid-fac3d3e373c2dcbe20a73aea30d056b033f961bf.zip |
Correct incompatible flag checks (support for -s).
Diffstat (limited to 'ldid.cpp')
-rw-r--r-- | ldid.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
@@ -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); |