1 // Copyright (c) 2006, 2007 Julio M. Merino Vidal 2 // Copyright (c) 2008 Ilya Sokolov, Boris Schaeling 3 // Copyright (c) 2009 Boris Schaeling 4 // Copyright (c) 2010 Felipe Tanus, Boris Schaeling 5 // Copyright (c) 2011, 2012 Jeff Flinn, Boris Schaeling 6 // 7 // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 10 #ifndef BOOST_PROCESS_DETAIL_POSIX_START_DIR_HPP 11 #define BOOST_PROCESS_DETAIL_POSIX_START_DIR_HPP 12 13 #include <boost/process/detail/posix/handler.hpp> 14 #include <string> 15 #include <unistd.h> 16 17 namespace boost { namespace process { namespace detail { namespace posix { 18 19 template<typename Char> 20 struct start_dir_init : handler_base_ext 21 { 22 typedef Char value_type; 23 typedef std::basic_string<value_type> string_type; start_dir_initboost::process::detail::posix::start_dir_init24 start_dir_init(string_type s) : s_(std::move(s)) {} 25 26 template <class PosixExecutor> on_exec_setupboost::process::detail::posix::start_dir_init27 void on_exec_setup(PosixExecutor&) const 28 { 29 ::chdir(s_.c_str()); 30 } strboost::process::detail::posix::start_dir_init31 const string_type & str() const {return s_;} 32 private: 33 string_type s_; 34 }; 35 36 }}}} 37 38 #endif 39