1 // directory_management.hpp --------------------------------------------------------------//
2
3 // Copyright 2010 Vicente J. Botet Escriba
4 // Copyright 2015 Andrey Semashev
5
6 // Distributed under the Boost Software License, Version 1.0.
7 // See http://www.boost.org/LICENSE_1_0.txt
8
9
10 #ifndef BOOST_DETAIL_WINAPI_DIRECTORY_MANAGEMENT_HPP
11 #define BOOST_DETAIL_WINAPI_DIRECTORY_MANAGEMENT_HPP
12
13 #include <boost/detail/winapi/basic_types.hpp>
14 #include <boost/detail/winapi/get_system_directory.hpp>
15
16 #ifdef BOOST_HAS_PRAGMA_ONCE
17 #pragma once
18 #endif
19
20 #if !defined( BOOST_USE_WINDOWS_H )
21 extern "C" {
22 #if !defined( BOOST_NO_ANSI_APIS )
23 BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
24 CreateDirectoryA(boost::detail::winapi::LPCSTR_, ::_SECURITY_ATTRIBUTES*);
25 BOOST_SYMBOL_IMPORT boost::detail::winapi::DWORD_ WINAPI
26 GetTempPathA(boost::detail::winapi::DWORD_ length, boost::detail::winapi::LPSTR_ buffer);
27 BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
28 RemoveDirectoryA(boost::detail::winapi::LPCSTR_);
29 #endif
30 BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
31 CreateDirectoryW(boost::detail::winapi::LPCWSTR_, ::_SECURITY_ATTRIBUTES*);
32 BOOST_SYMBOL_IMPORT boost::detail::winapi::DWORD_ WINAPI
33 GetTempPathW(boost::detail::winapi::DWORD_ length, boost::detail::winapi::LPWSTR_ buffer);
34 BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
35 RemoveDirectoryW(boost::detail::winapi::LPCWSTR_);
36 }
37 #endif
38
39 namespace boost {
40 namespace detail {
41 namespace winapi {
42
43 #if !defined( BOOST_NO_ANSI_APIS )
44 using ::GetTempPathA;
45 using ::RemoveDirectoryA;
46 #endif
47 using ::GetTempPathW;
48 using ::RemoveDirectoryW;
49
50 #if !defined( BOOST_NO_ANSI_APIS )
CreateDirectoryA(LPCSTR_ pPathName,PSECURITY_ATTRIBUTES_ pSecurityAttributes)51 BOOST_FORCEINLINE BOOL_ CreateDirectoryA(LPCSTR_ pPathName, PSECURITY_ATTRIBUTES_ pSecurityAttributes)
52 {
53 return ::CreateDirectoryA(pPathName, reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(pSecurityAttributes));
54 }
55 #endif
56
CreateDirectoryW(LPCWSTR_ pPathName,PSECURITY_ATTRIBUTES_ pSecurityAttributes)57 BOOST_FORCEINLINE BOOL_ CreateDirectoryW(LPCWSTR_ pPathName, PSECURITY_ATTRIBUTES_ pSecurityAttributes)
58 {
59 return ::CreateDirectoryW(pPathName, reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(pSecurityAttributes));
60 }
61
62 #if !defined( BOOST_NO_ANSI_APIS )
create_directory(LPCSTR_ pPathName,PSECURITY_ATTRIBUTES_ pSecurityAttributes)63 BOOST_FORCEINLINE BOOL_ create_directory(LPCSTR_ pPathName, PSECURITY_ATTRIBUTES_ pSecurityAttributes)
64 {
65 return ::CreateDirectoryA(pPathName, reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(pSecurityAttributes));
66 }
get_temp_path(DWORD_ length,LPSTR_ buffer)67 BOOST_FORCEINLINE DWORD_ get_temp_path(DWORD_ length, LPSTR_ buffer)
68 {
69 return ::GetTempPathA(length, buffer);
70 }
remove_directory(LPCSTR_ pPathName)71 BOOST_FORCEINLINE BOOL_ remove_directory(LPCSTR_ pPathName)
72 {
73 return ::RemoveDirectoryA(pPathName);
74 }
75 #endif
76
create_directory(LPCWSTR_ pPathName,PSECURITY_ATTRIBUTES_ pSecurityAttributes)77 BOOST_FORCEINLINE BOOL_ create_directory(LPCWSTR_ pPathName, PSECURITY_ATTRIBUTES_ pSecurityAttributes)
78 {
79 return ::CreateDirectoryW(pPathName, reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(pSecurityAttributes));
80 }
get_temp_path(DWORD_ length,LPWSTR_ buffer)81 BOOST_FORCEINLINE DWORD_ get_temp_path(DWORD_ length, LPWSTR_ buffer)
82 {
83 return ::GetTempPathW(length, buffer);
84 }
remove_directory(LPCWSTR_ pPathName)85 BOOST_FORCEINLINE BOOL_ remove_directory(LPCWSTR_ pPathName)
86 {
87 return ::RemoveDirectoryW(pPathName);
88 }
89
90 } // namespace winapi
91 } // namespace detail
92 } // namespace boost
93
94 #endif // BOOST_DETAIL_WINAPI_DIRECTORY_MANAGEMENT_HPP
95