diff -ur tar2rubyscript-0.3.4.tar.gz/tar2rubyscript/ev/oldandnewlocation.rb tar2rubyscript-0.3.5.tar.gz/tar2rubyscript/ev/oldandnewlocation.rb
--- tar2rubyscript-0.3.4.tar.gz/tar2rubyscript/ev/oldandnewlocation.rb	2003-10-23 23:15:17.000000000 +0200
+++ tar2rubyscript-0.3.5.tar.gz/tar2rubyscript/ev/oldandnewlocation.rb	2003-10-29 16:44:50.000000000 +0100
@@ -1,39 +1,42 @@
-def oldlocation(file="")
-  if ENV.include?("OLDDIR")
+ENV["OLDDIR"]	= Dir.pwd	if not ENV.include?("OLDDIR")
+ENV["NEWDIR"]	= Dir.pwd	if not ENV.include?("NEWDIR")
+
+begin
+  oldlocation
+rescue NameError
+  def oldlocation(file="")
     dir	= ENV["OLDDIR"]
-  else
-    dir	= "."
-  end
 
-  if block_given?
-    pdir	= Dir.pwd
+    if block_given?
+      pdir	= Dir.pwd
 
-    Dir.chdir(dir)
-      res	= yield
-    Dir.chdir(pdir)
-  else
-    res	= File.expand_path(file, dir)	if not file.nil?
-  end
+      Dir.chdir(dir)
+        res	= yield
+      Dir.chdir(pdir)
+    else
+      res	= File.expand_path(file, dir)	if not file.nil?
+    end
 
-  res
+    res
+  end
 end
 
-def newlocation(file="")
-  if ENV.include?("NEWDIR")
+begin
+  newlocation
+rescue NameError
+  def newlocation(file="")
     dir	= ENV["NEWDIR"]
-  else
-    dir	= "."
-  end
 
-  if block_given?
-    pdir	= Dir.pwd
+    if block_given?
+      pdir	= Dir.pwd
 
-    Dir.chdir(dir)
-      res	= yield
-    Dir.chdir(pdir)
-  else
-    res	= File.expand_path(file, dir)	if not file.nil?
-  end
+      Dir.chdir(dir)
+        res	= yield
+      Dir.chdir(pdir)
+    else
+      res	= File.expand_path(file, dir)	if not file.nil?
+    end
 
-  res
+    res
+  end
 end
diff -ur tar2rubyscript-0.3.4.tar.gz/tar2rubyscript/init.rb tar2rubyscript-0.3.5.tar.gz/tar2rubyscript/init.rb
--- tar2rubyscript-0.3.4.tar.gz/tar2rubyscript/init.rb	2003-10-19 19:16:01.000000000 +0200
+++ tar2rubyscript-0.3.5.tar.gz/tar2rubyscript/init.rb	2003-10-29 15:06:30.000000000 +0100
@@ -12,12 +12,12 @@
 tarfile.dup.gsub!(/[\/\\]$/, "")
 
 if not FileTest.exist?(tarfile)
-  puts "#{tarfile} doesn´t exist."
+  $stderr.puts "#{tarfile} doesn´t exist."
   exit
 end
 
 if not licensefile.nil? and not FileTest.file?(licensefile)
-  puts "#{licensefile} doesn´t exist."
+  $stderr.puts "#{licensefile} doesn´t exist."
   exit
 end
 
@@ -36,12 +36,12 @@
   Dir.chdir(tarfile)
 
   if FileTest.file?("tar2rubyscript.bat")
-    puts "\".\\tar2rubyscript.bat\""
+    $stderr.puts "\".\\tar2rubyscript.bat\""
     system(".\\tar2rubyscript.bat")
   end
 
   if FileTest.file?("tar2rubyscript.sh")
-    puts "\". ./tar2rubyscript.sh\""
+    $stderr.puts "\". ./tar2rubyscript.sh\""
     system("sh -c \". ./tar2rubyscript.sh\"")
   end
 
