diff options
author | Roger Leigh <rleigh@debian.org> | 2010-06-27 19:50:13 +0100 |
---|---|---|
committer | Roger Leigh <rleigh@debian.org> | 2010-06-27 19:53:59 +0100 |
commit | 713064aae506233c7179d5190a556e4b9f459de6 (patch) | |
tree | 35d11afdd75e28526cd431c85d41927f0de78702 /bin | |
parent | f0d29b5d50735e5ddde2891faa660b85795ad1ae (diff) | |
download | schroot-713064aae506233c7179d5190a556e4b9f459de6.tar.gz |
sbuild::chroot: Add preserve-environment key
Move handling complete environment out of sbuild::auth;
the minimal environment and auth_environment are now only
PAM-provided environment variables. These are merged with
the user environment only when required.
Functions using the environment for HOME and PATH now need
explicitly providing with an environment.
Diffstat (limited to 'bin')
-rw-r--r-- | bin/dchroot-dsa/dchroot-dsa-session.cc | 9 | ||||
-rw-r--r-- | bin/dchroot-dsa/dchroot-dsa-session.h | 9 | ||||
-rw-r--r-- | bin/dchroot/dchroot-session-base.cc | 4 | ||||
-rw-r--r-- | bin/dchroot/dchroot-session-base.h | 2 | ||||
-rw-r--r-- | bin/dchroot/dchroot-session.cc | 9 | ||||
-rw-r--r-- | bin/dchroot/dchroot-session.h | 9 | ||||
-rw-r--r-- | bin/schroot/schroot-main-base.cc | 3 |
7 files changed, 24 insertions, 21 deletions
diff --git a/bin/dchroot-dsa/dchroot-dsa-session.cc b/bin/dchroot-dsa/dchroot-dsa-session.cc index 8d2cc742..a872c1b9 100644 --- a/bin/dchroot-dsa/dchroot-dsa-session.cc +++ b/bin/dchroot-dsa/dchroot-dsa-session.cc @@ -90,7 +90,7 @@ session::get_chroot_auth_status (sbuild::auth::status status, } sbuild::string_list -session::get_login_directories () const +session::get_login_directories (sbuild::environment const& env) const { sbuild::string_list ret; @@ -113,9 +113,10 @@ session::get_login_directories () const } void -session::get_user_command (sbuild::chroot::ptr& session_chroot, - std::string& file, - sbuild::string_list& command) const +session::get_user_command (sbuild::chroot::ptr& session_chroot, + std::string& file, + sbuild::string_list& command, + sbuild::environment const& env) const { std::string programstring = command[0]; file = programstring; diff --git a/bin/dchroot-dsa/dchroot-dsa-session.h b/bin/dchroot-dsa/dchroot-dsa-session.h index 20ad328b..abb5aeeb 100644 --- a/bin/dchroot-dsa/dchroot-dsa-session.h +++ b/bin/dchroot-dsa/dchroot-dsa-session.h @@ -61,12 +61,13 @@ namespace dchroot_dsa sbuild::chroot::ptr const& chroot) const; virtual sbuild::string_list - get_login_directories () const; + get_login_directories (sbuild::environment const& env) const; virtual void - get_user_command (sbuild::chroot::ptr& session_chroot, - std::string& file, - sbuild::string_list& command) const; + get_user_command (sbuild::chroot::ptr& session_chroot, + std::string& file, + sbuild::string_list& command, + sbuild::environment const& env) const; }; } diff --git a/bin/dchroot/dchroot-session-base.cc b/bin/dchroot/dchroot-session-base.cc index 4fe75a07..3d8ef4ed 100644 --- a/bin/dchroot/dchroot-session-base.cc +++ b/bin/dchroot/dchroot-session-base.cc @@ -76,9 +76,9 @@ session_base::run_impl () } sbuild::string_list -session_base::get_command_directories () const +session_base::get_command_directories (sbuild::environment const& env) const { // dchroot does not treat logins differently from commands with // respect to the cwd inside the chroot. - return get_login_directories(); + return get_login_directories(env); } diff --git a/bin/dchroot/dchroot-session-base.h b/bin/dchroot/dchroot-session-base.h index 1d8938f3..d6da5f4e 100644 --- a/bin/dchroot/dchroot-session-base.h +++ b/bin/dchroot/dchroot-session-base.h @@ -75,7 +75,7 @@ namespace dchroot run_impl (); virtual sbuild::string_list - get_command_directories () const; + get_command_directories (sbuild::environment const& env) const; private: /// dchroot compatibility enabled? diff --git a/bin/dchroot/dchroot-session.cc b/bin/dchroot/dchroot-session.cc index acd4710a..b25ef083 100644 --- a/bin/dchroot/dchroot-session.cc +++ b/bin/dchroot/dchroot-session.cc @@ -68,7 +68,7 @@ session::get_chroot_auth_status (sbuild::auth::status status, } sbuild::string_list -session::get_login_directories () const +session::get_login_directories (sbuild::environment const& env) const { sbuild::string_list ret; @@ -96,9 +96,10 @@ session::get_login_directories () const } void -session::get_user_command (sbuild::chroot::ptr& session_chroot, - std::string& file, - sbuild::string_list& command) const +session::get_user_command (sbuild::chroot::ptr& session_chroot, + std::string& file, + sbuild::string_list& command, + sbuild::environment const& env) const { std::string programstring = sbuild::string_list_to_string(command, " "); diff --git a/bin/dchroot/dchroot-session.h b/bin/dchroot/dchroot-session.h index 8c215c00..700eac06 100644 --- a/bin/dchroot/dchroot-session.h +++ b/bin/dchroot/dchroot-session.h @@ -60,12 +60,13 @@ namespace dchroot sbuild::chroot::ptr const& chroot) const; virtual sbuild::string_list - get_login_directories () const; + get_login_directories (sbuild::environment const& env) const; virtual void - get_user_command (sbuild::chroot::ptr& session_chroot, - std::string& file, - sbuild::string_list& command) const; + get_user_command (sbuild::chroot::ptr& session_chroot, + std::string& file, + sbuild::string_list& command, + sbuild::environment const& env) const; }; } diff --git a/bin/schroot/schroot-main-base.cc b/bin/schroot/schroot-main-base.cc index 81927f88..f1a8dac2 100644 --- a/bin/schroot/schroot-main-base.cc +++ b/bin/schroot/schroot-main-base.cc @@ -301,8 +301,7 @@ main_base::run_impl () this->session->get_auth()->set_command(this->options->command); if (!this->options->directory.empty()) this->session->get_auth()->set_wd(this->options->directory); - if (this->options->preserve) - this->session->get_auth()->set_environment(environ); + this->session->set_preserve_environment(this->options->preserve); this->session->set_session_id(this->options->session_name); this->session->set_force(this->options->session_force); if (this->options->quiet) |