In version 3.9.1
The Character code mode and Single character mode of the MATCH selector can now be activated also by using /CODE/ and /SCHR/ respectively.
Character code mode of the MATCH selector couldn't be activated since version 3.8.0.
The parser could omit quoted filenames if they were placed after certain commands.
Fixed the scripts to handle filenames and paths that contain spaces.
Now using the locale.library Quick Sort function for filename sorting which is faster and more accurate. Numbering is now faster because of this.
In version 3.9.0
Improved the benchmarking functionality of the STATS option. Added a more meaningful "Renamed objects per second" statistic. This figure is displayed only if the given rename operations take at least a second, and an additional message is displayed if this figure doesn't represent performance accurately because of given options or other factors. Also added the percentage of processed files that are or would be renamed.
Added the FORCEPATH option to force the entire filepattern to be taken as a path regardless if it ends with a slash or not. This was added to avoid having to add a slash at the end of a path every time a path has to be supplied.
Display of warnings when the parser detects problematic command sequences that can still be executed.
More speed in Indirect mode and less code size by streamlining the internal workings of Indirect mode. Several storage buffers were unified into one making the code that handles Indirect mode much less convoluted and much more robust.
Further reduced startup time when Indirect mode is used.
Mishandling of separators under certain conditions.
Sometimes error messages weren't displayed.
The Main component failed to be created under certain conditions.
Incorrect number placement when modifying the Basename using swapping, shifting or unifying 2-component basenames since version 3.8.0.
Incorrect operation of Indirect mode in some occasions.
Added the script "RenumberNoBase" for renumbering batches of filenames that don't share a common basename.
Fixed the "HexToChr" script to process only byte hex values.
In version 3.8.1
Fixed bug that could cause MATCH to get wrong arguments.
Fixed bug in Indirect mode that could result in some corruption of the buffered filename.
Fixed single memory write bug when using INSERT to append a string.
Simplified the way that the TO action works in Indirect mode. It now works a bit faster and uses less memory.
In version 3.8.0
Added the STATS (ST) option to display statistics such as:
Directory names processed
File comments changed
Directory comments changed
Time taken in seconds
Also included the "SRbench" script to the archive to perform a standard toggle case benchmark.
Removed the 255 directory depth level limit. Now more than 2 billion levels of depth are allowed, that should be enough... ;-)
Now when the name or comment of a directory is changed "(dir)" is appended to the output to indicate that the object type is a directory.
Fixed bug where giving FILES and DIRS together would result in no files being renamed. Now FILES cancels DIRS as it should have.
In renumbering mode directories that match the basename are no longer processed. Now if the starting number is in a filename only filenames will be renumbered, and if the starting number is in a directory name only directory names will be renumbered.
Numerous optimizations resulted in speed gains, particularly in startup time. Because the main bottleneck for SRename is the speed of the OS Rename system call, the percentage of increase in speed relatively to the previous version will be greater for fast systems and smaller or non existent for slow systems.
For example this version was barely 1% faster than version 3.7.1 when used in a 25 MHz A4000-030, but was about 5% faster when used with a WinUAE A4000-040 configuration on a 2.8 GHz P4 PC.
In version 3.7.1
Added "Filename" (fn) selector to specify filenames that should be treated like filenames even if they contain wildcard characters.
Normally SRename can process such filenames in recursion mode but only if they are present in the root directory, if they are not they are treated as wildcard patterns.
"Filename" makes it possible to look for and rename such filenames in recursion mode even if those filenames aren't present in the root directory.
Added secondary arguments to "Dirpat":
"Androot" (ar) causes the filenames in the starting (root) directory to also be renamed.
"Anddirname" (adn) causes the name of the directory that is entered with Dirpat to also be renamed.
Removed "Persistentdp" that was used together with "Dirpat" because it's behaviour is now the default for "Dirpat". Not having a persistent pattern for entering directories didn't have much use.
Recursion can now be used with non-wildcards, for example giving an ordinary filename to look for.
Corrected a bug in recursion where directories weren't always entered with "Dirpat" if the names of those directories were also to be modified.
To avoid this situation now directories are first entered and their contents renamed, and the names of those directories are modified afterwards.
The shell output has slightly changed in some instances.
The recursion bugfix has also caused slight changes to the shell output in recursion, such as that the name of a directory has to be printed again to avoid confusion if subdirectories in that directory were entered and filenames in that same directory are also to be renamed.
In version 3.7.0
Automatic renaming when new filename already exists. "Noautoren" (nar) option has been added to deactivate it.
"Noautopsep" (nap), "Noautossep" (nas), "Autopsep" (aup), "Autossep" (aus) options added to control the handling of prefix and suffix separators when prefix and suffix is created or deleted.
"Addonly" (ao) secondary argument added to "Prefix", "Main" and "Suffix" selectors. When used it prevents existing components from being modified, and components are added if they don't already exist.
Redirection of filename and comment with "Tofilename" and "Tocomment" can now work in Immediate and Indirect mode as required by the user, instead of the previous fixed partially cached mode.
Several core bugs fixed that prevented correct renaming with certain action and Immediate/Indirect mode combinations.
Parser bug fixed occasionally broke the parsing process if commands with secondary arguments were used.
Some memory misallocations fixed.
Now the usage text is displayed if no arguments are given.
In version 3.6.1
Fixed small bug that caused some error messages not to be printed.
In version 3.6.0
Improved the caching core used by the match selector and in indirect mode, to be more accurate when overwriting previous data.
Corrected the way that multiple strings are appended to the same filename segment in indirect mode.
Tweaked some initialization code.
Added some missing error checks that could result in crashes.
No longer returns a failure code if requested to display the usage text.