Provide initial implementations of Memory and Process concepts for various
[oota-llvm.git] / lib / System / AIX / Path.cpp
1 //===- llvm/System/AIX/Path.cpp - AIX Path Implementation -------*- C++ -*-===//
2 // 
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file was developed by Reid Spencer and is distributed under the 
6 // University of Illinois Open Source License. See LICENSE.TXT for details.
7 // 
8 //===----------------------------------------------------------------------===//
9 //
10 // This file provides the AIX specific implementation of the Path class.
11 //
12 //===----------------------------------------------------------------------===//
13
14 // Include the generic unix implementation
15 #include "../Unix/Path.cpp"
16
17 namespace llvm {
18 using namespace sys;
19
20 //===----------------------------------------------------------------------===//
21 //=== WARNING: Implementation here must contain only AIX specific code 
22 //===          and must not be generic UNIX code (see ../Unix/Path.cpp)
23 //===----------------------------------------------------------------------===//
24
25 bool 
26 Path::is_valid() const {
27   if (path.empty()) 
28     return false;
29   if (path.length() >= MAXPATHLEN)
30     return false;
31   return true;
32 }
33
34 Path
35 Path::GetTemporaryDirectory() {
36   char pathname[MAXPATHLEN];
37   strcpy(pathname,"/tmp/llvm_XXXXXX");
38   if (0 == mkdtemp(pathname))
39     ThrowErrno(std::string(pathname) + ": Can't create temporary directory");
40   Path result;
41   result.set_directory(pathname);
42   assert(result.is_valid() && "mkdtemp didn't create a valid pathname!");
43   return result;
44 }
45
46 std::string
47 Path::GetDLLSuffix() {
48   return "so";
49 }
50
51 }
52
53 // vim: sw=2 smartindent smarttab tw=80 autoindent expandtab