ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/proj/trunk/Spectre/Unmounter.cpp
(Generate patch)

Comparing trunk/Spectre/Unmounter.cpp (file contents):
Revision 227 by douglas, 2003-07-30T17:56:29-07:00 vs.
Revision 228 by douglas, 2003-07-30T21:14:12-07:00

# Line 2 | Line 2
2   //
3   // Douglas Thrift
4   //
5 < // $Id: Unmounter.cpp,v 1.1 2003/07/31 00:56:29 douglas Exp $
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 <        //
12 < }
11 >        if (!good) return;
12  
13 < void Unmounter::samba()
15 < {
16 <        //
17 < }
13 >        samba();
14  
15 < void Unmounter::samba(ipstream& pin)
16 < {
17 <        //
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& unmount)
41 > void Unmounter::unmount(const string& folder)
42   {
43 <        //
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   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines