Timeline


and

6/2/2009:

10:03 Changeset [1096] by lowjoel
  • trunk/eraser6/Eraser.Manager/Language.cs
  • trunk/eraser6/Eraser/SettingsPanel.cs

Removed all the comparison/Equals mess with the explicit conversion operator.

10:02 Changeset [1095] by lowjoel
  • trunk/eraser6/Eraser/AboutForm.cs
  • trunk/eraser6/Eraser/Strings.NL.resx
  • trunk/eraser6/Eraser/Strings.en.resx
  • trunk/eraser6/Eraser/Strings.resx
  • trunk/eraser6/Version.cs.in

Specify whether the current build is a special build (i.e. files were modified to build the binaries)

09:16 Ticket #49 (Eraser 5 Unicode Support) reopened by tn123
For what it's worth: I made a patch to enable unicode support in eraser …
08:46 Changeset [1094] by lowjoel
  • trunk/eraser6/Eraser.DefaultPlugins/EraseFirstLast16KB.cs
  • trunk/eraser6/Eraser.Manager/FileSystem.cs
  • trunk/eraser6/Eraser.Manager/Plugins.cs
  • trunk/eraser6/Eraser.Unlocker/Eraser.Unlocker.cpp
  • trunk/eraser6/Eraser.Unlocker/Eraser.Unlocker.h
  • trunk/eraser6/Eraser.Util/KernelApi.cs
  • trunk/eraser6/Eraser.Util/NTApi.cs
  • trunk/eraser6/Eraser/Program.cs
  • trunk/eraser6/Eraser/TaskDataSelectionForm.cs

FxCop? warning fixes

  1. Catch specific exception types (Catch Exception only as a last resort)
  2. Removed a few unused locals
  3. Do not assign default values to variables (even for C++ since we are using C++/CLI)
  4. Event functions should not be publicly accessible (for the plugins interface - that was actually meant for assembly-local calls)
  5. Removed the BackupXXX functions since we no longer use them
  6. Removed a few more double casts
08:25 Changeset [1093] by lowjoel
  • trunk/eraser6/Eraser/ToolBar.cs

No need to implement Initialize since we don't need the toolbar reference

08:06 Changeset [1092] by lowjoel
  • trunk/eraser6/Eraser.Manager/FileSystem.cs
  • trunk/eraser6/Eraser.Manager/Language.cs
  • trunk/eraser6/Eraser.Manager/Plugins.cs
  • trunk/eraser6/Eraser/Program.cs
  • trunk/eraser6/Eraser/UpdateForm.cs

Fixed a few more FxCop? warnings regarding duplicate casts and unoverriden Equals

07:48 Changeset [1091] by lowjoel
  • trunk/eraser6/Eraser/BasePanel.Designer.cs
  • trunk/eraser6/Eraser/BasePanel.cs
  • trunk/eraser6/Eraser/SchedulerPanel.Designer.cs
  • trunk/eraser6/Eraser/SettingsPanel.Designer.cs

Do not expose variables (FxCop? fix)

07:46 Changeset [1090] by lowjoel
  • trunk/eraser6/Eraser.DefaultPlugins/EraseCustom.cs
  • trunk/eraser6/Eraser.DefaultPlugins/Strings.en.resx
  • trunk/eraser6/Eraser.DefaultPlugins/Strings.nl.resx
  • trunk/eraser6/Eraser.DefaultPlugins/Strings.resx

Spelling fix (oops)

07:28 Changeset [1089] by lowjoel
  • trunk/eraser6/Eraser.Manager/FileSystem.cs

Don't use short forms.

07:27 Changeset [1088] by lowjoel
  • trunk/eraser6/Eraser.Manager/Settings.cs
  • trunk/eraser6/Eraser/Program.cs

Use the Convert form which provides the IFormatProvider interface to ensure proper conversion of data

03:24 Changeset [1087] by lowjoel
  • trunk/eraser6/Eraser.Unlocker/Main.cpp
  • trunk/eraser6/Eraser.Unlocker/NTApi.h

Removed unused declarations

02:53 Changeset [1086] by lowjoel
  • trunk/eraser6/Eraser.Util/Eraser.Util.csproj
  • trunk/eraser6/Eraser.Util/File.cs
  • trunk/eraser6/Eraser.Util/NTApi.cs

Use NtQueryInformationFile? to get ADS information instead of the backup reading APIs

01:57 Changeset [1085] by lowjoel
  • trunk/eraser6/Eraser.Manager/DirectExecutor.cs
  • trunk/eraser6/Eraser.Manager/Eraser.Manager.csproj
  • trunk/eraser6/Eraser.Manager/Strings.en.resx
  • trunk/eraser6/Eraser.Manager/Strings.nl.resx
  • trunk/eraser6/Eraser.Manager/Strings.resx
  • trunk/eraser6/Eraser.Manager/Task.cs

Open handles to files are closed when the file's ADSes are listed for erasure; the file is then sent for erasure anyway but if the file is still locked when it is time to erase, just throw an error message to the log.
fixed #14: Runtime unlocking of files

01:51 Changeset [1084] by lowjoel
  • trunk/eraser6/Eraser.Util/File.cs

