Annotation of truecrypt/platform/unix/filesystempath.cpp, revision 1.1.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.