blob: a0c76dbd20626cdbe2796067e1133a87262fc48e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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
|