Use StreamInfo?.Open to get the handle to the file to list ADSes since that allows us to determine whether a file is locked (FileLoadException? will be thrown instead of plain ol' IOException)

01:50 Changeset [1083] by lowjoel
  • trunk/eraser6/Eraser.Unlocker/Eraser.Unlocker.cpp
  • trunk/eraser6/Eraser.Unlocker/Eraser.Unlocker.h

Let the OpenHandle::Close function return a boolean indicating success for error verification.

6/1/2009:

21:14 Ticket #210 (Eraser not deleting very long filenames, round 3) created by borg42
Follow-up to #41 and #135 I understand that handling of NTFS long …
13:18 Changeset [1082] by lowjoel
  • trunk/eraser6/Eraser.Manager/DirectExecutor.cs
  • trunk/eraser6/Eraser.Manager/Task.cs

When erasing folders which don't exist, just ignore the error and continue since this is not an error (if you're deleting something that already is deleted then it's a success.)

12:55 Changeset [1081] by lowjoel
  • trunk/eraser6/Resources/EraserTaskList.ico

Slightly modified icon from Dennis.

12:19 Changeset [1080] by lowjoel
  • trunk/website

Move the Website to trunk

12:16 Changeset [1079] by lowjoel
  • trunk/eraser6

Move Eraser 6 to trunk

12:11 Changeset [1078] by lowjoel
  • trunk/eraser5

Move old trunk to eraser5 subfolder

12:09 Changeset [1077] by lowjoel
  • trunk

New trunk folder

12:08 Changeset [1076] by lowjoel
  • eraser5

Moving Eraser 6 and website sources to trunk

12:03 Changeset [1075] by lowjoel
  • branches/eraser6
  • branches/eraser6/Eraser.DefaultPlugins/Eraser.DefaultPlugins.csproj
  • branches/eraser6/Eraser.Unlocker/Eraser.Unlocker.vcproj
  • branches/eraser6/Eraser.Util/Eraser.Util.csproj
  • branches/eraser6/Eraser.sln
  • branches/eraser6/Eraser/AboutForm.cs
  • branches/eraser6/Eraser/Eraser.csproj
  • branches/eraser6/Eraser/Strings.NL.resx
  • branches/eraser6/Eraser/Strings.en.resx
  • branches/eraser6/Eraser/Strings.resx
  • branches/eraser6/Installer/Bootstrapper/Bootstrapper.vcproj
  • branches/eraser6/Installer/Installer.wixproj
  • branches/eraser6/ShellExt/ShellExt.vcproj
  • branches/eraser6/UpdateVersions.bat
  • branches/eraser6/Version.cs.in
  • branches/eraser6/Version.rc.in
  • branches/eraser6/Version.wxs.in

Automatically version the assemblies' revision number based on the SVN revision number.

11:57 Changeset [1074] by lowjoel
  • branches/eraser6/Eraser.Util/AdvApi.cs

Fixed a crash on shutdown - CryptReleaseContext? was calling itself recursively.

11:47 Changeset [1073] by lowjoel
  • branches/eraser6/Eraser/LogForm.cs

When displaying the log if there are no entries for a given session append a blank item so that the user knows that something actually happened at that time.

11:45 Changeset [1072] by lowjoel
  • branches/eraser6/Eraser.Manager/Logger.cs

When clearing entries from the log make sure that the last entry isn't deleted or else new log entries won't have a session to go into - this will then crash. POrobably this is one sign that a new logging design is in order...

5/26/2009:

15:54 Ticket #209 (Right Click Recycle bin 35-Pass guttman just does a one-pass) created by xeross
Whenever i click on the 35-pass guttman in my recycle bin right-click menu …

5/20/2009:

03:28 Changeset [1071] by lowjoel
  • branches/eraser6/Eraser.Util/AdvApi.cs
  • branches/eraser6/Eraser.Util/Eraser.Util.csproj
  • branches/eraser6/Eraser.Util/UxThemeApi.cs
  • branches/eraser6/Eraser.Util/VolumeInfo.cs

Fixed a few code analysis warnings.

02:02 Changeset [1070] by lowjoel
  • branches/eraser6/Eraser.Util/AdvApi.cs

Sorry, compilo.

02:01 Changeset [1069] by lowjoel
  • branches/eraser6/Eraser.Util/AdvApi.cs

Close process token handles as well (memory leak fix)

01:53 Changeset [1068] by lowjoel
  • branches/eraser6/Eraser.Manager/DirectExecutor.cs
  • branches/eraser6/Eraser/SchedulerPanel.cs

-Put the task completion status in the Status column instead of the Next Run column.
-Remove empty lists after executing all tasks scheduled for that time.

01:37 Changeset [1067] by lowjoel
  • branches/eraser6/Eraser.Manager/DirectExecutor.cs

Schedule tasks that are meant to run with a recurring schedule on start up so that missing tasks can execute and schedules will be followed.

5/16/2009:

13:04 Ticket #206 (forums email activation failure) closed by Joel
invalid
12:47 Changeset [1066] by lowjoel
  • branches/eraser6/ShellExt/ShellExt.vcproj

Use the latest possible runtime libraries since that's the only thing the merge module for Windows Installer includes.

12:44 Changeset [1065] by lowjoel
  • branches/eraser6/Eraser.Unlocker/AssemblyInfo.cpp
  • branches/eraser6/Eraser.Unlocker/Eraser.Unlocker.cpp
  • branches/eraser6/Eraser.Unlocker/Eraser.Unlocker.h
  • branches/eraser6/Eraser.Unlocker/Eraser.Unlocker.rc
  • branches/eraser6/Eraser.Unlocker/Main.cpp
  • branches/eraser6/Eraser.Unlocker/NTApi.h
  • branches/eraser6/Eraser.Unlocker/Stdafx.cpp
  • branches/eraser6/Eraser.Unlocker/Stdafx.h
  • branches/eraser6/Eraser.Unlocker/Unlocker.cpp
  • branches/eraser6/Eraser.Unlocker/Unlocker.h
  • branches/eraser6/Eraser.Unlocker/resource.h

Set svn:keywords.

12:41 Changeset [1064] by lowjoel
  • branches/eraser6/Eraser.Unlocker
  • branches/eraser6/Eraser.Unlocker/AssemblyInfo.cpp
  • branches/eraser6/Eraser.Unlocker/Eraser.Unlocker.cpp
  • branches/eraser6/Eraser.Unlocker/Eraser.Unlocker.h
  • branches/eraser6/Eraser.Unlocker/Eraser.Unlocker.rc
  • branches/eraser6/Eraser.Unlocker/Eraser.Unlocker.vcproj
  • branches/eraser6/Eraser.Unlocker/Main.cpp
  • branches/eraser6/Eraser.Unlocker/NTApi.h
  • branches/eraser6/Eraser.Unlocker/Stdafx.cpp
  • branches/eraser6/Eraser.Unlocker/Stdafx.h
  • branches/eraser6/Eraser.Unlocker/Unlocker.cpp
  • branches/eraser6/Eraser.Unlocker/Unlocker.h
  • branches/eraser6/Eraser.Unlocker/resource.h
  • branches/eraser6/Eraser.sln
  • branches/eraser6/Installer/DirectoryStructure.wxs
  • branches/eraser6/Installer/Eraser.wxs
  • branches/eraser6/Installer/SignBin.bat

Added relatively untested file unlocking code. Partially implements #14 (in terms of an API and a skeleton)

11:08 Changeset [1063] by lowjoel
  • branches/eraser6/Installer/Bootstrapper/Bootstrapper.vcproj
  • branches/eraser6/Installer/DirectoryStructure.wxs
  • branches/eraser6/Installer/SignBin.bat
  • branches/eraser6/ShellExt/ShellExt.vcproj

-Restored the output file names after a project rename
-Output architecture-dependent files to a subfolder of the output folder for better cross-platform compatibility during development

10:07 Changeset [1062] by lowjoel
  • branches/eraser6/Eraser.Util/AdvApi.cs
  • branches/eraser6/Eraser.Util/KernelApi.cs
  • branches/eraser6/Eraser.Util/StreamInfo.cs
  • branches/eraser6/Eraser.Util/VolumeInfo.cs

Use the Marshal to convert Win32 error codes to .NET exceptions - we tend to get more useful exceptions.

04:37 Changeset [1061] by lowjoel
  • branches/eraser6/Eraser/UpdateForm.cs

Actually UpdateCategoriesDictionary?.GetEnumerator? is implemented, so return it instead.

04:34 Changeset [1060] by lowjoel
  • branches/eraser6/Eraser.DefaultPlugins/Eraser.DefaultPlugins.csproj
  • branches/eraser6/Eraser.Manager/Eraser.Manager.csproj
  • branches/eraser6/Eraser.Util/Properties/AssemblyInfo.cs
  • branches/eraser6/Eraser/Eraser.csproj
  • branches/eraser6/Installer/Bootstrapper/Bootstrapper.vcproj

Updated a few references and also renamed the Bootstrapper project to Installer.Bootstrapper

04:28 Changeset [1059] by lowjoel
  • branches/eraser6/Eraser.DefaultPlugins
  • branches/eraser6/Eraser.Manager
  • branches/eraser6/Eraser.Util
  • branches/eraser6/Eraser.sln

Renamed the folders too.

04:14 Changeset [1058] by lowjoel
  • branches/eraser6/DefaultPlugins/Eraser.DefaultPlugins.csproj
  • branches/eraser6/DefaultPlugins/Properties/AssemblyInfo.cs
  • branches/eraser6/Eraser.sln
  • branches/eraser6/Eraser/Eraser.csproj
  • branches/eraser6/Eraser/Properties/AssemblyInfo.cs
  • branches/eraser6/Manager/Eraser.Manager.csproj
  • branches/eraser6/Manager/Properties/AssemblyInfo.cs
  • branches/eraser6/Util/Eraser.Util.csproj

Renamed the Eraser projects to follow the assembly name

04:10 Changeset [1057] by lowjoel
  • branches/eraser6/Eraser/LogForm.cs

This particular exception handler seems to be unnecessary now.

04:09 Changeset [1056] by lowjoel
  • branches/eraser6/Manager/Task.cs

On top of UnauthorizedAccessExceptions?, we also get IOExceptions for locked files.

5/12/2009:

20:01 Ticket #208 (Slow free space wipe) created by Posts
Current full usage renders the computer useless, and requires the computer …
09:37 Ticket #72 (Block the use of Empty Recycle Bin so that users can only securely erase ...) closed by Joel
duplicate: I'd actually even mark it as a duplicate of #16.
09:35 Ticket #71 (Clean up of drives in Windows) closed by Joel
duplicate: Yep, duplicate

5/11/2009:

13:00 Ticket #200 (Enhancing naming schemes for Default Erasure Methods) closed by trac-robot
This ticket was closed automatically by the system. It was previously set …
12:00 Ticket #201 (Running Eraser from the windows shell won't start the Eraser main program) closed by trac-robot
This ticket was closed automatically by the system. It was previously set …
10:52 Changeset [1055] by lowjoel
  • branches/eraser6/Eraser/Program.cs

Woops, made the property an auto-implemented property and forgot to remove the backing variable.

10:39 Changeset [1054] by lowjoel
  • branches/eraser6/Eraser/Program.cs

Always call the OnExitInstance? function. When the systme is shutting down it doesn't get called before. Now we chain up with the main form so that even if shutdowns are ordered we get a chance to clean up/do whatever post-application run processing we need to do.

08:58 Changeset [1053] by lowjoel
  • branches/eraser6/Manager/Language.cs

Slightly better definition for operator!= for the Manager.Language class

08:57 Changeset [1052] by lowjoel
  • branches/eraser6/Eraser/SettingsPanel.cs
  • branches/eraser6/Manager/Language.cs

Allow the Manager.Language class to be compared with the CultureInfo? class which it manages.

5/10/2009:

09:46 Changeset [1051] by lowjoel
  • branches/eraser6/Manager/DirectExecutor.cs

If the user specifies that a folder should be deleted if empty, and the folder turns out to be a volume mount point, don't try to delete the folder.

  1. The folder won't be deleted if it is the root, i.e. try erasing D:\ and deleting it if empty.
  2. The user may not want to delete a mount point, i.e. a volume mounted at C:\Data
05:57 Changeset [1050] by lowjoel
  • branches/eraser6/Manager/Task.cs

When erasing Recycle bin files erase ADSes before the unnamed stream (following the order of the other file erasures)

05:56 Changeset [1049] by lowjoel
  • branches/eraser6/Util/KernelApi.cs
  • branches/eraser6/Util/StreamInfo.cs

Use SetFileAttributes? directly when dealing with streams since that will support ADSes but not the .NET variant (which does path checking.)

04:41 Changeset [1048] by lowjoel
  • branches/eraser6/Eraser/LogForm.resx

Fixed the LogForm?'s resizing: the buttons aren't all over the place now.

04:40 Changeset [1047] by lowjoel
  • branches/eraser6/Installer/DirectoryStructure.wxs

DragDropLib? needs to be deployed too.

04:37 Changeset [1046] by lowjoel
  • branches/eraser6/Eraser/SchedulerPanel.cs
  • branches/eraser6/Eraser/Strings.NL.resx
  • branches/eraser6/Eraser/Strings.en.resx
  • branches/eraser6/Eraser/Strings.resx

The generated code seemed to have appended %1 because we provided a string constant. This has been fixed to use a variable to prevent csgettext from generating the wrong string.

04:34 Changeset [1045] by lowjoel
  • branches/eraser6/Manager/Task.cs

Default the targets to the appropriate erasure method. FileSystemObjectTargets? will use the default file/folder erasure, and UnusedSpaceTarget? will use the default unused erasure method.

04:28 Changeset [1044] by lowjoel
  • branches/eraser6/Eraser/Eraser.csproj
  • branches/eraser6/Eraser/SchedulerPanel.Designer.cs
  • branches/eraser6/Eraser/SchedulerPanel.cs
  • branches/eraser6/Eraser/SchedulerPanel.resx
  • branches/eraser6/Eraser/Strings.NL.resx
  • branches/eraser6/Eraser/Strings.en.resx
  • branches/eraser6/Eraser/Strings.resx

Implemented drag-and-drop into the scheduler. Task Lists are imported and all other files are erased.

05/10/09:

04:26 Changeset [1043] by lowjoel
  • branches/eraser6/Util/Util.csproj

I remembered I removed the NativeMethods? folder?

04:26 Changeset [1042] by lowjoel
  • branches/eraser6/Dependencies/DragDropLib.dll
  • branches/eraser6/Dependencies/ISAAC.dll

-Removed ISAAC since we don't use it anymore
-Added DragDropLib? from http://blogs.msdn.com/adamroot/pages/shell-style-drag-and-drop-in-net-part-3.aspx - we're using it for drag and drop capabilities into the scheduler. Sources can be found there and it was compiled verbatim and then signed with my Strong Name Key.

02:32 Changeset [1041] by lowjoel
  • branches/eraser6/Manager/Task.cs

GetPathADSes takes a value by "out", meaning whatever value the totalSize variable had before would have been overwritten. Fixed the code to work properly now. This would have reported the wrong amount of data that needs to be written to erase the file.

02:31 Changeset [1040] by lowjoel
  • branches/eraser6/Manager/DirectExecutor.cs
  • branches/eraser6/Util/StreamInfo.cs

Prevent the file from being re-created after an erasure (wrong file creation constant passed to CreateFile?)

05/09/09:

14:27 Changeset [1039] by lowjoel
  • branches/eraser6/Util/StreamInfo.cs

Finally fixed all the errors during file erasures. This one is a misuse of the OpenHandle? function.

14:13 Changeset [1038] by lowjoel
  • branches/eraser6/Manager/DirectExecutor.cs

Get the file area before the executor locks it for erasure.

13:27 Changeset [1037] by lowjoel
  • branches/eraser6/Util/KernelApi.cs
  • branches/eraser6/Util/StreamInfo.cs

Implemented Stream Deletion.

12:53 Changeset [1036] by lowjoel
  • branches/eraser6/Eraser/ProgressForm.cs

I'll be a little conservative and force the line break a little prematurely. Kinda hack to make sure we dont end up with lines with just one character.

12:44 Changeset [1035] by lowjoel
  • branches/eraser6/Util/KernelApi.cs

WIN32_STREAM_ID is a structure with packing 1 - the native packing doesn't seem to give a structure of the right size. I picked Pack=1 because this is meant to be stored to file and files don't usually have alignments (unlike memory)

12:42 Changeset [1034] by lowjoel
  • branches/eraser6/Util/StreamInfo.cs

Woops. Property setters for the CAM datetimes need a writeable handle.

12:04 Changeset [1033] by lowjoel
  • branches/eraser6/Manager/DirectExecutor.cs
  • branches/eraser6/Manager/Strings.en.resx
  • branches/eraser6/Manager/Strings.nl.resx
  • branches/eraser6/Manager/Strings.resx
  • branches/eraser6/Util/KernelApi.cs
  • branches/eraser6/Util/StreamInfo.cs

Allow date Created, date Accessed and date Modified values to be set on streams.

09:42 Changeset [1032] by lowjoel
  • branches/eraser6/Manager/FileSystem.cs
  • branches/eraser6/Manager/Strings.en.resx
  • branches/eraser6/Manager/Strings.nl.resx
  • branches/eraser6/Manager/Strings.resx

Support FAT32 as well (as part of the FatFileSystem? provider) - so declare it so

09:34 Ticket #175 (Schedule screen won’t clear properly.) closed by Joel
fixed
09:34 Ticket #175 (Schedule screen won’t clear properly.) reopened by Joel
OK I've figured out what actually happened and this has been fixed in …
09:13 Changeset [1031] by lowjoel
  • branches/eraser6/Manager/DirectExecutor.cs
  • branches/eraser6/Manager/Strings.en.resx
  • branches/eraser6/Manager/Strings.nl.resx
  • branches/eraser6/Manager/Strings.resx
  • branches/eraser6/Util/StreamInfo.cs

-Added a check at the end of the StreamInfo? OpenFile? function to ensure that the return handle is indeed valid - this caused file corruption for me!
-The File Cluster Tip erasure function is now slightly more resilient to errors

08:14 Changeset [1030] by lowjoel
  • branches/eraser6/ShellExt/CtxMenu.cpp

Ack - forgot to remove my debug code.

08:13 Changeset [1029] by lowjoel
  • branches/eraser6/Installer/Eraser.wxs

Turn off cabinet compression in the MSIs because prior to distribution we'll compress them using 7-zip while integrating them into the bootstrapper. The result is that the installer size went from ~11mb to ~3mb.

07:55 Changeset [1028] by lowjoel
  • branches/eraser6/DefaultPlugins/CustomMethodPassEditor.cs
  • branches/eraser6/Eraser/AboutForm.cs
  • branches/eraser6/Eraser/BasePanel.cs
  • branches/eraser6/Eraser/MainForm.cs
  • branches/eraser6/Eraser/ProgressForm.cs
  • branches/eraser6/Eraser/TaskDataSelectionForm.cs
  • branches/eraser6/Util/UxThemeApi.cs

All forms should call UXThemeApi.UpdateControlTheme? so that relevant theming upgrades can be made (eg list-views) and that the proper system font can be assigned (Tahoma on XP, Segoe UI >= Vista). This prevents the ugly use of MS Sans Serif under XP.

The designers still use Segoe UI since that is the font we are designing for.

07:44 Changeset [1027] by lowjoel
  • branches/eraser6/Installer/DirectoryStructure.wxs

-Remove ISAAC since we no longer support it
-Register our shell handler with the recycle bin so our entry will appear in the context menu

07:42 Ticket #50 (Grey out Recycle Bin context menu entries when Bin is empty) closed by Joel
fixed: Ok, works on Vista too. Implemented in r1026.
07:42 Changeset [1026] by lowjoel
  • branches/eraser6/ShellExt/CtxMenu.cpp

-Disable the context menu for the recycle bin entry when there are no files in the recycle bin. Implements #50.
-Fixed the owner drawing code for Windows XP - the context menu doesn't draw itself as disabled even when ODS_DISABLED is set.

06:47 Changeset [1025] by lowjoel
  • branches/eraser6/ShellExt/CtxMenu.cpp

Link to SHGetStockIconInfo dynamically since we are supposed to support Windows XP.

02:06 Ticket #50 (Grey out Recycle Bin context menu entries when Bin is empty) reopened by Joel
Actually after writing the context menu extension for v6, this MAY be …
02:06 Changeset [1024] by lowjoel
  • branches/eraser6/Manager/PRNG.cs
  • branches/eraser6/Manager/RemoteExecutor.cs

-Removed the extra catch(OperationCanceledException?) in source:/branches/eraser6/Manager/RemoteExecutor.cs since the surrounding exception handler will already handle it
-Converted PRNG retrieval code flow to not depend on exception handlers (supplements r1021)

02:00 Changeset [1023] by lowjoel
  • branches/eraser6/Eraser/Eraser.csproj
  • branches/eraser6/Eraser/ProgressForm.en.resx
  • branches/eraser6/Eraser/TaskDataSelectionForm.en.resx

Currently all our language-neutral resources are English ones, so we don't need separate English resource files.

01:55 Ticket #182 (Calculating Enhancement.) closed by Joel
fixed: Implemented in r1022.
01:51 Changeset [1022] by lowjoel
  • branches/eraser6/Eraser/ProgressForm.Designer.cs
  • branches/eraser6/Eraser/ProgressForm.cs
  • branches/eraser6/Eraser/ProgressForm.en.resx
  • branches/eraser6/Eraser/ProgressForm.resx
  • branches/eraser6/Eraser/Strings.NL.resx
  • branches/eraser6/Eraser/Strings.en.resx
  • branches/eraser6/Eraser/Strings.resx
  • branches/eraser6/Manager/DirectExecutor.cs
  • branches/eraser6/Manager/Strings.en.resx
  • branches/eraser6/Manager/Strings.nl.resx
  • branches/eraser6/Manager/Strings.resx
  • branches/eraser6/Manager/Task.cs

Huge improvements in displaying progress text to user:
-When the progress dialog is first opened a marquee saying that the progress is being queried is shown.
-After which, when an unused space erase is conducted, during the file searching phase the names of the folders being traversed are now reported to the user
-The generic "Overwriting..." message is replaced with more useful text: "Searching for files' cluster tips", "Erasing cluster tips" etc
-The ProgressManager? class now handles the case where the Speed property is called when the time difference is near zero; that led to a floating point division by zero which led to wrong results
-Long filenames are forced to wrap at every line

05/08/09:

18:16 Changeset [1021] by cjax
  • branches/eraser6/Manager/PRNG.cs
  • branches/eraser6/Manager/RemoteExecutor.cs

Minor EH as CF changes.

15:22 Changeset [1020] by lowjoel
  • branches/eraser6/Util/ShellApi.cs

Don't pass the main form handle when calling SHEmptyRecycleBin. The call may be from a secondary thread and we'll get an exception for attempting to use the window handle from a secondary thread.

15:18 Changeset [1019] by lowjoel
  • branches/eraser6/Eraser/SchedulerPanel.cs

The Progress Bar's tag should be the currently executing item instead of the currently executing item's index since indices may change. This allows us to reposition the gauge after a user does task list management operations (eg deleting tasks). This also fixes the problem of progress bars appearing unaligned to its parent task after a task has been deleted and may fix other problems with the progress bar.

10:17 Changeset [1018] by lowjoel
  • branches/eraser6/Eraser/MainForm.Designer.cs
  • branches/eraser6/Eraser/MainForm.cs
  • branches/eraser6/Eraser/MainForm.resx
  • branches/eraser6/Eraser/ToolBar.cs

Moved more of the drawing to be control-based instead of owner drawing:
-Background colour is now set on the MainForm?, then the toolbar and the Eraser logo is set to Transparent background
-The Eraser Logo is now a discrete control
-The Eraser Logo, when clicked, brings you to the Eraser Website

10:02 Changeset [1017] by lowjoel
  • branches/eraser6/Eraser/MainForm.Designer.cs
  • branches/eraser6/Eraser/MainForm.resx
  • branches/eraser6/Eraser/ToolBar.cs

Fixed the padding/margin values in the toolbar such that it looks more organised. Padding now defaults to 0 and margin between items are 10px.

5/8/2009:

09:44 Changeset [1016] by lowjoel
  • branches/eraser6/ShellExt/CtxMenu.cpp
  • branches/eraser6/ShellExt/stdafx.h
  • branches/eraser6/ShellExt/targetver.h

Display the Security Shield with all its glory: query the shell for the icon instead.

5/7/2009:

14:45 Changeset [1015] by lowjoel
  • branches/eraser6/Manager/DirectExecutor.cs
  • branches/eraser6/Manager/FileSystem.cs

-Reset a file's read-only flag only after an erase failed
-NTFS' minimum date is 1601 January 1 UTC. Make sure that it is UTC when converting dates (the earlier bug wasn't fixed.)

