int CollectorLinux::getDiskListByFs(const char *pszPath, DiskList& listUsage, DiskList& listLoad) { FILE *mtab = setmntent("/etc/mtab", "r"); if (mtab) { struct mntent *mntent; while ((mntent = getmntent(mtab))) { /* Skip rootfs entry, there must be another root mount. */ if (strcmp(mntent->mnt_fsname, "rootfs") == 0) continue; if (strcmp(pszPath, mntent->mnt_dir) == 0) { char szDevName[128]; char szFsName[1024]; /* Try to resolve symbolic link if necessary. Yes, we access the file system here! */ int rc = RTPathReal(mntent->mnt_fsname, szFsName, sizeof(szFsName)); if (RT_FAILURE(rc)) continue; /* something got wrong, just ignore this path */ /* check against the actual mtab entry, NOT the real path as /dev/mapper/xyz is * often a symlink to something else */ if (!strncmp(mntent->mnt_fsname, RT_STR_TUPLE("/dev/mapper"))) { /* LVM */ getDiskName(szDevName, sizeof(szDevName), mntent->mnt_fsname, false /*=fTrimDigits*/); addVolumeDependencies(szDevName, listUsage); listLoad = listUsage; } else if (!strncmp(szFsName, RT_STR_TUPLE("/dev/md"))) { /* Software RAID */ getDiskName(szDevName, sizeof(szDevName), szFsName, false /*=fTrimDigits*/); listUsage.push_back(RTCString(szDevName)); addRaidDisks(szDevName, listLoad); } else { /* Plain disk partition. Trim the trailing digits to get the drive name */ getDiskName(szDevName, sizeof(szDevName), szFsName, true /*=fTrimDigits*/); listUsage.push_back(RTCString(szDevName)); listLoad.push_back(RTCString(szDevName)); } if (listUsage.empty() || listLoad.empty()) { LogRel(("Failed to retrive disk info: getDiskName(%s) --> %s\n", mntent->mnt_fsname, szDevName)); } break; } } endmntent(mtab); } return VINF_SUCCESS; }
void SearchDlg::fillRes(QSqlQuery * q) { QDateTime dt; while (q->next()) { qlonglong _size = 0; int diskNo = q->value(8).toInt(); if (!diskNames.contains(diskNo)) diskNames[diskNo] = getDiskName(diskNo); CatTreeItem *item = new CatTreeItem; // item->setText(0, q->value(1).toString()); item->iconId = q->value(6).toInt(); item->itemType = q->value(2).toInt(); item->id = q->value(0).toInt(); item->parentId = q->value(1).toInt(); dt.setTime_t(q->value(5).toInt()); vFileName data; if (item->itemType == FILE_ELEMENT) { parseFileName(q->value(3).toString(), data); item->setText(0, data.fileName); }else{ item->setText(0, q->value(3).toString()); } if (data.hasExt) item->setText(1, data.fileExt); _size = q->value(4).toLongLong(); item->setText(2, diskNames[diskNo]); item->setText(3, QString::number(_size)); item->setText(4, dt.date().toString(Qt::LocalDate)); item->setText(5, dt.time().toString(Qt::LocalDate)); item->setText(6, permsToQString(q->value(7).toInt())); QPixmap *pix = 0; if (item->iconId) { pix = dm->im->getPixmap(1, item->iconId); item->setIcon(0, QIcon(*pix)); }else{ if (item->itemType == FOLDER_ELEMENT) pix = dm->im->getDefaultPixmap(item->itemType, 0); else if (item->itemType == FILE_ELEMENT) pix = dm->im->getPixmap(0, data.defIcon); else pix = dm->im->getDefaultPixmap(item->itemType, item->fullType); item->setIcon(0, QIcon(*pix)); } delete pix; resultsTreeWidget->addTopLevelItem(item); } }
OSDictionary * AppleLVMVolume::getVolumeProperties(void) { // make a copy assert(lvProps); OSDictionary * props = OSDictionary::withDictionary(lvProps, lvProps->getCount() + 2); if (!props) return NULL; // not from header OSString * status = NULL; if (isPublished()) { status = OSString::withCString(kAppleRAIDStatusOnline); } else { status = OSString::withCString(kAppleRAIDStatusOffline); } if (status) { props->setObject(kAppleLVMVolumeStatusKey, status); status->release(); } props->setObject(kIOBSDNameKey, getDiskName()); return props; }