CHANGES 11.16 (97484 bytes) - The "Load Device..." function reacted improperly to a cancelled load, causing some enforcer hits and a lockup of DiskSalv. Now cancellations are rejected, as are files that are obviously too large. - Eliminates leading zeros in the "Device Scan" display. These became particularly annoying with proportionally-spaced fonts. Other tweaks here to improve the Device Scan display. - The reason for a scan display (Salvage, Undelete, Validate, Repair, Unformat, Remake, Restore, Search, or Analyze) is now shown in the Scan window, over the Operation (Phase) display. This should help users remember just what DiskSalv is busy doing during long scans. - A bug in the device descriptor allocation process caused DiskSalv to allocate the wrong bitmap size for a physically addressed device (used only in the "Custom" routines). This is now fixed. - Dropped the "Beta/Gamma" notation, I have enough version numbers around already. - Tuned up bogus filename rejection somewhat. It will now permit any printable ISO character to be part of a filename, but no others. - The "Pause" button now works much better during some Fix-In-Place phases. Also, selecting "Pause" causes the "Device Scan" display to catch up to its exact location. - The Phase Display now stores context to eliminate the chance of any constant redisplay condition. Better use of the "Stopping..." message is made in several places. CHANGES 11.15 (96964 bytes) - The severe Fix-In-Place routines (Repair and Unformat) are now a bit more robust and consistent with one another. Basically, think of Unformat as a forced Repair (eg, fix everything, not just stuff that needs it). - New option "REJECTION" is added. This is a numeric parameter between 1 and 10 that modifies DiskSalv's evaluation of disk blocks as valid entities. The lower the number, the farther from ideal a block can be and still be considered valid. The default setting is 6. This is an advanced paramater and in most cases shouldn't be messed with. - If both input and output "Settings/Save Settings" options are selected, both sets are saved, as is the proper action. - Previously, in a system without a DiskSalv.guide file, the input window save settings flag was set, due to some interactions based on the variable sized menu. That's now fixed. - Changed around the list block tracking code. The list processing function is now more efficient, while the list block identification function uses the same fuzzy qualification ideas used for files and directories in the last release. - It occurred to me that extension block tracking is useless to a Fix-In-Place function. So extension blocks are only tracked in Recover-By-Copy modes, saving memory and a little time during a Fix-In-Place function. - The "NODOSLOCK" option changed to "KEEPDOS", which is a bit clearer. It still keeps the FileSystem from being lockout out of the device, where applicable. - The "FORCELOCK" option has changed to "KILLDOS" for more clarity. Additionally, it's a bit more potent now. As well as overriding the KEEPDOS function, it prevents any DOS/FileSystem activity on the selected devices at all, including modes UNDELETE and VALIDATE which rely on AmigaDOS for part of their operation. This has a better chance of eliminating problems on DOS devices that crash DOS or their FileSystem. This option must be used with care. Since in doesn't use any DOS functions, it can't inhibit the input disk, but still allows functions that might normally require inhibiting DOS. - Fixed a bug in the "Good Requester" that caused more than one tab to fail, and prevented mixed centering and tabs. Now up to 9 tab levels can be used (easily changed), with centering done right within each tab space. - The input window's "Info..." requester is now better formatted and a few more information items have been added. - Added the "Project/Save Device..." option on the input window. This function saves the selected device as a standard AmigaDOS "mount" file. This item is ghosted when no device is selected. - Added the Project/Load Device..." option. This reads an AmigaDOS "mount" file in as a virtual device. The device name is taken from the file name, in standard 2.1 fashion. - "FileSystem" and "DefaultFS" options now behave properly. - Added "Best-Guess" filesystem option. This runs the scanning phase without any particular filesystem in mind, and follows that up immediately with an analysis of the file system. This analysis phase can be rather lengthy, so it's always better and faster to pick a filesystem (or let DiskSalv pick if the partition's record of filesystem is available and correct). The, uh, default default filesystem (what you get for DEFAULTFS by default) is now set to "Best Guess". Note that "Best Guess" will also use more memory. - Fixed a deadly bug in the disk block structure that would cause the RepairDir() function to crash. This made Repair and Undelete fail on any disk with a quasi-damaged root block. - Support for alternate fonts is better now. DiskSalv will look at the default screen and system fonts. If one of these is not too large, DiskSalv will adjust its display to use the font (in that order). - Fixed CLI/WorkBench numeric parameter grabbing, now works properly. - Added additional FileSystem-device checks, and fixed the device list deadlock problem. Additionally, the KILLDOS option will now prevent the AmigaDOS "IsFileSystem()" call function from being called, which will keep any unloaded devices from being initialized. CHANGES 11.14 (87832 bytes) - CLI/Icon parameters unified for a more consistant user interface, via ReadArgs(). Several options are added. - QUICKSCAN mode is reimplemented, it now causes the display to stay small. - INTERACTIVE mode will run DiskSalv unattended until user intervention is required. This is automatically invoked with certain command-line options, somewhat like DiskSalv V1.42. - A number of bug fixes now make all fix-in-place operations more reliable. - The "gas guage" is now supported for fix-in-place, recovery, and custom operations, not just for simple linear scans. - The log file is now provided as a menu entry on the input screen, rather than a string gadget on the output screen. This allows the user to get a log of scanning and fix-in-place activity, not just file recovery activity. - Many fixes to the "custom" screen operations. The "Create", "Search", and "Analyze" gadgets are now enabled or disabled as appropriate, based on qualifying parameters. Feedback on invalid parameters is supplied immediately, rather than after specifying an operation. Several bugs are fixed, including a couple of potential Enforcer hit conditions. - New interlocks prevent any fix-in-place operations from being run on "virtual" devices (eg, those created by a Custom scan). - Fixes in object display code eliminate errors with the Output screen's "Info..." button. - Improved the sanity checks done on potential disk blocks. Rejection of certainly-bogus blocks is greatly improved. - More intelligent management of the disk look-ahead buffer results in faster operation during some fix-in-place operations and on the output screen. - The memory allocator and screen building functions now permit user retry of critical memory allocations, with DisplayBeep() for non-critical failed allocations. - Changed "Select Empty" for "Select Tree" gadget on the Output screen. This lets the current directory tree be fully selected without any need to enter it. The "Select Empty" function was never very popular and it seemed to confuse people. Also added "Select Files" and "Root" functions for easier directory manipulation and travel. - Added interlocks on modes that use AmigaDOS calls on the input disk (Undelete and Validate), so that these modes can't be run on disks invalid with respect to AmigaDOS. CHANGES 11.13 (??? bytes) - Additional input device screening functions. The PC device is now properly rejected. - Fixed a couple of bugs in the Output screen "Info..." functions. Replacement file names now display correctly, link displays don't crash the system anymore. - A small but very critical bug was introduced last time in the Fix-In-Place routine. This caused most files to be removed from the disk operated on. Now fixed. - Window sizing and other display elements for QUICKSCANs now used. All file name printing is eliminated, but the block number/object count display is maintained, but with a lower update rate. - Re-initialization code changed to properly handle the difference between Icon, CLI, and run-time settings of various parameters. CHANGES 11.12 (83636 bytes) - Fixed an output device bug. When an illegal output device was detected and eliminated, the "Salvage" gadget was not re-disabled. - Some additional robustness added to checking of AmigaDOS calls during the "remake" process. - Memory allocation enhancements. All gadget allocations now follow Martin's suggestions. The memory allocator is now more robust, and will permit the user to retry the allocation if the calling routine can retry. All required window/display allocations will now retry on failure, all optional window/display allocations will now DisplayBeep() on failure. Allocations made through the DiskSalv allocation routines always permit retrys. - DiskSalv is now compiled according to Martin's suggestions. More math and string functions are taken from utility.library, no startup code is used, registerized parameters are used, the link order is changed. - The "Output" window is now re-merged with the "Salvage" window. Options for "New Device" and the streaming mode of output, both somewhat dangerous for the casual user, are on menus now. - The user names for "Setup" and "Salvage" windows have been changed to "Input" and "Output" windows to help avoid confusion. The word "Salvage" was just showing up too often. - CLI options added, with standard AmigaDOS syntax (eg, ReadArgs()). Tooltypes useful in a CLI environment can be specified, overriding the icon settings. Additionally, "from" and "to" devices can be specified, as well as the function. When devices are specified, DiskSalv goes into non-interactive mode until an error of some kind occurs. - Re-implemented QUICKSCAN mode via a boolean tooltype (and CLI option) of the same name. - Fixed the bar graph to better reflect the used portion of the scanned disk. - The DiskSlav window doesn't clear before closing anymore. This makes the shutdown appear much, much faster. - Bogus filenames are detected and replacements generated much better. - Internal changes to the menu generator's hook into the text allocator. This will let future versions change around menus without requiring text codes to change (eg, the Localization/AmigaGuide codes should not have any reason to ever change again). - The file rebuilder routine now responds much faster to a Quit or Close command. - The scan screen counter display has been changes. The block type was useless information at this point -- it went by too fast, and the gradual update mechanism invalidated even that. So most scan displays now show separate file and directory counts instead. - Candidates for the input device list are new screened better. Most non-disk-oriented devices should now be rejected. CHANGES 11.11 (86560 bytes) - Eliminated redundant "Quit" gadgets (menu/close items more than enough) as it seems the style folks really don't require these at all. The Scan, Salvage, and New Device gadgets as a result get larger and repositioned to be more aesthetically pleasing. - The "About" function now reads something very close to the expected Author/Distribution text. - DiskSalv.cd problems removed, now passes "CatComp". - Localization file fixes. MSG_SET_MODE_SALVAGE .. MSG_SET_MODE_UNFORMAT now have the correct codes, as well as MSG_CUST_HELP_PATTERN. Added new codes, called MSG_CUST_MEMTYPE_DEFAULT and MSG_CUST_MISC_WINDOW_HELP, Added the string "(Key %lx != %lx)" to the DiskSalv string allocator, with the associated code MSG_SCAN_MISC_KEYMISMATCH. - The salvage screen wasn't displaying a log file name entered in the output requester, due to a minor change in when I open the log file. Now it's displayed properly. - Some GUI tweaking should result in slightly larger gadgets here and there. This should be a help to our European friends in their quest to avoid unreadable abbreviations. - The "Restore..." requester has been fixed. Previously, the Input function was attached to both Input and Output string gadgets (though the Input and Output file requester options worked fine). Now the Output string gadget is attached to the proper function. - A few user message strings have been lengthened, based on feedback and confusion from beta testers and translators. CHANGES 11.10 (84096 bytes) - File requesters now properly block their parent windows. - The Custom mode window now reacts properly to an empty string given for exec or DOS devices. This window is now called up via a menu, rather than a gadget. This, in theory, yields a more consistant user interface. - The Setup screen "Custom" gadget has been changed to a menu item. - The Filters window File Pattern string is now parsed correctly, and no longer tries to free unallocated memory. - Some confusing strings have hopefully been made more clear to the uninitated. - The dynamic memory manager is now shut down _after_ the icon is updated (which requires dynamic allocations), not before. This eliminates a good number of Enforcer hits. - Several Enforcer hits eliminated from the Restore... subsystem. - The DiskSalv process window pointer is set to -1, which will hopefully block more of the DOS and/or FileSystem error messages that can come up as a natural part of the fix-in-place process. - DCFFS no longer seems to have invisible, unselectable files in the file brower. - The recovery error file output has been fixed. It's now called the log file. The only difference is that it reports all files, not just those tagged with errors. - The numeric displays in scan windows have been adjusted. Updates now lessen as the disk size increases. Also, blocks encountered during the Validate mode DOS-based scan now update the numeric display just like the normal linear DiskSalv version of the scan routine. Text rendering has also been sped up. - The help system Intuition loop is now debounced, so menu help requests for menus overlaying gadgets generate their desired help event, not the help for the underlying gadget. - The main window now isn't created until it's actually needed. This prevents an initial resizing, which was kind of ugly. - The output window "Prune" gadget has been changed to "Select Empty". Its action is now to simply tag empty directories, which can then be removed via the normal "Forget" function. CHANGES 11.9 (83360 bytes) - Additional DC-SFS/FFS support. The scanner, remaker, and validator now know about directory caches. The scanner will make a special file-list entry, FDCACHE, for any DC partition. The SFS reconstructor will attempt to find a filename in the disk cache list if the file header is missing. Under fix-in-place, disk caches are invalidated if any changes are made to a particular directory, or if any block in a disk cache chain is invalid. - Fixed disk-change detection to freshen-up the filesystem type on the selected input device when a disk change is detected. - Re-arrange disk inhibition as a result of disk-change checking modification. The selected input device now normally isn't inhibited until the scan process begins. However, it's occasionally possible (or was under 1.3 anyway) that a badly damaged disk even inserted with the filesystem active will crash the filesystem. To take this into account, a new tooltype, FORCELOCK, will force inhibition when set to TRUE. - The stream recovery option is now shown on the setup screen menu. This allows a streamed salvage to be restored. Currently, it restores only directories and files, not links yet. The stream format does save links, they're just not restored at present. CHANGES 11.8 - Fixed some display details during validate mode. - Changes around disk inhibit during fix-in-place, so that an inhibit is guaranteed, regardless of the OPTIONS.DOS setting, since inhibit is required for f-i-p to work correctly. CHANGES 11.7: (78968 bytes) - Added icon support. Various parameters can be set from the icon. Menu save for "options" writes some of these values back to the icon. - Fixed and enhanced "Filters..." select range gadget. They now hit range bounds when pushed. Slider to range scaling is now set in $10 factor increments, so the range calculations always come close to using the full accuracy of the slider. The range calculation is done correctly now for all scaling factors, no negatives are produced. - Fixed the salvage window's "Parent" gadget w.r.t. ghosting it when the root is selected. The new directory list update code had put the parent update function within a GT_BeginRefresh()/GT_EndRefresh() pair, now its outside and displays properly. - A few of the salvage functions, namely "Forget" and "Prune", could result in an empty directory tree. And right after it, a crash. That's because the update tag function, based on Count_d_tree(), didn't work on a NULL tree. Now it does, no more crashes on this. - Swapped the order of "Validate" and "Repair" in the function list. This now puts the fix-in-place functions in order by severity. - Added gadget checks during fix-in-place modes. - Fixed update of menu option defaults. - Added default FileSystem concept. If DiskSalv can't easily figure out a filesystem from the device you give it, it'll pick the default. This can, of course, be manually changed after the device is selected. The default can be set in the tooltypes array. - Added DOS\4, "DC-OFS", and DOS\5, "DC-FFS" to the list of known DOS types. No special processing of the directory caches is done yet. - New icon, looks more 2.0/2.1-ish. - Added AmigaGuide help support. DiskSalv will send AmigaGuide messages for every help option. If AmigaGuide can't provide the requested help text, the internal DiskSalv version is used. - Added localization support. If the locale.library is present, DiskSalv will try to open a DiskSalv catalog and filters all text requests through this catalog. CHANGES 11.6: (74724 bytes) - The main window is kept open during the entire program's operation. It is resized as necessary, with some displays taking advantage of >200 line screens when useful. - Creative disabling of gadgets is used throughout the program, rather than the previous method of popping up negative requesters. - Gadget layout is substantially more 2.1-like. Buttons that result in change of the major window are now at the bottom of the display. All of the silly "CAPS!" texts have been modernized. - Buttons that pop up subwindows now have their labels ending in elipsis marks. Parent windows are now blocked by a requester and set to display the clock pointer when overlaid by a subwindow. - All list views now displays alphabetically sorted entries. I did my own "AlphaEnqueue()", using the caseless compare function from the utility.library -- it was a real simple function, I didn't bother to get hunt down Martin and get the officially blessed routine. - The "File Pattern", "Protection Bit Mask", and "Scan Range" options from the setup screen are now all on a separate sub-screen called "Filters...". The "Scan Range" gadget, now called "Disk Scan Range", is now an improved version of the DS V10.x "calipers" gadget, rather than the slider/scroller combination used before. It now indicates start and stop block numbers for the selected disk. The "Protection Bit Mask" option, now called "Protection Bits", has been expanded to a new level of user-friendly verbosity -- each bit is called out by name and given a cycle gadget that lets you select "Don't Care", "Match Set", and "Match Clear". As always, the sense of Set/Clear is transparently handled for negative (RWED) and positive (SPA) bits. - A new fix-in-place funtion, "Unformat", has been added. This will do a full disk scan, physically rebuild the root directory corresponding to the scan, then run a normal "Repair" on the this. This can completely recover from "Format ... Quick", and it can get some stuff back from a full format that's aborted by the user. - On the "Salvage" window, the output options (output path, error file, and Path/Stream selection) are now set up on a sub-window, thus clearing room for all of the "file list option" gadgets to be separate (rather than the scrolling list of options and a "DOIT!" gadget). The output options window allows the user to type in output and error paths, or alternately call up the file requester to pick the path (I used the "Fountain" methodology here, that being the only Workbench tool I found that offers this same kind of feature). The file browser now uses the bullet character to indicated tagged files, and it leaves a space between the bullet and the file.