summaryrefslogtreecommitdiffstats
path: root/fixPermissions.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'fixPermissions.hpp')
-rw-r--r--fixPermissions.hpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/fixPermissions.hpp b/fixPermissions.hpp
new file mode 100644
index 000000000..e57d7bff3
--- /dev/null
+++ b/fixPermissions.hpp
@@ -0,0 +1,52 @@
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#include <string>
+#include <vector>
+#include <string.h>
+#include <libgen.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <dirent.h>
+#include <errno.h>
+#include "gui/rapidxml.hpp"
+#include "twrp-functions.hpp"
+
+using namespace std;
+
+class fixPermissions {
+ public:
+ int fixPerms(bool enable_debug, bool remove_data_for_missing_apps);
+ int fixDataInternalContexts(void);
+
+ private:
+ int pchown(std::string fn, int puid, int pgid);
+ int pchmod(std::string fn, string mode);
+ vector <string> listAllDirectories(std::string path);
+ vector <string> listAllFiles(std::string path);
+ int getPackages();
+ int fixSystemApps();
+ int fixDataApps();
+ int fixAllFiles(string directory, int gid, int uid, string file_perms);
+ int fixDataData(string dataDir);
+ int restorecon(std::string entry, struct stat *sb);
+ int fixDataDataContexts(void);
+ int fixContextsRecursively(std::string path, int level);
+
+ struct package {
+ string pkgName;
+ string codePath;
+ string appDir;
+ string app;
+ string dDir;
+ int gid;
+ int uid;
+ package *next;
+ };
+ bool debug;
+ bool remove_data;
+ bool multi_user;
+ package* head;
+ package* temp;
+ string packageFile;
+};