//===- FileSystem.cpp -----------------------------------------------------===//
//
//                     The MCLinker Project
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "mcld/Config/Config.h"
#include "mcld/Support/FileSystem.h"
#include "mcld/Support/Path.h"

//===----------------------------------------------------------------------===//
// non-member functions
//===----------------------------------------------------------------------===//
bool mcld::sys::fs::exists(const Path& pPath) {
  mcld::sys::fs::FileStatus file_status;
  mcld::sys::fs::detail::status(pPath, file_status);
  return (file_status.type() != mcld::sys::fs::StatusError) &&
         (file_status.type() != mcld::sys::fs::FileNotFound);
}

bool mcld::sys::fs::is_directory(const Path& pPath) {
  FileStatus file_status;
  detail::status(pPath, file_status);
  return (file_status.type() == mcld::sys::fs::DirectoryFile);
}

// Include the truly platform-specific parts.
#if defined(MCLD_ON_UNIX)
#include "Unix/FileSystem.inc"
#include "Unix/PathV3.inc"
#endif
#if defined(MCLD_ON_WIN32)
#include "Windows/FileSystem.inc"
#include "Windows/PathV3.inc"
#endif