VirtualBox

Changeset 85875 in vbox


Ignore:
Timestamp:
Aug 24, 2020 4:22:01 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
140046
Message:

Main: bugref:9224: Added RTFileQuerySectorSize into IPRT

Location:
trunk
Files:
6 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/file.h

    r82968 r85875  
    594594
    595595/**
     596 * Queries the sector size (/ logical block size) for a disk or similar.
     597 *
     598 * @returns IPRT status code.
     599 * @retval  VERR_INVALID_FUNCTION if not a disk/similar.  Could also be returned
     600 *          if not really implemented.
     601 * @param   hFile       Handle to the disk.  This must typically be a device
     602 *                      rather than a file or directory, though this may vary
     603 *                      from OS to OS.
     604 * @param   pcbSector   Where to store the sector size.
     605 */
     606RTDECL(int) RTFileQuerySectorSize(RTFILE hFile, uint32_t *pcbSector);
     607
     608/**
    596609 * Gets the current file position.
    597610 *
  • trunk/include/iprt/mangling.h

    r85616 r85875  
    965965# define RTFileQueryFsSizes                             RT_MANGLER(RTFileQueryFsSizes)
    966966# define RTFileQueryInfo                                RT_MANGLER(RTFileQueryInfo)
     967# define RTFileQuerySectorSize                          RT_MANGLER(RTFileQuerySectorSize)
    967968# define RTFileQuerySize                                RT_MANGLER(RTFileQuerySize)
    968969# define RTFileRead                                     RT_MANGLER(RTFileRead)
  • trunk/src/VBox/Runtime/Makefile.kmk

    r85672 r85875  
    908908        r3/win/env-win.cpp \
    909909        r3/win/RTCrStoreCreateSnapshotById-win.cpp \
     910        r3/win/RTFileQuerySectorSize-win.cpp \
    910911        r3/win/RTHandleGetStandard-win.cpp \
    911912        r3/win/RTLocaleQueryNormalizedBaseLocaleName-win.cpp \
     
    9991000        r3/linux/thread-affinity-linux.cpp \
    10001001        r3/linux/RTFileCopyPartEx-linux.cpp \
     1002        r3/linux/RTFileQuerySectorSize-linux.cpp \
    10011003        r3/linux/RTFileSetAllocationSize-linux.cpp \
    10021004        r3/linux/RTProcIsRunningByName-linux.cpp \
     
    10791081        generic/RTFileCopyPartEx-generic.cpp \
    10801082        generic/RTFileMove-generic.cpp \
     1083        generic/RTFileQuerySectorSize-generic.cpp \
    10811084        generic/RTFileSetAllocationSize-generic.cpp \
    10821085        generic/RTLogWriteDebugger-generic.cpp \
     
    11871190        r3/darwin/RTCrStoreCreateSnapshotById-darwin.cpp \
    11881191        r3/darwin/filelock-darwin.cpp \
     1192        r3/darwin/RTFileQuerySectorSize-darwin.cpp \
    11891193        r3/darwin/krnlmod-darwin.cpp \
    11901194        r3/darwin/mp-darwin.cpp \
     
    12781282        generic/RTThreadGetNativeState-generic.cpp \
    12791283        r3/freebsd/fileaio-freebsd.cpp \
     1284        r3/freebsd/RTFileQuerySectorSize-freebsd.cpp \
    12801285        r3/freebsd/mp-freebsd.cpp \
    12811286        r3/freebsd/systemmem-freebsd.cpp \
     
    13391344        generic/RTFileCopyPartEx-generic.cpp \
    13401345        generic/RTFileMove-generic.cpp \
     1346        generic/RTFileQuerySectorSize-generic.cpp \
    13411347        generic/RTLogWriteDebugger-generic.cpp \
    13421348        generic/RTPathGetCurrentOnDrive-generic.cpp \
     
    14911497        r3/posix/utf8-posix.cpp \
    14921498        r3/solaris/fileaio-solaris.cpp \
     1499        r3/solaris/RTFileQuerySectorSize-solaris.cpp \
    14931500        r3/solaris/krnlmod-solaris.cpp \
    14941501        r3/solaris/systemmem-solaris.cpp \
     
    15221529        generic/RTFileCopyPartEx-generic.cpp \
    15231530        generic/RTFileMove-generic.cpp \
     1531        generic/RTFileQuerySectorSize-generic.cpp \
    15241532        generic/RTFileSetAllocationSize-generic.cpp \
    15251533        generic/RTLogWriteDebugger-generic.cpp \
  • trunk/src/VBox/Runtime/r3/posix/fileio-posix.cpp

    r85495 r85875  
    680680        *pcbSize = st.st_size;
    681681        if (   st.st_size != 0
    682 #if defined(RT_OS_SOLARIS)
     682#if defined(RT_OS_SOLARIS) || defined(RT_OS_DARWIN)
    683683            || (!S_ISBLK(st.st_mode) && !S_ISCHR(st.st_mode))
    684 #elif defined(RT_OS_FREEBSD) || defined(RT_OS_NETBSD)
     684#elif defined(RT_OS_FREEBSD) || defined(RT_OS_NETBSD) || defined(RT_OS_DARWIN)
    685685            || !S_ISCHR(st.st_mode)
    686686#else
     
    705705            }
    706706        }
    707         /* must be a block device, fail on failure. */
     707
     708        /* Always fail block devices.  Character devices doesn't all need to be
     709           /dev/rdisk* nodes, they should return ENOTTY but include EINVAL too. */
     710        if (!S_ISBLK(st.st_mode) && (errno == ENOTTY || errno == EINVAL))
     711            return VINF_SUCCESS;
    708712
    709713#elif defined(RT_OS_SOLARIS)
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