From d78cda50503c66b044150c9ced5a2a4a8c9607dd Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Thu, 2 Jul 2015 14:12:35 -0700 Subject: Avoid overwriting extended_states with a symlink. --- MobileCydia.mm | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/MobileCydia.mm b/MobileCydia.mm index 968a67a..86e6a6f 100644 --- a/MobileCydia.mm +++ b/MobileCydia.mm @@ -4089,11 +4089,17 @@ class CydiaLogCleaner : delock_ = nil; + pkgPackageManager::OrderResult result(manager_->DoInstall(statusfd_)); + NSString *oextended(@"/var/lib/apt/extended_states"); NSString *nextended(Cache("extended_states")); - pkgPackageManager::OrderResult result(manager_->DoInstall(statusfd_)); - system([[NSString stringWithFormat:@"/usr/libexec/cydia/cydo /bin/mv -f %@ %@", nextended, oextended] UTF8String]); - system([[NSString stringWithFormat:@"/usr/libexec/cydia/cydo /bin/chown 0:0 %@", oextended] UTF8String]); + + struct stat info; + if (stat([nextended UTF8String], &info) != -1 && (info.st_mode & S_IFMT) == S_IFREG) { + system([[NSString stringWithFormat:@"/usr/libexec/cydia/cydo /bin/mv -f %@ %@", nextended, oextended] UTF8String]); + system([[NSString stringWithFormat:@"/usr/libexec/cydia/cydo /bin/chown 0:0 %@", oextended] UTF8String]); + } + unlink([nextended UTF8String]); symlink([oextended UTF8String], [nextended UTF8String]); -- cgit v1.2.3