- std::string binDir = concatPath(pkgRoot, "bin");
- std::string tacDir = concatPath(binDir, TAC_SYMLINK_SUB_DIR);
- if (bf::exists(tacDir)) {
- uid_t uid = 0;
- if (pkgmgr_installer_info_get_target_uid(&uid) < 0) {
- _ERR("Failed to get UID");
- return 0;
- }
- for (auto& symlinkAssembly : bf::recursive_directory_iterator(tacDir)) {
- std::string symPath = symlinkAssembly.path().string();
- if (!isNativeImage(symPath)) {
- std::string originPath = bf::read_symlink(symPath).string();
- std::string originNiPath = originPath.substr(0, originPath.rfind(".dll")) + ".ni.dll";
- if (!bf::exists(originNiPath)) {
- if(createNiDll(originPath, false, false) != NI_ERROR_NONE) {
- _ERR("Failed to create NI file [%s]", originPath.c_str());
- return -1;
- }
- }
- std::string setNiPath = symPath.substr(0, symPath.rfind(".dll")) + ".ni.dll";
- if (!bf::exists(setNiPath)) {
- bf::create_symlink(originNiPath, setNiPath);
- _ERR("%s symbolic link file generated successfully.", setNiPath.c_str());
- if (lchown(setNiPath.c_str(), uid, 0)) {
- _ERR("Failed to change owner of: %s", setNiPath.c_str());
- return -1;
- }
- }
- }
- }
- }