diff options
Diffstat (limited to 'fixPermissions.hpp')
-rw-r--r-- | fixPermissions.hpp | 52 |
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; +}; |