// -*- C++ -*- // Boost general library 'format' --------------------------- // See http://www.boost.org for updates, documentation, and revision history. // (C) Samuel Krempp 2001 // krempp@crans.ens-cachan.fr // Permission to copy, use, modify, sell and // distribute this software is granted provided this copyright notice appears // in all copies. This software is provided "as is" without express or implied // warranty, and with no claim as to its suitability for any purpose. // ideas taken from Rüdiger Loos's format class // and Karl Nelson's ofstream (also took its parsing code as basis for printf parsing) // ------------------------------------------------------------------------------ // free_funcs.hpp : implementation of the free functions declared in namespace format // ------------------------------------------------------------------------------ #ifndef BOOST_FORMAT_FUNCS_HPP #define BOOST_FORMAT_FUNCS_HPP #include "boost/format.hpp" #include "boost/throw_exception.hpp" namespace boost { namespace io { inline std::string str(const basic_format& f) // adds up all pieces of strings and converted items, and return the formatted string { return f.str(); } } // - namespace io BOOST_IO_STD ostream& operator<<( BOOST_IO_STD ostream& os, const boost::basic_format& f) // effect: "return os << str(f);" but we can try to do it faster { typedef boost::basic_format format_t; if(f.items_.size()==0) os << f.prefix_; else { if(f.cur_arg_ < f.num_args_) if( f.exceptions() & io::too_few_args_bit ) boost::throw_exception(io::too_few_args()); // not enough variables have been supplied ! if(f.style_ & format_t::special_needs) os << f.str(); else { // else we dont have to count chars output, so we dump directly to os : os << f.prefix_; for(unsigned long i=0; ilibutil
AgeCommit message (Expand)Author
2021-11-19daemon: Micro-optimize 'deletePath'....'remove' calls 'unlink' first and falls back to 'rmdir' upon EISDIR. This change gets rid of the 'unlink' call for every directory being removed. * nix/libutil/util.cc (_deletePath): Call 'unlink' or 'rmdir' depending on 'st.st_mode', rather than call 'remove'. Ludovic Courtès
2020-12-08daemon: 'Agent' constructor takes a list of environment variables....* nix/libutil/util.hh (struct Agent)[Agent]: Add 'env' parameter. * nix/libutil/util.cc (Agent::Agent): Honor it. Ludovic Courtès
2020-09-14daemon: Move 'Agent' to libutil....* nix/libstore/build.cc (DerivationGoal::tryBuildHook): Add "offload" to 'args' and pass settings.guixProgram as the first argument to Agent::Agent. (pathNullDevice, commonChildInit, Agent, Agent::Agent) (Agent::~Agent): Move to... * nix/libutil/util.cc: ... here. * nix/libutil/util.hh (struct Agent, commonChildInit): New declarations. Ludovic Courtès