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

« back to all changes in this revision

Viewing changes to doc/schroot/html/schroot-listmounts-main_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_62e7ab1bdc3e92c4b2d79c5536b3de6a.html">schroot-listmounts</a></div>
 
19
<a class="el" href="dir_85aaf03b3f18b2b8320021a91397a390.html">bin</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_2b69fe8864948f98ba2514af5e3e78d4.html">schroot-listmounts</a></div>
26
20
<h1>schroot-listmounts-main.cc</h1><a href="schroot-listmounts-main_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="schroot-listmounts-main_8h.html">schroot-listmounts-main.h</a>"</span>
48
 
<a name="l00023"></a>00023 
49
 
<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;cerrno&gt;</span>
50
 
<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;climits&gt;</span>
51
 
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;cstdio&gt;</span>
52
 
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;cstdlib&gt;</span>
53
 
<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;ctime&gt;</span>
54
 
<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;iostream&gt;</span>
55
 
<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;locale&gt;</span>
56
 
<a name="l00031"></a>00031 
57
 
<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;sys/types.h&gt;</span>
58
 
<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;sys/stat.h&gt;</span>
59
 
<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
60
 
<a name="l00035"></a>00035 
61
 
<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;boost/format.hpp&gt;</span>
62
 
<a name="l00037"></a>00037 
63
 
<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;mntent.h&gt;</span>
64
 
<a name="l00039"></a>00039 
65
 
<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;lockdev.h&gt;</span>
66
 
<a name="l00041"></a>00041 
67
 
<a name="l00042"></a>00042 <span class="keyword">using</span> std::endl;
68
 
<a name="l00043"></a>00043 <span class="keyword">using</span> boost::format;
69
 
<a name="l00044"></a>00044 <span class="keyword">using</span> sbuild::_;
70
 
<a name="l00045"></a>00045 <span class="keyword">using</span> sbuild::N_;
71
 
<a name="l00046"></a>00046 <span class="keyword">using namespace </span>schroot_listmounts;
72
 
<a name="l00047"></a>00047 
73
 
<a name="l00048"></a>00048 <span class="keyword">namespace</span>
74
 
<a name="l00049"></a>00049 {
75
 
<a name="l00050"></a>00050 
76
 
<a name="l00051"></a><a class="code" href="schroot-listmounts-main_8cc.html#7a38cdc9df52b3ddd266f28f3eeeaebb">00051</a>   <span class="keyword">typedef</span> std::pair&lt;main::error_code,const char *&gt; <a class="code" href="schroot-main-base_8cc.html#72aa327d5cb9959ed40cdff3ddde9e25">emap</a>;
77
 
<a name="l00052"></a>00052 
78
 
<a name="l00057"></a><a class="code" href="schroot-listmounts-main_8cc.html#f57f373df7f7c9fb0efae6da23690016">00057</a>   emap <a class="code" href="schroot-main-base_8cc.html#f57f373df7f7c9fb0efae6da23690016" title="This is a list of the supported error codes.">init_errors</a>[] =
79
 
<a name="l00058"></a>00058     {
80
 
<a name="l00059"></a>00059       <span class="comment">// TRANSLATORS: %1% = file</span>
81
 
<a name="l00060"></a>00060       <a class="code" href="schroot-main-base_8cc.html#72aa327d5cb9959ed40cdff3ddde9e25">emap</a>(main::FIND,  N_(<span class="stringliteral">"Failed to find '%1%'"</span>)),
82
 
<a name="l00061"></a>00061       <span class="comment">// TRANSLATORS: %1% = file</span>
83
 
<a name="l00062"></a>00062       <a class="code" href="schroot-main-base_8cc.html#72aa327d5cb9959ed40cdff3ddde9e25">emap</a>(main::OPEN,  N_(<span class="stringliteral">"Failed to open '%1%'"</span>)),
84
 
<a name="l00063"></a>00063       <span class="comment">// TRANSLATORS: %1% = file</span>
85
 
<a name="l00064"></a>00064       <a class="code" href="schroot-main-base_8cc.html#72aa327d5cb9959ed40cdff3ddde9e25">emap</a>(main::CLOSE, N_(<span class="stringliteral">"Failed to close '%1%'"</span>))
86
 
<a name="l00065"></a>00065     };
87
 
<a name="l00066"></a>00066 
88
 
<a name="l00067"></a>00067 }
89
 
