blob: aa6f609649ad11d11a225428f2c07e6a272363a6 [file] [log] [blame]
bigbiff bigbiffa0f8a592012-10-09 21:01:03 -04001#include <iostream>
2#include <fstream>
3#include <sstream>
4#include <string>
5#include <vector>
6#include <string.h>
7#include <libgen.h>
8#include <unistd.h>
9#include <sys/stat.h>
10#include <dirent.h>
11#include "gui/rapidxml.hpp"
12#include "twrp-functions.hpp"
13
14using namespace std;
15
16class fixPermissions {
17 public:
18 int fixPerms(bool enable_debug, bool remove_data_for_missing_apps);
19
20 private:
21 int pchown(std::string fn, int puid, int pgid);
22 int pchmod(std::string fn, string mode);
23 vector <string> listAllDirectories(std::string path);
24 vector <string> listAllFiles(std::string path);
bigbiff bigbiffa0f8a592012-10-09 21:01:03 -040025 int getPackages();
26 int fixSystemApps();
27 int fixDataApps();
28 int fixAllFiles(string directory, int gid, int uid, string file_perms);
Dees_Troy201d76b2012-11-16 17:12:02 +000029 int fixDataData(string dataDir);
bigbiff bigbiff872a3b92013-10-18 20:50:25 -040030 int fixDataDataContexts(void);
31 int restorecon(std::string entry, struct stat *sb);
32
bigbiff bigbiffa0f8a592012-10-09 21:01:03 -040033 struct package {
34 string pkgName;
35 string codePath;
36 string appDir;
37 string app;
38 string dDir;
39 int gid;
40 int uid;
41 package *next;
42 };
43 bool debug;
44 bool remove_data;
Dees_Troy201d76b2012-11-16 17:12:02 +000045 bool multi_user;
bigbiff bigbiffa0f8a592012-10-09 21:01:03 -040046 package* head;
47 package* temp;
48 string packageFile;
49};