sbuild::run_parts Class Reference

Run all scripts or programs within a directory. More...

#include <sbuild-run-parts.h>

List of all members.

Public Types

enum  error_code { CHILD_FORK, CHILD_WAIT, EXEC }
 Error codes. More...
typedef custom_error< error_codeerror
 Exception type.

Public Member Functions

 run_parts (std::string const &directory, bool lsb_mode=true, bool abort_on_error=true, mode_t umask=022)
 The constructor.
 ~run_parts ()
 The destructor.
bool get_verbose () const
 Get the verbosity level.
void set_verbose (bool verbose)
 Set the verbosity level.
bool get_reverse () const
 Get the script execution order.
void set_reverse (bool reverse)
 Set the script execution order.
int run (string_list const &command, environment const &env)
 Run all scripts in the specified directory.

Private Types

typedef std::set< std::string > program_set
 A sorted set of filenames to use.

Private Member Functions

int run_child (std::string const &file, string_list const &command, environment const &env)
 Run the command specified by file (an absolute pathname), using command and env as the argv and environment, respectively.
void wait_for_child (pid_t pid, int &child_status)
 Wait for a child process to complete, and check its exit status.
bool check_filename (std::string const &name)
 Check a filename matches the allowed pattern(s).

Private Attributes

bool lsb_mode
 The LSB mode for allowed filenames.
bool abort_on_error
 Whether to abort on script execution error.
mode_t umask
 The umask to run scripts with.
bool verbose
 Verbose logging.
bool reverse
 Execute scripts in reverse order.
std::string directory
 The directory to run scripts from.
program_set programs
 The list of scripts to run.

Friends

template<class charT, class traits>
std::basic_ostream< charT,
traits > & 
operator<< (std::basic_ostream< charT, traits > &stream, run_parts const &rhs)
 Output the environment to an ostream.


Detailed Description

Run all scripts or programs within a directory.

Member Typedef Documentation

Exception type.

typedef std::set<std::string> sbuild::run_parts::program_set [private]

A sorted set of filenames to use.


Member Enumeration Documentation

Error codes.

Enumerator:
CHILD_FORK  Failed to fork child.
CHILD_WAIT  Wait for child failed.
EXEC  Failed to execute.


Constructor & Destructor Documentation

run_parts::run_parts ( std::string const &  directory,
bool  lsb_mode = true,
bool  abort_on_error = true,
mode_t  umask = 022 
)

The constructor.

Parameters:
directory the directory to run scripts from.
lsb_mode use Linux Standard Base filename requirements. If true, the following patterns are permitted: LANANA ("^[a-z0-9]+$"), LSB ("^_?([a-z0-9_.]+-)+[a-z0-9]+$"), and Debian cron ("^[a-z0-9][a-z0-9-]*$"). Debian dpkg conffile backups are not permitted ("dpkg-(old|dist|new|tmp)$"). If false, the traditional run-parts pattern is used ("^[a-zA-Z0-9_-]$").
abort_on_error stop executing scripts if one returns an error.
umask the umask to set when running scripts.

References check_filename(), sbuild::direntry::name(), and programs.

run_parts::~run_parts (  ) 

The destructor.


Member Function Documentation

bool run_parts::get_verbose (  )  const

Get the verbosity level.

Returns:
true if verbose, otherwise false.

References verbose.

void run_parts::set_verbose ( bool  verbose  ) 

Set the verbosity level.

Parameters:
verbose true to be verbose, otherwise false.

Referenced by sbuild::session::setup_chroot().

bool run_parts::get_reverse (  )  const

Get the script execution order.

Returns:
true if executing in reverse, otherwise false.

References reverse.

void run_parts::set_reverse ( bool  reverse  ) 

Set the script execution order.

Parameters:
reverse true to execute in reverse, otherwise false.

Referenced by sbuild::session::setup_chroot().

int run_parts::run ( string_list const &  command,
environment const &  env 
)

Run all scripts in the specified directory.

If abort_on_error is true, execution will stop at the first script to fail.

Parameters:
command the command to run.
env the environment to use.
Returns:
the exit status of the scripts. This will be 0 on success, or the exit status of the last failing script.

References abort_on_error, programs, reverse, and run_child().

Referenced by sbuild::session::setup_chroot().

int run_parts::run_child ( std::string const &  file,
string_list const &  command,
environment const &  env 
) [private]

Run the command specified by file (an absolute pathname), using command and env as the argv and environment, respectively.

Parameters:
file the program to execute.
command the arguments to pass to the executable.
env the environment.
Returns:
the return value of the execve system call on failure.

References CHILD_FORK, sbuild::DEBUG_INFO, directory, EXEC, sbuild::exec(), sbuild::log_debug(), sbuild::log_error(), sbuild::log_exception_error(), sbuild::log_info(), sbuild::string_list_to_string(), umask, verbose, and wait_for_child().

Referenced by run().

void run_parts::wait_for_child ( pid_t  pid,
int &  child_status 
) [private]

Wait for a child process to complete, and check its exit status.

An error will be thrown on failure.

Parameters:
pid the pid to wait for.
child_status the place to store the child exit status.

References CHILD_WAIT.

Referenced by run_child().

bool run_parts::check_filename ( std::string const &  name  )  [private]

Check a filename matches the allowed pattern(s).

Parameters:
name the filename to check.
Returns:
true if it matches, false if not.

References lsb_mode.

Referenced by run_parts().


Friends And Related Function Documentation

template<class charT, class traits>
std::basic_ostream<charT,traits>& operator<< ( std::basic_ostream< charT, traits > &  stream,
run_parts const &  rhs 
) [friend]

Output the environment to an ostream.

Parameters:
stream the stream to output to.
rhs the environment to output.
Returns:
the stream.


Member Data Documentation

The LSB mode for allowed filenames.

Referenced by check_filename().

Whether to abort on script execution error.

Referenced by run().

mode_t sbuild::run_parts::umask [private]

The umask to run scripts with.

Referenced by run_child().

Verbose logging.

Referenced by get_verbose(), and run_child().

Execute scripts in reverse order.

Referenced by get_reverse(), and run().

std::string sbuild::run_parts::directory [private]

The directory to run scripts from.

Referenced by run_child().

The list of scripts to run.

Referenced by run(), and run_parts().


The documentation for this class was generated from the following files:

Generated on Mon May 5 09:26:45 2008 for sbuild by  doxygen 1.5.5