diff -ur tar2rubyscript-0.3.8.tar.gz/tar2rubyscript/README tar2rubyscript-0.4.0.tar.gz/tar2rubyscript/README
--- tar2rubyscript-0.3.8.tar.gz/tar2rubyscript/README	2003-10-19 19:17:19.000000000 +0200
+++ tar2rubyscript-0.4.0.tar.gz/tar2rubyscript/README	2004-12-03 23:10:19.000000000 +0100
@@ -1,6 +1,10 @@
-Usage: ruby init.rb application.tar [application.rb [licence.txt]]
-       or
-       ruby init.rb application[/] [application.rb [licence.txt]]
+The best way to use Tar2RubyScript is the RB, not this TAR.GZ.
+The latter is just for playing with the internals. Both are
+available on the site.
+
+ Usage: ruby init.rb application.tar [application.rb [licence.txt]]
+        or
+        ruby init.rb application[/] [application.rb [licence.txt]]
 
 If "application.rb" is not provided or equals to "-", it will
 be derived from "application.tar" or "application/".
@@ -8,5 +12,8 @@
 If a license is provided, it will be put at the beginning of
 The Application.
 
+Parts of the code for Tar2RubyScript are based on code from
+Thomas Hurst <tom@hur.st>.
+
 For more information, see
-http://www.erikveen.dds.nl/tar2rubyscript/ .
+http://www.erikveen.dds.nl/tar2rubyscript/index.html .
diff -ur tar2rubyscript-0.3.8.tar.gz/tar2rubyscript/ev/oldandnewlocation.rb tar2rubyscript-0.4.0.tar.gz/tar2rubyscript/ev/oldandnewlocation.rb
--- tar2rubyscript-0.3.8.tar.gz/tar2rubyscript/ev/oldandnewlocation.rb	2004-03-26 15:12:40.000000000 +0100
+++ tar2rubyscript-0.4.0.tar.gz/tar2rubyscript/ev/oldandnewlocation.rb	2004-12-03 23:13:40.000000000 +0100
@@ -1,11 +1,34 @@
-ENV["OLDDIR"]	= Dir.pwd	if not ENV.include?("OLDDIR")
-ENV["NEWDIR"]	= Dir.pwd	if not ENV.include?("NEWDIR")
+temp	= (ENV["TMPDIR"] or ENV["TMP"] or ENV["TEMP"] or "/tmp").gsub(/\\/, "/")
+dir	= "#{temp}/oldandnewlocation.#{Process.pid}"
+
+ENV["OLDDIR"]	= Dir.pwd		unless ENV.include?("OLDDIR")
+ENV["NEWDIR"]	= File.dirname($0)	unless ENV.include?("NEWDIR")
+ENV["TEMPDIR"]	= dir			unless ENV.include?("TEMPDIR")
+
+class Dir
+  def self.rm_rf(entry)
+    if File.ftype(entry) == "directory"
+      pdir	= Dir.pwd
+
+      Dir.chdir(entry)
+        Dir.new(".").each do |e|
+          Dir.rm_rf(e)	if not [".", ".."].include?(e)
+        end
+      Dir.chdir(pdir)
+
+      Dir.delete(entry)
+    else
+      File.delete(entry)
+    end
+  end
+end
 
 begin
   oldlocation
 rescue NameError
   def oldlocation(file="")
     dir	= ENV["OLDDIR"]
+    res	= nil
 
     if block_given?
       pdir	= Dir.pwd
@@ -14,7 +37,7 @@
         res	= yield
       Dir.chdir(pdir)
     else
-      res	= File.expand_path(file, dir)	if not file.nil?
+      res	= File.expand_path(file, dir)	unless file.nil?
     end
 
     res
@@ -26,6 +49,41 @@
 rescue NameError
   def newlocation(file="")
     dir	= ENV["NEWDIR"]
+    res	= nil
+
+    if block_given?
+      pdir	= Dir.pwd
+
+      Dir.chdir(dir)
+        res	= yield
+      Dir.chdir(pdir)
+    else
+      res	= File.expand_path(file, dir)	unless file.nil?
+    end
+
+    res
+  end
+end
+
+begin
+  tmplocation
+rescue NameError
+  dir	= ENV["TEMPDIR"]
+
+  Dir.rm_rf(dir)	if File.directory?(dir)
+  Dir.mkdir(dir)
+
+  at_exit do
+    if File.directory?(dir)
+      Dir.chdir(dir)
+      Dir.chdir("..")
+      Dir.rm_rf(dir)
+    end
+  end
+
+  def tmplocation(file="")
+    dir	= ENV["TEMPDIR"]
+    res	= nil
 
     if block_given?
       pdir	= Dir.pwd
@@ -34,7 +92,7 @@
         res	= yield
       Dir.chdir(pdir)
     else
-      res	= File.expand_path(file, dir)	if not file.nil?
+      res	= File.expand_path(file, dir)	unless file.nil?
     end
 
     res