14:29 Changeset [1014] by lowjoel
  • branches/eraser6/Manager/FileSystem.cs

Fixed the valid minimum date range for NTFS.

14:15 Changeset [1013] by lowjoel
  • branches/eraser6/Eraser/Program.cs
  • branches/eraser6/Installer/DirectoryStructure.wxs
  • branches/eraser6/Resources/EraserTaskList.ico
  • branches/eraser6/ShellExt/ShellExt.rc
  • branches/eraser6/ShellExt/ShellExt.vcproj
  • branches/eraser6/ShellExt/resource.h

Added Task List shell integration to Eraser - implemented the Shell icon, Shell open verb, but not the RemoteExecutor?. Draft file icon thanks to Dennis.

12:52 Ticket #195 (Crash when using context menu erase option) closed by Joel
fixed: I've rewritten the Eraser inter-process communications in …
12:48 Changeset [1012] by lowjoel
  • branches/eraser6/Manager/Executor.cs

Document the fact that LoadFromStream? is meant to append tasks instead of overwrite tasks in the list.

12:45 Ticket #193 (Allow for export/backup of scheduled tasks) closed by Joel
fixed: Implemented in r1011. Please check that in future when new versions are …
12:44 Changeset [1011] by lowjoel
  • branches/eraser6/Eraser/MainForm.Designer.cs
  • branches/eraser6/Eraser/MainForm.cs
  • branches/eraser6/Eraser/MainForm.resx
  • branches/eraser6/Manager/DirectExecutor.cs

