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