diff options
Diffstat (limited to 'boost/process/detail/posix/search_path.hpp')
-rw-r--r-- | boost/process/detail/posix/search_path.hpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/boost/process/detail/posix/search_path.hpp b/boost/process/detail/posix/search_path.hpp new file mode 100644 index 0000000000..1ce5c65575 --- /dev/null +++ b/boost/process/detail/posix/search_path.hpp @@ -0,0 +1,39 @@ +// Copyright (c) 2006, 2007 Julio M. Merino Vidal +// Copyright (c) 2008 Ilya Sokolov, Boris Schaeling +// Copyright (c) 2009 Boris Schaeling +// Copyright (c) 2010 Felipe Tanus, Boris Schaeling +// Copyright (c) 2011, 2012 Jeff Flinn, Boris Schaeling +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PROCESS_POSIX_SEARCH_PATH_HPP +#define BOOST_PROCESS_POSIX_SEARCH_PATH_HPP + +#include <boost/process/detail/config.hpp> +#include <boost/filesystem.hpp> +#include <boost/tokenizer.hpp> +#include <string> +#include <stdexcept> +#include <stdlib.h> +#include <unistd.h> + +namespace boost { namespace process { namespace detail { namespace posix { + +inline boost::filesystem::path search_path( + const boost::filesystem::path &filename, + const std::vector<boost::filesystem::path> &path) +{ + std::string result; + for (const boost::filesystem::path & pp : path) + { + auto p = pp / filename; + if (!::access(p.c_str(), X_OK)) + return p; + } + return ""; +} + +}}}} + +#endif |