Allow users to export and import task lists. Implements #193

10:51 Changeset [1010] by lowjoel
  • branches/eraser6/Eraser/TaskDataSelectionForm.cs

Removed an unnecessary if statement.

08:42 Changeset [1009] by lowjoel
  • branches/eraser6/Manager/DirectExecutor.cs
  • branches/eraser6/Manager/EntropySource.cs
  • branches/eraser6/Util/NTApi.cs
  • branches/eraser6/Util/NetApi.cs
  • branches/eraser6/Util/ShellApi.cs
  • branches/eraser6/Util/VolumeInfo.cs

Last bit on naming

05/07/09:

08:38 Changeset [1008] by lowjoel
  • branches/eraser6/Util/Util.csproj

Fix the casing of the paths.

08:31 Changesets [1005-1007] by lowjoel
  • branches/eraser6/Eraser/LogForm.cs
  • branches/eraser6/Eraser/MainForm.cs
  • branches/eraser6/Eraser/Program.cs
  • branches/eraser6/Eraser/SchedulerPanel.cs
  • branches/eraser6/Eraser/SettingsPanel.cs
  • branches/eraser6/Eraser/TaskPropertiesForm.cs
  • branches/eraser6/Eraser/UpdateForm.cs
  • branches/eraser6/Eraser/LogForm.cs
  • branches/eraser6/Eraser/MainForm.cs
  • branches/eraser6/Eraser/SchedulerPanel.cs
  • branches/eraser6/Eraser/SettingsPanel.cs
  • branches/eraser6/Eraser/TaskPropertiesForm.cs
  • branches/eraser6/Eraser/UpdateForm.cs
  • branches/eraser6/DefaultPlugins/CustomMethodEditorForm.cs
  • branches/eraser6/DefaultPlugins/SettingsForm.cs
  • branches/eraser6/Manager/DirectExecutor.cs
  • branches/eraser6/Manager/EntropySource.cs
  • branches/eraser6/Manager/Plugins.cs
  • branches/eraser6/Manager/Settings.cs
  • branches/eraser6/Util/AdvApi.cs
  • branches/eraser6/Util/File.cs
  • branches/eraser6/Util/KernelApi.cs
  • branches/eraser6/Util/MsCorEEApi.cs
  • branches/eraser6/Util/NTApi.cs
  • branches/eraser6/Util/NetApi.cs
  • branches/eraser6/Util/NtfsApi.cs
  • branches/eraser6/Util/ShellApi.cs
  • branches/eraser6/Util/StreamInfo.cs
  • branches/eraser6/Util/UserApi.cs
  • branches/eraser6/Util/UxThemeApi.cs
  • branches/eraser6/Util/VolumeInfo.cs
  • branches/eraser6/Util/WintrustApi.cs

