Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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);
            
    }

}
Ejemplo n.º 3
0
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;
}