diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2004-08-15 08:14:33 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2004-08-15 08:14:33 +0000 |
commit | 439ed9036dbc9aacb212428241bcbd21cd064d24 (patch) | |
tree | 0c0729cac8781dd8901b7fba4edc1c2290dfa395 /lib/System/Path.cpp | |
parent | d5cda8799577663d82ca5753e05f441dab40ba12 (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.cpp | 90 |
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 |