+Index: record_lastdir.rb
+===================================================================
+--- record_lastdir.rb (revision 223)
++++ record_lastdir.rb (revision 253)
+@@ -4,7 +4,6 @@
+ # http://www.badgers-in-foil.co.uk/projects/cvsspam/
+ # Copyright (c) David Holroyd
+
+-$repositorydir = ARGV.shift
+
+ $tmpdir = ENV["TMPDIR"] || "/tmp"
+
+@@ -19,6 +18,36 @@
+ nil
+ end
+
++
++# transform any special / unexpected characters appearing in the argument to
++# --from so that they will not cause problems if the value is inserted into
++# a file or directory name
++def make_fromaddr_safe_for_filename(addr)
++ addr.gsub(/[^a-zA-Z0-1.,_-]/, "_")
++end
++
++# Option processing doesn't use GetoptLong (for the moment) bacause arguments
++# given to this script by CVS include the names of committed files. It
++# seems quite possible that one of those file names could begin with a '-'
++# and therefore be treated by GetoptLong as a value which requires processing.
++# This would probably result in an error.
++#
++# [That could be worked around by placing a '--' option (which tells GetoptLong
++# to stop processing option arguments) at the very end of the arguments to
++# record_lastdir.rb in commitinfo, but that's very easily forgotten, and isn't
++# really backwards compatable with the behaviour of older CVSspam releases.]
++if ARGV.first == "--from"
++ # we could, of course, be tricked, if the first committed file in the list
++ # happened to be named '--from' :S
++
++ # drop the "--from"
++ ARGV.shift
++ # and use the value which was given following the option,
++ $dirtemplate << "." << make_fromaddr_safe_for_filename(ARGV.shift)
++end
++
++$repositorydir = ARGV.shift
++
+ $datadir = find_data_dir()
+
+ if $datadir==nil
+Index: project.xml
+===================================================================
+Index: CREDITS
+===================================================================
+--- CREDITS (revision 223)
++++ CREDITS (revision 253)
+@@ -29,3 +29,10 @@
+ Elan Ruusamäe
+ Steve Fox
+ Christopher Petro
++ Robin Getz
++ Glen Starrett
++ Jonathan Rafkind
++ Ryan Dlugosz
++ Steve Woodcock
++ Andy Selle
++ Charles Duffy
+Index: cvsspam-doc.xml
+===================================================================
+--- cvsspam-doc.xml (revision 223)
++++ cvsspam-doc.xml (revision 253)