1240116Smarcel// 2240116Smarcel// Automated Testing Framework (atf) 3240116Smarcel// 4240116Smarcel// Copyright (c) 2007 The NetBSD Foundation, Inc. 5240116Smarcel// All rights reserved. 6240116Smarcel// 7240116Smarcel// Redistribution and use in source and binary forms, with or without 8240116Smarcel// modification, are permitted provided that the following conditions 9240116Smarcel// are met: 10240116Smarcel// 1. Redistributions of source code must retain the above copyright 11240116Smarcel// notice, this list of conditions and the following disclaimer. 12240116Smarcel// 2. Redistributions in binary form must reproduce the above copyright 13240116Smarcel// notice, this list of conditions and the following disclaimer in the 14240116Smarcel// documentation and/or other materials provided with the distribution. 15240116Smarcel// 16240116Smarcel// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND 17240116Smarcel// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 18240116Smarcel// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 19240116Smarcel// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20240116Smarcel// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY 21240116Smarcel// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22240116Smarcel// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 23240116Smarcel// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24240116Smarcel// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 25240116Smarcel// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 26240116Smarcel// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 27240116Smarcel// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28240116Smarcel// 29240116Smarcel 30240116Smarcel#if !defined(_ATF_CXX_UTILS_HPP_) 31240116Smarcel#define _ATF_CXX_UTILS_HPP_ 32240116Smarcel 33260029Sjmmvextern "C" { 34260029Sjmmv#include <unistd.h> 35260029Sjmmv} 36240116Smarcel 37260029Sjmmv#include <string> 38260029Sjmmv 39240116Smarcelnamespace atf { 40240116Smarcelnamespace utils { 41240116Smarcel 42260029Sjmmvvoid cat_file(const std::string&, const std::string&); 43260029Sjmmvbool compare_file(const std::string&, const std::string&); 44260029Sjmmvvoid copy_file(const std::string&, const std::string&); 45260029Sjmmvvoid create_file(const std::string&, const std::string&); 46260029Sjmmvbool file_exists(const std::string&); 47260029Sjmmvpid_t fork(void); 48260029Sjmmvbool grep_file(const std::string&, const std::string&); 49260029Sjmmvbool grep_string(const std::string&, const std::string&); 50260029Sjmmvvoid redirect(const int, const std::string&); 51260029Sjmmvvoid wait(const pid_t, const int, const std::string&, const std::string&); 52240116Smarcel 53260029Sjmmvtemplate< typename Collection > 54260029Sjmmvbool 55260029Sjmmvgrep_collection(const std::string& regexp, const Collection& collection) 56240116Smarcel{ 57260029Sjmmv for (typename Collection::const_iterator iter = collection.begin(); 58260029Sjmmv iter != collection.end(); ++iter) { 59260029Sjmmv if (grep_string(regexp, *iter)) 60260029Sjmmv return true; 61240116Smarcel } 62260029Sjmmv return false; 63240116Smarcel} 64240116Smarcel 65240116Smarcel} // namespace utils 66240116Smarcel} // namespace atf 67240116Smarcel 68240116Smarcel#endif // !defined(_ATF_CXX_UTILS_HPP_) 69