sbuild  1.6.10
Public Types | Public Member Functions | Static Public Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
sbuild::personality Class Reference

Chroot personality. More...

#include <sbuild-personality.h>

+ Collaboration diagram for sbuild::personality:

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. More...
 
 personality (std::string const &persona)
 The constructor. More...
 
 ~personality ()
 
std::string const & get_name () const
 Get the name of the personality. More...
 
void set_name (std::string const &persona)
 Set the name of the personality. More...
 
type get () const
 Get the personality. More...
 
void set () const
 Set the process personality. More...
 

Static Public Member Functions

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

Static Private Member Functions

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

Private Attributes

std::string persona_name
 The name of the current personality.
 
type persona
 The personality type.
 

Static Private Attributes

static std::map< std::string, typepersonalities
 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. More...
 
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. More...
 

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

References set_name().

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

The constructor.

Parameters
personathe persona to set.

References set_name().

sbuild::personality::~personality ( )
  • The destructor.

Member Function Documentation

sbuild::personality::type sbuild::personality::find_personality ( std::string const &  persona)
staticprivate

Find a personality by name.

Parameters
personathe 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 set(), and set_name().

+ Here is the caller graph for this function:

std::string const & sbuild::personality::find_personality ( type  persona)
staticprivate

Find a personality by number.

Parameters
personathe 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::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 persona_name.

Referenced by set().

+ Here is the caller graph for this function:

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

Print a list of the available personalities.

Returns
a string of the available personalities.

References sbuild::_(), and personalities.

Referenced by set_name().

+ Here is the caller graph for this function:

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 find_personality(), get_name(), persona, and SET.

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

+ Here is the caller graph for this function:

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

Set the name of the personality.

Parameters
personathe persona to set.
Returns
the personality name.

References BAD, find_personality(), get_personalities(), persona, persona_name, and sbuild::error_base::set_reason().

Referenced by personality().

+ Here is the caller graph for this function:

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
streamthe stream to output to.
rhsthe 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
streamthe stream to get input from.
rhsthe personality to set.
Returns
the stream.

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