From 63e7a4a77cb8ceed7b42561fe3202b0b48d86db6 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 18 Jun 2015 14:41:45 +0200 Subject: Move path and filesystem from build2 to libbutl --- build/path.cxx | 109 --------------------------------------------------------- 1 file changed, 109 deletions(-) delete mode 100644 build/path.cxx (limited to 'build/path.cxx') diff --git a/build/path.cxx b/build/path.cxx deleted file mode 100644 index 3a3ea3d..0000000 --- a/build/path.cxx +++ /dev/null @@ -1,109 +0,0 @@ -// file : build/path.cxx -*- C++ -*- -// copyright : Copyright (c) 2014-2015 Code Synthesis Ltd -// license : MIT; see accompanying LICENSE file - -#include - -#ifdef _WIN32 -# include // _MAX_PATH -# include // _[w]getcwd, _[w]chdir -#else -# include // EINVAL -# include // mbstowcs, wcstombs -# include // PATH_MAX -# include // getcwd, chdir -#endif - -#include - -using namespace std; - -namespace build -{ - char const* invalid_path_base:: - what () const throw () - { - return "invalid filesystem path"; - } - - // - // char - // - - template <> - path_traits::string_type path_traits:: - current () - { - // @@ throw system_error (and in the other current() versions). - -#ifdef _WIN32 - char cwd[_MAX_PATH]; - if(_getcwd(cwd, _MAX_PATH) == 0) - throw system_error (errno, system_category ()); -#else - char cwd[PATH_MAX]; - if (getcwd (cwd, PATH_MAX) == 0) - throw system_error (errno, system_category ()); -#endif - - return string_type (cwd); - } - - template <> - void path_traits:: - current (string_type const& s) - { -#ifdef _WIN32 - if(_chdir(s.c_str ()) != 0) - throw system_error (errno, system_category ()); -#else - if (chdir (s.c_str ()) != 0) - throw system_error (errno, system_category ()); -#endif - } - - // - // wchar_t - // - - template <> - path_traits::string_type path_traits:: - current () - { -#ifdef _WIN32 - wchar_t wcwd[_MAX_PATH]; - if(_wgetcwd(wcwd, _MAX_PATH) == 0) - throw system_error (errno, system_category ()); -#else - char cwd[PATH_MAX]; - if (getcwd (cwd, PATH_MAX) == 0) - throw system_error (errno, system_category ()); - - wchar_t wcwd[PATH_MAX]; - if (mbstowcs (wcwd, cwd, PATH_MAX) == size_type (-1)) - throw system_error (EINVAL, system_category ()); -#endif - - return string_type (wcwd); - } - - template <> - void path_traits:: - current (string_type const& s) - { -#ifdef _WIN32 - if(_wchdir(s.c_str ()) != 0) - throw system_error (errno, system_category ()); -#else - char ns[PATH_MAX + 1]; - - if (wcstombs (ns, s.c_str (), PATH_MAX) == size_type (-1)) - throw system_error (EINVAL, system_category ()); - - ns[PATH_MAX] = '\0'; - - if (chdir (ns) != 0) - throw system_error (errno, system_category ()); -#endif - } -} -- cgit v1.1