<a name="l00068"></a>00068 
90
 
<a name="l00069"></a>00069 <span class="keyword">template</span>&lt;&gt;
91
 
<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/classsbuild_1_1error.html">sbuild::error&lt;main::error_code&gt;::map_type</a>
92
 
<a name="l00071"></a>00071 <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_1error.html#3ebc06008ada3b65bf2b25ce06b2926a">sbuild::error&lt;main::error_code&gt;::error_strings</a>
93
 
<a name="l00072"></a>00072 (<a class="code" href="schroot-main-base_8cc.html#f57f373df7f7c9fb0efae6da23690016" title="This is a list of the supported error codes.">init_errors</a>,
94
 
<a name="l00073"></a>00073  <a class="code" href="schroot-main-base_8cc.html#f57f373df7f7c9fb0efae6da23690016" title="This is a list of the supported error codes.">init_errors</a> + (<span class="keyword">sizeof</span>(<a class="code" href="schroot-main-base_8cc.html#f57f373df7f7c9fb0efae6da23690016" title="This is a list of the supported error codes.">init_errors</a>) / <span class="keyword">sizeof</span>(init_errors[0])));
95
 
<a name="l00074"></a>00074 
96
 
<a name="l00075"></a><a class="code" href="classschroot__listmounts_1_1main.html#e677b87c3fb420faf53007994ac8b6af">00075</a> <a class="code" href="schroot_8cc.html#0ddf1224851353fc92bfbff6f499fa97" title="Main routine.">main::main</a> (options::ptr&amp; <a class="code" href="classschroot__listmounts_1_1options.html" title="schroot-listmounts command-line options.">options</a>):
97
 
<a name="l00076"></a>00076   schroot_base::<a class="code" href="classschroot__listmounts_1_1main.html" title="Frontend for schroot.">main</a>(<span class="stringliteral">"schroot-listmounts"</span>,
98
 
<a name="l00077"></a>00077                      <span class="comment">// TRANSLATORS: '...' is an ellipsis e.g. U+2026,</span>
99
 
<a name="l00078"></a>00078                      <span class="comment">// and '-' is an em-dash.</span>
100
 
<a name="l00079"></a>00079                      _(<span class="stringliteral">"[OPTION...] - list mount points"</span>),
101
 
<a name="l00080"></a>00080                      options,
102
 
<a name="l00081"></a>00081                      false),
103
 
<a name="l00082"></a>00082   opts(options)
104
 
<a name="l00083"></a>00083 {
105
 
<a name="l00084"></a>00084 }
106
 
<a name="l00085"></a>00085 
107
 
<a name="l00086"></a><a class="code" href="classschroot__listmounts_1_1main.html#4444e261c1a635e1aab12e00e5b95f5a">00086</a> <a class="code" href="classschroot__listmounts_1_1main.html#4444e261c1a635e1aab12e00e5b95f5a" title="The destructor.">main::~main</a> ()
 
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 &lt;<a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/sbuild-mntstream_8h.html">sbuild/sbuild-mntstream.h</a>&gt;</span>
 
41
<a name="l00022"></a>00022 
 
42
<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="schroot-listmounts-main_8h.html">schroot-listmounts-main.h</a>"</span>
 
43
<a name="l00024"></a>00024 
 
44
<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;cerrno&gt;</span>
 
45
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;climits&gt;</span>
 
46
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;cstdio&gt;</span>
 
47
<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;cstdlib&gt;</span>
 
48
<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;ctime&gt;</span>
 
49
<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;iostream&gt;</span>
 
50
<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;locale&gt;</span>
 
51
<a name="l00032"></a>00032 
 
52
<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;sys/types.h&gt;</span>
 
53
<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;sys/stat.h&gt;</span>
 
54
<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
 
55
<a name="l00036"></a>00036 
 
56
<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;boost/format.hpp&gt;</span>
 
57
<a name="l00038"></a>00038 
 
58
<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;lockdev.h&gt;</span>
 
59
<a name="l00040"></a>00040 
 
60
<a name="l00041"></a>00041 <span class="keyword">using</span> std::endl;
 
61
<a name="l00042"></a>00042 <span class="keyword">using</span> boost::format;
 
