Move GetLightUserList() to user_util.h
[platform/core/appfw/app-installers.git] / src / common / utils / file_util.h
1 /* 2014, Copyright © Intel Coporation, license APACHE-2.0, see LICENSE file */
2
3 #ifndef COMMON_UTILS_FILE_UTIL_H_
4 #define COMMON_UTILS_FILE_UTIL_H_
5
6 #include <sys/types.h>
7
8 #include <boost/filesystem.hpp>
9 #include <boost/filesystem/path.hpp>
10 #include <string>
11 #include <vector>
12
13 namespace common_installer {
14
15 enum FSFlag : int {
16   FS_NONE              = 0,
17   FS_MERGE_SKIP        = (1 << 0),
18   FS_MERGE_OVERWRITE   = (1 << 1),
19   FS_COMMIT_COPY_FILE  = (1 << 2),
20   FS_PRESERVE_OWNERSHIP_AND_PERMISSIONS = (1 << 3)
21 };
22
23 FSFlag operator|(FSFlag a, FSFlag b);
24
25 bool SetOwnership(const boost::filesystem::path& path, uid_t uid, gid_t gid);
26
27 bool SetOwnershipAll(const boost::filesystem::path& path, uid_t uid, gid_t gid);
28
29 bool CreateDir(const boost::filesystem::path& path);
30
31 bool CopyDir(const boost::filesystem::path& src,
32              const boost::filesystem::path& dst,
33              FSFlag flags = FS_NONE, bool skip_symlink = false);
34
35 bool CopyFile(const boost::filesystem::path& src,
36              const boost::filesystem::path& dst);
37
38 bool RestoreBackup(const boost::filesystem::path& path);
39
40 bool MakeBackup(const boost::filesystem::path& path);
41
42 bool RemoveBackup(const boost::filesystem::path& path);
43
44 bool RemoveAll(const boost::filesystem::path& path);
45
46 bool Remove(const boost::filesystem::path& path);
47
48 bool MoveDir(const boost::filesystem::path& src,
49              const boost::filesystem::path& dst, FSFlag flags = FS_NONE);
50
51 bool MoveFile(const boost::filesystem::path& src,
52               const boost::filesystem::path& dst, bool force = false);
53
54 bool BackupDir(const boost::filesystem::path& src,
55     const boost::filesystem::path& dst, const std::string& entry);
56
57 bool SetDirPermissions(const boost::filesystem::path& path,
58                        boost::filesystem::perms permissions);
59
60 bool SetDirOwnershipAndPermissions(const boost::filesystem::path& path,
61                       boost::filesystem::perms permissions, uid_t uid,
62                       gid_t gid);
63
64 bool CopyOwnershipAndPermissions(const boost::filesystem::path& src,
65                                  const boost::filesystem::path& dst);
66
67 int64_t GetUnpackedPackageSize(const boost::filesystem::path& path);
68
69 int64_t GetDirectorySize(const boost::filesystem::path& path);
70
71 bool CheckFreeSpaceAtPath(int64_t required_size,
72     const boost::filesystem::path& target_location);
73
74 boost::filesystem::path GenerateTmpDir(const boost::filesystem::path& app_path);
75
76 boost::filesystem::path GenerateTemporaryPath(
77     const boost::filesystem::path& path);
78
79 bool ExtractToTmpDir(const char* zip_path,
80                      const boost::filesystem::path& tmp_dir);
81
82 bool ExtractToTmpDir(const char* zip_path,
83                      const boost::filesystem::path& tmp_dir,
84                      const std::string& filter_prefix);
85
86 bool CheckPathInZipArchive(const char* zip_archive_path,
87                            const boost::filesystem::path& relative_zip_path,
88                            bool* found);
89
90 bool HasDirectoryClimbing(const boost::filesystem::path& path);
91
92 boost::filesystem::path MakeRelativePath(const boost::filesystem::path& input,
93                                          const boost::filesystem::path& base);
94
95 bool IsSubDir(const boost::filesystem::path& path,
96               const boost::filesystem::path& root);
97
98 boost::filesystem::path RelativePath(const boost::filesystem::path& from,
99                                      const boost::filesystem::path& to);
100
101 }  // namespace common_installer
102
103 #endif  // COMMON_UTILS_FILE_UTIL_H_