summaryrefslogtreecommitdiffstats
path: root/llvm/lib/System
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/System')
-rw-r--r--llvm/lib/System/Unix/Path.inc27
-rw-r--r--llvm/lib/System/Unix/Signals.inc2
-rw-r--r--llvm/lib/System/Win32/Path.inc31
3 files changed, 38 insertions, 22 deletions
diff --git a/llvm/lib/System/Unix/Path.inc b/llvm/lib/System/Unix/Path.inc
index ffcd6949b5e..7ced25ab8d0 100644
--- a/llvm/lib/System/Unix/Path.inc
+++ b/llvm/lib/System/Unix/Path.inc
@@ -246,6 +246,15 @@ Path::isDirectory() const {
return S_ISDIR(buf.st_mode);
}
+bool
+Path::isHidden() const {
+ size_t slash = path.rfind('/');
+ return (slash != std::string::npos &&
+ slash < path.length()-1 &&
+ path[slash+1] == '.') ||
+ (!path.empty() && slash == std::string::npos && path[0] == '.');
+}
+
std::string
Path::getBasename() const {
// Find the last slash
@@ -388,17 +397,17 @@ static bool AddPermissionBits(const std::string& Filename, int bits) {
return true;
}
-void Path::makeReadable() {
+void Path::makeReadableOnDisk() {
if (!AddPermissionBits(path,0444))
ThrowErrno(path + ": can't make file readable");
}
-void Path::makeWriteable() {
+void Path::makeWriteableOnDisk() {
if (!AddPermissionBits(path,0222))
ThrowErrno(path + ": can't make file writable");
}
-void Path::makeExecutable() {
+void Path::makeExecutableOnDisk() {
if (!AddPermissionBits(path,0111))
ThrowErrno(path + ": can't make file executable");
}
@@ -511,7 +520,7 @@ Path::eraseSuffix() {
}
bool
-Path::createDirectory( bool create_parents) {
+Path::createDirectoryOnDisk( bool create_parents) {
// Get a writeable copy of the path name
char pathname[MAXPATHLEN];
path.copy(pathname,MAXPATHLEN);
@@ -549,7 +558,7 @@ Path::createDirectory( bool create_parents) {
}
bool
-Path::createFile() {
+Path::createFileOnDisk() {
// Create the file
int fd = ::creat(path.c_str(), S_IRUSR | S_IWUSR);
if (fd < 0)
@@ -560,7 +569,7 @@ Path::createFile() {
}
bool
-Path::createTemporaryFile(bool reuse_current) {
+Path::createTemporaryFileOnDisk(bool reuse_current) {
// Make this into a unique file name
makeUnique( reuse_current );
@@ -574,7 +583,7 @@ Path::createTemporaryFile(bool reuse_current) {
}
bool
-Path::destroy(bool remove_contents) const {
+Path::eraseFromDisk(bool remove_contents) const {
// Make sure we're dealing with a directory
if (isFile()) {
if (0 != unlink(path.c_str()))
@@ -604,7 +613,7 @@ Path::destroy(bool remove_contents) const {
}
bool
-Path::rename(const Path& newName) {
+Path::renamePathOnDisk(const Path& newName) {
if (0 != ::rename(path.c_str(), newName.c_str()))
ThrowErrno(std::string("can't rename '") + path + "' as '" +
newName.toString() + "' ");
@@ -612,7 +621,7 @@ Path::rename(const Path& newName) {
}
bool
-Path::setStatusInfo(const StatusInfo& si) const {
+Path::setStatusInfoOnDisk(const StatusInfo& si) const {
struct utimbuf utb;
utb.actime = si.modTime.toPosixTime();
utb.modtime = utb.actime;
diff --git a/llvm/lib/System/Unix/Signals.inc b/llvm/lib/System/Unix/Signals.inc
index ce5b94b9470..a9af969d5ba 100644
--- a/llvm/lib/System/Unix/Signals.inc
+++ b/llvm/lib/System/Unix/Signals.inc
@@ -112,7 +112,7 @@ RETSIGTYPE SignalHandler(int Sig) {
if (DirectoriesToRemove != 0)
while (!DirectoriesToRemove->empty()) {
- DirectoriesToRemove->back().destroy(true);
+ DirectoriesToRemove->back().eraseFromDisk(true);
DirectoriesToRemove->pop_back();
}
diff --git a/llvm/lib/System/Win32/Path.inc b/llvm/lib/System/Win32/Path.inc
index 9e7010a4390..252347e0873 100644
--- a/llvm/lib/System/Win32/Path.inc
+++ b/llvm/lib/System/Win32/Path.inc
@@ -103,10 +103,10 @@ Path::GetTemporaryDirectory() {
// If there's a directory left over from a previous LLVM execution that
// happened to have the same process id, get rid of it.
- result.destroy(true);
+ result.eraseFromDisk(true);
// And finally (re-)create the empty directory.
- result.createDirectory(false);
+ result.createDirectoryOnDisk(false);
TempDirectory = new Path(result);
return *TempDirectory;
}
@@ -206,6 +206,13 @@ Path::isDirectory() const {
return fi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
}
+bool
+Path::isHidden() const {
+ // FIXME: implement this correctly for Win32. It should check the hidden file
+ // attribute.
+ return false;
+}
+
std::string
Path::getBasename() const {
// Find the last slash
@@ -322,11 +329,11 @@ static bool AddPermissionBits(const std::string& Filename, int bits) {
return true;
}
-void Path::makeReadable() {
+void Path::makeReadableOnDisk() {
// All files are readable on Windows (ignoring security attributes).
}
-void Path::makeWriteable() {
+void Path::makeWriteableOnDisk() {
DWORD attr = GetFileAttributes(path.c_str());
// If it doesn't exist, we're done.
@@ -339,7 +346,7 @@ void Path::makeWriteable() {
}
}
-void Path::makeExecutable() {
+void Path::makeExecutableOnDisk() {
// All files are executable on Windows (ignoring security attributes).
}
@@ -447,7 +454,7 @@ Path::eraseSuffix() {
}
bool
-Path::createDirectory( bool create_parents) {
+Path::createDirectoryOnDisk( bool create_parents) {
// Get a writeable copy of the path name
char *pathname = reinterpret_cast<char *>(_alloca(path.length()+1));
path.copy(pathname,path.length());
@@ -495,7 +502,7 @@ Path::createDirectory( bool create_parents) {
}
bool
-Path::createFile() {
+Path::createFileOnDisk() {
// Create the file
HANDLE h = CreateFile(path.c_str(), GENERIC_WRITE, 0, NULL, CREATE_NEW,
FILE_ATTRIBUTE_NORMAL, NULL);
@@ -507,7 +514,7 @@ Path::createFile() {
}
bool
-Path::destroy(bool remove_contents) const {
+Path::eraseFromDisk(bool remove_contents) const {
if (isFile()) {
DWORD attr = GetFileAttributes(path.c_str());
@@ -571,7 +578,7 @@ Path::destroy(bool remove_contents) const {
for (std::vector<Path>::iterator I = list.begin(); I != list.end();
++I) {
Path &aPath = *I;
- aPath.destroy(true);
+ aPath.eraseFromDisk(true);
}
} else {
if (GetLastError() != ERROR_FILE_NOT_FOUND)
@@ -615,7 +622,7 @@ bool Path::getMagicNumber(std::string& Magic, unsigned len) const {
}
bool
-Path::rename(const Path& newName) {
+Path::renamePathOnDisk(const Path& newName) {
// FIXME: This should rename a directory too.
if (!isFile()) return false;
if (!MoveFile(path.c_str(), newName.c_str()))
@@ -625,7 +632,7 @@ Path::rename(const Path& newName) {
}
bool
-Path::setStatusInfo(const StatusInfo& si) const {
+Path::setStatusInfoOnDisk(const StatusInfo& si) const {
if (!isFile()) return false;
HANDLE h = CreateFile(path.c_str(),
@@ -705,7 +712,7 @@ Path::makeUnique(bool reuse_current) {
}
bool
-Path::createTemporaryFile(bool reuse_current) {
+Path::createTemporaryFileOnDisk(bool reuse_current) {
// Make this into a unique file name
makeUnique( reuse_current );
OpenPOWER on IntegriCloud