62
<a name="l00043"></a>00043 <span class="keyword">using</span> sbuild::_;
 
63
<a name="l00044"></a>00044 <span class="keyword">using</span> sbuild::N_;
 
64
<a name="l00045"></a>00045 <span class="keyword">using namespace </span>schroot_listmounts;
 
65
<a name="l00046"></a>00046 
 
66
<a name="l00047"></a>00047 <span class="keyword">namespace</span>
 
67
<a name="l00048"></a>00048 {
 
68
<a name="l00049"></a>00049 
 
69
<a name="l00050"></a><a class="code" href="schroot-listmounts-main_8cc.html#7a38cdc9df52b3ddd266f28f3eeeaebb">00050</a>   <span class="keyword">typedef</span> std::pair&lt;main::error_code,const char *&gt; <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/sbuild-auth-conv-tty_8cc.html#9a3145af4184baebb22d7e1061da7f6e">emap</a>;
 
70
<a name="l00051"></a>00051 
 
71
<a name="l00056"></a><a class="code" href="schroot-listmounts-main_8cc.html#f57f373df7f7c9fb0efae6da23690016">00056</a>   emap <a class="code" href="schroot-main-base_8cc.html#f57f373df7f7c9fb0efae6da23690016" title="This is a list of the supported error codes.">init_errors</a>[] =
 
72
<a name="l00057"></a>00057     {
 
73
<a name="l00058"></a>00058       <span class="comment">// TRANSLATORS: %1% = file</span>
 
74
<a name="l00059"></a>00059       <a class="code" href="schroot-main-base_8cc.html#72aa327d5cb9959ed40cdff3ddde9e25">emap</a>(main::FIND,  N_(<span class="stringliteral">"Failed to find '%1%'"</span>))
 
75
<a name="l00060"></a>00060     };
 
76
<a name="l00061"></a>00061 
 
77
<a name="l00062"></a>00062 }
 
78
<a name="l00063"></a>00063 
 
79
<a name="l00064"></a>00064 <span class="keyword">template</span>&lt;&gt;
 
80
<a name="l00065"></a>00065 <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1error.html">sbuild::error&lt;main::error_code&gt;::map_type</a>
 
81
<a name="l00066"></a>00066 <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1error.html#3ebc06008ada3b65bf2b25ce06b2926a">sbuild::error&lt;main::error_code&gt;::error_strings</a>
 
82
<a name="l00067"></a>00067 (<a class="code" href="schroot-main-base_8cc.html#f57f373df7f7c9fb0efae6da23690016" title="This is a list of the supported error codes.">init_errors</a>,
 
83
<a name="l00068"></a>00068  <a class="code" href="schroot-main-base_8cc.html#f57f373df7f7c9fb0efae6da23690016" title="This is a list of the supported error codes.">init_errors</a> + (<span class="keyword">sizeof</span>(<a class="code" href="schroot-main-base_8cc.html#f57f373df7f7c9fb0efae6da23690016" title="This is a list of the supported error codes.">init_errors</a>) / <span class="keyword">sizeof</span>(<a class="code" href="schroot-main-base_8cc.html#f57f373df7f7c9fb0efae6da23690016" title="This is a list of the supported error codes.">init_errors</a>[0])));
 
84
<a name="l00069"></a>00069 
 
85
<a name="l00070"></a><a class="code" href="classschroot__listmounts_1_1main.html#e677b87c3fb420faf53007994ac8b6af">00070</a> <a class="code" href="schroot_8cc.html#0ddf1224851353fc92bfbff6f499fa97" title="Main routine.">main::main</a> (options::ptr&amp; <a class="code" href="classschroot__listmounts_1_1options.html" title="schroot-listmounts command-line options.">options</a>):
 
86
<a name="l00071"></a>00071   schroot_base::<a class="code" href="classschroot__listmounts_1_1main.html" title="Frontend for schroot.">main</a>(<span class="stringliteral">"schroot-listmounts"</span>,
 
87
<a name="l00072"></a>00072                      <span class="comment">// TRANSLATORS: '...' is an ellipsis e.g. U+2026,</span>
 
88
<a name="l00073"></a>00073                      <span class="comment">// and '-' is an em-dash.</span>
 
89
<a name="l00074"></a>00074                      _(<span class="stringliteral">"[OPTION...] - list mount points"</span>),
 
90
<a name="l00075"></a>00075                      options,
 
91
<a name="l00076"></a>00076                      false),
 
