aboutsummaryrefslogtreecommitdiff
path: root/lib/System/Path.cpp
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2004-08-15 08:14:33 +0000
committerReid Spencer <rspencer@reidspencer.com>2004-08-15 08:14:33 +0000
commit439ed9036dbc9aacb212428241bcbd21cd064d24 (patch)
tree0c0729cac8781dd8901b7fba4edc1c2290dfa395 /lib/System/Path.cpp
parentd5cda8799577663d82ca5753e05f441dab40ba12 (diff)
Initial implementations of the ErrorCode and Path concepts for Linux.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15763 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/System/Path.cpp')
-rw-r--r--lib/System/Path.cpp90
1 files changed, 90 insertions, 0 deletions
diff --git a/lib/System/Path.cpp b/lib/System/Path.cpp
new file mode 100644
index 0000000000..a0c76dbd20
--- /dev/null
+++ b/lib/System/Path.cpp
@@ -0,0 +1,90 @@
+//===- Path.cpp - Path Operating System Concept -----------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// Copyright (C) 2004 eXtensible Systems, Inc. All Rights Reserved.
+//
+// This program is open source software; you can redistribute it and/or modify
+// it under the terms of the University of Illinois Open Source License. See
+// LICENSE.TXT (distributed with this software) for details.
+//
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+// or FITNESS FOR A PARTICULAR PURPOSE.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements the common Path concept for a variety of platforms.
+// A path is simply the name of some file system storage place. Paths can be
+// either directories or files.
+//
+//===----------------------------------------------------------------------===//
+/// @file lib/System/Path.cpp
+/// @author Reid Spencer <raspencer@x10sys.com> (original author)
+/// @version \verbatim $Id$ \endverbatim
+/// @date 2004/08/14
+/// @since 1.4
+/// @brief Defines the llvm::sys::Path class.
+//===----------------------------------------------------------------------===//
+
+#include "llvm/System/Path.h"
+
+namespace llvm {
+namespace sys {
+
+ErrorCode
+Path::append_directory( const std::string& dirname ) throw() {
+ this->append( dirname );
+ make_directory();
+ return NOT_AN_ERROR;
+}
+
+ErrorCode
+Path::append_file( const std::string& filename ) throw() {
+ this->append( filename );
+ return NOT_AN_ERROR;
+}
+
+ErrorCode
+Path::create( bool create_parents)throw() {
+ ErrorCode result ( NOT_AN_ERROR );
+ if ( is_directory() ) {
+ if ( create_parents ) {
+ result = this->create_directories( );
+ } else {
+ result = this->create_directory( );
+ }
+ } else if ( is_file() ) {
+ if ( create_parents ) {
+ result = this->create_directories( );
+ }
+ if ( result ) {
+ result = this->create_file( );
+ }
+ } else {
+ result = ErrorCode(ERR_SYS_INVALID_ARG);
+ }
+ return result;
+}
+
+ErrorCode
+Path::remove() throw() {
+ ErrorCode result( NOT_AN_ERROR );
+ if ( is_directory() ) {
+ if ( exists() )
+ this->remove_directory( );
+ } else if ( is_file() ) {
+ if ( exists() ) this->remove_file( );
+ } else {
+ result = ErrorCode(ERR_SYS_INVALID_ARG);
+ }
+ return result;
+}
+
+}
+}
+
+// Include the platform specific portions of this class
+#include "linux/Path.cpp"
+
+// vim: sw=2 smartindent smarttab tw=80 autoindent expandtab