VirtualBox

Ignore:
Timestamp:
Dec 15, 2011 11:33:47 AM (13 years ago)
Author:
vboxsync
Message:

more symlink stuff

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r3/posix/fileio-posix.cpp

    r39083 r39626  
    204204        return (rc);
    205205
    206     int fh = open(pszNativeFilename, fOpenMode, fMode);
     206    int fh;
     207#if defined(RT_OS_LINUX) || defined(RT_OS_SOLARIS) || defined(RT_OS_FREEBSD)
     208    /* XXX Darwin? */
     209    if (fOpen & RTFILE_O_NO_SYMLINKS)
     210    {
     211        const char *pszName;
     212        int fhDir;
     213        rc = rtPathOpenPathNoFollowFh(pszNativeFilename, &fhDir, &pszName);
     214        if (RT_FAILURE(rc))
     215        {
     216            rtPathFreeNative(pszNativeFilename, pszFilename);
     217            return rc;
     218        }
     219        fh = openat(fhDir, pszName, fOpenMode, fMode | O_NOFOLLOW);
     220        close(fhDir);
     221    }
     222    else
     223#endif
     224    {
     225        fh = open(pszNativeFilename, fOpenMode, fMode);
     226    }
    207227    int iErr = errno;
    208228
Note: See TracChangeset for help on using the changeset viewer.

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