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