VirtualBox

Changeset 26608 in vbox for trunk/src/VBox/Runtime/r3/linux


Ignore:
Timestamp:
Feb 17, 2010 12:48:33 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
57801
Message:

IPRT: linux implementation of RTSystemQueryDmiString.

Location:
trunk/src/VBox/Runtime/r3/linux
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r3/linux/sysfs.cpp

    r26253 r26608  
    208208    pszBuf[cchRead >= 0 ? cchRead : 0] = '\0';
    209209    return cchRead;
     210}
     211
     212
     213RTDECL(int) RTLinuxSysFsReadFile(int fd, void *pvBuf, size_t cbBuf, size_t *pcbRead)
     214{
     215    int     rc;
     216    ssize_t cbRead = read(fd, pvBuf, cbBuf);
     217    if (cbRead >= 0)
     218    {
     219        if (pcbRead)
     220            *pcbRead = cbRead;
     221        if ((size_t)cbRead < cbBuf)
     222            rc = VINF_SUCCESS;
     223        else
     224        {
     225            /* Check for EOF */
     226            char    ch;
     227            off_t   off     = lseek(fd, 0, SEEK_CUR);
     228            ssize_t cbRead2 = read(fd, &ch, 1);
     229            if (cbRead2 == 0)
     230                rc = VINF_SUCCESS;
     231            else if (cbRead2 > 0)
     232            {
     233                lseek(fd, off, SEEK_SET);
     234                rc = VERR_BUFFER_OVERFLOW;
     235            }
     236            else
     237                rc = RTErrConvertFromErrno(errno);
     238        }
     239    }
     240    else
     241        rc = RTErrConvertFromErrno(errno);
     242    return rc;
    210243}
    211244
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette