fs.cpp revision c97989161fbe75bc14cea477a5443bbf474dd3ad
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * innotek Portable Runtime - File System.
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * Copyright (C) 2006-2007 innotek GmbH
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * This file is part of VirtualBox Open Source Edition (OSE), as
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * available from http://www.virtualbox.org. This file is free software;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * you can redistribute it and/or modify it under the terms of the GNU
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * General Public License as published by the Free Software Foundation,
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * distribution. VirtualBox OSE is distributed in the hope that it will
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * be useful, but WITHOUT ANY WARRANTY of any kind.
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * If you received this file as part of a commercial VirtualBox
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * distribution, then only the terms of your commercial VirtualBox
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * license agreement apply instead of the previous paragraph.
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster/*******************************************************************************
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster* Header Files *
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster*******************************************************************************/
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * Converts dos-style attributes to Unix attributes.
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * @param fMode The mode mask containing dos-style attibutes only.
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * @param pszName The filename which this applies to (exe check).
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * @param cbName The length of that filename. (optional, set 0)
2d0a88b18a041738cfe635b45bd1db56af469c91Allan FosterRTFMODE rtFsModeFromDos(RTFMODE fMode, const char *pszName, unsigned cbName)
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster /* everything is readable. */
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster fMode |= RTFS_UNIX_IRUSR | RTFS_UNIX_IRGRP | RTFS_UNIX_IROTH;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster /* directories are executable. */
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster fMode |= RTFS_TYPE_DIRECTORY | RTFS_UNIX_IXUSR | RTFS_UNIX_IXGRP | RTFS_UNIX_IXOTH;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster /* check for executable extension. */
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster fMode |= RTFS_UNIX_IXUSR | RTFS_UNIX_IXGRP | RTFS_UNIX_IXOTH;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster /* writable? */
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster fMode |= RTFS_UNIX_IWUSR | RTFS_UNIX_IWGRP | RTFS_UNIX_IWOTH;
return fMode;
return fMode;
return fMode;
#ifndef __WIN__
void rtFsConvertStatToObjInfo(PRTFSOBJINFO pObjInfo, const struct stat *pStat, const char *pszName, unsigned cbName)
#ifdef HAVE_STAT_NSEC
RTTimeSpecAddNano(RTTimeSpecSetSeconds(&pObjInfo->AccessTime, pStat->st_atime), pStat->st_atimensec);
RTTimeSpecAddNano(RTTimeSpecSetSeconds(&pObjInfo->ModificationTime, pStat->st_mtime), pStat->st_mtimensec);
RTTimeSpecAddNano(RTTimeSpecSetSeconds(&pObjInfo->ChangeTime, pStat->st_ctime), pStat->st_ctimensec);
#ifdef HAVE_STAT_BIRTHTIME
RTTimeSpecAddNano(RTTimeSpecSetSeconds(&pObjInfo->BirthTime, pStat->st_birthtime), pStat->st_birthtimensec);
# ifdef HAVE_STAT_BIRTHTIME
# ifdef HAVE_STAT_BIRTHTIME
# ifdef HAVE_STAT_BIRTHTIME
#ifndef HAVE_STAT_BIRTHTIME
#ifdef S_ISTXT
#ifdef S_IFWHT
#ifdef HAVE_STAT_FLAGS
#ifdef HAVE_STAT_GEN