diff options
author | Jay Freeman (saurik) <saurik@saurik.com> | 2008-06-14 20:42:54 +0000 |
---|---|---|
committer | Jay Freeman (saurik) <saurik@saurik.com> | 2008-06-14 20:42:54 +0000 |
commit | 31ad673ba62d384fcdfa4d6f64d2ca328770da1d (patch) | |
tree | 8d3b9564a30d7aa14140aa4fc2fb3a849760211b /ldid.cpp | |
parent | afbb7c8eb6f3cdbe5aa44d3a518d05412ec2c485 (diff) | |
download | ldid-31ad673ba62d384fcdfa4d6f64d2ca328770da1d.tar.gz ldid-31ad673ba62d384fcdfa4d6f64d2ca328770da1d.tar.zst ldid-31ad673ba62d384fcdfa4d6f64d2ca328770da1d.zip |
Maintain permissions during codehashing.
Diffstat (limited to 'ldid.cpp')
-rw-r--r-- | ldid.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -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); |