summaryrefslogtreecommitdiffstats
path: root/ldid.cpp
diff options
context:
space:
mode:
authorJay Freeman (saurik) <saurik@saurik.com>2009-05-20 06:35:14 +0000
committerJay Freeman (saurik) <saurik@saurik.com>2009-05-20 06:35:14 +0000
commit122621c5586e9859fea83fa8abce68ceefb353d9 (patch)
treeb194b4dcf253b282e2b57e3e26031e91e4064908 /ldid.cpp
parent82813bde024b6c73f349faf81366ea6150127e61 (diff)
downloadldid-122621c5586e9859fea83fa8abce68ceefb353d9.tar.gz
ldid-122621c5586e9859fea83fa8abce68ceefb353d9.tar.zst
ldid-122621c5586e9859fea83fa8abce68ceefb353d9.zip
Make ldid workaround the stupid inode issue.v1.0.610
Diffstat (limited to 'ldid.cpp')
-rw-r--r--ldid.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/ldid.cpp b/ldid.cpp
index 334fd1f..16824d5 100644
--- a/ldid.cpp
+++ b/ldid.cpp
@@ -780,6 +780,22 @@ int main(int argc, const char *argv[]) {
memset(blob + offset, 0, size - offset);
}
+ if (flag_S) {
+ uint8_t *top = reinterpret_cast<uint8_t *>(framework.GetBase());
+ size_t size = framework.GetSize();
+
+ char *copy;
+ asprintf(&copy, "%s.%s.cp", dir, base);
+ FILE *file = fopen(copy, "w+");
+ size_t writ = fwrite(top, 1, size, file);
+ _assert(writ == size);
+ fclose(file);
+
+ _syscall(unlink(temp));
+ free(temp);
+ temp = copy;
+ }
+
if (temp) {
struct stat info;
_syscall(stat(path, &info));