]> git.saurik.com Git - ldid.git/commitdiff
Maintain permissions during codehashing.
authorJay Freeman (saurik) <saurik@saurik.com>
Sat, 14 Jun 2008 20:42:54 +0000 (20:42 +0000)
committerJay Freeman (saurik) <saurik@saurik.com>
Sat, 14 Jun 2008 20:42:54 +0000 (20:42 +0000)
ldid.cpp

index d38e6b3f3a5fe25698e060a0abed8a376a4711ab..dc1902e5463158ca2edf5de79b2522625101707c 100644 (file)
--- a/ldid.cpp
+++ b/ldid.cpp
@@ -45,6 +45,8 @@
 #include <vector>
 
 #include <sys/wait.h>
+#include <sys/types.h>
+#include <sys/stat.h>
 
 struct fat_header {
     uint32_t magic;
@@ -337,6 +339,7 @@ int main(int argc, const char *argv[]) {
         const char *path(file->c_str());
         const char *base = strrchr(path, '/');
         char *temp(NULL), *dir;
+        mode_t mode = 0;
 
         if (base != NULL)
             dir = strndup(path, base++ - path + 1);
@@ -506,6 +509,10 @@ int main(int argc, const char *argv[]) {
         }
 
         if (temp) {
+            struct stat info;
+            _syscall(stat(path, &info));
+            _syscall(chown(temp, info.st_uid, info.st_gid));
+            _syscall(chmod(temp, info.st_mode));
             _syscall(unlink(path));
             _syscall(rename(temp, path));
             free(temp);