X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=NativeLauncher%2Finc%2Futils.h;h=524264ee3bf15c183240debbb2fb3719d193d2c0;hb=33b4aa2fcbb716d081fc13ac6855fc53bd343532;hp=a25c62cc7bf2749198173d1e80803927cd3e6d27;hpb=5373d256e77414acb8872443f536002215bf674a;p=platform%2Fcore%2Fdotnet%2Flauncher.git diff --git a/NativeLauncher/inc/utils.h b/NativeLauncher/inc/utils.h index a25c62c..524264e 100644 --- a/NativeLauncher/inc/utils.h +++ b/NativeLauncher/inc/utils.h @@ -17,17 +17,25 @@ #ifndef __UTILS_H__ #define __UTILS_H__ +#include #include #include #include #include +#include #include +#include + #ifndef PATH_SEPARATOR #define PATH_SEPARATOR '/' #endif +#ifndef PROFILE_BASENAME +#define PROFILE_BASENAME ".__tizen_specific_profile_data" +#endif + namespace bf = boost::filesystem; namespace bs = boost::system; @@ -39,39 +47,29 @@ enum FSFlag : int { FS_PRESERVE_OWNERSHIP_AND_PERMISSIONS = (1 << 3) }; -/** - * @brief an iterator to the begin element in the range that compares equal to option - * @param[in] begin element - * @param[in] end elment - * return return true when elements match - */ -bool cmdOptionExists(char** begin, char** end, const std::string& option); - -/** - * @brief get current executable path - * return std::string path - */ -std::string readSelfPath(); +#ifndef PR_TASK_PERF_USER_TRACE +#define PR_TASK_PERF_USER_TRACE 666 +#endif /** * @brief concat path with PATH_SEPARATOR * @param[in] destination path * @param[in] source path - * return std::string result path + * @return std::string result path */ std::string concatPath(const std::string& path1, const std::string& path2); /** * @brief get canonicalized absolute Path * @param[in] source path - * return std::string result path + * @return std::string result path */ std::string getAbsolutePath(const std::string& path); /** * @brief get the directory of file * @param[in] source path - * return std::string result path + * @return std::string result path */ std::string getBaseName(const std::string& path); @@ -80,31 +78,54 @@ std::string getBaseName(const std::string& path); * @param[in] original string * @param[in] pattern to match * @param[in] replacement string - * return the modified string + * @return std::string the modified string */ std::string replaceAll(const std::string& str, const std::string& pattern, const std::string& replace); /** * @brief get root path * @param[in] package id - * @param[out] root path + * @return std::string root path */ -int getRootPath(const std::string& pkgId, std::string& rootPath); +std::string getRootPath(const std::string& pkgId); /** * @brief get exec name * @param[in] package id - * @param[out] exec name + * @return std::string exec name */ -int getExecName(const std::string& pkgId, std::string& execName); +std::string getExecName(const std::string& pkgId); + +/** + * @brief get app type + * @param[in] package id + * @return std::string app type + */ +std::string getAppType(const std::string& pkgId); /** * @brief get metadata value * @param[in] package id * @param[in] metadata key - * @param[out] metadata value + * @return std::string metadata value */ -int getMetadataValue(const std::string& pkgId, const std::string& metadataKey, std::string& metadataValue); +std::string getMetadataValue(const std::string& pkgId, const std::string& key); + +/** + * @brief change the extension of a path or file + * @param[in] source path or file + * @param[in] from extension + * @param[in] to extension + * @return std::string path or file with changed extension + */ +std::string changeExtension(const std::string& path, const std::string& from, const std::string& to); + +/** + * @brief check the path is 'readonly' or not + * @param[in] path + * @return bool package readonly value + */ +bool isReadOnlyArea(const std::string& path); /** * @brief split path with ":" delimiter and put that in the vector @@ -115,24 +136,25 @@ void splitPath(const std::string& path, std::vector& out); /** * @brief check file exists + * in case of symlink file, check both input file and link reference file. * @param[in] source path * @return bool */ bool isFile(const std::string& path); /** - * @brief check directory exists + * @brief check symlink file * @param[in] source path * @return bool */ -bool isDirectory(const std::string& path); +bool isSymlinkFile(const std::string& path); /** - * @brief get file size + * @brief check directory exists * @param[in] source path - * @return size of file + * @return bool */ -uintptr_t getFileSize(const std::string& path); +bool isDirectory(const std::string& path); /** * @brief check the file is managed assembly or not. @@ -143,13 +165,6 @@ uintptr_t getFileSize(const std::string& path); bool isManagedAssembly(const std::string& filePath); /** - * @brief check the file is native image or not. - * @param[in] file path - * @return return true when the file is native image. - */ -bool isNativeImage(const std::string& filePath); - -/** * @brief Resolve assembly files from directories and append their paths to the given list. * @remark If a native image exists for an assembly in the same directory, it will be used. * If multiple assemblies of the same name exist, the first one will be used. @@ -182,6 +197,13 @@ void scanFilesInDirectory(const std::string& directory, FileReader reader, unsig void copySmackAndOwnership(const std::string& fromPath, const std::string& toPath, bool isSymlink = false); /** + * @brief check whether the path exists or not. + * @param[in] source path + * @return return true when the path exist. + */ +bool exist(const bf::path& path); + +/** * @brief create the new directory. * @param[in] source path * @return return true when the directory was created. @@ -241,4 +263,60 @@ void setCmdName(const std::string& name); */ std::string getFileName(const std::string& path); +/** + * @brief Generates a representation called a message digest + * @param[in] file path + * @return message digest + */ +std::string SHA256(const std::string& path); + +/** + * @brief Creates the package information handle from db which is not disabled. + * This function is a wrapper of pkgmgrinfo_pkginfo_get_pkginfo() to handle multi-user case + * @param[in] pkg id + * @param[out] pkginfo handle + * @return 0 if success, otherwise -1 + */ +int pkgmgrGetPkgInfo(const std::string& pkgId, pkgmgrinfo_pkginfo_h* handle); + +/** + * @brief Creates the application information handle from db. + * This function is a wrapper of pkgmgrinfo_appinfo_get_appinfo() to handle multi-user case + * @param[in] app id + * @param[out] appinfo handle + * @return 0 if success, otherwise -1 + */ +int pkgmgrGetAppInfo(const std::string& appId, pkgmgrinfo_appinfo_h* handle); + +/** + * @brief Executes the metadata filter query for all the installed packages. + * This function is a wrapper of pkgmgrinfo_appinfo_metadata_filter_foreach() to handle multi-user case + * @param[in] metadata filter handle + * @param[in] callback function + * @param[in] user data + * @return 0 if success, otherwise -1 + */ +int pkgmgrMDFilterForeach(pkgmgrinfo_appinfo_metadata_filter_h handle, + pkgmgrinfo_app_list_cb app_cb, + void *user_data); + +/** + * @brief Prints HW Clock log + * @param[in] format `printf`-like format string + * @param[in] ... `printf`-like variadic list of arguments corresponding to the format string + */ +void printHWClockLog(const char* format, ...); + +/** + * @brief Return NCDB startup hook + * @return NCDB startup hook + */ +const char* getNCDBStartupHook(); + +/** + * @brief Check is NCDB startup hook provided in DOTNET_STARTUP_HOOKS env + * @return `true` if provided, otherwise `false` + */ +bool isNCDBStartupHookProvided(); + #endif /* __UTILS_H__ */