92
<a name="l00077"></a>00077   opts(options)
 
93
<a name="l00078"></a>00078 {
 
94
<a name="l00079"></a>00079 }
 
95
<a name="l00080"></a>00080 
 
96
<a name="l00081"></a><a class="code" href="classschroot__listmounts_1_1main.html#4444e261c1a635e1aab12e00e5b95f5a">00081</a> <a class="code" href="classschroot__listmounts_1_1main.html#4444e261c1a635e1aab12e00e5b95f5a" title="The destructor.">main::~main</a> ()
 
97
<a name="l00082"></a>00082 {
 
98
<a name="l00083"></a>00083 }
 
99
<a name="l00084"></a>00084 
 
100
<a name="l00085"></a>00085 <span class="keywordtype">void</span>
 
101
<a name="l00086"></a><a class="code" href="classschroot__listmounts_1_1main.html#b2b9c3a546383be0a67d30b4353dab8c">00086</a> <a class="code" href="classschroot__listmounts_1_1main.html#b2b9c3a546383be0a67d30b4353dab8c" title="List mounts.">main::action_listmounts</a> ()
108
102
<a name="l00087"></a>00087 {
109
 
<a name="l00088"></a>00088 }
 
103
<a name="l00088"></a>00088   std::string to_find = <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#1334c1a94c9c653461074efd4580f26d">sbuild::normalname</a>(this-&gt;opts-&gt;mountpoint);
110
104
<a name="l00089"></a>00089 
111
 
<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>
112
 
<a name="l00091"></a><a class="code" href="classschroot__listmounts_1_1main.html#04b1ad4d9bb9272e2d682552d53a8ef8">00091</a> <a class="code" href="classschroot__listmounts_1_1main.html#04b1ad4d9bb9272e2d682552d53a8ef8" title="List mounts (internal helper).">main::list_mounts</a> (std::string <span class="keyword">const</span>&amp; mountfile)<span class="keyword"> const</span>
113
 
