Annotation of truecrypt/platform/unix/filesystempath.cpp, revision 1.1

1.1     ! root        1: /*
        !             2:  Copyright (c) 2008 TrueCrypt Foundation. All rights reserved.
        !             3: 
        !             4:  Governed by the TrueCrypt License 2.4 the full text of which is contained
        !             5:  in the file License.txt included in TrueCrypt binary and source code
        !             6:  distribution packages.
        !             7: */
        !             8: 
        !             9: #include "Platform/FilesystemPath.h"
        !            10: #include "Platform/SystemException.h"
        !            11: #include "Platform/StringConverter.h"
        !            12: #include <sys/stat.h>
        !            13: 
        !            14: namespace TrueCrypt
        !            15: {
        !            16:        void FilesystemPath::Delete () const
        !            17:        {
        !            18:                throw_sys_sub_if (remove (string (*this).c_str()) == -1, Path);
        !            19:        }
        !            20: 
        !            21:        FilesystemPathType::Enum FilesystemPath::GetType () const
        !            22:        {
        !            23:                // Strip trailing directory separator
        !            24:                wstring path = Path;
        !            25:                size_t pos = path.find_last_not_of (L'/');
        !            26:                if (path.size() > 2 && pos != path.size() - 1)
        !            27:                        path = path.substr (0, pos + 1);
        !            28: 
        !            29:                struct stat statData;
        !            30:                throw_sys_sub_if (stat (StringConverter::ToSingle (path).c_str(), &statData) != 0, Path);
        !            31:                
        !            32:                if (S_ISREG (statData.st_mode)) return FilesystemPathType::File;
        !            33:                if (S_ISDIR (statData.st_mode)) return FilesystemPathType::Directory;
        !            34:                if (S_ISCHR (statData.st_mode)) return FilesystemPathType::CharacterDevice;
        !            35:                if (S_ISBLK (statData.st_mode)) return FilesystemPathType::BlockDevice;
        !            36:                if (S_ISLNK (statData.st_mode)) return FilesystemPathType::SymbolickLink;
        !            37: 
        !            38:                return FilesystemPathType::Unknown;
        !            39:        }
        !            40: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.