ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/proj/trunk/Spectre/Unmounter.cpp
Revision: 228
Committed: 2003-07-30T21:14:12-07:00 (21 years, 11 months ago) by douglas
File size: 1242 byte(s)
Log Message:
Made Unmounter and made autounmount work. I like cheese.

File Contents

# Content
1 // Spectre Samba Mounter
2 //
3 // Douglas Thrift
4 //
5 // $Id: Unmounter.cpp,v 1.2 2003/07/31 04:14:12 douglas Exp $
6
7 #include "Unmounter.h"
8
9 void Unmounter::unmount()
10 {
11 if (!good) return;
12
13 samba();
14
15 if (debug)
16 {
17 cerr << "mounted = {\n";
18
19 for (set<string>::iterator itor = mounted.begin(); itor !=
20 mounted.end(); itor++)
21 {
22 cerr << " " << *itor << "\n";
23 }
24
25 cerr << "}\n";
26 }
27
28 if (debug) cerr << "folders = {\n";
29
30 for (map<string, Folder>::iterator itor = folders.begin(); itor !=
31 folders.end(); itor++)
32 {
33 if (debug) cerr << " " << itor->first << "\n";
34
35 unmount(itor->first);
36 }
37
38 if (debug) cerr << "}\n";
39 }
40
41 void Unmounter::unmount(const string& folder)
42 {
43 string path = config.root + "/" + host + "/" + (folder[folder.length() - 1]
44 == '$' ? "." + folder.substr(0, folder.length() - 1) : folder);
45
46 if (mounted.find(path) == mounted.end()) return;
47
48 vector<string> args;
49
50 args.push_back("spectre");
51 #if defined _Linux_
52 args.push_back("-l");
53 #elif defined _FreeBSD_
54 args.push_back("-f");
55 #endif
56 args.push_back(path);
57
58 ipstream umount(config.umount, args, pstreambuf::pstderr);
59
60 while (umount.good())
61 {
62 string line;
63
64 getline(umount, line);
65
66 if (line != "") cerr << line << "\n";
67 }
68
69 umount.close();
70 }