diff -ur tar2rubyscript-0.3.8.tar.gz/tar2rubyscript/init.rb tar2rubyscript-0.4.0.tar.gz/tar2rubyscript/init.rb
--- tar2rubyscript-0.3.8.tar.gz/tar2rubyscript/init.rb	2004-03-20 18:42:23.000000000 +0100
+++ tar2rubyscript-0.4.0.tar.gz/tar2rubyscript/init.rb	2004-12-03 23:09:07.000000000 +0100
@@ -1,46 +1,61 @@
 require "ev/oldandnewlocation"
 
+exit	if ARGV.include?("--tar2rubyscript-exit")
+
 scriptfile	= "tarrubyscript.rb"
 tarfile		= oldlocation(ARGV.shift)
 rbfile		= oldlocation(ARGV.shift)
 licensefile	= oldlocation(ARGV.shift)
 
 if tarfile.nil?
+  $stderr.puts <<-EOF
+
+	Usage: ruby init.rb application.tar [application.rb [licence.txt]]
+	       or
+	       ruby init.rb application[/] [application.rb [licence.txt]]
+	
+	If \"application.rb\" is not provided or equals to \"-\", it will
+	be derived from \"application.tar\" or \"application/\".
+	
+	If a license is provided, it will be put at the beginning of
+	The Application.
+	
+	For more information, see
+	http://www.erikveen.dds.nl/tar2rubyscript/index.html .
+	EOF
+
   exit 1
 end
 
 tarfile.dup.gsub!(/[\/\\]$/, "")
 
-if not FileTest.exist?(tarfile)
+if not File.exist?(tarfile)
   $stderr.puts "#{tarfile} doesn´t exist."
   exit
 end
 
-if not licensefile.nil? and not FileTest.file?(licensefile)
+if not licensefile.nil? and not licensefile.empty? and not File.file?(licensefile)
   $stderr.puts "#{licensefile} doesn´t exist."
   exit
 end
 
-script	= nil
-archive	= nil
-
-File.open(scriptfile)			{|f| script	= f.read}
+script	= File.open(scriptfile){|f| f.read}
 
-if FileTest.file?(tarfile)
-  File.open(tarfile, "rb")		{|f| archive	= [f.read].pack("m").split("\n").collect{|s| "# " + s}.join("\n")}
+if File.file?(tarfile)
+  archive	= File.open(tarfile, "rb"){|f| [f.read].pack("m").split("\n").collect{|s| "# " + s}.join("\n")}
 end
 
-if FileTest.directory?(tarfile)
-  orgdir	= Dir.pwd
+if File.directory?(tarfile)
+  pdir	= Dir.pwd
 
   Dir.chdir(tarfile)
 
-  if FileTest.file?("tar2rubyscript.bat")
+  if File.file?("tar2rubyscript.bat")
     $stderr.puts "\".\\tar2rubyscript.bat\""
     system(".\\tar2rubyscript.bat")
   end
 
-  if FileTest.file?("tar2rubyscript.sh")
+  if File.file?("tar2rubyscript.sh")
     $stderr.puts "\". ./tar2rubyscript.sh\""
     system("sh -c \". ./tar2rubyscript.sh\"")
   end
@@ -49,17 +64,17 @@
 
   begin
     tar	= "tar"
-    IO.popen("#{tar} ch #{tarfile.sub(/.*[\/\\]/, "")}", "rb")	{|f| archive	= [f.read].pack("m").split("\n").collect{|s| "# " + s}.join("\n")}
+    archive	= IO.popen("#{tar} ch #{tarfile.sub(/.*[\/\\]/, "")}", "rb"){|f| [f.read].pack("m").split("\n").collect{|s| "# " + s}.join("\n")}
   rescue
     tar	= newlocation("tar.exe")
-    IO.popen("#{tar} ch #{tarfile.sub(/.*[\/\\]/, "")}", "rb")	{|f| archive	= [f.read].pack("m").split("\n").collect{|s| "# " + s}.join("\n")}
+    archive	= IO.popen("#{tar} ch #{tarfile.sub(/.*[\/\\]/, "")}", "rb"){|f| [f.read].pack("m").split("\n").collect{|s| "# " + s}.join("\n")}
   end
 
-  Dir.chdir(orgdir)
+  Dir.chdir(pdir)
 end
 
-if not licensefile.nil?
-  lic	= nil	; File.open(licensefile)	{|f| lic	= f.readlines}
+if not licensefile.nil? and not licensefile.empty?
+  lic	= File.open(licensefile){|f| f.readlines}
 
   lic.collect! do |line|
     line.gsub!(/[\r\n]/, "")
diff -ur tar2rubyscript-0.3.8.tar.gz/tar2rubyscript/tarrubyscript.rb tar2rubyscript-0.4.0.tar.gz/tar2rubyscript/tarrubyscript.rb
--- tar2rubyscript-0.3.8.tar.gz/tar2rubyscript/tarrubyscript.rb	2004-03-26 14:35:19.000000000 +0100
+++ tar2rubyscript-0.4.0.tar.gz/tar2rubyscript/tarrubyscript.rb	2004-12-03 22:53:43.000000000 +0100
@@ -16,6 +16,9 @@
 # Software Foundation, Inc., 59 Temple Place, Suite 330,
 # Boston, MA 02111-1307 USA.
 
