diff -ur rubyscript2exe-0.1.4.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.1.5.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.1.4.tar.gz/rubyscript2exe/eee.pas	2003-10-20 21:15:29.000000000 +0200
+++ rubyscript2exe-0.1.5.tar.gz/rubyscript2exe/eee.pas	2003-10-26 18:51:45.000000000 +0100
@@ -1,3 +1,5 @@
+{$mode DELPHI}
+
 uses
 
   Dos;
@@ -27,6 +29,8 @@
   klasse	: string[1];
   tekst		: string[255];
   s		: string[255];
+  c		: string[255];
+  p		: string[255];
   b		: array[0..10000000] of byte;
   h		: header;
   t		: tail;
@@ -212,13 +216,19 @@
         end;
 
         if (h.klasse = ´c´) then begin
-          exec(getenv(´COMSPEC´), ´/c ´ + h.tekst);
+          i	:= pos(´ ´, h.tekst);
+          c	:= copy(h.tekst, 1, i-1);
+          p	:= copy(h.tekst, i+1, 255);
+          exec(c, p);
         end;
 
         if (h.klasse = ´t´) then begin
           getdir(0, dir);
           chdir(workdir);
-            exec(getenv(´COMSPEC´), ´/c ´ + h.tekst);
+            i	:= pos(´ ´, h.tekst);
+            c	:= copy(h.tekst, 1, i-1);
+            p	:= copy(h.tekst, i+1, 255);
+            exec(c, p);
           chdir(dir);
         end;
       end;
diff -ur rubyscript2exe-0.1.4.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb rubyscript2exe-0.1.5.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb
--- rubyscript2exe-0.1.4.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2003-10-20 21:44:17.000000000 +0200
+++ rubyscript2exe-0.1.5.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2003-10-29 17:05:57.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 rubyscript2exe-0.1.4.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.1.5.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.1.4.tar.gz/rubyscript2exe/init.rb	2003-10-20 21:17:22.000000000 +0200
+++ rubyscript2exe-0.1.5.tar.gz/rubyscript2exe/init.rb	2003-10-27 23:57:39.000000000 +0100
@@ -3,12 +3,21 @@
 
 app	= ARGV.shift
 
