Rayburn Davis
2014-10-26 ae714216bd838702edd5430a9ea1071da6482904
- Fixed an issue where results were duplicating themselves

- Fixed an issue with the way versions are numbered automatically
- Undo scripts are now referred to as Rollback scripts
- Added option in Options dialog to automatically send crash dumps to RayburnSoft
51 files added
42 files modified
4 files renamed
1 files copied
1374 ■■■■ changed files
DupliDelete/DupliDelete.v12.suo patch | view | raw | blame | history
DupliDelete/DupliDelete/CreateHardLinkData.cs 4 ●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/DupliDelete.csproj 14 ●●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Duplicate Network Server/NetworkClient.cs 2 ●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Duplicate Network Server/NetworkCommand.cs 13 ●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Duplicate Network Server/NetworkDuplicateScanCommand.cs 45 ●●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Duplicate Network Server/NetworkGetFoldersCommand.cs 30 ●●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Duplicate Network Server/NetworkServer.cs 7 ●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Duplicate Network Server/NetworkTestCommand.cs 13 ●●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Duplicate Search Engine/DirectoryEnumerator.cs 58 ●●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Duplicate Search Engine/DuplicateFinder.cs 19 ●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/FileDirectoryEnumerator.cs 568 ●●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Forms/About.cs 6 ●●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Forms/CheckByString.cs 2 ●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Forms/CheckExcept.cs 2 ●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Forms/CheckInFolder.cs 2 ●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Forms/CreateHardLinksWindow.Designer.cs 22 ●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Forms/CreateHardLinksWindow.cs 12 ●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Forms/CreateSoftLinksWindow.Designer.cs 22 ●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Forms/CreateSoftLinksWindow.cs 12 ●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Forms/MainForm.Designer.cs 24 ●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Forms/MainForm.cs 124 ●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Forms/MainForm.resx 21 ●●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Forms/MoveCheckedWindow.Designer.cs 2 ●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Forms/MoveCheckedWindow.cs 8 ●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Forms/Options.Designer.cs 18 ●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Forms/Options.cs 7 ●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Forms/Options.resx 4 ●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Forms/RunRollbackScript.Designer.cs 20 ●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Forms/RunRollbackScript.cs 16 ●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Forms/RunRollbackScript.resx 123 ●●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/GlobalBuffers.cs 2 ●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/MoveFilesData.cs 4 ●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Program.cs 2 ●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/Properties/AssemblyInfo.cs 1 ●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/bin/Debug/Duplicate Commander.exe patch | view | raw | blame | history
DupliDelete/DupliDelete/bin/Debug/Duplicate Commander.pdb patch | view | raw | blame | history
DupliDelete/DupliDelete/bin/Debug/Duplicate Commander.vshost.exe patch | view | raw | blame | history
DupliDelete/DupliDelete/bin/Debug/options.ini 48 ●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/bin/Release/Duplicate Commander.exe.config 3 ●●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/bin/Release/Duplicate Commander.vshost.exe patch | view | raw | blame | history
DupliDelete/DupliDelete/bin/Release/Duplicate Commander.vshost.exe.config 3 ●●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/bin/Release/Duplicate Commander.vshost.exe.manifest patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Debug/DupliDelete.MainForm.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Debug/DupliDelete.RunRollbackScript.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Debug/DupliDelete.csproj.FileListAbsolute.txt 48 ●●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Debug/DupliDelete.csproj.GenerateResource.Cache patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Debug/DupliDelete.csprojResolveAssemblyReference.cache patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Debug/Duplicate Commander.exe patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Debug/Duplicate Commander.pdb patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Debug/TempPE/Properties.Resources1.Designer.cs.dll patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.About.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.AddExclusion.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.AddNetworkClient.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.AdvancedSearch.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.CheckAllByExtension.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.CheckAllInFolder.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.CheckByDate.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.CheckByFileSize.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.CheckByRegularExpressionDialog.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.CheckByString.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.CheckExcept.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.CheckboxListview.CheckboxListview.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.Checking.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.CrashDetailsWindow.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.CrashWindow.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.DeleteFolder.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.DuplicateListView.DuplicateListView.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.ErrorClass.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.ErrorWindow.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.FindingDialog.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.FirstTimeDisclaimer.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.FirstTimeFinish.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.FirstTimeUpdate.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.FirstTimeWelcome.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.Forms.CheckByCrossReference.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.Forms.CreateHardLinksWindow.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.Forms.CreateSoftLinksWindow.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.Forms.ScanningForServers.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.LocationSelection.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.MainForm.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.MoveCheckedWindow.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.NetworkScanOptions.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.NewForm.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.Options.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.PinPrompt.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.Properties.Resources.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.RunRollbackScript.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.ScanOptions.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.SendingReport.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.UpdateDialog.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.Updating.resources patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.csproj.FileListAbsolute.txt 43 ●●●●● patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.csproj.GenerateResource.Cache patch | view | raw | blame | history
DupliDelete/DupliDelete/obj/x86/Release/build.force patch | view | raw | blame | history
DupliDelete/DupliDelete.v12.suo
Binary files differ
DupliDelete/DupliDelete/CreateHardLinkData.cs
....@@ -6,8 +6,8 @@
66 {
77 public class CreateHardLinkData
88 {
9
- public bool CreateUndoScript = false;
10
- public string UndoScriptPath = "";
9
+ public bool CreateRollbackScript = false;
10
+ public string RollbackScriptPath = "";
1111 public bool LinkButtonPressed = false;
1212 public int LinkIndex;
1313 public int LinkGroup;
DupliDelete/DupliDelete/DupliDelete.csproj
....@@ -35,7 +35,7 @@
3535 <WarningLevel>4</WarningLevel>
3636 </PropertyGroup>
3737 <PropertyGroup>
38
- <StartupObject />
38
+ <StartupObject>DupliDelete.Program</StartupObject>
3939 </PropertyGroup>
4040 <PropertyGroup>
4141 <ApplicationIcon>app_ico.ico</ApplicationIcon>
....@@ -44,7 +44,6 @@
4444 <Reference Include="Microsoft.VisualBasic" />
4545 <Reference Include="System" />
4646 <Reference Include="System.Data" />
47
- <Reference Include="System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL" />
4847 <Reference Include="System.Design" />
4948 <Reference Include="System.Drawing" />
5049 <Reference Include="System.Windows.Forms" />
....@@ -67,12 +66,14 @@
6766 <Compile Include="Duplicate Network Server\NetworkClient.cs" />
6867 <Compile Include="Duplicate Network Server\NetworkDuplicateScanCommand.cs" />
6968 <Compile Include="Duplicate Network Server\NetworkCommand.cs" />
69
+ <Compile Include="Duplicate Network Server\NetworkGetFoldersCommand.cs" />
7070 <Compile Include="Duplicate Network Server\NetworkResponseReader.cs" />
7171 <Compile Include="Duplicate Network Server\NetworkScanQuery.cs" />
7272 <Compile Include="Duplicate Network Server\NetworkServer.cs" />
7373 <Compile Include="Duplicate Network Server\NetworkTestCommand.cs" />
7474 <Compile Include="Duplicate Search Engine\Folder.cs" />
7575 <Compile Include="DuplicateListView\SizeSorter.cs" />
76
+ <Compile Include="FileDirectoryEnumerator.cs" />
7677 <Compile Include="FileOperationAPIWrapper.cs" />
7778 <Compile Include="Forms\AdvancedSearch.cs">
7879 <SubType>Form</SubType>
....@@ -298,11 +299,11 @@
298299 <Compile Include="Forms\PinPrompt.Designer.cs">
299300 <DependentUpon>PinPrompt.cs</DependentUpon>
300301 </Compile>
301
- <Compile Include="Forms\RunUndoScript.cs">
302
+ <Compile Include="Forms\RunRollbackScript.cs">
302303 <SubType>Form</SubType>
303304 </Compile>
304
- <Compile Include="Forms\RunUndoScript.Designer.cs">
305
- <DependentUpon>RunUndoScript.cs</DependentUpon>
305
+ <Compile Include="Forms\RunRollbackScript.Designer.cs">
306
+ <DependentUpon>RunRollbackScript.cs</DependentUpon>
306307 </Compile>
307308 <Compile Include="Forms\ScanningForServers.cs">
308309 <SubType>Form</SubType>
....@@ -532,6 +533,9 @@
532533 <EmbeddedResource Include="Forms\PinPrompt.resx">
533534 <DependentUpon>PinPrompt.cs</DependentUpon>
534535 </EmbeddedResource>
536
+ <EmbeddedResource Include="Forms\RunRollbackScript.resx">
537
+ <DependentUpon>RunRollbackScript.cs</DependentUpon>
538
+ </EmbeddedResource>
535539 <EmbeddedResource Include="Forms\ScanningForServers.resx">
536540 <DependentUpon>ScanningForServers.cs</DependentUpon>
537541 </EmbeddedResource>
DupliDelete/DupliDelete/Duplicate Network Server/NetworkClient.cs
....@@ -24,7 +24,7 @@
2424 private void doConnectThread()
2525 {
2626 int i;
27
- TcpClient client = new TcpClient(ConnectedAddress, 80);
27
+ TcpClient client = new TcpClient(ConnectedAddress, 120);
2828 NetworkStream clientStream = client.GetStream();
2929
3030 if (client.Connected)
DupliDelete/DupliDelete/Duplicate Network Server/NetworkCommand.cs
....@@ -1,11 +1,11 @@
11 using System;
22 using System.Collections.Generic;
33 using System.Text;
4
+using System.Xml.Serialization;
45
56 namespace DupliDelete
67 {
7
- [Serializable]
8
- public class NetworkCommand
8
+ public abstract class NetworkCommand : IXmlSerializable
99 {
1010 public enum DuplicateCommands : int
1111 {
....@@ -13,5 +13,14 @@
1313 }
1414
1515 public DuplicateCommands Command;
16
+
17
+ public System.Xml.Schema.XmlSchema GetSchema()
18
+ {
19
+ throw new NotImplementedException();
20
+ }
21
+
22
+ public abstract void ReadXml(System.Xml.XmlReader reader);
23
+
24
+ public abstract void WriteXml(System.Xml.XmlWriter writer);
1625 }
1726 }
DupliDelete/DupliDelete/Duplicate Network Server/NetworkDuplicateScanCommand.cs
....@@ -10,13 +10,54 @@
1010 public List<string> Filetypes = new List<string>();
1111 public List<string> ExcludedFolders = new List<string>();
1212 public List<string> ExcludedFiletypes = new List<string>();
13
- public int MinimumFilesize = -1;
14
- public int MaximumFileSize = -1;
13
+ public long MinimumFilesize = -1;
14
+ public long MaximumFilesize = -1;
1515 public DuplicateFinder.Mode ScanMode;
1616
1717 public NetworkDuplicateScanCommand()
1818 {
1919 Command = DuplicateCommands.InitiateScan;
2020 }
21
+
22
+ public override void ReadXml(System.Xml.XmlReader reader)
23
+ {
24
+ if(reader.MoveToAttribute("scanMode"))
25
+ {
26
+ if (reader.Value == "actualData")
27
+ ScanMode = DuplicateFinder.Mode.CompareByActualData;
28
+ else
29
+ ScanMode = DuplicateFinder.Mode.CompareByFilename;
30
+ }
31
+
32
+ if (reader.MoveToAttribute("minimumFileSize"))
33
+ MinimumFilesize = reader.ReadContentAsLong();
34
+
35
+ if (reader.MoveToAttribute("maximumFileSize"))
36
+ MaximumFilesize = reader.ReadContentAsLong();
37
+
38
+ if(reader.ReadToFollowing("foldersToScan"))
39
+ {
40
+ while(reader.Read() && reader.NodeType == System.Xml.XmlNodeType.Element && reader.Name == "folder")
41
+ Folders.Add(reader.Value);
42
+ }
43
+ }
44
+
45
+ public override void WriteXml(System.Xml.XmlWriter writer)
46
+ {
47
+ if (ScanMode == DuplicateFinder.Mode.CompareByActualData)
48
+ writer.WriteAttributeString("scanMode", "actualData");
49
+ else
50
+ writer.WriteAttributeString("scanMode", "compareByFilename");
51
+
52
+ writer.WriteAttributeString("minimumFileSize", MinimumFilesize.ToString());
53
+ writer.WriteAttributeString("maximumFileSize", MinimumFilesize.ToString());
54
+
55
+ writer.WriteStartElement("foldersToScan");
56
+ foreach(string folder in Folders)
57
+ {
58
+ writer.WriteElementString("folder", folder);
59
+ }
60
+ writer.WriteEndElement();
61
+ }
2162 }
2263 }
DupliDelete/DupliDelete/Duplicate Network Server/NetworkGetFoldersCommand.cs
....@@ -0,0 +1,30 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+
6
+namespace DupliDelete.Duplicate_Network_Server
7
+{
8
+ public class NetworkGetFoldersCommand : NetworkCommand
9
+ {
10
+ public string Folder { get; set; }
11
+
12
+ public NetworkGetFoldersCommand(string folder)
13
+ {
14
+ Folder = folder;
15
+ }
16
+
17
+ public override void ReadXml(System.Xml.XmlReader reader)
18
+ {
19
+ if (reader.MoveToAttribute("folder"))
20
+ Folder = reader.ReadContentAsString();
21
+ else
22
+ Folder = "";
23
+ }
24
+
25
+ public override void WriteXml(System.Xml.XmlWriter writer)
26
+ {
27
+ writer.WriteAttributeString("folder", Folder);
28
+ }
29
+ }
30
+}
DupliDelete/DupliDelete/Duplicate Network Server/NetworkServer.cs
....@@ -6,6 +6,7 @@
66 using System.Runtime.Serialization.Formatters.Binary;
77 using System.Threading;
88 using DupliDelete.Duplicate_Search_Engine;
9
+using System.Xml.Serialization;
910
1011 namespace DupliDelete
1112 {
....@@ -17,18 +18,20 @@
1718 NetworkStream networkStream=null;
1819 //public IList<ArraySegment<byte>> data
1920
21
+ public static NetworkServer Server { get; set; }
22
+
2023 public void InitServer()
2124 {
2225 while (Listen == true)
2326 {
24
- serverSocket = new TcpListener(System.Net.IPAddress.Parse("127.0.0.1"), 80);
27
+ serverSocket = new TcpListener(System.Net.IPAddress.Parse("127.0.0.1"), 120);
2528 serverSocket.Start(1);
2629
2730 TcpClient client = serverSocket.AcceptTcpClient();
2831
2932 networkStream = client.GetStream();
3033
31
- IFormatter formatter = new BinaryFormatter();
34
+ XmlSerializer formatter = new XmlSerializer(typeof(NetworkCommand));
3235
3336 NetworkCommand command = (NetworkCommand)formatter.Deserialize(networkStream);
3437
DupliDelete/DupliDelete/Duplicate Network Server/NetworkTestCommand.cs
....@@ -12,5 +12,18 @@
1212 {
1313 Data = data;
1414 }
15
+
16
+ public override void ReadXml(System.Xml.XmlReader reader)
17
+ {
18
+ throw new NotImplementedException();
19
+ }
20
+
21
+ public override void WriteXml(System.Xml.XmlWriter writer)
22
+ {
23
+ writer.WriteStartElement("data");
24
+ writer.WriteString(Data);
25
+ writer.WriteEndElement();
26
+ }
1527 }
28
+
1629 }
....@@ -13,7 +13,7 @@
1313 // External Structures
1414
1515 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
16
- struct WIN32_FIND_DATA
16
+ public struct WIN32_FIND_DATA
1717 {
1818 public uint dwFileAttributes;
1919 public System.Runtime.InteropServices.ComTypes.FILETIME ftCreationTime;
....@@ -23,11 +23,15 @@
2323 public uint nFileSizeLow;
2424 public uint dwReserved0;
2525 public uint dwReserved1;
26
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16384)]
26
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
2727 public string cFileName;
2828 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)]
2929 public string cAlternateFileName;
3030 }
31
+
32
+ // dwAdditionalFlags:
33
+ public const int FIND_FIRST_EX_CASE_SENSITIVE = 1;
34
+ public const int FIND_FIRST_EX_LARGE_FETCH = 2;
3135
3236 // External exports
3337
....@@ -45,6 +49,28 @@
4549 [DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
4650 static extern long GetFileAttributes(string lpFileName);
4751 //
52
+
53
+ [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
54
+ public static extern IntPtr FindFirstFileEx(
55
+ string lpFileName,
56
+ FINDEX_INFO_LEVELS fInfoLevelId,
57
+ out WIN32_FIND_DATA lpFindFileData,
58
+ FINDEX_SEARCH_OPS fSearchOp,
59
+ IntPtr lpSearchFilter,
60
+ int dwAdditionalFlags);
61
+
62
+ public enum FINDEX_INFO_LEVELS
63
+ {
64
+ FindExInfoStandard = 0,
65
+ FindExInfoBasic = 1
66
+ }
67
+
68
+ public enum FINDEX_SEARCH_OPS
69
+ {
70
+ FindExSearchNameMatch = 0,
71
+ FindExSearchLimitToDirectories = 1,
72
+ FindExSearchLimitToDevices = 2
73
+ }
4874
4975 public enum FileType
5076 {
....@@ -78,22 +104,44 @@
78104
79105 SetLastError(0);
80106
107
+ //
108
+
109
+ FINDEX_INFO_LEVELS findInfoLevel = FINDEX_INFO_LEVELS.FindExInfoStandard;
110
+ int additionalFlags = 0;
111
+ if (Environment.OSVersion.Version.Major >= 6)
112
+ {
113
+ findInfoLevel = FINDEX_INFO_LEVELS.FindExInfoBasic;
114
+ additionalFlags = FIND_FIRST_EX_LARGE_FETCH;
115
+ }
116
+
117
+ file_finder_handle = FindFirstFileEx(
118
+ StartPath,
119
+ findInfoLevel,
120
+ out data_struct,
121
+ FINDEX_SEARCH_OPS.FindExSearchNameMatch,
122
+ IntPtr.Zero,
123
+ additionalFlags);
124
+ int error = Marshal.GetLastWin32Error();
125
+
126
+ //
127
+
81128 while (GetLastError() != ERROR_NO_MORE_FILES && success != false)
82129 {
83
- if (starting == true)
130
+ /* if (starting == true)
84131 {
85132 starting = false;
86133 file_finder_handle = FindFirstFile(StartPath, out data_struct);
87134 }
88
- else
135
+ else*/
89136 success = FindNextFile(file_finder_handle, out data_struct);
90137
91138 long shifted_high_time = (long) data_struct.ftLastWriteTime.dwHighDateTime;
92139 shifted_high_time = shifted_high_time << 32;
93140
94
- if (data_struct.cFileName != "." && data_struct.cFileName != ".." && data_struct.cFileName.Length > 0 && data_struct.cFileName.Length > 0)
141
+ if (data_struct.cFileName != "." && data_struct.cFileName != ".." && data_struct.cFileName.Length > 0)
95142 {
96143 new_object = new ObjectInfo(start + "\\" + data_struct.cFileName, ((data_struct.dwFileAttributes & 16) == 16 || data_struct.dwFileAttributes == 0 ? 0 : data_struct.nFileSizeHigh + data_struct.nFileSizeLow), ((data_struct.dwFileAttributes & 16) == 16 || data_struct.dwFileAttributes == 0 ? ObjectInfo.FileType.Folder : ObjectInfo.FileType.File), DateTime.FromFileTime(shifted_high_time + (long)data_struct.ftLastWriteTime.dwLowDateTime));
144
+
97145 Objects.Add(new_object);
98146 }
99147 }
....@@ -692,11 +692,12 @@
692692 DateTime endTime;
693693 bool addFolder = true;
694694 bool hardLink= false;
695
+ FileStream debug = new FileStream("C:\\root\\debug.txt", FileMode.Create);
696
+ StreamWriter debugWriter = new StreamWriter(debug);
695697
696698 GlobalBuffers.Duplicates = new DuplicateGroupCollection();
697699
698700 Status = ProgressStatusMode.CachingFolders;
699
-
700701
701702 // Folders to scan
702703 List<Folder> scanFolders = new List<Folder>();
....@@ -735,25 +736,32 @@
735736 if (addFolder == false)
736737 {
737738 addFolder = true;
738
- continue;
739739 }
740740 if (ExcludedFolders.IndexOf(masterFolderTable[i].Name) != -1)
741741 {
742742 masterFolderTable.RemoveAt(i);
743743 i--;
744744 addFolder = false;
745
- continue;
745
+ break;
746746 }
747
- }
747
+ }
748
+
749
+ if (addFolder == false)
750
+ {
751
+ addFolder = true;
752
+ continue;
753
+ }
748754
749755 try
750756 {
757
+
751758 DirectoryList folders = DirectoryEnumerator.Scan(masterFolderTable[i].Name);
752759
753760 if (addFolder == true)
754761 {
755762 foreach (ObjectInfo objectInfo in folders)
756763 {
764
+ debugWriter.WriteLine(objectInfo.Name);
757765 if (objectInfo.Type == ObjectInfo.FileType.Folder)
758766 {
759767 FoundFolders += 1;
....@@ -784,6 +792,9 @@
784792 }
785793 }
786794
795
+ debugWriter
796
+ .Close();
797
+
787798 Status = ProgressStatusMode.CachingFiles;
788799
789800 if (ScanMode == Mode.CompareByActualData)
DupliDelete/DupliDelete/FileDirectoryEnumerator.cs
....@@ -0,0 +1,568 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.IO;
4
+using System.Runtime.ConstrainedExecution;
5
+using System.Runtime.InteropServices;
6
+using System.Security.Permissions;
7
+using Microsoft.Win32.SafeHandles;
8
+
9
+namespace DupliDelete
10
+{
11
+ /// <summary>
12
+ /// Contains information about a file returned by the
13
+ /// <see cref="FastDirectoryEnumerator"/> class.
14
+ /// </summary>
15
+ [Serializable]
16
+ public class FileData
17
+ {
18
+ /// <summary>
19
+ /// Attributes of the file.
20
+ /// </summary>
21
+ public readonly FileAttributes Attributes;
22
+
23
+ public DateTime CreationTime
24
+ {
25
+ get { return this.CreationTimeUtc.ToLocalTime(); }
26
+ }
27
+
28
+ /// <summary>
29
+ /// File creation time in UTC
30
+ /// </summary>
31
+ public readonly DateTime CreationTimeUtc;
32
+
33
+ /// <summary>
34
+ /// Gets the last access time in local time.
35
+ /// </summary>
36
+ public DateTime LastAccesTime
37
+ {
38
+ get { return this.LastAccessTimeUtc.ToLocalTime(); }
39
+ }
40
+
41
+ /// <summary>
42
+ /// File last access time in UTC
43
+ /// </summary>
44
+ public readonly DateTime LastAccessTimeUtc;
45
+
46
+ /// <summary>
47
+ /// Gets the last access time in local time.
48
+ /// </summary>
49
+ public DateTime LastWriteTime
50
+ {
51
+ get { return this.LastWriteTimeUtc.ToLocalTime(); }
52
+ }
53
+
54
+ /// <summary>
55
+ /// File last write time in UTC
56
+ /// </summary>
57
+ public readonly DateTime LastWriteTimeUtc;
58
+
59
+ /// <summary>
60
+ /// Size of the file in bytes
61
+ /// </summary>
62
+ public readonly long Size;
63
+
64
+ /// <summary>
65
+ /// Name of the file
66
+ /// </summary>
67
+ public readonly string Name;
68
+
69
+ /// <summary>
70
+ /// Full path to the file.
71
+ /// </summary>
72
+ public readonly string Path;
73
+
74
+ /// <summary>
75
+ /// Returns a <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
76
+ /// </summary>
77
+ /// <returns>
78
+ /// A <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
79
+ /// </returns>
80
+ public override string ToString()
81
+ {
82
+ return this.Name;
83
+ }
84
+
85
+ /// <summary>
86
+ /// Initializes a new instance of the <see cref="FileData"/> class.
87
+ /// </summary>
88
+ /// <param name="dir">The directory that the file is stored at</param>
89
+ /// <param name="findData">WIN32_FIND_DATA structure that this
90
+ /// object wraps.</param>
91
+ internal FileData(string dir, WIN32_FIND_DATA findData)
92
+ {
93
+ this.Attributes = findData.dwFileAttributes;
94
+
95
+
96
+ this.CreationTimeUtc = ConvertDateTime(findData.ftCreationTime_dwHighDateTime,
97
+ findData.ftCreationTime_dwLowDateTime);
98
+
99
+ this.LastAccessTimeUtc = ConvertDateTime(findData.ftLastAccessTime_dwHighDateTime,
100
+ findData.ftLastAccessTime_dwLowDateTime);
101
+
102
+ this.LastWriteTimeUtc = ConvertDateTime(findData.ftLastWriteTime_dwHighDateTime,
103
+ findData.ftLastWriteTime_dwLowDateTime);
104
+
105
+ this.Size = CombineHighLowInts(findData.nFileSizeHigh, findData.nFileSizeLow);
106
+
107
+ this.Name = findData.cFileName;
108
+ this.Path = System.IO.Path.Combine(dir, findData.cFileName);
109
+ }
110
+
111
+ private static long CombineHighLowInts(uint high, uint low)
112
+ {
113
+ return (((long)high) << 0x20) | low;
114
+ }
115
+
116
+ private static DateTime ConvertDateTime(uint high, uint low)
117
+ {
118
+ long fileTime = CombineHighLowInts(high, low);
119
+ return DateTime.FromFileTimeUtc(fileTime);
120
+ }
121
+ }
122
+
123
+ /// <summary>
124
+ /// Contains information about the file that is found
125
+ /// by the FindFirstFile or FindNextFile functions.
126
+ /// </summary>
127
+ [Serializable, StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto), BestFitMapping(false)]
128
+ internal class WIN32_FIND_DATA
129
+ {
130
+ public FileAttributes dwFileAttributes;
131
+ public uint ftCreationTime_dwLowDateTime;
132
+ public uint ftCreationTime_dwHighDateTime;
133
+ public uint ftLastAccessTime_dwLowDateTime;
134
+ public uint ftLastAccessTime_dwHighDateTime;
135
+ public uint ftLastWriteTime_dwLowDateTime;
136
+ public uint ftLastWriteTime_dwHighDateTime;
137
+ public uint nFileSizeHigh;
138
+ public uint nFileSizeLow;
139
+ public int dwReserved0;
140
+ public int dwReserved1;
141
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
142
+ public string cFileName;
143
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)]
144
+ public string cAlternateFileName;
145
+
146
+ /// <summary>
147
+ /// Returns a <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
148
+ /// </summary>
149
+ /// <returns>
150
+ /// A <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
151
+ /// </returns>
152
+ public override string ToString()
153
+ {
154
+ return "File name=" + cFileName;
155
+ }
156
+ }
157
+
158
+ /// <summary>
159
+ /// A fast enumerator of files in a directory. Use this if you need to get attributes for
160
+ /// all files in a directory.
161
+ /// </summary>
162
+ /// <remarks>
163
+ /// This enumerator is substantially faster than using <see cref="Directory.GetFiles(string)"/>
164
+ /// and then creating a new FileInfo object for each path. Use this version when you
165
+ /// will need to look at the attibutes of each file returned (for example, you need
166
+ /// to check each file in a directory to see if it was modified after a specific date).
167
+ /// </remarks>
168
+ public static class FastDirectoryEnumerator
169
+ {
170
+ /// <summary>
171
+ /// Gets <see cref="FileData"/> for all the files in a directory.
172
+ /// </summary>
173
+ /// <param name="path">The path to search.</param>
174
+ /// <returns>An object that implements <see cref="IEnumerable{FileData}"/> and
175
+ /// allows you to enumerate the files in the given directory.</returns>
176
+ /// <exception cref="ArgumentNullException">
177
+ /// <paramref name="path"/> is a null reference (Nothing in VB)
178
+ /// </exception>
179
+ public static IEnumerable<FileData> EnumerateFiles(string path)
180
+ {
181
+ return FastDirectoryEnumerator.EnumerateFiles(path, "*");
182
+ }
183
+
184
+ /// <summary>
185
+ /// Gets <see cref="FileData"/> for all the files in a directory that match a
186
+ /// specific filter.
187
+ /// </summary>
188
+ /// <param name="path">The path to search.</param>
189
+ /// <param name="searchPattern">The search string to match against files in the path.</param>
190
+ /// <returns>An object that implements <see cref="IEnumerable{FileData}"/> and
191
+ /// allows you to enumerate the files in the given directory.</returns>
192
+ /// <exception cref="ArgumentNullException">
193
+ /// <paramref name="path"/> is a null reference (Nothing in VB)
194
+ /// </exception>
195
+ /// <exception cref="ArgumentNullException">
196
+ /// <paramref name="filter"/> is a null reference (Nothing in VB)
197
+ /// </exception>
198
+ public static IEnumerable<FileData> EnumerateFiles(string path, string searchPattern)
199
+ {
200
+ return FastDirectoryEnumerator.EnumerateFiles(path, searchPattern, SearchOption.TopDirectoryOnly);
201
+ }
202
+
203
+ /// <summary>
204
+ /// Gets <see cref="FileData"/> for all the files in a directory that
205
+ /// match a specific filter, optionally including all sub directories.
206
+ /// </summary>
207
+ /// <param name="path">The path to search.</param>
208
+ /// <param name="searchPattern">The search string to match against files in the path.</param>
209
+ /// <param name="searchOption">
210
+ /// One of the SearchOption values that specifies whether the search
211
+ /// operation should include all subdirectories or only the current directory.
212
+ /// </param>
213
+ /// <returns>An object that implements <see cref="IEnumerable{FileData}"/> and
214
+ /// allows you to enumerate the files in the given directory.</returns>
215
+ /// <exception cref="ArgumentNullException">
216
+ /// <paramref name="path"/> is a null reference (Nothing in VB)
217
+ /// </exception>
218
+ /// <exception cref="ArgumentNullException">
219
+ /// <paramref name="filter"/> is a null reference (Nothing in VB)
220
+ /// </exception>
221
+ /// <exception cref="ArgumentOutOfRangeException">
222
+ /// <paramref name="searchOption"/> is not one of the valid values of the
223
+ /// <see cref="System.IO.SearchOption"/> enumeration.
224
+ /// </exception>
225
+ public static IEnumerable<FileData> EnumerateFiles(string path, string searchPattern, SearchOption searchOption)
226
+ {
227
+ if (path == null)
228
+ {
229
+ throw new ArgumentNullException("path");
230
+ }
231
+ if (searchPattern == null)
232
+ {
233
+ throw new ArgumentNullException("searchPattern");
234
+ }
235
+ if ((searchOption != SearchOption.TopDirectoryOnly) && (searchOption != SearchOption.AllDirectories))
236
+ {
237
+ throw new ArgumentOutOfRangeException("searchOption");
238
+ }
239
+
240
+ string fullPath = Path.GetFullPath(path);
241
+
242
+ return new FileEnumerable(fullPath, searchPattern, searchOption);
243
+ }
244
+
245
+ /// <summary>
246
+ /// Gets <see cref="FileData"/> for all the files in a directory that match a
247
+ /// specific filter.
248
+ /// </summary>
249
+ /// <param name="path">The path to search.</param>
250
+ /// <param name="searchPattern">The search string to match against files in the path.</param>
251
+ /// <returns>An object that implements <see cref="IEnumerable{FileData}"/> and
252
+ /// allows you to enumerate the files in the given directory.</returns>
253
+ /// <exception cref="ArgumentNullException">
254
+ /// <paramref name="path"/> is a null reference (Nothing in VB)
255
+ /// </exception>
256
+ /// <exception cref="ArgumentNullException">
257
+ /// <paramref name="filter"/> is a null reference (Nothing in VB)
258
+ /// </exception>
259
+ public static FileData[] GetFiles(string path, string searchPattern, SearchOption searchOption)
260
+ {
261
+ IEnumerable<FileData> e = FastDirectoryEnumerator.EnumerateFiles(path, searchPattern, searchOption);
262
+ List<FileData> list = new List<FileData>(e);
263
+
264
+ FileData[] retval = new FileData[list.Count];
265
+ list.CopyTo(retval);
266
+
267
+ return retval;
268
+ }
269
+
270
+ /// <summary>
271
+ /// Provides the implementation of the
272
+ /// <see cref="T:System.Collections.Generic.IEnumerable`1"/> interface
273
+ /// </summary>
274
+ private class FileEnumerable : IEnumerable<FileData>
275
+ {
276
+ private readonly string m_path;
277
+ private readonly string m_filter;
278
+ private readonly SearchOption m_searchOption;
279
+
280
+ /// <summary>
281
+ /// Initializes a new instance of the <see cref="FileEnumerable"/> class.
282
+ /// </summary>
283
+ /// <param name="path">The path to search.</param>
284
+ /// <param name="filter">The search string to match against files in the path.</param>
285
+ /// <param name="searchOption">
286
+ /// One of the SearchOption values that specifies whether the search
287
+ /// operation should include all subdirectories or only the current directory.
288
+ /// </param>
289
+ public FileEnumerable(string path, string filter, SearchOption searchOption)
290
+ {
291
+ m_path = path;
292
+ m_filter = filter;
293
+ m_searchOption = searchOption;
294
+ }
295
+
296
+ #region IEnumerable<FileData> Members
297
+
298
+ /// <summary>
299
+ /// Returns an enumerator that iterates through the collection.
300
+ /// </summary>
301
+ /// <returns>
302
+ /// A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can
303
+ /// be used to iterate through the collection.
304
+ /// </returns>
305
+ public IEnumerator<FileData> GetEnumerator()
306
+ {
307
+ return new FileEnumerator(m_path, m_filter, m_searchOption);
308
+ }
309
+
310
+ #endregion
311
+
312
+ #region IEnumerable Members
313
+
314
+ /// <summary>
315
+ /// Returns an enumerator that iterates through a collection.
316
+ /// </summary>
317
+ /// <returns>
318
+ /// An <see cref="T:System.Collections.IEnumerator"/> object that can be
319
+ /// used to iterate through the collection.
320
+ /// </returns>
321
+ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
322
+ {
323
+ return new FileEnumerator(m_path, m_filter, m_searchOption);
324
+ }
325
+
326
+ #endregion
327
+ }
328
+
329
+ /// <summary>
330
+ /// Wraps a FindFirstFile handle.
331
+ /// </summary>
332
+ private sealed class SafeFindHandle : SafeHandleZeroOrMinusOneIsInvalid
333
+ {
334
+ [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
335
+ [DllImport("kernel32.dll")]
336
+ private static extern bool FindClose(IntPtr handle);
337
+
338
+ /// <summary>
339
+ /// Initializes a new instance of the <see cref="SafeFindHandle"/> class.
340
+ /// </summary>
341
+ [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)]
342
+ internal SafeFindHandle()
343
+ : base(true)
344
+ {
345
+ }
346
+
347
+ /// <summary>
348
+ /// When overridden in a derived class, executes the code required to free the handle.
349
+ /// </summary>
350
+ /// <returns>
351
+ /// true if the handle is released successfully; otherwise, in the
352
+ /// event of a catastrophic failure, false. In this case, it
353
+ /// generates a releaseHandleFailed MDA Managed Debugging Assistant.
354
+ /// </returns>
355
+ protected override bool ReleaseHandle()
356
+ {
357
+ return FindClose(base.handle);
358
+ }
359
+ }
360
+
361
+ /// <summary>
362
+ /// Provides the implementation of the
363
+ /// <see cref="T:System.Collections.Generic.IEnumerator`1"/> interface
364
+ /// </summary>
365
+ [System.Security.SuppressUnmanagedCodeSecurity]
366
+ private class FileEnumerator : IEnumerator<FileData>
367
+ {
368
+ [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
369
+ private static extern SafeFindHandle FindFirstFile(string fileName,
370
+ [In, Out] WIN32_FIND_DATA data);
371
+
372
+ [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
373
+ private static extern bool FindNextFile(SafeFindHandle hndFindFile,
374
+ [In, Out, MarshalAs(UnmanagedType.LPStruct)] WIN32_FIND_DATA lpFindFileData);
375
+
376
+ /// <summary>
377
+ /// Hold context information about where we current are in the directory search.
378
+ /// </summary>
379
+ private class SearchContext
380
+ {
381
+ public readonly string Path;
382
+ public Stack<string> SubdirectoriesToProcess;
383
+
384
+ public SearchContext(string path)
385
+ {
386
+ this.Path = path;
387
+ }
388
+ }
389
+
390
+ private string m_path;
391
+ private string m_filter;
392
+ private SearchOption m_searchOption;
393
+ private Stack<SearchContext> m_contextStack;
394
+ private SearchContext m_currentContext;
395
+
396
+ private SafeFindHandle m_hndFindFile;
397
+ private WIN32_FIND_DATA m_win_find_data = new WIN32_FIND_DATA();
398
+
399
+ /// <summary>
400
+ /// Initializes a new instance of the <see cref="FileEnumerator"/> class.
401
+ /// </summary>
402
+ /// <param name="path">The path to search.</param>
403
+ /// <param name="filter">The search string to match against files in the path.</param>
404
+ /// <param name="searchOption">
405
+ /// One of the SearchOption values that specifies whether the search
406
+ /// operation should include all subdirectories or only the current directory.
407
+ /// </param>
408
+ public FileEnumerator(string path, string filter, SearchOption searchOption)
409
+ {
410
+ m_path = path;
411
+ m_filter = filter;
412
+ m_searchOption = searchOption;
413
+ m_currentContext = new SearchContext(path);
414
+
415
+ if (m_searchOption == SearchOption.AllDirectories)
416
+ {
417
+ m_contextStack = new Stack<SearchContext>();
418
+ }
419
+ }
420
+
421
+ #region IEnumerator<FileData> Members
422
+
423
+ /// <summary>
424
+ /// Gets the element in the collection at the current position of the enumerator.
425
+ /// </summary>
426
+ /// <value></value>
427
+ /// <returns>
428
+ /// The element in the collection at the current position of the enumerator.
429
+ /// </returns>
430
+ public FileData Current
431
+ {
432
+ get { return new FileData(m_path, m_win_find_data); }
433
+ }
434
+
435
+ #endregion
436
+
437
+ #region IDisposable Members
438
+
439
+ /// <summary>
440
+ /// Performs application-defined tasks associated with freeing, releasing,
441
+ /// or resetting unmanaged resources.
442
+ /// </summary>
443
+ public void Dispose()
444
+ {
445
+ if (m_hndFindFile != null)
446
+ {
447
+ m_hndFindFile.Dispose();
448
+ }
449
+ }
450
+
451
+ #endregion
452
+
453
+ #region IEnumerator Members
454
+
455
+ /// <summary>
456
+ /// Gets the element in the collection at the current position of the enumerator.
457
+ /// </summary>
458
+ /// <value></value>
459
+ /// <returns>
460
+ /// The element in the collection at the current position of the enumerator.
461
+ /// </returns>
462
+ object System.Collections.IEnumerator.Current
463
+ {
464
+ get { return new FileData(m_path, m_win_find_data); }
465
+ }
466
+
467
+ /// <summary>
468
+ /// Advances the enumerator to the next element of the collection.
469
+ /// </summary>
470
+ /// <returns>
471
+ /// true if the enumerator was successfully advanced to the next element;
472
+ /// false if the enumerator has passed the end of the collection.
473
+ /// </returns>
474
+ /// <exception cref="T:System.InvalidOperationException">
475
+ /// The collection was modified after the enumerator was created.
476
+ /// </exception>
477
+ public bool MoveNext()
478
+ {
479
+ bool retval = false;
480
+
481
+ //If the handle is null, this is first call to MoveNext in the current
482
+ // directory. In that case, start a new search.
483
+ if (m_currentContext.SubdirectoriesToProcess == null)
484
+ {
485
+ if (m_hndFindFile == null)
486
+ {
487
+ new FileIOPermission(FileIOPermissionAccess.PathDiscovery, m_path).Demand();
488
+
489
+ string searchPath = Path.Combine(m_path, m_filter);
490
+ m_hndFindFile = FindFirstFile(searchPath, m_win_find_data);
491
+ retval = !m_hndFindFile.IsInvalid;
492
+ }
493
+ else
494
+ {
495
+ //Otherwise, find the next item.
496
+ retval = FindNextFile(m_hndFindFile, m_win_find_data);
497
+ }
498
+ }
499
+
500
+ //If the call to FindNextFile or FindFirstFile succeeded...
501
+ if (retval)
502
+ {
503
+ if (((FileAttributes)m_win_find_data.dwFileAttributes & FileAttributes.Directory) == FileAttributes.Directory)
504
+ {
505
+ //Ignore folders for now. We call MoveNext recursively here to
506
+ // move to the next item that FindNextFile will return.
507
+ return MoveNext();
508
+ }
509
+ }
510
+ else if (m_searchOption == SearchOption.AllDirectories)
511
+ {
512
+ //SearchContext context = new SearchContext(m_hndFindFile, m_path);
513
+ //m_contextStack.Push(context);
514
+ //m_path = Path.Combine(m_path, m_win_find_data.cFileName);
515
+ //m_hndFindFile = null;
516
+
517
+ if (m_currentContext.SubdirectoriesToProcess == null)
518
+ {
519
+ string[] subDirectories = Directory.GetDirectories(m_path);
520
+ m_currentContext.SubdirectoriesToProcess = new Stack<string>(subDirectories);
521
+ }
522
+
523
+ if (m_currentContext.SubdirectoriesToProcess.Count > 0)
524
+ {
525
+ string subDir = m_currentContext.SubdirectoriesToProcess.Pop();
526
+
527
+ m_contextStack.Push(m_currentContext);
528
+ m_path = subDir;
529
+ m_hndFindFile = null;
530
+ m_currentContext = new SearchContext(m_path);
531
+ return MoveNext();
532
+ }
533
+
534
+ //If there are no more files in this directory and we are
535
+ // in a sub directory, pop back up to the parent directory and
536
+ // continue the search from there.
537
+ if (m_contextStack.Count > 0)
538
+ {
539
+ m_currentContext = m_contextStack.Pop();
540
+ m_path = m_currentContext.Path;
541
+ if (m_hndFindFile != null)
542
+ {
543
+ m_hndFindFile.Close();
544
+ m_hndFindFile = null;
545
+ }
546
+
547
+ return MoveNext();
548
+ }
549
+ }
550
+
551
+ return retval;
552
+ }
553
+
554
+ /// <summary>
555
+ /// Sets the enumerator to its initial position, which is before the first element in the collection.
556
+ /// </summary>
557
+ /// <exception cref="T:System.InvalidOperationException">
558
+ /// The collection was modified after the enumerator was created.
559
+ /// </exception>
560
+ public void Reset()
561
+ {
562
+ m_hndFindFile = null;
563
+ }
564
+
565
+ #endregion
566
+ }
567
+ }
568
+}
DupliDelete/DupliDelete/Forms/About.cs
....@@ -31,8 +31,10 @@
3131 private void About_Load(object sender, EventArgs e)
3232 {
3333 pictureBox1.Image = imageList1.Images[0];
34
- versionLabel.Text = "Duplicate Commander 3.2.41117";/* + Assembly.GetExecutingAssembly().GetName().Version.Major + "." + Assembly.GetExecutingAssembly().GetName().Version.Minor + "." + Assembly.GetExecutingAssembly().GetName().Version.Revision;
35
- */
34
+ versionLabel.Text = "Duplicate Commander " + System.Reflection.Assembly.GetExecutingAssembly()
35
+ .GetName()
36
+ .Version.ToString();
37
+
3638 }
3739
3840 private void rayburnsoftLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
DupliDelete/DupliDelete/Forms/CheckByString.cs
....@@ -57,7 +57,7 @@
5757
5858 private void CheckByString_Load(object sender, EventArgs e)
5959 {
60
- Form1 f1 = (Form1)this.Owner;
60
+ MainForm f1 = (MainForm)this.Owner;
6161 int i;
6262
6363 GlobalBuffers.folders_ok_clicked = false;
DupliDelete/DupliDelete/Forms/CheckExcept.cs
....@@ -73,7 +73,7 @@
7373 private void CheckExcept_Load(object sender, EventArgs e)
7474 {
7575 GlobalBuffers.folders_ok_clicked = false;
76
- Form1 f1 = (Form1)this.Owner;
76
+ MainForm f1 = (MainForm)this.Owner;
7777 int i;
7878
7979 GlobalBuffers.check_by_folder_items.Clear();
DupliDelete/DupliDelete/Forms/CheckInFolder.cs
....@@ -79,7 +79,7 @@
7979 private void CheckAllInFolder_Load(object sender, EventArgs e)
8080 {
8181 GlobalBuffers.folders_ok_clicked = false;
82
- Form1 f1 = (Form1)this.Owner;
82
+ MainForm f1 = (MainForm)this.Owner;
8383 int i;
8484
8585 GlobalBuffers.folders_ok_clicked = false;
DupliDelete/DupliDelete/Forms/CreateHardLinksWindow.Designer.cs
....@@ -32,7 +32,7 @@
3232 this.browseButton = new System.Windows.Forms.Button();
3333 this.locationLabel = new System.Windows.Forms.Label();
3434 this.locationTextbox = new System.Windows.Forms.TextBox();
35
- this.createUndoScriptCheckbox = new System.Windows.Forms.CheckBox();
35
+ this.createRollbackScriptCheckbox = new System.Windows.Forms.CheckBox();
3636 this.okButton = new System.Windows.Forms.Button();
3737 this.groupBox1.SuspendLayout();
3838 this.SuspendLayout();
....@@ -42,7 +42,7 @@
4242 this.groupBox1.Controls.Add(this.browseButton);
4343 this.groupBox1.Controls.Add(this.locationLabel);
4444 this.groupBox1.Controls.Add(this.locationTextbox);
45
- this.groupBox1.Controls.Add(this.createUndoScriptCheckbox);
45
+ this.groupBox1.Controls.Add(this.createRollbackScriptCheckbox);
4646 this.groupBox1.Location = new System.Drawing.Point(12, 12);
4747 this.groupBox1.Name = "groupBox1";
4848 this.groupBox1.Size = new System.Drawing.Size(329, 98);
....@@ -76,15 +76,15 @@
7676 this.locationTextbox.Size = new System.Drawing.Size(243, 20);
7777 this.locationTextbox.TabIndex = 3;
7878 //
79
- // createUndoScriptCheckbox
79
+ // createRollbackScriptCheckbox
8080 //
81
- this.createUndoScriptCheckbox.AutoSize = true;
82
- this.createUndoScriptCheckbox.Location = new System.Drawing.Point(9, 18);
83
- this.createUndoScriptCheckbox.Name = "createUndoScriptCheckbox";
84
- this.createUndoScriptCheckbox.Size = new System.Drawing.Size(112, 17);
85
- this.createUndoScriptCheckbox.TabIndex = 2;
86
- this.createUndoScriptCheckbox.Text = "Create undo script";
87
- this.createUndoScriptCheckbox.UseVisualStyleBackColor = true;
81
+ this.createRollbackScriptCheckbox.AutoSize = true;
82
+ this.createRollbackScriptCheckbox.Location = new System.Drawing.Point(9, 18);
83
+ this.createRollbackScriptCheckbox.Name = "createRollbackScriptCheckbox";
84
+ this.createRollbackScriptCheckbox.Size = new System.Drawing.Size(112, 17);
85
+ this.createRollbackScriptCheckbox.TabIndex = 2;
86
+ this.createRollbackScriptCheckbox.Text = "Create rollback script";
87
+ this.createRollbackScriptCheckbox.UseVisualStyleBackColor = true;
8888 //
8989 // okButton
9090 //
....@@ -126,7 +126,7 @@
126126 private System.Windows.Forms.Button browseButton;
127127 private System.Windows.Forms.Label locationLabel;
128128 private System.Windows.Forms.TextBox locationTextbox;
129
- private System.Windows.Forms.CheckBox createUndoScriptCheckbox;
129
+ private System.Windows.Forms.CheckBox createRollbackScriptCheckbox;
130130 private System.Windows.Forms.Button okButton;
131131
132132 }
DupliDelete/DupliDelete/Forms/CreateHardLinksWindow.cs
....@@ -22,15 +22,15 @@
2222
2323 private void okButton_Click(object sender, EventArgs e)
2424 {
25
- if (createUndoScriptCheckbox.Checked == true && locationTextbox.Text == "")
25
+ if (createRollbackScriptCheckbox.Checked == true && locationTextbox.Text == "")
2626 {
27
- MessageBox.Show("You checked to create an undo script, but didn't specify a location. Please specify a location for the undo script.", "Duplicate Commander", MessageBoxButtons.OK, MessageBoxIcon.Error);
27
+ MessageBox.Show("You checked to create a rollback script, but didn't specify a location. Please specify a location for the rollback script.", "Duplicate Commander", MessageBoxButtons.OK, MessageBoxIcon.Error);
2828
2929 return;
3030 }
3131
32
- GlobalBuffers.CreateHardLinkData.CreateUndoScript = createUndoScriptCheckbox.Checked;
33
- GlobalBuffers.CreateHardLinkData.UndoScriptPath = locationTextbox.Text;
32
+ GlobalBuffers.CreateHardLinkData.CreateRollbackScript = createRollbackScriptCheckbox.Checked;
33
+ GlobalBuffers.CreateHardLinkData.RollbackScriptPath = locationTextbox.Text;
3434 //GlobalBuffers.CreateHardLinkData.LinkType = (hardLinkTypeCombobox.SelectedIndex == 0 ? CreateHardLinkData.Type.Absolute : CreateHardLinkData.Type.Relative);
3535
3636 Close();
....@@ -39,8 +39,8 @@
3939 private void browseButton_Click(object sender, EventArgs e)
4040 {
4141 SaveFileDialog sfd1 = new SaveFileDialog();
42
- sfd1.Title = "Please specify the place to save the undo script...";
43
- sfd1.Filter = "Duplicate Commander Undo Script (*.dds)|*.dds||";
42
+ sfd1.Title = "Please specify the place to save the rollback script...";
43
+ sfd1.Filter = "Duplicate Commander Rollback Script (*.dds)|*.dds||";
4444 sfd1.ShowDialog();
4545
4646 if (sfd1.FileName != "")
DupliDelete/DupliDelete/Forms/CreateSoftLinksWindow.Designer.cs
....@@ -32,7 +32,7 @@
3232 this.browseButton = new System.Windows.Forms.Button();
3333 this.locationLabel = new System.Windows.Forms.Label();
3434 this.locationTextbox = new System.Windows.Forms.TextBox();
35
- this.createUndoScriptCheckbox = new System.Windows.Forms.CheckBox();
35
+ this.createRollbackScriptCheckbox = new System.Windows.Forms.CheckBox();
3636 this.hardLinkTypeCombobox = new System.Windows.Forms.ComboBox();
3737 this.hardLinkTypeLabel = new System.Windows.Forms.Label();
3838 this.okButton = new System.Windows.Forms.Button();
....@@ -44,7 +44,7 @@
4444 this.groupBox1.Controls.Add(this.browseButton);
4545 this.groupBox1.Controls.Add(this.locationLabel);
4646 this.groupBox1.Controls.Add(this.locationTextbox);
47
- this.groupBox1.Controls.Add(this.createUndoScriptCheckbox);
47
+ this.groupBox1.Controls.Add(this.createRollbackScriptCheckbox);
4848 this.groupBox1.Controls.Add(this.hardLinkTypeCombobox);
4949 this.groupBox1.Controls.Add(this.hardLinkTypeLabel);
5050 this.groupBox1.Location = new System.Drawing.Point(12, 12);
....@@ -80,15 +80,15 @@
8080 this.locationTextbox.Size = new System.Drawing.Size(243, 20);
8181 this.locationTextbox.TabIndex = 3;
8282 //
83
- // createUndoScriptCheckbox
83
+ // createRollbackScriptCheckbox
8484 //
85
- this.createUndoScriptCheckbox.AutoSize = true;
86
- this.createUndoScriptCheckbox.Location = new System.Drawing.Point(9, 54);
87
- this.createUndoScriptCheckbox.Name = "createUndoScriptCheckbox";
88
- this.createUndoScriptCheckbox.Size = new System.Drawing.Size(112, 17);
89
- this.createUndoScriptCheckbox.TabIndex = 2;
90
- this.createUndoScriptCheckbox.Text = "Create undo script";
91
- this.createUndoScriptCheckbox.UseVisualStyleBackColor = true;
85
+ this.createRollbackScriptCheckbox.AutoSize = true;
86
+ this.createRollbackScriptCheckbox.Location = new System.Drawing.Point(9, 54);
87
+ this.createRollbackScriptCheckbox.Name = "createRollbackScriptCheckbox";
88
+ this.createRollbackScriptCheckbox.Size = new System.Drawing.Size(112, 17);
89
+ this.createRollbackScriptCheckbox.TabIndex = 2;
90
+ this.createRollbackScriptCheckbox.Text = "Create rollback script";
91
+ this.createRollbackScriptCheckbox.UseVisualStyleBackColor = true;
9292 //
9393 // hardLinkTypeCombobox
9494 //
....@@ -151,7 +151,7 @@
151151 private System.Windows.Forms.Button browseButton;
152152 private System.Windows.Forms.Label locationLabel;
153153 private System.Windows.Forms.TextBox locationTextbox;
154
- private System.Windows.Forms.CheckBox createUndoScriptCheckbox;
154
+ private System.Windows.Forms.CheckBox createRollbackScriptCheckbox;
155155 private System.Windows.Forms.ComboBox hardLinkTypeCombobox;
156156 private System.Windows.Forms.Label hardLinkTypeLabel;
157157 private System.Windows.Forms.Button okButton;
DupliDelete/DupliDelete/Forms/CreateSoftLinksWindow.cs
....@@ -22,15 +22,15 @@
2222
2323 private void okButton_Click(object sender, EventArgs e)
2424 {
25
- if (createUndoScriptCheckbox.Checked == true && locationTextbox.Text == "")
25
+ if (createRollbackScriptCheckbox.Checked == true && locationTextbox.Text == "")
2626 {
27
- MessageBox.Show("You checked to create an undo script, but didn't specify a location. Please specify a location for the undo script.", "Duplicate Commander", MessageBoxButtons.OK, MessageBoxIcon.Error);
27
+ MessageBox.Show("You checked to create a rollback script, but didn't specify a location. Please specify a location for the rollback script.", "Duplicate Commander", MessageBoxButtons.OK, MessageBoxIcon.Error);
2828
2929 return;
3030 }
3131
32
- GlobalBuffers.CreateHardLinkData.CreateUndoScript = createUndoScriptCheckbox.Checked;
33
- GlobalBuffers.CreateHardLinkData.UndoScriptPath = locationTextbox.Text;
32
+ GlobalBuffers.CreateHardLinkData.CreateRollbackScript = createRollbackScriptCheckbox.Checked;
33
+ GlobalBuffers.CreateHardLinkData.RollbackScriptPath = locationTextbox.Text;
3434 GlobalBuffers.CreateHardLinkData.LinkType = (hardLinkTypeCombobox.SelectedIndex == 0 ? CreateHardLinkData.Type.Absolute : CreateHardLinkData.Type.Relative);
3535
3636 Close();
....@@ -39,8 +39,8 @@
3939 private void browseButton_Click(object sender, EventArgs e)
4040 {
4141 SaveFileDialog sfd1 = new SaveFileDialog();
42
- sfd1.Title = "Please specify the place to save the undo script...";
43
- sfd1.Filter = "Duplicate Commander Undo Script (*.dds)|*.dds||";
42
+ sfd1.Title = "Please specify the place to save the rollback script...";
43
+ sfd1.Filter = "Duplicate Commander Rollback Script (*.dds)|*.dds||";
4444 sfd1.ShowDialog();
4545
4646 if (sfd1.FileName != "")
DupliDelete/DupliDelete/Forms/MainForm.Designer.cs
....@@ -1,6 +1,6 @@
11 namespace DupliDelete
22 {
3
- partial class Form1
3
+ partial class MainForm
44 {
55 /// <summary>
66 /// Required designer variable.
....@@ -29,7 +29,7 @@
2929 private void InitializeComponent()
3030 {
3131 this.components = new System.ComponentModel.Container();
32
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
32
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
3333 this.statusBar = new System.Windows.Forms.StatusBar();
3434 this.statusBarPanel1 = new System.Windows.Forms.StatusBarPanel();
3535 this.statusBarPanel2 = new System.Windows.Forms.StatusBarPanel();
....@@ -136,7 +136,7 @@
136136 this.loadFileListToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
137137 this.saveFileListToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
138138 this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
139
- this.runUndoScriptToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
139
+ this.runRollbackScriptToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
140140 this.checkByRegularToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
141141 this.reCToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
142142 this.connectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
....@@ -1233,7 +1233,7 @@
12331233 this.loadFileListToolStripMenuItem,
12341234 this.saveFileListToolStripMenuItem,
12351235 this.toolStripSeparator7,
1236
- this.runUndoScriptToolStripMenuItem,
1236
+ this.runRollbackScriptToolStripMenuItem,
12371237 this.checkByRegularToolStripMenuItem,
12381238 this.reCToolStripMenuItem,
12391239 this.connectToolStripMenuItem});
....@@ -1310,12 +1310,12 @@
13101310 this.toolStripSeparator7.Name = "toolStripSeparator7";
13111311 this.toolStripSeparator7.Size = new System.Drawing.Size(210, 6);
13121312 //
1313
- // runUndoScriptToolStripMenuItem
1313
+ // runRollbackScriptToolStripMenuItem
13141314 //
1315
- this.runUndoScriptToolStripMenuItem.Name = "runUndoScriptToolStripMenuItem";
1316
- this.runUndoScriptToolStripMenuItem.Size = new System.Drawing.Size(213, 22);
1317
- this.runUndoScriptToolStripMenuItem.Text = "&Run Undo Script...";
1318
- this.runUndoScriptToolStripMenuItem.Click += new System.EventHandler(this.runUndoScriptToolStripMenuItem_Click);
1315
+ this.runRollbackScriptToolStripMenuItem.Name = "runRollbackScriptToolStripMenuItem";
1316
+ this.runRollbackScriptToolStripMenuItem.Size = new System.Drawing.Size(213, 22);
1317
+ this.runRollbackScriptToolStripMenuItem.Text = "&Run Rollback Script...";
1318
+ this.runRollbackScriptToolStripMenuItem.Click += new System.EventHandler(this.runRollbackScriptToolStripMenuItem_Click);
13191319 //
13201320 // checkByRegularToolStripMenuItem
13211321 //
....@@ -1657,7 +1657,7 @@
16571657 this.mainList.VisibleChanged += new System.EventHandler(this.mainList_VisibleChanged);
16581658 this.mainList.MouseEnter += new System.EventHandler(this.mainList_MouseEnter);
16591659 //
1660
- // Form1
1660
+ // MainForm
16611661 //
16621662 this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
16631663 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
....@@ -1671,7 +1671,7 @@
16711671 this.Location = new System.Drawing.Point(20, 20);
16721672 this.MainMenuStrip = this.menuStrip;
16731673 this.MinimumSize = new System.Drawing.Size(196, 191);
1674
- this.Name = "Form1";
1674
+ this.Name = "MainForm";
16751675 this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
16761676 this.Text = "Duplicate Commander 3.1 Beta 4";
16771677 this.Activated += new System.EventHandler(this.Form1_Activated);
....@@ -1745,7 +1745,7 @@
17451745 private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
17461746 private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
17471747 private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
1748
- private System.Windows.Forms.ToolStripMenuItem runUndoScriptToolStripMenuItem;
1748
+ private System.Windows.Forms.ToolStripMenuItem runRollbackScriptToolStripMenuItem;
17491749 private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem;
17501750 private System.Windows.Forms.ToolStripMenuItem excludeContainingOrParentFolder;
17511751 private System.Windows.Forms.ToolStripMenuItem deleteThisFolder;
DupliDelete/DupliDelete/Forms/MainForm.cs
....@@ -27,11 +27,11 @@
2727
2828 namespace DupliDelete
2929 {
30
- public partial class Form1 : Form
30
+ public partial class MainForm : Form
3131 {
3232 public bool filelist_mode = false;
3333 public bool in_search = false; // true if a search phrase is entered
34
- RunUndoScript ruds1;
34
+ RunRollbackScript ruds1;
3535 bool search_thread_running = false;
3636 public string version_string;// = GetVersionString();
3737 Thread search_thread;
....@@ -68,7 +68,7 @@
6868 [DllImport("shlwapi.dll", SetLastError = true)]
6969 static extern int PathRelativePathTo(StringBuilder pszPath, string pszFrom, int dwAttrFrom, string pszTo, int dwAttrTo);
7070
71
- public Form1()
71
+ public MainForm()
7272 {
7373 InitializeComponent();
7474 }
....@@ -322,24 +322,7 @@
322322 private void Form1_Load(object sender, EventArgs e)
323323 {
324324
325
- // Duplicate_Commander.RSTreeView.RSTreeNode tn = new Duplicate_Commander.RSTreeView.RSTreeNode();
326
-
327
- // tn.Text = "Test";
328
- // rsTreeView1.Nodes.Add(tn);
329
-
330
- /* IndeterminableTreeNode item = new IndeterminableTreeNode();
331
- item.Text = "Test!";
332
- item.Checked = 0;
333
-
334
- IndeterminableTreeNode item2 = new IndeterminableTreeNode();
335
- item2.Text = "Test2";
336
- item2.Checked = 0;
337
- item.Nodes.Add(item2);
338
-
339
- item.Expand();
340
- fileSystemTreeview.Nodes.Add(item); */
341
-
342
- if (!File.Exists(GlobalBuffers.OptionsPath))
325
+ if (!File.Exists(GlobalBuffers.OptionsPath))
343326 {
344327 MessageBox.Show("The options.ini file does not exist at \"" + Application.StartupPath + "\". Please reinstall or redownload Duplicate Commander.", "Duplicate Commander", MessageBoxButtons.OK, MessageBoxIcon.Error);
345328 this.Dispose(true);
....@@ -371,7 +354,10 @@
371354
372355 // get this version; it's stored in the title of the window
373356 version_string = GetVersionString();
374
- Text = "Duplicate Commander 3.2.41117"; //+ Assembly.GetExecutingAssembly().GetName().Version.Major + "." + Assembly.GetExecutingAssembly().GetName().Version.Minor + "." + Assembly.GetExecutingAssembly().GetName().Version.Revision;
357
+ Text = "Duplicate Commander " + System.Reflection.Assembly.GetExecutingAssembly()
358
+ .GetName()
359
+ .Version.ToString();
360
+
375361
376362 // check for updates
377363 ThreadStart ts1 = new ThreadStart(CheckForUpdates);
....@@ -409,6 +395,12 @@
409395
410396 GlobalBuffers.mainList.Columns[0].Width = Width - 470;
411397
398
+ // NetworkClient nc = new NetworkClient();
399
+
400
+ // nc.Connect("127.0.0.1");
401
+
402
+
403
+
412404 }
413405 }
414406
....@@ -892,29 +884,29 @@
892884 chl.Owner = this;
893885 chl.ShowDialog();
894886
895
- /* DialogResult r = MessageBox.Show("Would you like to create an undo script? If you think you may need to undo this operation in the future, it is highly recommended.", "Duplicate Commander", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation);
887
+ /* DialogResult r = MessageBox.Show("Would you like to create a rollback script? If you think you may need to rollback this operation in the future, it is highly recommended.", "Duplicate Commander", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation);
896888 if (r == System.Windows.Forms.DialogResult.Yes)
897889 {
898890 SaveFileDialog sfd1 = new SaveFileDialog();
899
- sfd1.Title = "Please specify the place to save the undo script...";
900
- sfd1.Filter = "Duplicate Commander Undo Script (*.dds)|*.dds||";
891
+ sfd1.Title = "Please specify the place to save the rollback script...";
892
+ sfd1.Filter = "Duplicate Commander Rollback Script (*.dds)|*.dds||";
901893 sfd1.ShowDialog();
902894
903895 if (sfd1.FileName == "")
904896 {
905
- if ((DialogResult)MessageBox.Show("You did not specify a place to save an undo script. To continue without saving one, click OK.", "Duplicate Commander", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) == DialogResult.Cancel)
897
+ if ((DialogResult)MessageBox.Show("You did not specify a place to save a rollback script. To continue without saving one, click OK.", "Duplicate Commander", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) == DialogResult.Cancel)
906898 return;
907
- GlobalBuffers.CreateHardLinkData.CreateUndoScript = false;
899
+ GlobalBuffers.CreateHardLinkData.CreateRollbackScript = false;
908900 }
909901 else
910902 {
911
- GlobalBuffers.CreateHardLinkData.CreateUndoScript = true;
912
- GlobalBuffers.CreateHardLinkData.UndoScriptPath = sfd1.FileName;
903
+ GlobalBuffers.CreateHardLinkData.CreateRollbackScript = true;
904
+ GlobalBuffers.CreateHardLinkData.RollbackScriptPath = sfd1.FileName;
913905 }
914906 }
915907 else if (r == System.Windows.Forms.DialogResult.No)
916908 {
917
- GlobalBuffers.CreateHardLinkData.CreateUndoScript = false;
909
+ GlobalBuffers.CreateHardLinkData.CreateRollbackScript = false;
918910
919911 //EnableArrows(false);
920912 }
....@@ -1072,8 +1064,8 @@
10721064 double prg = (double)100 / GlobalBuffers.Duplicates.Count;
10731065 double prg2 = (double)0.0;
10741066 TextFileStream tfs1 = null;
1075
- if (GlobalBuffers.MoveFilesData.UndoListPath != "" && GlobalBuffers.MoveFilesData.CreateUndoList == true)
1076
- tfs1 = new TextFileStream(GlobalBuffers.MoveFilesData.UndoListPath, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);
1067
+ if (GlobalBuffers.MoveFilesData.RollbackListPath != "" && GlobalBuffers.MoveFilesData.CreateRollbackList == true)
1068
+ tfs1 = new TextFileStream(GlobalBuffers.MoveFilesData.RollbackListPath, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);
10771069 string moved_filename;
10781070 int copy_filename_loop = 1;
10791071 int group_count = 0, duplicate_count = 0;
....@@ -1123,7 +1115,7 @@
11231115 {
11241116
11251117 }
1126
- if (GlobalBuffers.MoveFilesData.CreateUndoList == true)
1118
+ if (GlobalBuffers.MoveFilesData.CreateRollbackList == true)
11271119 tfs1.WriteLine(tfs1, "<move>" + "\"" + moved_filename + "\"" + ",?," + "\"" + GlobalBuffers.Duplicates[i][j].Filename + "\"");
11281120
11291121 }
....@@ -1138,7 +1130,7 @@
11381130
11391131 }
11401132
1141
- if (GlobalBuffers.MoveFilesData.UndoListPath != "" && GlobalBuffers.MoveFilesData.CreateUndoList == true)
1133
+ if (GlobalBuffers.MoveFilesData.RollbackListPath != "" && GlobalBuffers.MoveFilesData.CreateRollbackList == true)
11421134 tfs1.Close();
11431135
11441136 this.Invoke((MethodInvoker)delegate
....@@ -1152,7 +1144,7 @@
11521144 errors.ShowErrorWindow();
11531145 }
11541146
1155
- public static void WriteUndoScript(TextFileStream tfs1, int operation, string file_to_process, string destination_path)
1147
+ public static void WriteRollbackScript(TextFileStream tfs1, int operation, string file_to_process, string destination_path)
11561148 {
11571149 tfs1.WriteLine(tfs1, (operation == 1 ? "<copy>" : "<move>") + "\"" + file_to_process + "\"" + ",?," + "\"" + destination_path + "\"");
11581150 }
....@@ -1541,15 +1533,15 @@
15411533 long_process_listener.Complete = true;
15421534 }
15431535
1544
- private void runUndoScriptToolStripMenuItem_Click(object sender, EventArgs e)
1536
+ private void runRollbackScriptToolStripMenuItem_Click(object sender, EventArgs e)
15451537 {
15461538 if (GlobalBuffers.working)
15471539 return;
15481540 OpenFileDialog ofd1 = new OpenFileDialog();
1549
- ruds1 = new RunUndoScript();
1541
+ ruds1 = new RunRollbackScript();
15501542
1551
- ofd1.Title = "Specify the undo script...";
1552
- ofd1.Filter = "Duplicate Commander Undo Script (*.dds)|*.dds||";
1543
+ ofd1.Title = "Specify the rollback script...";
1544
+ ofd1.Filter = "Duplicate Commander Rollback Script (*.dds)|*.dds||";
15531545
15541546 ofd1.InitialDirectory = "C:\\";
15551547
....@@ -1557,16 +1549,16 @@
15571549
15581550 if (ofd1.FileName != "")
15591551 {
1560
- ParseUndoScript(ofd1.FileName);
1552
+ ParseRollbackScript(ofd1.FileName);
15611553
15621554 ruds1.Tag = (string)ofd1.FileName;
15631555 ruds1.Owner = this;
15641556 ruds1.ShowDialog();
15651557 }
1566
- //ExecuteUndoScript(ofd1.FileName);
1558
+ //ExecuteRollbackScript(ofd1.FileName);
15671559 }
15681560
1569
- private void ParseUndoScript(string in_file)
1561
+ private void ParseRollbackScript(string in_file)
15701562 {
15711563 string[] contents = File.ReadAllLines(in_file);
15721564 string file1, file2;
....@@ -1597,7 +1589,7 @@
15971589 }
15981590 }
15991591
1600
- private void ExecuteUndoScript(string in_file)
1592
+ private void ExecuteRollbackScript(string in_file)
16011593 {
16021594 TextFileStream tfs1 = new TextFileStream(in_file, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Read);
16031595 string buffer, file1, file2;
....@@ -5188,24 +5180,24 @@
51885180
51895181
51905182
5191
- DialogResult r = MessageBox.Show("Would you like to create an undo script? If you think you may need to undo this operation in the future, it is highly recommended.", "Duplicate Commander", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation);
5183
+ DialogResult r = MessageBox.Show("Would you like to create a rollback script? If you think you may need to rollback this operation in the future, it is highly recommended.", "Duplicate Commander", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation);
51925184 if (r == DialogResult.Yes)
51935185 {
51945186 SaveFileDialog sfd1 = new SaveFileDialog();
5195
- sfd1.Title = "Please specify the place to save the undo script...";
5196
- sfd1.Filter = "Duplicate Commander Undo Script (*.dds)|*.dds||";
5187
+ sfd1.Title = "Please specify the place to save the rollback script...";
5188
+ sfd1.Filter = "Duplicate Commander Rollback Script (*.dds)|*.dds||";
51975189 sfd1.ShowDialog();
51985190
51995191 if (sfd1.FileName == "")
52005192 {
5201
- if ((DialogResult)MessageBox.Show("You did not specify a place to save an undo script. To continue without saving one, click OK.", "Duplicate Commander", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) == DialogResult.Cancel)
5193
+ if ((DialogResult)MessageBox.Show("You did not specify a place to save a rollback script. To continue without saving one, click OK.", "Duplicate Commander", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) == DialogResult.Cancel)
52025194 return;
5203
- GlobalBuffers.CreateHardLinkData.CreateUndoScript = false;
5195
+ GlobalBuffers.CreateHardLinkData.CreateRollbackScript = false;
52045196 }
52055197 else
52065198 {
5207
- GlobalBuffers.CreateHardLinkData.CreateUndoScript = true;
5208
- GlobalBuffers.CreateHardLinkData.UndoScriptPath = sfd1.FileName;
5199
+ GlobalBuffers.CreateHardLinkData.CreateRollbackScript = true;
5200
+ GlobalBuffers.CreateHardLinkData.RollbackScriptPath = sfd1.FileName;
52095201 }
52105202 }
52115203 *
....@@ -6487,8 +6479,8 @@
64876479 string drive, drive2;
64886480 TextFileStream tfs1 = null;
64896481 int group_count = 0, duplicate_count = 0;
6490
- if (GlobalBuffers.CreateHardLinkData.CreateUndoScript == true)
6491
- tfs1 = new TextFileStream(GlobalBuffers.CreateHardLinkData.UndoScriptPath, System.IO.FileMode.Create, System.IO.FileAccess.Write);
6482
+ if (GlobalBuffers.CreateHardLinkData.CreateRollbackScript == true)
6483
+ tfs1 = new TextFileStream(GlobalBuffers.CreateHardLinkData.RollbackScriptPath, System.IO.FileMode.Create, System.IO.FileAccess.Write);
64926484
64936485 prg = (double)100 / GlobalBuffers.Duplicates.GroupDuplicateTotal;
64946486
....@@ -6552,8 +6544,8 @@
65526544 }
65536545
65546546
6555
- if (GlobalBuffers.CreateHardLinkData.CreateUndoScript == true)
6556
- WriteUndoScript(tfs1, 1, hard_link_filename, GlobalBuffers.Duplicates[i][j].Filename);
6547
+ if (GlobalBuffers.CreateHardLinkData.CreateRollbackScript == true)
6548
+ WriteRollbackScript(tfs1, 1, hard_link_filename, GlobalBuffers.Duplicates[i][j].Filename);
65576549
65586550 checking_window.progress += (double)prg;
65596551
....@@ -6633,8 +6625,8 @@
66336625 }
66346626 else
66356627 {
6636
- if (GlobalBuffers.CreateHardLinkData.CreateUndoScript == true)
6637
- WriteUndoScript(tfs1, 1, hard_link_filename, GlobalBuffers.Duplicates[i][j].Filename);
6628
+ if (GlobalBuffers.CreateHardLinkData.CreateRollbackScript == true)
6629
+ WriteRollbackScript(tfs1, 1, hard_link_filename, GlobalBuffers.Duplicates[i][j].Filename);
66386630
66396631 if (GlobalBuffers.Duplicates[clicked_item.Group].RemoveAt(j, true) == DuplicateGroup.RemoveStatus.RemovedFile)
66406632 j--;
....@@ -6646,8 +6638,8 @@
66466638
66476639 checking_window.progress += (double)prg;
66486640
6649
- if (GlobalBuffers.CreateHardLinkData.CreateUndoScript == true)
6650
- WriteUndoScript(tfs1, 1, hard_link_filename, GlobalBuffers.Duplicates[i][j].Filename);
6641
+ if (GlobalBuffers.CreateHardLinkData.CreateRollbackScript == true)
6642
+ WriteRollbackScript(tfs1, 1, hard_link_filename, GlobalBuffers.Duplicates[i][j].Filename);
66516643
66526644 if (GlobalBuffers.Duplicates[i].RemoveAt(j, false) == DuplicateGroup.RemoveStatus.RemovedFile)
66536645 j--;
....@@ -6669,7 +6661,7 @@
66696661 }
66706662 }
66716663
6672
- if (GlobalBuffers.CreateHardLinkData.CreateUndoScript == true)
6664
+ if (GlobalBuffers.CreateHardLinkData.CreateRollbackScript == true)
66736665 tfs1.Close();
66746666
66756667 SetStatusBarData(false);
....@@ -6695,8 +6687,8 @@
66956687 string drive;
66966688 TextFileStream tfs1 = null;
66976689 int group_count = 0, duplicate_count = 0;
6698
- if (GlobalBuffers.CreateHardLinkData.CreateUndoScript == true)
6699
- tfs1 = new TextFileStream(GlobalBuffers.CreateHardLinkData.UndoScriptPath, System.IO.FileMode.Create, System.IO.FileAccess.Write);
6690
+ if (GlobalBuffers.CreateHardLinkData.CreateRollbackScript == true)
6691
+ tfs1 = new TextFileStream(GlobalBuffers.CreateHardLinkData.RollbackScriptPath, System.IO.FileMode.Create, System.IO.FileAccess.Write);
67006692
67016693 prg = (double)100 / GlobalBuffers.Duplicates.GroupDuplicateTotal;
67026694
....@@ -6767,8 +6759,8 @@
67676759 }
67686760 }
67696761
6770
- if (GlobalBuffers.CreateHardLinkData.CreateUndoScript == true)
6771
- WriteUndoScript(tfs1, 1, soft_link_filename, GlobalBuffers.Duplicates[i][j].Filename);
6762
+ if (GlobalBuffers.CreateHardLinkData.CreateRollbackScript == true)
6763
+ WriteRollbackScript(tfs1, 1, soft_link_filename, GlobalBuffers.Duplicates[i][j].Filename);
67726764
67736765 checking_window.progress += (double)prg;
67746766
....@@ -6837,8 +6829,8 @@
68376829 }
68386830 else
68396831 {
6840
- if (GlobalBuffers.CreateHardLinkData.CreateUndoScript == true)
6841
- WriteUndoScript(tfs1, 1, soft_link_filename, group.DuplicateGroup[j].Filename);
6832
+ if (GlobalBuffers.CreateHardLinkData.CreateRollbackScript == true)
6833
+ WriteRollbackScript(tfs1, 1, soft_link_filename, group.DuplicateGroup[j].Filename);
68426834
68436835 if (GlobalBuffers.Duplicates[clicked_item.Group].RemoveAt(j, true) == DuplicateGroup.RemoveStatus.RemovedFile)
68446836 j--;
....@@ -6860,7 +6852,7 @@
68606852 }
68616853 }
68626854
6863
- if (GlobalBuffers.CreateHardLinkData.CreateUndoScript == true)
6855
+ if (GlobalBuffers.CreateHardLinkData.CreateRollbackScript == true)
68646856 tfs1.Close();
68656857
68666858 GlobalBuffers.mainList.Invalidate();
DupliDelete/DupliDelete/Forms/MainForm.resx
....@@ -123,12 +123,6 @@
123123 <metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
124124 <value>433, 17</value>
125125 </metadata>
126
- <metadata name="searchStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
127
- <value>756, 17</value>
128
- </metadata>
129
- <metadata name="commandStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
130
- <value>868, 17</value>
131
- </metadata>
132126 <metadata name="fileSystemList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
133127 <value>645, 56</value>
134128 </metadata>
....@@ -137,7 +131,7 @@
137131 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
138132 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
139133 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAs
140
- DAAAAk1TRnQBSQFMAgEBBQEAAXQBIgF0ASIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
134
+ DAAAAk1TRnQBSQFMAgEBBQEAAYwBIgGMASIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
141135 AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
142136 AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
143137 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
....@@ -194,9 +188,6 @@
194188 </data>
195189 <metadata name="toolStrip3.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
196190 <value>424, 95</value>
197
- </metadata>
198
- <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
199
- <value>757, 85</value>
200191 </metadata>
201192 <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
202193 <data name="newToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
....@@ -336,6 +327,9 @@
336327 AABJRU5ErkJggg==
337328 </value>
338329 </data>
330
+ <metadata name="searchStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
331
+ <value>756, 17</value>
332
+ </metadata>
339333 <data name="checkFound.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
340334 <value>
341335 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
....@@ -431,6 +425,9 @@
431425 QiF8En7z2mDjw3Xy+Xz5bh0ORwPDNe0v0D65jMrNP/MAAAAASUVORK5CYII=
432426 </value>
433427 </data>
428
+ <metadata name="commandStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
429
+ <value>868, 17</value>
430
+ </metadata>
434431 <data name="searchButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
435432 <value>
436433 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
....@@ -1290,7 +1287,7 @@
12901287 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
12911288 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
12921289 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAw
1293
- CAAAAk1TRnQBSQFMAwEBAAEwASIBMAEiARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA
1290
+ CAAAAk1TRnQBSQFMAwEBAAFIASIBSAEiARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA
12941291 AUADAAEQAwABAQEAAQgGAAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA
12951292 AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA
12961293 AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm
....@@ -1342,7 +1339,7 @@
13421339 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
13431340 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
13441341 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACa
1345
- HAEAAk1TRnQBSQFMAgEBIQEAAXABEgFwARIBGAEAARgBAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFg
1342
+ HAEAAk1TRnQBSQFMAgEBIQEAAYgBEgGIARIBGAEAARgBAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFg
13461343 AwAB2AMAAQEBAAEgBgABRAEBFQAD6gH/A7IB/wOWAf8D1wH//wBxAAPXAf8BAAGZAcwB/wOGAf8DhgH/
13471344 A9cB//8AcQABmQHMAv8BAAGZAcwB/wOGAf8DhgH/A8AB/wPjAf8D4wH/A+MB/wPxAf//AGEAAZkBzAL/
13481345 AQABmQHMAf8DhgH/BAADhgH/A4YB/wOGAf8DsgH/A+MB//8AXQABzAP/AZkCzAH/A5YB/wHMApkB/wHw
DupliDelete/DupliDelete/Forms/MoveCheckedWindow.Designer.cs
....@@ -116,7 +116,7 @@
116116 this.checkBox1.Name = "checkBox1";
117117 this.checkBox1.Size = new System.Drawing.Size(112, 17);
118118 this.checkBox1.TabIndex = 4;
119
- this.checkBox1.Text = "Create undo script";
119
+ this.checkBox1.Text = "Create rollback script";
120120 this.checkBox1.UseVisualStyleBackColor = true;
121121 this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
122122 //
DupliDelete/DupliDelete/Forms/MoveCheckedWindow.cs
....@@ -54,8 +54,8 @@
5454 GlobalBuffers.MoveFilesData = new MoveFilesData();
5555
5656 GlobalBuffers.MoveFilesData.Folder = textBox1.Text;
57
- GlobalBuffers.MoveFilesData.CreateUndoList = checkBox1.Checked;
58
- GlobalBuffers.MoveFilesData.UndoListPath = textBox2.Text;
57
+ GlobalBuffers.MoveFilesData.CreateRollbackList = checkBox1.Checked;
58
+ GlobalBuffers.MoveFilesData.RollbackListPath = textBox2.Text;
5959
6060 this.Close();
6161 }
....@@ -64,8 +64,8 @@
6464 {
6565 SaveFileDialog ofd1 = new SaveFileDialog();
6666
67
- ofd1.Title = "Specify where to save the undo script...";
68
- ofd1.Filter = "DupliDelete Undo Script |*.dds||";
67
+ ofd1.Title = "Specify where to save the rollback script...";
68
+ ofd1.Filter = "DupliDelete Rollback Script |*.dds||";
6969
7070 ofd1.InitialDirectory = "C:\\";
7171
DupliDelete/DupliDelete/Forms/Options.Designer.cs
....@@ -213,6 +213,7 @@
213213 //
214214 // groupBox4
215215 //
216
+ this.groupBox4.Controls.Add(this.checkBox13);
216217 this.groupBox4.Controls.Add(this.checkBox12);
217218 this.groupBox4.Controls.Add(this.checkBox2);
218219 this.groupBox4.Controls.Add(this.checkBox1);
....@@ -221,9 +222,9 @@
221222 this.groupBox4.Controls.Add(this.checkBox6);
222223 this.groupBox4.Controls.Add(this.checkBox4);
223224 this.groupBox4.Controls.Add(this.checkBox5);
224
- this.groupBox4.Location = new System.Drawing.Point(10, 90);
225
+ this.groupBox4.Location = new System.Drawing.Point(10, 64);
225226 this.groupBox4.Name = "groupBox4";
226
- this.groupBox4.Size = new System.Drawing.Size(341, 171);
227
+ this.groupBox4.Size = new System.Drawing.Size(341, 188);
227228 this.groupBox4.TabIndex = 12;
228229 this.groupBox4.TabStop = false;
229230 this.groupBox4.Text = "Other Options";
....@@ -231,7 +232,7 @@
231232 // checkBox12
232233 //
233234 this.checkBox12.AutoSize = true;
234
- this.checkBox12.Location = new System.Drawing.Point(7, 144);
235
+ this.checkBox12.Location = new System.Drawing.Point(7, 165);
235236 this.checkBox12.Name = "checkBox12";
236237 this.checkBox12.Size = new System.Drawing.Size(239, 17);
237238 this.checkBox12.TabIndex = 7;
....@@ -310,13 +311,12 @@
310311 //
311312 // groupBox2
312313 //
313
- this.groupBox2.Controls.Add(this.checkBox13);
314314 this.groupBox2.Controls.Add(this.checkBox9);
315315 this.groupBox2.Controls.Add(this.label1);
316316 this.groupBox2.Controls.Add(this.textBox2);
317317 this.groupBox2.Location = new System.Drawing.Point(10, 8);
318318 this.groupBox2.Name = "groupBox2";
319
- this.groupBox2.Size = new System.Drawing.Size(341, 76);
319
+ this.groupBox2.Size = new System.Drawing.Size(341, 50);
320320 this.groupBox2.TabIndex = 11;
321321 this.groupBox2.TabStop = false;
322322 this.groupBox2.Text = "Speed Options / Memory Throttling";
....@@ -567,11 +567,11 @@
567567 // checkBox13
568568 //
569569 this.checkBox13.AutoSize = true;
570
- this.checkBox13.Location = new System.Drawing.Point(10, 48);
570
+ this.checkBox13.Location = new System.Drawing.Point(7, 144);
571571 this.checkBox13.Name = "checkBox13";
572
- this.checkBox13.Size = new System.Drawing.Size(216, 17);
573
- this.checkBox13.TabIndex = 12;
574
- this.checkBox13.Text = "Enable multi-core / multhreading support";
572
+ this.checkBox13.Size = new System.Drawing.Size(327, 17);
573
+ this.checkBox13.TabIndex = 8;
574
+ this.checkBox13.Text = "Automatically send crash dumps to RayburnSoft (recommended)";
575575 this.checkBox13.UseVisualStyleBackColor = true;
576576 //
577577 // Options
DupliDelete/DupliDelete/Forms/Options.cs
....@@ -131,6 +131,11 @@
131131 else
132132 GlobalBuffers.SettingsManager.Add( "highlight_items", "0");
133133
134
+ if (checkBox13.Checked == true)
135
+ GlobalBuffers.SettingsManager.Add("senddump", "1");
136
+ else
137
+ GlobalBuffers.SettingsManager.Add("senddump", "0");
138
+
134139 GlobalBuffers.SettingsManager.Add( "persist_check", Convert.ToInt32(checkBox4.Checked).ToString());
135140 GlobalBuffers.SettingsManager.Add( "del_untrue", Convert.ToInt32(checkBox5.Checked).ToString());
136141
....@@ -185,7 +190,7 @@
185190 if (GlobalBuffers.SettingsManager.FindSettingStringSingle("notify_alphabeta") == "1")
186191 checkBox12.Checked = true;
187192
188
- if (GlobalBuffers.SettingsManager.FindSettingStringSingle("multicore") == "1")
193
+ if (GlobalBuffers.SettingsManager.FindSettingStringSingle("senddump") == "1")
189194 checkBox13.Checked = true;
190195
191196 if (GlobalBuffers.SettingsManager.FindSettingStringSingle("large_icons") == "0")
DupliDelete/DupliDelete/Forms/Options.resx
....@@ -112,9 +112,9 @@
112112 <value>2.0</value>
113113 </resheader>
114114 <resheader name="reader">
115
- <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
115
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116116 </resheader>
117117 <resheader name="writer">
118
- <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
118
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119119 </resheader>
120120 </root>
DupliDelete/DupliDelete/Forms/RunUndoScript.Designer.cs
similarity index 93%rename from DupliDelete/DupliDelete/Forms/RunUndoScript.Designer.csrename to DupliDelete/DupliDelete/Forms/RunRollbackScript.Designer.cs
....@@ -1,6 +1,6 @@
11 namespace DupliDelete
22 {
3
- partial class RunUndoScript
3
+ partial class RunRollbackScript
44 {
55 /// <summary>
66 /// Required designer variable.
....@@ -43,9 +43,9 @@
4343 //
4444 // listView1
4545 //
46
- this.listView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
47
- | System.Windows.Forms.AnchorStyles.Left)
48
- | System.Windows.Forms.AnchorStyles.Right)));
46
+ this.listView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
47
+ | System.Windows.Forms.AnchorStyles.Left)
48
+ | System.Windows.Forms.AnchorStyles.Right)));
4949 this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
5050 this.columnHeader0,
5151 this.columnHeader1,
....@@ -87,7 +87,7 @@
8787 this.button1.Name = "button1";
8888 this.button1.Size = new System.Drawing.Size(75, 36);
8989 this.button1.TabIndex = 2;
90
- this.button1.Text = "Undo &Selected";
90
+ this.button1.Text = "Rollback &Selected";
9191 this.button1.UseVisualStyleBackColor = true;
9292 this.button1.Click += new System.EventHandler(this.button1_Click);
9393 //
....@@ -98,7 +98,7 @@
9898 this.button2.Name = "button2";
9999 this.button2.Size = new System.Drawing.Size(75, 29);
100100 this.button2.TabIndex = 3;
101
- this.button2.Text = "Undo &All";
101
+ this.button2.Text = "Rollback &All";
102102 this.button2.UseVisualStyleBackColor = true;
103103 this.button2.Click += new System.EventHandler(this.button2_Click);
104104 //
....@@ -127,7 +127,7 @@
127127 this.statusStrip1.TabIndex = 1;
128128 this.statusStrip1.Text = "statusStrip1";
129129 //
130
- // RunUndoScript
130
+ // RunRollbackScript
131131 //
132132 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
133133 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
....@@ -137,11 +137,11 @@
137137 this.Controls.Add(this.statusStrip1);
138138 this.Controls.Add(this.listView1);
139139 this.MinimizeBox = false;
140
- this.Name = "RunUndoScript";
140
+ this.Name = "RunRollbackScript";
141141 this.ShowIcon = false;
142142 this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
143
- this.Text = "Run undo script...";
144
- this.Load += new System.EventHandler(this.RunUndoScript_Load);
143
+ this.Text = "Run rollback script...";
144
+ this.Load += new System.EventHandler(this.RunRollbackScript_Load);
145145 this.statusStrip1.ResumeLayout(false);
146146 this.statusStrip1.PerformLayout();
147147 this.ResumeLayout(false);
DupliDelete/DupliDelete/Forms/RunUndoScript.cs
similarity index 90%rename from DupliDelete/DupliDelete/Forms/RunUndoScript.csrename to DupliDelete/DupliDelete/Forms/RunRollbackScript.cs
....@@ -10,10 +10,10 @@
1010
1111 namespace DupliDelete
1212 {
13
- public partial class RunUndoScript : Form
13
+ public partial class RunRollbackScript : Form
1414 {
15
- public string undo_script;
16
- public RunUndoScript()
15
+ public string rollback_script;
16
+ public RunRollbackScript()
1717 {
1818 InitializeComponent();
1919 }
....@@ -68,9 +68,9 @@
6868 button2.Enabled = true;
6969 }
7070
71
- private void RunUndoScript_Load(object sender, EventArgs e)
71
+ private void RunRollbackScript_Load(object sender, EventArgs e)
7272 {
73
- undo_script = (string)this.Tag;
73
+ rollback_script = (string)this.Tag;
7474
7575
7676 }
....@@ -136,9 +136,9 @@
136136
137137 if (error_count == 0)
138138 {
139
- dr = MessageBox.Show("The undo script processed successfully. Delete the undo script?", "Duplicate Commander", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
140
- if (dr == System.Windows.Forms.DialogResult.Yes && File.Exists(undo_script))
141
- File.Delete(undo_script);
139
+ dr = MessageBox.Show("The rollback script processed successfully. Delete the rollback script?", "Duplicate Commander", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
140
+ if (dr == System.Windows.Forms.DialogResult.Yes && File.Exists(rollback_script))
141
+ File.Delete(rollback_script);
142142 }
143143 button1.Enabled = true;
144144 button2.Enabled = true;
DupliDelete/DupliDelete/Forms/RunRollbackScript.resx
....@@ -0,0 +1,123 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<root>
3
+ <!--
4
+ Microsoft ResX Schema
5
+
6
+ Version 2.0
7
+
8
+ The primary goals of this format is to allow a simple XML format
9
+ that is mostly human readable. The generation and parsing of the
10
+ various data types are done through the TypeConverter classes
11
+ associated with the data types.
12
+
13
+ Example:
14
+
15
+ ... ado.net/XML headers & schema ...
16
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
17
+ <resheader name="version">2.0</resheader>
18
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
24
+ </data>
25
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27
+ <comment>This is a comment</comment>
28
+ </data>
29
+
30
+ There are any number of "resheader" rows that contain simple
31
+ name/value pairs.
32
+
33
+ Each data row contains a name, and value. The row also contains a
34
+ type or mimetype. Type corresponds to a .NET class that support
35
+ text/value conversion through the TypeConverter architecture.
36
+ Classes that don't support this are serialized and stored with the
37
+ mimetype set.
38
+
39
+ The mimetype is used for serialized objects, and tells the
40
+ ResXResourceReader how to depersist the object. This is currently not
41
+ extensible. For a given mimetype the value must be set accordingly:
42
+
43
+ Note - application/x-microsoft.net.object.binary.base64 is the format
44
+ that the ResXResourceWriter will generate, however the reader can
45
+ read any of the formats listed below.
46
+
47
+ mimetype: application/x-microsoft.net.object.binary.base64
48
+ value : The object must be serialized with
49
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50
+ : and then encoded with base64 encoding.
51
+
52
+ mimetype: application/x-microsoft.net.object.soap.base64
53
+ value : The object must be serialized with
54
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55
+ : and then encoded with base64 encoding.
56
+
57
+ mimetype: application/x-microsoft.net.object.bytearray.base64
58
+ value : The object must be serialized into a byte array
59
+ : using a System.ComponentModel.TypeConverter
60
+ : and then encoded with base64 encoding.
61
+ -->
62
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64
+ <xsd:element name="root" msdata:IsDataSet="true">
65
+ <xsd:complexType>
66
+ <xsd:choice maxOccurs="unbounded">
67
+ <xsd:element name="metadata">
68
+ <xsd:complexType>
69
+ <xsd:sequence>
70
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
71
+ </xsd:sequence>
72
+ <xsd:attribute name="name" use="required" type="xsd:string" />
73
+ <xsd:attribute name="type" type="xsd:string" />
74
+ <xsd:attribute name="mimetype" type="xsd:string" />
75
+ <xsd:attribute ref="xml:space" />
76
+ </xsd:complexType>
77
+ </xsd:element>
78
+ <xsd:element name="assembly">
79
+ <xsd:complexType>
80
+ <xsd:attribute name="alias" type="xsd:string" />
81
+ <xsd:attribute name="name" type="xsd:string" />
82
+ </xsd:complexType>
83
+ </xsd:element>
84
+ <xsd:element name="data">
85
+ <xsd:complexType>
86
+ <xsd:sequence>
87
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89
+ </xsd:sequence>
90
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93
+ <xsd:attribute ref="xml:space" />
94
+ </xsd:complexType>
95
+ </xsd:element>
96
+ <xsd:element name="resheader">
97
+ <xsd:complexType>
98
+ <xsd:sequence>
99
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100
+ </xsd:sequence>
101
+ <xsd:attribute name="name" type="xsd:string" use="required" />
102
+ </xsd:complexType>
103
+ </xsd:element>
104
+ </xsd:choice>
105
+ </xsd:complexType>
106
+ </xsd:element>
107
+ </xsd:schema>
108
+ <resheader name="resmimetype">
109
+ <value>text/microsoft-resx</value>
110
+ </resheader>
111
+ <resheader name="version">
112
+ <value>2.0</value>
113
+ </resheader>
114
+ <resheader name="reader">
115
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116
+ </resheader>
117
+ <resheader name="writer">
118
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119
+ </resheader>
120
+ <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
121
+ <value>17, 17</value>
122
+ </metadata>
123
+</root>
DupliDelete/DupliDelete/GlobalBuffers.cs
....@@ -34,7 +34,7 @@
3434 public static int MaximumFileSizeMetric = 0;
3535 public static bool CompareByFilename, CompareByActualData, CompareByExtension, CompareBySize, CompareByTimestamp;
3636
37
- public static volatile Form1 main_form;
37
+ public static volatile MainForm main_form;
3838 //public static volatile SingleWriteArrayList size_tracker1 = new SingleWriteArrayList();
3939 public static volatile bool adding_files = false;
4040
DupliDelete/DupliDelete/MoveFilesData.cs
....@@ -8,7 +8,7 @@
88 public class MoveFilesData : CheckJobDialogData
99 {
1010 public string Folder;
11
- public string UndoListPath;
12
- public bool CreateUndoList;
11
+ public string RollbackListPath;
12
+ public bool CreateRollbackList;
1313 }
1414 }
DupliDelete/DupliDelete/Program.cs
....@@ -22,7 +22,7 @@
2222 Application.EnableVisualStyles();
2323 Application.SetCompatibleTextRenderingDefault(false);
2424 Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
25
- Application.Run(new Form1());
25
+ Application.Run(new MainForm());
2626 }
2727
2828 static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
DupliDelete/DupliDelete/Properties/AssemblyInfo.cs
....@@ -31,5 +31,4 @@
3131 // Revision
3232 //
3333 [assembly: AssemblyVersion("3.2.*")]
34
-[assembly: AssemblyFileVersion("3.2.*")]
3534 [assembly: NeutralResourcesLanguageAttribute("en")]
DupliDelete/DupliDelete/bin/Debug/Duplicate Commander.exe
Binary files differ
DupliDelete/DupliDelete/bin/Debug/Duplicate Commander.pdb
Binary files differ
DupliDelete/DupliDelete/bin/Debug/Duplicate Commander.vshost.exe
Binary files differ
DupliDelete/DupliDelete/bin/Debug/options.ini
....@@ -4,25 +4,37 @@
44 recent_profile3=""
55 recent_profile4=""
66 dont_notify="3.1 Beta 2"
7
-recent1=""
8
-recent2=""
9
-recent0="C:\Users\Rayburn\Documents\badlist.dcl"
10
-recent3=""
11
-recent4=""
12
-multicore="0"
7
+first_time="0"
8
+pos_x="379"
9
+pos_y="114"
10
+size_width="1085"
11
+size_height="621"
12
+check_extension="1"
13
+check_file_size="1"
14
+check_date_time="1"
15
+search_mode="cbad"
16
+minimum_size="-1"
17
+maximum_size="-1"
18
+minimum_size_metric="4"
19
+maximum_size_metric="4"
20
+inclusions::
21
+::
22
+maximized="yes"
23
+multicore="1"
1324 dont_warn_ntfs="1"
1425 auto_remove_1="0"
1526 show_delete="1"
1627 show_link="1"
1728 no_confirm="1"
1829 ignore_links="0"
19
-update_check="1"
30
+update_check="0"
2031 notify_alphabeta="1"
2132 large_icons="1"
2233 display_style="0"
2334 scroll_step="3"
24
-file_scan_part="-1"
35
+file_scan_part="50"
2536 highlight_items="1"
37
+senddump="1"
2638 persist_check="1"
2739 del_untrue="0"
2840 folder_exclusions::
....@@ -35,18 +47,8 @@
3547 network_clients::
3648 192.168.1.128
3749 ::
38
-check_extension="1"
39
-check_file_size="1"
40
-check_date_time="1"
41
-search_mode="cbad"
42
-minimum_size="-1"
43
-maximum_size="-1"
44
-minimum_size_metric="1"
45
-maximum_size_metric="3"
46
-inclusions::
47
-::
48
-maximized="no"
49
-pos_x="26"
50
-pos_y="72"
51
-size_width="1119"
52
-size_height="615"
50
+recent0=""
51
+recent1=""
52
+recent2=""
53
+recent3=""
54
+recent4=""
DupliDelete/DupliDelete/bin/Release/Duplicate Commander.exe.config
....@@ -0,0 +1,3 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<configuration>
3
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
DupliDelete/DupliDelete/bin/Release/Duplicate Commander.vshost.exe
Binary files differ
DupliDelete/DupliDelete/bin/Release/Duplicate Commander.vshost.exe.config
....@@ -0,0 +1,3 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<configuration>
3
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
DupliDelete/DupliDelete/bin/Debug/Duplicate Commander.vshost.exe.manifest
similarity index 100%rename from DupliDelete/DupliDelete/bin/Debug/Duplicate Commander.vshost.exe.manifestrename to DupliDelete/DupliDelete/bin/Release/Duplicate Commander.vshost.exe.manifest
DupliDelete/DupliDelete/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache
Binary files differ
DupliDelete/DupliDelete/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache
Binary files differ
DupliDelete/DupliDelete/obj/x86/Debug/DupliDelete.Form1.resources
similarity index 99%rename from DupliDelete/DupliDelete/obj/x86/Debug/DupliDelete.Form1.resourcesrename to DupliDelete/DupliDelete/obj/x86/Debug/DupliDelete.MainForm.resourcesBinary files differ
DupliDelete/DupliDelete/obj/x86/Debug/DupliDelete.RunRollbackScript.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Debug/DupliDelete.csproj.FileListAbsolute.txt
....@@ -315,3 +315,51 @@
315315 C:\Users\Rayburn\Dropbox\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.NetworkScanOptions.resources
316316 C:\Users\Rayburn\Dropbox\Duplicate Commander Repo\DupliDelete\DupliDelete\bin\Debug\Duplicate Commander.exe.config
317317 C:\Users\Rayburn\Dropbox\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.csprojResolveAssemblyReference.cache
318
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\bin\Debug\Duplicate Commander.exe
319
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\bin\Debug\Duplicate Commander.exe.config
320
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\Duplicate Commander.exe
321
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\Duplicate Commander.pdb
322
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\bin\Debug\Duplicate Commander.pdb
323
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.csprojResolveAssemblyReference.cache
324
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.AddNetworkClient.resources
325
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.AdvancedSearch.resources
326
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.CheckboxListview.CheckboxListview.resources
327
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.DuplicateListView.DuplicateListView.resources
328
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.Forms.CreateSoftLinksWindow.resources
329
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.Forms.CreateHardLinksWindow.resources
330
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.DeleteFolder.resources
331
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.About.resources
332
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.AddExclusion.resources
333
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.Forms.CheckByCrossReference.resources
334
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.CheckByDate.resources
335
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.CheckAllByExtension.resources
336
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.CheckByFileSize.resources
337
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.CheckByRegularExpressionDialog.resources
338
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.CheckByString.resources
339
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.CheckExcept.resources
340
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.CheckAllInFolder.resources
341
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.Checking.resources
342
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.CrashDetailsWindow.resources
343
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.CrashWindow.resources
344
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.ErrorClass.resources
345
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.ErrorWindow.resources
346
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.FindingDialog.resources
347
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.FirstTimeDisclaimer.resources
348
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.FirstTimeFinish.resources
349
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.FirstTimeUpdate.resources
350
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.FirstTimeWelcome.resources
351
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.LocationSelection.resources
352
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.MainForm.resources
353
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.MoveCheckedWindow.resources
354
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.Options.resources
355
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.PinPrompt.resources
356
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.Forms.ScanningForServers.resources
357
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.ScanOptions.resources
358
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.SendingReport.resources
359
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.UpdateDialog.resources
360
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.Updating.resources
361
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.NetworkScanOptions.resources
362
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.NewForm.resources
363
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.Properties.Resources.resources
364
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.csproj.GenerateResource.Cache
365
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Debug\DupliDelete.RunRollbackScript.resources
DupliDelete/DupliDelete/obj/x86/Debug/DupliDelete.csproj.GenerateResource.Cache
Binary files differ
DupliDelete/DupliDelete/obj/x86/Debug/DupliDelete.csprojResolveAssemblyReference.cache
Binary files differ
DupliDelete/DupliDelete/obj/x86/Debug/Duplicate Commander.exe
Binary files differ
DupliDelete/DupliDelete/obj/x86/Debug/Duplicate Commander.pdb
Binary files differ
DupliDelete/DupliDelete/obj/x86/Debug/TempPE/Properties.Resources1.Designer.cs.dll
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.About.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.AddExclusion.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.AddNetworkClient.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.AdvancedSearch.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.CheckAllByExtension.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.CheckAllInFolder.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.CheckByDate.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.CheckByFileSize.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.CheckByRegularExpressionDialog.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.CheckByString.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.CheckExcept.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.CheckboxListview.CheckboxListview.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.Checking.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.CrashDetailsWindow.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.CrashWindow.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.DeleteFolder.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.DuplicateListView.DuplicateListView.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.ErrorClass.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.ErrorWindow.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.FindingDialog.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.FirstTimeDisclaimer.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.FirstTimeFinish.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.FirstTimeUpdate.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.FirstTimeWelcome.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.Forms.CheckByCrossReference.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.Forms.CreateHardLinksWindow.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.Forms.CreateSoftLinksWindow.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.Forms.ScanningForServers.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.LocationSelection.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Debug/DupliDelete.Form1.resources
similarity index 99%copy from DupliDelete/DupliDelete/obj/x86/Debug/DupliDelete.Form1.resourcescopy to DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.MainForm.resourcesBinary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.MoveCheckedWindow.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.NetworkScanOptions.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.NewForm.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.Options.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.PinPrompt.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.Properties.Resources.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.RunRollbackScript.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.ScanOptions.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.SendingReport.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.UpdateDialog.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.Updating.resources
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.csproj.FileListAbsolute.txt
....@@ -0,0 +1,43 @@
1
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\bin\Release\Duplicate Commander.exe.config
2
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.AddNetworkClient.resources
3
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.AdvancedSearch.resources
4
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.CheckboxListview.CheckboxListview.resources
5
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.DuplicateListView.DuplicateListView.resources
6
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.Forms.CreateSoftLinksWindow.resources
7
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.Forms.CreateHardLinksWindow.resources
8
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.DeleteFolder.resources
9
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.About.resources
10
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.AddExclusion.resources
11
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.Forms.CheckByCrossReference.resources
12
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.CheckByDate.resources
13
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.CheckAllByExtension.resources
14
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.CheckByFileSize.resources
15
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.CheckByRegularExpressionDialog.resources
16
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.CheckByString.resources
17
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.CheckExcept.resources
18
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.CheckAllInFolder.resources
19
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.Checking.resources
20
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.CrashDetailsWindow.resources
21
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.CrashWindow.resources
22
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.ErrorClass.resources
23
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.ErrorWindow.resources
24
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.FindingDialog.resources
25
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.FirstTimeDisclaimer.resources
26
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.FirstTimeFinish.resources
27
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.FirstTimeUpdate.resources
28
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.FirstTimeWelcome.resources
29
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.LocationSelection.resources
30
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.MainForm.resources
31
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.MoveCheckedWindow.resources
32
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.Options.resources
33
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.PinPrompt.resources
34
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.RunRollbackScript.resources
35
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.Forms.ScanningForServers.resources
36
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.ScanOptions.resources
37
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.SendingReport.resources
38
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.UpdateDialog.resources
39
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.Updating.resources
40
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.NetworkScanOptions.resources
41
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.NewForm.resources
42
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.Properties.Resources.resources
43
+\\RAYBURNSLAPTOP\Duplicate Commander Repo\DupliDelete\DupliDelete\obj\x86\Release\DupliDelete.csproj.GenerateResource.Cache
DupliDelete/DupliDelete/obj/x86/Release/DupliDelete.csproj.GenerateResource.Cache
Binary files differ
DupliDelete/DupliDelete/obj/x86/Release/build.force