Renaming the filenames of all API files and names of classes to follow C# convention.

08:27 Changeset [1004] by lowjoel
  • branches/eraser6/Util/KernelApi2.cs
  • branches/eraser6/Util/MsCorEEApi2.cs
  • branches/eraser6/Util/NTApi2.cs
  • branches/eraser6/Util/NetApi2.cs
  • branches/eraser6/Util/NtfsApi2.cs
  • branches/eraser6/Util/ShellApi2.cs
  • branches/eraser6/Util/UserApi2.cs
  • branches/eraser6/Util/UxThemeApi2.cs
  • branches/eraser6/Util/WintrustApi2.cs

Renaming the filenames of all API files to follow C# convention.

08:20 Changeset [1003] by lowjoel
  • branches/eraser6/Eraser/Eraser.csproj
  • branches/eraser6/Manager/DirectExecutor.cs
  • branches/eraser6/Util/AdvApi.cs
  • branches/eraser6/Util/Permissions.cs
  • branches/eraser6/Util/Util.csproj

Combined CryptAPI.cs and Permissions.cs to AdvApi?.cs.

08:12 Changeset [1002] by lowjoel
  • branches/eraser6/DefaultPlugins/EraseGOSTP50739.cs
  • branches/eraser6/DefaultPlugins/EraseHMGIS5.cs
  • branches/eraser6/DefaultPlugins/EraseRCMP_TSSIT_OPS_II.cs
  • branches/eraser6/DefaultPlugins/EraseUSAF5020.cs
  • branches/eraser6/DefaultPlugins/EraseUSArmyAR380_19.cs
  • branches/eraser6/DefaultPlugins/EraseVSITR.cs
  • branches/eraser6/Util/NtfsAPI.cs
  • branches/eraser6/Util/ShellAPI.cs
  • branches/eraser6/Util/UxThemeAPI.cs
  • branches/eraser6/Util/WintrustAPI.cs