<a name="l00092"></a>00092 <span class="keyword"></span>{
114
 
<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;
115
 
<a name="l00094"></a>00094 
116
 
<a name="l00095"></a>00095   std::string to_find = <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#1334c1a94c9c653461074efd4580f26d">sbuild::normalname</a>(this-&gt;opts-&gt;mountpoint);
117
 
<a name="l00096"></a>00096 
118
 
<a name="l00097"></a>00097   <span class="comment">// NOTE: This is a non-standard GNU extension.</span>
119
 
<a name="l00098"></a>00098   <span class="keywordtype">char</span> *rpath = realpath(to_find.c_str(), NULL);
120
 
<a name="l00099"></a>00099   <span class="keywordflow">if</span> (rpath == 0)
121
 
<a name="l00100"></a>00100     <span class="keywordflow">throw</span> <a class="code" href="classschroot__listmounts_1_1main.html#75ed48a8eed541e6d4a1b23afbbf9eb6" title="Exception type.">error</a>(to_find, <a class="code" href="classschroot__listmounts_1_1main.html#307c6e0e872cee2b5c37e1cba0d930d95b7e611a6a00157da0c5802223589b96" title="Failed to find file.">FIND</a>, strerror(errno));
122
 
<a name="l00101"></a>00101 
123
 
<a name="l00102"></a>00102   to_find = rpath;
124
 
<a name="l00103"></a>00103   free(rpath);
125
 
<a name="l00104"></a>00104   rpath = 0;
 
105
<a name="l00090"></a>00090   {
 
106
<a name="l00091"></a>00091     <span class="comment">// NOTE: This is a non-standard GNU extension.</span>
 
107
<a name="l00092"></a>00092     <span class="keywordtype">char</span> *rpath = realpath(to_find.c_str(), NULL);
 
108
<a name="l00093"></a>00093     <span class="keywordflow">if</span> (rpath == 0)
 
109
<a name="l00094"></a>00094       <span class="keywordflow">throw</span> <a class="code" href="classschroot__listmounts_1_1main.html#75ed48a8eed541e6d4a1b23afbbf9eb6" title="Exception type.">error</a>(to_find, <a class="code" href="classschroot__listmounts_1_1main.html#307c6e0e872cee2b5c37e1cba0d930d95b7e611a6a00157da0c5802223589b96" title="Failed to find file.">FIND</a>, strerror(errno));
 
110
<a name="l00095"></a>00095 
 
111
<a name="l00096"></a>00096     to_find = rpath;
 
112
<a name="l00097"></a>00097     free(rpath);
 
113
<a name="l00098"></a>00098     rpath = 0;
 
114
<a name="l00099"></a>00099   }
 
115
<a name="l00100"></a>00100 
 
116
<a name="l00101"></a>00101   <span class="comment">// Check mounts.</span>
 
117
<a name="l00102"></a>00102   <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1mntstream.html">sbuild::mntstream</a> mounts(<span class="stringliteral">"/proc/mounts"</span>);
 
118
<a name="l00103"></a>00103   <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/structsbuild_1_1mntstream_1_1mntentry.html">sbuild::mntstream::mntentry</a> entry;
 
119
<a name="l00104"></a>00104   <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> mountlist;
126
120
<a name="l00105"></a>00105 
127
 
<a name="l00106"></a>00106   std::FILE *mntdb = std::fopen(mountfile.c_str(), <span class="stringliteral">"r"</span>);
128
 
<a name="l00107"></a>00107   <span class="keywordflow">if</span> (mntdb == 0)
129
 
<a name="l00108"></a>00108     <span class="keywordflow">throw</span> <a class="code" href="classschroot__listmounts_1_1main.html#75ed48a8eed541e6d4a1b23afbbf9eb6" title="Exception type.">error</a>(mountfile, <a class="code" href="classschroot__listmounts_1_1main.html#307c6e0e872cee2b5c37e1cba0d930d9c4f73f79c91f96db2d42d093b83403ec" title="Failed to open file.">OPEN</a>, strerror(errno));
130
 
<a name="l00109"></a>00109 
131
 
<a name="l00110"></a>00110   mntent *mount;
132
 
<a name="l00111"></a>00111   <span class="keywordflow">while</span> ((mount = getmntent(mntdb)) != 0)
133
 
<a name="l00112"></a>00112     {
134
 
<a name="l00113"></a>00113       std::string mount_dir(mount-&gt;mnt_dir);
135
 
<a name="l00114"></a>00114       <span class="keywordflow">if</span> (to_find == <span class="stringliteral">"/"</span> ||
136
 
<a name="l00115"></a>00115           (mount_dir.find(to_find) == 0 &amp;&amp;
137
 
<a name="l00116"></a>00116            (<span class="comment">// Names are the same.</span>
138
 
<a name="l00117"></a>00117             mount_dir.size() == to_find.size() ||
139
 
<a name="l00118"></a>00118             <span class="comment">// Must have a following /, or not the same directory.</span>
140
 
<a name="l00119"></a>00119             (mount_dir.size() &gt; to_find.size() &amp;&amp;
141
 
<a name="l00120"></a>00120              mount_dir[to_find.size()] == <span class="charliteral">'/'</span>))))
142
 
<a name="l00121"></a>00121         ret.push_back(mount_dir);
143
 
<a name="l00122"></a>00122     }
144
 
<a name="l00123"></a>00123 
145
 
<a name="l00124"></a>00124   std::cout &lt;&lt; std::flush;
 
121
<a name="l00106"></a>00106   <span class="keywordflow">while</span> (mounts &gt;&gt; entry)
 
122
<a name="l00107"></a>00107     {
 
123
<a name="l00108"></a>00108       std::string mount_dir(entry.<a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/structsbuild_1_1mntstream_1_1mntentry.html#6da322abfab9ec581c8332b50c048433">directory</a>);
 
124
<a name="l00109"></a>00109       <span class="keywordflow">if</span> (to_find == <span class="stringliteral">"/"</span> ||
 
125
<a name="l00110"></a>00110           (mount_dir.find(to_find) == 0 &amp;&amp;
 
126
<a name="l00111"></a>00111            (<span class="comment">// Names are the same.</span>
 
127
<a name="l00112"></a>00112             mount_dir.size() == to_find.size() ||
 
128
<a name="l00113"></a>00113             <span class="comment">// Must have a following /, or not the same directory.</span>
 
129
<a name="l00114"></a>00114             (mount_dir.size() &gt; to_find.size() &amp;&amp;
 
130
<a name="l00115"></a>00115              mount_dir[to_find.size()] == <span class="charliteral">'/'</span>))))
 
131
<a name="l00116"></a>00116         mountlist.push_back(mount_dir);
 
132
<a name="l00117"></a>00117     }
 
133
<a name="l00118"></a>00118 
 
134
<a name="l00119"></a>00119   <span class="keywordflow">for</span> (sbuild::string_list::const_reverse_iterator pos = mountlist.rbegin();
 
135
<a name="l00120"></a>00120        pos != mountlist.rend();
 
136
<a name="l00121"></a>00121        ++pos)
 
137
<a name="l00122"></a>00122     std::cout &lt;&lt; *pos &lt;&lt; <span class="charliteral">'\n'</span>;
 
138
<a name="l00123"></a>00123   std::cout &lt;&lt; std::flush;
 
139
<a name="l00124"></a>00124 }
146
140
<a name="l00125"></a>00125 
147
 
<a name="l00126"></a>00126   <span class="keywordflow">if</span> (std::fclose(mntdb) == EOF)
148
 
<a name="l00127"></a>00127     <span class="keywordflow">throw</span> <a class="code" href="classschroot__listmounts_1_1main.html#75ed48a8eed541e6d4a1b23afbbf9eb6" title="Exception type.">error</a>(mountfile, <a class="code" href="classschroot__listmounts_1_1main.html#307c6e0e872cee2b5c37e1cba0d930d94e0b6163f30bdb2b8828e684434ebc74" title="Failed to close file.">CLOSE</a>, strerror(errno));
149
 
<a name="l00128"></a>00128 
150
 
<a name="l00129"></a>00129   <span class="keywordflow">return</span> ret;
151
 
<a name="l00130"></a>00130 }
152
 
