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 <config.h></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 <cerrno></span>
50
<a name="l00025"></a>00025 <span class="preprocessor">#include <climits></span>
51
<a name="l00026"></a>00026 <span class="preprocessor">#include <cstdio></span>
52
<a name="l00027"></a>00027 <span class="preprocessor">#include <cstdlib></span>
53
<a name="l00028"></a>00028 <span class="preprocessor">#include <ctime></span>
54
<a name="l00029"></a>00029 <span class="preprocessor">#include <iostream></span>
55
<a name="l00030"></a>00030 <span class="preprocessor">#include <locale></span>
56
<a name="l00031"></a>00031
57
<a name="l00032"></a>00032 <span class="preprocessor">#include <sys/types.h></span>
58
<a name="l00033"></a>00033 <span class="preprocessor">#include <sys/stat.h></span>
59
<a name="l00034"></a>00034 <span class="preprocessor">#include <unistd.h></span>
60
<a name="l00035"></a>00035
61
<a name="l00036"></a>00036 <span class="preprocessor">#include <boost/format.hpp></span>
62
<a name="l00037"></a>00037
63
<a name="l00038"></a>00038 <span class="preprocessor">#include <mntent.h></span>
64
<a name="l00039"></a>00039
65
<a name="l00040"></a>00040 <span class="preprocessor">#include <lockdev.h></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<main::error_code,const char *> <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><>
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<main::error_code>::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<main::error_code>::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& <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"> * <http://www.gnu.org/licenses/>.</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 <config.h></span>
39
<a name="l00020"></a>00020
40
<a name="l00021"></a>00021 <span class="preprocessor">#include <<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>></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 <cerrno></span>
45
<a name="l00026"></a>00026 <span class="preprocessor">#include <climits></span>
46
<a name="l00027"></a>00027 <span class="preprocessor">#include <cstdio></span>
47
<a name="l00028"></a>00028 <span class="preprocessor">#include <cstdlib></span>
48
<a name="l00029"></a>00029 <span class="preprocessor">#include <ctime></span>
49
<a name="l00030"></a>00030 <span class="preprocessor">#include <iostream></span>
50
<a name="l00031"></a>00031 <span class="preprocessor">#include <locale></span>
51
<a name="l00032"></a>00032
52
<a name="l00033"></a>00033 <span class="preprocessor">#include <sys/types.h></span>
53
<a name="l00034"></a>00034 <span class="preprocessor">#include <sys/stat.h></span>
54
<a name="l00035"></a>00035 <span class="preprocessor">#include <unistd.h></span>
55
<a name="l00036"></a>00036
56
<a name="l00037"></a>00037 <span class="preprocessor">#include <boost/format.hpp></span>
57
<a name="l00038"></a>00038
58
<a name="l00039"></a>00039 <span class="preprocessor">#include <lockdev.h></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<main::error_code,const char *> <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><>
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<main::error_code>::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<main::error_code>::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& <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->opts->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>& 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->opts->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->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 &&
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() > to_find.size() &&
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 << std::flush;
121
<a name="l00106"></a>00106 <span class="keywordflow">while</span> (mounts >> 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 &&
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() > to_find.size() &&
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 << *pos << <span class="charliteral">'\n'</span>;
138
<a name="l00123"></a>00123 std::cout << 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 << *pos << <span class="charliteral">'\n'</span>;
164
<a name="l00143"></a>00143 std::cout << 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->opts->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->opts->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->opts->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
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->opts->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->opts->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->opts->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
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>