Set svn:keywords property

08:06 Changeset [1001] by lowjoel
  • branches/eraser6/Util/File.cs
  • branches/eraser6/Util/NetAPI.cs
  • branches/eraser6/Util/ShellAPI.cs
  • branches/eraser6/Util/UserAPI.cs
  • branches/eraser6/Util/UxThemeAPI.cs

A bit more reshuffling to place functions in the correct API file.

07:59 Changeset [1000] by lowjoel
  • branches/eraser6/Eraser/TaskDataSelectionForm.cs
  • branches/eraser6/Util/File.cs
  • branches/eraser6/Util/KernelAPI.cs
  • branches/eraser6/Util/NTAPI.cs
  • branches/eraser6/Util/Permissions.cs
  • branches/eraser6/Util/StreamInfo.cs
  • branches/eraser6/Util/VolumeInfo.cs

-Move all API calls out of these helper classes and into the relevant *API files' NativeMethods? class.
-Use automatic properties where possible
-Call FreeHGlobal after every call to AllocHGlobal
-Use .NET functions where possible
-Cast .NET constants to integer when passing to native functions, where possible

07:14 Changeset [999] by lowjoel
  • branches/eraser6/Util/KernelAPI.cs
  • branches/eraser6/Util/NetAPI.cs
  • branches/eraser6/Util/ShellAPI.cs
  • branches/eraser6/Util/UxThemeAPI.cs

