diff options
Diffstat (limited to 'cutl/fs/path.cxx')
-rw-r--r-- | cutl/fs/path.cxx | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/cutl/fs/path.cxx b/cutl/fs/path.cxx deleted file mode 100644 index 0a95507..0000000 --- a/cutl/fs/path.cxx +++ /dev/null @@ -1,120 +0,0 @@ -// file : cutl/fs/path.cxx -// license : MIT; see accompanying LICENSE file - -#ifdef _WIN32 -# include <stdlib.h> // _MAX_PATH -# include <direct.h> // _[w]getcwd, _[w]chdir -#else -# include <stdlib.h> // mbstowcs, wcstombs -# include <limits.h> // PATH_MAX -# include <unistd.h> // getcwd, chdir -#endif - -#ifndef _WIN32 -# ifndef PATH_MAX -# define PATH_MAX 4096 -# endif -#endif - -#include <cutl/fs/path.hxx> - -namespace cutl -{ - namespace fs - { - char const* invalid_path_base:: - what () const LIBCUTL_NOTHROW_NOEXCEPT - { - return "invalid filesystem path"; - } - - // - // char - // - - template <> - LIBCUTL_EXPORT basic_path<char> basic_path<char>:: - current () - { -#ifdef _WIN32 - char cwd[_MAX_PATH]; - if(_getcwd(cwd, _MAX_PATH) == 0) - throw invalid_basic_path<char> ("."); -#else - char cwd[PATH_MAX]; - if (getcwd (cwd, PATH_MAX) == 0) - throw invalid_basic_path<char> ("."); -#endif - - return basic_path<char> (cwd); - } - - template <> - LIBCUTL_EXPORT void basic_path<char>:: - current (basic_path const& p) - { - string_type const& s (p.string ()); - - if (p.empty ()) - throw invalid_basic_path<char> (s); - -#ifdef _WIN32 - if(_chdir(s.c_str ()) != 0) - throw invalid_basic_path<char> (s); -#else - if (chdir (s.c_str ()) != 0) - throw invalid_basic_path<char> (s); -#endif - } - - // - // wchar_t - // - - template <> - LIBCUTL_EXPORT basic_path<wchar_t> basic_path<wchar_t>:: - current () - { -#ifdef _WIN32 - wchar_t wcwd[_MAX_PATH]; - if(_wgetcwd(wcwd, _MAX_PATH) == 0) - throw invalid_basic_path<wchar_t> (L"."); -#else - char cwd[PATH_MAX]; - if (getcwd (cwd, PATH_MAX) == 0) - throw invalid_basic_path<wchar_t> (L"."); - - wchar_t wcwd[PATH_MAX]; - if (mbstowcs (wcwd, cwd, PATH_MAX) == size_type (-1)) - throw invalid_basic_path<wchar_t> (L"."); -#endif - - return basic_path<wchar_t> (wcwd); - } - - template <> - LIBCUTL_EXPORT void basic_path<wchar_t>:: - current (basic_path const& p) - { - string_type const& s (p.string ()); - - if (p.empty ()) - throw invalid_basic_path<wchar_t> (s); - -#ifdef _WIN32 - if(_wchdir(s.c_str ()) != 0) - throw invalid_basic_path<wchar_t> (s); -#else - char ns[PATH_MAX + 1]; - - if (wcstombs (ns, s.c_str (), PATH_MAX) == size_type (-1)) - throw invalid_basic_path<wchar_t> (s); - - ns[PATH_MAX] = '\0'; - - if (chdir (ns) != 0) - throw invalid_basic_path<wchar_t> (s); -#endif - } - } -} |