utils.cpp revision 275988
1// Copyright (c) 2007 The NetBSD Foundation, Inc. 2// All rights reserved. 3// 4// Redistribution and use in source and binary forms, with or without 5// modification, are permitted provided that the following conditions 6// are met: 7// 1. Redistributions of source code must retain the above copyright 8// notice, this list of conditions and the following disclaimer. 9// 2. Redistributions in binary form must reproduce the above copyright 10// notice, this list of conditions and the following disclaimer in the 11// documentation and/or other materials provided with the distribution. 12// 13// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND 14// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 15// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 16// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY 18// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 20// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 22// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 23// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 24// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 26#include "atf-c++/utils.hpp" 27 28extern "C" { 29#include "atf-c/utils.h" 30} 31 32#include <cstdlib> 33#include <iostream> 34 35void 36atf::utils::cat_file(const std::string& path, const std::string& prefix) 37{ 38 atf_utils_cat_file(path.c_str(), prefix.c_str()); 39} 40 41void 42atf::utils::copy_file(const std::string& source, const std::string& destination) 43{ 44 atf_utils_copy_file(source.c_str(), destination.c_str()); 45} 46 47bool 48atf::utils::compare_file(const std::string& path, const std::string& contents) 49{ 50 return atf_utils_compare_file(path.c_str(), contents.c_str()); 51} 52 53void 54atf::utils::create_file(const std::string& path, const std::string& contents) 55{ 56 atf_utils_create_file(path.c_str(), "%s", contents.c_str()); 57} 58 59bool 60atf::utils::file_exists(const std::string& path) 61{ 62 return atf_utils_file_exists(path.c_str()); 63} 64 65pid_t 66atf::utils::fork(void) 67{ 68 std::cout.flush(); 69 std::cerr.flush(); 70 return atf_utils_fork(); 71} 72 73bool 74atf::utils::grep_file(const std::string& regex, const std::string& path) 75{ 76 return atf_utils_grep_file("%s", path.c_str(), regex.c_str()); 77} 78 79bool 80atf::utils::grep_string(const std::string& regex, const std::string& str) 81{ 82 return atf_utils_grep_string("%s", str.c_str(), regex.c_str()); 83} 84 85void 86atf::utils::redirect(const int fd, const std::string& path) 87{ 88 if (fd == STDOUT_FILENO) 89 std::cout.flush(); 90 else if (fd == STDERR_FILENO) 91 std::cerr.flush(); 92 atf_utils_redirect(fd, path.c_str()); 93} 94 95void 96atf::utils::wait(const pid_t pid, const int exitstatus, 97 const std::string& expout, const std::string& experr) 98{ 99 atf_utils_wait(pid, exitstatus, expout.c_str(), experr.c_str()); 100} 101