1 /* 2014, Copyright © Intel Coporation, license APACHE-2.0, see LICENSE file */
3 #ifndef COMMON_UTILS_FILE_UTIL_H_
4 #define COMMON_UTILS_FILE_UTIL_H_
8 #include <boost/filesystem.hpp>
9 #include <boost/filesystem/path.hpp>
13 namespace common_installer {
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)
23 FSFlag operator|(FSFlag a, FSFlag b);
25 bool SetOwnership(const boost::filesystem::path& path, uid_t uid, gid_t gid);
27 bool SetOwnershipAll(const boost::filesystem::path& path, uid_t uid, gid_t gid);
29 bool CreateDir(const boost::filesystem::path& path);
31 bool CopyDir(const boost::filesystem::path& src,
32 const boost::filesystem::path& dst,
33 FSFlag flags = FS_NONE, bool skip_symlink = false);
35 bool CopyFile(const boost::filesystem::path& src,
36 const boost::filesystem::path& dst);
38 bool RestoreBackup(const boost::filesystem::path& path);
40 bool MakeBackup(const boost::filesystem::path& path);
42 bool RemoveBackup(const boost::filesystem::path& path);
44 bool RemoveAll(const boost::filesystem::path& path);
46 bool Remove(const boost::filesystem::path& path);
48 bool MoveDir(const boost::filesystem::path& src,
49 const boost::filesystem::path& dst, FSFlag flags = FS_NONE);
51 bool MoveFile(const boost::filesystem::path& src,
52 const boost::filesystem::path& dst, bool force = false);
54 bool BackupDir(const boost::filesystem::path& src,
55 const boost::filesystem::path& dst, const std::string& entry);
57 bool SetDirPermissions(const boost::filesystem::path& path,
58 boost::filesystem::perms permissions);
60 bool SetDirOwnershipAndPermissions(const boost::filesystem::path& path,
61 boost::filesystem::perms permissions, uid_t uid,
64 bool CopyOwnershipAndPermissions(const boost::filesystem::path& src,
65 const boost::filesystem::path& dst);
67 int64_t GetUnpackedPackageSize(const boost::filesystem::path& path);
69 int64_t GetDirectorySize(const boost::filesystem::path& path);
71 bool CheckFreeSpaceAtPath(int64_t required_size,
72 const boost::filesystem::path& target_location);
74 boost::filesystem::path GenerateTmpDir(const boost::filesystem::path& app_path);
76 boost::filesystem::path GenerateTemporaryPath(
77 const boost::filesystem::path& path);
79 bool ExtractToTmpDir(const char* zip_path,
80 const boost::filesystem::path& tmp_dir);
82 bool ExtractToTmpDir(const char* zip_path,
83 const boost::filesystem::path& tmp_dir,
84 const std::string& filter_prefix);
86 bool CheckPathInZipArchive(const char* zip_archive_path,
87 const boost::filesystem::path& relative_zip_path,
90 bool HasDirectoryClimbing(const boost::filesystem::path& path);
92 boost::filesystem::path MakeRelativePath(const boost::filesystem::path& input,
93 const boost::filesystem::path& base);
95 bool IsSubDir(const boost::filesystem::path& path,
96 const boost::filesystem::path& root);
98 boost::filesystem::path RelativePath(const boost::filesystem::path& from,
99 const boost::filesystem::path& to);
101 std::vector<std::string> GetDirectoryList(const boost::filesystem::path& cwd);
103 } // namespace common_installer
105 #endif // COMMON_UTILS_FILE_UTIL_H_