<a name="l00131"></a>00131 
153
 
<a name="l00132"></a>00132 <span class="keywordtype">void</span>
154
 
<a name="l00133"></a><a class="code" href="classschroot__listmounts_1_1main.html#b2b9c3a546383be0a67d30b4353dab8c">00133</a> <a class="code" href="classschroot__listmounts_1_1main.html#b2b9c3a546383be0a67d30b4353dab8c" title="List mounts.">main::action_listmounts</a> ()
155
 
<a name="l00134"></a>00134 {
156
 
<a name="l00135"></a>00135   <span class="comment">// Check mounts.</span>
157
 
<a name="l00136"></a>00136   <span class="keyword">const</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#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a> mounts =
158
 
<a name="l00137"></a>00137     <a class="code" href="classschroot__listmounts_1_1main.html#04b1ad4d9bb9272e2d682552d53a8ef8" title="List mounts (internal helper).">list_mounts</a>(<span class="stringliteral">"/proc/mounts"</span>);
159
 
<a name="l00138"></a>00138 
160
 
<a name="l00139"></a>00139   <span class="keywordflow">for</span> (sbuild::string_list::const_reverse_iterator pos = mounts.rbegin();
161
 
<a name="l00140"></a>00140        pos != mounts.rend();
162
 
<a name="l00141"></a>00141        ++pos)
163
 
<a name="l00142"></a>00142     std::cout &lt;&lt; *pos &lt;&lt; <span class="charliteral">'\n'</span>;
164
 
<a name="l00143"></a>00143   std::cout &lt;&lt; std::flush;
165
 
<a name="l00144"></a>00144 }
166
 
<a name="l00145"></a>00145 
167
 
<a name="l00146"></a>00146 <span class="keywordtype">int</span>
168
 
<a name="l00147"></a><a class="code" href="classschroot__listmounts_1_1main.html#266e0d62ec45cb0c73b03d277205fe8a">00147</a> <a class="code" href="classschroot__listmounts_1_1main.html#266e0d62ec45cb0c73b03d277205fe8a" title="Run the program.">main::run_impl</a> ()
169
 
