Name: pkgmgr-info
Summary: Packager Manager infomation api for package
-Version: 0.26.7
+Version: 0.26.10
Release: 1
Group: Application Framework/Package Management
License: Apache-2.0
unsigned int maj;
unsigned int min;
unsigned long long ino;
- char cmdline[BUFSIZE];
- char name[BUFSIZE];
char type[1024];
if (stat(dbpath.c_str(), &sb) == -1) {
ino != sb.st_ino || pid == getpid())
continue;
- snprintf(cmdline, sizeof(cmdline), "/proc/%d/cmdline", pid);
- FILE* fp_cmdline = fopen(cmdline, "r");
- name[0] = '\0';
- if (fp_cmdline != NULL) {
- size_t len = fread(name, sizeof(char), sizeof(name) - 1,
- fp_cmdline);
- if (len > 0) {
- if (name[len - 1] == '\n')
- name[len - 1] = '\0';
- else
- name[len] = '\0';
- }
- fclose(fp_cmdline);
- }
-
- LOG(WARNING) << name << "(" << pid << ")" << "has lock("
+ LOG(WARNING) << "(" << pid << ")" << "has lock ("
<< type << ") on pkgmgr db(" << dbpath << ")";
}
uid_t uid, const std::string& locale,
const std::unordered_set<pid_t>& pids) {
std::vector<std::string> pkgids;
- for (auto it = pending_pkg_.begin(); it != pending_pkg_.end();) {
- pid_t pid = it->second;
- if (pids.find(pid) == pids.end()) {
- it++;
+ for (const auto& [pkgid, pid] : pending_pkg_) {
+ if (pids.find(pid) == pids.end())
continue;
- }
- pkgids.emplace_back(it->first);
+ EraseWriterPID(pid);
+ pkgids.emplace_back(pkgid);
}
UpdatePendingPackageInfo(db, uid, locale, pkgids);