// Copyright (c) 2008 Hartmut Kaiser // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #include #include "saga-advert.hpp" #if defined(SAGA_HAVE_PACKAGE_ADVERT) && defined(SAGA_HAVE_PACKAGE_ADVERT) void print_dir_attribs (saga::url url, std::string indent = " ") { saga::advert::directory ad (url, saga::advert::Read); std::vector keys (ad.list_attributes()); for ( std::size_t i = 0; i < keys.size (); i++ ) { std::cout << indent << " " << keys[i] << "\t\t: "; if ( ad.attribute_is_vector (keys[i]) ) { std::vector vals = ad.get_vector_attribute (keys[i]); for ( std::size_t j = 0; j < vals.size (); j++ ) { std::cout << vals[j]; if ( j < vals.size () - 1 ) { std::cout << ", "; } } std::cout << std::endl; } else { std::cout << ad.get_attribute (keys[i]) << std::endl; } } return; } void print_entry_attribs (saga::url url, std::string indent = " ") { saga::advert::entry ad (url, saga::advert::Read); std::vector keys (ad.list_attributes()); for ( std::size_t i = 0; i < keys.size (); i++ ) { std::cout << indent << " " << keys[i] << "\t\t: "; if ( ad.attribute_is_vector (keys[i]) ) { std::vector vals = ad.get_vector_attribute (keys[i]); for ( std::size_t j = 0; j < vals.size (); j++ ) { std::cout << vals[j]; if ( j < vals.size () - 1 ) { std::cout << ", "; } } std::cout << std::endl; } else { std::cout << ad.get_attribute (keys[i]) << std::endl; } } return; } #endif /////////////////////////////////////////////////////////////////////////////// void advert_dump_directory (std::string advertURL, std::string indent, std::string parentcwd) { using namespace saga; SAGA_GUARDED_EXEC ( // instantiate advert directory if (!advertURL.empty() && advertURL[0] != '/' && (parentcwd.empty() || parentcwd[parentcwd.size()-1] != '/')) { advertURL.insert(0, "/"); } saga::url ad (parentcwd + advertURL); // print self std::cout << indent << advertURL << "/" << std::endl; print_dir_attribs (ad.get_string(), indent); // read advert entries advert::directory dir (ad); saga::url cwd (dir.get_cwd()); std::vector entries (dir.list ()); // print dirs for ( unsigned int i = 0; i < entries.size (); i++ ) { if ( dir.is_dir (entries[i]) ) { advert_dump_directory (entries[i].get_string (), indent + " ", cwd.get_string()); } } // print entries for ( unsigned int i = 0; i < entries.size (); i++ ) { if ( ! dir.is_dir (entries[i]) ) { std::cout << indent + " " << entries[i] << std::endl; print_entry_attribs (entries[i], indent + " "); } } ) }