15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- FileSystem.cpp -----------------------------------------------------===//
25460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
35460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//                     The MCLinker Project
45460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
55460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// This file is distributed under the University of Illinois Open Source
65460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// License. See LICENSE.TXT for details.
75460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
85460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===----------------------------------------------------------------------===//
937b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/Config/Config.h"
1037b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/Support/FileSystem.h"
1137b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/Support/Path.h"
125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
13f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines//===----------------------------------------------------------------------===//
145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// non-member functions
15f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines//===----------------------------------------------------------------------===//
1637b74a387bb3993387029859c2d9d051c41c724eStephen Hinesbool mcld::sys::fs::exists(const Path& pPath) {
17f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines  mcld::sys::fs::FileStatus file_status;
18f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines  mcld::sys::fs::detail::status(pPath, file_status);
19f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines  return (file_status.type() != mcld::sys::fs::StatusError) &&
20f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines         (file_status.type() != mcld::sys::fs::FileNotFound);
21f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines}
22f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines
2337b74a387bb3993387029859c2d9d051c41c724eStephen Hinesbool mcld::sys::fs::is_directory(const Path& pPath) {
24f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines  FileStatus file_status;
25f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines  detail::status(pPath, file_status);
26f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines  return (file_status.type() == mcld::sys::fs::DirectoryFile);
27f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines}
285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
29551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines// Include the truly platform-specific parts.
30affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#if defined(MCLD_ON_UNIX)
315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include "Unix/FileSystem.inc"
32551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines#include "Unix/PathV3.inc"
33551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines#endif
34affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#if defined(MCLD_ON_WIN32)
355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include "Windows/FileSystem.inc"
36551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines#include "Windows/PathV3.inc"
37551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines#endif
38