]> git.saurik.com Git - cydia.git/blobdiff - setnsfpn.cpp
Add more parts of Cydia that need to run as root.
[cydia.git] / setnsfpn.cpp
index 88dbffddeeb728aba01d1472629a705f0741a42a..9fe555c0d5098dc2571077e89e025ecfc3006ced 100644 (file)
     } \
 } _value; })
 
-int $getdirentries(int, char *, int, long *) __asm("_getdirentries");
-
-struct $dirent {
-    __uint32_t d_ino;
-    __uint16_t d_reclen;
-    __uint8_t  d_type;
-    __uint8_t  d_namlen;
-    char d_name[__DARWIN_MAXNAMLEN + 1];
-};
-
-#define getdirentries $getdirentries
-#define dirent $dirent
+extern "C" int __getdirentries64(int, char *, int, long *);
 
 enum Recurse {
     RecurseYes,
@@ -106,7 +95,7 @@ static int setnsfpn(const char *path, size_t before, Recurse recurse) {
     if (recurse == RecurseYes)
         for (long address(0);;) {
             char buffer[4096];
-            int size(_syscall(getdirentries(fd, buffer, sizeof(buffer), &address)));
+            int size(_syscall(__getdirentries64(fd, buffer, sizeof(buffer), &address)));
             if (size == 0)
                 break;
 
@@ -116,7 +105,7 @@ static int setnsfpn(const char *path, size_t before, Recurse recurse) {
                 const char *name(dir->d_name);
                 size_t after(strlen(name));
 
-                if (false);
+                if (dir->d_ino == 0);
                 else if (after == 1 && name[0] == '.');
                 else if (after == 2 && name[0] == '.' && name[1] == '.');
                 else {