~ubuntu-branches/ubuntu/maverick/schroot/maverick-updates

« back to all changes in this revision

Viewing changes to doc/schroot/html/dchroot-dsa-session_8cc-source.html

  • Committer: Bazaar Package Importer
  • Author(s): Roger Leigh
  • Date: 2008-01-20 22:51:04 UTC
  • mfrom: (1.1.15 upstream)
  • Revision ID: james.westby@ubuntu.com-20080120225104-3zhs8gk9byqigato
Tags: 1.1.6-1
* New upstream development release.
* Acknowledge NMU.  Thanks to Lucas Nussbaum for fixing the Boost
  library names following another incompatible change in Boost
  (Closes: #439215).
* debian/control: Suggest lvm2 instead of lvm-common (Closes: #452263).
* debian/copyright:
  - Update with new GIT source code repository location.
  - Update licence to GPLv3.
* debian/schroot.init: Update licence to GPLv3.
* bin/schroot/setup/20network, bin/schroot/setup/30passwd: For files to
  copy, compare file device, inode and contents to avoid copying
  identical files (Closes: #428808).
* If unknown keys are present in the configuration file, print a warning
  message to alert the user (Closes: #459658).
* The filesystems to mount in the chroot may be customised by the system
  administrator through the use of an fstab file on a per-chroot basis,
  and a new helper utility, schroot-mount (Closes: #395062, #427047).
  Thanks for your patience while we took the time to implement this the
  right way.
* Update Vietnamese translation (Closes: #461531).  Thanks to Clytie
  Siddall.
* debian/schroot.preinst: Add rm_conffile function to remove
  /etc/schroot/setup.d/20network and /etc/schroot/setup.d/30passwd for
  versions prior to this.  These are replaced by
  /etc/schroot/setup.d/20copyfiles.
* debian/schroot.NEWS: Document conffile changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
<link href="doxygen.css" rel="stylesheet" type="text/css">
5
5
<link href="tabs.css" rel="stylesheet" type="text/css">
6
6
</head><body>
7
 
<!-- Generated by Doxygen 1.5.2 -->
 
7
<!-- Generated by Doxygen 1.5.4 -->
8
8
<div class="tabs">
9
9
  <ul>
10
10
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
15
15
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
16
16
  </ul>
17
17
</div>
18
 
<div class="tabs">
19
 
  <ul>
20
 
    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
21
 
    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
22
 
  </ul>
23
 
</div>
24
18
<div class="nav">
25
 
<a class="el" href="dir_101a379c6bb6ea5a405fc1dc3c87af45.html">bin</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_48f0d61640afb297ab528155a4752173.html">dchroot-dsa</a></div>
 
19
<a class="el" href="dir_85aaf03b3f18b2b8320021a91397a390.html">bin</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_280672707e46bedf3aa68b256663b94a.html">dchroot-dsa</a></div>
26
20
<h1>dchroot-dsa-session.cc</h1><a href="dchroot-dsa-session_8cc.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* Copyright © 2005-2007  Roger Leigh &lt;rleigh@debian.org&gt;</span>
27
21
<a name="l00002"></a>00002 <span class="comment"> *</span>
28
 
<a name="l00003"></a>00003 <span class="comment"> * schroot is free software; you can redistribute it and/or modify it</span>
 
22
<a name="l00003"></a>00003 <span class="comment"> * schroot is free software: you can redistribute it and/or modify it</span>
29
23
<a name="l00004"></a>00004 <span class="comment"> * under the terms of the GNU General Public License as published by</span>
30
 
<a name="l00005"></a>00005 <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span>
 
24
<a name="l00005"></a>00005 <span class="comment"> * the Free Software Foundation, either version 3 of the License, or</span>
31
25
<a name="l00006"></a>00006 <span class="comment"> * (at your option) any later version.</span>
32
26
<a name="l00007"></a>00007 <span class="comment"> *</span>
33
27
<a name="l00008"></a>00008 <span class="comment"> * schroot is distributed in the hope that it will be useful, but</span>
36
30
<a name="l00011"></a>00011 <span class="comment"> * General Public License for more details.</span>
37
31
<a name="l00012"></a>00012 <span class="comment"> *</span>
38
32
<a name="l00013"></a>00013 <span class="comment"> * You should have received a copy of the GNU General Public License</span>
39
 
<a name="l00014"></a>00014 <span class="comment"> * along with this program; if not, write to the Free Software</span>
40
 
<a name="l00015"></a>00015 <span class="comment"> * Foundation, Inc., 59 Temple Place, Suite 330, Boston,</span>
41
 
<a name="l00016"></a>00016 <span class="comment"> * MA  02111-1307  USA</span>
42
 
<a name="l00017"></a>00017 <span class="comment"> *</span>
43
 
<a name="l00018"></a>00018 <span class="comment"> *********************************************************************/</span>
44
 
<a name="l00019"></a>00019 
45
 
<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;config.h&gt;</span>
46
 
<a name="l00021"></a>00021 
47
 
<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="dchroot-dsa-session_8h.html">dchroot-dsa-session.h</a>"</span>
48
 
<a name="l00023"></a>00023 
49
 
<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;cassert&gt;</span>
50
 
<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;cerrno&gt;</span>
51
 
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;cstdlib&gt;</span>
52
 
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;cstring&gt;</span>
53
 
<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;iostream&gt;</span>
54
 
<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;memory&gt;</span>
55
 
<a name="l00030"></a>00030 
56
 
<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
57
 
<a name="l00032"></a>00032 
58
 
<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;syslog.h&gt;</span>
59
 
<a name="l00034"></a>00034 
60
 
<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;boost/format.hpp&gt;</span>
61
 
<a name="l00036"></a>00036 
62
 
<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;uuid/uuid.h&gt;</span>
63
 
<a name="l00038"></a>00038 
64
 
<a name="l00039"></a>00039 <span class="keyword">using</span> std::cout;
65
 
<a name="l00040"></a>00040 <span class="keyword">using</span> std::endl;
66
 
<a name="l00041"></a>00041 <span class="keyword">using</span> sbuild::_;
67
 
<a name="l00042"></a>00042 <span class="keyword">using</span> boost::format;
68
 
<a name="l00043"></a>00043 <span class="keyword">using namespace </span>dchroot_dsa;
69
 
<a name="l00044"></a>00044 
70
 
<a name="l00045"></a><a class="code" href="classdchroot__dsa_1_1session.html#167c9a6fb42fdc5d7c2e2b46ca152488">00045</a> session::session (std::string <span class="keyword">const</span>&amp;         service,
71
 
<a name="l00046"></a>00046                   config_ptr&amp;                config,
72
 
<a name="l00047"></a>00047                   <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1session.html#3bedc4f49c2fe2c7f59c8d7ec5c1f5b7">operation</a>                  <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1session.html#3bedc4f49c2fe2c7f59c8d7ec5c1f5b7">operation</a>,
73
 
<a name="l00048"></a>00048                   <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a> <span class="keyword">const</span>&amp; chroots,
74
 
<a name="l00049"></a>00049                   <span class="keywordtype">bool</span>                       compat):
75
 
<a name="l00050"></a>00050   dchroot::session_base(service, config, operation, chroots, compat)
76
 
<a name="l00051"></a>00051 {
77
 
<a name="l00052"></a>00052 }
78
 
<a name="l00053"></a>00053 
79
 
<a name="l00054"></a><a class="code" href="classdchroot__dsa_1_1session.html#25f3c561e9e7e56327809de6bb796e78">00054</a> <a class="code" href="classdchroot__dsa_1_1session.html#25f3c561e9e7e56327809de6bb796e78" title="The destructor.">session::~session</a> ()
80
 
<a name="l00055"></a>00055 {
81
 
<a name="l00056"></a>00056 }
82
 
<a name="l00057"></a>00057 
83
 
<a name="l00058"></a>00058 <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#83fe135bdd88e81e6309519dfdcbf36e">sbuild::auth::status</a>
84
 
<a name="l00059"></a><a class="code" href="classdchroot__dsa_1_1session.html#ffc41685b22f545b9a9e2608a09e388a">00059</a> <a class="code" href="classdchroot__dsa_1_1session.html#ffc41685b22f545b9a9e2608a09e388a">session::get_chroot_auth_status</a> (<a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#83fe135bdd88e81e6309519dfdcbf36e">sbuild::auth::status</a> <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#83fe135bdd88e81e6309519dfdcbf36e">status</a>,
85
 
<a name="l00060"></a>00060                                  <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1chroot.html#ef7d5b607d1a0a4a7ebe1d40e2ec9c3a">sbuild::chroot::ptr</a> <span class="keyword">const</span>&amp; chroot)<span class="keyword"> const</span>
86
 
<a name="l00061"></a>00061 <span class="keyword"></span>{
87
 
<a name="l00062"></a>00062   <span class="comment">/* DSA dchroot checks for a valid user in the groups list, unless</span>
88
 
<a name="l00063"></a>00063 <span class="comment">     the groups lists is empty in which case there are no</span>
89
 
<a name="l00064"></a>00064 <span class="comment">     restrictions.  This only applies if not switching users (dchroot</span>
90
 
<a name="l00065"></a>00065 <span class="comment">     does not support user switching) */</span>
91
 
<a name="l00066"></a>00066 
92
 
<a name="l00067"></a>00067   <span class="keywordflow">if</span> (<a class="code" href="classdchroot_1_1session__base.html#1ad1c4752bd31f4e7af3d0f376bbd0bb" title="Get the dchroot compatibility state.">get_compat</a>() == <span class="keyword">true</span>)
93
 
<a name="l00068"></a>00068     {
94
 
<a name="l00069"></a>00069       <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a> <span class="keyword">const</span>&amp; users = chroot-&gt;get_users();
95
 
<a name="l00070"></a>00070       <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a> <span class="keyword">const</span>&amp; groups = chroot-&gt;get_groups();
96
 
<a name="l00071"></a>00071 
97
 
<a name="l00072"></a>00072       <span class="keywordflow">if</span> (this-&gt;get_ruid() == this-&gt;<a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#99ff3ada37b93bffda2f8ab8fac6afca">get_uid</a>() &amp;&amp;
98
 
<a name="l00073"></a>00073           users.empty() &amp;&amp; groups.empty())
99
 
<a name="l00074"></a>00074         status = <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#d0ad9a8f2244040af9df1a94d2a784f5">change_auth</a>(status, auth::STATUS_NONE);
100
 
<a name="l00075"></a>00075       <span class="keywordflow">else</span>
101
 
<a name="l00076"></a>00076         status = <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#d0ad9a8f2244040af9df1a94d2a784f5">change_auth</a>(status,
102
 
<a name="l00077"></a>00077                              <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1session.html#3cb0ad753b6307b29cd23150449637cf">sbuild::session::get_chroot_auth_status</a>(status,
103
 
<a name="l00078"></a>00078                                                                      chroot));
104
 
<a name="l00079"></a>00079     }
105
 
<a name="l00080"></a>00080   <span class="keywordflow">else</span> <span class="comment">// schroot compatibility</span>
106
 
<a name="l00081"></a>00081     {
107
 
<a name="l00082"></a>00082       status = <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#d0ad9a8f2244040af9df1a94d2a784f5">change_auth</a>(status,
108
 
<a name="l00083"></a>00083                            <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1session.html#3cb0ad753b6307b29cd23150449637cf">sbuild::session::get_chroot_auth_status</a>(status,
109
 
<a name="l00084"></a>00084                                                                    chroot));
110
 
<a name="l00085"></a>00085     }
111
 
<a name="l00086"></a>00086 
112
 
<a name="l00087"></a>00087   <span class="keywordflow">return</span> status;
113
 
<a name="l00088"></a>00088 }
114
 
<a name="l00089"></a>00089 
115
 
<a name="l00090"></a>00090 <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a>
116
 
<a name="l00091"></a><a class="code" href="classdchroot__dsa_1_1session.html#2e6912cc35a3d42f306988bbb8042a03">00091</a> <a class="code" href="classdchroot__dsa_1_1session.html#2e6912cc35a3d42f306988bbb8042a03">session::get_login_directories</a> ()<span class="keyword"> const</span>
117
 
<a name="l00092"></a>00092 <span class="keyword"></span>{
118
 
<a name="l00093"></a>00093   <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a> ret;
119
 
<a name="l00094"></a>00094 
120
 
<a name="l00095"></a>00095   std::string <span class="keyword">const</span>&amp; <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#53f8c0014243cea4685a32f80ff67bd8">wd</a>(<a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#8e4bd394ed625af978aa3b069973999e">get_wd</a>());
121
 
<a name="l00096"></a>00096   <span class="keywordflow">if</span> (!wd.empty())
122
 
<a name="l00097"></a>00097     {
123
 
<a name="l00098"></a>00098       <span class="comment">// Set specified working directory.</span>
124
 
<a name="l00099"></a>00099       ret.push_back(wd);
125
 
<a name="l00100"></a>00100     }
126
 
<a name="l00101"></a>00101   <span class="keywordflow">else</span>
127
 
<a name="l00102"></a>00102     {
128
 
<a name="l00103"></a>00103       ret.push_back(<a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#4577030ca02f496c3fe4a3bfcd66318a">get_home</a>());
129
 
<a name="l00104"></a>00104 
130
 
<a name="l00105"></a>00105       <span class="comment">// Final fallback to root.</span>
131
 
<a name="l00106"></a>00106       <span class="keywordflow">if</span> (std::find(ret.begin(), ret.end(), <span class="stringliteral">"/"</span>) == ret.end())
132
 
<a name="l00107"></a>00107         ret.push_back(<span class="stringliteral">"/"</span>);
133
 
<a name="l00108"></a>00108     }
134
 
<a name="l00109"></a>00109 
135
 
<a name="l00110"></a>00110   <span class="keywordflow">return</span> ret;
136
 
<a name="l00111"></a>00111 }
137
 
<a name="l00112"></a>00112 
138
 
<a name="l00113"></a>00113 <span class="keywordtype">void</span>
139
 
<a name="l00114"></a><a class="code" href="classdchroot__dsa_1_1session.html#aa5c87478e6b206c1755514c3d4123b1">00114</a> <a class="code" href="classdchroot__dsa_1_1session.html#aa5c87478e6b206c1755514c3d4123b1">session::get_user_command</a> (<a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1chroot.html#ef7d5b607d1a0a4a7ebe1d40e2ec9c3a">sbuild::chroot::ptr</a>&amp; session_chroot,
140
 
<a name="l00115"></a>00115                            std::string&amp;         file,
141
 
<a name="l00116"></a>00116                            <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a>&amp; <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#7b1ee77debeb9f6881849536eee13263">command</a>)<span class="keyword"> const</span>
142
 
<a name="l00117"></a>00117 <span class="keyword"></span>{
143
 
<a name="l00118"></a>00118   std::string programstring = command[0];
144
 
<a name="l00119"></a>00119   file = programstring;
145
 
<a name="l00120"></a>00120 
146
 
<a name="l00121"></a>00121   <span class="keywordflow">if</span> (!<a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#2d0074b31e1a2644405dce0585e44117">sbuild::is_absname</a>(file))
147
 
<a name="l00122"></a>00122     <span class="keywordflow">throw</span> <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1session.html#8f5788237019e9021c0107b9c93202f0">error</a>(file, <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1session.html#557d9570f7b58c5466cc4ee22d88217871ca99d288bee2ace5a6f603c161478c">COMMAND_ABS</a>);
148
 
<a name="l00123"></a>00123 
149
 
<a name="l00124"></a>00124   std::string commandstring = <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#56e63f2becadeda121c470befde8e76b">sbuild::string_list_to_string</a>(command, <span class="stringliteral">" "</span>);
150
 
<a name="l00125"></a>00125   <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#fb49f5f1584c85f1415926f9cb240eaf">sbuild::log_debug</a>(<a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#cc4d8fc120bfd21c22acd9d9ed0e754d9ab34ebefe291830445a53a1d2e18d3d">sbuild::DEBUG_NOTICE</a>)
151
 
<a name="l00126"></a>00126     &lt;&lt; format(<span class="stringliteral">"Running command: %1%"</span>) % commandstring &lt;&lt; endl;
152
 
<a name="l00127"></a>00127   <span class="keywordflow">if</span> (<a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#99ff3ada37b93bffda2f8ab8fac6afca">get_uid</a>() == 0 || <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#c8dfeb4f2e4343f18e3e9a770ad1408d">get_ruid</a>() != <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#99ff3ada37b93bffda2f8ab8fac6afca">get_uid</a>())
153
 
<a name="l00128"></a>00128     syslog(LOG_USER|LOG_NOTICE, <span class="stringliteral">"[%s chroot] (%s-&gt;%s) Running command: \"%s\""</span>,
154
 
<a name="l00129"></a>00129            session_chroot-&gt;get_name().c_str(), <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#ab228b307a9c10f414506113d0af9251">get_ruser</a>().c_str(), <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#705ab5aee77131d6411826a3e2d7b21c">get_user</a>().c_str(), commandstring.c_str());
155
 
<a name="l00130"></a>00130 
156
 
<a name="l00131"></a>00131   <span class="keywordflow">if</span> (<a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#2301e37af37372bc7353bbfc45bf370e">get_verbosity</a>() != auth::VERBOSITY_QUIET)
157
 
<a name="l00132"></a>00132     {
158
 
<a name="l00133"></a>00133       std::string format_string;
159
 
<a name="l00134"></a>00134       <span class="comment">// TRANSLATORS: %1% = chroot name</span>
160
 
<a name="l00135"></a>00135       <span class="comment">// TRANSLATORS: %2% = command</span>
161
 
<a name="l00136"></a>00136       format_string = (_(<span class="stringliteral">"[%1% chroot] Running command: \"%2%\""</span>));
162
 
<a name="l00137"></a>00137 
163
 
<a name="l00138"></a>00138       format fmt(format_string);
164
 
<a name="l00139"></a>00139       fmt % session_chroot-&gt;get_name()
165
 
<a name="l00140"></a>00140         % programstring;
166
 
<a name="l00141"></a>00141       <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#4b668d467f8c9c6063cd2c9c7aaf3086">sbuild::log_info</a>() &lt;&lt; fmt &lt;&lt; endl;
167
 
<a name="l00142"></a>00142     }
168
 
<a name="l00143"></a>00143 }
169
 
</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Sun Jul 8 21:23:54 2007 for schroot by&nbsp;
 
33
<a name="l00014"></a>00014 <span class="comment"> * along with this program.  If not, see</span>
 
34
<a name="l00015"></a>00015 <span class="comment"> * &lt;http://www.gnu.org/licenses/&gt;.</span>
 
35
<a name="l00016"></a>00016 <span class="comment"> *</span>
 
36
<a name="l00017"></a>00017 <span class="comment"> *********************************************************************/</span>
 
37
<a name="l00018"></a>00018 
 
38
<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;config.h&gt;</span>
 
39
<a name="l00020"></a>00020 
 
40
<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="dchroot-dsa-session_8h.html">dchroot-dsa-session.h</a>"</span>
 
41
<a name="l00022"></a>00022 
 
42
<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;cassert&gt;</span>
 
43
<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;cerrno&gt;</span>
 
44
<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;cstdlib&gt;</span>
 
45
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;cstring&gt;</span>
 
46
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;iostream&gt;</span>
 
47
<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;memory&gt;</span>
 
48
<a name="l00029"></a>00029 
 
49
<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
 
50
<a name="l00031"></a>00031 
 
51
<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;syslog.h&gt;</span>
 
52
<a name="l00033"></a>00033 
 
53
<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;boost/format.hpp&gt;</span>
 
54
<a name="l00035"></a>00035 
 
55
<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;uuid/uuid.h&gt;</span>
 
56
<a name="l00037"></a>00037 
 
57
<a name="l00038"></a>00038 <span class="keyword">using</span> std::cout;
 
58
<a name="l00039"></a>00039 <span class="keyword">using</span> std::endl;
 
59
<a name="l00040"></a>00040 <span class="keyword">using</span> sbuild::_;
 
60
<a name="l00041"></a>00041 <span class="keyword">using</span> boost::format;
 
61
<a name="l00042"></a>00042 <span class="keyword">using namespace </span>dchroot_dsa;
 
62
<a name="l00043"></a>00043 
 
63
<a name="l00044"></a><a class="code" href="classdchroot__dsa_1_1session.html#167c9a6fb42fdc5d7c2e2b46ca152488">00044</a> session::session (std::string <span class="keyword">const</span>&amp;         service,
 
64
<a name="l00045"></a>00045                   <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1session.html#3bee8f07da6fb7ae900d84906eca268c">config_ptr</a>&amp;                config,
 
65
<a name="l00046"></a>00046                   <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1session.html#3bedc4f49c2fe2c7f59c8d7ec5c1f5b7">operation</a>                  <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1session.html#3bedc4f49c2fe2c7f59c8d7ec5c1f5b7">operation</a>,
 
66
<a name="l00047"></a>00047                   <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a> <span class="keyword">const</span>&amp; chroots,
 
67
<a name="l00048"></a>00048                   <span class="keywordtype">bool</span>                       compat):
 
68
<a name="l00049"></a>00049   dchroot::session_base(service, config, operation, chroots, compat)
 
69
<a name="l00050"></a>00050 {
 
70
<a name="l00051"></a>00051 }
 
71
<a name="l00052"></a>00052 
 
72
<a name="l00053"></a><a class="code" href="classdchroot__dsa_1_1session.html#25f3c561e9e7e56327809de6bb796e78">00053</a> <a class="code" href="classdchroot__dsa_1_1session.html#25f3c561e9e7e56327809de6bb796e78" title="The destructor.">session::~session</a> ()
 
73
<a name="l00054"></a>00054 {
 
74
<a name="l00055"></a>00055 }
 
75
<a name="l00056"></a>00056 
 
76
<a name="l00057"></a>00057 <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#83fe135bdd88e81e6309519dfdcbf36e">sbuild::auth::status</a>
 
77
<a name="l00058"></a><a class="code" href="classdchroot__dsa_1_1session.html#ffc41685b22f545b9a9e2608a09e388a">00058</a> <a class="code" href="classdchroot__dsa_1_1session.html#ffc41685b22f545b9a9e2608a09e388a">session::get_chroot_auth_status</a> (<a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#83fe135bdd88e81e6309519dfdcbf36e">sbuild::auth::status</a> <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#83fe135bdd88e81e6309519dfdcbf36e">status</a>,
 
78
<a name="l00059"></a>00059                                  <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1chroot.html#ef7d5b607d1a0a4a7ebe1d40e2ec9c3a">sbuild::chroot::ptr</a> <span class="keyword">const</span>&amp; chroot)<span class="keyword"> const</span>
 
79
<a name="l00060"></a>00060 <span class="keyword"></span>{
 
80
<a name="l00061"></a>00061   <span class="comment">/* DSA dchroot checks for a valid user in the groups list, unless</span>
 
81
<a name="l00062"></a>00062 <span class="comment">     the groups lists is empty in which case there are no</span>
 
82
<a name="l00063"></a>00063 <span class="comment">     restrictions.  This only applies if not switching users (dchroot</span>
 
83
<a name="l00064"></a>00064 <span class="comment">     does not support user switching) */</span>
 
84
<a name="l00065"></a>00065 
 
85
<a name="l00066"></a>00066   <span class="keywordflow">if</span> (<a class="code" href="classdchroot_1_1session__base.html#a2ef1c3b8ece875496a8a73cf7f98cf2" title="Get the dchroot compatibility state.">get_compat</a>() == <span class="keyword">true</span>)
 
86
<a name="l00067"></a>00067     {
 
87
<a name="l00068"></a>00068       <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a> <span class="keyword">const</span>&amp; users = chroot-&gt;get_users();
 
88
<a name="l00069"></a>00069       <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a> <span class="keyword">const</span>&amp; groups = chroot-&gt;get_groups();
 
89
<a name="l00070"></a>00070 
 
90
<a name="l00071"></a>00071       <span class="keywordflow">if</span> (this-&gt;get_ruid() == this-&gt;<a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#a37f4138b675a9ca61396089bd916924">get_uid</a>() &amp;&amp;
 
91
<a name="l00072"></a>00072           users.empty() &amp;&amp; groups.empty())
 
92
<a name="l00073"></a>00073         status = <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#d0ad9a8f2244040af9df1a94d2a784f5">change_auth</a>(status, auth::STATUS_NONE);
 
93
<a name="l00074"></a>00074       <span class="keywordflow">else</span>
 
94
<a name="l00075"></a>00075         status = <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#d0ad9a8f2244040af9df1a94d2a784f5">change_auth</a>(status,
 
95
<a name="l00076"></a>00076                              <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1session.html#3cb0ad753b6307b29cd23150449637cf">sbuild::session::get_chroot_auth_status</a>(status,
 
96
<a name="l00077"></a>00077                                                                      chroot));
 
97
<a name="l00078"></a>00078     }
 
98
<a name="l00079"></a>00079   <span class="keywordflow">else</span> <span class="comment">// schroot compatibility</span>
 
99
<a name="l00080"></a>00080     {
 
100
<a name="l00081"></a>00081       status = <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#d0ad9a8f2244040af9df1a94d2a784f5">change_auth</a>(status,
 
101
<a name="l00082"></a>00082                            <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1session.html#3cb0ad753b6307b29cd23150449637cf">sbuild::session::get_chroot_auth_status</a>(status,
 
102
<a name="l00083"></a>00083                                                                    chroot));
 
103
<a name="l00084"></a>00084     }
 
104
<a name="l00085"></a>00085 
 
105
<a name="l00086"></a>00086   <span class="keywordflow">return</span> status;
 
106
<a name="l00087"></a>00087 }
 
107
<a name="l00088"></a>00088 
 
108
<a name="l00089"></a>00089 <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a>
 
109
<a name="l00090"></a><a class="code" href="classdchroot__dsa_1_1session.html#faa63c0177552646ff0922e387364b2b">00090</a> <a class="code" href="classdchroot__dsa_1_1session.html#faa63c0177552646ff0922e387364b2b">session::get_login_directories</a> ()<span class="keyword"> const</span>
 
110
<a name="l00091"></a>00091 <span class="keyword"></span>{
 
111
<a name="l00092"></a>00092   <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a> ret;
 
112
<a name="l00093"></a>00093 
 
113
<a name="l00094"></a>00094   std::string <span class="keyword">const</span>&amp; <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#53f8c0014243cea4685a32f80ff67bd8">wd</a>(<a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#e04228548c9746f14517e992c88d6dff">get_wd</a>());
 
114
<a name="l00095"></a>00095   <span class="keywordflow">if</span> (!wd.empty())
 
115
<a name="l00096"></a>00096     {
 
116
<a name="l00097"></a>00097       <span class="comment">// Set specified working directory.</span>
 
117
<a name="l00098"></a>00098       ret.push_back(wd);
 
118
<a name="l00099"></a>00099     }
 
119
<a name="l00100"></a>00100   <span class="keywordflow">else</span>
 
120
<a name="l00101"></a>00101     {
 
121
<a name="l00102"></a>00102       ret.push_back(<a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#7ae6c0a7250a88c09b051707bbd29c4a">get_home</a>());
 
122
<a name="l00103"></a>00103 
 
123
<a name="l00104"></a>00104       <span class="comment">// Final fallback to root.</span>
 
124
<a name="l00105"></a>00105       <span class="keywordflow">if</span> (std::find(ret.begin(), ret.end(), <span class="stringliteral">"/"</span>) == ret.end())
 
125
<a name="l00106"></a>00106         ret.push_back(<span class="stringliteral">"/"</span>);
 
126
<a name="l00107"></a>00107     }
 
127
<a name="l00108"></a>00108 
 
128
<a name="l00109"></a>00109   <span class="keywordflow">return</span> ret;
 
129
<a name="l00110"></a>00110 }
 
130
<a name="l00111"></a>00111 
 
131
<a name="l00112"></a>00112 <span class="keywordtype">void</span>
 
132
<a name="l00113"></a><a class="code" href="classdchroot__dsa_1_1session.html#aa5c87478e6b206c1755514c3d4123b1">00113</a> <a class="code" href="classdchroot__dsa_1_1session.html#aa5c87478e6b206c1755514c3d4123b1">session::get_user_command</a> (<a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1chroot.html#ef7d5b607d1a0a4a7ebe1d40e2ec9c3a">sbuild::chroot::ptr</a>&amp; session_chroot,
 
133
<a name="l00114"></a>00114                            std::string&amp;         file,
 
134
<a name="l00115"></a>00115                            <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a>&amp; <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#7b1ee77debeb9f6881849536eee13263">command</a>)<span class="keyword"> const</span>
 
135
<a name="l00116"></a>00116 <span class="keyword"></span>{
 
136
<a name="l00117"></a>00117   std::string programstring = command[0];
 
137
<a name="l00118"></a>00118   file = programstring;
 
138
<a name="l00119"></a>00119 
 
139
<a name="l00120"></a>00120   <span class="keywordflow">if</span> (!<a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#2d0074b31e1a2644405dce0585e44117">sbuild::is_absname</a>(file))
 
140
<a name="l00121"></a>00121     <span class="keywordflow">throw</span> <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1session.html#8f5788237019e9021c0107b9c93202f0">error</a>(file, <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1session.html#557d9570f7b58c5466cc4ee22d88217871ca99d288bee2ace5a6f603c161478c">COMMAND_ABS</a>);
 
141
<a name="l00122"></a>00122 
 
142
<a name="l00123"></a>00123   std::string commandstring = <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#56e63f2becadeda121c470befde8e76b">sbuild::string_list_to_string</a>(command, <span class="stringliteral">" "</span>);
 
143
<a name="l00124"></a>00124   <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#fb49f5f1584c85f1415926f9cb240eaf">sbuild::log_debug</a>(<a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#cc4d8fc120bfd21c22acd9d9ed0e754d9ab34ebefe291830445a53a1d2e18d3d">sbuild::DEBUG_NOTICE</a>)
 
144
<a name="l00125"></a>00125     &lt;&lt; format(<span class="stringliteral">"Running command: %1%"</span>) % commandstring &lt;&lt; endl;
 
145
<a name="l00126"></a>00126   <span class="keywordflow">if</span> (<a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#a37f4138b675a9ca61396089bd916924">get_uid</a>() == 0 || <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#7012620e8c3b8673eb571a605b194958">get_ruid</a>() != <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#a37f4138b675a9ca61396089bd916924">get_uid</a>())
 
146
<a name="l00127"></a>00127     syslog(LOG_USER|LOG_NOTICE, <span class="stringliteral">"[%s chroot] (%s-&gt;%s) Running command: \"%s\""</span>,
 
147
<a name="l00128"></a>00128            session_chroot-&gt;get_name().c_str(), <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#6dcd71e1ae9954f635e379e3bae8af13">get_ruser</a>().c_str(), <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#f532921cb3562de17a1ce4407e45c0ce">get_user</a>().c_str(), commandstring.c_str());
 
148
<a name="l00129"></a>00129 
 
149
<a name="l00130"></a>00130   <span class="keywordflow">if</span> (<a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#4b0ff102950ea2ac820f2a9b4cf48f2c">get_verbosity</a>() != auth::VERBOSITY_QUIET)
 
150
<a name="l00131"></a>00131     {
 
151
<a name="l00132"></a>00132       std::string format_string;
 
152
<a name="l00133"></a>00133       <span class="comment">// TRANSLATORS: %1% = chroot name</span>
 
153
<a name="l00134"></a>00134       <span class="comment">// TRANSLATORS: %2% = command</span>
 
154
<a name="l00135"></a>00135       format_string = (_(<span class="stringliteral">"[%1% chroot] Running command: \"%2%\""</span>));
 
155
<a name="l00136"></a>00136 
 
156
<a name="l00137"></a>00137       format fmt(format_string);
 
157
<a name="l00138"></a>00138       fmt % session_chroot-&gt;get_name()
 
158
<a name="l00139"></a>00139         % programstring;
 
159
<a name="l00140"></a>00140       <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#4b668d467f8c9c6063cd2c9c7aaf3086">sbuild::log_info</a>() &lt;&lt; fmt &lt;&lt; endl;
 
160
<a name="l00141"></a>00141     }
 
161
<a name="l00142"></a>00142 }
 
162
</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Mon Jan 21 00:38:28 2008 for schroot by&nbsp;
170
163
<a href="http://www.doxygen.org/index.html">
171
 
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
 
164
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.4 </small></address>
172
165
</body>
173
166
</html>