-Give slightly more intuitive parameter names
-Specify MarshalAs? for bool's
-Forgot to use the provided parameter in NetAPI.NetStatisticsGet?

07:05 Changeset [998] by lowjoel
  • branches/eraser6/Util/CryptAPI.cs
  • branches/eraser6/Util/MsCorEEAPI.cs
  • branches/eraser6/Util/NTAPI.cs
  • branches/eraser6/Util/ShellAPI.cs
  • branches/eraser6/Util/UxThemeAPI.cs

-Shifted all native functions into NativeMethods?
-Specify what is meant by marshalling a bool - more often than not it is a BOOL (UnmanagedType?.Boolean)

07:03 Changeset [997] by lowjoel
  • branches/eraser6/Util/KernelAPI.cs

-Removed the STARTUPINFO structure/GetStartupInfo function since no more code uses it.
-Added ThreadExecutionState?.None for standardisation.
-Be explicit about what is meant by marshalling a boolean value: C++ has got the BOOL and the bool type which are different unmanaged types.

07:00 Changeset [996] by lowjoel
  • branches/eraser6/Manager/EntropySource.cs

Runtime fixes for the EntropySource?.

04:03 Changeset [995] by lowjoel
  • branches/eraser6/DefaultPlugins/DefaultPlugins.csproj
  • branches/eraser6/Util/Util.csproj

Disable unsafe blocks.

03:24 Changeset [994] by lowjoel
  • branches/eraser6/Manager/DirectExecutor.cs
  • branches/eraser6/Manager/EntropySource.cs
  • branches/eraser6/Util/KernelAPI.cs
  • branches/eraser6/Util/MsCorEEAPI.cs
  • branches/eraser6/Util/NTAPI.cs
  • branches/eraser6/Util/NetAPI.cs
  • branches/eraser6/Util/NtfsAPI.cs
  • branches/eraser6/Util/Permissions.cs
  • branches/eraser6/Util/ShellAPI.cs
  • branches/eraser6/Util/UserAPI.cs
  • branches/eraser6/Util/UxThemeAPI.cs
  • branches/eraser6/Util/WintrustAPI.cs

Code cleanup.

-Abstract away the native API calls and put them behind managed class functions.
-Place all imports from system DLLs into the NativeMethods? class
-All NativeMethods? classes should be internal static

02:57 Changeset [993] by lowjoel
  • branches/eraser6/Eraser/UpdateForm.cs
  • branches/eraser6/Manager/EntropySource.cs
  • branches/eraser6/Manager/Manager.csproj
  • branches/eraser6/Util/File.cs
  • branches/eraser6/Util/KernelAPI.cs
  • branches/eraser6/Util/Permissions.cs
  • branches/eraser6/Util/ShellAPI.cs
  • branches/eraser6/Util/UserAPI.cs