+# Parts of this code are based on code from Thomas Hurst
+# <tom@hur.st>.
+
 # Tar2RubyScript constants
 
 JustExtract	= ARGV.include?("--tar2rubyscript-justextract")
@@ -59,6 +62,24 @@
 LF_FIFO		= ´6´
 LF_CONTIG	= ´7´
 
+class Dir
+  def self.rm_rf(entry)
+    if File.ftype(entry) == "directory"
+      pdir	= Dir.pwd
+
+      Dir.chdir(entry)
+        Dir.new(".").each do |e|
+          rm_rf(e)	if not [".", ".."].include?(e)
+        end
+      Dir.chdir(pdir)
+
+      Dir.delete(entry)
+    else
+      File.delete(entry)
+    end
+  end
+end
+
 class Reader
   def initialize(filehandle)
     @fp	= filehandle
@@ -182,7 +203,7 @@
 
 class TempSpace
   def initialize
-    @archive	= File.new($0, "rb").read.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift
+    @archive	= File.open(File.expand_path(__FILE__), "rb"){|f| f.read}.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift
     @olddir	= Dir.pwd
     temp	= ENV["TEMP"]
     temp	= "/tmp"	if temp.nil?
@@ -195,7 +216,7 @@
   end
 
   def extract
-    Dir.mkdir(@tempdir)	if not FileTest.exists?(@tempdir)
+    Dir.mkdir(@tempdir)	if not File.exists?(@tempdir)
 
     newlocation do
 
@@ -212,7 +233,7 @@
 
       if entries.length == 1
         entry	= entries.shift.dup
-        if FileTest.directory?(entry)
+        if File.directory?(entry)
           @newdir	= "#{@tempdir}/#{entry}"
         end
       end
@@ -237,27 +258,17 @@
 
       Dir.chdir(@olddir)
 
-      recursivedelete(@tempfile)
-      recursivedelete(@tempdir)
+      Dir.rm_rf(@tempfile)
+      Dir.rm_rf(@tempdir)
     end
-  end
 
-  def recursivedelete(entry)
-    if FileTest.file?(entry)
-      File.delete(entry)
-    end
-
-    if FileTest.directory?(entry)
-      pdir = Dir.pwd
+    self
+  end
 
-      Dir.chdir(entry)
-        Dir.new(".").each do |e|
-          recursivedelete(e)	if not [".", ".."].include?(e)
-        end
-      Dir.chdir(pdir)
+  def cleanup
+    @archive	= nil
 
-      Dir.rmdir(entry)
-    end
+    self
   end
 
   def oldlocation(file="")
@@ -307,7 +318,7 @@
 
 class Extract
   def initialize
-    @archive	= File.new($0, "rb").read.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift
+    @archive	= File.open(File.expand_path(__FILE__), "rb"){|f| f.read}.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift
     temp	= ENV["TEMP"]
     temp	= "/tmp"	if temp.nil?
     @tempfile	= "#{temp}/tar2rubyscript.f.#{Process.pid}"
@@ -320,17 +331,33 @@
     ensure
       File.delete(@tempfile)
     end
+
+    self
+  end
+
+  def cleanup
+    @archive	= nil
+
+    self
   end
 end
 
 class MakeTar
   def initialize
-    @archive	= File.new($0, "rb").read.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift
-    @tarfile	= $0.gsub(/\.rbw?$/, "") + ".tar"
+    @archive	= File.open(File.expand_path(__FILE__), "rb"){|f| f.read}.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift
+    @tarfile	= File.expand_path(__FILE__).gsub(/\.rbw?$/, "") + ".tar"
   end
 
   def extract
     File.open(@tarfile, "wb")	{|f| f.write @archive}
+
+    self
+  end
+
+  def cleanup
+    @archive	= nil
+
+    self
   end
 end
 
@@ -351,17 +378,29 @@
 end
 
 if JustExtract
-  Extract.new.extract
+  Extract.new.extract.cleanup
 else
   if ToTar
-    MakeTar.new.extract
+    MakeTar.new.extract.cleanup
   else
-    TempSpace.new.extract
+    TempSpace.new.extract.cleanup
 
-    $0	= "./init.rb"
+    $: << newlocation
 
     newlocation do
-      load "init.rb"
+      if __FILE__ == $0
+        $0.replace("./init.rb")
+
+        if File.file?("./init.rb")
+          load "./init.rb"
+        else
+          $stderr.puts "%s doesn´t contain an init.rb ." % __FILE__
+        end
+      else
+        if File.file?("./init.rb")
+          load "./init.rb"
+        end
+      end
     end
   end
 end