+RubyW	= ARGV.include?("--rubyscript2exe-rubyw")
+
+ARGV.delete_if do |arg|
+  arg =~ /^--rubyscript2exe-/
+end
+
 Config::CONFIG["bindir"].gsub!(/\//, "\\")
 Config::CONFIG["LIBRUBY_SO"].gsub!(/\//, "\\")
 
 olddir	= oldlocation.gsub!(/\//, "\\")
 newdir	= newlocation.gsub!(/\//, "\\")
 
+ruby	= "ruby"
+ruby	= "rubyw"	if RubyW
+
 if not app.nil?
   app	= app.dup.gsub(/\.rb$/, "")
 
@@ -18,53 +27,40 @@
     tar = FileTest.file?("tar.exe")
     system("copy #{newdir}\\tar.exe . > nul:")	if not tar
 
-    system("ruby -r #{newdir}\\require2tar.rb #{app}.rb #{ARGV.join(" ")}")	# eval ???
+    system("#{Config::CONFIG["bindir"]}\\ruby -r #{newdir}\\require2tar.rb #{app}.rb #{ARGV.join(" ")}")	# eval ???
 
     system("del tar.exe > nul:")		if not tar
   end
 
   puts "Gathering files..."
 
-  system("copy #{Config::CONFIG["bindir"]}\\ruby.exe . > nul:")
-  system("copy #{Config::CONFIG["bindir"]}\\rubyw.exe . > nul:")
+  system("copy #{Config::CONFIG["bindir"]}\\#{ruby}.exe . > nul:")
   system("copy #{Config::CONFIG["bindir"]}\\#{Config::CONFIG["LIBRUBY_SO"]} . > nul:")
   system("move #{olddir}\\rubyrequired.tar . > nul:")
   system("copy #{olddir}\\#{app}.rb app.rb > nul:")
 
   puts "Packing..."
 
-  system("gzip #{Config::CONFIG["LIBRUBY_SO"]}")
-  system("gzip rubyrequired.tar")
-  system("gzip app.rb")
+  system("#{Config::CONFIG["bindir"]}\\ruby tar2rubyscript.rb rubyrequired.tar")
 
   File.open("app.eee", "w") do |f|
-    f.puts "f gzip.exe"
-    f.puts "f tar.exe"
-    f.puts "f ruby.exe"
-    f.puts "f rubyw.exe"
-    f.puts "f #{Config::CONFIG["LIBRUBY_SO"]}.gz"
-    f.puts "f rubyrequired.tar.gz"
-    f.puts "f app.rb.gz"
-
-    f.puts "t gzip -d #{Config::CONFIG["LIBRUBY_SO"]}.gz"
-    f.puts "t gzip -d rubyrequired.tar.gz"
-    f.puts "t gzip -d app.rb.gz"
+    f.puts "f #{ruby}.exe"
+    f.puts "f #{Config::CONFIG["LIBRUBY_SO"]}"
+    f.puts "f rubyrequired.rb"
+    f.puts "f app.rb"
 
-    f.puts "t tar xf rubyrequired.tar"
+    f.puts "t #{ruby} rubyrequired.rb --tar2rubyscript-justextract"
 
-    f.puts "c %tempdir%\\ruby -I %tempdir%\\rubyrequired %tempdir%\\app.rb %parms%"
+    f.puts "c %tempdir%\\#{ruby} -I %tempdir%\\rubyrequired %tempdir%\\app.rb %parms%"
   end
 
   puts "Creating #{app}.exe..."
 
-  system("eee.exe app.eee #{olddir}\\#{app}.exe")
-
-  system("del ruby.exe > nul:")
-  system("del rubyw.exe > nul:")
-  system("del #{Config::CONFIG["LIBRUBY_SO"]}.gz > nul:")
-  system("del rubyrequired.tar.gz > nul:")
-  system("del app.rb.gz > nul:")
-  system("del app.eee > nul:")
+  if RubyW
+    system("eeew.exe app.eee #{olddir}\\#{app}.exe")
+  else
+    system("eee.exe app.eee #{olddir}\\#{app}.exe")
+  end
 end
 
 # def copy	???
diff -ur rubyscript2exe-0.1.4.tar.gz/rubyscript2exe/tar2rubyscript.rb rubyscript2exe-0.1.5.tar.gz/rubyscript2exe/tar2rubyscript.rb
--- rubyscript2exe-0.1.4.tar.gz/rubyscript2exe/tar2rubyscript.rb	2003-10-29 17:05:58.000000000 +0100
+++ rubyscript2exe-0.1.5.tar.gz/rubyscript2exe/tar2rubyscript.rb	2003-10-29 17:05:57.000000000 +0100
@@ -0,0 +1,81 @@
+require "ev/oldandnewlocation"
+
+scriptfile	= "tarrubyscript.rb"
+tarfile		= oldlocation(ARGV.shift)
+rbfile		= oldlocation(ARGV.shift)
+licensefile	= oldlocation(ARGV.shift)
+
+if tarfile.nil?
+  exit 1
+end
+
+tarfile.dup.gsub!(/[\/\\]$/, "")
+
+if not FileTest.exist?(tarfile)
+  $stderr.puts "#{tarfile} doesn´t exist."
+  exit
+end
+
+if not licensefile.nil? and not FileTest.file?(licensefile)
+  $stderr.puts "#{licensefile} doesn´t exist."
+  exit
+end
+
+script	= nil
+archive	= nil
+
+File.open(scriptfile)			{|f| script	= f.read}
+
+if FileTest.file?(tarfile)
+  File.open(tarfile, "rb")		{|f| archive	= [f.read].pack("m").split("\n").collect{|s| "# " + s}.join("\n")}
+end
+
+if FileTest.directory?(tarfile)
+  orgdir	= Dir.pwd
+
+  Dir.chdir(tarfile)
+
+  if FileTest.file?("tar2rubyscript.bat")
+    $stderr.puts "\".\\tar2rubyscript.bat\""
+    system(".\\tar2rubyscript.bat")
+  end
+
+  if FileTest.file?("tar2rubyscript.sh")
+    $stderr.puts "\". ./tar2rubyscript.sh\""
+    system("sh -c \". ./tar2rubyscript.sh\"")
+  end
+
+  Dir.chdir("..")
+
+  begin
+    tar	= "tar"
+    IO.popen("#{tar} ch #{tarfile.sub(/.*[\/\\]/, "")}", "rb")	{|f| archive	= [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")}
+  end
+
+  Dir.chdir(orgdir)
+end
+
+if not licensefile.nil?
+  lic	= nil	; File.open(licensefile)	{|f| lic	= f.readlines}
+
+  lic.collect! do |line|
+    line.gsub!(/[\r\n]/, "")
+    line	= "# #{line}"	unless line =~ /^[ \t]*#/
+    line
+  end
+
+  script	= "# License, not of this script, but of the application it contains:\n#\n" + lic.join("\n") + "\n\n" + script
+end
+
+rbfile	= tarfile.gsub(/\.tar$/, "") + ".rb"	if (rbfile.nil? or File.basename(rbfile) == "-")
+
+File.open(rbfile, "wb") do |f|
+  f.write script
+  f.write "\n"
+  f.write "\n"
+  f.write archive
+  f.write "\n"
+end
diff -ur rubyscript2exe-0.1.4.tar.gz/rubyscript2exe/tarrubyscript.rb rubyscript2exe-0.1.5.tar.gz/rubyscript2exe/tarrubyscript.rb
--- rubyscript2exe-0.1.4.tar.gz/rubyscript2exe/tarrubyscript.rb	2003-10-29 17:05:58.000000000 +0100
+++ rubyscript2exe-0.1.5.tar.gz/rubyscript2exe/tarrubyscript.rb	2003-10-29 17:05:57.000000000 +0100
@@ -0,0 +1,365 @@
+# License of this script, not of the application it contains:
+#
+# Copyright Erik Veenstra <tar2rubyscript@erikveen.dds.nl>
+# 
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License,
+# version 2, as published by the Free Software Foundation.
+# 
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 59 Temple Place, Suite 330,
+# Boston, MA 02111-1307 USA.
+
+# Tar2RubyScript constants
+
+JustExtract	= ARGV.include?("--tar2rubyscript-justextract")
+ToTar		= ARGV.include?("--tar2rubyscript-totar")
+
+ARGV.concat	[]
+
+ARGV.delete_if do |arg|
+  arg =~ /^--tar2rubyscript-/
+end
+
+# Tar constants
+
+BLOCKSIZE	= 512
+
+NAMELEN		= 100
+MODELEN		= 8
+UIDLEN		= 8
+GIDLEN		= 8
+CHKSUMLEN	= 8
+SIZELEN		= 12
+MAGICLEN	= 8
+MODTIMELEN	= 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´
+LF_LINK		= ´1´
+LF_SYMLINK	= ´2´
+LF_CHAR		= ´3´
+LF_BLOCK	= ´4´
+LF_DIR		= ´5´
+LF_FIFO		= ´6´
+LF_CONTIG	= ´7´
+
+class Reader
+  def initialize(filehandle)
+    @fp	= filehandle
+  end
+
+  def extract
+    each do |entry|
+      entry.extract
+    end
+  end
+
+  def each
+    @fp.rewind
+
+    while entry	= next_entry
+      yield(entry)
+    end
+  end
+
+  def next_entry
+    buf	= @fp.read(BLOCKSIZE)
+
+    if buf.length < BLOCKSIZE or buf == "\000" * BLOCKSIZE
+      entry	= nil
+    else
+      entry	= Entry.new(buf, @fp)
+    end
+
+    entry
+  end
+end
+
+class Entry
+  attr_reader(:header, :data)
+
+  def initialize(header, fp)
+    @header	= Header.new(header)
+
+    if @header.file?
+      padding	= (BLOCKSIZE - (@header.size % BLOCKSIZE)) % BLOCKSIZE
+
+      @data	= fp.read(@header.size)	if @header.size > 0
+      dummy	= fp.read(padding)	if padding > 0
+    end
+  end
+
+  def extract
+    if not @header.name.empty?
+      if @header.dir?
+        begin
+          Dir.mkdir(@header.name, @header.mode)
+        rescue SystemCallError => e
+          puts "Couldn´t create dir #{@header.name}: " + e.message
+        end
+      else
+        if @header.file?
+          begin
+            File.open(@header.name, "wb") do |fp|
+              fp.write(@data)
+              fp.chmod(@header.mode)
+            end
+          rescue => e
+            puts "Couldn´t create file #{@header.name}: " + e.message
+          end
+        else
+          puts "Couldn´t handle entry #{@header.name}"
+        end
+      end
+
+      #File.chown(@header.uid, @header.gid, @header.name)
+      #File.utime(Time.now, @header.mtime, @header.name)
+    end
+  end
+end
+
+class Header
+  attr_reader(:name, :uid, :gid, :size, :mtime, :uname, :gname, :mode)
+
+  def initialize(header)
+    fields	= header.unpack(´A100 A8 A8 A8 A12 A12 A8 A1 A100 A8 A32 A32 A8 A8´)
+    types	= [´str´, ´oct´, ´oct´, ´oct´, ´oct´, ´time´, ´oct´, ´str´, ´str´, ´str´, ´str´, ´str´, ´oct´, ´oct´]
+
+    begin
+      converted	= []
+      while field = fields.shift
+        type	= types.shift
+
+        case type
+        when ´str´	then converted.push(field)
+        when ´oct´	then converted.push(field.oct)
+        when ´time´	then converted.push(Time::at(field.oct))
+        end
+      end
+
+      @name, @mode, @uid, @gid, @size, @mtime, @chksum, @linkflag, @linkname, @magic, @uname, @gname, @devmajor, @devminor	= converted
+
+      @name.gsub!(/^\.\//, "")
+
+      @raw	= header
+    rescue ArgumentError => e
+      raise "Couldn´t determine a real value for a field (#{field})"
+    end
+
+    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
+    @linkname	= @linkname[1,-1]		if @linkname[0] == ´/´
+    @size	= 0				if @size < 0
+    @name	= @linkname + ´/´ + @name	if @linkname.size > 0
+  end
+
+  def file?
+    @linkflag == LF_FILE
+  end
+
+  def dir?
+    @linkflag == LF_DIR
+  end
+end
+
+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
+    @olddir	= Dir.pwd
+    temp	= ENV["TEMP"]
+    temp	= "/tmp"	if temp.nil?
+    @tempdir	= "#{temp}/tar2rubyscript.d.#{Process.pid}"
+    @tempfile	= "#{temp}/tar2rubyscript.f.#{Process.pid}"
+
+    @@tempspace	= self
+
+    @newdir=@tempdir
+  end
+
+  def extract
+    Dir.mkdir(@tempdir)	if not FileTest.exists?(@tempdir)
+
+    newlocation do
+
+		# Create the temp environment.
+
+      File.open(@tempfile, "wb")	{|f| f.write @archive}
+      File.open(@tempfile, "rb")	{|f| Reader.new(f).extract}
+
+		# Eventually look for a subdirectory.
+
+      entries	= Dir.entries(".")
+      entries.delete(".")
+      entries.delete("..")
+
+      if entries.length == 1
+        entry	= entries.shift.dup
+        if FileTest.directory?(entry)
+          @newdir	= "#{@tempdir}/#{entry}"
+        end
+      end
+    end
+
+		# Remember all File objects.
+
+    @ioobjects	= []
+    ObjectSpace::each_object(File) do |obj|
+      @ioobjects << obj
+    end
+
+    at_exit do
+
+		# Close all File objects, opened in init.rb .
+
+      ObjectSpace::each_object(File) do |obj|
+        obj.close	if (not obj.closed? and not @ioobjects.include?(obj))
+      end
+
+		# Remove the temp environment.
+
+      Dir.chdir(@olddir)
+
+      recursivedelete(@tempfile)
+      recursivedelete(@tempdir)
+    end
+  end
+
+  def recursivedelete(entry)
+    if FileTest.file?(entry)
+      File.delete(entry)
+    end
+
+    if FileTest.directory?(entry)
+      pdir = Dir.pwd
+
+      Dir.chdir(entry)
+        Dir.new(".").each do |e|
+          recursivedelete(e)	if not [".", ".."].include?(e)
+        end
+      Dir.chdir(pdir)
+
+      Dir.rmdir(entry)
+    end
+  end
+
+  def oldlocation(file="")
+    if block_given?
+      pdir	= Dir.pwd
+
+      Dir.chdir(@olddir)
+        res	= yield
+      Dir.chdir(pdir)
+    else
+      res	= File.expand_path(file, @olddir)	if not file.nil?
+    end
+
+    res
+  end
+
+  def newlocation(file="")
+    if block_given?
+      pdir	= Dir.pwd
+
+      Dir.chdir(@newdir)
+        res	= yield
+      Dir.chdir(pdir)
+    else
+      res	= File.expand_path(file, @newdir)	if not file.nil?
+    end
+
+    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
+  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
+    temp	= ENV["TEMP"]
+    temp	= "/tmp"	if temp.nil?
+    @tempfile	= "#{temp}/tar2rubyscript.f.#{Process.pid}"
+  end
+
+  def extract
+    begin
+      File.open(@tempfile, "wb")	{|f| f.write @archive}
+      File.open(@tempfile, "rb")	{|f| Reader.new(f).extract}
+    ensure
+      File.delete(@tempfile)
+    end
+  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(/\.rb$/, ".tar")
+  end
+
+  def extract
+      File.open(@tarfile, "wb")	{|f| f.write @archive}
+  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
+  if ToTar
+    MakeTar.new.extract
+  else
+    TempSpace.new.extract
+
+    newlocation do
+      load "init.rb"
+    end
+  end
+end
Binary files rubyscript2exe-0.1.4.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.1.5.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.1.4.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.1.5.tar.gz/rubyscript2exe/eeew.exe differ
Binary files rubyscript2exe-0.1.4.tar.gz/rubyscript2exe/gzip.exe and rubyscript2exe-0.1.5.tar.gz/rubyscript2exe/gzip.exe differ