sbuild::personality Class Reference

Chroot personality. More...

#include <sbuild-personality.h>

List of all members.

Public Types

typedef unsigned long type
 Personality type.
typedef custom_error< error_codeerror
 Exception type.
 BAD
 Personality is unknown.
 SET
 Could not set personality.
enum  error_code { BAD, SET }
 Error codes. More...

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

typedef custom_error<error_code> sbuild::personality::error

Exception type.

typedef unsigned long sbuild::personality::type

Personality type.


Member Enumeration Documentation

enum sbuild::personality::error_code

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.

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).

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

Get the personality.

Returns:
the personality.

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

Get the name of the personality.

Returns:
the personality name.

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

Print a list of the available personalities.

Returns:
a string of the available 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.


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

type sbuild::personality::persona [private]

The personality type.

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

Mapping between personality name and type.


The documentation for this class was generated from the following files:
Generated on Mon Sep 11 23:19:55 2006 for schroot by  doxygen 1.4.7