128 lines
3.3 KiB
C++
Executable File
128 lines
3.3 KiB
C++
Executable File
#ifndef UTILS_H
|
||
#define UTILS_H
|
||
|
||
#include <QString>
|
||
#include <QtDebug>
|
||
#include "mydefine.h"
|
||
|
||
/**
|
||
* @brief 工具类
|
||
* @author zhaominyong
|
||
* @since 2021/07/22
|
||
*/
|
||
class Utils
|
||
{
|
||
public:
|
||
/**
|
||
* @brief initSysRootPath, 根据应用程序路径推断系统根目录
|
||
* @param qsAppPath,应用程序所在路径
|
||
*/
|
||
static void initSysRootPath(const QString& qsAppPath);
|
||
|
||
/**
|
||
* @brief getSysRootPath,获取正式系统根目录
|
||
* @return const QString&,系统根目录
|
||
* @note
|
||
* 调用此函数前,需要调用初始化系统根目录函数initSysRootPath;否则,返回默认目录“/”
|
||
*/
|
||
static const QString& getSysRootPath() { return m_sysRootPath; }
|
||
|
||
/**
|
||
* @brief customMessageHandler,日志重定向句柄
|
||
* @param type 日志类型,debug等
|
||
* @param context 上下文
|
||
* @param msg 日志信息
|
||
*/
|
||
static void customMessageHandler(QtMsgType type, const QMessageLogContext& context, const QString& msg);
|
||
|
||
/**
|
||
* @brief 文件锁,锁定应用程序
|
||
* @param frontUid,锁定程序的用户id
|
||
* @return 锁文件的句柄
|
||
*/
|
||
static int lockProgram(int frontUid);
|
||
|
||
/**
|
||
* @brief 解除应用程序文件锁
|
||
* @param lock_file_fd 锁文件的文件描述符
|
||
* @return 0,解除成功;1,解除失败
|
||
*/
|
||
static int unLockProgram(int lock_file_fd);
|
||
|
||
/**
|
||
* @brief 删除锁文件
|
||
* @return bool
|
||
*/
|
||
static bool rmLockFile();
|
||
|
||
/**
|
||
* @brief 检查/etc/.bootinfo是否存在并可读,里面存放备份分区的UUID等信息
|
||
* @return bool
|
||
*/
|
||
static bool checkBootInfoExists();
|
||
|
||
/**
|
||
* @brief 获取备份分区的UUID
|
||
* @return 备份分区的UUID
|
||
*/
|
||
static QString getBackupPartitionUuid();
|
||
|
||
/**
|
||
* @brief 路径不存在则创建,不支持递归创建
|
||
* @param path
|
||
*/
|
||
static void mkdir(const QString& path);
|
||
|
||
/**
|
||
* @brief 创建路径,支持递归创建
|
||
* @param path
|
||
* @return bool
|
||
*/
|
||
static bool mkpath(const QString& path);
|
||
|
||
/**
|
||
* @brief 备份还原时,需要排除绑定挂载的路径,因为数据不是存放在挂载路径内
|
||
* @param excludes,存放需要排除的绑定路径
|
||
*/
|
||
static void excludeFstabBindPath(QStringList &excludes);
|
||
|
||
/**
|
||
* @brief 生成rsync --exclude-from排除路径规则文件
|
||
* @return
|
||
*/
|
||
static bool generateExcludePathsFile();
|
||
|
||
/**
|
||
* @brief 获取系统备份还原排除路径列表
|
||
* @return 系统备份还原排除路径列表
|
||
*/
|
||
static QStringList getFromExcludePathsFile();
|
||
|
||
/**
|
||
* @brief 判断目录是否存在
|
||
* @param 目录路径
|
||
* @return true,存在;false,不存在
|
||
*/
|
||
static bool isDirExist(const QString& fullDirName);
|
||
|
||
/**
|
||
* @brief 生成Uuid
|
||
* @return UUID
|
||
*/
|
||
static QString createUuid();
|
||
|
||
/**
|
||
* @brief 将列表中内容写入指定文件中
|
||
* @param fileName,文件全路径
|
||
* @param lines,内容列表
|
||
* @return true,成功写入;false,写入失败
|
||
*/
|
||
static bool writeFileByLines(const QString& fileName, const QStringList& lines);
|
||
|
||
private:
|
||
// 系统根目录,默认"/"
|
||
static QString m_sysRootPath;
|
||
};
|
||
|
||
#endif // UTILS_H
|