summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorRoger Leigh <rleigh@debian.org>2010-06-27 19:50:13 +0100
committerRoger Leigh <rleigh@debian.org>2010-06-27 19:53:59 +0100
commit713064aae506233c7179d5190a556e4b9f459de6 (patch)
tree35d11afdd75e28526cd431c85d41927f0de78702 /bin
parentf0d29b5d50735e5ddde2891faa660b85795ad1ae (diff)
downloadschroot-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.cc9
-rw-r--r--bin/dchroot-dsa/dchroot-dsa-session.h9
-rw-r--r--bin/dchroot/dchroot-session-base.cc4
-rw-r--r--bin/dchroot/dchroot-session-base.h2
-rw-r--r--bin/dchroot/dchroot-session.cc9
-rw-r--r--bin/dchroot/dchroot-session.h9
-rw-r--r--bin/schroot/schroot-main-base.cc3
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)