<a name="l00148"></a>00148 {
170
 
<a name="l00149"></a>00149   <span class="keywordflow">if</span> (this-&gt;opts-&gt;action == <a class="code" href="classschroot__base_1_1options.html#4c1f304c9f30b5965dcb7bbf51554124" title="Display program help.">options::ACTION_HELP</a>)
171
 
<a name="l00150"></a>00150     <a class="code" href="classschroot__base_1_1main.html#4c246d8a2cedf030e094ffdee5a38553" title="Print help information.">action_help</a>(std::cerr);
172
 
<a name="l00151"></a>00151   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (this-&gt;opts-&gt;action == <a class="code" href="classschroot__base_1_1options.html#1064a6609731fbc80abb0c849ff3a3f8" title="Display program version.">options::ACTION_VERSION</a>)
173
 
<a name="l00152"></a>00152     <a class="code" href="classschroot__base_1_1main.html#cd9c1d4d7c52a423eb929a4bb6f644e0" title="Print version information.">action_version</a>(std::cerr);
174
 
<a name="l00153"></a>00153   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (this-&gt;opts-&gt;action == <a class="code" href="classschroot__listmounts_1_1options.html#71855190faf1edb9b7860e2032fa0b93" title="Begin, run and end a session.">options::ACTION_LISTMOUNTS</a>)
175
 
<a name="l00154"></a>00154     <a class="code" href="classschroot__listmounts_1_1main.html#b2b9c3a546383be0a67d30b4353dab8c" title="List mounts.">action_listmounts</a>();
176
 
<a name="l00155"></a>00155   <span class="keywordflow">else</span>
177
 
<a name="l00156"></a>00156     assert(0); <span class="comment">// Invalid action.</span>
178
 
<a name="l00157"></a>00157 
179
 
<a name="l00158"></a>00158   <span class="keywordflow">return</span> EXIT_SUCCESS;
180
 
<a name="l00159"></a>00159 }
181
 
</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Sun Jul 8 21:23:55 2007 for schroot by&nbsp;
 
141
<a name="l00126"></a>00126 <span class="keywordtype">int</span>
 
142
<a name="l00127"></a><a class="code" href="classschroot__listmounts_1_1main.html#266e0d62ec45cb0c73b03d277205fe8a">00127</a> <a class="code" href="classschroot__listmounts_1_1main.html#266e0d62ec45cb0c73b03d277205fe8a" title="Run the program.">main::run_impl</a> ()
 
143
<a name="l00128"></a>00128 {
 
144
<a name="l00129"></a>00129   <span class="keywordflow">if</span> (this-&gt;opts-&gt;action == <a class="code" href="classschroot__base_1_1options.html#4c1f304c9f30b5965dcb7bbf51554124" title="Display program help.">options::ACTION_HELP</a>)
 
145
<a name="l00130"></a>00130     <a class="code" href="classschroot__base_1_1main.html#4c246d8a2cedf030e094ffdee5a38553" title="Print help information.">action_help</a>(std::cerr);
 
146
<a name="l00131"></a>00131   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (this-&gt;opts-&gt;action == <a class="code" href="classschroot__base_1_1options.html#1064a6609731fbc80abb0c849ff3a3f8" title="Display program version.">options::ACTION_VERSION</a>)
 
147
<a name="l00132"></a>00132     <a class="code" href="classschroot__base_1_1main.html#cd9c1d4d7c52a423eb929a4bb6f644e0" title="Print version information.">action_version</a>(std::cerr);
 
148
<a name="l00133"></a>00133   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (this-&gt;opts-&gt;action == <a class="code" href="classschroot__listmounts_1_1options.html#71855190faf1edb9b7860e2032fa0b93" title="Begin, run and end a session.">options::ACTION_LISTMOUNTS</a>)
 
149
<a name="l00134"></a>00134     <a class="code" href="classschroot__listmounts_1_1main.html#b2b9c3a546383be0a67d30b4353dab8c" title="List mounts.">action_listmounts</a>();
 
150
<a name="l00135"></a>00135   <span class="keywordflow">else</span>
 
151
<a name="l00136"></a>00136     assert(0); <span class="comment">// Invalid action.</span>
 
152
<a name="l00137"></a>00137 
 
153
<a name="l00138"></a>00138   <span class="keywordflow">return</span> EXIT_SUCCESS;
 
154
<a name="l00139"></a>00139 }
 
155
</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Mon Jan 21 00:38:28 2008 for schroot by&nbsp;
182
156
<a href="http://www.doxygen.org/index.html">
183
 
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
 
157
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.4 </small></address>
184
158
</body>
185
159
</html>