diff -ur tar2rubyscript-0.3.4.tar.gz/tar2rubyscript/tarrubyscript.rb tar2rubyscript-0.3.5.tar.gz/tar2rubyscript/tarrubyscript.rb
--- tar2rubyscript-0.3.4.tar.gz/tar2rubyscript/tarrubyscript.rb	2003-10-22 18:52:06.000000000 +0200
+++ tar2rubyscript-0.3.5.tar.gz/tar2rubyscript/tarrubyscript.rb	2003-10-28 22:47:30.000000000 +0100
@@ -19,6 +19,7 @@
 # Tar2RubyScript constants
 
 JustExtract	= ARGV.include?("--tar2rubyscript-justextract")
+ToTar		= ARGV.include?("--tar2rubyscript-totar")
 
 ARGV.concat	[]
 
@@ -41,8 +42,12 @@
 UNAMELEN	= 32
 GNAMELEN	= 32
 DEVLEN		= 8
+
 TMAGIC		= ´ustar´
 GNU_TMAGIC	= ´ustar  ´
+SOLARIS_TMAGIC	= ´ustar00´
+
+MAGICS		= [TMAGIC, GNU_TMAGIC, SOLARIS_TMAGIC]
 
 LF_OLDFILE	= ´\0´
 LF_FILE		= ´0´
@@ -157,7 +162,7 @@
       raise "Couldn´t determine a real value for a field (#{field})"
     end
 
-    raise "Magic header value ´#{@magic}´ is invalid."	if @magic != TMAGIC and @magic != GNU_TMAGIC
+    raise "Magic header value ´#{@magic}´ is invalid."	if not MAGICS.include?(@magic)
 
     @linkflag	= LF_FILE			if @linkflag == LF_OLDFILE or @linkflag == LF_CONTIG
     @linkflag	= LF_DIR			if @name[-1] == ´/´ and @linkflag == LF_FILE
@@ -184,10 +189,12 @@
     @tempdir	= "#{temp}/tar2rubyscript.d.#{Process.pid}"
     @tempfile	= "#{temp}/tar2rubyscript.f.#{Process.pid}"
 
+    @@tempspace	= self
+
     @newdir=@tempdir
   end
 
-  def run
+  def extract
     Dir.mkdir(@tempdir)	if not FileTest.exists?(@tempdir)
 
     newlocation do
@@ -233,14 +240,6 @@
       recursivedelete(@tempfile)
       recursivedelete(@tempdir)
     end
-
-		# Execute init.rb .
-
-    newlocation do
-      File.open("init.rb") do |f|
-        instance_eval(f.read)
-      end
-    end
   end
 
   def recursivedelete(entry)
@@ -288,6 +287,22 @@
 
     res
   end
+
+  def self.oldlocation(file="")
+    if block_given?
+      @@tempspace.oldlocation { yield }
+    else
+      @@tempspace.oldlocation(file)
+    end
+  end
+
+  def self.newlocation(file="")
+    if block_given?
+      @@tempspace.newlocation { yield }
+    else
+      @@tempspace.newlocation(file)
+    end
+  end
 end
 
 class Extract
@@ -300,24 +315,51 @@
 
   def extract
     begin
-
-		# Create the temp environment.
-
       File.open(@tempfile, "wb")	{|f| f.write @archive}
       File.open(@tempfile, "rb")	{|f| Reader.new(f).extract}
-
     ensure
+      File.delete(@tempfile)
+    end
+  end
+end
 
-		# Remove the temp environment.
+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(/\.rb$/, ".tar")
+  end
 
-      File.delete(@tempfile)
+  def extract
+      File.open(@tarfile, "wb")	{|f| f.write @archive}
+  end
+end
 
-    end
+def oldlocation(file="")
+  if block_given?
+    TempSpace.oldlocation { yield }
+  else
+    TempSpace.oldlocation(file)
+  end
+end
+
+def newlocation(file="")
+  if block_given?
+    TempSpace.newlocation { yield }
+  else
+    TempSpace.newlocation(file)
   end
 end
 
 if JustExtract
   Extract.new.extract
 else
-  TempSpace.new.run
+  if ToTar
+    MakeTar.new.extract
+  else
+    TempSpace.new.extract
+
+    newlocation do
+      load "init.rb"
+    end
+  end
 end