Code cleanup.

-Abstract away the native API calls and put them behind managed class functions.
-Place all imports from system DLLs into the NativeMethods? class
-Replaced a lot of the native DLL calls for entropy sources to their managed equivalents. Some native providers have been removed in favour of the managed counterparts

05/06/09:

11:50 Changeset [992] by lowjoel
  • branches/eraser6/Util/File.cs
  • branches/eraser6/Util/ShellAPI.cs
  • branches/eraser6/Util/StreamInfo.cs
  • branches/eraser6/Util/Util.csproj
  • branches/eraser6/Util/UxThemeAPI.cs

Documentation fixes.

11:39 Changeset [991] by lowjoel
  • branches/eraser6/Manager/FileSystem.cs
  • branches/eraser6/Manager/Strings.en.resx
  • branches/eraser6/Manager/Strings.nl.resx
  • branches/eraser6/Manager/Strings.resx

Factor out the WindowsFileSystem? class for FatFileSystem? and NtfsFileSystem? to inherit since their secure file deletion functions only differ by the minimum date/time the file system supports.

11:27 Changesets [989-990] by lowjoel
  • branches/eraser6/DefaultPlugins/Strings.en.resx
  • branches/eraser6/DefaultPlugins/Strings.nl.resx
  • branches/eraser6/DefaultPlugins/Strings.resx
  • branches/eraser6/DefaultPlugins/DefaultPlugins.csproj
  • branches/eraser6/DefaultPlugins/Plugin.cs
  • branches/eraser6/DefaultPlugins/RNGISAAC.cs

Removed ISAAC after consultation with Professor Ling San (see my rc5 announcement.)

10:58 Changeset [988] by lowjoel
  • branches/eraser6/Eraser/Program.cs
  • branches/eraser6/Manager/Settings.cs
  • branches/eraser6/ShellExt/CtxMenu.cpp

Use registry-native types to store the settings where possible, allowing users to set custom values and for the shell extension to always know where to find the correct enabled value.

10:35 Changeset [987] by lowjoel
  • branches/eraser6/Manager/DirectExecutor.cs
  • branches/eraser6/Manager/Task.cs

Pass the task list owner to the deserialisation constructor for each task so they can get the Executor instance automatically.

09:47 Changeset [986] by lowjoel
  • branches/eraser6/DefaultPlugins/EraseCustom.cs
  • branches/eraser6/DefaultPlugins/Strings.en.resx
  • branches/eraser6/DefaultPlugins/Strings.nl.resx
  • branches/eraser6/DefaultPlugins/Strings.resx

Throw the exception with localised errors since this exception will probably be user-visible.

08:59 Changeset [985] by lowjoel
  • branches/eraser6/Eraser/AboutForm.cs

Link to our new website.

08:30 Changeset [984] by lowjoel
  • branches/eraser6/Manager/RemoteExecutor.cs

Fixed a regression in r976: The server semaphore could be destroyed before the servers were closed due to a race condition.

08:17 Changeset [983] by lowjoel
  • branches/eraser6/Eraser/LogForm.Designer.cs
  • branches/eraser6/Eraser/LogForm.cs
  • branches/eraser6/Eraser/LogForm.resx

The Log viewer now supports copying to Word/Notepad? as plain text and to Excel as formatted data.

07:56 Changeset [982] by lowjoel
  • branches/eraser6/Eraser/ProgressForm.cs
  • branches/eraser6/Eraser/SchedulerPanel.cs

Cancel the task properly - the UnqueueTask? function no longer cancels tasks.

05/05/09:

13:19 Changeset [981] by lowjoel
  • branches/eraser6/ShellExt/CtxMenu.cpp

Oops, forgot to remove debug code.

13:15 Ticket #207 (Restricted characters in filename) closed by Joel
fixed: Fixed in r977.
13:12 Changeset [980] by lowjoel
  • branches/eraser6/Eraser.sln

Don't build the installer in Debug builds (not now, anyway)

13:11 Changeset [979] by lowjoel
  • branches/eraser6/Manager/DirectExecutor.cs

When loading a task list, we need to re-assign the Owner otherwise the task will be left "hanging".

13:10 Changeset [978] by lowjoel
  • branches/eraser6/Manager/RemoteExecutor.cs

Run now replaces Connect. Use the IsConnected? property to ascertain whether the Remote Exector client is connected.

13:08 Changeset [977] by lowjoel
  • branches/eraser6/Eraser/Program.cs
  • branches/eraser6/ShellExt/CtxMenu.cpp

Added escaping and unescaping code for command line generation/parsing to enable pathnames containing = and ,. Fixes #207.

10:14 Changeset [976] by lowjoel
  • branches/eraser6/Manager/RemoteExecutor.cs

-Fixed the shutdown of Eraser: the RemoteExecutor? rewrite introduced a bug where the server instances continued to listen thus preventing the shutdown of Eraser.
-Always call base.Dispose since the base class may need to do cleaning up

10:04 Changeset [975] by lowjoel
  • branches/eraser6/Manager/DirectExecutor.cs

Delete the folder the user asked for erasure only if it is empty! Fixes the problem in http://bbs.heidi.ie/viewtopic.php?f=2&t=5556

10:01 Changeset [974] by lowjoel
  • branches/eraser6/Eraser/LogForm.Designer.cs
  • branches/eraser6/Eraser/LogForm.cs
  • branches/eraser6/Eraser/LogForm.resx

-Don't change the dialog font and add the bevel line.
-Factor out the code dealing with copy/clear button enabling to the EnableButtons? function.

09:28 Ticket #207 (Restricted characters in filename) created by Joel
Eraser 6's shell extension passes arguments to Eraser by the command line. …

05/04/09:

01:31 Ticket #206 (forums email activation failure) created by Posts
account name: posts predictable, happens all the time, email activation …
Note: See TracTimeline for information about the timeline view.