sbuild::personality Class Reference

Chroot personality. More...

#include <sbuild-personality.h>

Collaboration diagram for sbuild::personality:

Collaboration graph
[legend]

List of all members.

Public Types

enum  error_code { BAD, SET }
 Error codes. More...
typedef unsigned long type
 Personality type.
typedef custom_error< error_codeerror
 Exception type.

Public Member Functions

 personality ()
 The constructor.
 personality (type persona)
 The constructor.
 personality (std::string const &persona)
 The constructor.
 ~personality ()
 * The destructor.
std::string const & get_name () const
 Get the name of the personality.
type get () const
 Get the personality.
void set () const
 Set the process personality.

Static Public Member Functions

static std::string get_personalities ()
 Print a list of the available personalities.

Static Private Member Functions

static type find_personality (std::string const &persona)
 Find a personality by name.
static std::string const & find_personality (type persona)
 Find a personality by number.

Private Attributes

type persona
 The personality type.

Static Private Attributes

static std::map< std::string,
type
personalities
 Mapping between personality name and type.

Friends

template<class charT , class traits >
std::basic_istream< charT,
traits > & 
operator>> (std::basic_istream< charT, traits > &stream, personality &rhs)
 Get the personality name from a stream.
template<class charT , class traits >
std::basic_ostream< charT,
traits > & 
operator<< (std::basic_ostream< charT, traits > &stream, personality const &rhs)
 Print the personality name to a stream.


Detailed Description

Chroot personality.

A chroot may have a personality (also knows as a process execution domain) which is used to run non-native binaries. For example, running 32-bit Linux binaries on a 64-bit Linux system, or an SVR4 binary on a 32-bit Linux system. This is currently a Linux only feature; it does nothing on non-Linux systems. This is a wrapper around the personality(2) system call.


Member Typedef Documentation

Exception type.

typedef unsigned long sbuild::personality::type

Personality type.


Member Enumeration Documentation

Error codes.

Enumerator:
BAD  Personality is unknown.
SET  Could not set personality.


Constructor & Destructor Documentation

sbuild::personality::personality (  ) 

The constructor.

On Linux systems, this is initialised with the current process' personality. On non-Linux systems, it is initialised as "undefined".

sbuild::personality::personality ( type  persona  ) 

The constructor.

Parameters:
persona the persona to set.

sbuild::personality::personality ( std::string const &  persona  ) 

The constructor.

Parameters:
persona the persona to set.

sbuild::personality::~personality (  ) 

* The destructor.


Member Function Documentation

std::string const & sbuild::personality::find_personality ( type  persona  )  [static, private]

Find a personality by number.

Parameters:
persona the personality to find.
Returns:
the personality name, "undefined" if the personality was not defined, or "unknown" if the personality was not found.

References personalities.

sbuild::personality::type sbuild::personality::find_personality ( std::string const &  persona  )  [static, private]

Find a personality by name.

Parameters:
persona the personality to find.
Returns:
the personality type; this is -1 if the personality was undefined, or -2 if the personality was unknown (not found).

References personalities.

Referenced by get_name().

sbuild::personality::type sbuild::personality::get (  )  const

Get the personality.

Returns:
the personality.

References persona.

std::string const & sbuild::personality::get_name (  )  const

Get the name of the personality.

Returns:
the personality name.

References find_personality(), and persona.

Referenced by set().

std::string sbuild::personality::get_personalities (  )  [static]

Print a list of the available personalities.

Returns:
a string of the available personalities.

References personalities.

void sbuild::personality::set (  )  const

Set the process personality.

This sets the personality (if valid) using the personality(2) system call. If setting the personality fails, an error is thown.

References get_name(), persona, and SET.


Friends And Related Function Documentation

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

Print the personality name to a stream.

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

template<class charT , class traits >
std::basic_istream<charT,traits>& operator>> ( std::basic_istream< charT, traits > &  stream,
personality rhs 
) [friend]

Get the personality name from a stream.

Parameters:
stream the stream to get input from.
rhs the personality to set.
Returns:
the stream.


Member Data Documentation

The personality type.

Referenced by get(), get_name(), and set().

std::map< std::string, sbuild::personality::type > sbuild::personality::personalities [static, private]

Mapping between personality name and type.

Referenced by find_personality(), and get_personalities().


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

Generated on Sun Mar 22 22:18:22 2009 for sbuild by  doxygen 1.5.8