|
|
1.1 root 1: /*
2: Copyright (c) 2008 TrueCrypt Foundation. All rights reserved.
3:
4: Governed by the TrueCrypt License 2.4 the full text of which is contained
5: in the file License.txt included in TrueCrypt binary and source code
6: distribution packages.
7: */
8:
9: #include "System.h"
10: #include "Application.h"
11: #include "FavoriteVolume.h"
12: #include "GraphicUserInterface.h"
13: #include "Xml.h"
14:
15: namespace TrueCrypt
16: {
17: FavoriteVolumeList FavoriteVolume::LoadList ()
18: {
19: FavoriteVolumeList favorites;
20:
21: FilePath path = Application::GetConfigFilePath (GetFileName());
22:
23: if (path.IsFile())
24: {
25: foreach (XmlNode node, XmlParser (path).GetNodes (L"volume"))
26: {
27: VolumeSlotNumber slotNumber = 0;
28: wstring slotAttr = wstring (node.Attributes[L"slotnumber"]);
29: if (!slotAttr.empty())
30: slotNumber = StringConverter::ToUInt64 (slotAttr);
31:
32: favorites.push_back (shared_ptr <FavoriteVolume> (
33: new FavoriteVolume ((wstring) node.InnerText, wstring (node.Attributes[L"mountpoint"]), slotNumber)));
34: }
35: }
36:
37: return favorites;
38: }
39:
40: void FavoriteVolume::SaveList (const FavoriteVolumeList &favorites)
41: {
42: FilePath favoritesCfgPath = Application::GetConfigFilePath (GetFileName(), true);
43:
44: if (favorites.empty())
45: {
46: if (favoritesCfgPath.IsFile())
47: favoritesCfgPath.Delete();
48: }
49: else
50: {
51: XmlNode favoritesXml (L"favorites");
52:
53: foreach_ref (const FavoriteVolume &favorite, favorites)
54: {
55: XmlNode node (L"volume", wstring (favorite.Path));
56: node.Attributes[L"mountpoint"] = wstring (favorite.MountPoint);
57: node.Attributes[L"slotnumber"] = StringConverter::FromNumber (favorite.SlotNumber);
58:
59: favoritesXml.InnerNodes.push_back (node);
60: }
61:
62: XmlWriter favoritesWriter (favoritesCfgPath);
63: favoritesWriter.WriteNode (favoritesXml);
64: favoritesWriter.Close();
65: }
66: }
67:
68: void FavoriteVolume::ToMountOptions (MountOptions &options) const
69: {
70: if (MountPoint.IsEmpty())
71: {
72: options.MountPoint.reset();
73: options.NoFilesystem = true;
74: }
75: else
76: options.MountPoint.reset (new DirectoryPath (MountPoint));
77:
78: options.Path.reset (new VolumePath (Path));
79: options.SlotNumber = SlotNumber;
80: }
81: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.