PKG_CHECK_MODULES(TTRACE_DEPS REQUIRED ttrace)
PKG_CHECK_MODULES(TRUST_ANCHOR_DEPS REQUIRED tanchor)
PKG_CHECK_MODULES(GMOCK_DEPS REQUIRED gmock)
-PKG_CHECK_MODULES(LIBSESSIOND_DEPS REQUIRED libsessiond)
FIND_PACKAGE(Boost REQUIRED COMPONENTS system filesystem program_options iostreams)
return result;
}
+std::vector<std::string> GetDirectoryList(const boost::filesystem::path& cwd) {
+ if (!bf::exists(cwd))
+ return {};
+
+ std::vector<std::string> list;
+ for (bf::directory_iterator file(cwd); file != bf::directory_iterator();
+ ++file) {
+ if (!bf::is_directory(file->path()))
+ continue;
+ list.emplace_back(file->path().filename().string());
+ }
+
+ return list;
+}
+
} // namespace common_installer
#include "common/utils/user_util.h"
#include <manifest_parser/utils/logging.h>
-#include <sessiond.h>
+#include <tzplatform_config.h>
#include <boost/filesystem/path.hpp>
#include <vector>
+#include "common/utils/file_util.h"
#include "common/utils/glist_range.h"
namespace bf = boost::filesystem;
const int kRetryMax = 5;
const int kRetryDelay = 1000000 / 2;
+const char kSubsessionDir[] = "subsession";
+
}
namespace common_installer {
}
std::vector<std::string> GetLightUserList(uid_t uid) {
- int user_count = 0;
- subsession_user_t* user_list = nullptr;
- int ret = subsession_get_user_list(
- static_cast<int>(uid), &user_list, &user_count);
- if (ret != TIZEN_ERROR_NONE) {
- LOG(ERROR) << "Failed to get light user list : " << ret;
+ std::string username = GetUsernameByUid(uid);
+ if (username.empty()) {
+ LOG(ERROR) << "Failed to get user name of uid: " << uid;
return {};
}
- std::vector<std::string> result_list;
- for (int i = 0; i < user_count; i++) {
- if (strlen(user_list[i]) == 0)
- continue;
-
- result_list.emplace_back(user_list[i]);
- }
+ tzplatform_set_user(uid);
+ bf::path subsession_dir =
+ bf::path(tzplatform_getenv(TZ_USER_HOME)) / kSubsessionDir;
+ tzplatform_reset_user();
- std::free(user_list);
- return result_list;
+ // Get subsuession user list by directory name instead of using sessiond API
+ // due to performance issue
+ return GetDirectoryList(subsession_dir);
}
} // namespace common_installer