00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "FsPath.h"
00010
00011 #include "Log.h"
00012
00013 #include "boost/filesystem/operations.hpp"
00014 #include "boost/filesystem/convenience.hpp"
00015 #include "boost/filesystem/exception.hpp"
00016 #include "boost/version.hpp"
00017
00018
00019 inline boost::filesystem::path
00020 boostPath(const std::string &file)
00021 {
00022 #if BOOST_VERSION < 103100
00023 return boost::filesystem::path(file);
00024 #else
00025 return boost::filesystem::path(file,
00026 boost::filesystem::portable_posix_name);
00027 #endif
00028 }
00029
00030
00031
00032
00033
00034
00035 std::string
00036 FsPath::getNative(const std::string &file)
00037 {
00038 return boostPath(file).native_file_string();
00039 }
00040
00041
00042
00043
00044
00045 bool
00046 FsPath::exists(const std::string &file)
00047 {
00048 return boost::filesystem::exists(boostPath(file));
00049 }
00050
00051
00052
00053
00054
00055
00056
00057 std::string
00058 FsPath::join(const std::string &dir, const std::string &file)
00059 {
00060 return (boostPath(dir) / boostPath(file)).string();
00061 }
00062
00063
00064
00065
00066
00067 void
00068 FsPath::createPath(const std::string &file)
00069 {
00070 boost::filesystem::create_directories(boostPath(file).branch_path());
00071 }
00072