Hello, help rewrite code from c ++ 11 standard under c ++ 03 standard.
#include <iostream> #include <iterator> #include <string> #include <cerrno> #include <cstdlib> #include <iostream> #include <boost/foreach.hpp> using namespace std; class directory_range { directory_range(bfs_dir_iter itr): _itr(itr) bfs_dir_iter _itr; public: directory_range(bfs_dir_iter&& itr): _itr(itr) { } bfs_dir_iter begin() { return _itr; } bfs_dir_iter end() { return bfs_dir_iter(); } }; int main() { namespace bfs = boost::filesystem3; bfs::path p("/home/root/test/"); if(!bfs::is_directory(p)) { std::cerr << "[ ERROR ] "; std::cerr << p << " isn't directory. Stopping...." << std::endl; return ENOENT; } const char** dirs_begin = dirs; const char* dirs[] = {"part1", "part2", "part3", "part4", "part5"}; BOOST_FOREACH(const char* dir, dirs) try { bfs::create_directory(p / dir); } catch(const bfs::filesystem_error& e) { std::cerr << "[ ERROR ] "; std::cerr << (p / dir).filename() << " is already exists and not directory. " << "Stopping..." << std::endl; return ENOENT; } const char** dirs_iter = dirs; BOOST_FOREACH (const bfs::directory_entry& file, std::make_pair(bfs::directory_iterator(p), bfs::directory_iterator())) { if(!bfs::is_regular_file(file)) { std::cerr << "[WARNING] "; std::cerr << file.path().filename() << " isn't regular file. " << "Go to the hell, I will not copy it." << std::endl; } else { if(bfs::exists(p / *dirs_iter / file.path().filename())) { std::cerr << "[WARNING] "; std::cerr << file.path().filename() << " is already exists in " << *dirs_iter << ". Skipping..." << std::endl; continue; } bfs::copy(file, p / *dirs_iter++ / file.path().filename()); if(dirs_iter == dirs_end) dirs_iter = dirs_begin; } } return 0; }