diff -ur rubyscript2exe-none.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.1.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-none.tar.gz/rubyscript2exe/eee.pas	2007-05-30 10:17:16.000000000 +0200
+++ rubyscript2exe-0.1.tar.gz/rubyscript2exe/eee.pas	2003-10-19 19:55:59.000000000 +0200
@@ -0,0 +1,216 @@
+uses
+
+  Dos;
+
+type
+
+  header =	record
+		  klasse	: string[1];
+		  tekst		: string[255];
+		  length	: longint;
+		end;
+
+  tail =	record
+		  length	: longint;
+		  number	: longint;
+		  who		: string[255];
+		end;
+
+var
+
+  tempdir	: string;
+  workdir	: string;
+  me		: string;
+  infile	: file of byte;
+  outfile	: file of byte;
+  eeefile	: Text;
+  klasse	: string[1];
+  tekst		: string[255];
+  s		: string[255];
+  b		: array[0..10000000] of byte;
+  h		: header;
+  t		: tail;
+  teller	: longint;
+  i		: longint;
+  dir		: string;
+  parms		: string;
+
+begin
+
+  tempdir	:= 'c:\tmp';
+  tempdir	:= getenv('TEMP');
+
+  me		:= 'Dit is mij herkennigsstring';
+
+  parms		:= '';
+  for teller := 1 to paramcount do begin
+    if (parms = '') then begin
+      parms	:= paramstr(teller);
+    end
+    else begin
+      parms	:= parms + ' ' + paramstr(teller);
+    end;
+  end;
+
+  filemode	:= 0;
+
+  assign(infile, paramstr(0));
+  reset(infile, 1);
+  blockread(infile, b, filesize(infile)-sizeof(t));
+  blockread(infile, t, sizeof(t));
+  close(infile);
+
+  if (t.who <> me) then begin
+
+		// Pak in.
+
+    assign(outfile, paramstr(2));
+    rewrite(outfile, 1);
+
+    assign(eeefile, paramstr(1));
+    reset(eeefile);
+
+    assign(infile, paramstr(0));
+    reset(infile, 1);
+    blockread(infile, b, sizeof(b), t.length);
+    blockwrite(outfile, b, t.length);
+    close(infile);
+
+    t.number	:= 0;
+
+    repeat
+      readln(eeefile, s);
+
+      if (not (s = '') and not (copy(s, 1, 1) = '#')) then begin
+        klasse	:= copy(s, 1, 1);
+        tekst	:= copy(s, 3, 255);
+
+        if (klasse = 'f') then begin
+          h.klasse	:= klasse;
+          h.tekst	:= tekst;
+
+          // writeln(h.klasse, ' ', h.tekst);
+
+          assign(infile, h.tekst);
+          reset(infile, 1);
+
+          h.length	:= filesize(infile);
+
+          blockread(infile, b, sizeof(b), h.length);
+
+          blockwrite(outfile, h, sizeof(h));
+          blockwrite(outfile, b, h.length);
+
+          close(infile);
+        end;
+
+        if (klasse = 'c') then begin
+          h.klasse	:= klasse;
+          h.tekst	:= tekst;
+          h.length	:= 0;
+
+          // writeln(h.klasse, ' ', h.tekst);
+
+          blockwrite(outfile, h, sizeof(h));
+        end;
+
+        if (klasse = 't') then begin
+          h.klasse	:= klasse;
+          h.tekst	:= tekst;
+          h.length	:= 0;
+
+          // writeln(h.klasse, ' ', h.tekst);
+
+          blockwrite(outfile, h, sizeof(h));
+        end;
+
+        t.number	:= t.number + 1;
+      end;
+    until eof(eeefile);
+
+    t.who	:= me;
+
+    blockwrite(outfile, t, sizeof(t));
+
+    close(eeefile);
+
+    close(outfile);
+
+  end
+
+  else begin
+
+		// Pak uit.
+
+    randomize;
+
+    getdir(0, dir);
+    chdir(tempdir);
+      {$I-}
+        repeat
+          str(random(1000), s);
+          workdir	:= 'eee.' + s;
+          mkdir(workdir);
+        until (ioresult = 0);
+      {$I+}
+
+      workdir	:= tempdir + '\' + workdir;
+    chdir(dir);
+
+    assign(infile, paramstr(0));
+    reset(infile, 1);
+    blockread(infile, b, t.length);
+
+    try
+
+      for teller := 1 to t.number do begin
+        blockread(infile, h, sizeof(h));
+
+        s		:= '%tempdir%';
+        i		:= pos(s, h.tekst);
+        while (i > 0) do begin
+          h.tekst	:= copy(h.tekst, 1, i-1) + workdir + copy(h.tekst, i+length(s), 255);
+          i	:= pos(s, h.tekst);
+        end;
+
+        s		:= '%parms%';
+        i		:= pos(s, h.tekst);
+        while (i > 0) do begin
+          h.tekst	:= copy(h.tekst, 1, i-1) + parms + copy(h.tekst, i+length(s), 255);
+          i	:= pos(s, h.tekst);
+        end;
+
+        // writeln(h.klasse, ' ', h.tekst);
+
+        if (h.klasse = 'f') then begin
+          blockread(infile, b, h.length);
+
+          assign(outfile, workdir + '\' + h.tekst);
+          rewrite(outfile, 1);
+          blockwrite(outfile, b, h.length);
+          close(outfile);
+        end;
+
+        if (h.klasse = 'c') then begin
+          exec(getenv('COMSPEC'), '/c ' + h.tekst);
+        end;
+
+        if (h.klasse = 't') then begin
+          getdir(0, dir);
+          chdir(workdir);
+            exec(getenv('COMSPEC'), '/c ' + h.tekst);
+          chdir(dir);
+        end;
+      end;
+
+    finally
+
+      close(infile);
+
+      exec(getenv('COMSPEC'), '/c deltree /y ' + workdir + ' > nul:');
+
+    end;
+
+  end;
+
+end.
diff -ur rubyscript2exe-none.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb rubyscript2exe-0.1.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb
--- rubyscript2exe-none.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2007-05-30 10:17:16.000000000 +0200
+++ rubyscript2exe-0.1.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2003-10-17 22:08:37.000000000 +0200
@@ -0,0 +1,19 @@
+def oldlocation(file="")
+  if block_given?
+    res	= yield
+  else
+    res	= File.expand_path(file, ".")	if not file.nil?
+  end
+
+  res
+end
+
+def newlocation(file="")
+  if block_given?
+    res	= yield
+  else
+    res	= File.expand_path(file, ".")	if not file.nil?
+  end
+
+  res
+end
diff -ur rubyscript2exe-none.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.1.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-none.tar.gz/rubyscript2exe/init.rb	2007-05-30 10:17:16.000000000 +0200
+++ rubyscript2exe-0.1.tar.gz/rubyscript2exe/init.rb	2003-10-17 22:08:37.000000000 +0200
@@ -0,0 +1,77 @@
+require "ev/oldandnewlocation"
+require "rbconfig"
+
+app	= ARGV.shift
+
+Config::CONFIG["bindir"].gsub!(/\//, "\\")
+Config::CONFIG["LIBRUBY_SO"].gsub!(/\//, "\\")
+
+olddir	= oldlocation.gsub!(/\//, "\\")
+newdir	= newlocation.gsub!(/\//, "\\")
+
+if not app.nil?
+  app	= app.dup.gsub(/\.rb$/, "")
+
+  puts "Gathering files..."
+
+  system("copy #{Config::CONFIG["bindir"]}\\ruby.exe . > nul:")
+  system("copy #{Config::CONFIG["bindir"]}\\rubyw.exe . > nul:")
+  system("copy #{Config::CONFIG["bindir"]}\\#{Config::CONFIG["LIBRUBY_SO"]} . > nul:")
+
+  system("copy #{olddir}\\#{app}.rb app.rb > nul:")
+
+  puts "Tracing #{app} ..."
+
+  oldlocation do
+    tar = FileTest.file?("tar.exe")
+    system("copy #{newdir}\\tar.exe . > nul:")	if not tar
+
+    system("ruby -r #{newdir}\\require2tar.rb #{app}.rb #{ARGV.join(" ")}")
+
+    system("del tar.exe > nul:")		if not tar
+  end
+
+  system("move #{olddir}\\rubyrequired.tar . > nul:")
+
+  puts "Packing..."
+
+  system("gzip #{Config::CONFIG["LIBRUBY_SO"]}")
+  system("gzip rubyrequired.tar")
+  system("gzip app.rb")
+
+  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 "t tar xf rubyrequired.tar"
+
+    f.puts "c %tempdir%\\ruby -I %tempdir%\\rubyrequired %tempdir%\\app.rb %parms%"
+  end
+
+  if FileTest.file?("c:\\gnu\\root\\bin\\win32\\fpc.exe")
+    puts "Creating eee.exe ..."
+
+    system("c:\\gnu\\root\\bin\\win32\\fpc.exe -gl -S2 eee")
+    system("copy eee.exe s:\\ > nul:")
+  end
+
+  puts "Creating #{app}.exe ..."
+
+  system("eee.exe app.eee #{olddir}\\#{app}.exe")
+
+  system("del ruby.exe")
+  system("del rubyw.exe")
+  system("del #{Config::CONFIG["LIBRUBY_SO"]}.gz")
+  system("del rubyrequired.tar.gz")
+  system("del app.rb.gz")
+  system("del app.eee")
+end
diff -ur rubyscript2exe-none.tar.gz/rubyscript2exe/LICENSE rubyscript2exe-0.1.tar.gz/rubyscript2exe/LICENSE
--- rubyscript2exe-none.tar.gz/rubyscript2exe/LICENSE	2007-05-30 10:17:16.000000000 +0200
+++ rubyscript2exe-0.1.tar.gz/rubyscript2exe/LICENSE	2003-10-17 22:08:10.000000000 +0200
@@ -0,0 +1,15 @@
+# Copyright Erik Veenstra <rubyscript2exe@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.
diff -ur rubyscript2exe-none.tar.gz/rubyscript2exe/README rubyscript2exe-0.1.tar.gz/rubyscript2exe/README
--- rubyscript2exe-none.tar.gz/rubyscript2exe/README	2007-05-30 10:17:16.000000000 +0200
+++ rubyscript2exe-0.1.tar.gz/rubyscript2exe/README	2003-10-17 22:07:54.000000000 +0200
@@ -0,0 +1,4 @@
+Usage: ruby init.rb application[.rb]
+
+For more information, see
+http://www.erikveen.dds.nl/rubyscript2tar/ .
diff -ur rubyscript2exe-none.tar.gz/rubyscript2exe/require2tar.rb rubyscript2exe-0.1.tar.gz/rubyscript2exe/require2tar.rb
--- rubyscript2exe-none.tar.gz/rubyscript2exe/require2tar.rb	2007-05-30 10:17:16.000000000 +0200
+++ rubyscript2exe-0.1.tar.gz/rubyscript2exe/require2tar.rb	2003-10-17 22:08:37.000000000 +0200
@@ -0,0 +1,110 @@
+JustCopy	= ARGV.include?("--require2tar-justcopy")
+JustEV		= ARGV.include?("--require2tar-justev")
+
+ARGV.delete_if do |arg|
+  arg =~ /^--require2tar-/
+end
+
+at_exit do
+  include Require
+
+  createtar
+end
+
+module Require
+
+  def createtar
+    temp	= ENV["TEMP"]
+    temp	= "/tmp"	if temp.nil?
+    tmpdir	= File.expand_path("rubyrequired2tar.#{Process.pid}", temp)
+    tardir	= "rubyrequired"
+    tarfile	= "rubyrequired.tar"
+    todir	= File.expand_path(tardir, tmpdir)
+
+    mkdirs("#{todir}/")
+
+    $".delete_if{|req| not req =~ /^ev\//}	if JustEV
+
+    $".each do |req|
+      found	= false
+
+      $:.each do |lib|
+        if not found
+          file	= File.expand_path(req, lib)
+          if FileTest.file?(file)
+            found		= true
+            fromfile	= file
+            tofile	= File.expand_path(req, todir)
+            tofile	= req	if JustCopy
+
+            #puts "Found #{fromfile} ."
+
+            copy(fromfile, tofile)
+          end
+        end
+      end
+
+      if not found
+        puts "Can't find #{req} ."
+      end
+    end
+
+    if not JustCopy
+      copy("tar.exe", File.expand_path("tar.exe", tmpdir))	if FileTest.file?("tar.exe")
+
+      pdir	= Dir.pwd
+      s		= "tar chf #{File.expand_path(tarfile)} #{tardir}"
+      Dir.chdir(tmpdir)
+        puts "Creating #{tarfile} ..."
+
+        system(s)
+      Dir.chdir(pdir)
+    end
+
+    recursivedelete(tmpdir)
+  end
+
+  def copy(fromfile, tofile)
+    mkdirs(tofile)
+
+    if not FileTest.file?(tofile)
+      File.open(tofile, "wb") do |f|
+        f.write(File.new(fromfile, "rb").read)
+      end
+    end
+  end
+
+  def mkdirs(file)
+    dir, file	= file.gsub(/[\/\\]/, "/").split(/\//, 2)
+
+    if not file.nil?
+      dir	= "#{dir}/"
+
+      Dir.mkdir(dir)	if not FileTest.directory?(dir)
+
+      pdir = Dir.pwd
+      Dir.chdir(dir)
+        mkdirs(file)
+      Dir.chdir(pdir)
+    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
+
+end
diff -ur rubyscript2exe-none.tar.gz/rubyscript2exe/tar2rubyscript.rb rubyscript2exe-0.1.tar.gz/rubyscript2exe/tar2rubyscript.rb
--- rubyscript2exe-none.tar.gz/rubyscript2exe/tar2rubyscript.rb	2007-05-30 10:17:16.000000000 +0200
+++ rubyscript2exe-0.1.tar.gz/rubyscript2exe/tar2rubyscript.rb	2003-10-17 22:08:37.000000000 +0200
@@ -0,0 +1,81 @@
+scriptfile	= ARGV.shift
+tarfile		= ARGV.shift
+rbfile		= ARGV.shift
+licensefile	= ARGV.shift
+
+tarfile.dup.gsub!(/[\/\\]$/, "")
+
+if tarfile.nil?
+  puts "Usage: ruby tar2rubyscript.rb application.tar [application.rb [license.txt]]"
+  puts "       or"
+  puts "       ruby tar2rubyscript.rb application/ [application.rb [license.txt]]"
+  puts ""
+  puts "The second option needs the external program 'tar' for creating"
+  puts "the archive internally."
+
+  exit 1
+end
+
+if not FileTest.exist?(tarfile)
+  puts "#{tarfile} doesn't exist."
+  exit
+end
+
+if not licensefile.nil? and not FileTest.file?(licensefile)
+  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")
+    puts "\".\\tar2rubyscript.bat\""
+    system(".\\tar2rubyscript.bat")
+  end
+
+  if FileTest.file?("tar2rubyscript.sh")
+    puts "\". ./tar2rubyscript.sh\""
+    system("sh -c \". ./tar2rubyscript.sh\"")
+  end
+
+  Dir.chdir("..")
+
+  IO.popen("tar ch #{tarfile.sub(/.*[\/\\]/, "")}", "rb")	{|f| archive	= [f.read].pack("m").split("\n").collect{|s| "# " + s}.join("\n")}
+
+  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-none.tar.gz/rubyscript2exe/tarrubyscript.rb rubyscript2exe-0.1.tar.gz/rubyscript2exe/tarrubyscript.rb
--- rubyscript2exe-none.tar.gz/rubyscript2exe/tarrubyscript.rb	2007-05-30 10:17:16.000000000 +0200
+++ rubyscript2exe-0.1.tar.gz/rubyscript2exe/tarrubyscript.rb	2003-10-17 22:08:37.000000000 +0200
@@ -0,0 +1,305 @@
+# Tar2RubyScript constants
+
+JustExtract	= ARGV.include?("--tar2rubyscript-justextract")
+
+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  '
+
+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 @magic != TMAGIC and @magic != GNU_TMAGIC
+
+    @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}"
+
+    @newdir=@tempdir
+  end
+
+  def eval
+    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
+
+		# Execute init.rb .
+
+    newlocation do
+      File.open("init.rb") do |f|
+        instance_eval(f.read)
+      end
+    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
+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
+
+		# Create the temp environment.
+
+      File.open(@tempfile, "wb")	{|f| f.write @archive}
+      File.open(@tempfile, "rb")	{|f| Reader.new(f).extract}
+
+    ensure
+
+		# Remove the temp environment.
+
+      File.delete(@tempfile)
+
+    end
+  end
+end
+
+if JustExtract
+  Extract.new.extract
+else
+  TempSpace.new.eval
+end
Binary files rubyscript2exe-none.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.1.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-none.tar.gz/rubyscript2exe/gzip.exe and rubyscript2exe-0.1.tar.gz/rubyscript2exe/gzip.exe differ
Binary files rubyscript2exe-none.tar.gz/rubyscript2exe/tar.exe and rubyscript2exe-0.1.tar.gz/rubyscript2exe/tar.exe differ
diff -ur rubyscript2exe-0.1.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.1.1.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.1.tar.gz/rubyscript2exe/init.rb	2003-10-17 22:08:37.000000000 +0200
+++ rubyscript2exe-0.1.1.tar.gz/rubyscript2exe/init.rb	2003-10-17 22:58:20.000000000 +0200
@@ -68,10 +68,10 @@
 
   system("eee.exe app.eee #{olddir}\\#{app}.exe")
 
-  system("del ruby.exe")
-  system("del rubyw.exe")
-  system("del #{Config::CONFIG["LIBRUBY_SO"]}.gz")
-  system("del rubyrequired.tar.gz")
-  system("del app.rb.gz")
-  system("del app.eee")
+  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:")
 end
diff -ur rubyscript2exe-0.1.tar.gz/rubyscript2exe/tar2rubyscript.rb rubyscript2exe-0.1.1.tar.gz/rubyscript2exe/tar2rubyscript.rb
--- rubyscript2exe-0.1.tar.gz/rubyscript2exe/tar2rubyscript.rb	2003-10-17 22:08:37.000000000 +0200
+++ rubyscript2exe-0.1.1.tar.gz/rubyscript2exe/tar2rubyscript.rb	2003-10-17 22:58:20.000000000 +0200
@@ -26,7 +26,6 @@
   exit
 end
 
-
 script	= nil
 archive	= nil
 
@@ -53,7 +52,13 @@
 
   Dir.chdir("..")
 
-  IO.popen("tar ch #{tarfile.sub(/.*[\/\\]/, "")}", "rb")	{|f| archive	= [f.read].pack("m").split("\n").collect{|s| "# " + s}.join("\n")}
+  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
diff -ur rubyscript2exe-0.1.1.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.1.2.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.1.1.tar.gz/rubyscript2exe/eee.pas	2003-10-19 19:55:57.000000000 +0200
+++ rubyscript2exe-0.1.2.tar.gz/rubyscript2exe/eee.pas	2003-10-19 19:55:58.000000000 +0200
@@ -35,34 +35,44 @@
   dir		: string;
   parms		: string;
 
-begin
 
-  tempdir	:= 'c:\tmp';
-  tempdir	:= getenv('TEMP');
+procedure recursivedelete(var path: string);
 
-  me		:= 'Dit is mij herkennigsstring';
+var
+  f		: file;
+  sr		: searchrec;
+  dir		: string;
 
-  parms		:= '';
-  for teller := 1 to paramcount do begin
-    if (parms = '') then begin
-      parms	:= paramstr(teller);
+begin
+
+  getdir(0, dir);
+  chdir(path);
+
+  findfirst('*.*', directory, sr);
+  while(doserror = 0) do begin
+    if (sr.attr and directory > 0) then begin
+      if ((not (sr.name = '.')) and (not (sr.name = '..'))) then begin
+        recursivedelete(sr.name);
+      end;
     end
     else begin
-      parms	:= parms + ' ' + paramstr(teller);
+	assign(f, sr.name);
+        erase(f);
     end;
+
+    findnext(sr);
   end;
 
-  filemode	:= 0;
+  chdir(dir);
 
-  assign(infile, paramstr(0));
-  reset(infile, 1);
-  blockread(infile, b, filesize(infile)-sizeof(t));
-  blockread(infile, t, sizeof(t));
-  close(infile);
+  rmdir(path);
+
+end;
 
-  if (t.who <> me) then begin
 
-		// Pak in.
+procedure pakin;
+
+begin
 
     assign(outfile, paramstr(2));
     rewrite(outfile, 1);
@@ -136,11 +146,12 @@
 
     close(outfile);
 
-  end
+end;
 
-  else begin
 
-		// Pak uit.
+procedure pakuit;
+
+begin
 
     randomize;
 
@@ -207,10 +218,43 @@
 
       close(infile);
 
-      exec(getenv('COMSPEC'), '/c deltree /y ' + workdir + ' > nul:');
+      recursivedelete(workdir);
 
     end;
 
+end;
+
+
+begin
+
+  tempdir	:= 'c:\tmp';
+  tempdir	:= getenv('TEMP');
+
+  me		:= 'Dit is mijn herkennigsstring voor het herkennen van pakin of pakuit mode.';
+
+  parms		:= '';
+  for teller := 1 to paramcount do begin
+    if (parms = '') then begin
+      parms	:= paramstr(teller);
+    end
+    else begin
+      parms	:= parms + ' ' + paramstr(teller);
+    end;
+  end;
+
+  filemode	:= 0;
+
+  assign(infile, paramstr(0));
+  reset(infile, 1);
+  blockread(infile, b, filesize(infile)-sizeof(t));
+  blockread(infile, t, sizeof(t));
+  close(infile);
+
+  if (t.who <> me) then begin
+    pakin;
+  end
+  else begin
+    pakuit
   end;
 
 end.
diff -ur rubyscript2exe-0.1.1.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.1.2.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.1.1.tar.gz/rubyscript2exe/init.rb	2003-10-17 22:58:20.000000000 +0200
+++ rubyscript2exe-0.1.2.tar.gz/rubyscript2exe/init.rb	2003-10-19 01:32:37.000000000 +0200
@@ -12,15 +12,7 @@
 if not app.nil?
   app	= app.dup.gsub(/\.rb$/, "")
 
-  puts "Gathering files..."
-
-  system("copy #{Config::CONFIG["bindir"]}\\ruby.exe . > nul:")
-  system("copy #{Config::CONFIG["bindir"]}\\rubyw.exe . > nul:")
-  system("copy #{Config::CONFIG["bindir"]}\\#{Config::CONFIG["LIBRUBY_SO"]} . > nul:")
-
-  system("copy #{olddir}\\#{app}.rb app.rb > nul:")
-
-  puts "Tracing #{app} ..."
+  puts "Tracing #{app}..."
 
   oldlocation do
     tar = FileTest.file?("tar.exe")
@@ -31,7 +23,13 @@
     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"]}\\#{Config::CONFIG["LIBRUBY_SO"]} . > nul:")
   system("move #{olddir}\\rubyrequired.tar . > nul:")
+  system("copy #{olddir}\\#{app}.rb app.rb > nul:")
 
   puts "Packing..."
 
@@ -58,13 +56,13 @@
   end
 
   if FileTest.file?("c:\\gnu\\root\\bin\\win32\\fpc.exe")
-    puts "Creating eee.exe ..."
+    puts "Creating eee.exe..."
 
     system("c:\\gnu\\root\\bin\\win32\\fpc.exe -gl -S2 eee")
     system("copy eee.exe s:\\ > nul:")
   end
 
-  puts "Creating #{app}.exe ..."
+  puts "Creating #{app}.exe..."
 
   system("eee.exe app.eee #{olddir}\\#{app}.exe")
 
diff -ur rubyscript2exe-0.1.1.tar.gz/rubyscript2exe/require2tar.rb rubyscript2exe-0.1.2.tar.gz/rubyscript2exe/require2tar.rb
--- rubyscript2exe-0.1.1.tar.gz/rubyscript2exe/require2tar.rb	2003-10-17 22:58:20.000000000 +0200
+++ rubyscript2exe-0.1.2.tar.gz/rubyscript2exe/require2tar.rb	2003-10-19 01:32:37.000000000 +0200
@@ -55,7 +55,7 @@
       pdir	= Dir.pwd
       s		= "tar chf #{File.expand_path(tarfile)} #{tardir}"
       Dir.chdir(tmpdir)
-        puts "Creating #{tarfile} ..."
+        puts "Creating #{tarfile}..."
 
         system(s)
       Dir.chdir(pdir)
Binary files rubyscript2exe-0.1.1.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.1.2.tar.gz/rubyscript2exe/eee.exe differ
diff -ur rubyscript2exe-0.1.2.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.1.3.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.1.2.tar.gz/rubyscript2exe/eee.pas	2003-10-19 19:55:58.000000000 +0200
+++ rubyscript2exe-0.1.3.tar.gz/rubyscript2exe/eee.pas	2003-10-20 00:18:17.000000000 +0200
@@ -18,9 +18,9 @@
 
 var
 
-  tempdir	: string;
-  workdir	: string;
-  me		: string;
+  tempdir	: string[255];
+  workdir	: string[255];
+  me		: string[255];
   infile	: file of byte;
   outfile	: file of byte;
   eeefile	: Text;
@@ -32,16 +32,16 @@
   t		: tail;
   teller	: longint;
   i		: longint;
-  dir		: string;
-  parms		: string;
+  dir		: string[255];
+  parms		: string[255];
 
 
-procedure recursivedelete(var path: string);
+procedure recursivedelete(var path: string[255]);
 
 var
   f		: file;
   sr		: searchrec;
-  dir		: string;
+  dir		: string[255];
 
 begin
 
diff -ur rubyscript2exe-0.1.2.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb rubyscript2exe-0.1.3.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb
--- rubyscript2exe-0.1.2.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2003-10-19 01:32:37.000000000 +0200
+++ rubyscript2exe-0.1.3.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2003-10-20 00:34:38.000000000 +0200
@@ -1,18 +1,38 @@
 def oldlocation(file="")
+  if ENV.include?("OLDDIR")
+    dir	= ENV["OLDDIR"]
+  else
+    dir	= "."
+  end
+
   if block_given?
-    res	= yield
+    pdir	= Dir.pwd
+
+    Dir.chdir(dir)
+      res	= yield
+    Dir.chdir(pdir)
   else
-    res	= File.expand_path(file, ".")	if not file.nil?
+    res	= File.expand_path(file, dir)	if not file.nil?
   end
 
   res
 end
 
 def newlocation(file="")
+  if ENV.include?("NEWDIR")
+    dir	= ENV["NEWDIR"]
+  else
+    dir	= "."
+  end
+
   if block_given?
-    res	= yield
+    pdir	= Dir.pwd
+
+    Dir.chdir(dir)
+      res	= yield
+    Dir.chdir(pdir)
   else
-    res	= File.expand_path(file, ".")	if not file.nil?
+    res	= File.expand_path(file, dir)	if not file.nil?
   end
 
   res
diff -ur rubyscript2exe-0.1.2.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.1.3.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.1.2.tar.gz/rubyscript2exe/init.rb	2003-10-19 01:32:37.000000000 +0200
+++ rubyscript2exe-0.1.3.tar.gz/rubyscript2exe/init.rb	2003-10-20 00:27:49.000000000 +0200
@@ -55,13 +55,6 @@
     f.puts "c %tempdir%\\ruby -I %tempdir%\\rubyrequired %tempdir%\\app.rb %parms%"
   end
 
-  if FileTest.file?("c:\\gnu\\root\\bin\\win32\\fpc.exe")
-    puts "Creating eee.exe..."
-
-    system("c:\\gnu\\root\\bin\\win32\\fpc.exe -gl -S2 eee")
-    system("copy eee.exe s:\\ > nul:")
-  end
-
   puts "Creating #{app}.exe..."
 
   system("eee.exe app.eee #{olddir}\\#{app}.exe")
diff -ur rubyscript2exe-0.1.2.tar.gz/rubyscript2exe/tar2rubyscript.rb rubyscript2exe-0.1.3.tar.gz/rubyscript2exe/tar2rubyscript.rb
--- rubyscript2exe-0.1.2.tar.gz/rubyscript2exe/tar2rubyscript.rb	2003-10-19 01:32:37.000000000 +0200
+++ rubyscript2exe-0.1.3.tar.gz/rubyscript2exe/tar2rubyscript.rb	2007-05-30 10:17:20.000000000 +0200
@@ -1,86 +0,0 @@
-scriptfile	= ARGV.shift
-tarfile		= ARGV.shift
-rbfile		= ARGV.shift
-licensefile	= ARGV.shift
-
-tarfile.dup.gsub!(/[\/\\]$/, "")
-
-if tarfile.nil?
-  puts "Usage: ruby tar2rubyscript.rb application.tar [application.rb [license.txt]]"
-  puts "       or"
-  puts "       ruby tar2rubyscript.rb application/ [application.rb [license.txt]]"
-  puts ""
-  puts "The second option needs the external program 'tar' for creating"
-  puts "the archive internally."
-
-  exit 1
-end
-
-if not FileTest.exist?(tarfile)
-  puts "#{tarfile} doesn't exist."
-  exit
-end
-
-if not licensefile.nil? and not FileTest.file?(licensefile)
-  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")
-    puts "\".\\tar2rubyscript.bat\""
-    system(".\\tar2rubyscript.bat")
-  end
-
-  if FileTest.file?("tar2rubyscript.sh")
-    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.2.tar.gz/rubyscript2exe/tarrubyscript.rb rubyscript2exe-0.1.3.tar.gz/rubyscript2exe/tarrubyscript.rb
--- rubyscript2exe-0.1.2.tar.gz/rubyscript2exe/tarrubyscript.rb	2003-10-19 01:32:37.000000000 +0200
+++ rubyscript2exe-0.1.3.tar.gz/rubyscript2exe/tarrubyscript.rb	2007-05-30 10:17:20.000000000 +0200
@@ -1,305 +0,0 @@
-# Tar2RubyScript constants
-
-JustExtract	= ARGV.include?("--tar2rubyscript-justextract")
-
-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  '
-
-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 @magic != TMAGIC and @magic != GNU_TMAGIC
-
-    @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}"
-
-    @newdir=@tempdir
-  end
-
-  def eval
-    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
-
-		# Execute init.rb .
-
-    newlocation do
-      File.open("init.rb") do |f|
-        instance_eval(f.read)
-      end
-    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
-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
-
-		# Create the temp environment.
-
-      File.open(@tempfile, "wb")	{|f| f.write @archive}
-      File.open(@tempfile, "rb")	{|f| Reader.new(f).extract}
-
-    ensure
-
-		# Remove the temp environment.
-
-      File.delete(@tempfile)
-
-    end
-  end
-end
-
-if JustExtract
-  Extract.new.extract
-else
-  TempSpace.new.eval
-end
Binary files rubyscript2exe-0.1.2.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.1.3.tar.gz/rubyscript2exe/eee.exe differ
diff -ur rubyscript2exe-0.1.3.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.1.4.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.1.3.tar.gz/rubyscript2exe/eee.pas	2003-10-20 00:18:17.000000000 +0200
+++ rubyscript2exe-0.1.4.tar.gz/rubyscript2exe/eee.pas	2003-10-20 21:15:29.000000000 +0200
@@ -56,16 +56,29 @@
       end;
     end
     else begin
+
+      {$I-}
 	assign(f, sr.name);
         erase(f);
+        if (ioresult <> 0) then begin
+          writeln('Couldn''t delete file ' + sr.name);
+        end;
+      {$I+}
+
     end;
 
     findnext(sr);
   end;
+  findclose(sr);
 
   chdir(dir);
 
-  rmdir(path);
+  {$I-}
+    rmdir(path + '\');
+    if (ioresult <> 0) then begin
+      writeln('Couldn''t delete directory ' + path + ' (Known Error).');
+    end;
+  {$I+}
 
 end;
 
@@ -95,12 +108,12 @@
         klasse	:= copy(s, 1, 1);
         tekst	:= copy(s, 3, 255);
 
+        // writeln(h.klasse, ' ', h.tekst);
+
         if (klasse = 'f') then begin
           h.klasse	:= klasse;
           h.tekst	:= tekst;
 
-          // writeln(h.klasse, ' ', h.tekst);
-
           assign(infile, h.tekst);
           reset(infile, 1);
 
@@ -119,8 +132,6 @@
           h.tekst	:= tekst;
           h.length	:= 0;
 
-          // writeln(h.klasse, ' ', h.tekst);
-
           blockwrite(outfile, h, sizeof(h));
         end;
 
@@ -129,8 +140,6 @@
           h.tekst	:= tekst;
           h.length	:= 0;
 
-          // writeln(h.klasse, ' ', h.tekst);
-
           blockwrite(outfile, h, sizeof(h));
         end;
 
diff -ur rubyscript2exe-0.1.3.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.1.4.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.1.3.tar.gz/rubyscript2exe/init.rb	2003-10-20 00:27:49.000000000 +0200
+++ rubyscript2exe-0.1.4.tar.gz/rubyscript2exe/init.rb	2003-10-20 21:17:22.000000000 +0200
@@ -18,7 +18,7 @@
     tar = FileTest.file?("tar.exe")
     system("copy #{newdir}\\tar.exe . > nul:")	if not tar
 
-    system("ruby -r #{newdir}\\require2tar.rb #{app}.rb #{ARGV.join(" ")}")
+    system("ruby -r #{newdir}\\require2tar.rb #{app}.rb #{ARGV.join(" ")}")	# eval ???
 
     system("del tar.exe > nul:")		if not tar
   end
@@ -66,3 +66,7 @@
   system("del app.rb.gz > nul:")
   system("del app.eee > nul:")
 end
+
+# def copy	???
+# def move	???
+# def del	???
Binary files rubyscript2exe-0.1.3.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.1.4.tar.gz/rubyscript2exe/eee.exe differ
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	2007-05-30 10:17:23.000000000 +0200
+++ 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	2007-05-30 10:17:23.000000000 +0200
+++ 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
diff -ur rubyscript2exe-0.1.5.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.1.6.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.1.5.tar.gz/rubyscript2exe/eee.pas	2003-10-26 18:51:45.000000000 +0100
+++ rubyscript2exe-0.1.6.tar.gz/rubyscript2exe/eee.pas	2003-10-31 01:02:22.000000000 +0100
@@ -254,10 +254,10 @@
   parms		:= '';
   for teller := 1 to paramcount do begin
     if (parms = '') then begin
-      parms	:= paramstr(teller);
+      parms	:= '''' + paramstr(teller) + '''';
     end
     else begin
-      parms	:= parms + ' ' + paramstr(teller);
+      parms	:= parms + ' ''' + paramstr(teller) + '''';
     end;
   end;
 
diff -ur rubyscript2exe-0.1.5.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.1.6.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.1.5.tar.gz/rubyscript2exe/init.rb	2003-10-27 23:57:39.000000000 +0100
+++ rubyscript2exe-0.1.6.tar.gz/rubyscript2exe/init.rb	2003-10-31 01:06:11.000000000 +0100
@@ -27,7 +27,7 @@
     tar = FileTest.file?("tar.exe")
     system("copy #{newdir}\\tar.exe . > nul:")	if not tar
 
-    system("#{Config::CONFIG["bindir"]}\\ruby -r #{newdir}\\require2tar.rb #{app}.rb #{ARGV.join(" ")}")	# eval ???
+    system("#{Config::CONFIG["bindir"]}\\ruby -r #{newdir}\\require2tar.rb #{app}.rb #{ARGV.collect{|a| "'" + a + "'"}.join(" ")}")	# eval ???
 
     system("del tar.exe > nul:")		if not tar
   end
Binary files rubyscript2exe-0.1.5.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.1.6.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.1.5.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.1.6.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.1.6.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.1.7.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.1.6.tar.gz/rubyscript2exe/eee.pas	2003-10-31 01:02:22.000000000 +0100
+++ rubyscript2exe-0.1.7.tar.gz/rubyscript2exe/eee.pas	2003-11-07 23:38:31.000000000 +0100
@@ -246,7 +246,6 @@
 
 begin
 
-  tempdir	:= 'c:\tmp';
   tempdir	:= getenv('TEMP');
 
   me		:= 'Dit is mijn herkennigsstring voor het herkennen van pakin of pakuit mode.';
diff -ur rubyscript2exe-0.1.6.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.1.7.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.1.6.tar.gz/rubyscript2exe/init.rb	2003-10-31 01:06:11.000000000 +0100
+++ rubyscript2exe-0.1.7.tar.gz/rubyscript2exe/init.rb	2003-11-07 21:57:49.000000000 +0100
@@ -1,9 +1,15 @@
 require "ev/oldandnewlocation"
 require "rbconfig"
 
-app	= ARGV.shift
+script	= ARGV.shift
 
-RubyW	= ARGV.include?("--rubyscript2exe-rubyw")
+rubyw	= false
+rubyw	= true		if script =~ /\.rbw$/
+rubyw	= false		if ARGV.include?("--rubyscript2exe-ruby")
+rubyw	= true		if ARGV.include?("--rubyscript2exe-rubyw")
+
+rubyexe	= "ruby.exe"
+rubyexe	= "rubyw.exe"	if rubyw
 
 ARGV.delete_if do |arg|
   arg =~ /^--rubyscript2exe-/
@@ -15,11 +21,9 @@
 olddir	= oldlocation.gsub!(/\//, "\\")
 newdir	= newlocation.gsub!(/\//, "\\")
 
-ruby	= "ruby"
-ruby	= "rubyw"	if RubyW
-
-if not app.nil?
-  app	= app.dup.gsub(/\.rb$/, "")
+if not script.nil?
+  script	= "#{script}.rb"	if not script =~ /\.rbw?$/
+  app		= script.gsub(/\.rbw?$/, "")
 
   puts "Tracing #{app}..."
 
@@ -27,36 +31,36 @@
     tar = FileTest.file?("tar.exe")
     system("copy #{newdir}\\tar.exe . > nul:")	if not tar
 
-    system("#{Config::CONFIG["bindir"]}\\ruby -r #{newdir}\\require2tar.rb #{app}.rb #{ARGV.collect{|a| "'" + a + "'"}.join(" ")}")	# eval ???
+    system("#{Config::CONFIG["bindir"]}\\ruby -r #{newdir}\\require2tar.rb #{script} #{ARGV.collect{|a| "'" + a + "'"}.join(" ")}")
 
     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"]}\\#{rubyexe} . > 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:")
+  system("copy #{olddir}\\#{script} app.rb > nul:")
 
   puts "Packing..."
 
   system("#{Config::CONFIG["bindir"]}\\ruby tar2rubyscript.rb rubyrequired.tar")
 
   File.open("app.eee", "w") do |f|
-    f.puts "f #{ruby}.exe"
+    f.puts "f #{rubyexe}"
     f.puts "f #{Config::CONFIG["LIBRUBY_SO"]}"
     f.puts "f rubyrequired.rb"
     f.puts "f app.rb"
 
-    f.puts "t #{ruby} rubyrequired.rb --tar2rubyscript-justextract"
+    f.puts "t #{rubyexe} rubyrequired.rb --tar2rubyscript-justextract"
 
-    f.puts "c %tempdir%\\#{ruby} -I %tempdir%\\rubyrequired %tempdir%\\app.rb %parms%"
+    f.puts "c %tempdir%\\#{rubyexe} -I %tempdir%\\rubyrequired %tempdir%\\app.rb %parms%"
   end
 
   puts "Creating #{app}.exe..."
 
-  if RubyW
+  if rubyw
     system("eeew.exe app.eee #{olddir}\\#{app}.exe")
   else
     system("eee.exe app.eee #{olddir}\\#{app}.exe")
diff -ur rubyscript2exe-0.1.6.tar.gz/rubyscript2exe/tarrubyscript.rb rubyscript2exe-0.1.7.tar.gz/rubyscript2exe/tarrubyscript.rb
--- rubyscript2exe-0.1.6.tar.gz/rubyscript2exe/tarrubyscript.rb	2003-10-31 01:14:37.000000000 +0100
+++ rubyscript2exe-0.1.7.tar.gz/rubyscript2exe/tarrubyscript.rb	2003-11-08 20:06:19.000000000 +0100
@@ -191,7 +191,7 @@
 
     @@tempspace	= self
 
-    @newdir=@tempdir
+    @newdir	= @tempdir
   end
 
   def extract
@@ -358,6 +358,8 @@
   else
     TempSpace.new.extract
 
+    $0	= "./init.rb"
+
     newlocation do
       load "init.rb"
     end
Binary files rubyscript2exe-0.1.6.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.1.7.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.1.6.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.1.7.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.1.7.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.1.8.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.1.7.tar.gz/rubyscript2exe/eee.pas	2003-11-07 23:38:31.000000000 +0100
+++ rubyscript2exe-0.1.8.tar.gz/rubyscript2exe/eee.pas	2004-01-30 15:16:09.000000000 +0100
@@ -62,7 +62,7 @@
     else begin
 
       {$I-}
-	assign(f, sr.name);
+        assign(f, sr.name);
         erase(f);
         if (ioresult <> 0) then begin
           writeln('Couldn''t delete file ' + sr.name);
@@ -97,7 +97,8 @@
     assign(eeefile, paramstr(1));
     reset(eeefile);
 
-    assign(infile, paramstr(0));
+    if (paramcount > 2)	then assign(infile, paramstr(3))
+			else assign(infile, paramstr(0));
     reset(infile, 1);
     blockread(infile, b, sizeof(b), t.length);
     blockwrite(outfile, b, t.length);
@@ -120,15 +121,12 @@
 
           assign(infile, h.tekst);
           reset(infile, 1);
-
           h.length	:= filesize(infile);
-
           blockread(infile, b, sizeof(b), h.length);
+          close(infile);
 
           blockwrite(outfile, h, sizeof(h));
           blockwrite(outfile, b, h.length);
-
-          close(infile);
         end;
 
         if (klasse = 'c') then begin
@@ -207,11 +205,12 @@
         // writeln(h.klasse, ' ', h.tekst);
 
         if (h.klasse = 'f') then begin
-          blockread(infile, b, h.length);
-
           assign(outfile, workdir + '\' + h.tekst);
           rewrite(outfile, 1);
+
+          blockread(infile, b, h.length);
           blockwrite(outfile, b, h.length);
+
           close(outfile);
         end;
 
@@ -248,7 +247,7 @@
 
   tempdir	:= getenv('TEMP');
 
-  me		:= 'Dit is mijn herkennigsstring voor het herkennen van pakin of pakuit mode.';
+  me		:= 'EEE: Dit is mijn herkennigsstring voor het herkennen van pakin of pakuit mode.';
 
   parms		:= '';
   for teller := 1 to paramcount do begin
diff -ur rubyscript2exe-0.1.7.tar.gz/rubyscript2exe/ev/ftools.rb rubyscript2exe-0.1.8.tar.gz/rubyscript2exe/ev/ftools.rb
--- rubyscript2exe-0.1.7.tar.gz/rubyscript2exe/ev/ftools.rb	2007-05-30 10:17:27.000000000 +0200
+++ rubyscript2exe-0.1.8.tar.gz/rubyscript2exe/ev/ftools.rb	2004-01-30 16:38:19.000000000 +0100
@@ -0,0 +1,21 @@
+require "ftools"
+
+class File
+  def self.rm_rf(entry)
+    if FileTest.file?(entry)
+      File.delete(entry)
+    end
+
+    if FileTest.directory?(entry)
+      pdir = Dir.pwd
+
+      Dir.chdir(entry)
+        Dir.new(".").each do |e|
+          rm_rf(e)	if not [".", ".."].include?(e)
+        end
+      Dir.chdir(pdir)
+
+      Dir.rmdir(entry)
+    end
+  end
+end
diff -ur rubyscript2exe-0.1.7.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.1.8.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.1.7.tar.gz/rubyscript2exe/init.rb	2003-11-07 21:57:49.000000000 +0100
+++ rubyscript2exe-0.1.8.tar.gz/rubyscript2exe/init.rb	2004-01-30 14:49:35.000000000 +0100
@@ -1,6 +1,13 @@
 require "ev/oldandnewlocation"
+require "ev/ftools"
 require "rbconfig"
 
+module RubyScript2Exe
+
+def self.execute(command)
+  system(command.gsub(/^\.\//, "").gsub(/\//, "\\\\"))
+end
+
 script	= ARGV.shift
 
 rubyw	= false
@@ -15,11 +22,11 @@
   arg =~ /^--rubyscript2exe-/
 end
 
-Config::CONFIG["bindir"].gsub!(/\//, "\\")
-Config::CONFIG["LIBRUBY_SO"].gsub!(/\//, "\\")
+bindir	= Config::CONFIG["bindir"]
+libruby_so	= Config::CONFIG["LIBRUBY_SO"]
 
-olddir	= oldlocation.gsub!(/\//, "\\")
-newdir	= newlocation.gsub!(/\//, "\\")
+olddir	= oldlocation
+newdir	= newlocation
 
 if not script.nil?
   script	= "#{script}.rb"	if not script =~ /\.rbw?$/
@@ -29,44 +36,42 @@
 
   oldlocation do
     tar = FileTest.file?("tar.exe")
-    system("copy #{newdir}\\tar.exe . > nul:")	if not tar
+    File.copy("#{newdir}/tar.exe", "tar.exe")	if not tar
 
-    system("#{Config::CONFIG["bindir"]}\\ruby -r #{newdir}\\require2tar.rb #{script} #{ARGV.collect{|a| "'" + a + "'"}.join(" ")}")
+    execute("#{bindir}/ruby -r #{newdir}/require2tar.rb #{script} #{ARGV.collect{|a| "'" + a + "'"}.join(" ")}")
 
-    system("del tar.exe > nul:")		if not tar
+    File.delete("tar.exe")				if not tar
   end
 
   puts "Gathering files..."
 
-  system("copy #{Config::CONFIG["bindir"]}\\#{rubyexe} . > nul:")
-  system("copy #{Config::CONFIG["bindir"]}\\#{Config::CONFIG["LIBRUBY_SO"]} . > nul:")
-  system("move #{olddir}\\rubyrequired.tar . > nul:")
-  system("copy #{olddir}\\#{script} app.rb > nul:")
+  File.copy("#{bindir}/#{rubyexe}", rubyexe)
+  File.copy("#{bindir}/#{libruby_so}", libruby_so)
+  File.move("#{olddir}/rubyrequired.tar", "rubyrequired.tar")
+  File.copy("#{olddir}/#{script}", "app.rb")
 
   puts "Packing..."
 
-  system("#{Config::CONFIG["bindir"]}\\ruby tar2rubyscript.rb rubyrequired.tar")
+  execute("#{bindir}/ruby tar2rubyscript.rb rubyrequired.tar")
+
+  puts "Creating #{app}.exe ..."
 
   File.open("app.eee", "w") do |f|
     f.puts "f #{rubyexe}"
-    f.puts "f #{Config::CONFIG["LIBRUBY_SO"]}"
+    f.puts "f #{libruby_so}"
     f.puts "f rubyrequired.rb"
     f.puts "f app.rb"
 
     f.puts "t #{rubyexe} rubyrequired.rb --tar2rubyscript-justextract"
 
-    f.puts "c %tempdir%\\#{rubyexe} -I %tempdir%\\rubyrequired %tempdir%\\app.rb %parms%"
+    f.puts "c %tempdir%/#{rubyexe} -I %tempdir%/rubyrequired %tempdir%/app.rb %parms%"
   end
 
-  puts "Creating #{app}.exe..."
-
   if rubyw
-    system("eeew.exe app.eee #{olddir}\\#{app}.exe")
+    execute("./eee app.eee #{olddir}/#{app}.exe eeew.exe");
   else
-    system("eee.exe app.eee #{olddir}\\#{app}.exe")
+    execute("./eee app.eee #{olddir}/#{app}.exe eee.exe");
   end
 end
 
-# def copy	???
-# def move	???
-# def del	???
+end
diff -ur rubyscript2exe-0.1.7.tar.gz/rubyscript2exe/require2tar.rb rubyscript2exe-0.1.8.tar.gz/rubyscript2exe/require2tar.rb
--- rubyscript2exe-0.1.7.tar.gz/rubyscript2exe/require2tar.rb	2003-11-08 20:06:19.000000000 +0100
+++ rubyscript2exe-0.1.8.tar.gz/rubyscript2exe/require2tar.rb	2004-01-30 16:38:19.000000000 +0100
@@ -5,23 +5,22 @@
   arg =~ /^--require2tar-/
 end
 
-at_exit do
-  include Require
+Require2TarDir	= Dir.pwd
 
-  createtar
+at_exit do
+  Dir.chdir Require2TarDir
+  Require.createtar
 end
 
 module Require
-
-  def createtar
-    temp	= ENV["TEMP"]
-    temp	= "/tmp"	if temp.nil?
+  def self.createtar
+    temp	= (ENV["TEMP"] or "/tmp")
     tmpdir	= File.expand_path("rubyrequired2tar.#{Process.pid}", temp)
     tardir	= "rubyrequired"
     tarfile	= "rubyrequired.tar"
     todir	= File.expand_path(tardir, tmpdir)
 
-    mkdirs("#{todir}/")
+    File.makedirs(tmpdir)
 
     $".delete_if{|req| not req =~ /^ev\//}	if JustEV
 
@@ -39,18 +38,19 @@
 
             #puts "Found #{fromfile} ."
 
-            copy(fromfile, tofile)
+            File.makedirs(File.dirname(tofile))
+            File.copy(fromfile, tofile)
           end
         end
       end
 
       if not found
-        puts "Can't find #{req} ."
+        puts "Can't find #{req} ."	if not req =~ /^ev\//
       end
     end
 
     if not JustCopy
-      copy("tar.exe", File.expand_path("tar.exe", tmpdir))	if FileTest.file?("tar.exe")
+      File.copy("tar.exe", File.expand_path("tar.exe", tmpdir))	if FileTest.file?("tar.exe")
 
       pdir	= Dir.pwd
       s		= "tar chf #{File.expand_path(tarfile)} #{tardir}"
@@ -61,35 +61,12 @@
       Dir.chdir(pdir)
     end
 
-    recursivedelete(tmpdir)
-  end
-
-  def copy(fromfile, tofile)
-    mkdirs(tofile)
-
-    if not FileTest.file?(tofile)
-      File.open(tofile, "wb") do |f|
-        f.write(File.new(fromfile, "rb").read)
-      end
-    end
-  end
-
-  def mkdirs(file)
-    dir, file	= file.gsub(/[\/\\]/, "/").split(/\//, 2)
-
-    if not file.nil?
-      dir	= "#{dir}/"
-
-      Dir.mkdir(dir)	if not FileTest.directory?(dir)
-
-      pdir = Dir.pwd
-      Dir.chdir(dir)
-        mkdirs(file)
-      Dir.chdir(pdir)
-    end
+    File.rm_rf(tmpdir)
   end
+end
 
-  def recursivedelete(entry)
+class File
+  def self.rm_rf(entry)
     if FileTest.file?(entry)
       File.delete(entry)
     end
@@ -99,12 +76,11 @@
 
       Dir.chdir(entry)
         Dir.new(".").each do |e|
-          recursivedelete(e)	if not [".", ".."].include?(e)
+          rm_rf(e)	if not [".", ".."].include?(e)
         end
       Dir.chdir(pdir)
 
       Dir.rmdir(entry)
     end
   end
-
 end
Binary files rubyscript2exe-0.1.7.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.1.8.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.1.7.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.1.8.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.1.8.tar.gz/rubyscript2exe/require2tar.rb rubyscript2exe-0.1.9.tar.gz/rubyscript2exe/require2tar.rb
--- rubyscript2exe-0.1.8.tar.gz/rubyscript2exe/require2tar.rb	2004-01-30 16:38:19.000000000 +0100
+++ rubyscript2exe-0.1.9.tar.gz/rubyscript2exe/require2tar.rb	2004-02-16 21:38:33.000000000 +0100
@@ -1,3 +1,5 @@
+require "ftools"
+
 JustCopy	= ARGV.include?("--require2tar-justcopy")
 JustEV		= ARGV.include?("--require2tar-justev")
 
Binary files rubyscript2exe-0.1.8.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.1.9.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.1.8.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.1.9.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.1.9.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.1.10.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.1.9.tar.gz/rubyscript2exe/init.rb	2004-01-30 14:49:35.000000000 +0100
+++ rubyscript2exe-0.1.10.tar.gz/rubyscript2exe/init.rb	2004-03-15 22:37:28.000000000 +0100
@@ -5,7 +5,23 @@
 module RubyScript2Exe
 
 def self.execute(command)
-  system(command.gsub(/^\.\//, "").gsub(/\//, "\\\\"))
+  command	= command.gsub(/^\.\//, "").gsub(/\//, "\\\\")
+
+  system(command)
+end
+
+def self.copy(from, to)
+  from	= from.gsub(/^\.\//, "").gsub(/\//, "\\\\")
+  to	= to.gsub(/^\.\//, "").gsub(/\//, "\\\\")
+
+  File.copy(from, to)
+end
+
+def self.move(from, to)
+  from	= from.gsub(/^\.\//, "").gsub(/\//, "\\\\")
+  to	= to.gsub(/^\.\//, "").gsub(/\//, "\\\\")
+
+  File.move(from, to)
 end
 
 script	= ARGV.shift
@@ -23,32 +39,29 @@
 end
 
 bindir	= Config::CONFIG["bindir"]
-libruby_so	= Config::CONFIG["LIBRUBY_SO"]
-
-olddir	= oldlocation
-newdir	= newlocation
+libruby	= Config::CONFIG["LIBRUBY_SO"]
 
 if not script.nil?
   script	= "#{script}.rb"	if not script =~ /\.rbw?$/
-  app		= script.gsub(/\.rbw?$/, "")
+  app		= File.basename(script.gsub(/\.rbw?$/, ""))
 
   puts "Tracing #{app}..."
 
   oldlocation do
     tar = FileTest.file?("tar.exe")
-    File.copy("#{newdir}/tar.exe", "tar.exe")	if not tar
+    copy(newlocation("tar.exe"), "tar.exe")	if not tar
 
-    execute("#{bindir}/ruby -r #{newdir}/require2tar.rb #{script} #{ARGV.collect{|a| "'" + a + "'"}.join(" ")}")
+    execute("#{bindir}/ruby -r '#{newlocation("require2tar.rb")}' '#{script}' #{ARGV.collect{|a| "'" + a + "'"}.join(" ")}")
 
-    File.delete("tar.exe")				if not tar
+    File.delete("tar.exe")			if not tar
   end
 
   puts "Gathering files..."
 
-  File.copy("#{bindir}/#{rubyexe}", rubyexe)
-  File.copy("#{bindir}/#{libruby_so}", libruby_so)
-  File.move("#{olddir}/rubyrequired.tar", "rubyrequired.tar")
-  File.copy("#{olddir}/#{script}", "app.rb")
+  copy("#{bindir}/#{rubyexe}", rubyexe)
+  copy("#{bindir}/#{libruby}", libruby)
+  move("#{oldlocation("rubyrequired.tar")}", "rubyrequired.tar")
+  copy("#{oldlocation(script)}", "app.rb")
 
   puts "Packing..."
 
@@ -58,7 +71,7 @@
 
   File.open("app.eee", "w") do |f|
     f.puts "f #{rubyexe}"
-    f.puts "f #{libruby_so}"
+    f.puts "f #{libruby}"
     f.puts "f rubyrequired.rb"
     f.puts "f app.rb"
 
@@ -68,10 +81,14 @@
   end
 
   if rubyw
-    execute("./eee app.eee #{olddir}/#{app}.exe eeew.exe");
+    exe	= "eeew.exe"
   else
-    execute("./eee app.eee #{olddir}/#{app}.exe eee.exe");
+    exe	= "eee.exe"
   end
+
+  execute("./eee app.eee #{app}.exe #{exe}")
+
+  copy("#{app}.exe", oldlocation)
 end
 
 end
diff -ur rubyscript2exe-0.1.9.tar.gz/rubyscript2exe/require2tar.rb rubyscript2exe-0.1.10.tar.gz/rubyscript2exe/require2tar.rb
--- rubyscript2exe-0.1.9.tar.gz/rubyscript2exe/require2tar.rb	2004-02-16 21:38:33.000000000 +0100
+++ rubyscript2exe-0.1.10.tar.gz/rubyscript2exe/require2tar.rb	2004-03-16 10:51:08.000000000 +0100
@@ -55,11 +55,15 @@
       File.copy("tar.exe", File.expand_path("tar.exe", tmpdir))	if FileTest.file?("tar.exe")
 
       pdir	= Dir.pwd
-      s		= "tar chf #{File.expand_path(tarfile)} #{tardir}"
       Dir.chdir(tmpdir)
         puts "Creating #{tarfile}..."
 
-        system(s)
+        system("tar chf #{tarfile} #{tardir}")
+
+        s	= File.expand_path(tarfile, pdir)
+        s	= s.gsub(/^\.\//, "").gsub(/\//, "\\\\")
+
+        File.move(tarfile, s)
       Dir.chdir(pdir)
     end
 
diff -ur rubyscript2exe-0.1.9.tar.gz/rubyscript2exe/tarrubyscript.rb rubyscript2exe-0.1.10.tar.gz/rubyscript2exe/tarrubyscript.rb
--- rubyscript2exe-0.1.9.tar.gz/rubyscript2exe/tarrubyscript.rb	2004-02-16 21:38:34.000000000 +0100
+++ rubyscript2exe-0.1.10.tar.gz/rubyscript2exe/tarrubyscript.rb	2004-03-16 10:51:08.000000000 +0100
@@ -43,9 +43,9 @@
 GNAMELEN	= 32
 DEVLEN		= 8
 
-TMAGIC		= 'ustar'
-GNU_TMAGIC	= 'ustar  '
-SOLARIS_TMAGIC	= 'ustar00'
+TMAGIC		= "ustar"
+GNU_TMAGIC	= "ustar  "
+SOLARIS_TMAGIC	= "ustar\00000"
 
 MAGICS		= [TMAGIC, GNU_TMAGIC, SOLARIS_TMAGIC]
 
@@ -162,7 +162,7 @@
       raise "Couldn't determine a real value for a field (#{field})"
     end
 
-    raise "Magic header value '#{@magic}' is invalid."	if not MAGICS.include?(@magic)
+    raise "Magic header value #{@magic.inspect} 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
Binary files rubyscript2exe-0.1.9.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.1.10.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.1.9.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.1.10.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.1.10.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.1.11.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.1.10.tar.gz/rubyscript2exe/eee.pas	2004-03-15 22:31:54.000000000 +0100
+++ rubyscript2exe-0.1.11.tar.gz/rubyscript2exe/eee.pas	2004-02-16 22:00:19.000000000 +0100
@@ -31,7 +31,6 @@
   s		: string[255];
   c		: string[255];
   p		: string[255];
-  b		: array[0..10000000] of byte;
   h		: header;
   t		: tail;
   teller	: longint;
@@ -87,6 +86,72 @@
 end;
 
 
+procedure bufferxor(var b: array of byte);
+
+var
+  i	: longint;
+
+begin
+
+  for i := 0 to sizeof(b)-1 do begin
+    b[i]	:= 123 xor b[i];
+  end;
+
+end;
+
+
+procedure blockeat(var infile: file; inlength: longint);
+
+var
+  b	: array[0..99999] of byte;
+  l	: longint;
+  c	: longint;
+  n	: longint;
+
+begin
+
+  c		:= trunc(inlength/sizeof(b));
+
+  while (c >= 0) do begin
+    if (c = 0)	then l := inlength-(trunc(inlength/sizeof(b))*sizeof(b))
+		else l := sizeof(b);
+
+    blockread(infile, b, l, n);
+
+    dec(c);
+  end;
+
+end;
+
+
+procedure blockcopy(var infile: file; var outfile: file; inlength: longint; encrypt: boolean);
+
+var
+  b	: array[0..99999] of byte;
+  l	: longint;
+  c	: longint;
+  n	: longint;
+
+begin
+
+  c		:= trunc(inlength/sizeof(b));
+
+  while (c >= 0) do begin
+    if (c = 0)	then l := inlength-(trunc(inlength/sizeof(b))*sizeof(b))
+		else l := sizeof(b);
+
+    blockread(infile, b, l, n);
+    if (encrypt) then begin
+      bufferxor(b);
+    end;
+    blockwrite(outfile, b, n);
+
+    dec(c);
+  end;
+
+end;
+
+
 procedure pakin;
 
 begin
@@ -100,8 +165,8 @@
     if (paramcount > 2)	then assign(infile, paramstr(3))
 			else assign(infile, paramstr(0));
     reset(infile, 1);
-    blockread(infile, b, sizeof(b), t.length);
-    blockwrite(outfile, b, t.length);
+    t.length	:= filesize(infile);
+    blockcopy(infile, outfile, t.length, false);
     close(infile);
 
     t.number	:= 0;
@@ -122,11 +187,9 @@
           assign(infile, h.tekst);
           reset(infile, 1);
           h.length	:= filesize(infile);
-          blockread(infile, b, sizeof(b), h.length);
-          close(infile);
-
           blockwrite(outfile, h, sizeof(h));
-          blockwrite(outfile, b, h.length);
+          blockcopy(infile, outfile, h.length, true);
+          close(infile);
         end;
 
         if (klasse = 'c') then begin
@@ -181,7 +244,7 @@
 
     assign(infile, paramstr(0));
     reset(infile, 1);
-    blockread(infile, b, t.length);
+    blockeat(infile, t.length);
 
     try
 
@@ -208,8 +271,7 @@
           assign(outfile, workdir + '\' + h.tekst);
           rewrite(outfile, 1);
 
-          blockread(infile, b, h.length);
-          blockwrite(outfile, b, h.length);
+          blockcopy(infile, outfile, h.length, true);
 
           close(outfile);
         end;
@@ -263,7 +325,7 @@
 
   assign(infile, paramstr(0));
   reset(infile, 1);
-  blockread(infile, b, filesize(infile)-sizeof(t));
+  blockeat(infile, filesize(infile)-sizeof(t));
   blockread(infile, t, sizeof(t));
   close(infile);
 
Binary files rubyscript2exe-0.1.10.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.1.11.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.1.10.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.1.11.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.1.11.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.1.12.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.1.11.tar.gz/rubyscript2exe/eee.pas	2004-02-16 22:00:19.000000000 +0100
+++ rubyscript2exe-0.1.12.tar.gz/rubyscript2exe/eee.pas	2004-04-24 22:50:12.000000000 +0200
@@ -37,6 +37,7 @@
   i		: longint;
   dir		: string[255];
   parms		: string[255];
+  justextract	: boolean;
 
 
 procedure recursivedelete(var path: string[255]);
@@ -255,14 +256,14 @@
         i		:= pos(s, h.tekst);
         while (i > 0) do begin
           h.tekst	:= copy(h.tekst, 1, i-1) + workdir + copy(h.tekst, i+length(s), 255);
-          i	:= pos(s, h.tekst);
+          i		:= pos(s, h.tekst);
         end;
 
         s		:= '%parms%';
         i		:= pos(s, h.tekst);
         while (i > 0) do begin
           h.tekst	:= copy(h.tekst, 1, i-1) + parms + copy(h.tekst, i+length(s), 255);
-          i	:= pos(s, h.tekst);
+          i		:= pos(s, h.tekst);
         end;
 
         // writeln(h.klasse, ' ', h.tekst);
@@ -305,14 +306,66 @@
 end;
 
 
+procedure pakhieruit;
+
+begin
+
+    randomize;
+
+    workdir	:= paramstr(0);
+    workdir	:= copy(workdir, 1, length(workdir)-4);
+
+    {$I-}
+      mkdir(workdir);
+      if (ioresult = 183) then begin
+        writeln('Can''t create ', workdir, '.');
+      end;
+    {$I-}
+
+    assign(infile, paramstr(0));
+    reset(infile, 1);
+    blockeat(infile, t.length);
+
+    try
+
+      for teller := 1 to t.number do begin
+        blockread(infile, h, sizeof(h));
+
+        writeln(h.klasse, ' ', h.tekst);
+
+        if (h.klasse = 'f') then begin
+          assign(outfile, workdir + '\' + h.tekst);
+          rewrite(outfile, 1);
+
+          blockcopy(infile, outfile, h.length, true);
+
+          close(outfile);
+        end;
+      end;
+
+    finally
+
+      close(infile);
+
+    end;
+
+end;
+
+
 begin
 
   tempdir	:= getenv('TEMP');
 
   me		:= 'EEE: Dit is mijn herkennigsstring voor het herkennen van pakin of pakuit mode.';
 
+  justextract	:= false;
+
   parms		:= '';
   for teller := 1 to paramcount do begin
+    if (paramstr(teller) = '--eee-justextract') then begin
+      justextract	:= true;
+    end;
+
     if (parms = '') then begin
       parms	:= '''' + paramstr(teller) + '''';
     end
@@ -333,7 +386,12 @@
     pakin;
   end
   else begin
-    pakuit
+    if (justextract) then begin
+      pakhieruit;
+    end
+    else begin
+      pakuit;
+    end;
   end;
 
 end.
diff -ur rubyscript2exe-0.1.11.tar.gz/rubyscript2exe/tarrubyscript.rb rubyscript2exe-0.1.12.tar.gz/rubyscript2exe/tarrubyscript.rb
--- rubyscript2exe-0.1.11.tar.gz/rubyscript2exe/tarrubyscript.rb	2004-03-26 13:51:29.000000000 +0100
+++ rubyscript2exe-0.1.12.tar.gz/rubyscript2exe/tarrubyscript.rb	2004-04-25 00:39:31.000000000 +0200
@@ -326,11 +326,11 @@
 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")
+    @tarfile	= $0.gsub(/\.rbw?$/, "") + ".tar"
   end
 
   def extract
-      File.open(@tarfile, "wb")	{|f| f.write @archive}
+    File.open(@tarfile, "wb")	{|f| f.write @archive}
   end
 end
 
Binary files rubyscript2exe-0.1.11.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.1.12.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.1.11.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.1.12.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.1.12.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.1.13.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.1.12.tar.gz/rubyscript2exe/init.rb	2004-04-24 21:44:11.000000000 +0200
+++ rubyscript2exe-0.1.13.tar.gz/rubyscript2exe/init.rb	2004-04-28 22:14:55.000000000 +0200
@@ -26,20 +26,22 @@
 
 script	= ARGV.shift
 
+msvcr71	= ARGV.include?("--rubyscript2exe-msvcr71")
+
 rubyw	= false
 rubyw	= true		if script =~ /\.rbw$/
 rubyw	= false		if ARGV.include?("--rubyscript2exe-ruby")
 rubyw	= true		if ARGV.include?("--rubyscript2exe-rubyw")
 
-rubyexe	= "ruby.exe"
-rubyexe	= "rubyw.exe"	if rubyw
-
 ARGV.delete_if do |arg|
   arg =~ /^--rubyscript2exe-/
 end
 
 bindir	= Config::CONFIG["bindir"]
+rubyexe	= "ruby.exe"
+rubyexe	= "rubyw.exe"	if rubyw
 libruby	= Config::CONFIG["LIBRUBY_SO"]
+msvcr71	= "msvcr71.dll"	if msvcr71
 
 if not script.nil?
   script	= "#{script}.rb"	if not script =~ /\.rbw?$/
@@ -60,6 +62,7 @@
 
   copy("#{bindir}/#{rubyexe}", rubyexe)
   copy("#{bindir}/#{libruby}", libruby)
+  copy("#{bindir}/#{msvcr71}", msvcr71)	if msvcr71
   move("#{oldlocation("rubyrequired.tar")}", "rubyrequired.tar")
   copy("#{oldlocation(script)}", "app.rb")
 
@@ -72,6 +75,7 @@
   File.open("app.eee", "w") do |f|
     f.puts "f #{rubyexe}"
     f.puts "f #{libruby}"
+    f.puts "f #{msvcr71}"	if msvcr71
     f.puts "f rubyrequired.rb"
     f.puts "f app.rb"
 
diff -ur rubyscript2exe-0.1.12.tar.gz/rubyscript2exe/README rubyscript2exe-0.1.13.tar.gz/rubyscript2exe/README
--- rubyscript2exe-0.1.12.tar.gz/rubyscript2exe/README	2004-01-05 22:05:46.000000000 +0100
+++ rubyscript2exe-0.1.13.tar.gz/rubyscript2exe/README	2004-04-28 23:33:16.000000000 +0200
@@ -1,4 +1,4 @@
-Usage: ruby init.rb application[.rb]
+Usage: ruby rubyscript2exe.rb application[.rb[w]] [--rubyscript2exe-rubyw|--rubyscript2exe-ruby] [--rubyscript2exe-msvcr71]
 
 For more information, see
 http://www.erikveen.dds.nl/rubyscript2tar/ .
Binary files rubyscript2exe-0.1.12.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.1.13.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.1.12.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.1.13.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.1.13.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.1.14.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.1.13.tar.gz/rubyscript2exe/eee.pas	2004-04-28 22:24:04.000000000 +0200
+++ rubyscript2exe-0.1.14.tar.gz/rubyscript2exe/eee.pas	2004-05-02 23:56:22.000000000 +0200
@@ -2,7 +2,7 @@
 
 uses
 
-  Dos;
+  SysUtils, Dos;
 
 type
 
@@ -27,16 +27,17 @@
   outfile	: file of byte;
   eeefile	: Text;
   klasse	: string[1];
-  tekst		: string[255];
+  tekst1	: string[255];
+  tekst2	: string;
   s		: string[255];
-  c		: string[255];
-  p		: string[255];
+  c		: string;
+  p		: string;
   h		: header;
   t		: tail;
   teller	: longint;
   i		: longint;
   dir		: string[255];
-  parms		: string[255];
+  parms		: string;
   justextract	: boolean;
 
 
@@ -46,15 +47,19 @@
   f		: file;
   sr		: searchrec;
   dir		: string[255];
+  attr		: word;
 
 begin
 
   getdir(0, dir);
   chdir(path);
 
-  findfirst('*.*', directory, sr);
+  findfirst('*.*', anyfile or directory, sr);
   while(doserror = 0) do begin
-    if (sr.attr and directory > 0) then begin
+    assign(f, sr.name);		// Foutje in 1.9.2 ???
+    getfattr(f, attr);		// Foutje in 1.9.2 ???
+
+    if (attr and directory > 0) then begin
       if ((not (sr.name = '.')) and (not (sr.name = '..'))) then begin
         recursivedelete(sr.name);
       end;
@@ -177,13 +182,13 @@
 
       if (not (s = '') and not (copy(s, 1, 1) = '#')) then begin
         klasse	:= copy(s, 1, 1);
-        tekst	:= copy(s, 3, 255);
+        tekst1	:= copy(s, 3, length(s)-2);
 
         // writeln(h.klasse, ' ', h.tekst);
 
         if (klasse = 'f') then begin
           h.klasse	:= klasse;
-          h.tekst	:= tekst;
+          h.tekst	:= tekst1;
 
           assign(infile, h.tekst);
           reset(infile, 1);
@@ -195,7 +200,7 @@
 
         if (klasse = 'c') then begin
           h.klasse	:= klasse;
-          h.tekst	:= tekst;
+          h.tekst	:= tekst1;
           h.length	:= 0;
 
           blockwrite(outfile, h, sizeof(h));
@@ -203,7 +208,7 @@
 
         if (klasse = 't') then begin
           h.klasse	:= klasse;
-          h.tekst	:= tekst;
+          h.tekst	:= tekst1;
           h.length	:= 0;
 
           blockwrite(outfile, h, sizeof(h));
@@ -252,24 +257,26 @@
       for teller := 1 to t.number do begin
         blockread(infile, h, sizeof(h));
 
+        tekst2		:= h.tekst;
+
         s		:= '%tempdir%';
-        i		:= pos(s, h.tekst);
+        i		:= pos(s, tekst2);
         while (i > 0) do begin
-          h.tekst	:= copy(h.tekst, 1, i-1) + workdir + copy(h.tekst, i+length(s), 255);
-          i		:= pos(s, h.tekst);
+          tekst2	:= copy(tekst2, 1, i-1) + workdir + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
+          i		:= pos(s, tekst2);
         end;
 
         s		:= '%parms%';
-        i		:= pos(s, h.tekst);
+        i		:= pos(s, tekst2);
         while (i > 0) do begin
-          h.tekst	:= copy(h.tekst, 1, i-1) + parms + copy(h.tekst, i+length(s), 255);
-          i		:= pos(s, h.tekst);
+          tekst2	:= copy(tekst2, 1, i-1) + parms + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
+          i		:= pos(s, tekst2);
         end;
 
-        // writeln(h.klasse, ' ', h.tekst);
+        // writeln(h.klasse, ' ', tekst2);
 
         if (h.klasse = 'f') then begin
-          assign(outfile, workdir + '\' + h.tekst);
+          assign(outfile, workdir + '\' + tekst2);
           rewrite(outfile, 1);
 
           blockcopy(infile, outfile, h.length, true);
@@ -278,19 +285,19 @@
         end;
 
         if (h.klasse = 'c') then begin
-          i	:= pos(' ', h.tekst);
-          c	:= copy(h.tekst, 1, i-1);
-          p	:= copy(h.tekst, i+1, 255);
-          exec(c, p);
+          i	:= pos(' ', tekst2);
+          c	:= copy(tekst2, 1, i-1);
+          p	:= copy(tekst2, i+1, length(tekst2)-i);
+          executeprocess(c, p);
         end;
 
         if (h.klasse = 't') then begin
           getdir(0, dir);
           chdir(workdir);
-            i	:= pos(' ', h.tekst);
-            c	:= copy(h.tekst, 1, i-1);
-            p	:= copy(h.tekst, i+1, 255);
-            exec(c, p);
+            i	:= pos(' ', tekst2);
+            c	:= copy(tekst2, 1, i-1);
+            p	:= copy(tekst2, i+1, length(tekst2)-i);
+            executeprocess(c, p);
           chdir(dir);
         end;
       end;
Binary files rubyscript2exe-0.1.13.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.1.14.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.1.13.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.1.14.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.1.14.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.1.15.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.1.14.tar.gz/rubyscript2exe/eee.pas	2004-05-02 23:56:22.000000000 +0200
+++ rubyscript2exe-0.1.15.tar.gz/rubyscript2exe/eee.pas	2004-05-14 22:48:30.000000000 +0200
@@ -70,7 +70,7 @@
         assign(f, sr.name);
         erase(f);
         if (ioresult <> 0) then begin
-          writeln('Couldn''t delete file ' + sr.name);
+          // writeln('Couldn''t delete file ' + sr.name);
         end;
       {$I+}
 
@@ -85,7 +85,7 @@
   {$I-}
     rmdir(path + '\');
     if (ioresult <> 0) then begin
-      writeln('Couldn''t delete directory ' + path + ' (Known Error).');
+      // writeln('Couldn''t delete directory ' + path + ' (Known Error).');
     end;
   {$I+}
 
@@ -116,10 +116,10 @@
 
 begin
 
-  c		:= trunc(inlength/sizeof(b));
+  c		:= trunc(inlength div sizeof(b));
 
   while (c >= 0) do begin
-    if (c = 0)	then l := inlength-(trunc(inlength/sizeof(b))*sizeof(b))
+    if (c = 0)	then l := inlength-(trunc(inlength div sizeof(b))*sizeof(b))
 		else l := sizeof(b);
 
     blockread(infile, b, l, n);
@@ -140,10 +140,10 @@
 
 begin
 
-  c		:= trunc(inlength/sizeof(b));
+  c		:= trunc(inlength div sizeof(b));
 
   while (c >= 0) do begin
-    if (c = 0)	then l := inlength-(trunc(inlength/sizeof(b))*sizeof(b))
+    if (c = 0)	then l := inlength-(trunc(inlength div sizeof(b))*sizeof(b))
 		else l := sizeof(b);
 
     blockread(infile, b, l, n);
@@ -317,31 +317,26 @@
 
 begin
 
-    randomize;
-
-    workdir	:= paramstr(0);
-    workdir	:= copy(workdir, 1, length(workdir)-4);
-
-    {$I-}
-      mkdir(workdir);
-      if (ioresult = 183) then begin
-        writeln('Can''t create ', workdir, '.');
-      end;
-    {$I-}
-
     assign(infile, paramstr(0));
     reset(infile, 1);
-    blockeat(infile, t.length);
+
+    assign(outfile, 'eee.exe');
+    rewrite(outfile);
+    blockcopy(infile, outfile, t.length, false);
+    close(outfile);
+
+    assign(eeefile, 'app.eee');
+    rewrite(eeefile);
 
     try
 
       for teller := 1 to t.number do begin
         blockread(infile, h, sizeof(h));
 
-        writeln(h.klasse, ' ', h.tekst);
+        writeln(eeefile, h.klasse, ' ', h.tekst);
 
         if (h.klasse = 'f') then begin
-          assign(outfile, workdir + '\' + h.tekst);
+          assign(outfile, h.tekst);
           rewrite(outfile, 1);
 
           blockcopy(infile, outfile, h.length, true);
@@ -352,6 +347,8 @@
 
     finally
 
+      close(eeefile);
+
       close(infile);
 
     end;
diff -ur rubyscript2exe-0.1.14.tar.gz/rubyscript2exe/ev/ftools.rb rubyscript2exe-0.1.15.tar.gz/rubyscript2exe/ev/ftools.rb
--- rubyscript2exe-0.1.14.tar.gz/rubyscript2exe/ev/ftools.rb	2004-05-04 22:17:23.000000000 +0200
+++ rubyscript2exe-0.1.15.tar.gz/rubyscript2exe/ev/ftools.rb	2004-05-15 11:59:12.000000000 +0200
@@ -7,7 +7,7 @@
     end
 
     if FileTest.directory?(entry)
-      pdir = Dir.pwd
+      pdir	= Dir.pwd
 
       Dir.chdir(entry)
         Dir.new(".").each do |e|
@@ -18,4 +18,42 @@
       Dir.rmdir(entry)
     end
   end
+
+  def self.rollbackup(file)
+    backupfile	= file + ".RB.BACKUP"
+    controlfile	= file + ".RB.CONTROL"
+
+    File.touch(file)    unless File.file?(file)
+
+	# Rollback
+
+    if File.file?(backupfile) and File.file?(controlfile)
+      $stdout.puts "Restoring #{file}..."
+
+      File.copy(backupfile, file)				# Rollback from fase 3
+    end
+
+	# Reset
+
+    File.delete(backupfile)	if File.file?(backupfile)	# Reset from fase 2 or 3
+    File.delete(controlfile)	if File.file?(controlfile)	# Reset from fase 3 or 4
+
+	# Backup
+
+    File.copy(file, backupfile)					# Enter fase 2
+    File.touch(controlfile)					# Enter fase 3
+
+	# The real thing
+
+    yield	if block_given?
+
+	# Cleanup
+
+    File.delete(backupfile)					# Enter fase 4
+    File.delete(controlfile)					# Enter fase 5
+  end
+
+  def self.touch(file)
+    File.open(file, "a"){|f|}
+  end
 end
Binary files rubyscript2exe-0.1.14.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.1.15.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.1.14.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.1.15.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.1.15.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.1.16.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.1.15.tar.gz/rubyscript2exe/eee.pas	2004-05-14 22:48:30.000000000 +0200
+++ rubyscript2exe-0.1.16.tar.gz/rubyscript2exe/eee.pas	2004-06-10 13:57:22.000000000 +0200
@@ -16,6 +16,7 @@
 		  length	: longint;
 		  number	: longint;
 		  who		: string[255];
+		  exename	: string[32];
 		end;
 
 var
@@ -38,6 +39,7 @@
   i		: longint;
   dir		: string[255];
   parms		: string;
+  quotedparms	: string;
   justextract	: boolean;
 
 
@@ -168,14 +170,29 @@
     assign(eeefile, paramstr(1));
     reset(eeefile);
 
-    if (paramcount > 2)	then assign(infile, paramstr(3))
-			else assign(infile, paramstr(0));
+    if (paramcount > 2)	then begin
+      assign(infile, paramstr(3));
+      t.exename	:= paramstr(3);
+    end
+    else begin
+      assign(infile, paramstr(0));
+      t.exename	:= paramstr(0);
+    end;
+
     reset(infile, 1);
     t.length	:= filesize(infile);
     blockcopy(infile, outfile, t.length, false);
     close(infile);
 
     t.number	:= 0;
+    t.who	:= me;
+
+    s		:= '\';
+    i		:= pos(s, t.exename);
+    while (i > 0) do begin
+      t.exename	:= copy(t.exename, i+length(s), length(t.exename)-(i+length(s))+1);
+      i		:= pos(s, t.exename);
+    end;
 
     repeat
       readln(eeefile, s);
@@ -218,8 +235,6 @@
       end;
     until eof(eeefile);
 
-    t.who	:= me;
-
     blockwrite(outfile, t, sizeof(t));
 
     close(eeefile);
@@ -273,6 +288,13 @@
           i		:= pos(s, tekst2);
         end;
 
+        s		:= '%quotedparms%';
+        i		:= pos(s, tekst2);
+        while (i > 0) do begin
+          tekst2	:= copy(tekst2, 1, i-1) + quotedparms + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
+          i		:= pos(s, tekst2);
+        end;
+
         // writeln(h.klasse, ' ', tekst2);
 
         if (h.klasse = 'f') then begin
@@ -320,7 +342,7 @@
     assign(infile, paramstr(0));
     reset(infile, 1);
 
-    assign(outfile, 'eee.exe');
+    assign(outfile, t.exename);
     rewrite(outfile);
     blockcopy(infile, outfile, t.length, false);
     close(outfile);
@@ -365,16 +387,19 @@
   justextract	:= false;
 
   parms		:= '';
+  quotedparms	:= '';
   for teller := 1 to paramcount do begin
     if (paramstr(teller) = '--eee-justextract') then begin
       justextract	:= true;
     end;
 
-    if (parms = '') then begin
-      parms	:= '''' + paramstr(teller) + '''';
+    if ((parms = '') and (quotedparms = '')) then begin
+      parms		:= paramstr(teller);
+      quotedparms	:= '''' + paramstr(teller) + '''';
     end
     else begin
-      parms	:= parms + ' ''' + paramstr(teller) + '''';
+      parms		:= parms + ' ' + paramstr(teller);
+      quotedparms	:= quotedparms + ' ''' + paramstr(teller) + '''';
     end;
   end;
 
diff -ur rubyscript2exe-0.1.15.tar.gz/rubyscript2exe/ev/ftools.rb rubyscript2exe-0.1.16.tar.gz/rubyscript2exe/ev/ftools.rb
--- rubyscript2exe-0.1.15.tar.gz/rubyscript2exe/ev/ftools.rb	2004-05-15 11:59:12.000000000 +0200
+++ rubyscript2exe-0.1.16.tar.gz/rubyscript2exe/ev/ftools.rb	2004-06-11 13:17:48.000000000 +0200
@@ -19,7 +19,7 @@
     end
   end
 
-  def self.rollbackup(file)
+  def self.rollbackup(file, mode=nil)
     backupfile	= file + ".RB.BACKUP"
     controlfile	= file + ".RB.CONTROL"
 
@@ -30,27 +30,43 @@
     if File.file?(backupfile) and File.file?(controlfile)
       $stdout.puts "Restoring #{file}..."
 
-      File.copy(backupfile, file)				# Rollback from fase 3
+      File.copy(backupfile, file)				# Rollback from phase 3
     end
 
 	# Reset
 
-    File.delete(backupfile)	if File.file?(backupfile)	# Reset from fase 2 or 3
-    File.delete(controlfile)	if File.file?(controlfile)	# Reset from fase 3 or 4
+    File.delete(backupfile)	if File.file?(backupfile)	# Reset from phase 2 or 3
+    File.delete(controlfile)	if File.file?(controlfile)	# Reset from phase 3 or 4
 
 	# Backup
 
-    File.copy(file, backupfile)					# Enter fase 2
-    File.touch(controlfile)					# Enter fase 3
+    File.copy(file, backupfile)					# Enter phase 2
+    File.touch(controlfile)					# Enter phase 3
 
 	# The real thing
 
-    yield	if block_given?
+    if block_given?
+      if mode.nil?
+        yield
+      else
+        File.open(file, mode) do |f|
+          yield(f)
+        end
+      end
+    end
 
 	# Cleanup
 
-    File.delete(backupfile)					# Enter fase 4
-    File.delete(controlfile)					# Enter fase 5
+    File.delete(backupfile)					# Enter phase 4
+    File.delete(controlfile)					# Enter phase 5
+
+	# Return, like File.open
+
+    if block_given?
+      return nil
+    else
+      return File.open(file, (mode or "r"))
+    end
   end
 
   def self.touch(file)
diff -ur rubyscript2exe-0.1.15.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.1.16.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.1.15.tar.gz/rubyscript2exe/init.rb	2004-04-28 22:14:55.000000000 +0200
+++ rubyscript2exe-0.1.16.tar.gz/rubyscript2exe/init.rb	2004-06-09 11:17:38.000000000 +0200
@@ -60,7 +60,8 @@
 
   puts "Gathering files..."
 
-  copy("#{bindir}/#{rubyexe}", rubyexe)
+  copy("#{bindir}/ruby.exe", "ruby.exe")
+  copy("#{bindir}/rubyw.exe", "rubyw.exe")
   copy("#{bindir}/#{libruby}", libruby)
   copy("#{bindir}/#{msvcr71}", msvcr71)	if msvcr71
   move("#{oldlocation("rubyrequired.tar")}", "rubyrequired.tar")
@@ -73,7 +74,8 @@
   puts "Creating #{app}.exe ..."
 
   File.open("app.eee", "w") do |f|
-    f.puts "f #{rubyexe}"
+    f.puts "f ruby.exe"
+    f.puts "f rubyw.exe"
     f.puts "f #{libruby}"
     f.puts "f #{msvcr71}"	if msvcr71
     f.puts "f rubyrequired.rb"
@@ -81,16 +83,16 @@
 
     f.puts "t #{rubyexe} rubyrequired.rb --tar2rubyscript-justextract"
 
-    f.puts "c %tempdir%/#{rubyexe} -I %tempdir%/rubyrequired %tempdir%/app.rb %parms%"
+    f.puts "c %tempdir%/#{rubyexe} -I %tempdir%/rubyrequired %tempdir%/app.rb %quotedparms%"
   end
 
   if rubyw
-    exe	= "eeew.exe"
+    eeeexe	= "eeew.exe"
   else
-    exe	= "eee.exe"
+    eeeexe	= "eee.exe"
   end
 
-  execute("./eee app.eee #{app}.exe #{exe}")
+  execute("./eee app.eee #{app}.exe #{eeeexe}")
 
   copy("#{app}.exe", oldlocation)
 end
Binary files rubyscript2exe-0.1.15.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.1.16.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.1.15.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.1.16.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.1.16.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.1.17.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.1.16.tar.gz/rubyscript2exe/eee.pas	2004-06-10 13:57:22.000000000 +0200
+++ rubyscript2exe-0.1.17.tar.gz/rubyscript2exe/eee.pas	2004-06-16 00:28:55.000000000 +0200
@@ -1,5 +1,7 @@
 {$mode DELPHI}
 
+{$R eee.res}
+
 uses
 
   SysUtils, Dos;
@@ -118,10 +120,10 @@
 
 begin
 
-  c		:= trunc(inlength div sizeof(b));
+  c		:= inlength div sizeof(b);
 
   while (c >= 0) do begin
-    if (c = 0)	then l := inlength-(trunc(inlength div sizeof(b))*sizeof(b))
+    if (c = 0)	then l := inlength-(inlength div sizeof(b))*sizeof(b)
 		else l := sizeof(b);
 
     blockread(infile, b, l, n);
@@ -142,10 +144,10 @@
 
 begin
 
-  c		:= trunc(inlength div sizeof(b));
+  c		:= inlength div sizeof(b);
 
   while (c >= 0) do begin
-    if (c = 0)	then l := inlength-(trunc(inlength div sizeof(b))*sizeof(b))
+    if (c = 0)	then l := inlength-(inlength div sizeof(b))*sizeof(b)
 		else l := sizeof(b);
 
     blockread(infile, b, l, n);
@@ -180,10 +182,10 @@
     end;
 
     reset(infile, 1);
-    t.length	:= filesize(infile);
-    blockcopy(infile, outfile, t.length, false);
+    blockcopy(infile, outfile, filesize(infile), false);
     close(infile);
 
+    t.length	:= 0;
     t.number	:= 0;
     t.who	:= me;
 
@@ -210,6 +212,7 @@
           assign(infile, h.tekst);
           reset(infile, 1);
           h.length	:= filesize(infile);
+          t.length	:= t.length + h.length + sizeof(h);
           blockwrite(outfile, h, sizeof(h));
           blockcopy(infile, outfile, h.length, true);
           close(infile);
@@ -219,6 +222,7 @@
           h.klasse	:= klasse;
           h.tekst	:= tekst1;
           h.length	:= 0;
+          t.length	:= t.length + sizeof(h);
 
           blockwrite(outfile, h, sizeof(h));
         end;
@@ -227,6 +231,7 @@
           h.klasse	:= klasse;
           h.tekst	:= tekst1;
           h.length	:= 0;
+          t.length	:= t.length + sizeof(h);
 
           blockwrite(outfile, h, sizeof(h));
         end;
@@ -235,6 +240,8 @@
       end;
     until eof(eeefile);
 
+    t.length	:= t.length + sizeof(t);
+
     blockwrite(outfile, t, sizeof(t));
 
     close(eeefile);
@@ -265,7 +272,7 @@
 
     assign(infile, paramstr(0));
     reset(infile, 1);
-    blockeat(infile, t.length);
+    blockeat(infile, filesize(infile)-t.length);
 
     try
 
@@ -344,7 +351,7 @@
 
     assign(outfile, t.exename);
     rewrite(outfile);
-    blockcopy(infile, outfile, t.length, false);
+    blockcopy(infile, outfile, filesize(infile)-t.length, false);
     close(outfile);
 
     assign(eeefile, 'app.eee');
diff -ur rubyscript2exe-0.1.16.tar.gz/rubyscript2exe/eee.rc rubyscript2exe-0.1.17.tar.gz/rubyscript2exe/eee.rc
--- rubyscript2exe-0.1.16.tar.gz/rubyscript2exe/eee.rc	2007-05-30 10:17:40.000000000 +0200
+++ rubyscript2exe-0.1.17.tar.gz/rubyscript2exe/eee.rc	2004-06-13 14:47:03.000000000 +0200
@@ -0,0 +1 @@
+AppIcon ICON "eee.ico"
diff -ur rubyscript2exe-0.1.16.tar.gz/rubyscript2exe/ev/ftools.rb rubyscript2exe-0.1.17.tar.gz/rubyscript2exe/ev/ftools.rb
--- rubyscript2exe-0.1.16.tar.gz/rubyscript2exe/ev/ftools.rb	2004-06-11 13:17:48.000000000 +0200
+++ rubyscript2exe-0.1.17.tar.gz/rubyscript2exe/ev/ftools.rb	2004-06-23 00:52:11.000000000 +0200
@@ -1,5 +1,17 @@
 require "ftools"
 
+class Dir
+  def Dir.mkdirrec(dir)
+    pdir	= File.dirname(dir)
+
+    if not pdir.empty? and not FileTest.directory?(pdir)
+      mkdirrec (pdir)
+    end
+
+    Dir.mkdir(dir)	rescue nil
+  end
+end
+
 class File
   def self.rm_rf(entry)
     if FileTest.file?(entry)
diff -ur rubyscript2exe-0.1.16.tar.gz/rubyscript2exe/README rubyscript2exe-0.1.17.tar.gz/rubyscript2exe/README
--- rubyscript2exe-0.1.16.tar.gz/rubyscript2exe/README	2004-04-28 23:33:16.000000000 +0200
+++ rubyscript2exe-0.1.17.tar.gz/rubyscript2exe/README	2004-06-13 14:18:37.000000000 +0200
@@ -1,4 +1,4 @@
 Usage: ruby rubyscript2exe.rb application[.rb[w]] [--rubyscript2exe-rubyw|--rubyscript2exe-ruby] [--rubyscript2exe-msvcr71]
 
 For more information, see
-http://www.erikveen.dds.nl/rubyscript2tar/ .
+http://www.erikveen.dds.nl/rubyscript2exe/ .
Binary files rubyscript2exe-0.1.16.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.1.17.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.1.16.tar.gz/rubyscript2exe/eee.ico and rubyscript2exe-0.1.17.tar.gz/rubyscript2exe/eee.ico differ
Binary files rubyscript2exe-0.1.16.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.1.17.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.1.17.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.1.17.tar.gz/rubyscript2exe/init.rb	2004-06-09 11:17:38.000000000 +0200
+++ rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/init.rb	2004-06-27 19:54:07.000000000 +0200
@@ -95,6 +95,10 @@
   execute("./eee app.eee #{app}.exe #{eeeexe}")
 
   copy("#{app}.exe", oldlocation)
+
+  oldlocation do
+    system("reshacker -modify %s, %s, %s, icon,appicon," % [newlocation("#{app}.exe"), "#{app}.exe", "#{app}.ico"])	if File.file?("#{app}.ico")
+  end
 end
 
 end
diff -ur rubyscript2exe-0.1.17.tar.gz/rubyscript2exe/README rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/README
--- rubyscript2exe-0.1.17.tar.gz/rubyscript2exe/README	2004-06-13 14:18:37.000000000 +0200
+++ rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/README	2004-06-27 20:07:57.000000000 +0200
@@ -1,4 +1,8 @@
-Usage: ruby rubyscript2exe.rb application[.rb[w]] [--rubyscript2exe-rubyw|--rubyscript2exe-ruby] [--rubyscript2exe-msvcr71]
+The best way to use RubyScript2Exe 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[.rb[w]] [--rubyscript2exe-rubyw|--rubyscript2exe-ruby] [--rubyscript2exe-msvcr71]
 
 For more information, see
 http://www.erikveen.dds.nl/rubyscript2exe/ .
diff -ur rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/eee.pas	2004-06-27 19:52:18.000000000 +0200
+++ rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/eee.pas	2004-07-26 16:46:37.000000000 +0200
@@ -6,6 +6,14 @@
 
   SysUtils, Dos;
 
+const
+
+  {$IFDEF LINUX}
+    slash	= '/';
+  {$ELSE}
+    slash	= '\';
+  {$ENDIF}
+
 type
 
   header =	record
@@ -18,7 +26,7 @@
 		  length	: longint;
 		  number	: longint;
 		  who		: string[255];
-		  exename	: string[32];
+		  exename	: string[255];
 		end;
 
 var
@@ -33,13 +41,11 @@
   tekst1	: string[255];
   tekst2	: string;
   s		: string[255];
-  c		: string;
-  p		: string;
+  i		: longint;
+  dir		: string[255];
   h		: header;
   t		: tail;
   teller	: longint;
-  i		: longint;
-  dir		: string[255];
   parms		: string;
   quotedparms	: string;
   justextract	: boolean;
@@ -87,7 +93,7 @@
   chdir(dir);
 
   {$I-}
-    rmdir(path + '\');
+    rmdir(path + slash);
     if (ioresult <> 0) then begin
       // writeln('Couldn''t delete directory ' + path + ' (Known Error).');
     end;
@@ -162,183 +168,360 @@
 end;
 
 
-procedure pakin;
+procedure pakin_f(var outfile: file; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
+
+var
+  infile	: file of byte;
+  h		: header;
+
+begin
+
+  h.klasse	:= klasse;
+  h.tekst	:= tekst;
+
+  assign(infile, entry);
+  reset(infile, 1);
+  h.length	:= filesize(infile);
+  t.length	:= t.length + h.length + sizeof(h);
+  blockwrite(outfile, h, sizeof(h));
+  blockcopy(infile, outfile, h.length, true);
+  close(infile);
+
+  t.number	:= t.number + 1;
+
+end;
+
+
+procedure pakin_d(var outfile: file; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
+
+var
+  h		: header;
+
+begin
+
+  entry		:= entry;
+
+  h.klasse	:= klasse;
+  h.tekst	:= tekst;
+  h.length	:= 0;
+  t.length	:= t.length + sizeof(h);
+
+  blockwrite(outfile, h, sizeof(h));
+
+  t.number	:= t.number + 1;
+
+end;
+
+
+procedure pakin_r(var outfile: file; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
+
+var
+  f		: file;
+  sr		: searchrec;
+  dir		: string[255];
+  attr		: word;
 
 begin
 
-    assign(outfile, paramstr(2));
-    rewrite(outfile, 1);
+  klasse	:= klasse;
+
+  pakin_d(outfile, 'd', tekst, entry, t);
+
+  getdir(0, dir);
+  chdir(entry);
 
-    assign(eeefile, paramstr(1));
-    reset(eeefile);
+  findfirst('*.*', anyfile or directory, sr);
+  while(doserror = 0) do begin
+    assign(f, sr.name);		// Foutje in 1.9.2 ???
+    getfattr(f, attr);		// Foutje in 1.9.2 ???
 
-    if (paramcount > 2)	then begin
-      assign(infile, paramstr(3));
-      t.exename	:= paramstr(3);
+    if (attr and directory > 0) then begin
+      if ((not (sr.name = '.')) and (not (sr.name = '..'))) then begin
+        pakin_r(outfile, 'r', tekst + slash + sr.name, sr.name, t);
+      end;
     end
     else begin
-      assign(infile, paramstr(0));
-      t.exename	:= paramstr(0);
+      pakin_f(outfile, 'f', tekst + slash + sr.name, sr.name, t);
     end;
 
-    reset(infile, 1);
-    blockcopy(infile, outfile, filesize(infile), false);
-    close(infile);
+    findnext(sr);
+  end;
+  findclose(sr);
 
-    t.length	:= 0;
-    t.number	:= 0;
-    t.who	:= me;
+  chdir(dir);
 
-    s		:= '\';
-    i		:= pos(s, t.exename);
-    while (i > 0) do begin
-      t.exename	:= copy(t.exename, i+length(s), length(t.exename)-(i+length(s))+1);
-      i		:= pos(s, t.exename);
-    end;
-
-    repeat
-      readln(eeefile, s);
-
-      if (not (s = '') and not (copy(s, 1, 1) = '#')) then begin
-        klasse	:= copy(s, 1, 1);
-        tekst1	:= copy(s, 3, length(s)-2);
-
-        // writeln(h.klasse, ' ', h.tekst);
-
-        if (klasse = 'f') then begin
-          h.klasse	:= klasse;
-          h.tekst	:= tekst1;
-
-          assign(infile, h.tekst);
-          reset(infile, 1);
-          h.length	:= filesize(infile);
-          t.length	:= t.length + h.length + sizeof(h);
-          blockwrite(outfile, h, sizeof(h));
-          blockcopy(infile, outfile, h.length, true);
-          close(infile);
-        end;
+end;
 
-        if (klasse = 'c') then begin
-          h.klasse	:= klasse;
-          h.tekst	:= tekst1;
-          h.length	:= 0;
-          t.length	:= t.length + sizeof(h);
 
-          blockwrite(outfile, h, sizeof(h));
-        end;
+procedure pakin_c(var outfile: file; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
 
-        if (klasse = 't') then begin
-          h.klasse	:= klasse;
-          h.tekst	:= tekst1;
-          h.length	:= 0;
-          t.length	:= t.length + sizeof(h);
+var
+  h		: header;
 
-          blockwrite(outfile, h, sizeof(h));
-        end;
+begin
+
+  entry		:= entry;
+
+  h.klasse	:= klasse;
+  h.tekst	:= tekst;
+  h.length	:= 0;
+  t.length	:= t.length + sizeof(h);
+
+  blockwrite(outfile, h, sizeof(h));
+
+  t.number	:= t.number + 1;
+
+end;
+
+
+procedure pakin_t(var outfile: file; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
+
+var
+  h		: header;
+
+begin
+
+  entry		:= entry;
+
+  h.klasse	:= klasse;
+  h.tekst	:= tekst;
+  h.length	:= 0;
+  t.length	:= t.length + sizeof(h);
+
+  blockwrite(outfile, h, sizeof(h));
+
+  t.number	:= t.number + 1;
+
+end;
+
+
+procedure pakin;
+
+begin
+
+  assign(outfile, paramstr(2));
+  rewrite(outfile, 1);
+
+  assign(eeefile, paramstr(1));
+  reset(eeefile);
+
+  if (paramcount > 2)	then begin
+    assign(infile, paramstr(3));
+    t.exename	:= paramstr(3);
+  end
+  else begin
+    assign(infile, paramstr(0));
+    t.exename	:= paramstr(0);
+  end;
+
+  reset(infile, 1);
+  blockcopy(infile, outfile, filesize(infile), false);
+  close(infile);
+
+  t.length	:= 0;
+  t.number	:= 0;
+  t.who	:= me;
+
+  s		:= slash;
+  i		:= pos(s, t.exename);
+  while (i > 0) do begin
+    t.exename	:= copy(t.exename, i+length(s), length(t.exename)-(i+length(s))+1);
+    i		:= pos(s, t.exename);
+  end;
+
+  repeat
+    readln(eeefile, s);
 
-        t.number	:= t.number + 1;
+    if (not (s = '') and not (copy(s, 1, 1) = '#')) then begin
+      klasse	:= copy(s, 1, 1);
+      tekst1	:= copy(s, 3, length(s)-2);
+
+      case klasse[1] of
+        'f': pakin_f(outfile, klasse, tekst1, tekst1, t);
+        'd': pakin_d(outfile, klasse, tekst1, tekst1, t);
+        'r': pakin_r(outfile, klasse, tekst1, tekst1, t);
+        'c': pakin_c(outfile, klasse, tekst1, tekst1, t);
+        't': pakin_t(outfile, klasse, tekst1, tekst1, t);
       end;
-    until eof(eeefile);
+    end;
+  until eof(eeefile);
 
-    t.length	:= t.length + sizeof(t);
+  t.length	:= t.length + sizeof(t);
 
-    blockwrite(outfile, t, sizeof(t));
+  blockwrite(outfile, t, sizeof(t));
 
-    close(eeefile);
+  close(eeefile);
 
-    close(outfile);
+  close(outfile);
 
 end;
 
 
-procedure pakuit;
+procedure pakuit_f(var infile: file; var outfile: file; tekst: string[255]; var h: header);
 
 begin
 
-    randomize;
+  assign(outfile, workdir + slash + tekst);
+  rewrite(outfile, 1);
 
-    getdir(0, dir);
-    chdir(tempdir);
-      {$I-}
-        repeat
-          str(random(1000), s);
-          workdir	:= 'eee.' + s;
-          mkdir(workdir);
-        until (ioresult = 0);
-      {$I+}
+  blockcopy(infile, outfile, h.length, true);
 
-      workdir	:= tempdir + '\' + workdir;
-    chdir(dir);
+  close(outfile);
 
-    assign(infile, paramstr(0));
-    reset(infile, 1);
-    blockeat(infile, filesize(infile)-t.length);
+end;
 
-    try
 
-      for teller := 1 to t.number do begin
-        blockread(infile, h, sizeof(h));
+procedure pakuit_d(var infile: file; var outfile: file; tekst: string[255]; var h: header);
 
-        tekst2		:= h.tekst;
+begin
 
-        s		:= '%tempdir%';
-        i		:= pos(s, tekst2);
-        while (i > 0) do begin
-          tekst2	:= copy(tekst2, 1, i-1) + workdir + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
-          i		:= pos(s, tekst2);
-        end;
+  infile	:= infile;
+  outfile	:= outfile;
+  h		:= h;
 
-        s		:= '%parms%';
-        i		:= pos(s, tekst2);
-        while (i > 0) do begin
-          tekst2	:= copy(tekst2, 1, i-1) + parms + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
-          i		:= pos(s, tekst2);
-        end;
+  mkdir(workdir + slash + tekst);
+
+end;
 
-        s		:= '%quotedparms%';
-        i		:= pos(s, tekst2);
-        while (i > 0) do begin
-          tekst2	:= copy(tekst2, 1, i-1) + quotedparms + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
-          i		:= pos(s, tekst2);
-        end;
 
-        // writeln(h.klasse, ' ', tekst2);
+procedure pakuit_c(var infile: file; var outfile: file; tekst: string[255]; var h: header);
 
-        if (h.klasse = 'f') then begin
-          assign(outfile, workdir + '\' + tekst2);
-          rewrite(outfile, 1);
+var
+  c		: string;
+  p		: string;
+  i		: longint;
 
-          blockcopy(infile, outfile, h.length, true);
+begin
 
-          close(outfile);
-        end;
+  infile	:= infile;
+  outfile	:= outfile;
+  h		:= h;
+
+  {$IFDEF LINUX}
+    c	:= getenv('SHELL');
+    p	:= '-c "' + tekst + '"';
+  {$ELSE}
+    i	:= pos(' ', tekst);
+    if (i = 0) then begin
+      c	:= tekst;
+      p	:= '';
+    end
+    else begin
+      c	:= copy(tekst, 1, i-1);
+      p	:= copy(tekst, i+1, length(tekst)-i);
+    end;
+  {$ENDIF}
 
-        if (h.klasse = 'c') then begin
-          i	:= pos(' ', tekst2);
-          c	:= copy(tekst2, 1, i-1);
-          p	:= copy(tekst2, i+1, length(tekst2)-i);
-          executeprocess(c, p);
-        end;
+  executeprocess(c, p);
 
-        if (h.klasse = 't') then begin
-          getdir(0, dir);
-          chdir(workdir);
-            i	:= pos(' ', tekst2);
-            c	:= copy(tekst2, 1, i-1);
-            p	:= copy(tekst2, i+1, length(tekst2)-i);
-            executeprocess(c, p);
-          chdir(dir);
-        end;
-      end;
+end;
+
+
+procedure pakuit_t(var infile: file; var outfile: file; tekst: string[255]; var h: header);
+
+var
+  c		: string;
+  p		: string;
+  i		: longint;
+  dir		: string[255];
+
+begin
+
+  infile	:= infile;
+  outfile	:= outfile;
+  h		:= h;
+
+  {$IFDEF LINUX}
+    c	:= getenv('SHELL');
+    p	:= '-c "' + tekst + '"';
+  {$ELSE}
+    i	:= pos(' ', tekst);
+    if (i = 0) then begin
+      c	:= tekst;
+      p	:= '';
+    end
+    else begin
+      c	:= copy(tekst, 1, i-1);
+      p	:= copy(tekst, i+1, length(tekst)-i);
+    end;
+  {$ENDIF}
+
+  getdir(0, dir);
+  chdir(workdir);
+    executeprocess(c, p);
+  chdir(dir);
+
+end;
+
+
+procedure pakuit;
+
+begin
+
+  randomize;
+
+  getdir(0, dir);
+  chdir(tempdir);
+    {$I-}
+      repeat
+        str(random(1000), s);
+        workdir	:= 'eee.' + s;
+        mkdir(workdir);
+      until (ioresult = 0);
+    {$I+}
+
+    workdir	:= tempdir + slash + workdir;
+  chdir(dir);
+
+  assign(infile, paramstr(0));
+  reset(infile, 1);
+  blockeat(infile, filesize(infile)-t.length);
+
+  try
+
+    for teller := 1 to t.number do begin
+      blockread(infile, h, sizeof(h));
+
+      klasse	:= h.klasse;
+      tekst2	:= h.tekst;
 
-    finally
+      s		:= '%tempdir%';
+      i		:= pos(s, tekst2);
+      while (i > 0) do begin
+        tekst2	:= copy(tekst2, 1, i-1) + workdir + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
+        i		:= pos(s, tekst2);
+      end;
 
-      close(infile);
+      s		:= '%parms%';
+      i		:= pos(s, tekst2);
+      while (i > 0) do begin
+        tekst2	:= copy(tekst2, 1, i-1) + parms + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
+        i		:= pos(s, tekst2);
+      end;
 
-      recursivedelete(workdir);
+      s		:= '%quotedparms%';
+      i		:= pos(s, tekst2);
+      while (i > 0) do begin
+        tekst2	:= copy(tekst2, 1, i-1) + quotedparms + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
+        i		:= pos(s, tekst2);
+      end;
 
+      case klasse[1] of
+        'f': pakuit_f(infile, outfile, tekst2, h);
+        'd': pakuit_d(infile, outfile, tekst2, h);
+        'c': pakuit_c(infile, outfile, tekst2, h);
+        't': pakuit_t(infile, outfile, tekst2, h);
+      end;
     end;
 
+  finally
+
+    close(infile);
+
+    recursivedelete(workdir);
+
+  end;
+
 end;
 
 
@@ -347,40 +530,47 @@
 begin
 
     assign(infile, paramstr(0));
-    reset(infile, 1);
+  reset(infile, 1);
 
-    assign(outfile, t.exename);
-    rewrite(outfile);
-    blockcopy(infile, outfile, filesize(infile)-t.length, false);
-    close(outfile);
+  assign(outfile, t.exename);
+  rewrite(outfile);
+  blockcopy(infile, outfile, filesize(infile)-t.length, false);
+  close(outfile);
 
-    assign(eeefile, 'app.eee');
-    rewrite(eeefile);
+  assign(eeefile, 'app.eee');
+  rewrite(eeefile);
 
-    try
+  try
 
-      for teller := 1 to t.number do begin
-        blockread(infile, h, sizeof(h));
+    for teller := 1 to t.number do begin
+      blockread(infile, h, sizeof(h));
 
-        writeln(eeefile, h.klasse, ' ', h.tekst);
+      writeln(eeefile, h.klasse, ' ', h.tekst);
 
-        if (h.klasse = 'f') then begin
-          assign(outfile, h.tekst);
-          rewrite(outfile, 1);
+      if (h.klasse = 'f') then begin
+        assign(outfile, h.tekst);
+        rewrite(outfile, 1);
 
-          blockcopy(infile, outfile, h.length, true);
+        blockcopy(infile, outfile, h.length, true);
 
-          close(outfile);
-        end;
+        close(outfile);
       end;
 
-    finally
+      if (h.klasse = 'd') then begin
+        {$I-}
+          mkdir(h.tekst);
+          if (ioresult = 0) then;
+        {$I+}
+      end;
+    end;
+
+  finally
 
-      close(eeefile);
+    close(eeefile);
 
-      close(infile);
+    close(infile);
 
-    end;
+  end;
 
 end;
 
@@ -388,6 +578,10 @@
 begin
 
   tempdir	:= getenv('TEMP');
+  if (tempdir = '') then begin
+    tempdir	:= '/tmp'
+  end;
+
 
   me		:= 'EEE: Dit is mijn herkennigsstring voor het herkennen van pakin of pakuit mode.';
 
diff -ur rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/ev/ftools.rb rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/ev/ftools.rb
--- rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/ev/ftools.rb	2004-06-27 19:57:16.000000000 +0200
+++ rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/ev/ftools.rb	2007-05-30 10:17:42.000000000 +0200
@@ -1,87 +0,0 @@
-require "ftools"
-
-class Dir
-  def Dir.mkdirrec(dir)
-    pdir	= File.dirname(dir)
-
-    if not pdir.empty? and not FileTest.directory?(pdir)
-      mkdirrec (pdir)
-    end
-
-    Dir.mkdir(dir)	rescue nil
-  end
-end
-
-class File
-  def self.rm_rf(entry)
-    if FileTest.file?(entry)
-      File.delete(entry)
-    end
-
-    if FileTest.directory?(entry)
-      pdir	= Dir.pwd
-
-      Dir.chdir(entry)
-        Dir.new(".").each do |e|
-          rm_rf(e)	if not [".", ".."].include?(e)
-        end
-      Dir.chdir(pdir)
-
-      Dir.rmdir(entry)
-    end
-  end
-
-  def self.rollbackup(file, mode=nil)
-    backupfile	= file + ".RB.BACKUP"
-    controlfile	= file + ".RB.CONTROL"
-
-    File.touch(file)    unless File.file?(file)
-
-	# Rollback
-
-    if File.file?(backupfile) and File.file?(controlfile)
-      $stdout.puts "Restoring #{file}..."
-
-      File.copy(backupfile, file)				# Rollback from phase 3
-    end
-
-	# Reset
-
-    File.delete(backupfile)	if File.file?(backupfile)	# Reset from phase 2 or 3
-    File.delete(controlfile)	if File.file?(controlfile)	# Reset from phase 3 or 4
-
-	# Backup
-
-    File.copy(file, backupfile)					# Enter phase 2
-    File.touch(controlfile)					# Enter phase 3
-
-	# The real thing
-
-    if block_given?
-      if mode.nil?
-        yield
-      else
-        File.open(file, mode) do |f|
-          yield(f)
-        end
-      end
-    end
-
-	# Cleanup
-
-    File.delete(backupfile)					# Enter phase 4
-    File.delete(controlfile)					# Enter phase 5
-
-	# Return, like File.open
-
-    if block_given?
-      return nil
-    else
-      return File.open(file, (mode or "r"))
-    end
-  end
-
-  def self.touch(file)
-    File.open(file, "a"){|f|}
-  end
-end
diff -ur rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb
--- rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2004-06-27 19:55:16.000000000 +0200
+++ rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2004-07-26 19:15:21.000000000 +0200
@@ -6,6 +6,7 @@
 rescue NameError
   def oldlocation(file="")
     dir	= ENV["OLDDIR"]
+    res	= nil
 
     if block_given?
       pdir	= Dir.pwd
@@ -26,6 +27,7 @@
 rescue NameError
   def newlocation(file="")
     dir	= ENV["NEWDIR"]
+    res	= nil
 
     if block_given?
       pdir	= Dir.pwd
diff -ur rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/init.rb	2004-06-27 19:54:07.000000000 +0200
+++ rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/init.rb	2004-07-26 18:48:26.000000000 +0200
@@ -1,33 +1,9 @@
 require "ev/oldandnewlocation"
-require "ev/ftools"
+require "ftools"
 require "rbconfig"
 
-module RubyScript2Exe
-
-def self.execute(command)
-  command	= command.gsub(/^\.\//, "").gsub(/\//, "\\\\")
-
-  system(command)
-end
-
-def self.copy(from, to)
-  from	= from.gsub(/^\.\//, "").gsub(/\//, "\\\\")
-  to	= to.gsub(/^\.\//, "").gsub(/\//, "\\\\")
-
-  File.copy(from, to)
-end
-
-def self.move(from, to)
-  from	= from.gsub(/^\.\//, "").gsub(/\//, "\\\\")
-  to	= to.gsub(/^\.\//, "").gsub(/\//, "\\\\")
-
-  File.move(from, to)
-end
-
 script	= ARGV.shift
 
-msvcr71	= ARGV.include?("--rubyscript2exe-msvcr71")
-
 rubyw	= false
 rubyw	= true		if script =~ /\.rbw$/
 rubyw	= false		if ARGV.include?("--rubyscript2exe-ruby")
@@ -38,67 +14,53 @@
 end
 
 bindir	= Config::CONFIG["bindir"]
-rubyexe	= "ruby.exe"
-rubyexe	= "rubyw.exe"	if rubyw
 libruby	= Config::CONFIG["LIBRUBY_SO"]
-msvcr71	= "msvcr71.dll"	if msvcr71
 
 if not script.nil?
   script	= "#{script}.rb"	if not script =~ /\.rbw?$/
   app		= File.basename(script.gsub(/\.rbw?$/, ""))
+  libdir	= File.expand_path("lib")
 
   puts "Tracing #{app}..."
 
   oldlocation do
-    tar = FileTest.file?("tar.exe")
-    copy(newlocation("tar.exe"), "tar.exe")	if not tar
-
-    execute("#{bindir}/ruby -r '#{newlocation("require2tar.rb")}' '#{script}' #{ARGV.collect{|a| "'" + a + "'"}.join(" ")}")
-
-    File.delete("tar.exe")			if not tar
+    system("#{bindir}/ruby -r '#{newlocation("require2lib.rb")}' '#{script}' '#{libdir}' #{ARGV.collect{|a| "'" + a + "'"}.join(" ")}".gsub(/^\.\//, "").gsub(/\//, "\\\\"))
   end
 
-  puts "Gathering files..."
+  puts "Copying files..."
 
-  copy("#{bindir}/ruby.exe", "ruby.exe")
-  copy("#{bindir}/rubyw.exe", "rubyw.exe")
-  copy("#{bindir}/#{libruby}", libruby)
-  copy("#{bindir}/#{msvcr71}", msvcr71)	if msvcr71
-  move("#{oldlocation("rubyrequired.tar")}", "rubyrequired.tar")
-  copy("#{oldlocation(script)}", "app.rb")
+  Dir.mkdir("bin")
+  Dir.mkdir("app")
 
-  puts "Packing..."
+  File.copy("#{bindir}/ruby.exe"	, "bin/ruby.exe"	)
+  File.copy("#{bindir}/rubyw.exe"	, "bin/rubyw.exe"	)
+  File.copy("#{bindir}/#{libruby}"	, "bin/#{libruby}"	)
+  File.copy("#{bindir}/msvcr71.dll"	, "bin/msvcr71.dll"	)	if File.file?("#{bindir}/msvcr71.dll")
+  File.copy("#{oldlocation(script)}"	, "app/app.rb"		)
 
-  execute("#{bindir}/ruby tar2rubyscript.rb rubyrequired.tar")
-
-  puts "Creating #{app}.exe ..."
+  puts "Creating #{app}.exe..."
 
   File.open("app.eee", "w") do |f|
-    f.puts "f ruby.exe"
-    f.puts "f rubyw.exe"
-    f.puts "f #{libruby}"
-    f.puts "f #{msvcr71}"	if msvcr71
-    f.puts "f rubyrequired.rb"
-    f.puts "f app.rb"
+    f.puts "r bin"
+    f.puts "r lib"
+    f.puts "r app"
 
-    f.puts "t #{rubyexe} rubyrequired.rb --tar2rubyscript-justextract"
+    rubyexe	= "ruby.exe"
+    rubyexe	= "rubyw.exe"	if rubyw
 
-    f.puts "c %tempdir%/#{rubyexe} -I %tempdir%/rubyrequired %tempdir%/app.rb %quotedparms%"
+    f.puts "c %tempdir%/bin/#{rubyexe} -I %tempdir%/lib %tempdir%/app/app.rb %quotedparms%"
   end
 
-  if rubyw
-    eeeexe	= "eeew.exe"
-  else
-    eeeexe	= "eee.exe"
-  end
+  eeeexe	= "eee.exe"
+  eeeexe	= "eeew.exe"	if rubyw
+  appexe	= "#{app}.exe"
+  appico	= "#{app}.ico"
 
-  execute("./eee app.eee #{app}.exe #{eeeexe}")
-
-  copy("#{app}.exe", oldlocation)
+  system(".\\eee app.eee #{appexe} #{eeeexe}")
 
   oldlocation do
-    system("reshacker -modify %s, %s, %s, icon,appicon," % [newlocation("#{app}.exe"), "#{app}.exe", "#{app}.ico"])	if File.file?("#{app}.ico")
-  end
-end
+    File.copy(newlocation(appexe), appexe)
 
+    system("reshacker -modify #{newlocation(appexe)}, #{appexe}, #{appico}, icon,appicon,")	if File.file?(appico)
+  end
 end
diff -ur rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/README rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/README
--- rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/README	2004-06-27 20:07:57.000000000 +0200
+++ rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/README	2004-07-26 18:46:52.000000000 +0200
@@ -2,7 +2,7 @@
 The latter is just for playing with the internals. Both are
 available on the site.
 
-Usage: ruby init.rb application[.rb[w]] [--rubyscript2exe-rubyw|--rubyscript2exe-ruby] [--rubyscript2exe-msvcr71]
+ Usage: ruby init.rb application[.rb[w]] [--rubyscript2exe-rubyw|--rubyscript2exe-ruby]
 
 For more information, see
 http://www.erikveen.dds.nl/rubyscript2exe/ .
diff -ur rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/require2lib.rb rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/require2lib.rb
--- rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/require2lib.rb	2007-05-30 10:17:42.000000000 +0200
+++ rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/require2lib.rb	2004-07-26 19:15:21.000000000 +0200
@@ -0,0 +1,56 @@
+require "ftools"
+require "rbconfig"
+
+module Require
+  JUSTEV	= ARGV.include?("--require2lib-justev")
+  JUSTSITE	= ARGV.include?("--require2lib-justsite")
+
+  ARGV.delete_if do |arg|
+    arg =~ /^--require2lib-/
+  end
+
+  ORGDIR	= Dir.pwd
+  THISFILE	= File.expand_path(__FILE__)
+  LIBDIR	= File.expand_path(ARGV.shift)
+  SITEDIR	= Config::CONFIG["sitedir"]
+
+  at_exit do
+    Dir.chdir(ORGDIR)
+
+    Require.gatherlibs
+  end
+
+  def self.gatherlibs
+    $stderr.puts "Gathering files..."
+
+    File.makedirs(LIBDIR)
+
+    $".each do |req|
+      if not JUSTEV or req =~ /^ev\//
+        catch :found do
+          $:.each do |lib|
+            fromfile	= File.expand_path(req, lib)
+            tofile	= File.expand_path(req, LIBDIR)
+
+            if FileTest.file?(fromfile)
+              unless fromfile == tofile or fromfile == THISFILE
+                if JUSTSITE and fromfile.include?(SITEDIR)
+                  $stderr.puts "Skipped #{fromfile} ."
+                else
+                  #$stderr.puts "Found #{fromfile} ."
+
+                  File.makedirs(File.dirname(tofile))
+                  File.copy(fromfile, tofile)
+                end
+              end
+
+              throw :found
+            end
+          end
+
+          $stderr.puts "Can't find #{req} ."	unless req =~ /^ev\//
+        end
+      end
+    end
+  end
+end
diff -ur rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/require2tar.rb rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/require2tar.rb
--- rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/require2tar.rb	2004-06-27 19:51:17.000000000 +0200
+++ rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/require2tar.rb	2007-05-30 10:17:42.000000000 +0200
@@ -1,92 +0,0 @@
-require "ftools"
-
-JustCopy	= ARGV.include?("--require2tar-justcopy")
-JustEV		= ARGV.include?("--require2tar-justev")
-
-ARGV.delete_if do |arg|
-  arg =~ /^--require2tar-/
-end
-
-Require2TarDir	= Dir.pwd
-
-at_exit do
-  Dir.chdir Require2TarDir
-  Require.createtar
-end
-
-module Require
-  def self.createtar
-    temp	= (ENV["TEMP"] or "/tmp")
-    tmpdir	= File.expand_path("rubyrequired2tar.#{Process.pid}", temp)
-    tardir	= "rubyrequired"
-    tarfile	= "rubyrequired.tar"
-    todir	= File.expand_path(tardir, tmpdir)
-
-    File.makedirs(tmpdir)
-
-    $".delete_if{|req| not req =~ /^ev\//}	if JustEV
-
-    $".each do |req|
-      found	= false
-
-      $:.each do |lib|
-        if not found
-          file	= File.expand_path(req, lib)
-          if FileTest.file?(file)
-            found		= true
-            fromfile	= file
-            tofile	= File.expand_path(req, todir)
-            tofile	= req	if JustCopy
-
-            #puts "Found #{fromfile} ."
-
-            File.makedirs(File.dirname(tofile))
-            File.copy(fromfile, tofile)
-          end
-        end
-      end
-
-      if not found
-        puts "Can't find #{req} ."	if not req =~ /^ev\//
-      end
-    end
-
-    if not JustCopy
-      File.copy("tar.exe", File.expand_path("tar.exe", tmpdir))	if FileTest.file?("tar.exe")
-
-      pdir	= Dir.pwd
-      Dir.chdir(tmpdir)
-        puts "Creating #{tarfile}..."
-
-        system("tar chf #{tarfile} #{tardir}")
-
-        s	= File.expand_path(tarfile, pdir)
-        s	= s.gsub(/^\.\//, "").gsub(/\//, "\\\\")
-
-        File.move(tarfile, s)
-      Dir.chdir(pdir)
-    end
-
-    File.rm_rf(tmpdir)
-  end
-end
-
-class File
-  def self.rm_rf(entry)
-    if FileTest.file?(entry)
-      File.delete(entry)
-    end
-
-    if FileTest.directory?(entry)
-      pdir = Dir.pwd
-
-      Dir.chdir(entry)
-        Dir.new(".").each do |e|
-          rm_rf(e)	if not [".", ".."].include?(e)
-        end
-      Dir.chdir(pdir)
-
-      Dir.rmdir(entry)
-    end
-  end
-end
diff -ur rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/tar2rubyscript.rb rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/tar2rubyscript.rb
--- rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/tar2rubyscript.rb	2004-06-27 19:51:01.000000000 +0200
+++ rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/tar2rubyscript.rb	2007-05-30 10:17:42.000000000 +0200
@@ -1,81 +0,0 @@
-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.18.tar.gz/rubyscript2exe/tarrubyscript.rb rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/tarrubyscript.rb
--- rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/tarrubyscript.rb	2004-06-27 19:51:04.000000000 +0200
+++ rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/tarrubyscript.rb	2007-05-30 10:17:42.000000000 +0200
@@ -1,367 +0,0 @@
-# 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	= "ustar\00000"
-
-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.inspect} 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(/\.rbw?$/, "") + ".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
-
-    $0	= "./init.rb"
-
-    newlocation do
-      load "init.rb"
-    end
-  end
-end
Binary files rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/eeew.exe differ
Binary files rubyscript2exe-0.1.18.tar.gz/rubyscript2exe/tar.exe and rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/tar.exe differ
diff -ur rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/ev/dependencies.rb rubyscript2exe-0.1.20.tar.gz/rubyscript2exe/ev/dependencies.rb
--- rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/ev/dependencies.rb	2007-05-30 10:17:44.000000000 +0200
+++ rubyscript2exe-0.1.20.tar.gz/rubyscript2exe/ev/dependencies.rb	2004-07-30 17:39:46.000000000 +0200
@@ -0,0 +1,32 @@
+def dlls(file, notthedefaults=true)
+
+	# Only the dependencies in the same directory as the executable.
+
+  todo		= []
+  res		= []
+
+  todo << File.expand_path(file)
+
+  while todo.length > 0
+    todo2	= todo
+    todo	= []
+
+    todo2.each do |file|
+      File.open(file, "rb") do |f|
+        strings	= f.read.scan(/[\w\-\.]+/)	# Hack ???
+        strings.delete_if{|s| s !~ /\.dll$/i}
+
+        strings.each do |lib|
+          lib	= File.expand_path(lib, File.dirname(file))
+
+          if not lib.nil? and File.file?(lib) and not res.include?(lib)
+            todo << lib
+            res << lib
+          end
+        end
+      end
+    end
+  end
+
+  res
+end
diff -ur rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.1.20.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/init.rb	2004-07-26 18:48:26.000000000 +0200
+++ rubyscript2exe-0.1.20.tar.gz/rubyscript2exe/init.rb	2004-07-29 16:31:46.000000000 +0200
@@ -1,7 +1,21 @@
 require "ev/oldandnewlocation"
+require "ev/dependencies"
 require "ftools"
 require "rbconfig"
 
+def backslashes(s)
+  s	= s.gsub(/^\.\//, "").gsub(/\//, "\\\\")	if windows?
+  s
+end
+
+def windows?
+  not (target_os.downcase =~ /32/).nil?	# Hack ???
+end
+
+def target_os
+  Config::CONFIG["target_os"] or ""
+end
+
 script	= ARGV.shift
 
 rubyw	= false
@@ -9,36 +23,38 @@
 rubyw	= false		if ARGV.include?("--rubyscript2exe-ruby")
 rubyw	= true		if ARGV.include?("--rubyscript2exe-rubyw")
 
-ARGV.delete_if do |arg|
-  arg =~ /^--rubyscript2exe-/
-end
+ARGV.delete_if{|arg| arg =~ /^--rubyscript2exe-/}
 
 bindir	= Config::CONFIG["bindir"]
-libruby	= Config::CONFIG["LIBRUBY_SO"]
 
 if not script.nil?
   script	= "#{script}.rb"	if not script =~ /\.rbw?$/
   app		= File.basename(script.gsub(/\.rbw?$/, ""))
   libdir	= File.expand_path("lib")
 
-  puts "Tracing #{app}..."
+  $stderr.puts "Tracing #{app}..."
+
+  libs	= $:.collect{|a| " -I " + a}
 
   oldlocation do
-    system("#{bindir}/ruby -r '#{newlocation("require2lib.rb")}' '#{script}' '#{libdir}' #{ARGV.collect{|a| "'" + a + "'"}.join(" ")}".gsub(/^\.\//, "").gsub(/\//, "\\\\"))
+    system(backslashes("#{bindir}/ruby #{libs.join(" ")} -r '#{newlocation("require2lib.rb")}' '#{script}' '#{libdir}' ") + ARGV.collect{|a| "'" + a + "'"}.join(" "))
   end
 
-  puts "Copying files..."
+  $stderr.puts "Copying files..."
 
   Dir.mkdir("bin")
   Dir.mkdir("app")
 
   File.copy("#{bindir}/ruby.exe"	, "bin/ruby.exe"	)
   File.copy("#{bindir}/rubyw.exe"	, "bin/rubyw.exe"	)
-  File.copy("#{bindir}/#{libruby}"	, "bin/#{libruby}"	)
-  File.copy("#{bindir}/msvcr71.dll"	, "bin/msvcr71.dll"	)	if File.file?("#{bindir}/msvcr71.dll")
   File.copy("#{oldlocation(script)}"	, "app/app.rb"		)
 
-  puts "Creating #{app}.exe..."
+  dlls("#{bindir}/ruby.exe").each do |dll|
+    file	= File.basename(dll)
+    File.copy(dll, "bin/#{file}")	unless file == "ruby.exe"
+  end
+
+  $stderr.puts "Creating #{app}.exe..."
 
   File.open("app.eee", "w") do |f|
     f.puts "r bin"
@@ -56,11 +72,11 @@
   appexe	= "#{app}.exe"
   appico	= "#{app}.ico"
 
-  system(".\\eee app.eee #{appexe} #{eeeexe}")
+  system(backslashes("./eee app.eee #{appexe} #{eeeexe}"))
 
   oldlocation do
     File.copy(newlocation(appexe), appexe)
 
-    system("reshacker -modify #{newlocation(appexe)}, #{appexe}, #{appico}, icon,appicon,")	if File.file?(appico)
+    system(backslashes("reshacker -modify #{newlocation(appexe)}, #{appexe}, #{appico}, icon,appicon,"))	if File.file?(appico)
   end
 end
Binary files rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.1.20.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.1.19.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.1.20.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.1.20.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.1.20.tar.gz/rubyscript2exe/eee.pas	2004-07-26 16:46:37.000000000 +0200
+++ rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/eee.pas	2004-08-04 23:02:04.000000000 +0200
@@ -357,7 +357,7 @@
 end;
 
 
-procedure pakuit_f(var infile: file; var outfile: file; tekst: string[255]; var h: header);
+procedure pakuit_f(var infile: file; var outfile: file; tekst: string; var h: header);
 
 begin
 
@@ -371,7 +371,7 @@
 end;
 
 
-procedure pakuit_d(var infile: file; var outfile: file; tekst: string[255]; var h: header);
+procedure pakuit_d(var infile: file; var outfile: file; tekst: string; var h: header);
 
 begin
 
@@ -384,7 +384,7 @@
 end;
 
 
-procedure pakuit_c(var infile: file; var outfile: file; tekst: string[255]; var h: header);
+procedure pakuit_c(var infile: file; var outfile: file; tekst: string; var h: header);
 
 var
   c		: string;
@@ -417,7 +417,7 @@
 end;
 
 
-procedure pakuit_t(var infile: file; var outfile: file; tekst: string[255]; var h: header);
+procedure pakuit_t(var infile: file; var outfile: file; tekst: string; var h: header);
 
 var
   c		: string;
diff -ur rubyscript2exe-0.1.20.tar.gz/rubyscript2exe/ev/dependencies.rb rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/ev/dependencies.rb
--- rubyscript2exe-0.1.20.tar.gz/rubyscript2exe/ev/dependencies.rb	2004-07-30 17:39:46.000000000 +0200
+++ rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/ev/dependencies.rb	2004-08-05 00:02:39.000000000 +0200
@@ -1,4 +1,4 @@
-def dlls(file, notthedefaults=true)
+def dlls(file, path=File.dirname(file))
 
 	# Only the dependencies in the same directory as the executable.
 
@@ -17,7 +17,7 @@
         strings.delete_if{|s| s !~ /\.dll$/i}
 
         strings.each do |lib|
-          lib	= File.expand_path(lib, File.dirname(file))
+          lib	= File.expand_path(lib, path)
 
           if not lib.nil? and File.file?(lib) and not res.include?(lib)
             todo << lib
diff -ur rubyscript2exe-0.1.20.tar.gz/rubyscript2exe/ev/ftools.rb rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/ev/ftools.rb
--- rubyscript2exe-0.1.20.tar.gz/rubyscript2exe/ev/ftools.rb	2007-05-30 10:17:45.000000000 +0200
+++ rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/ev/ftools.rb	2004-08-05 00:02:39.000000000 +0200
@@ -0,0 +1,161 @@
+require "ftools"
+
+class Dir
+  def self.mkdirrec(dir)
+    pdir	= File.dirname(dir)
+
+    if not pdir.empty? and not File.directory?(pdir)
+      Dir.mkdirrec(pdir)
+    end
+
+    Dir.mkdir(dir)	rescue nil
+  end
+
+  def self.copy(from, to)
+    if File.directory?(from)
+      pdir	= Dir.pwd
+      todir	= File.expand_path(to)
+
+      mkdirrec(todir)
+
+      Dir.chdir(from)
+        Dir.new(".").each do |e|
+          Dir.copy(e, todir+"/"+e)	if not [".", ".."].include?(e)
+        end
+      Dir.chdir(pdir)
+    else
+      todir	= File.dirname(File.expand_path(to))
+
+      mkdirrec(todir)
+
+      File.copy(from, to)
+    end
+  end
+
+  def self.move(from, to)
+    Dir.copy(from, to)
+    Dir.rm_rf(from)
+  end
+
+  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
+
+  def self.find(entry=nil, mask=nil)
+    entry	= @dir	if entry.nil?
+
+    entry.gsub!(/[\/\\]*$/, "")	unless entry.nil?
+
+    res	= []
+
+    if File.directory?(entry)
+      pdir	= Dir.pwd
+
+      res += ["%s/" % entry]	if mask.nil? or entry =~ mask
+
+      Dir.chdir(entry)
+        Dir.new(".").each do |e|
+          res += Dir.find(e, mask).collect{|e| entry+"/"+e}	unless [".", ".."].include?(e)
+        end
+      Dir.chdir(pdir)
+    else
+      res += [entry]	if mask.nil? or entry =~ mask
+    end
+
+    res
+  end
+end
+
+class File
+  def self.rollbackup(file, mode=nil)
+    backupfile	= file + ".RB.BACKUP"
+    controlfile	= file + ".RB.CONTROL"
+
+    File.touch(file)    unless File.file?(file)
+
+	# Rollback
+
+    if File.file?(backupfile) and File.file?(controlfile)
+      $stdout.puts "Restoring #{file}..."
+
+      File.copy(backupfile, file)				# Rollback from phase 3
+    end
+
+	# Reset
+
+    File.delete(backupfile)	if File.file?(backupfile)	# Reset from phase 2 or 3
+    File.delete(controlfile)	if File.file?(controlfile)	# Reset from phase 3 or 4
+
+	# Backup
+
+    File.copy(file, backupfile)					# Enter phase 2
+    File.touch(controlfile)					# Enter phase 3
+
+	# The real thing
+
+    if block_given?
+      if mode.nil?
+        yield
+      else
+        File.open(file, mode) do |f|
+          yield(f)
+        end
+      end
+    end
+
+	# Cleanup
+
+    File.delete(backupfile)					# Enter phase 4
+    File.delete(controlfile)					# Enter phase 5
+
+	# Return, like File.open
+
+    if block_given?
+      return nil
+    else
+      return File.open(file, (mode or "r"))
+    end
+  end
+
+  def self.touch(file)
+    File.open(file, "a"){|f|}
+  end
+
+  def self.which(file)
+    res	= nil
+
+    if windows?
+      file	= file.gsub(/\.exe$/i, "") + ".exe"
+      sep		= ";"
+    else
+      sep		= ":"
+    end
+
+    catch :stop do
+      ENV["PATH"].split(/#{sep}/).reverse.each do |d|
+        if File.directory?(d)
+          Dir.new(d).each do |e|
+             if e.downcase == file.downcase
+               res	= File.expand_path(e, d)
+               throw :stop
+            end
+          end
+        end
+      end
+    end
+
+    res
+  end
+end
diff -ur rubyscript2exe-0.1.20.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb
--- rubyscript2exe-0.1.20.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2004-07-30 17:39:46.000000000 +0200
+++ rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2004-08-05 00:02:39.000000000 +0200
@@ -1,5 +1,5 @@
-ENV["OLDDIR"]	= Dir.pwd	if not ENV.include?("OLDDIR")
-ENV["NEWDIR"]	= Dir.pwd	if not ENV.include?("NEWDIR")
+ENV["OLDDIR"]	= Dir.pwd		unless ENV.include?("OLDDIR")
+ENV["NEWDIR"]	= File.dirname($0)	unless ENV.include?("NEWDIR")
 
 begin
   oldlocation
@@ -15,7 +15,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
@@ -36,7 +36,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 rubyscript2exe-0.1.20.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.1.20.tar.gz/rubyscript2exe/init.rb	2004-07-29 16:31:46.000000000 +0200
+++ rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/init.rb	2004-08-05 00:02:02.000000000 +0200
@@ -1,6 +1,6 @@
 require "ev/oldandnewlocation"
 require "ev/dependencies"
-require "ftools"
+require "ev/ftools"
 require "rbconfig"
 
 def backslashes(s)
@@ -51,7 +51,14 @@
 
   dlls("#{bindir}/ruby.exe").each do |dll|
     file	= File.basename(dll)
-    File.copy(dll, "bin/#{file}")	unless file == "ruby.exe"
+    File.copy(dll, "bin/#{file}")
+  end
+
+  Dir.find(libdir, /\.so$/).each do |file|
+    dlls(file, bindir).each do |dll|
+      file	= File.basename(dll)
+      File.copy(dll, "bin/#{file}")
+    end
   end
 
   $stderr.puts "Creating #{app}.exe..."
@@ -75,7 +82,10 @@
   system(backslashes("./eee app.eee #{appexe} #{eeeexe}"))
 
   oldlocation do
-    File.copy(newlocation(appexe), appexe)
+    from	= newlocation(appexe)
+    to		= oldlocation(appexe)
+
+    File.copy(from, to)	unless from == to
 
     system(backslashes("reshacker -modify #{newlocation(appexe)}, #{appexe}, #{appico}, icon,appicon,"))	if File.file?(appico)
   end
diff -ur rubyscript2exe-0.1.20.tar.gz/rubyscript2exe/require2lib.rb rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/require2lib.rb
--- rubyscript2exe-0.1.20.tar.gz/rubyscript2exe/require2lib.rb	2004-07-30 17:39:46.000000000 +0200
+++ rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/require2lib.rb	2004-08-05 00:02:39.000000000 +0200
@@ -32,7 +32,7 @@
             fromfile	= File.expand_path(req, lib)
             tofile	= File.expand_path(req, LIBDIR)
 
-            if FileTest.file?(fromfile)
+            if File.file?(fromfile)
               unless fromfile == tofile or fromfile == THISFILE
                 if JUSTSITE and fromfile.include?(SITEDIR)
                   $stderr.puts "Skipped #{fromfile} ."
Binary files rubyscript2exe-0.1.20.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.1.20.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/eee.pas	2004-08-04 23:02:04.000000000 +0200
+++ rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/eee.pas	2004-12-08 14:07:51.000000000 +0100
@@ -1,6 +1,8 @@
 {$mode DELPHI}
 
-{$R eee.res}
+{$IFDEF WIN32}
+  {$R eee.res}
+{$ENDIF}
 
 uses
 
@@ -49,6 +51,48 @@
   parms		: string;
   quotedparms	: string;
   justextract	: boolean;
+  currentdir	: string[255];
+
+
+procedure getdir2(drivenr: byte; var dir: string[255]);
+
+begin
+
+  {$IFDEF LINUX}	// Foutje indien bovenliggende dirs niet benaderbaar zijn.
+    if currentdir = '' then begin
+      if (paramcount > 3) then begin
+        currentdir	:= paramstr(4);
+      end
+      else begin
+        currentdir	:= getenv('PWD');	// PWD wordt alleen gezet als het parent process een shell is.
+      end;
+    end;
+
+    dir	:= currentdir;
+  {$ELSE}
+    getdir(drivenr, dir);
+  {$ENDIF}
+
+end;
+
+
+procedure chdir2(dir: string[255]);
+
+begin
+
+  {$IFDEF LINUX}	// Foutje indien bovenliggende dirs niet benaderbaar zijn.
+    if copy(dir, 1, 1) <> '/' then begin
+      dir	:= currentdir + '/' + dir;
+    end;
+
+    currentdir	:= dir;
+
+    chdir(dir);
+  {$ELSE}
+    chdir(dir);
+  {$ENDIF}
+
+end;
 
 
 procedure recursivedelete(var path: string[255]);
@@ -61,8 +105,8 @@
 
 begin
 
-  getdir(0, dir);
-  chdir(path);
+  getdir2(0, dir);
+  chdir2(path);
 
   findfirst('*.*', anyfile or directory, sr);
   while(doserror = 0) do begin
@@ -90,7 +134,7 @@
   end;
   findclose(sr);
 
-  chdir(dir);
+  chdir2(dir);
 
   {$I-}
     rmdir(path + slash);
@@ -227,8 +271,8 @@
 
   pakin_d(outfile, 'd', tekst, entry, t);
 
-  getdir(0, dir);
-  chdir(entry);
+  getdir2(0, dir);
+  chdir2(entry);
 
   findfirst('*.*', anyfile or directory, sr);
   while(doserror = 0) do begin
@@ -248,7 +292,7 @@
   end;
   findclose(sr);
 
-  chdir(dir);
+  chdir2(dir);
 
 end;
 
@@ -305,7 +349,7 @@
   assign(eeefile, paramstr(1));
   reset(eeefile);
 
-  if (paramcount > 2)	then begin
+  if (paramcount > 2) then begin
     assign(infile, paramstr(3));
     t.exename	:= paramstr(3);
   end
@@ -390,6 +434,7 @@
   c		: string;
   p		: string;
   i		: longint;
+  sr		: searchrec;
 
 begin
 
@@ -398,6 +443,16 @@
   h		:= h;
 
   {$IFDEF LINUX}
+    findfirst(workdir + '/eee.sh', archive, sr);
+    if (doserror = 0) then begin
+      c	:= '/bin/sh';
+      p	:= '-c "chmod +x ' + workdir + '/eee.sh"';
+      executeprocess(c, p);
+    end;
+  {$ENDIF}
+
+  {$IFDEF LINUX}
+    i	:= 0;
     c	:= getenv('SHELL');
     p	:= '-c "' + tekst + '"';
   {$ELSE}
@@ -424,6 +479,7 @@
   p		: string;
   i		: longint;
   dir		: string[255];
+  sr		: searchrec;
 
 begin
 
@@ -432,6 +488,16 @@
   h		:= h;
 
   {$IFDEF LINUX}
+    findfirst(workdir + '/eee.sh', archive, sr);
+    if (doserror = 0) then begin
+      c	:= '/bin/sh';
+      p	:= '-c "chmod +x ' + workdir + '/eee.sh"';
+      executeprocess(c, p);
+    end;
+  {$ENDIF}
+
+  {$IFDEF LINUX}
+    i	:= 0;
     c	:= getenv('SHELL');
     p	:= '-c "' + tekst + '"';
   {$ELSE}
@@ -446,10 +512,10 @@
     end;
   {$ENDIF}
 
-  getdir(0, dir);
-  chdir(workdir);
+  getdir2(0, dir);
+  chdir2(workdir);
     executeprocess(c, p);
-  chdir(dir);
+  chdir2(dir);
 
 end;
 
@@ -460,8 +526,8 @@
 
   randomize;
 
-  getdir(0, dir);
-  chdir(tempdir);
+  getdir2(0, dir);
+  chdir2(tempdir);
     {$I-}
       repeat
         str(random(1000), s);
@@ -471,7 +537,7 @@
     {$I+}
 
     workdir	:= tempdir + slash + workdir;
-  chdir(dir);
+  chdir2(dir);
 
   assign(infile, paramstr(0));
   reset(infile, 1);
@@ -582,7 +648,6 @@
     tempdir	:= '/tmp'
   end;
 
-
   me		:= 'EEE: Dit is mijn herkennigsstring voor het herkennen van pakin of pakuit mode.';
 
   justextract	:= false;
diff -ur rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/ev/dependencies.rb rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/ev/dependencies.rb
--- rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/ev/dependencies.rb	2004-08-05 00:02:39.000000000 +0200
+++ rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/ev/dependencies.rb	2004-12-08 14:07:51.000000000 +0100
@@ -1,6 +1,6 @@
 def dlls(file, path=File.dirname(file))
 
-	# Only the dependencies in the same directory as the executable.
+	# Only the dependencies in the same directory as the executable or the given directory.
 
   todo		= []
   res		= []
@@ -30,3 +30,44 @@
 
   res
 end
+
+def ldds(file, notthedefaults=true)
+
+	# All dependencies.
+
+  todo		= []
+  res		= []
+  tempfile	= "/tmp/ev.dependencies.%d.tmp" % Process.pid
+
+  todo << File.expand_path(file)
+
+  while todo.length > 0
+    todo2	= todo
+    todo	= []
+
+    todo2.each do |file|
+      File.copy(file, tempfile)		# Libraries on Debian are no executables.
+      File.chmod(0755, tempfile)
+
+      `ldd #{tempfile}`.split(/\r*\n/).collect{|line| line.split(/\s+/)[3]}.each do |lib|
+        if not lib.nil? and File.file?(lib) and not res.include?(lib)
+          todo << lib
+          res << lib
+        end
+      end
+
+      File.delete(tempfile)
+    end
+  end
+
+	# http://www.linuxbase.org/spec/refspecs/LSB_1.3.0/gLSB/gLSB/rlibraries.html
+	# http://www.linuxbase.org/spec/refspecs/LSB_1.3.0/IA32/spec/rlibraries.html
+
+  lsb_common	= ["libX11.so.6", "libXt.so.6", "libGL.so.1", "libXext.so.6", "libICE.so.6", "libSM.so.6", "libdl.so.2", "libcrypt.so.1", "libz.so.1", "libncurses.so.5", "libutil.so.1", "libpthread.so.0", "libpam.so.0", "libgcc_s.so.1"]
+  lsb_ia32	= ["libm.so.6", "libdl.so.2", "libcrypt.so.1", "libc.so.6", "libpthread.so.0", "ld-lsb.so.1"]
+  lsb		= lsb_common + lsb_ia32
+
+  res.delete_if{|s| lsb.include?(File.basename(s))}	if notthedefaults
+
+  res
+end
diff -ur rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/ev/ftools.rb rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/ev/ftools.rb
--- rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/ev/ftools.rb	2004-08-05 00:02:39.000000000 +0200
+++ rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/ev/ftools.rb	2004-12-08 14:07:51.000000000 +0100
@@ -54,9 +54,11 @@
   end
 
   def self.find(entry=nil, mask=nil)
-    entry	= @dir	if entry.nil?
+    entry	= "."	if entry.nil?
 
-    entry.gsub!(/[\/\\]*$/, "")	unless entry.nil?
+    entry	= entry.gsub!(/[\/\\]*$/, "")	unless entry.nil?
+
+    mask	= /^#{mask}$/i	if mask.kind_of?(String)
 
     res	= []
 
@@ -65,11 +67,19 @@
 
       res += ["%s/" % entry]	if mask.nil? or entry =~ mask
 
-      Dir.chdir(entry)
-        Dir.new(".").each do |e|
-          res += Dir.find(e, mask).collect{|e| entry+"/"+e}	unless [".", ".."].include?(e)
+      begin
+        Dir.chdir(entry)
+
+        begin
+          Dir.new(".").each do |e|
+            res += Dir.find(e, mask).collect{|e| entry+"/"+e}	unless [".", ".."].include?(e)
+          end
+        ensure
+          Dir.chdir(pdir)
         end
-      Dir.chdir(pdir)
+      rescue Errno::EACCES => error
+        puts error
+      end
     else
       res += [entry]	if mask.nil? or entry =~ mask
     end
@@ -82,6 +92,7 @@
   def self.rollbackup(file, mode=nil)
     backupfile	= file + ".RB.BACKUP"
     controlfile	= file + ".RB.CONTROL"
+    res		= nil
 
     File.touch(file)    unless File.file?(file)
 
@@ -107,10 +118,10 @@
 
     if block_given?
       if mode.nil?
-        yield
+        res	= yield
       else
         File.open(file, mode) do |f|
-          yield(f)
+          res	= yield(f)
         end
       end
     end
@@ -122,11 +133,9 @@
 
 	# Return, like File.open
 
-    if block_given?
-      return nil
-    else
-      return File.open(file, (mode or "r"))
-    end
+    res	= File.open(file, (mode or "r"))	unless block_given?
+
+    res
   end
 
   def self.touch(file)
diff -ur rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb
--- rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2004-08-05 00:02:39.000000000 +0200
+++ rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2004-12-08 14:07:51.000000000 +0100
@@ -1,5 +1,27 @@
+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
@@ -42,3 +64,37 @@
     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
+
+      Dir.chdir(dir)
+        res	= yield
+      Dir.chdir(pdir)
+    else
+      res	= File.expand_path(file, dir)	unless file.nil?
+    end
+
+    res
+  end
+end
diff -ur rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/init.rb	2004-08-05 00:02:02.000000000 +0200
+++ rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/init.rb	2004-12-08 13:48:37.000000000 +0100
@@ -3,13 +3,27 @@
 require "ev/ftools"
 require "rbconfig"
 
+exit	if ARGV.include?("--rubyscript2exe-exit")
+
 def backslashes(s)
   s	= s.gsub(/^\.\//, "").gsub(/\//, "\\\\")	if windows?
   s
 end
 
+def linux?
+  not windows? and not cygwin?			# Hack ???
+end
+
+def linux?
+  not windows? and not cygwin?			# Hack ???
+end
+
 def windows?
-  not (target_os.downcase =~ /32/).nil?	# Hack ???
+  not (target_os.downcase =~ /32/).nil?		# Hack ???
+end
+
+def cygwin?
+  not (target_os.downcase =~ /cyg/).nil?	# Hack ???
 end
 
 def target_os
@@ -18,6 +32,20 @@
 
 script	= ARGV.shift
 
+if script.nil?
+  $stderr.puts <<-EOF
+
+	Usage: ruby init.rb application[.rb[w]] [--rubyscript2exe-rubyw|--rubyscript2exe-ruby]
+
+	On Linux, there's no difference between ruby and rubyw.
+
+	For more information, see
+	http://www.erikveen.dds.nl/rubyscript2exe/index.html .
+	EOF
+
+  exit 1
+end
+
 rubyw	= false
 rubyw	= true		if script =~ /\.rbw$/
 rubyw	= false		if ARGV.include?("--rubyscript2exe-ruby")
@@ -25,68 +53,129 @@
 
 ARGV.delete_if{|arg| arg =~ /^--rubyscript2exe-/}
 
-bindir	= Config::CONFIG["bindir"]
+bindir1	= Config::CONFIG["bindir"]
+libdir1	= Config::CONFIG["libdir"]
+bindir2	= tmplocation("bin/")
+libdir2	= tmplocation("lib/")
+appdir2	= tmplocation("app/")
 
-if not script.nil?
-  script	= "#{script}.rb"	if not script =~ /\.rbw?$/
-  app		= File.basename(script.gsub(/\.rbw?$/, ""))
-  libdir	= File.expand_path("lib")
+script	= "#{script}.rb"	unless script =~ /\.rbw?$/
+app	= File.basename(script.gsub(/\.rbw?$/, ""))
 
-  $stderr.puts "Tracing #{app}..."
+$stderr.puts "Tracing #{app}..."
 
-  libs	= $:.collect{|a| " -I " + a}
+libs	= $:.collect{|a| " -I " + a}
 
-  oldlocation do
-    system(backslashes("#{bindir}/ruby #{libs.join(" ")} -r '#{newlocation("require2lib.rb")}' '#{script}' '#{libdir}' ") + ARGV.collect{|a| "'" + a + "'"}.join(" "))
-  end
+oldlocation do
+  system(backslashes("#{bindir1}/ruby #{libs.join(" ")} -r '#{newlocation("require2lib.rb")}' '#{script}' '#{libdir2}' ") + ARGV.collect{|a| "'" + a + "'"}.join(" "))
+end
 
-  $stderr.puts "Copying files..."
+$stderr.puts "Copying files..."
 
-  Dir.mkdir("bin")
-  Dir.mkdir("app")
+Dir.mkdir(bindir2)	unless File.directory?(bindir2)
+Dir.mkdir(libdir2)	unless File.directory?(libdir2)
+Dir.mkdir(appdir2)	unless File.directory?(appdir2)
+
+if linux?
+  rubyexe	= "#{bindir1}/ruby"
+else
+  rubyexe	= "#{bindir1}/ruby.exe"
+  rubywexe	= "#{bindir1}/rubyw.exe"
+end
 
-  File.copy("#{bindir}/ruby.exe"	, "bin/ruby.exe"	)
-  File.copy("#{bindir}/rubyw.exe"	, "bin/rubyw.exe"	)
-  File.copy("#{oldlocation(script)}"	, "app/app.rb"		)
-
-  dlls("#{bindir}/ruby.exe").each do |dll|
-    file	= File.basename(dll)
-    File.copy(dll, "bin/#{file}")
-  end
+if linux?
+  tocopy	= ldds(rubyexe)
+  tocopy << rubyexe	if File.file?(rubyexe)
+else
+  tocopy	= dlls(rubyexe)
+  tocopy << rubyexe	if File.file?(rubyexe)
+  tocopy << rubywexe	if File.file?(rubywexe)
+end
 
-  Dir.find(libdir, /\.so$/).each do |file|
-    dlls(file, bindir).each do |dll|
-      file	= File.basename(dll)
-      File.copy(dll, "bin/#{file}")
-    end
-  end
+tocopy.each do |s1|
+  file	= File.basename(s1)
+  s2	= File.expand_path(file, bindir2)
+
+  $stderr.puts "Copying #{s1} ..."
+  File.copy(s1, s2)	unless File.file?(s2)
+end
+
+begin
+  s1	= oldlocation(script)
+  s2	= File.expand_path("app.rb", appdir2)
+
+  $stderr.puts "Copying #{s1} ..."
+  File.copy(s1, s2)	unless File.file?(s2)
+end
+
+if linux?
+  tocopy	= Dir.find(libdir2, /\.so$/).collect{|file| ldds(file)}.flatten.sort.uniq
+else
+  tocopy	= Dir.find(libdir2, /\.so$/).collect{|file| dlls(file, bindir1)}.flatten.sort.uniq
+end
 
-  $stderr.puts "Creating #{app}.exe..."
+tocopy.each do |s1|
+  file	= File.basename(s1)
+  s2	= File.expand_path(file, bindir2)
 
-  File.open("app.eee", "w") do |f|
-    f.puts "r bin"
-    f.puts "r lib"
-    f.puts "r app"
+  $stderr.puts "Copying #{s1} ..."
+  File.copy(s1, s2)	unless File.file?(s2)
+end
 
-    rubyexe	= "ruby.exe"
-    rubyexe	= "rubyw.exe"	if rubyw
+eeeexe	= "eee.exe"
+eeeexe	= "eeew.exe"	if rubyw
+eeeexe	= "eee.bin"	if linux?
+appexe	= "#{app}.exe"
+appexe	= "#{app}.bin"	if linux?
+appico	= "#{app}.ico"
+
+$stderr.puts "Creating #{appexe} ..."
+
+if linux?
+  File.open(tmplocation("eee.sh"), "w") do |f|
+    f.puts "PDIR=$1;shift"
+    f.puts "DIR=$(pwd)"
+    f.puts "cd $PDIR"
+    f.puts "  chmod +x bin/ruby"
+    f.puts "  export PATH=$(pwd)/bin:$PATH"
+    f.puts "  export LD_LIBRARY_PATH=$(pwd)/bin:LD_LIBRARY_PATH"
+    f.puts "cd $DIR"
+    f.puts "$*"
+  end
+end
 
+File.open(tmplocation("app.eee"), "w") do |f|
+  rubyexe	= "ruby.exe"
+  rubyexe	= "rubyw.exe"	if rubyw
+  rubyexe	= "ruby"	if linux?
+
+  f.puts "r bin"
+  f.puts "r lib"
+  f.puts "f eee.sh"	if linux?
+  f.puts "r app"
+  if linux?
+    f.puts "c source %tempdir%/eee.sh %tempdir% %tempdir%/bin/#{rubyexe} -I %tempdir%/lib %tempdir%/app/app.rb %quotedparms%"
+  else
     f.puts "c %tempdir%/bin/#{rubyexe} -I %tempdir%/lib %tempdir%/app/app.rb %quotedparms%"
   end
+end
+
+from	= newlocation(eeeexe)
+to	= tmplocation(eeeexe)
 
-  eeeexe	= "eee.exe"
-  eeeexe	= "eeew.exe"	if rubyw
-  appexe	= "#{app}.exe"
-  appico	= "#{app}.ico"
+File.copy(from, to)	unless from == to
+File.chmod(0755, to)	if linux?
 
-  system(backslashes("./eee app.eee #{appexe} #{eeeexe}"))
+tmplocation do
+  system(backslashes("#{(linux? or cygwin?) ? "./" : ""}#{eeeexe} app.eee #{appexe} #{eeeexe} #{Dir.pwd}"))
+end
 
-  oldlocation do
-    from	= newlocation(appexe)
-    to		= oldlocation(appexe)
+from	= tmplocation(appexe)
+to	= oldlocation(appexe)
 
-    File.copy(from, to)	unless from == to
+File.copy(from, to)	unless from == to
+File.chmod(0755, to)	if linux?
 
-    system(backslashes("reshacker -modify #{newlocation(appexe)}, #{appexe}, #{appico}, icon,appicon,"))	if File.file?(appico)
-  end
+oldlocation do
+  system(backslashes("reshacker -modify #{newlocation(appexe)}, #{appexe}, #{appico}, icon,appicon,"))	if File.file?(appico) and (windows? or cygwin?)
 end
diff -ur rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/README rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/README
--- rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/README	2004-07-26 18:46:52.000000000 +0200
+++ rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/README	2004-12-04 00:13:27.000000000 +0100
@@ -4,5 +4,7 @@
 
  Usage: ruby init.rb application[.rb[w]] [--rubyscript2exe-rubyw|--rubyscript2exe-ruby]
 
+On Linux, there's no difference between ruby and rubyw.
+
 For more information, see
-http://www.erikveen.dds.nl/rubyscript2exe/ .
+http://www.erikveen.dds.nl/rubyscript2exe/index.html .
diff -ur rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/require2lib.rb rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/require2lib.rb
--- rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/require2lib.rb	2004-08-05 00:02:39.000000000 +0200
+++ rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/require2lib.rb	2004-12-08 14:07:51.000000000 +0100
@@ -1,9 +1,21 @@
 require "ftools"
 require "rbconfig"
 
+$require2lib_loaded	= []
+
+module Kernel
+  alias :old_load :load
+  def load(filename, wrap=false)
+    $require2lib_loaded << filename	unless $require2lib_loaded.include?(filename)
+
+    old_load(filename, wrap)
+  end
+end
+
 module Require
   JUSTEV	= ARGV.include?("--require2lib-justev")
   JUSTSITE	= ARGV.include?("--require2lib-justsite")
+  VERBOSE	= ARGV.include?("--require2lib-verbose")
 
   ARGV.delete_if do |arg|
     arg =~ /^--require2lib-/
@@ -25,7 +37,7 @@
 
     File.makedirs(LIBDIR)
 
-    $".each do |req|
+    ($" + $require2lib_loaded).each do |req|
       if not JUSTEV or req =~ /^ev\//
         catch :found do
           $:.each do |lib|
@@ -34,10 +46,10 @@
 
             if File.file?(fromfile)
               unless fromfile == tofile or fromfile == THISFILE
-                if JUSTSITE and fromfile.include?(SITEDIR)
-                  $stderr.puts "Skipped #{fromfile} ."
+                if JUSTSITE and not fromfile.include?(SITEDIR)
+                  $stderr.puts "Skipped #{fromfile} ."	if VERBOSE
                 else
-                  #$stderr.puts "Found #{fromfile} ."
+                  $stderr.puts "Found #{fromfile} ."	if VERBOSE
 
                   File.makedirs(File.dirname(tofile))
                   File.copy(fromfile, tofile)
Binary files rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/eee.bin and rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/eee.bin differ
Binary files rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.1.21.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.2.1.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/eee.pas	2004-12-08 14:07:51.000000000 +0100
+++ rubyscript2exe-0.2.1.tar.gz/rubyscript2exe/eee.pas	2004-12-18 18:02:07.000000000 +0100
@@ -51,6 +51,7 @@
   parms		: string;
   quotedparms	: string;
   justextract	: boolean;
+  list		: boolean;
   currentdir	: string[255];
 
 
@@ -595,7 +596,7 @@
 
 begin
 
-    assign(infile, paramstr(0));
+  assign(infile, paramstr(0));
   reset(infile, 1);
 
   assign(outfile, t.exename);
@@ -641,6 +642,39 @@
 end;
 
 
+procedure tooninhoud;
+
+begin
+
+  assign(infile, paramstr(0));
+  reset(infile, 1);
+
+  blockeat(infile, filesize(infile)-t.length);
+
+  try
+
+    for teller := 1 to t.number do begin
+      blockread(infile, h, sizeof(h));
+
+      if (h.klasse = 'f') then begin
+        writeln(h.klasse, ' ', h.tekst, ' (', h.length, ')');
+        blockeat(infile, h.length);
+      end
+      else begin
+        writeln(h.klasse, ' ', h.tekst);
+      end;
+
+    end;
+
+  finally
+
+    close(infile);
+
+  end;
+
+end;
+
+
 begin
 
   tempdir	:= getenv('TEMP');
@@ -651,6 +685,7 @@
   me		:= 'EEE: Dit is mijn herkennigsstring voor het herkennen van pakin of pakuit mode.';
 
   justextract	:= false;
+  list		:= false;
 
   parms		:= '';
   quotedparms	:= '';
@@ -659,6 +694,10 @@
       justextract	:= true;
     end;
 
+    if (paramstr(teller) = '--eee-list') then begin
+      list		:= true;
+    end;
+
     if ((parms = '') and (quotedparms = '')) then begin
       parms		:= paramstr(teller);
       quotedparms	:= '''' + paramstr(teller) + '''';
@@ -685,7 +724,12 @@
       pakhieruit;
     end
     else begin
-      pakuit;
+      if (list) then begin
+        tooninhoud;
+      end
+      else begin
+        pakuit;
+      end;
     end;
   end;
 
diff -ur rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/require2lib.rb rubyscript2exe-0.2.1.tar.gz/rubyscript2exe/require2lib.rb
--- rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/require2lib.rb	2004-12-08 14:07:51.000000000 +0100
+++ rubyscript2exe-0.2.1.tar.gz/rubyscript2exe/require2lib.rb	2004-12-18 18:02:07.000000000 +0100
@@ -14,7 +14,8 @@
 
 module Require
   JUSTEV	= ARGV.include?("--require2lib-justev")
-  JUSTSITE	= ARGV.include?("--require2lib-justsite")
+  JUSTRUBYLIB	= ARGV.include?("--require2lib-justrubylib")
+  JUSTSITELIB	= ARGV.include?("--require2lib-justsitelib")
   VERBOSE	= ARGV.include?("--require2lib-verbose")
 
   ARGV.delete_if do |arg|
@@ -24,7 +25,8 @@
   ORGDIR	= Dir.pwd
   THISFILE	= File.expand_path(__FILE__)
   LIBDIR	= File.expand_path(ARGV.shift)
-  SITEDIR	= Config::CONFIG["sitedir"]
+  RUBYLIBDIR	= Config::CONFIG["rubylibdir"]
+  SITELIBDIR	= Config::CONFIG["sitelibdir"]
 
   at_exit do
     Dir.chdir(ORGDIR)
@@ -39,30 +41,73 @@
 
     ($" + $require2lib_loaded).each do |req|
       if not JUSTEV or req =~ /^ev\//
-        catch :found do
-          $:.each do |lib|
-            fromfile	= File.expand_path(req, lib)
-            tofile	= File.expand_path(req, LIBDIR)
-
-            if File.file?(fromfile)
-              unless fromfile == tofile or fromfile == THISFILE
-                if JUSTSITE and not fromfile.include?(SITEDIR)
-                  $stderr.puts "Skipped #{fromfile} ."	if VERBOSE
-                else
+        unless req =~ /^rubygems[\.\/]/
+          catch :found do
+            $:.each do |lib|
+              fromfile	= File.expand_path(req, lib)
+              tofile	= File.expand_path(req, LIBDIR)
+
+              if File.file?(fromfile)
+                unless fromfile == tofile or fromfile == THISFILE
+                  if (not JUSTRUBYLIB and not JUSTSITELIB) or
+                     (JUSTRUBYLIB and fromfile.include?(RUBYLIBDIR)) or
+                     (JUSTSITELIB and fromfile.include?(SITELIBDIR))
+                    $stderr.puts "Found #{fromfile} ."	if VERBOSE
+
+                    File.makedirs(File.dirname(tofile))
+                    File.copy(fromfile, tofile)
+                  else
+                    $stderr.puts "Skipped #{fromfile} ."	if VERBOSE
+                  end
+                end
+
+                throw :found
+              end
+            end
+
+            $stderr.puts "Can't find #{req} ."	unless req =~ /^ev\//
+          end
+        end
+      end
+    end
+
+    if $".include?("rubygems.rb") or $".include?("rubygems.so")
+      autorequire	= {}
+
+      Gem::Specification.list.each do |gem|
+
+        unless gem.autorequire.nil?
+          unless $".collect{|s| (s =~ /^#{gem.autorequire}\.\w+$/)}.compact.empty?
+            autorequire[gem.name]	= gem.autorequire
+
+            gem.require_paths.flatten.each do |lib|
+              lib	= File.expand_path(lib, gem.full_gem_path)
+
+              gem.files.each do |file|
+                fromfile	= File.expand_path(file, gem.full_gem_path)
+                tofile	= File.expand_path(file, File.dirname(LIBDIR))
+
+                if fromfile.include?(lib) and File.file?(fromfile)
                   $stderr.puts "Found #{fromfile} ."	if VERBOSE
 
                   File.makedirs(File.dirname(tofile))
                   File.copy(fromfile, tofile)
                 end
               end
-
-              throw :found
             end
           end
-
-          $stderr.puts "Can't find #{req} ."	unless req =~ /^ev\//
         end
       end
+
+      File.open(File.expand_path("rubygems.rb", LIBDIR), "w") do |f|
+        f.puts "module Kernel"
+        f.puts "  def require_gem(file, version=nil)"
+        f.puts "    autorequire	= %s" % autorequire.inspect
+        f.puts "    file	= autorequire[file]	if autorequire.include?(file)"
+        f.puts "    require(file)"
+        f.puts "  end"
+        f.puts "end"
+      end
     end
   end
 end
Binary files rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/eee.bin and rubyscript2exe-0.2.1.tar.gz/rubyscript2exe/eee.bin differ
Binary files rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.2.1.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.2.0.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.2.1.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.2.1.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.2.1.tar.gz/rubyscript2exe/eee.pas	2004-12-18 18:02:07.000000000 +0100
+++ rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/eee.pas	2004-12-27 13:17:55.000000000 +0100
@@ -6,14 +6,14 @@
 
 uses
 
-  SysUtils, Dos;
+  SysUtils, Dos, GZio;
 
 const
 
-  {$IFDEF LINUX}
-    slash	= '/';
-  {$ELSE}
+  {$IFDEF WIN32}
     slash	= '\';
+  {$ELSE}
+    slash	= '/';
   {$ENDIF}
 
 type
@@ -21,23 +21,28 @@
   header =	record
 		  klasse	: string[1];
 		  tekst		: string[255];
-		  length	: longint;
+		  datalength	: longint;
 		end;
 
   tail =	record
-		  length	: longint;
-		  number	: longint;
-		  who		: string[255];
 		  exename	: string[255];
+		  gzlength	: longint;
+		  who		: string[255];
+		  number	: longint;
 		end;
 
 var
 
   tempdir	: string[255];
   workdir	: string[255];
+  workdir1	: string[255];
+  workdir2	: string[255];
+  workfile	: string[255];
+  exename	: string[255];
   me		: string[255];
   infile	: file of byte;
   outfile	: file of byte;
+  zfile		: gzFile;
   eeefile	: Text;
   klasse	: string[1];
   tekst1	: string[255];
@@ -52,26 +57,27 @@
   quotedparms	: string;
   justextract	: boolean;
   list		: boolean;
-  currentdir	: string[255];
+  {$IFDEF WIN32}
+  {$ELSE}
+    currentdir	: string[255];
+  {$ENDIF}
 
 
 procedure getdir2(drivenr: byte; var dir: string[255]);
 
 begin
 
-  {$IFDEF LINUX}	// Foutje indien bovenliggende dirs niet benaderbaar zijn.
-    if currentdir = '' then begin
-      if (paramcount > 3) then begin
-        currentdir	:= paramstr(4);
-      end
-      else begin
-        currentdir	:= getenv('PWD');	// PWD wordt alleen gezet als het parent process een shell is.
+  {$IFDEF WIN32}
+    getdir(drivenr, dir);
+  {$ELSE}	// Foutje indien bovenliggende dirs niet benaderbaar zijn.
+    if (currentdir = '') then begin
+      currentdir	:= getenv('EEEDIR');
+      if (currentdir = '') then begin
+        currentdir	:= getenv('PWD');
       end;
     end;
 
     dir	:= currentdir;
-  {$ELSE}
-    getdir(drivenr, dir);
   {$ENDIF}
 
 end;
@@ -81,7 +87,9 @@
 
 begin
 
-  {$IFDEF LINUX}	// Foutje indien bovenliggende dirs niet benaderbaar zijn.
+  {$IFDEF WIN32}
+    chdir(dir);
+  {$ELSE}	// Foutje indien bovenliggende dirs niet benaderbaar zijn.
     if copy(dir, 1, 1) <> '/' then begin
       dir	:= currentdir + '/' + dir;
     end;
@@ -89,8 +97,6 @@
     currentdir	:= dir;
 
     chdir(dir);
-  {$ELSE}
-    chdir(dir);
   {$ENDIF}
 
 end;
@@ -147,21 +153,53 @@
 end;
 
 
-procedure bufferxor(var b: array of byte);
+procedure blockeat(var infile: file; inlength: longint);
+
+var
+  b	: array[0..99999] of byte;
+  l	: longint;
+  c	: longint;
+
+begin
+
+  c		:= inlength div sizeof(b);
+
+  while (c >= 0) do begin
+    if (c = 0)	then l := inlength-(inlength div sizeof(b))*sizeof(b)
+		else l := sizeof(b);
+
+    blockread(infile, b, l);
+
+    dec(c);
+  end;
+
+end;
+
+
+procedure blockeatfromgz(var zfile: gzFile; inlength: longint);
 
 var
-  i	: longint;
+  b	: array[0..99999] of byte;
+  l	: longint;
+  c	: longint;
 
 begin
 
-  for i := 0 to sizeof(b)-1 do begin
-    b[i]	:= 123 xor b[i];
+  c		:= inlength div sizeof(b);
+
+  while (c >= 0) do begin
+    if (c = 0)	then l := inlength-(inlength div sizeof(b))*sizeof(b)
+		else l := sizeof(b);
+
+    gzread(zfile, addr(b), l);
+
+    dec(c);
   end;
 
 end;
 
 
-procedure blockeat(var infile: file; inlength: longint);
+procedure blockcopy(var infile: file; var outfile: file; inlength: longint);
 
 var
   b	: array[0..99999] of byte;
@@ -178,6 +216,7 @@
 		else l := sizeof(b);
 
     blockread(infile, b, l, n);
+    blockwrite(outfile, b, n);
 
     dec(c);
   end;
@@ -185,7 +224,7 @@
 end;
 
 
-procedure blockcopy(var infile: file; var outfile: file; inlength: longint; encrypt: boolean);
+procedure blockcopytogz(var infile: file; var zfile: gzFile; inlength: longint);
 
 var
   b	: array[0..99999] of byte;
@@ -202,9 +241,31 @@
 		else l := sizeof(b);
 
     blockread(infile, b, l, n);
-    if (encrypt) then begin
-      bufferxor(b);
-    end;
+    gzwrite(zfile, addr(b), n);
+
+    dec(c);
+  end;
+
+end;
+
+
+procedure blockcopyfromgz(var zfile: gzFile; var outfile: file; inlength: longint);
+
+var
+  b	: array[0..99999] of byte;
+  l	: longint;
+  c	: longint;
+  n	: longint;
+
+begin
+
+  c		:= inlength div sizeof(b);
+
+  while (c >= 0) do begin
+    if (c = 0)	then l := inlength-(inlength div sizeof(b))*sizeof(b)
+		else l := sizeof(b);
+
+    n	:= gzread(zfile, addr(b), l);
     blockwrite(outfile, b, n);
 
     dec(c);
@@ -213,7 +274,7 @@
 end;
 
 
-procedure pakin_f(var outfile: file; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
+procedure pakin_f(var zfile: gzFile; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
 
 var
   infile	: file of byte;
@@ -226,10 +287,9 @@
 
   assign(infile, entry);
   reset(infile, 1);
-  h.length	:= filesize(infile);
-  t.length	:= t.length + h.length + sizeof(h);
-  blockwrite(outfile, h, sizeof(h));
-  blockcopy(infile, outfile, h.length, true);
+  h.datalength	:= filesize(infile);
+  gzwrite(zfile, addr(h), sizeof(h));
+  blockcopytogz(infile, zfile, h.datalength);
   close(infile);
 
   t.number	:= t.number + 1;
@@ -237,7 +297,7 @@
 end;
 
 
-procedure pakin_d(var outfile: file; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
+procedure pakin_d(var zfile: gzFile; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
 
 var
   h		: header;
@@ -248,17 +308,16 @@
 
   h.klasse	:= klasse;
   h.tekst	:= tekst;
-  h.length	:= 0;
-  t.length	:= t.length + sizeof(h);
+  h.datalength	:= 0;
 
-  blockwrite(outfile, h, sizeof(h));
+  gzwrite(zfile, addr(h), sizeof(h));
 
   t.number	:= t.number + 1;
 
 end;
 
 
-procedure pakin_r(var outfile: file; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
+procedure pakin_r(var zfile: gzFile; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
 
 var
   f		: file;
@@ -270,7 +329,7 @@
 
   klasse	:= klasse;
 
-  pakin_d(outfile, 'd', tekst, entry, t);
+  pakin_d(zfile, 'd', tekst, entry, t);
 
   getdir2(0, dir);
   chdir2(entry);
@@ -282,11 +341,11 @@
 
     if (attr and directory > 0) then begin
       if ((not (sr.name = '.')) and (not (sr.name = '..'))) then begin
-        pakin_r(outfile, 'r', tekst + slash + sr.name, sr.name, t);
+        pakin_r(zfile, 'r', tekst + slash + sr.name, sr.name, t);
       end;
     end
     else begin
-      pakin_f(outfile, 'f', tekst + slash + sr.name, sr.name, t);
+      pakin_f(zfile, 'f', tekst + slash + sr.name, sr.name, t);
     end;
 
     findnext(sr);
@@ -298,7 +357,7 @@
 end;
 
 
-procedure pakin_c(var outfile: file; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
+procedure pakin_c(var zfile: gzFile; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
 
 var
   h		: header;
@@ -309,17 +368,16 @@
 
   h.klasse	:= klasse;
   h.tekst	:= tekst;
-  h.length	:= 0;
-  t.length	:= t.length + sizeof(h);
+  h.datalength	:= 0;
 
-  blockwrite(outfile, h, sizeof(h));
+  gzwrite(zfile, addr(h), sizeof(h));
 
   t.number	:= t.number + 1;
 
 end;
 
 
-procedure pakin_t(var outfile: file; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
+procedure pakin_t(var zfile: gzFile; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
 
 var
   h		: header;
@@ -330,10 +388,9 @@
 
   h.klasse	:= klasse;
   h.tekst	:= tekst;
-  h.length	:= 0;
-  t.length	:= t.length + sizeof(h);
+  h.datalength	:= 0;
 
-  blockwrite(outfile, h, sizeof(h));
+  gzwrite(zfile, addr(h), sizeof(h));
 
   t.number	:= t.number + 1;
 
@@ -344,28 +401,17 @@
 
 begin
 
-  assign(outfile, paramstr(2));
-  rewrite(outfile, 1);
-
   assign(eeefile, paramstr(1));
   reset(eeefile);
 
-  if (paramcount > 2) then begin
-    assign(infile, paramstr(3));
-    t.exename	:= paramstr(3);
-  end
-  else begin
-    assign(infile, paramstr(0));
-    t.exename	:= paramstr(0);
+  exename	:= getenv('EEEEXE');
+  if (exename = '') then begin
+    exename	:= paramstr(0);
   end;
 
-  reset(infile, 1);
-  blockcopy(infile, outfile, filesize(infile), false);
-  close(infile);
-
-  t.length	:= 0;
+  t.exename	:= exename;
   t.number	:= 0;
-  t.who	:= me;
+  t.who		:= me;
 
   s		:= slash;
   i		:= pos(s, t.exename);
@@ -374,6 +420,8 @@
     i		:= pos(s, t.exename);
   end;
 
+  zfile	:= gzopen(workfile, 'w');
+
   repeat
     readln(eeefile, s);
 
@@ -382,45 +430,59 @@
       tekst1	:= copy(s, 3, length(s)-2);
 
       case klasse[1] of
-        'f': pakin_f(outfile, klasse, tekst1, tekst1, t);
-        'd': pakin_d(outfile, klasse, tekst1, tekst1, t);
-        'r': pakin_r(outfile, klasse, tekst1, tekst1, t);
-        'c': pakin_c(outfile, klasse, tekst1, tekst1, t);
-        't': pakin_t(outfile, klasse, tekst1, tekst1, t);
+        'f': pakin_f(zfile, klasse, tekst1, tekst1, t);
+        'd': pakin_d(zfile, klasse, tekst1, tekst1, t);
+        'r': pakin_r(zfile, klasse, tekst1, tekst1, t);
+        'c': pakin_c(zfile, klasse, tekst1, tekst1, t);
+        't': pakin_t(zfile, klasse, tekst1, tekst1, t);
       end;
     end;
   until eof(eeefile);
 
-  t.length	:= t.length + sizeof(t);
-
-  blockwrite(outfile, t, sizeof(t));
+  gzclose(zfile);
 
   close(eeefile);
 
+  assign(outfile, paramstr(2));
+  rewrite(outfile, 1);
+
+  assign(infile, exename);
+  reset(infile, 1);
+  blockcopy(infile, outfile, filesize(infile));
+  close(infile);
+
+  assign(infile, workfile);
+  reset(infile, 1);
+  blockcopy(infile, outfile, filesize(infile));
+  t.gzlength	:= filesize(infile);
+  close(infile);
+
+  blockwrite(outfile, t, sizeof(t));
+
   close(outfile);
 
 end;
 
 
-procedure pakuit_f(var infile: file; var outfile: file; tekst: string; var h: header);
+procedure pakuit_f(var zfile: gzFile; var outfile: file; tekst: string; var h: header);
 
 begin
 
   assign(outfile, workdir + slash + tekst);
   rewrite(outfile, 1);
 
-  blockcopy(infile, outfile, h.length, true);
+  blockcopyfromgz(zfile, outfile, h.datalength);
 
   close(outfile);
 
 end;
 
 
-procedure pakuit_d(var infile: file; var outfile: file; tekst: string; var h: header);
+procedure pakuit_d(var zfile: gzFile; var outfile: file; tekst: string; var h: header);
 
 begin
 
-  infile	:= infile;
+  zfile		:= zfile;
   outfile	:= outfile;
   h		:= h;
 
@@ -429,21 +491,25 @@
 end;
 
 
-procedure pakuit_c(var infile: file; var outfile: file; tekst: string; var h: header);
+procedure pakuit_c(var zfile: gzFile; var outfile: file; tekst: string; var h: header);
 
 var
   c		: string;
   p		: string;
-  i		: longint;
-  sr		: searchrec;
+  {$IFDEF WIN32}
+    i		: longint;
+  {$ELSE}
+    sr		: searchrec;
+  {$ENDIF}
 
 begin
 
-  infile	:= infile;
+  zfile		:= zfile;
   outfile	:= outfile;
   h		:= h;
 
-  {$IFDEF LINUX}
+  {$IFDEF WIN32}
+  {$ELSE}
     findfirst(workdir + '/eee.sh', archive, sr);
     if (doserror = 0) then begin
       c	:= '/bin/sh';
@@ -452,11 +518,7 @@
     end;
   {$ENDIF}
 
-  {$IFDEF LINUX}
-    i	:= 0;
-    c	:= getenv('SHELL');
-    p	:= '-c "' + tekst + '"';
-  {$ELSE}
+  {$IFDEF WIN32}
     i	:= pos(' ', tekst);
     if (i = 0) then begin
       c	:= tekst;
@@ -466,6 +528,10 @@
       c	:= copy(tekst, 1, i-1);
       p	:= copy(tekst, i+1, length(tekst)-i);
     end;
+  {$ELSE}
+    i	:= 0;
+    c	:= getenv('SHELL');
+    p	:= '-c "' + tekst + '"';
   {$ENDIF}
 
   executeprocess(c, p);
@@ -473,22 +539,26 @@
 end;
 
 
-procedure pakuit_t(var infile: file; var outfile: file; tekst: string; var h: header);
+procedure pakuit_t(var zfile: gzFile; var outfile: file; tekst: string; var h: header);
 
 var
   c		: string;
   p		: string;
-  i		: longint;
   dir		: string[255];
-  sr		: searchrec;
+  {$IFDEF WIN32}
+    i		: longint;
+  {$ELSE}
+    sr		: searchrec;
+  {$ENDIF}
 
 begin
 
-  infile	:= infile;
+  zfile		:= zfile;
   outfile	:= outfile;
   h		:= h;
 
-  {$IFDEF LINUX}
+  {$IFDEF WIN32}
+  {$ELSE}
     findfirst(workdir + '/eee.sh', archive, sr);
     if (doserror = 0) then begin
       c	:= '/bin/sh';
@@ -497,11 +567,7 @@
     end;
   {$ENDIF}
 
-  {$IFDEF LINUX}
-    i	:= 0;
-    c	:= getenv('SHELL');
-    p	:= '-c "' + tekst + '"';
-  {$ELSE}
+  {$IFDEF WIN32}
     i	:= pos(' ', tekst);
     if (i = 0) then begin
       c	:= tekst;
@@ -511,6 +577,9 @@
       c	:= copy(tekst, 1, i-1);
       p	:= copy(tekst, i+1, length(tekst)-i);
     end;
+  {$ELSE}
+    c	:= getenv('SHELL');
+    p	:= '-c "' + tekst + '"';
   {$ENDIF}
 
   getdir2(0, dir);
@@ -525,70 +594,71 @@
 
 begin
 
-  randomize;
+  assign(infile, paramstr(0));
+  reset(infile, 1);
 
-  getdir2(0, dir);
-  chdir2(tempdir);
-    {$I-}
-      repeat
-        str(random(1000), s);
-        workdir	:= 'eee.' + s;
-        mkdir(workdir);
-      until (ioresult = 0);
-    {$I+}
+  blockeat(infile, filesize(infile)-t.gzlength-sizeof(t));
 
-    workdir	:= tempdir + slash + workdir;
-  chdir2(dir);
+  assign(outfile, workfile);
+  rewrite(outfile, 1);
+  blockcopy(infile, outfile, t.gzlength);
+  close(outfile);
 
-  assign(infile, paramstr(0));
-  reset(infile, 1);
-  blockeat(infile, filesize(infile)-t.length);
+  close(infile);
 
-  try
+  zfile	:= gzopen(workfile, 'r');
 
-    for teller := 1 to t.number do begin
-      blockread(infile, h, sizeof(h));
+  for teller := 1 to t.number do begin
+    gzread(zfile, addr(h), sizeof(h));
 
-      klasse	:= h.klasse;
-      tekst2	:= h.tekst;
+    klasse	:= h.klasse;
+    tekst2	:= h.tekst;
 
-      s		:= '%tempdir%';
+    s		:= '%tempdir%';
+    i		:= pos(s, tekst2);
+    while (i > 0) do begin
+      tekst2	:= copy(tekst2, 1, i-1) + workdir + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
       i		:= pos(s, tekst2);
-      while (i > 0) do begin
-        tekst2	:= copy(tekst2, 1, i-1) + workdir + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
-        i		:= pos(s, tekst2);
-      end;
+    end;
 
-      s		:= '%parms%';
+    s		:= '%tempdir1%';
+    i		:= pos(s, tekst2);
+    while (i > 0) do begin
+      tekst2	:= copy(tekst2, 1, i-1) + workdir1 + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
       i		:= pos(s, tekst2);
-      while (i > 0) do begin
-        tekst2	:= copy(tekst2, 1, i-1) + parms + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
-        i		:= pos(s, tekst2);
-      end;
+    end;
 
-      s		:= '%quotedparms%';
+    s		:= '%tempdir2%';
+    i		:= pos(s, tekst2);
+    while (i > 0) do begin
+      tekst2	:= copy(tekst2, 1, i-1) + workdir2 + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
       i		:= pos(s, tekst2);
-      while (i > 0) do begin
-        tekst2	:= copy(tekst2, 1, i-1) + quotedparms + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
-        i		:= pos(s, tekst2);
-      end;
-
-      case klasse[1] of
-        'f': pakuit_f(infile, outfile, tekst2, h);
-        'd': pakuit_d(infile, outfile, tekst2, h);
-        'c': pakuit_c(infile, outfile, tekst2, h);
-        't': pakuit_t(infile, outfile, tekst2, h);
-      end;
     end;
 
-  finally
-
-    close(infile);
+    s		:= '%parms%';
+    i		:= pos(s, tekst2);
+    while (i > 0) do begin
+      tekst2	:= copy(tekst2, 1, i-1) + parms + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
+      i		:= pos(s, tekst2);
+    end;
 
-    recursivedelete(workdir);
+    s		:= '%quotedparms%';
+    i		:= pos(s, tekst2);
+    while (i > 0) do begin
+      tekst2	:= copy(tekst2, 1, i-1) + quotedparms + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
+      i		:= pos(s, tekst2);
+    end;
 
+    case klasse[1] of
+      'f': pakuit_f(zfile, outfile, tekst2, h);
+      'd': pakuit_d(zfile, outfile, tekst2, h);
+      'c': pakuit_c(zfile, outfile, tekst2, h);
+      't': pakuit_t(zfile, outfile, tekst2, h);
+    end;
   end;
 
+  gzclose(zfile);
+
 end;
 
 
@@ -601,44 +671,48 @@
 
   assign(outfile, t.exename);
   rewrite(outfile);
-  blockcopy(infile, outfile, filesize(infile)-t.length, false);
+  blockcopy(infile, outfile, filesize(infile)-t.gzlength-sizeof(t));
   close(outfile);
 
-  assign(eeefile, 'app.eee');
-  rewrite(eeefile);
-
-  try
 
-    for teller := 1 to t.number do begin
-      blockread(infile, h, sizeof(h));
+  assign(outfile, workfile);
+  rewrite(outfile, 1);
+  blockcopy(infile, outfile, t.gzlength);
+  close(outfile);
 
-      writeln(eeefile, h.klasse, ' ', h.tekst);
+  close(infile);
 
-      if (h.klasse = 'f') then begin
-        assign(outfile, h.tekst);
-        rewrite(outfile, 1);
+  zfile	:= gzopen(workfile, 'r');
 
-        blockcopy(infile, outfile, h.length, true);
+  assign(eeefile, 'app.eee');
+  rewrite(eeefile);
 
-        close(outfile);
-      end;
+  for teller := 1 to t.number do begin
+    gzread(zfile, addr(h), sizeof(h));
 
-      if (h.klasse = 'd') then begin
-        {$I-}
-          mkdir(h.tekst);
-          if (ioresult = 0) then;
-        {$I+}
-      end;
-    end;
+    writeln(eeefile, h.klasse, ' ', h.tekst);
 
-  finally
+    if (h.klasse = 'f') then begin
+      assign(outfile, h.tekst);
+      rewrite(outfile, 1);
 
-    close(eeefile);
+      blockcopyfromgz(zfile, outfile, h.datalength);
 
-    close(infile);
+      close(outfile);
+    end;
 
+    if (h.klasse = 'd') then begin
+      {$I-}
+        mkdir(h.tekst);
+        if (ioresult = 0) then;
+      {$I+}
+    end;
   end;
 
+  close(eeefile);
+
+  gzclose(zfile);
+
 end;
 
 
@@ -649,29 +723,32 @@
   assign(infile, paramstr(0));
   reset(infile, 1);
 
-  blockeat(infile, filesize(infile)-t.length);
-
-  try
+  blockeat(infile, filesize(infile)-t.gzlength-sizeof(t));
 
-    for teller := 1 to t.number do begin
-      blockread(infile, h, sizeof(h));
+  assign(outfile, workfile);
+  rewrite(outfile, 1);
+  blockcopy(infile, outfile, t.gzlength);
+  close(outfile);
 
-      if (h.klasse = 'f') then begin
-        writeln(h.klasse, ' ', h.tekst, ' (', h.length, ')');
-        blockeat(infile, h.length);
-      end
-      else begin
-        writeln(h.klasse, ' ', h.tekst);
-      end;
+  close(infile);
 
-    end;
+  zfile	:= gzopen(workfile, 'r');
 
-  finally
+  for teller := 1 to t.number do begin
+    gzread(zfile, addr(h), sizeof(h));
 
-    close(infile);
+    if (h.klasse = 'f') then begin
+      writeln(h.klasse, ' ', h.tekst, ' (', h.datalength, ')');
+      blockeatfromgz(zfile, h.datalength);
+    end
+    else begin
+      writeln(h.klasse, ' ', h.tekst);
+    end;
 
   end;
 
+  gzclose(zfile);
+
 end;
 
 
@@ -708,6 +785,39 @@
     end;
   end;
 
+  randomize;
+
+  getdir2(0, dir);
+  chdir2(tempdir);
+    {$I-}
+      repeat
+        str(random(1000), s);
+        workdir	:= 'eee.' + s;
+        mkdir(workdir);
+      until (ioresult = 0);
+    {$I+}
+
+    workdir	:= tempdir + slash + workdir;
+    workfile	:= workdir + slash + 'eee.gz';
+
+    workdir1	:= workdir;
+    workdir2	:= workdir;
+
+    s		:= '\';
+    i		:= pos(s, workdir1);
+    while (i > 0) do begin
+      workdir1	:= copy(workdir1, 1, i-1) + '/' + copy(workdir1, i+length(s), length(workdir1)-(i+length(s))+1);
+      i		:= pos(s, workdir1);
+    end;
+
+    s		:= '/';
+    i		:= pos(s, workdir2);
+    while (i > 0) do begin
+      workdir2	:= copy(workdir2, 1, i-1) + '\' + copy(workdir2, i+length(s), length(workdir2)-(i+length(s))+1);
+      i		:= pos(s, workdir2);
+    end;
+  chdir2(dir);
+
   filemode	:= 0;
 
   assign(infile, paramstr(0));
@@ -716,6 +826,10 @@
   blockread(infile, t, sizeof(t));
   close(infile);
 
+  if (pos('eeew', lowercase(t.exename)) > 0) then begin
+    list	:= false;
+  end;
+
   if (t.who <> me) then begin
     pakin;
   end
@@ -733,4 +847,6 @@
     end;
   end;
 
+  recursivedelete(workdir);
+
 end.
diff -ur rubyscript2exe-0.2.1.tar.gz/rubyscript2exe/ev/ftools.rb rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/ev/ftools.rb
--- rubyscript2exe-0.2.1.tar.gz/rubyscript2exe/ev/ftools.rb	2004-12-18 18:02:07.000000000 +0100
+++ rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/ev/ftools.rb	2004-12-27 13:17:55.000000000 +0100
@@ -139,7 +139,11 @@
   end
 
   def self.touch(file)
-    File.open(file, "a"){|f|}
+    if File.exists?(file)
+      File.utime(Time.now, File.mtime(file), file)
+    else
+      File.open(file, "a"){|f|}
+    end
   end
 
   def self.which(file)
diff -ur rubyscript2exe-0.2.1.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.2.1.tar.gz/rubyscript2exe/init.rb	2004-12-08 13:48:37.000000000 +0100
+++ rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/init.rb	2004-12-26 22:50:56.000000000 +0100
@@ -14,10 +14,6 @@
   not windows? and not cygwin?			# Hack ???
 end
 
-def linux?
-  not windows? and not cygwin?			# Hack ???
-end
-
 def windows?
   not (target_os.downcase =~ /32/).nil?		# Hack ???
 end
@@ -144,6 +140,13 @@
   end
 end
 
+File.open(tmplocation("eee.rb"), "w") do |f|
+  f.puts "lib = File.expand_path(File.dirname(__FILE__)) + '/lib'"
+  f.puts "lib.sub!(/^.:/, '/cygdrive/%s' % $&[0..0].downcase) if lib =~ /^.:/"	if cygwin?
+  f.puts "$:.clear"
+  f.puts "$: << lib"
+end
+
 File.open(tmplocation("app.eee"), "w") do |f|
   rubyexe	= "ruby.exe"
   rubyexe	= "rubyw.exe"	if rubyw
@@ -152,11 +155,14 @@
   f.puts "r bin"
   f.puts "r lib"
   f.puts "f eee.sh"	if linux?
+  f.puts "f eee.rb"
   f.puts "r app"
   if linux?
-    f.puts "c source %tempdir%/eee.sh %tempdir% %tempdir%/bin/#{rubyexe} -I %tempdir%/lib %tempdir%/app/app.rb %quotedparms%"
+    f.puts "c source %tempdir%/eee.sh %tempdir% %tempdir%/bin/#{rubyexe} -r %tempdir%/eee.rb %tempdir%/app/app.rb %quotedparms%"
+  elsif cygwin?
+    f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir1%/eee.rb %tempdir1%/app/app.rb %quotedparms%"
   else
-    f.puts "c %tempdir%/bin/#{rubyexe} -I %tempdir%/lib %tempdir%/app/app.rb %quotedparms%"
+    f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir%\\eee.rb %tempdir%\\app\\app.rb %quotedparms%"
   end
 end
 
@@ -167,7 +173,10 @@
 File.chmod(0755, to)	if linux?
 
 tmplocation do
-  system(backslashes("#{(linux? or cygwin?) ? "./" : ""}#{eeeexe} app.eee #{appexe} #{eeeexe} #{Dir.pwd}"))
+  ENV["EEEEXE"]	= eeeexe
+  ENV["EEEDIR"]	= Dir.pwd
+
+  system(backslashes("#{newlocation(linux? ? "eee.bin" : "eee")} app.eee #{appexe}"))
 end
 
 from	= tmplocation(appexe)
@@ -177,5 +186,5 @@
 File.chmod(0755, to)	if linux?
 
 oldlocation do
-  system(backslashes("reshacker -modify #{newlocation(appexe)}, #{appexe}, #{appico}, icon,appicon,"))	if File.file?(appico) and (windows? or cygwin?)
+  system(backslashes("reshacker -modify #{tmplocation(appexe)}, #{appexe}, #{appico}, icon,appicon,"))	if File.file?(appico) and (windows? or cygwin?)
 end
diff -ur rubyscript2exe-0.2.1.tar.gz/rubyscript2exe/require2lib.rb rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/require2lib.rb
--- rubyscript2exe-0.2.1.tar.gz/rubyscript2exe/require2lib.rb	2004-12-18 18:02:07.000000000 +0100
+++ rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/require2lib.rb	2004-12-27 13:17:55.000000000 +0100
@@ -39,6 +39,8 @@
 
     File.makedirs(LIBDIR)
 
+    pureruby	= true
+
     ($" + $require2lib_loaded).each do |req|
       if not JUSTEV or req =~ /^ev\//
         unless req =~ /^rubygems[\.\/]/
@@ -56,6 +58,8 @@
 
                     File.makedirs(File.dirname(tofile))
                     File.copy(fromfile, tofile)
+
+                    pureruby	= false	unless req =~ /\.rb$/i
                   else
                     $stderr.puts "Skipped #{fromfile} ."	if VERBOSE
                   end
@@ -71,6 +75,8 @@
       end
     end
 
+    $stderr.puts "Not all copied files are pure Ruby."	unless pureruby
+
     if $".include?("rubygems.rb") or $".include?("rubygems.so")
       autorequire	= {}
 
Binary files rubyscript2exe-0.2.1.tar.gz/rubyscript2exe/eee.bin and rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/eee.bin differ
Binary files rubyscript2exe-0.2.1.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.2.1.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/ev/dependencies.rb rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/ev/dependencies.rb
--- rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/ev/dependencies.rb	2004-12-27 13:17:55.000000000 +0100
+++ rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/ev/dependencies.rb	2005-01-13 23:07:30.000000000 +0100
@@ -14,7 +14,7 @@
     todo2.each do |file|
       File.open(file, "rb") do |f|
         strings	= f.read.scan(/[\w\-\.]+/)	# Hack ???
-        strings.delete_if{|s| s !~ /\.dll$/i}
+        strings.delete_if{|s| s !~ /\.(so|o|dll)$/i}
 
         strings.each do |lib|
           lib	= File.expand_path(lib, path)
diff -ur rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/ev/ftools.rb rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/ev/ftools.rb
--- rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/ev/ftools.rb	2004-12-27 13:17:55.000000000 +0100
+++ rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/ev/ftools.rb	2005-01-13 23:07:30.000000000 +0100
@@ -1,22 +1,12 @@
 require "ftools"
 
 class Dir
-  def self.mkdirrec(dir)
-    pdir	= File.dirname(dir)
-
-    if not pdir.empty? and not File.directory?(pdir)
-      Dir.mkdirrec(pdir)
-    end
-
-    Dir.mkdir(dir)	rescue nil
-  end
-
   def self.copy(from, to)
     if File.directory?(from)
       pdir	= Dir.pwd
       todir	= File.expand_path(to)
 
-      mkdirrec(todir)
+      File.mkpath(todir)
 
       Dir.chdir(from)
         Dir.new(".").each do |e|
@@ -26,7 +16,7 @@
     else
       todir	= File.dirname(File.expand_path(to))
 
-      mkdirrec(todir)
+      File.mkpath(todir)
 
       File.copy(from, to)
     end
@@ -47,16 +37,24 @@
         end
       Dir.chdir(pdir)
 
-      Dir.delete(entry)
+      begin
+        Dir.delete(entry)
+      rescue => e
+        $stderr.puts e.message
+      end
     else
-      File.delete(entry)
+      begin
+        File.delete(entry)
+      rescue => e
+        $stderr.puts e.message
+      end
     end
   end
 
   def self.find(entry=nil, mask=nil)
     entry	= "."	if entry.nil?
 
-    entry	= entry.gsub!(/[\/\\]*$/, "")	unless entry.nil?
+    entry	= entry.gsub(/[\/\\]*$/, "")	unless entry.nil?
 
     mask	= /^#{mask}$/i	if mask.kind_of?(String)
 
@@ -77,8 +75,8 @@
         ensure
           Dir.chdir(pdir)
         end
-      rescue Errno::EACCES => error
-        puts error
+      rescue Errno::EACCES => e
+        $stderr.puts e.message
       end
     else
       res += [entry]	if mask.nil? or entry =~ mask
@@ -99,7 +97,7 @@
 	# Rollback
 
     if File.file?(backupfile) and File.file?(controlfile)
-      $stdout.puts "Restoring #{file}..."
+      $stderr.puts "Restoring #{file}..."
 
       File.copy(backupfile, file)				# Rollback from phase 3
     end
diff -ur rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/init.rb	2004-12-26 22:50:56.000000000 +0100
+++ rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/init.rb	2005-01-11 22:53:53.000000000 +0100
@@ -1,3 +1,7 @@
+$: << File.dirname(File.expand_path(__FILE__))
+
+required	= $".collect{|a| "-r " + a}
+
 require "ev/oldandnewlocation"
 require "ev/dependencies"
 require "ev/ftools"
@@ -26,6 +30,11 @@
   Config::CONFIG["target_os"] or ""
 end
 
+RUBY		= ARGV.include?("--rubyscript2exe-ruby")
+RUBYW		= ARGV.include?("--rubyscript2exe-rubyw")
+
+ARGV.delete_if{|arg| arg =~ /^--rubyscript2exe-/}
+
 script	= ARGV.shift
 
 if script.nil?
@@ -44,10 +53,8 @@
 
 rubyw	= false
 rubyw	= true		if script =~ /\.rbw$/
-rubyw	= false		if ARGV.include?("--rubyscript2exe-ruby")
-rubyw	= true		if ARGV.include?("--rubyscript2exe-rubyw")
-
-ARGV.delete_if{|arg| arg =~ /^--rubyscript2exe-/}
+rubyw	= false		if RUBY
+rubyw	= true		if RUBYW
 
 bindir1	= Config::CONFIG["bindir"]
 libdir1	= Config::CONFIG["libdir"]
@@ -60,10 +67,10 @@
 
 $stderr.puts "Tracing #{app}..."
 
-libs	= $:.collect{|a| " -I " + a}
+libs	= $:.collect{|a| "-I " + a}
 
 oldlocation do
-  system(backslashes("#{bindir1}/ruby #{libs.join(" ")} -r '#{newlocation("require2lib.rb")}' '#{script}' '#{libdir2}' ") + ARGV.collect{|a| "'" + a + "'"}.join(" "))
+  system(backslashes("#{bindir1}/ruby") + " #{required.join(" ")} #{libs.join(" ")} -r '#{newlocation("require2lib.rb")}' '#{script}' '#{bindir2}' '#{libdir2}' --require2lib-quiet" + " " + ARGV.collect{|a| "'" + a + "'"}.join(" "))
 end
 
 $stderr.puts "Copying files..."
@@ -92,7 +99,7 @@
   file	= File.basename(s1)
   s2	= File.expand_path(file, bindir2)
 
-  $stderr.puts "Copying #{s1} ..."
+  #$stderr.puts "Copying #{s1} ..."
   File.copy(s1, s2)	unless File.file?(s2)
 end
 
@@ -100,21 +107,21 @@
   s1	= oldlocation(script)
   s2	= File.expand_path("app.rb", appdir2)
 
-  $stderr.puts "Copying #{s1} ..."
+  #$stderr.puts "Copying #{s1} ..."
   File.copy(s1, s2)	unless File.file?(s2)
 end
 
 if linux?
-  tocopy	= Dir.find(libdir2, /\.so$/).collect{|file| ldds(file)}.flatten.sort.uniq
+  tocopy	= Dir.find(libdir2, /\.(so|o|dll)$/i).collect{|file| ldds(file)}.flatten.sort.uniq
 else
-  tocopy	= Dir.find(libdir2, /\.so$/).collect{|file| dlls(file, bindir1)}.flatten.sort.uniq
+  tocopy	= Dir.find(libdir2, /\.(so|o|dll)$/i).collect{|file| dlls(file, bindir1)}.flatten.sort.uniq
 end
 
 tocopy.each do |s1|
   file	= File.basename(s1)
   s2	= File.expand_path(file, bindir2)
 
-  $stderr.puts "Copying #{s1} ..."
+  #$stderr.puts "Copying #{s1} ..."
   File.copy(s1, s2)	unless File.file?(s2)
 end
 
@@ -141,8 +148,8 @@
 end
 
 File.open(tmplocation("eee.rb"), "w") do |f|
-  f.puts "lib = File.expand_path(File.dirname(__FILE__)) + '/lib'"
-  f.puts "lib.sub!(/^.:/, '/cygdrive/%s' % $&[0..0].downcase) if lib =~ /^.:/"	if cygwin?
+  f.puts "lib	= File.expand_path(File.dirname(__FILE__)) + '/lib'"
+  f.puts "lib.sub!(/^.:/, '/cygdrive/%s' % $&[0..0].downcase)	if lib =~ /^.:/"	if cygwin?
   f.puts "$:.clear"
   f.puts "$: << lib"
 end
diff -ur rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/require2lib.rb rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/require2lib.rb
--- rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/require2lib.rb	2004-12-27 13:17:55.000000000 +0100
+++ rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/require2lib.rb	2005-01-13 23:07:30.000000000 +0100
@@ -1,6 +1,8 @@
-require "ftools"
+require "ev/ftools"
 require "rbconfig"
 
+exit	if __FILE__ == $0
+
 $require2lib_loaded	= []
 
 module Kernel
@@ -13,17 +15,17 @@
 end
 
 module Require
-  JUSTEV	= ARGV.include?("--require2lib-justev")
   JUSTRUBYLIB	= ARGV.include?("--require2lib-justrubylib")
   JUSTSITELIB	= ARGV.include?("--require2lib-justsitelib")
+  RUBYGEMS	= (not JUSTRUBYLIB)
   VERBOSE	= ARGV.include?("--require2lib-verbose")
+  QUIET		= (ARGV.include?("--require2lib-quiet") and not VERBOSE)
 
-  ARGV.delete_if do |arg|
-    arg =~ /^--require2lib-/
-  end
+  ARGV.delete_if{|arg| arg =~ /^--require2lib-/}
 
   ORGDIR	= Dir.pwd
   THISFILE	= File.expand_path(__FILE__)
+  BINDIR	= File.expand_path(ARGV.shift)
   LIBDIR	= File.expand_path(ARGV.shift)
   RUBYLIBDIR	= Config::CONFIG["rubylibdir"]
   SITELIBDIR	= Config::CONFIG["sitelibdir"]
@@ -39,81 +41,148 @@
 
     File.makedirs(LIBDIR)
 
+    if RUBYGEMS
+      begin
+        Gem::dir
+        rubygems	= true
+      rescue NameError
+        rubygems	= false
+      end
+    else
+      rubygems		= false
+    end
+
     pureruby	= true
 
-    ($" + $require2lib_loaded).each do |req|
-      if not JUSTEV or req =~ /^ev\//
-        unless req =~ /^rubygems[\.\/]/
-          catch :found do
-            $:.each do |lib|
-              fromfile	= File.expand_path(req, lib)
-              tofile	= File.expand_path(req, LIBDIR)
+    if rubygems
+      autorequire	= {}
+      dependencies	= {}
+      requirelibs	= []
+      requireablefiles	= []
+
+      Gem::Specification.list.each do |gem|
+        if gem.loaded?
+          $stderr.puts "Found gem #{gem.name} (#{gem.version})."	if VERBOSE
+
+          fromdir	= gem.full_gem_path
+          todir		= File.expand_path(File.join("rubyscript2exe.gems", gem.full_name), LIBDIR)
+
+          Dir.copy(fromdir, todir)
+
+          autorequire[gem.name]	= gem.autorequire	if gem.autorequire
+
+          dependencies[gem.name]	= []
+          gem.dependencies.each do |dep|
+            dependencies[gem.name] << dep.name
+          end
 
-              if File.file?(fromfile)
-                unless fromfile == tofile or fromfile == THISFILE
+          #gem.require_paths << gem.bindir	if gem.bindir
+          #gem.require_paths.each do |lib|
+            #lib	= File.join("rubyscript2exe.gems", gem.full_name, lib)
+            #requirelibs << lib	unless requirelibs.include?(lib)
+          #end
+
+          $:.reverse.each do |lib|
+            gemdir	= File.join(Gem.dir, "gems")
+            if lib =~ /^#{gemdir}/
+              lib	= lib[(gemdir.size+1)..-1]
+              lib	= File.join("rubyscript2exe.gems", lib)
+
+              requirelibs << lib	unless requirelibs.include?(lib)
+            end
+          end
+
+          Dir.find(todir).each do |file|
+            if File.file?(file)
+              gem.require_paths.each do |lib|
+                unless lib.empty?
+                  lib	= File.expand_path(lib, todir)
+                  lib	= lib + "/"
+
+                  requireablefiles << file[lib.length..-1]	if file =~ /^#{lib}/
+                end
+              end
+            end
+          end
+        end
+      end
+
+      File.open(File.expand_path("rubygems.rb", LIBDIR), "w") do |f|
+        f.puts "module Kernel"
+        f.puts "  def require_gem(file, version=nil)"
+        f.puts "    autorequire		= %s" % autorequire.inspect
+        f.puts "    dependencies	= %s" % dependencies.inspect
+        f.puts ""
+        f.puts "    (dependencies[file] or []).each do |dep|"
+        f.puts "      require_gem(dep)"
+        f.puts "    end"
+        f.puts ""
+        f.puts "    if autorequire.include?(file)"
+        f.puts "      file	= autorequire[file]"
+        f.puts "      require(file)"
+        f.puts "    end"
+        f.puts "  end"
+        f.puts "end"
+        f.puts ""
+        f.puts "requirelibs	= %s" % requirelibs.inspect
+        f.puts ""
+        f.puts "requirelibs.each do |lib|"
+        f.puts "  $:.unshift(File.expand_path(lib, File.expand_path(File.dirname(__FILE__))))"
+        f.puts "end"
+      end
+    end
+
+    ($" + $require2lib_loaded).each do |req|
+      unless req =~ /^rubygems[\.\/]/
+        catch :found do
+          $:.each do |lib|
+            fromfile	= File.expand_path(req, lib)
+            tofile	= File.expand_path(req, LIBDIR)
+
+            if File.file?(fromfile)
+              unless fromfile == tofile or fromfile == THISFILE
+                unless (rubygems and requireablefiles.include?(req))	# ??? requireablefiles might be a little dangerous.
                   if (not JUSTRUBYLIB and not JUSTSITELIB) or
                      (JUSTRUBYLIB and fromfile.include?(RUBYLIBDIR)) or
                      (JUSTSITELIB and fromfile.include?(SITELIBDIR))
                     $stderr.puts "Found #{fromfile} ."	if VERBOSE
 
-                    File.makedirs(File.dirname(tofile))
+                    File.makedirs(File.dirname(tofile))	unless File.directory?(File.dirname(tofile))
                     File.copy(fromfile, tofile)
 
-                    pureruby	= false	unless req =~ /\.rb$/i
+                    pureruby	= false	unless req =~ /\.(rbw?|ruby)$/i
                   else
                     $stderr.puts "Skipped #{fromfile} ."	if VERBOSE
                   end
                 end
-
-                throw :found
               end
-            end
 
-            $stderr.puts "Can't find #{req} ."	unless req =~ /^ev\//
+              throw :found
+            end
           end
+
+          #$stderr.puts "Can't find #{req} ."	unless req =~ /^ev\//
+          #$stderr.puts "Can't find #{req} ."	unless req =~ /^(\w:)?[\/\\]/
         end
       end
     end
 
-    $stderr.puts "Not all copied files are pure Ruby."	unless pureruby
+    $stderr.puts "Not all required files are pure Ruby."	unless pureruby or QUIET
 
-    if $".include?("rubygems.rb") or $".include?("rubygems.so")
-      autorequire	= {}
+    if defined?(RUBYSCRIPT2EXE_DLLS)
+      [RUBYSCRIPT2EXE_DLLS].flatten.each do |dll|
+        fromfile	= File.expand_path(dll, ORGDIR)
+        tofile		= File.expand_path(File.basename(dll), BINDIR)
+
+        if File.file?(fromfile)
+          unless fromfile == tofile
+            $stderr.puts "Found #{fromfile} ."	if VERBOSE
 
-      Gem::Specification.list.each do |gem|
-
-        unless gem.autorequire.nil?
-          unless $".collect{|s| (s =~ /^#{gem.autorequire}\.\w+$/)}.compact.empty?
-            autorequire[gem.name]	= gem.autorequire
-
-            gem.require_paths.flatten.each do |lib|
-              lib	= File.expand_path(lib, gem.full_gem_path)
-
-              gem.files.each do |file|
-                fromfile	= File.expand_path(file, gem.full_gem_path)
-                tofile	= File.expand_path(file, File.dirname(LIBDIR))
-
-                if fromfile.include?(lib) and File.file?(fromfile)
-                  $stderr.puts "Found #{fromfile} ."	if VERBOSE
-
-                  File.makedirs(File.dirname(tofile))
-                  File.copy(fromfile, tofile)
-                end
-              end
-            end
+            File.makedirs(File.dirname(tofile))	unless File.directory?(File.dirname(tofile))
+            File.copy(fromfile, tofile)
           end
         end
       end
-
-      File.open(File.expand_path("rubygems.rb", LIBDIR), "w") do |f|
-        f.puts "module Kernel"
-        f.puts "  def require_gem(file, version=nil)"
-        f.puts "    autorequire	= %s" % autorequire.inspect
-        f.puts "    file	= autorequire[file]	if autorequire.include?(file)"
-        f.puts "    require(file)"
-        f.puts "  end"
-        f.puts "end"
-      end
     end
   end
 end
Binary files rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/eee.pas	2005-01-13 23:07:30.000000000 +0100
+++ rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/eee.pas	2005-01-19 00:10:18.000000000 +0100
@@ -6,7 +6,7 @@
 
 uses
 
-  SysUtils, Dos, GZio;
+  SysUtils, Dos, GZio, StrUtils;
 
 const
 
@@ -90,7 +90,7 @@
   {$IFDEF WIN32}
     chdir(dir);
   {$ELSE}	// Foutje indien bovenliggende dirs niet benaderbaar zijn.
-    if copy(dir, 1, 1) <> '/' then begin
+    if not (AnsiStartsStr('/', dir)) then begin
       dir	:= currentdir + '/' + dir;
     end;
 
@@ -115,7 +115,11 @@
   getdir2(0, dir);
   chdir2(path);
 
-  findfirst('*.*', anyfile or directory, sr);
+  {$IFDEF WIN32}
+    findfirst('*.*', anyfile or directory, sr);
+  {$ELSE}
+    findfirst('*', anyfile or directory, sr);
+  {$ENDIF}
   while(doserror = 0) do begin
     assign(f, sr.name);		// Foutje in 1.9.2 ???
     getfattr(f, attr);		// Foutje in 1.9.2 ???
@@ -334,7 +338,11 @@
   getdir2(0, dir);
   chdir2(entry);
 
-  findfirst('*.*', anyfile or directory, sr);
+  {$IFDEF WIN32}
+    findfirst('*.*', anyfile or directory, sr);
+  {$ELSE}
+    findfirst('*', anyfile or directory, sr);
+  {$ENDIF}
   while(doserror = 0) do begin
     assign(f, sr.name);		// Foutje in 1.9.2 ???
     getfattr(f, attr);		// Foutje in 1.9.2 ???
@@ -414,10 +422,10 @@
   t.who		:= me;
 
   s		:= slash;
-  i		:= pos(s, t.exename);
+  i		:= posex(s, t.exename);
   while (i > 0) do begin
-    t.exename	:= copy(t.exename, i+length(s), length(t.exename)-(i+length(s))+1);
-    i		:= pos(s, t.exename);
+    t.exename	:= AnsiMidStr(t.exename, i+length(s), length(t.exename)-(i+length(s))+1);
+    i		:= posex(s, t.exename);
   end;
 
   zfile	:= gzopen(workfile, 'w');
@@ -425,9 +433,9 @@
   repeat
     readln(eeefile, s);
 
-    if (not (s = '') and not (copy(s, 1, 1) = '#')) then begin
-      klasse	:= copy(s, 1, 1);
-      tekst1	:= copy(s, 3, length(s)-2);
+    if (not (s = '') and not (AnsiStartsStr('#', s))) then begin
+      klasse	:= AnsiMidStr(s, 1, 1);
+      tekst1	:= AnsiMidStr(s, 3, length(s)-2);
 
       case klasse[1] of
         'f': pakin_f(zfile, klasse, tekst1, tekst1, t);
@@ -519,14 +527,14 @@
   {$ENDIF}
 
   {$IFDEF WIN32}
-    i	:= pos(' ', tekst);
+    i	:= posex(' ', tekst);
     if (i = 0) then begin
       c	:= tekst;
       p	:= '';
     end
     else begin
-      c	:= copy(tekst, 1, i-1);
-      p	:= copy(tekst, i+1, length(tekst)-i);
+      c	:= AnsiMidStr(tekst, 1, i-1);
+      p	:= AnsiMidStr(tekst, i+1, length(tekst)-i);
     end;
   {$ELSE}
     i	:= 0;
@@ -568,14 +576,14 @@
   {$ENDIF}
 
   {$IFDEF WIN32}
-    i	:= pos(' ', tekst);
+    i	:= posex(' ', tekst);
     if (i = 0) then begin
       c	:= tekst;
       p	:= '';
     end
     else begin
-      c	:= copy(tekst, 1, i-1);
-      p	:= copy(tekst, i+1, length(tekst)-i);
+      c	:= AnsiMidStr(tekst, 1, i-1);
+      p	:= AnsiMidStr(tekst, i+1, length(tekst)-i);
     end;
   {$ELSE}
     c	:= getenv('SHELL');
@@ -614,40 +622,11 @@
     klasse	:= h.klasse;
     tekst2	:= h.tekst;
 
-    s		:= '%tempdir%';
-    i		:= pos(s, tekst2);
-    while (i > 0) do begin
-      tekst2	:= copy(tekst2, 1, i-1) + workdir + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
-      i		:= pos(s, tekst2);
-    end;
-
-    s		:= '%tempdir1%';
-    i		:= pos(s, tekst2);
-    while (i > 0) do begin
-      tekst2	:= copy(tekst2, 1, i-1) + workdir1 + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
-      i		:= pos(s, tekst2);
-    end;
-
-    s		:= '%tempdir2%';
-    i		:= pos(s, tekst2);
-    while (i > 0) do begin
-      tekst2	:= copy(tekst2, 1, i-1) + workdir2 + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
-      i		:= pos(s, tekst2);
-    end;
-
-    s		:= '%parms%';
-    i		:= pos(s, tekst2);
-    while (i > 0) do begin
-      tekst2	:= copy(tekst2, 1, i-1) + parms + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
-      i		:= pos(s, tekst2);
-    end;
-
-    s		:= '%quotedparms%';
-    i		:= pos(s, tekst2);
-    while (i > 0) do begin
-      tekst2	:= copy(tekst2, 1, i-1) + quotedparms + copy(tekst2, i+length(s), length(tekst2)-(i+length(s))+1);
-      i		:= pos(s, tekst2);
-    end;
+    tekst2	:= AnsiReplaceStr(tekst2, '%parms%', parms);
+    tekst2	:= AnsiReplaceStr(tekst2, '%quotedparms%', quotedparms);
+    tekst2	:= AnsiReplaceStr(tekst2, '%tempdir%', workdir);
+    tekst2	:= AnsiReplaceStr(tekst2, '%tempdir1%', workdir1);
+    tekst2	:= AnsiReplaceStr(tekst2, '%tempdir2%', workdir2);
 
     case klasse[1] of
       'f': pakuit_f(zfile, outfile, tekst2, h);
@@ -796,28 +775,13 @@
         mkdir(workdir);
       until (ioresult = 0);
     {$I+}
-
-    workdir	:= tempdir + slash + workdir;
-    workfile	:= workdir + slash + 'eee.gz';
-
-    workdir1	:= workdir;
-    workdir2	:= workdir;
-
-    s		:= '\';
-    i		:= pos(s, workdir1);
-    while (i > 0) do begin
-      workdir1	:= copy(workdir1, 1, i-1) + '/' + copy(workdir1, i+length(s), length(workdir1)-(i+length(s))+1);
-      i		:= pos(s, workdir1);
-    end;
-
-    s		:= '/';
-    i		:= pos(s, workdir2);
-    while (i > 0) do begin
-      workdir2	:= copy(workdir2, 1, i-1) + '\' + copy(workdir2, i+length(s), length(workdir2)-(i+length(s))+1);
-      i		:= pos(s, workdir2);
-    end;
   chdir2(dir);
 
+  workdir	:= tempdir + slash + workdir;
+  workfile	:= workdir + slash + 'eee.gz';
+  workdir1	:= AnsiReplaceStr(workdir, '\', '/');
+  workdir2	:= AnsiReplaceStr(workdir, '/', '\');
+
   filemode	:= 0;
 
   assign(infile, paramstr(0));
@@ -826,7 +790,7 @@
   blockread(infile, t, sizeof(t));
   close(infile);
 
-  if (pos('eeew', lowercase(t.exename)) > 0) then begin
+  if (posex('eeew', lowercase(t.exename)) > 0) then begin
     list	:= false;
   end;
 
diff -ur rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/ev/ftools.rb rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/ev/ftools.rb
--- rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/ev/ftools.rb	2005-01-13 23:07:30.000000000 +0100
+++ rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/ev/ftools.rb	2005-01-19 00:10:18.000000000 +0100
@@ -28,6 +28,8 @@
   end
 
   def self.rm_rf(entry)
+    File.chmod(0755, entry)
+
     if File.ftype(entry) == "directory"
       pdir	= Dir.pwd
 
diff -ur rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb
--- rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2005-01-13 23:07:30.000000000 +0100
+++ rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2005-01-19 00:10:18.000000000 +0100
@@ -7,6 +7,8 @@
 
 class Dir
   def self.rm_rf(entry)
+    File.chmod(0755, entry)
+
     if File.ftype(entry) == "directory"
       pdir	= Dir.pwd
 
@@ -16,9 +18,17 @@
         end
       Dir.chdir(pdir)
 
-      Dir.delete(entry)
+      begin
+        Dir.delete(entry)
+      rescue => e
+        $stderr.puts e.message
+      end
     else
-      File.delete(entry)
+      begin
+        File.delete(entry)
+      rescue => e
+        $stderr.puts e.message
+      end
     end
   end
 end
diff -ur rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/init.rb	2005-01-11 22:53:53.000000000 +0100
+++ rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/init.rb	2005-01-18 23:38:21.000000000 +0100
@@ -1,6 +1,6 @@
 $: << File.dirname(File.expand_path(__FILE__))
 
-required	= $".collect{|a| "-r " + a}
+required	= $".collect{|a| "-r '#{a}'"}
 
 require "ev/oldandnewlocation"
 require "ev/dependencies"
@@ -30,8 +30,10 @@
   Config::CONFIG["target_os"] or ""
 end
 
-RUBY		= ARGV.include?("--rubyscript2exe-ruby")
-RUBYW		= ARGV.include?("--rubyscript2exe-rubyw")
+RUBY	= ARGV.include?("--rubyscript2exe-ruby")
+RUBYW	= ARGV.include?("--rubyscript2exe-rubyw")
+VERBOSE	= ARGV.include?("--rubyscript2exe-verbose")
+QUIET	= (ARGV.include?("--rubyscript2exe-quiet") and not VERBOSE)
 
 ARGV.delete_if{|arg| arg =~ /^--rubyscript2exe-/}
 
@@ -65,15 +67,24 @@
 script	= "#{script}.rb"	unless script =~ /\.rbw?$/
 app	= File.basename(script.gsub(/\.rbw?$/, ""))
 
-$stderr.puts "Tracing #{app}..."
+$stderr.puts "Tracing #{app}..."	unless QUIET
 
-libs	= $:.collect{|a| "-I " + a}
+libs		= $:.collect{|a| "-I '#{a}'"}
+loadscript	= tmplocation("require2lib2rubyscript2exe.rb")
+verbose		= (VERBOSE ? "--require2lib-verbose" : "")
+quiet		= (QUIET ? "--require2lib-quiet" : "")
+argv		= ARGV.collect{|a| "'#{a}'"}
+
+ENV["REQUIRE2LIB_LIBDIR"]	= libdir2
+ENV["REQUIRE2LIB_LOADSCRIPT"]	= loadscript
 
 oldlocation do
-  system(backslashes("#{bindir1}/ruby") + " #{required.join(" ")} #{libs.join(" ")} -r '#{newlocation("require2lib.rb")}' '#{script}' '#{bindir2}' '#{libdir2}' --require2lib-quiet" + " " + ARGV.collect{|a| "'" + a + "'"}.join(" "))
+  system(backslashes("#{bindir1}/ruby") + " #{required.join(" ")} #{libs.join(" ")} -r '#{newlocation("require2lib.rb")}' '#{script}' #{verbose} #{quiet} #{argv.join(" ")}")
 end
 
-$stderr.puts "Copying files..."
+load(loadscript)
+
+$stderr.puts "Copying files..."	unless QUIET
 
 Dir.mkdir(bindir2)	unless File.directory?(bindir2)
 Dir.mkdir(libdir2)	unless File.directory?(libdir2)
@@ -86,6 +97,21 @@
   rubywexe	= "#{bindir1}/rubyw.exe"
 end
 
+if defined?(RUBYSCRIPT2EXE_DLLS)
+  tocopy	= [RUBYSCRIPT2EXE_DLLS].flatten
+else
+  tocopy	= []
+end
+
+tocopy.each do |s1|
+  s1	= oldlocation(s1)
+  file	= File.basename(s1)
+  s2	= File.expand_path(file, bindir2)
+
+  $stderr.puts "Copying #{s1} ..."	if VERBOSE
+  File.copy(s1, s2)			unless File.file?(s2)
+end
+
 if linux?
   tocopy	= ldds(rubyexe)
   tocopy << rubyexe	if File.file?(rubyexe)
@@ -99,16 +125,16 @@
   file	= File.basename(s1)
   s2	= File.expand_path(file, bindir2)
 
-  #$stderr.puts "Copying #{s1} ..."
-  File.copy(s1, s2)	unless File.file?(s2)
+  $stderr.puts "Copying #{s1} ..."	if VERBOSE
+  File.copy(s1, s2)			unless File.file?(s2)
 end
 
 begin
   s1	= oldlocation(script)
   s2	= File.expand_path("app.rb", appdir2)
 
-  #$stderr.puts "Copying #{s1} ..."
-  File.copy(s1, s2)	unless File.file?(s2)
+  $stderr.puts "Copying #{s1} ..."	if VERBOSE
+  File.copy(s1, s2)			unless File.file?(s2)
 end
 
 if linux?
@@ -121,8 +147,8 @@
   file	= File.basename(s1)
   s2	= File.expand_path(file, bindir2)
 
-  #$stderr.puts "Copying #{s1} ..."
-  File.copy(s1, s2)	unless File.file?(s2)
+  $stderr.puts "Copying #{s1} ..."	if VERBOSE
+  File.copy(s1, s2)			unless File.file?(s2)
 end
 
 eeeexe	= "eee.exe"
@@ -132,7 +158,7 @@
 appexe	= "#{app}.bin"	if linux?
 appico	= "#{app}.ico"
 
-$stderr.puts "Creating #{appexe} ..."
+$stderr.puts "Creating #{appexe} ..."	unless QUIET
 
 if linux?
   File.open(tmplocation("eee.sh"), "w") do |f|
@@ -148,12 +174,19 @@
 end
 
 File.open(tmplocation("eee.rb"), "w") do |f|
-  f.puts "lib	= File.expand_path(File.dirname(__FILE__)) + '/lib'"
+  f.puts "lib		= File.expand_path(File.dirname(__FILE__)) + '/lib'"
   f.puts "lib.sub!(/^.:/, '/cygdrive/%s' % $&[0..0].downcase)	if lib =~ /^.:/"	if cygwin?
   f.puts "$:.clear"
   f.puts "$: << lib"
 end
 
+File.open(tmplocation("bootstrap.rb"), "w") do |f|
+  f.puts "load($0 = ARGV.shift)"
+end
+
+File.open(tmplocation("empty.rb"), "w") do |f|
+end
+
 File.open(tmplocation("app.eee"), "w") do |f|
   rubyexe	= "ruby.exe"
   rubyexe	= "rubyw.exe"	if rubyw
@@ -163,13 +196,15 @@
   f.puts "r lib"
   f.puts "f eee.sh"	if linux?
   f.puts "f eee.rb"
+  f.puts "f bootstrap.rb"
+  f.puts "f empty.rb"
   f.puts "r app"
   if linux?
-    f.puts "c source %tempdir%/eee.sh %tempdir% %tempdir%/bin/#{rubyexe} -r %tempdir%/eee.rb %tempdir%/app/app.rb %quotedparms%"
+    f.puts "c source %tempdir%/eee.sh %tempdir% %tempdir%/bin/#{rubyexe} -r %tempdir%/eee.rb -r %tempdir1%/bootstrap.rb -T1 %tempdir1%/empty.rb %tempdir%/app/app.rb %quotedparms%"
   elsif cygwin?
-    f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir1%/eee.rb %tempdir1%/app/app.rb %quotedparms%"
+    f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir1%/eee.rb -r %tempdir1%/bootstrap.rb -T1 %tempdir1%/empty.rb %tempdir1%/app/app.rb %quotedparms%"
   else
-    f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir%\\eee.rb %tempdir%\\app\\app.rb %quotedparms%"
+    f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir%\\eee.rb -r %tempdir%\\bootstrap.rb -T1 %tempdir%\\empty.rb %tempdir%\\app\\app.rb %quotedparms%"
   end
 end
 
diff -ur rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/require2lib.rb rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/require2lib.rb
--- rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/require2lib.rb	2005-01-13 23:07:30.000000000 +0100
+++ rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/require2lib.rb	2005-01-19 00:10:18.000000000 +0100
@@ -25,8 +25,8 @@
 
   ORGDIR	= Dir.pwd
   THISFILE	= File.expand_path(__FILE__)
-  BINDIR	= File.expand_path(ARGV.shift)
-  LIBDIR	= File.expand_path(ARGV.shift)
+  LIBDIR	= File.expand_path((ENV["REQUIRE2LIB_LIBDIR"] or "."))
+  LOADSCRIPT	= File.expand_path((ENV["REQUIRE2LIB_LOADSCRIPT"] or "."))
   RUBYLIBDIR	= Config::CONFIG["rubylibdir"]
   SITELIBDIR	= Config::CONFIG["sitelibdir"]
 
@@ -37,7 +37,7 @@
   end
 
   def self.gatherlibs
-    $stderr.puts "Gathering files..."
+    $stderr.puts "Gathering files..."	unless QUIET
 
     File.makedirs(LIBDIR)
 
@@ -145,7 +145,7 @@
                   if (not JUSTRUBYLIB and not JUSTSITELIB) or
                      (JUSTRUBYLIB and fromfile.include?(RUBYLIBDIR)) or
                      (JUSTSITELIB and fromfile.include?(SITELIBDIR))
-                    $stderr.puts "Found #{fromfile} ."	if VERBOSE
+                    $stderr.puts "Found #{fromfile} ."		if VERBOSE
 
                     File.makedirs(File.dirname(tofile))	unless File.directory?(File.dirname(tofile))
                     File.copy(fromfile, tofile)
@@ -161,27 +161,17 @@
             end
           end
 
-          #$stderr.puts "Can't find #{req} ."	unless req =~ /^ev\//
-          #$stderr.puts "Can't find #{req} ."	unless req =~ /^(\w:)?[\/\\]/
+          #$stderr.puts "Can't find #{req} ."	unless req =~ /^ev\// or QUIET
+          #$stderr.puts "Can't find #{req} ."	unless req =~ /^(\w:)?[\/\\]/ or QUIET
         end
       end
     end
 
     $stderr.puts "Not all required files are pure Ruby."	unless pureruby or QUIET
 
-    if defined?(RUBYSCRIPT2EXE_DLLS)
-      [RUBYSCRIPT2EXE_DLLS].flatten.each do |dll|
-        fromfile	= File.expand_path(dll, ORGDIR)
-        tofile		= File.expand_path(File.basename(dll), BINDIR)
-
-        if File.file?(fromfile)
-          unless fromfile == tofile
-            $stderr.puts "Found #{fromfile} ."	if VERBOSE
-
-            File.makedirs(File.dirname(tofile))	unless File.directory?(File.dirname(tofile))
-            File.copy(fromfile, tofile)
-          end
-        end
+    unless LOADSCRIPT == ORGDIR
+      File.open(LOADSCRIPT, "w") do |f|
+        f.puts "RUBYSCRIPT2EXE_DLLS	= #{RUBYSCRIPT2EXE_DLLS.inspect}"	if defined?(RUBYSCRIPT2EXE_DLLS)
       end
     end
   end
Binary files rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/eee.bin and rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/eee.bin differ
Binary files rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/eee.pas	2005-01-19 00:10:18.000000000 +0100
+++ rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/eee.pas	2005-03-26 18:10:43.000000000 +0100
@@ -71,7 +71,7 @@
     getdir(drivenr, dir);
   {$ELSE}	// Foutje indien bovenliggende dirs niet benaderbaar zijn.
     if (currentdir = '') then begin
-      currentdir	:= getenv('EEEDIR');
+      currentdir	:= getenv('EEE_DIR');
       if (currentdir = '') then begin
         currentdir	:= getenv('PWD');
       end;
@@ -407,12 +407,19 @@
 
 procedure pakin;
 
+{$IFDEF WIN32}
+{$ELSE}
+  var
+    c		: string;
+    p		: string;
+{$ENDIF}
+
 begin
 
   assign(eeefile, paramstr(1));
   reset(eeefile);
 
-  exename	:= getenv('EEEEXE');
+  exename	:= getenv('EEE_EXE');
   if (exename = '') then begin
     exename	:= paramstr(0);
   end;
@@ -469,6 +476,13 @@
 
   close(outfile);
 
+  {$IFDEF WIN32}
+  {$ELSE}
+    c	:= '/bin/sh';
+    p	:= '-c "chmod +x ' + paramstr(2);
+    executeprocess(c, p);
+  {$ENDIF}
+
 end;
 
 
@@ -643,6 +657,13 @@
 
 procedure pakhieruit;
 
+{$IFDEF WIN32}
+{$ELSE}
+  var
+    c		: string;
+    p		: string;
+{$ENDIF}
+
 begin
 
   assign(infile, paramstr(0));
@@ -653,6 +674,12 @@
   blockcopy(infile, outfile, filesize(infile)-t.gzlength-sizeof(t));
   close(outfile);
 
+  {$IFDEF WIN32}
+  {$ELSE}
+    c	:= '/bin/sh';
+    p	:= '-c "chmod +x ' + t.exename;
+    executeprocess(c, p);
+  {$ENDIF}
 
   assign(outfile, workfile);
   rewrite(outfile, 1);
diff -ur rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/ev/dependencies.rb rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/ev/dependencies.rb
--- rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/ev/dependencies.rb	2005-01-19 00:10:18.000000000 +0100
+++ rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/ev/dependencies.rb	2005-03-26 18:10:43.000000000 +0100
@@ -49,7 +49,10 @@
       File.copy(file, tempfile)		# Libraries on Debian are no executables.
       File.chmod(0755, tempfile)
 
-      `ldd #{tempfile}`.split(/\r*\n/).collect{|line| line.split(/\s+/)[3]}.each do |lib|
+      libs	= `ldd #{tempfile}`.split(/\r*\n/).collect{|line| line.split(/\s+/)[3]}			if linux?
+      libs	= `otool -L #{tempfile}`.split(/\r*\n/)[1..-1].collect{|line| line.split(/\s+/)[1]}	if darwin?
+
+      libs.each do |lib|
         if not lib.nil? and File.file?(lib) and not res.include?(lib)
           todo << lib
           res << lib
diff -ur rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb
--- rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2005-01-19 00:10:18.000000000 +0100
+++ rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2005-03-26 18:10:43.000000000 +0100
@@ -1,9 +1,9 @@
-temp	= (ENV["TMPDIR"] or ENV["TMP"] or ENV["TEMP"] or "/tmp").gsub(/\\/, "/")
+temp	= File.expand_path((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")
+ENV["OLDDIR"]	= Dir.pwd				unless ENV.include?("OLDDIR")
+ENV["NEWDIR"]	= File.expand_path(File.dirname($0))	unless ENV.include?("NEWDIR")
+ENV["TEMPDIR"]	= dir					unless ENV.include?("TEMPDIR")
 
 class Dir
   def self.rm_rf(entry)
diff -ur rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/init.rb	2005-01-18 23:38:21.000000000 +0100
+++ rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/init.rb	2005-03-23 22:51:19.000000000 +0100
@@ -7,7 +7,7 @@
 require "ev/ftools"
 require "rbconfig"
 
-exit	if ARGV.include?("--rubyscript2exe-exit")
+exit	if defined?(REQUIRE2LIB)
 
 def backslashes(s)
   s	= s.gsub(/^\.\//, "").gsub(/\//, "\\\\")	if windows?
@@ -15,23 +15,37 @@
 end
 
 def linux?
-  not windows? and not cygwin?			# Hack ???
+  not darwin? and not windows? and not cygwin?
+end
+
+def darwin?
+  not (target_os.downcase =~ /darwin/).nil?
 end
 
 def windows?
-  not (target_os.downcase =~ /32/).nil?		# Hack ???
+  not (target_os.downcase =~ /32/).nil?
 end
 
 def cygwin?
-  not (target_os.downcase =~ /cyg/).nil?	# Hack ???
+  not (target_os.downcase =~ /cyg/).nil?
 end
 
 def target_os
   Config::CONFIG["target_os"] or ""
 end
 
+def copyto(files, dest)
+  [files].flatten.sort.uniq.each do |fromfile|
+    tofile	= File.expand_path(File.basename(fromfile), dest)
+
+    $stderr.puts "Copying #{fromfile} ..."	if VERBOSE
+    File.copy(fromfile, tofile)			unless File.file?(tofile)
+  end
+end
+
 RUBY	= ARGV.include?("--rubyscript2exe-ruby")
 RUBYW	= ARGV.include?("--rubyscript2exe-rubyw")
+STRIP	= (not ARGV.include?("--rubyscript2exe-nostrip"))
 VERBOSE	= ARGV.include?("--rubyscript2exe-verbose")
 QUIET	= (ARGV.include?("--rubyscript2exe-quiet") and not VERBOSE)
 
@@ -42,9 +56,9 @@
 if script.nil?
   $stderr.puts <<-EOF
 
-	Usage: ruby init.rb application[.rb[w]] [--rubyscript2exe-rubyw|--rubyscript2exe-ruby]
+	Usage: ruby init.rb application[.rb[w]] [--rubyscript2exe-rubyw|--rubyscript2exe-ruby] [--rubyscript2exe-nostrip]
 
-	On Linux, there's no difference between ruby and rubyw.
+	On Linux and Darwin, there's no difference between ruby and rubyw.
 
 	For more information, see
 	http://www.erikveen.dds.nl/rubyscript2exe/index.html .
@@ -67,7 +81,7 @@
 script	= "#{script}.rb"	unless script =~ /\.rbw?$/
 app	= File.basename(script.gsub(/\.rbw?$/, ""))
 
-$stderr.puts "Tracing #{app}..."	unless QUIET
+$stderr.puts "Tracing #{app} ..."	unless QUIET
 
 libs		= $:.collect{|a| "-I '#{a}'"}
 loadscript	= tmplocation("require2lib2rubyscript2exe.rb")
@@ -84,103 +98,93 @@
 
 load(loadscript)
 
-$stderr.puts "Copying files..."	unless QUIET
-
 Dir.mkdir(bindir2)	unless File.directory?(bindir2)
 Dir.mkdir(libdir2)	unless File.directory?(libdir2)
 Dir.mkdir(appdir2)	unless File.directory?(appdir2)
 
-if linux?
+if linux? or darwin?
   rubyexe	= "#{bindir1}/ruby"
 else
   rubyexe	= "#{bindir1}/ruby.exe"
   rubywexe	= "#{bindir1}/rubyw.exe"
 end
 
-if defined?(RUBYSCRIPT2EXE_DLLS)
-  tocopy	= [RUBYSCRIPT2EXE_DLLS].flatten
-else
-  tocopy	= []
-end
-
-tocopy.each do |s1|
-  s1	= oldlocation(s1)
-  file	= File.basename(s1)
-  s2	= File.expand_path(file, bindir2)
-
-  $stderr.puts "Copying #{s1} ..."	if VERBOSE
-  File.copy(s1, s2)			unless File.file?(s2)
-end
-
-if linux?
-  tocopy	= ldds(rubyexe)
-  tocopy << rubyexe	if File.file?(rubyexe)
-else
-  tocopy	= dlls(rubyexe)
-  tocopy << rubyexe	if File.file?(rubyexe)
-  tocopy << rubywexe	if File.file?(rubywexe)
-end
-
-tocopy.each do |s1|
-  file	= File.basename(s1)
-  s2	= File.expand_path(file, bindir2)
-
-  $stderr.puts "Copying #{s1} ..."	if VERBOSE
-  File.copy(s1, s2)			unless File.file?(s2)
-end
-
-begin
-  s1	= oldlocation(script)
-  s2	= File.expand_path("app.rb", appdir2)
-
-  $stderr.puts "Copying #{s1} ..."	if VERBOSE
-  File.copy(s1, s2)			unless File.file?(s2)
-end
-
-if linux?
-  tocopy	= Dir.find(libdir2, /\.(so|o|dll)$/i).collect{|file| ldds(file)}.flatten.sort.uniq
-else
-  tocopy	= Dir.find(libdir2, /\.(so|o|dll)$/i).collect{|file| dlls(file, bindir1)}.flatten.sort.uniq
-end
-
-tocopy.each do |s1|
-  file	= File.basename(s1)
-  s2	= File.expand_path(file, bindir2)
-
-  $stderr.puts "Copying #{s1} ..."	if VERBOSE
-  File.copy(s1, s2)			unless File.file?(s2)
-end
+$stderr.puts "Copying files..."	unless QUIET
 
+copyto([RUBYSCRIPT2EXE_DLLS].flatten.collect{|s| oldlocation(s)}, bindir2)	if defined?(RUBYSCRIPT2EXE_DLLS)
+copyto([RUBYSCRIPT2EXE_BIN].flatten.collect{|s| oldlocation(s)}, bindir2)	if defined?(RUBYSCRIPT2EXE_BIN)
+copyto([RUBYSCRIPT2EXE_LIB].flatten.collect{|s| oldlocation(s)}, libdir2)	if defined?(RUBYSCRIPT2EXE_LIB)
+
+copyto(rubyexe, bindir2)	if linux? or darwin?	if File.file?(rubyexe)
+copyto(ldds(rubyexe), bindir2)	if linux? or darwin?
+
+copyto(rubyexe, bindir2)	if windows? or cygwin?	if File.file?(rubyexe)
+copyto(rubywexe, bindir2)	if windows? or cygwin?	if File.file?(rubyexe)
+copyto(dlls(rubyexe), bindir2)	if windows? or cygwin?
+
+copyto([oldlocation(script)], appdir2)
+
+copyto(Dir.find(libdir2, /\.(so|o|dll)$/i).collect{|file| ldds(file)}, bindir2)			if linux? or darwin?
+copyto(Dir.find(libdir2, /\.(so|o|dll)$/i).collect{|file| dlls(file, bindir1)}, bindir2)	if windows? or cygwin?
+
+#if File.file?("#{libdir2}/tk.rb")
+#  $stderr.puts "Copying TCL/TK..."	unless QUIET
+#
+#  require "tk"
+#
+#  tcllib	= Tk::TCL_LIBRARY
+#  tklib		= Tk::TK_LIBRARY
+#
+#  Dir.copy(tcllib, File.expand_path(File.basename(tcllib), libdir2))
+#  Dir.copy(tklib, File.expand_path(File.basename(tklib), libdir2))
+#end
+
+if STRIP and (linux? or darwin?)
+  $stderr.puts "Stripping..."	unless QUIET
+
+  system("cd #{bindir2} ; strip --strip-all * 2> /dev/null")
+  system("cd #{libdir2} ; strip --strip-all * 2> /dev/null")
+end
+
+rubyexe	= "ruby.exe"
+rubyexe	= "rubyw.exe"		if rubyw
+rubyexe	= "ruby"		if linux?
+rubyexe	= "ruby"		if darwin?
 eeeexe	= "eee.exe"
-eeeexe	= "eeew.exe"	if rubyw
-eeeexe	= "eee.bin"	if linux?
+eeeexe	= "eeew.exe"		if rubyw
+eeeexe	= "eee_linux"		if linux?
+eeeexe	= "eee_darwin"		if darwin?
 appexe	= "#{app}.exe"
-appexe	= "#{app}.bin"	if linux?
+appexe	= "#{app}_linux"	if linux?
+appexe	= "#{app}_darwin"	if darwin?
 appico	= "#{app}.ico"
 
 $stderr.puts "Creating #{appexe} ..."	unless QUIET
 
-if linux?
+if linux? or darwin?
   File.open(tmplocation("eee.sh"), "w") do |f|
     f.puts "PDIR=$1;shift"
     f.puts "DIR=$(pwd)"
     f.puts "cd $PDIR"
     f.puts "  chmod +x bin/ruby"
     f.puts "  export PATH=$(pwd)/bin:$PATH"
-    f.puts "  export LD_LIBRARY_PATH=$(pwd)/bin:LD_LIBRARY_PATH"
+    f.puts "  export LD_LIBRARY_PATH=$(pwd)/bin:LD_LIBRARY_PATH"	if linux?
+    f.puts "  export DYLD_LIBRARY_PATH=$(pwd)/bin:DYLD_LIBRARY_PATH"	if darwin?
     f.puts "cd $DIR"
     f.puts "$*"
   end
 end
 
 File.open(tmplocation("eee.rb"), "w") do |f|
-  f.puts "lib		= File.expand_path(File.dirname(__FILE__)) + '/lib'"
+  f.puts "lib	= File.expand_path(File.dirname(__FILE__)) + '/lib'"
   f.puts "lib.sub!(/^.:/, '/cygdrive/%s' % $&[0..0].downcase)	if lib =~ /^.:/"	if cygwin?
   f.puts "$:.clear"
   f.puts "$: << lib"
 end
 
 File.open(tmplocation("bootstrap.rb"), "w") do |f|
+  f.puts "require 'rubygems'"	if RUBYSCRIPT2EXE_RUBYGEMS
+  f.puts "RUBYSCRIPT2EXE	= '#{rubyexe}'"
   f.puts "load($0 = ARGV.shift)"
 end
 
@@ -188,23 +192,22 @@
 end
 
 File.open(tmplocation("app.eee"), "w") do |f|
-  rubyexe	= "ruby.exe"
-  rubyexe	= "rubyw.exe"	if rubyw
-  rubyexe	= "ruby"	if linux?
-
   f.puts "r bin"
   f.puts "r lib"
-  f.puts "f eee.sh"	if linux?
+  f.puts "f eee.sh"	if linux? or darwin?
   f.puts "f eee.rb"
   f.puts "f bootstrap.rb"
   f.puts "f empty.rb"
   f.puts "r app"
-  if linux?
-    f.puts "c source %tempdir%/eee.sh %tempdir% %tempdir%/bin/#{rubyexe} -r %tempdir%/eee.rb -r %tempdir1%/bootstrap.rb -T1 %tempdir1%/empty.rb %tempdir%/app/app.rb %quotedparms%"
+
+  apprb	= File.basename(script)
+
+  if linux? or darwin?
+    f.puts "c echo source %tempdir%/eee.sh %tempdir% %tempdir%/bin/#{rubyexe} -r %tempdir%/eee.rb -r %tempdir1%/bootstrap.rb -T1 %tempdir1%/empty.rb %tempdir%/app/#{apprb} %quotedparms% | sh -s"
   elsif cygwin?
-    f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir1%/eee.rb -r %tempdir1%/bootstrap.rb -T1 %tempdir1%/empty.rb %tempdir1%/app/app.rb %quotedparms%"
+    f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir1%/eee.rb -r %tempdir1%/bootstrap.rb -T1 %tempdir1%/empty.rb %tempdir1%/app/#{apprb} %quotedparms%"
   else
-    f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir%\\eee.rb -r %tempdir%\\bootstrap.rb -T1 %tempdir%\\empty.rb %tempdir%\\app\\app.rb %quotedparms%"
+    f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir%\\eee.rb -r %tempdir%\\bootstrap.rb -T1 %tempdir%\\empty.rb %tempdir%\\app\\#{apprb} %quotedparms%"
   end
 end
 
@@ -212,20 +215,34 @@
 to	= tmplocation(eeeexe)
 
 File.copy(from, to)	unless from == to
-File.chmod(0755, to)	if linux?
+File.chmod(0755, to)	if linux? or darwin?
 
 tmplocation do
-  ENV["EEEEXE"]	= eeeexe
-  ENV["EEEDIR"]	= Dir.pwd
+  ENV["EEE_EXE"]	= eeeexe
+  ENV["EEE_DIR"]	= Dir.pwd
+
+  eeebin1	= newlocation("eee.exe")
+  eeebin1	= newlocation("eee_linux")	if linux?
+  eeebin1	= newlocation("eee_darwin")	if darwin?
+
+  eeebin2	= tmplocation("eee.exe")
+  eeebin2	= tmplocation("eee_linux")	if linux?
+  eeebin2	= tmplocation("eee_darwin")	if darwin?
+
+  from	= eeebin1
+  to	= eeebin2
+
+  File.copy(from, to)	unless from == to
+  File.chmod(0755, to)	if linux? or darwin?
 
-  system(backslashes("#{newlocation(linux? ? "eee.bin" : "eee")} app.eee #{appexe}"))
+  system(backslashes("#{eeebin2} app.eee #{appexe}"))
 end
 
 from	= tmplocation(appexe)
 to	= oldlocation(appexe)
 
 File.copy(from, to)	unless from == to
-File.chmod(0755, to)	if linux?
+#File.chmod(0755, to)	if linux? or darwin?
 
 oldlocation do
   system(backslashes("reshacker -modify #{tmplocation(appexe)}, #{appexe}, #{appico}, icon,appicon,"))	if File.file?(appico) and (windows? or cygwin?)
diff -ur rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/README rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/README
--- rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/README	2004-12-04 00:13:27.000000000 +0100
+++ rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/README	2005-03-23 22:33:17.000000000 +0100
@@ -2,9 +2,9 @@
 The latter is just for playing with the internals. Both are
 available on the site.
 
- Usage: ruby init.rb application[.rb[w]] [--rubyscript2exe-rubyw|--rubyscript2exe-ruby]
+ Usage: ruby init.rb application[.rb[w]] [--rubyscript2exe-rubyw|--rubyscript2exe-ruby] [--rubyscript2exe-nostrip]
 
-On Linux, there's no difference between ruby and rubyw.
+On Linux and Darwin, there's no difference between ruby and rubyw.
 
 For more information, see
 http://www.erikveen.dds.nl/rubyscript2exe/index.html .
diff -ur rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/require2lib.rb rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/require2lib.rb
--- rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/require2lib.rb	2005-01-19 00:10:18.000000000 +0100
+++ rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/require2lib.rb	2005-03-26 18:10:43.000000000 +0100
@@ -5,6 +5,8 @@
 
 $require2lib_loaded	= []
 
+REQUIRE2LIB	= true	unless defined?(REQUIRE2LIB)
+
 module Kernel
   alias :old_load :load
   def load(filename, wrap=false)
@@ -167,11 +169,14 @@
       end
     end
 
-    $stderr.puts "Not all required files are pure Ruby."	unless pureruby or QUIET
+    $stderr.puts "Not all required files are pure Ruby."	unless pureruby	if VERBOSE
 
     unless LOADSCRIPT == ORGDIR
       File.open(LOADSCRIPT, "w") do |f|
         f.puts "RUBYSCRIPT2EXE_DLLS	= #{RUBYSCRIPT2EXE_DLLS.inspect}"	if defined?(RUBYSCRIPT2EXE_DLLS)
+        f.puts "RUBYSCRIPT2EXE_BIN	= #{RUBYSCRIPT2EXE_BIN.inspect}"	if defined?(RUBYSCRIPT2EXE_BIN)
+        f.puts "RUBYSCRIPT2EXE_LIB	= #{RUBYSCRIPT2EXE_LIB.inspect}"	if defined?(RUBYSCRIPT2EXE_LIB)
+        f.puts "RUBYSCRIPT2EXE_RUBYGEMS	= #{rubygems.inspect}"
       end
     end
   end
diff -ur rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/SUMMARY rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/SUMMARY
--- rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/SUMMARY	2007-05-30 10:17:54.000000000 +0200
+++ rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/SUMMARY	2005-03-26 18:10:43.000000000 +0100
@@ -0,0 +1 @@
+A Ruby Compiler
diff -ur rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/VERSION rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/VERSION
--- rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/VERSION	2007-05-30 10:17:54.000000000 +0200
+++ rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/VERSION	2005-03-26 18:10:43.000000000 +0100
@@ -0,0 +1 @@
+0.3.3
Binary files rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/eee.bin and rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/eee.bin differ
Binary files rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/eee_linux and rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/eee_linux differ
Binary files rubyscript2exe-0.3.2.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/CHANGELOG rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/CHANGELOG
--- rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/CHANGELOG	2007-05-30 10:17:55.000000000 +0200
+++ rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/CHANGELOG	2005-05-21 17:03:13.000000000 +0200
@@ -0,0 +1,262 @@
+----------------------------------------------------------------
+
+0.3.4 - 21.05.2005
+
+* Added --rubyscript2exe-tk (experimental).
+
+* Added a check for the existence of
+  Config::CONFIG["bindir"]/ruby (RubyScript2Exe doesn't work
+  without it...).
+
+* Fixed a bug concerning program arguments with spaces on
+  Linux/Darwin (was OK on Windows).
+
+* Added $stdin handling on Linux/Darwin (was OK on Windows).
+
+* Made all files in RUBYSCRIPT2EXE_BIN available via
+  ENV["PATH"].
+
+* Added a search for EEE.
+
+----------------------------------------------------------------
+
+0.3.3 - 23.03.2005
+
+* newlocation is an absolute path.
+
+* ENV["TEMP"] is an absolute path.
+
+* Added REQUIRE2LIB.
+
+* Added RUBYSCRIPT2EXE.
+
+* Added --rubyscript2exe-nostrip.
+
+* Added RUBYSCRIPT2EXE_BIN.
+
+* Added RUBYSCRIPT2EXE_LIB.
+
+* Fixed the non-SH-compatible shell (e.g. TCSH) bug.
+
+* Changed the name of the generated executable on Linux from
+  application.bin to application_linux.
+
+* Added (experimental) support for Mac OS X (Darwin).
+
+----------------------------------------------------------------
+
+0.3.2 - 18.01.2005
+
+* Updated to FreePascal 1.9.6 .
+
+* Added --rubyscript2exe-verbose and --rubyscript2exe-quiet.
+
+* Fixed a bug concerning ENV["RUBYOPT"] on the machine of the
+  customer.
+
+* Fixed a bug concerning spaces in the path to ruby.exe (e.g.
+  "C:\Program Files\ruby\ruby.exe).
+
+* Fixed a bug concerning read-only files.
+
+----------------------------------------------------------------
+
+0.3.1 - 13.01.2005
+
+* Enhanced the support for RubyGems. (Not yet considered
+  stable.)
+
+* Added support for .dll extensions and .o extensions.
+
+* Added RUBYSCRIPT2EXE_DLLS.
+
+* Fixed a bug concerning backslashes in the tracing part.
+
+----------------------------------------------------------------
+
+0.3.0 - 27.12.2004
+
+* Added compression.
+
+* Fixed the broken call to ResHacker.
+
+* Fixed a bug concerning --eee-list in combination with rubyw.
+
+----------------------------------------------------------------
+
+0.2.1 - 18.12.2004
+
+* Added (experimental) support for detecting and embedding Ruby
+  gems.
+
+* Added --eee-list .
+
+----------------------------------------------------------------
+
+0.2.0 - 08.12.2004
+
+* Added support for Linux.
+
+* Added handling of load-ed files, besides require-d files.
+
+----------------------------------------------------------------
+
+0.1.21 - 04.08.2004
+
+* Corrected a bug concerning the length of the command line
+  (again...).
+
+* Added the handling of dll's, needed by the so's.
+
+* Corrected the copying of the resulting exe when using the
+  tar.gz download.
+
+----------------------------------------------------------------
+
+0.1.20 - 30.07.2004
+
+* Added support for Cygwin (Big executables!).
+
+* Corrected the handling of -I (load-path).
+
+----------------------------------------------------------------
+
+0.1.19 - 26.07.2004
+
+* Rewrite of EEE.
+
+* Added recursion to EEE, so tar.exe can be thrown away.
+
+* msvcr71.dll is always added (if it exists). Microsoft tells
+  us to do so. This makes --rubyscript2exe-msvcr71 useless.
+
+----------------------------------------------------------------
+
+0.1.18 - 27.06.2004
+
+* Added application.ico .
+
+----------------------------------------------------------------
+
+0.1.17 - 23.06.2004
+
+* Added the icon.
+
+----------------------------------------------------------------
+
+0.1.16 - 11.06.2004
+
+* Packed both ruby.exe and rubyw.exe for debugging on location.
+
+* Corrected the name of eeew.exe after unpacking.
+
+* Updated to FreePascal 1.9.4 .
+
+----------------------------------------------------------------
+
+0.1.15 - 15.05.2004
+
+* Corrected a bug in --eee-justextract.
+
+* Changed the behavior of --eee-justextract.
+
+----------------------------------------------------------------
+
+0.1.14 - 04.05.2004
+
+* Corrected a shortcoming concerning the length of the command
+  line.
+
+* Updated to FreePascal 1.9.2 .
+
+----------------------------------------------------------------
+
+0.1.13 - 28.04.2004
+
+* Added --rubyscript2exe-msvcr71.
+
+----------------------------------------------------------------
+
+0.1.12 - 24.04.2004
+
+* Added --eee-justextract.
+
+----------------------------------------------------------------
+
+0.1.11 - 26.03.2004
+
+* Got rid of an upper limit of 10M for the executable.
+
+----------------------------------------------------------------
+
+0.1.10 - 16.03.2004
+
+* Fixed a bug concerning paths with spaces. (Whose idea was
+  that?...)
+
+----------------------------------------------------------------
+
+0.1.9 - 16.02.2004
+
+* Fixed a serious bug concerning ftools. (Sorry...)
+
+----------------------------------------------------------------
+
+0.1.8 - 30.01.2004
+
+* Fixed a bug concerning the handling of chdir.
+
+----------------------------------------------------------------
+
+0.1.7 - 08.11.2003
+
+* Handling of rbw files added.
+
+* --rubyscript2exe-ruby added.
+
+----------------------------------------------------------------
+
+0.1.6 - 31.10.2003
+
+* Fixed a bug concerning quoted parameters.
+
+----------------------------------------------------------------
+
+0.1.5 - 29.10.2003
+
+* --rubyscript2exe-rubyw added.
+
+----------------------------------------------------------------
+
+0.1.4 - 20.10.2003
+
+* A problem with file locking under Windows NT has been solved.
+
+----------------------------------------------------------------
+
+0.1.3 - 19.10.2003
+
+* I tested with the latest Pascal program myself, but I
+  distributed an old one. Oops!
+
+----------------------------------------------------------------
+
+0.1.2 - 18.10.2003
+
+* Replaced the call to the external deltree by a call to an
+  internal recursive delete, because in XP (NT?) it's not
+  called deltree but rd.
+
+----------------------------------------------------------------
+
+0.1.1 - 17.10.2003
+
+* Just removed an error message, which was not an error.
+
+----------------------------------------------------------------
+
+0.1 - 17.10.2003
+
+* First release.
+
+----------------------------------------------------------------
diff -ur rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/eee.pas	2005-03-26 18:10:43.000000000 +0100
+++ rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/eee.pas	2005-05-21 17:06:07.000000000 +0200
@@ -32,23 +32,18 @@
 		end;
 
 var
-
   tempdir	: string[255];
   workdir	: string[255];
   workdir1	: string[255];
   workdir2	: string[255];
   workfile	: string[255];
-  exename	: string[255];
   me		: string[255];
-  infile	: file of byte;
-  outfile	: file of byte;
-  zfile		: gzFile;
+  ownfile	: file of byte;
   eeefile	: Text;
   klasse	: string[1];
   tekst1	: string[255];
   tekst2	: string;
-  s		: string[255];
-  i		: longint;
+  workdirnumber	: string[255];
   dir		: string[255];
   h		: header;
   t		: tail;
@@ -57,11 +52,13 @@
   quotedparms	: string;
   justextract	: boolean;
   list		: boolean;
+
   {$IFDEF WIN32}
   {$ELSE}
     currentdir	: string[255];
   {$ENDIF}
 
+{**********************************************************************}
 
 procedure getdir2(drivenr: byte; var dir: string[255]);
 
@@ -82,6 +79,7 @@
 
 end;
 
+{**********************************************************************}
 
 procedure chdir2(dir: string[255]);
 
@@ -101,6 +99,7 @@
 
 end;
 
+{**********************************************************************}
 
 procedure recursivedelete(var path: string[255]);
 
@@ -156,6 +155,7 @@
 
 end;
 
+{**********************************************************************}
 
 procedure blockeat(var infile: file; inlength: longint);
 
@@ -179,6 +179,7 @@
 
 end;
 
+{**********************************************************************}
 
 procedure blockeatfromgz(var zfile: gzFile; inlength: longint);
 
@@ -202,6 +203,7 @@
 
 end;
 
+{**********************************************************************}
 
 procedure blockcopy(var infile: file; var outfile: file; inlength: longint);
 
@@ -227,6 +229,7 @@
 
 end;
 
+{**********************************************************************}
 
 procedure blockcopytogz(var infile: file; var zfile: gzFile; inlength: longint);
 
@@ -252,6 +255,7 @@
 
 end;
 
+{**********************************************************************}
 
 procedure blockcopyfromgz(var zfile: gzFile; var outfile: file; inlength: longint);
 
@@ -277,6 +281,7 @@
 
 end;
 
+{**********************************************************************}
 
 procedure pakin_f(var zfile: gzFile; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
 
@@ -300,6 +305,7 @@
 
 end;
 
+{**********************************************************************}
 
 procedure pakin_d(var zfile: gzFile; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
 
@@ -320,6 +326,7 @@
 
 end;
 
+{**********************************************************************}
 
 procedure pakin_r(var zfile: gzFile; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
 
@@ -364,6 +371,7 @@
 
 end;
 
+{**********************************************************************}
 
 procedure pakin_c(var zfile: gzFile; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
 
@@ -384,6 +392,7 @@
 
 end;
 
+{**********************************************************************}
 
 procedure pakin_t(var zfile: gzFile; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
 
@@ -404,15 +413,23 @@
 
 end;
 
+{**********************************************************************}
 
 procedure pakin;
 
-{$IFDEF WIN32}
-{$ELSE}
-  var
+var
+  zfile		: gzFile;
+  infile	: file of byte;
+  outfile	: file of byte;
+  s		: string;
+  i		: longint;
+  exename	: string[255];
+
+  {$IFDEF WIN32}
+  {$ELSE}
     c		: string;
     p		: string;
-{$ENDIF}
+  {$ENDIF}
 
 begin
 
@@ -485,6 +502,7 @@
 
 end;
 
+{**********************************************************************}
 
 procedure pakuit_f(var zfile: gzFile; var outfile: file; tekst: string; var h: header);
 
@@ -499,6 +517,7 @@
 
 end;
 
+{**********************************************************************}
 
 procedure pakuit_d(var zfile: gzFile; var outfile: file; tekst: string; var h: header);
 
@@ -512,16 +531,17 @@
 
 end;
 
+{**********************************************************************}
 
 procedure pakuit_c(var zfile: gzFile; var outfile: file; tekst: string; var h: header);
 
 var
   c		: string;
   p		: string;
+
   {$IFDEF WIN32}
     i		: longint;
   {$ELSE}
-    sr		: searchrec;
   {$ENDIF}
 
 begin
@@ -531,16 +551,6 @@
   h		:= h;
 
   {$IFDEF WIN32}
-  {$ELSE}
-    findfirst(workdir + '/eee.sh', archive, sr);
-    if (doserror = 0) then begin
-      c	:= '/bin/sh';
-      p	:= '-c "chmod +x ' + workdir + '/eee.sh"';
-      executeprocess(c, p);
-    end;
-  {$ENDIF}
-
-  {$IFDEF WIN32}
     i	:= posex(' ', tekst);
     if (i = 0) then begin
       c	:= tekst;
@@ -551,8 +561,7 @@
       p	:= AnsiMidStr(tekst, i+1, length(tekst)-i);
     end;
   {$ELSE}
-    i	:= 0;
-    c	:= getenv('SHELL');
+    c	:= '/bin/sh';
     p	:= '-c "' + tekst + '"';
   {$ENDIF}
 
@@ -560,6 +569,7 @@
 
 end;
 
+{**********************************************************************}
 
 procedure pakuit_t(var zfile: gzFile; var outfile: file; tekst: string; var h: header);
 
@@ -567,10 +577,9 @@
   c		: string;
   p		: string;
   dir		: string[255];
+
   {$IFDEF WIN32}
     i		: longint;
-  {$ELSE}
-    sr		: searchrec;
   {$ENDIF}
 
 begin
@@ -580,16 +589,6 @@
   h		:= h;
 
   {$IFDEF WIN32}
-  {$ELSE}
-    findfirst(workdir + '/eee.sh', archive, sr);
-    if (doserror = 0) then begin
-      c	:= '/bin/sh';
-      p	:= '-c "chmod +x ' + workdir + '/eee.sh"';
-      executeprocess(c, p);
-    end;
-  {$ENDIF}
-
-  {$IFDEF WIN32}
     i	:= posex(' ', tekst);
     if (i = 0) then begin
       c	:= tekst;
@@ -600,7 +599,7 @@
       p	:= AnsiMidStr(tekst, i+1, length(tekst)-i);
     end;
   {$ELSE}
-    c	:= getenv('SHELL');
+    c	:= '/bin/sh';
     p	:= '-c "' + tekst + '"';
   {$ENDIF}
 
@@ -611,9 +610,16 @@
 
 end;
 
+{**********************************************************************}
 
 procedure pakuit;
 
+var
+  zfile		: gzFile;
+  infile	: file of byte;
+  outfile	: file of byte;
+  i		: longint;
+
 begin
 
   assign(infile, paramstr(0));
@@ -630,7 +636,7 @@
 
   zfile	:= gzopen(workfile, 'r');
 
-  for teller := 1 to t.number do begin
+  for i := 1 to t.number do begin
     gzread(zfile, addr(h), sizeof(h));
 
     klasse	:= h.klasse;
@@ -654,15 +660,21 @@
 
 end;
 
+{**********************************************************************}
 
 procedure pakhieruit;
 
-{$IFDEF WIN32}
-{$ELSE}
-  var
+var
+  zfile		: gzFile;
+  infile	: file of byte;
+  outfile	: file of byte;
+  i		: longint;
+
+  {$IFDEF WIN32}
+  {$ELSE}
     c		: string;
     p		: string;
-{$ENDIF}
+  {$ENDIF}
 
 begin
 
@@ -693,7 +705,7 @@
   assign(eeefile, 'app.eee');
   rewrite(eeefile);
 
-  for teller := 1 to t.number do begin
+  for i := 1 to t.number do begin
     gzread(zfile, addr(h), sizeof(h));
 
     writeln(eeefile, h.klasse, ' ', h.tekst);
@@ -721,9 +733,16 @@
 
 end;
 
+{**********************************************************************}
 
 procedure tooninhoud;
 
+var
+  zfile		: gzFile;
+  infile	: file of byte;
+  outfile	: file of byte;
+  i		: longint;
+
 begin
 
   assign(infile, paramstr(0));
@@ -740,7 +759,7 @@
 
   zfile	:= gzopen(workfile, 'r');
 
-  for teller := 1 to t.number do begin
+  for i := 1 to t.number do begin
     gzread(zfile, addr(h), sizeof(h));
 
     if (h.klasse = 'f') then begin
@@ -757,9 +776,15 @@
 
 end;
 
+{**********************************************************************}
 
 begin
 
+  {$IFDEF WIN32}
+  {$ELSE}
+    currentdir	:= '';
+  {$ENDIF}
+
   tempdir	:= getenv('TEMP');
   if (tempdir = '') then begin
     tempdir	:= '/tmp'
@@ -796,9 +821,10 @@
   getdir2(0, dir);
   chdir2(tempdir);
     {$I-}
+      workdirnumber	:= '';
       repeat
-        str(random(1000), s);
-        workdir	:= 'eee.' + s;
+        str(random(1000), workdirnumber);
+        workdir	:= 'eee.' + workdirnumber;
         mkdir(workdir);
       until (ioresult = 0);
     {$I+}
@@ -811,11 +837,11 @@
 
   filemode	:= 0;
 
-  assign(infile, paramstr(0));
-  reset(infile, 1);
-  blockeat(infile, filesize(infile)-sizeof(t));
-  blockread(infile, t, sizeof(t));
-  close(infile);
+  assign(ownfile, paramstr(0));
+  reset(ownfile, 1);
+  blockeat(ownfile, filesize(ownfile)-sizeof(t));
+  blockread(ownfile, t, sizeof(t));
+  close(ownfile);
 
   if (posex('eeew', lowercase(t.exename)) > 0) then begin
     list	:= false;
diff -ur rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb
--- rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2005-03-26 18:10:43.000000000 +0100
+++ rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2005-05-21 17:06:06.000000000 +0200
@@ -1,9 +1,10 @@
 temp	= File.expand_path((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.expand_path(File.dirname($0))	unless ENV.include?("NEWDIR")
-ENV["TEMPDIR"]	= dir					unless ENV.include?("TEMPDIR")
+ENV["OLDDIR"]	= Dir.pwd								unless ENV.include?("OLDDIR")
+ENV["NEWDIR"]	= File.expand_path(File.dirname($0))					unless ENV.include?("NEWDIR")
+ENV["OWNDIR"]	= File.expand_path(File.dirname((caller[-1] or $0).gsub(/:\d+$/, "")))	unless ENV.include?("OWNDIR")
+ENV["TEMPDIR"]	= dir									unless ENV.include?("TEMPDIR")
 
 class Dir
   def self.rm_rf(entry)
@@ -76,6 +77,27 @@
 end
 
 begin
+  ownlocation
+rescue NameError
+  def ownlocation(file="")
+    dir	= ENV["OWNDIR"]
+    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"]
diff -ur rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/init.rb	2005-03-23 22:51:19.000000000 +0100
+++ rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/init.rb	2005-05-21 16:52:12.000000000 +0200
@@ -46,6 +46,7 @@
 RUBY	= ARGV.include?("--rubyscript2exe-ruby")
 RUBYW	= ARGV.include?("--rubyscript2exe-rubyw")
 STRIP	= (not ARGV.include?("--rubyscript2exe-nostrip"))
+TK	= ARGV.include?("--rubyscript2exe-tk")
 VERBOSE	= ARGV.include?("--rubyscript2exe-verbose")
 QUIET	= (ARGV.include?("--rubyscript2exe-quiet") and not VERBOSE)
 
@@ -54,9 +55,11 @@
 script	= ARGV.shift
 
 if script.nil?
+  usagescript	= "init.rb"
+  usagescript	= "rubyscript2exe.rb"	if defined?(TAR2RUBYSCRIPT)
   $stderr.puts <<-EOF
 
-	Usage: ruby init.rb application[.rb[w]] [--rubyscript2exe-rubyw|--rubyscript2exe-ruby] [--rubyscript2exe-nostrip]
+	Usage: ruby #{usagescript} application[.rb[w]] [--rubyscript2exe-rubyw|--rubyscript2exe-ruby] [--rubyscript2exe-nostrip]
 
 	On Linux and Darwin, there's no difference between ruby and rubyw.
 
@@ -93,10 +96,12 @@
 ENV["REQUIRE2LIB_LOADSCRIPT"]	= loadscript
 
 oldlocation do
-  system(backslashes("#{bindir1}/ruby") + " #{required.join(" ")} #{libs.join(" ")} -r '#{newlocation("require2lib.rb")}' '#{script}' #{verbose} #{quiet} #{argv.join(" ")}")
+  command	= backslashes("#{bindir1}/ruby") + " #{required.join(" ")} #{libs.join(" ")} -r '#{newlocation("require2lib.rb")}' '#{script}' #{verbose} #{quiet} #{argv.join(" ")}"
+
+  system(command) or ($stderr.puts "Couldn't execute this command:\n#{command}" ; exit 16)
 end
 
-load(loadscript)
+load(loadscript)	if File.file?(loadscript)
 
 Dir.mkdir(bindir2)	unless File.directory?(bindir2)
 Dir.mkdir(libdir2)	unless File.directory?(libdir2)
@@ -127,17 +132,19 @@
 copyto(Dir.find(libdir2, /\.(so|o|dll)$/i).collect{|file| ldds(file)}, bindir2)			if linux? or darwin?
 copyto(Dir.find(libdir2, /\.(so|o|dll)$/i).collect{|file| dlls(file, bindir1)}, bindir2)	if windows? or cygwin?
 
-#if File.file?("#{libdir2}/tk.rb")
-#  $stderr.puts "Copying TCL/TK..."	unless QUIET
-#
-#  require "tk"
-#
-#  tcllib	= Tk::TCL_LIBRARY
-#  tklib		= Tk::TK_LIBRARY
-#
-#  Dir.copy(tcllib, File.expand_path(File.basename(tcllib), libdir2))
-#  Dir.copy(tklib, File.expand_path(File.basename(tklib), libdir2))
-#end
+if TK or defined?(RUBYSCRIPT2EXE_TK)
+  if File.file?("#{libdir2}/tk.rb")
+    $stderr.puts "Copying TCL/TK..."	unless QUIET
+
+    require "tk"
+
+    tcllib	= Tk::TCL_LIBRARY
+    tklib	= Tk::TK_LIBRARY
+
+    Dir.copy(tcllib, File.expand_path(File.basename(tcllib), libdir2))
+    Dir.copy(tklib, File.expand_path(File.basename(tklib), libdir2))
+  end
+end
 
 if STRIP and (linux? or darwin?)
   $stderr.puts "Stripping..."	unless QUIET
@@ -161,23 +168,20 @@
 
 $stderr.puts "Creating #{appexe} ..."	unless QUIET
 
-if linux? or darwin?
-  File.open(tmplocation("eee.sh"), "w") do |f|
-    f.puts "PDIR=$1;shift"
-    f.puts "DIR=$(pwd)"
-    f.puts "cd $PDIR"
-    f.puts "  chmod +x bin/ruby"
-    f.puts "  export PATH=$(pwd)/bin:$PATH"
-    f.puts "  export LD_LIBRARY_PATH=$(pwd)/bin:LD_LIBRARY_PATH"	if linux?
-    f.puts "  export DYLD_LIBRARY_PATH=$(pwd)/bin:DYLD_LIBRARY_PATH"	if darwin?
-    f.puts "cd $DIR"
-    f.puts "$*"
-  end
-end
-
 File.open(tmplocation("eee.rb"), "w") do |f|
-  f.puts "lib	= File.expand_path(File.dirname(__FILE__)) + '/lib'"
-  f.puts "lib.sub!(/^.:/, '/cygdrive/%s' % $&[0..0].downcase)	if lib =~ /^.:/"	if cygwin?
+  f.puts "dir	= File.expand_path(File.dirname(__FILE__))"
+  f.puts "dir.sub!(/^.:/, '/cygdrive/%s' % $&[0..0].downcase)	if dir =~ /^.:/"	if cygwin?
+  f.puts "bin	= dir + '/bin'"
+  f.puts "lib	= dir + '/lib'"
+
+  f.puts "s	= ENV['PATH'].dup"
+  f.puts "if Dir.pwd[1..2] == ':/'"
+  f.puts "  s << (';'+bin.gsub(/\\//, '\\\\'))"
+  f.puts "else"
+  f.puts "  s << (':'+bin)"
+  f.puts "end"
+  f.puts "ENV['PATH']   = s"
+
   f.puts "$:.clear"
   f.puts "$: << lib"
 end
@@ -194,7 +198,6 @@
 File.open(tmplocation("app.eee"), "w") do |f|
   f.puts "r bin"
   f.puts "r lib"
-  f.puts "f eee.sh"	if linux? or darwin?
   f.puts "f eee.rb"
   f.puts "f bootstrap.rb"
   f.puts "f empty.rb"
@@ -202,8 +205,10 @@
 
   apprb	= File.basename(script)
 
-  if linux? or darwin?
-    f.puts "c echo source %tempdir%/eee.sh %tempdir% %tempdir%/bin/#{rubyexe} -r %tempdir%/eee.rb -r %tempdir1%/bootstrap.rb -T1 %tempdir1%/empty.rb %tempdir%/app/#{apprb} %quotedparms% | sh -s"
+  if linux?
+    f.puts "c PATH=%tempdir%/bin:$PATH ; export LD_LIBRARY_PATH=%tempdir%/bin:$LD_LIBRARY_PATH ; chmod +x %tempdir%/bin/* ; %tempdir%/bin/#{rubyexe} -r %tempdir%/eee.rb -r %tempdir%/bootstrap.rb -T %tempdir%/empty.rb %tempdir%/app/#{apprb} %quotedparms%"
+  elsif darwin?
+    f.puts "c PATH=%tempdir%/bin:$PATH ; export DYLD_LIBRARY_PATH=%tempdir%/bin:$DYLD_LIBRARY_PATH ; chmod +x %tempdir%/bin/* ; %tempdir%/bin/#{rubyexe} -r %tempdir%/eee.rb -r %tempdir%/bootstrap.rb -T %tempdir%/empty.rb %tempdir%/app/#{apprb} %quotedparms%"
   elsif cygwin?
     f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir1%/eee.rb -r %tempdir1%/bootstrap.rb -T1 %tempdir1%/empty.rb %tempdir1%/app/#{apprb} %quotedparms%"
   else
@@ -212,6 +217,8 @@
 end
 
 from	= newlocation(eeeexe)
+from	= ownlocation(eeeexe)	unless File.file?(from)
+from	= oldlocation(eeeexe)	unless File.file?(from)
 to	= tmplocation(eeeexe)
 
 File.copy(from, to)	unless from == to
@@ -225,6 +232,18 @@
   eeebin1	= newlocation("eee_linux")	if linux?
   eeebin1	= newlocation("eee_darwin")	if darwin?
 
+  unless File.file?(eeebin1)
+    eeebin1	= ownlocation("eee.exe")
+    eeebin1	= ownlocation("eee_linux")	if linux?
+    eeebin1	= ownlocation("eee_darwin")	if darwin?
+  end
+
+  unless File.file?(eeebin1)
+    eeebin1	= oldlocation("eee.exe")
+    eeebin1	= oldlocation("eee_linux")	if linux?
+    eeebin1	= oldlocation("eee_darwin")	if darwin?
+  end
+
   eeebin2	= tmplocation("eee.exe")
   eeebin2	= tmplocation("eee_linux")	if linux?
   eeebin2	= tmplocation("eee_darwin")	if darwin?
@@ -242,7 +261,6 @@
 to	= oldlocation(appexe)
 
 File.copy(from, to)	unless from == to
-#File.chmod(0755, to)	if linux? or darwin?
 
 oldlocation do
   system(backslashes("reshacker -modify #{tmplocation(appexe)}, #{appexe}, #{appico}, icon,appicon,"))	if File.file?(appico) and (windows? or cygwin?)
diff -ur rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/README rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/README
--- rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/README	2005-03-23 22:33:17.000000000 +0100
+++ rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/README	2005-05-06 17:52:21.000000000 +0200
@@ -2,7 +2,11 @@
 The latter is just for playing with the internals. Both are
 available on the site.
 
- Usage: ruby init.rb application[.rb[w]] [--rubyscript2exe-rubyw|--rubyscript2exe-ruby] [--rubyscript2exe-nostrip]
+ Usage: ruby init.rb application[.rb[w]]
+                             [--rubyscript2exe-ruby|--rubyscript2exe-rubyw]
+                             [--rubyscript2exe-verbose|--rubyscript2exe-quiet]
+                             [--rubyscript2exe-nostrip]
+                             [--rubyscript2exe-tk]
 
 On Linux and Darwin, there's no difference between ruby and rubyw.
 
diff -ur rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/VERSION rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/VERSION
--- rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/VERSION	2005-03-26 18:10:43.000000000 +0100
+++ rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/VERSION	2005-05-21 17:06:06.000000000 +0200
@@ -1 +1 @@
-0.3.3
+0.3.4
Binary files rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/eee_linux and rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/eee_linux differ
Binary files rubyscript2exe-0.3.3.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/CHANGELOG rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/CHANGELOG
--- rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/CHANGELOG	2005-05-21 17:03:13.000000000 +0200
+++ rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/CHANGELOG	2005-06-03 13:08:46.000000000 +0200
@@ -1,5 +1,18 @@
 ----------------------------------------------------------------
 
+0.3.5 - 03.06.2005
+
+* Updated to FreePascal 1.9.8 on Windows, 2.0.0 on Linux and
+  1.9.5 on Darwin.
+
+* The exit code of your script is returned to the calling
+  application/shell.
+
+* Made some information about the environment EEE sets up
+  available to the application, e.g. executable name.
+
+----------------------------------------------------------------
+
 0.3.4 - 21.05.2005
 
 * Added --rubyscript2exe-tk (experimental).
diff -ur rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/eee.pas	2005-05-21 17:06:07.000000000 +0200
+++ rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/eee.pas	2005-06-03 13:16:46.000000000 +0200
@@ -1,3 +1,5 @@
+program eee;
+
 {$mode DELPHI}
 
 {$IFDEF WIN32}
@@ -52,6 +54,7 @@
   quotedparms	: string;
   justextract	: boolean;
   list		: boolean;
+  returncode	: integer;
 
   {$IFDEF WIN32}
   {$ELSE}
@@ -415,6 +418,27 @@
 
 {**********************************************************************}
 
+procedure pakin_i(var zfile: gzFile; klasse: string[1]; tekst: string[255]; entry: string[255]; var t: tail);
+
+var
+  h		: header;
+
+begin
+
+  entry		:= entry;
+
+  h.klasse	:= klasse;
+  h.tekst	:= tekst;
+  h.datalength	:= 0;
+
+  gzwrite(zfile, addr(h), sizeof(h));
+
+  t.number	:= t.number + 1;
+
+end;
+
+{**********************************************************************}
+
 procedure pakin;
 
 var
@@ -467,6 +491,7 @@
         'r': pakin_r(zfile, klasse, tekst1, tekst1, t);
         'c': pakin_c(zfile, klasse, tekst1, tekst1, t);
         't': pakin_t(zfile, klasse, tekst1, tekst1, t);
+        'i': pakin_i(zfile, klasse, tekst1, tekst1, t);
       end;
     end;
   until eof(eeefile);
@@ -565,7 +590,7 @@
     p	:= '-c "' + tekst + '"';
   {$ENDIF}
 
-  executeprocess(c, p);
+  returncode	:= executeprocess(c, p);
 
 end;
 
@@ -605,13 +630,35 @@
 
   getdir2(0, dir);
   chdir2(workdir);
-    executeprocess(c, p);
+    returncode	:= executeprocess(c, p);
   chdir2(dir);
 
 end;
 
 {**********************************************************************}
 
+procedure pakuit_i(var zfile: gzFile; var outfile: file; tekst: string; var h: header);
+
+var
+  infofile	: Text;
+
+begin
+
+  assign(infofile, workdir + slash + tekst);
+  rewrite(infofile);
+
+  writeln(infofile, 'EEE_APPEXE='	+ paramstr(0));
+  writeln(infofile, 'EEE_EEEEXE='	+ t.exename);
+  writeln(infofile, 'EEE_TEMPDIR='	+ workdir);
+  writeln(infofile, 'EEE_PARMS='	+ parms);
+  writeln(infofile, 'EEE_QUOTEDPARMS='	+ quotedparms);
+
+  close(infofile);
+
+end;
+
+{**********************************************************************}
+
 procedure pakuit;
 
 var
@@ -653,6 +700,7 @@
       'd': pakuit_d(zfile, outfile, tekst2, h);
       'c': pakuit_c(zfile, outfile, tekst2, h);
       't': pakuit_t(zfile, outfile, tekst2, h);
+      'i': pakuit_i(zfile, outfile, tekst2, h);
     end;
   end;
 
@@ -795,6 +843,8 @@
   justextract	:= false;
   list		:= false;
 
+  returncode	:= 0;
+
   parms		:= '';
   quotedparms	:= '';
   for teller := 1 to paramcount do begin
@@ -866,4 +916,6 @@
 
   recursivedelete(workdir);
 
+  halt(returncode);
+
 end.
diff -ur rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/init.rb	2005-05-21 16:52:12.000000000 +0200
+++ rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/init.rb	2005-06-03 13:16:39.000000000 +0200
@@ -98,10 +98,15 @@
 oldlocation do
   command	= backslashes("#{bindir1}/ruby") + " #{required.join(" ")} #{libs.join(" ")} -r '#{newlocation("require2lib.rb")}' '#{script}' #{verbose} #{quiet} #{argv.join(" ")}"
 
-  system(command) or ($stderr.puts "Couldn't execute this command:\n#{command}" ; exit 16)
+  system(command)
 end
 
-load(loadscript)	if File.file?(loadscript)
+unless File.file?(loadscript)
+  $stderr.puts "Couldn't execute this command (rc=#{$?}):\n#{command}"
+  exit 16
+end
+
+load(loadscript)
 
 Dir.mkdir(bindir2)	unless File.directory?(bindir2)
 Dir.mkdir(libdir2)	unless File.directory?(libdir2)
@@ -168,7 +173,9 @@
 
 $stderr.puts "Creating #{appexe} ..."	unless QUIET
 
-File.open(tmplocation("eee.rb"), "w") do |f|
+File.open(tmplocation("bootstrap.rb"), "w") do |f|
+  f.puts "# Set up the environment"
+
   f.puts "dir	= File.expand_path(File.dirname(__FILE__))"
   f.puts "dir.sub!(/^.:/, '/cygdrive/%s' % $&[0..0].downcase)	if dir =~ /^.:/"	if cygwin?
   f.puts "bin	= dir + '/bin'"
@@ -184,10 +191,28 @@
 
   f.puts "$:.clear"
   f.puts "$: << lib"
-end
 
-File.open(tmplocation("bootstrap.rb"), "w") do |f|
+  f.puts "# Load eee.info"
+
+  f.puts "eeedir		= File.dirname(__FILE__)"
+  f.puts "eeeinfo		= File.expand_path('eee.info', eeedir)"
+  f.puts "if File.file?(eeeinfo)"
+  f.puts "  File.open(eeeinfo) do |f|"
+  f.puts "    while line = f.gets"
+  f.puts "      k, v	= line.strip.split(/\s*=\s*/, 2)"
+  f.puts "	k.gsub!(/^EEE_/, 'RUBYSCRIPT2EXE_')"
+  f.puts "      v	= File.expand_path(v)	if k == 'RUBYSCRIPT2EXE_APPEXE'"
+  f.puts "      eval('%s=%s' % [k, v.inspect])"
+  f.puts "    end"
+  f.puts "  end"
+  f.puts "end"
+
+  f.puts "# Requirements"
+
   f.puts "require 'rubygems'"	if RUBYSCRIPT2EXE_RUBYGEMS
+
+  f.puts "# Start the application"
+
   f.puts "RUBYSCRIPT2EXE	= '#{rubyexe}'"
   f.puts "load($0 = ARGV.shift)"
 end
@@ -198,21 +223,21 @@
 File.open(tmplocation("app.eee"), "w") do |f|
   f.puts "r bin"
   f.puts "r lib"
-  f.puts "f eee.rb"
   f.puts "f bootstrap.rb"
   f.puts "f empty.rb"
   f.puts "r app"
+  f.puts "i eee.info"
 
   apprb	= File.basename(script)
 
   if linux?
-    f.puts "c PATH=%tempdir%/bin:$PATH ; export LD_LIBRARY_PATH=%tempdir%/bin:$LD_LIBRARY_PATH ; chmod +x %tempdir%/bin/* ; %tempdir%/bin/#{rubyexe} -r %tempdir%/eee.rb -r %tempdir%/bootstrap.rb -T %tempdir%/empty.rb %tempdir%/app/#{apprb} %quotedparms%"
+    f.puts "c PATH=%tempdir%/bin:$PATH ; export LD_LIBRARY_PATH=%tempdir%/bin:$LD_LIBRARY_PATH ; chmod +x %tempdir%/bin/* ; %tempdir%/bin/#{rubyexe} -r %tempdir%/bootstrap.rb -T %tempdir%/empty.rb %tempdir%/app/#{apprb} %quotedparms%"
   elsif darwin?
-    f.puts "c PATH=%tempdir%/bin:$PATH ; export DYLD_LIBRARY_PATH=%tempdir%/bin:$DYLD_LIBRARY_PATH ; chmod +x %tempdir%/bin/* ; %tempdir%/bin/#{rubyexe} -r %tempdir%/eee.rb -r %tempdir%/bootstrap.rb -T %tempdir%/empty.rb %tempdir%/app/#{apprb} %quotedparms%"
+    f.puts "c PATH=%tempdir%/bin:$PATH ; export DYLD_LIBRARY_PATH=%tempdir%/bin:$DYLD_LIBRARY_PATH ; chmod +x %tempdir%/bin/* ; %tempdir%/bin/#{rubyexe} -r %tempdir%/bootstrap.rb -T %tempdir%/empty.rb %tempdir%/app/#{apprb} %quotedparms%"
   elsif cygwin?
-    f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir1%/eee.rb -r %tempdir1%/bootstrap.rb -T1 %tempdir1%/empty.rb %tempdir1%/app/#{apprb} %quotedparms%"
+    f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir1%/bootstrap.rb -T1 %tempdir1%/empty.rb %tempdir1%/app/#{apprb} %quotedparms%"
   else
-    f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir%\\eee.rb -r %tempdir%\\bootstrap.rb -T1 %tempdir%\\empty.rb %tempdir%\\app\\#{apprb} %quotedparms%"
+    f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir%\\bootstrap.rb -T1 %tempdir%\\empty.rb %tempdir%\\app\\#{apprb} %quotedparms%"
   end
 end
 
diff -ur rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/README rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/README
--- rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/README	2005-05-06 17:52:21.000000000 +0200
+++ rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/README	2005-05-22 18:09:36.000000000 +0200
@@ -8,7 +8,8 @@
                              [--rubyscript2exe-nostrip]
                              [--rubyscript2exe-tk]
 
-On Linux and Darwin, there's no difference between ruby and rubyw.
+On Linux and Darwin, there's no difference between ruby and
+rubyw.
 
 For more information, see
 http://www.erikveen.dds.nl/rubyscript2exe/index.html .
diff -ur rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/VERSION rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/VERSION
--- rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/VERSION	2005-05-21 17:06:06.000000000 +0200
+++ rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/VERSION	2005-06-03 13:16:46.000000000 +0200
@@ -1 +1 @@
-0.3.4
+0.3.5
Binary files rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/eee_linux and rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/eee_linux differ
Binary files rubyscript2exe-0.3.4.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/CHANGELOG rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/CHANGELOG
--- rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/CHANGELOG	2005-06-03 13:08:46.000000000 +0200
+++ rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/CHANGELOG	2005-06-14 21:42:20.000000000 +0200
@@ -1,5 +1,11 @@
 ----------------------------------------------------------------
 
+0.3.6 - 14.06.2005
+
+* Fixed a bug concerning spaces in %TEMP%.
+
+----------------------------------------------------------------
+
 0.3.5 - 03.06.2005
 
 * Updated to FreePascal 1.9.8 on Windows, 2.0.0 on Linux and
diff -ur rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/eee.pas	2005-06-03 13:16:46.000000000 +0200
+++ rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/eee.pas	2005-06-14 21:44:16.000000000 +0200
@@ -63,6 +63,37 @@
 
 {**********************************************************************}
 
+{$IFDEF WIN32}
+  function GetShortPathNameA(LongName, ShortName: Pchar; ccbuffer: Dword): Dword; stdcall external 'kernel32.dll' name 'GetShortPathNameA';
+{$ENDIF}
+
+function getshortpathname(dir: String): String;
+
+{$IFDEF WIN32}
+  var
+    longname	: pchar;
+    shortname	: pchar;
+    buffer	: dword;
+{$ENDIF}
+
+begin
+
+  {$IFDEF WIN32}
+    longname	:= pchar(dir+'');
+    shortname	:= pchar(dir+'');
+    buffer	:= 255;
+
+    GetShortPathNameA(longname, shortname, buffer);
+
+    dir	:= shortname;
+  {$ENDIF}
+
+  getshortpathname	:= dir;
+
+end;
+
+{**********************************************************************}
+
 procedure getdir2(drivenr: byte; var dir: string[255]);
 
 begin
@@ -71,9 +102,9 @@
     getdir(drivenr, dir);
   {$ELSE}	// Foutje indien bovenliggende dirs niet benaderbaar zijn.
     if (currentdir = '') then begin
-      currentdir	:= getenv('EEE_DIR');
+      currentdir	:= getshortpathname(getenv('EEE_DIR'));
       if (currentdir = '') then begin
-        currentdir	:= getenv('PWD');
+        currentdir	:= getshortpathname(getenv('PWD'));
       end;
     end;
 
@@ -137,7 +168,7 @@
         assign(f, sr.name);
         erase(f);
         if (ioresult <> 0) then begin
-          // writeln('Couldn''t delete file ' + sr.name);
+          // Somehow, ioresult has to be touched.
         end;
       {$I+}
 
@@ -152,7 +183,7 @@
   {$I-}
     rmdir(path + slash);
     if (ioresult <> 0) then begin
-      // writeln('Couldn''t delete directory ' + path + ' (Known Error).');
+      // Somehow, ioresult has to be touched.
     end;
   {$I+}
 
@@ -460,7 +491,7 @@
   assign(eeefile, paramstr(1));
   reset(eeefile);
 
-  exename	:= getenv('EEE_EXE');
+  exename	:= getshortpathname(getenv('EEE_EXE'));
   if (exename = '') then begin
     exename	:= paramstr(0);
   end;
@@ -833,7 +864,7 @@
     currentdir	:= '';
   {$ENDIF}
 
-  tempdir	:= getenv('TEMP');
+  tempdir	:= getshortpathname(getenv('TEMP'));
   if (tempdir = '') then begin
     tempdir	:= '/tmp'
   end;
diff -ur rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/VERSION rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/VERSION
--- rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/VERSION	2005-06-03 13:16:46.000000000 +0200
+++ rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/VERSION	2005-06-14 21:44:16.000000000 +0200
@@ -1 +1 @@
-0.3.5
+0.3.6
Binary files rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/eee_linux and rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/eee_linux differ
Binary files rubyscript2exe-0.3.5.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/CHANGELOG rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/CHANGELOG
--- rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/CHANGELOG	2005-06-14 21:42:20.000000000 +0200
+++ rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/CHANGELOG	2005-08-06 12:59:17.000000000 +0200
@@ -1,5 +1,23 @@
 ----------------------------------------------------------------
 
+0.3.7 - 06.08.2005
+
+* Added better error detection and error reporting in EEE.
+
+* Added --eee-info.
+
+* Added RUBYSCRIPT2EXE_TEMPDIR.
+
+* Fixed a bug concerning the variable command which wasn't
+  "declared" in one specific situation.
+
+* Went back to FPC 1.9.8 (from 2.0.0) on Linux, because of some
+  access violations.
+
+* Updated to FPC 1.9.8 (from 1.9.5) on Darwin.
+
+----------------------------------------------------------------
+
 0.3.6 - 14.06.2005
 
 * Fixed a bug concerning spaces in %TEMP%.
diff -ur rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/eee.pas	2005-06-14 21:44:16.000000000 +0200
+++ rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/eee.pas	2005-08-06 12:59:36.000000000 +0200
@@ -27,15 +27,18 @@
 		end;
 
   tail =	record
-		  exename	: string[255];
+		  eeeexe	: string[255];
+		  appname	: string[255];
+		  tempdir	: string[255];
 		  gzlength	: longint;
 		  who		: string[255];
 		  number	: longint;
 		end;
 
 var
+  temp		: string[255];
+  orgdir	: string[255];
   tempdir	: string[255];
-  workdir	: string[255];
   workdir1	: string[255];
   workdir2	: string[255];
   workfile	: string[255];
@@ -46,7 +49,6 @@
   tekst1	: string[255];
   tekst2	: string;
   workdirnumber	: string[255];
-  dir		: string[255];
   h		: header;
   t		: tail;
   teller	: longint;
@@ -54,6 +56,8 @@
   quotedparms	: string;
   justextract	: boolean;
   list		: boolean;
+  info		: boolean;
+  appname	: string;
   returncode	: integer;
 
   {$IFDEF WIN32}
@@ -65,27 +69,76 @@
 
 {$IFDEF WIN32}
   function GetShortPathNameA(LongName, ShortName: Pchar; ccbuffer: Dword): Dword; stdcall external 'kernel32.dll' name 'GetShortPathNameA';
+  function MessageBox(p1: longint; p2, p3: pChar; p4: longint): longint; stdcall; external 'user32.dll' name 'MessageBoxA';
+{$ENDIF}
+
+{**********************************************************************}
+
+procedure message(msg: string);
+
+{$IFDEF WIN32}
+var
+  appname2	: string;
 {$ENDIF}
 
+begin
+
+  {$IFDEF WIN32}
+    if IsConsole then begin
+      writeln(appname + ': ' + msg);
+    end
+    else begin
+      msg	:= msg + #0;
+      appname2	:= appname + #0;
+
+      MessageBox(0, @msg[1], @appname2[1], 0);
+    end;
+  {$ELSE}
+    writeln(appname + ': ' + msg);
+  {$ENDIF}
+
+end;
+
+{**********************************************************************}
+
+procedure error(msg: string);
+
+begin
+
+  message(msg);
+
+  // ??? Possible loop ??? recursivedelete(tempdir);
+
+  halt(8);
+
+end;
+
+{**********************************************************************}
+
 function getshortpathname(dir: String): String;
 
 {$IFDEF WIN32}
   var
-    longname	: pchar;
-    shortname	: pchar;
-    buffer	: dword;
+    longname	: string;
+    shortname	: string;
+    l		: longint;
 {$ENDIF}
 
 begin
 
   {$IFDEF WIN32}
-    longname	:= pchar(dir+'');
-    shortname	:= pchar(dir+'');
-    buffer	:= 255;
+    longname	:= dir + #0;
+    shortname	:= '';
+
+    for teller := 1 to 255 do begin
+      shortname := shortname + ' ';	// This is stupid...
+    end;
 
-    GetShortPathNameA(longname, shortname, buffer);
+    l	:= GetShortPathNameA(@longname[1], @shortname[1], length(shortname));
 
-    dir	:= shortname;
+    if (l > 0) then begin
+      dir	:= AnsiMidStr(shortname, 1, l);
+    end;
   {$ENDIF}
 
   getshortpathname	:= dir;
@@ -115,10 +168,12 @@
 
 {**********************************************************************}
 
-procedure chdir2(dir: string[255]);
+procedure chdir2(dir: string[255]; continueonfailure: boolean);
 
 begin
 
+  {$I-}
+
   {$IFDEF WIN32}
     chdir(dir);
   {$ELSE}	// Foutje indien bovenliggende dirs niet benaderbaar zijn.
@@ -131,6 +186,16 @@
     chdir(dir);
   {$ENDIF}
 
+  if (ioresult <> 0) then begin
+    message('Couldn''t change directory: "' + dir + '"');
+
+    if (not continueonfailure) then begin
+      halt(8);
+    end;
+  end;
+
+  {$I+}
+
 end;
 
 {**********************************************************************}
@@ -146,46 +211,45 @@
 begin
 
   getdir2(0, dir);
-  chdir2(path);
-
-  {$IFDEF WIN32}
-    findfirst('*.*', anyfile or directory, sr);
-  {$ELSE}
-    findfirst('*', anyfile or directory, sr);
-  {$ENDIF}
-  while(doserror = 0) do begin
-    assign(f, sr.name);		// Foutje in 1.9.2 ???
-    getfattr(f, attr);		// Foutje in 1.9.2 ???
 
-    if (attr and directory > 0) then begin
-      if ((not (sr.name = '.')) and (not (sr.name = '..'))) then begin
-        recursivedelete(sr.name);
-      end;
-    end
-    else begin
+  {$I-}
+    chdir2(path, true);
+  {$I+}
 
-      {$I-}
-        assign(f, sr.name);
-        erase(f);
-        if (ioresult <> 0) then begin
-          // Somehow, ioresult has to be touched.
+  if (ioresult = 0) then begin
+    {$IFDEF WIN32}
+      findfirst('*.*', anyfile or directory, sr);
+    {$ELSE}
+      findfirst('*', anyfile or directory, sr);
+    {$ENDIF}
+    while (doserror = 0) do begin
+      assign(f, sr.name);		// Foutje in 1.9.2 ???
+      getfattr(f, attr);		// Foutje in 1.9.2 ???
+
+      if (attr and directory > 0) then begin
+        if ((not (sr.name = '.')) and (not (sr.name = '..'))) then begin
+          recursivedelete(sr.name);
         end;
-      {$I+}
-
-    end;
+      end
+      else begin
 
-    findnext(sr);
-  end;
-  findclose(sr);
+        {$I-}
+          assign(f, sr.name);
+          erase(f);			if (ioresult <> 0) then;
+        {$I+}
 
-  chdir2(dir);
+      end;
 
-  {$I-}
-    rmdir(path + slash);
-    if (ioresult <> 0) then begin
-      // Somehow, ioresult has to be touched.
+      findnext(sr);
     end;
-  {$I+}
+    findclose(sr);
+
+    chdir2(dir, false);
+
+    {$I-}
+      rmdir(path + slash);		if (ioresult <> 0) then;
+    {$I+}
+  end;
 
 end;
 
@@ -206,7 +270,9 @@
     if (c = 0)	then l := inlength-(inlength div sizeof(b))*sizeof(b)
 		else l := sizeof(b);
 
-    blockread(infile, b, l);
+    {$I-}
+      blockread(infile, b, l);		if (ioresult <> 0) then error('Couldn''t read file (BLOCKEAT).');
+    {$I+}
 
     dec(c);
   end;
@@ -230,7 +296,9 @@
     if (c = 0)	then l := inlength-(inlength div sizeof(b))*sizeof(b)
 		else l := sizeof(b);
 
-    gzread(zfile, addr(b), l);
+    {$I-}
+      gzread(zfile, addr(b), l);		if (ioresult <> 0) then error('Couldn''t read file (BLOCKEATFROMGZ).');
+    {$I+}
 
     dec(c);
   end;
@@ -255,8 +323,10 @@
     if (c = 0)	then l := inlength-(inlength div sizeof(b))*sizeof(b)
 		else l := sizeof(b);
 
-    blockread(infile, b, l, n);
-    blockwrite(outfile, b, n);
+    {$I-}
+      blockread(infile, b, l, n);		if (ioresult <> 0) then error('Couldn''t read file (BLOCKCOPY).');
+      blockwrite(outfile, b, n);		if (ioresult <> 0) then error('Couldn''t write file (BLOCKCOPY).');
+    {$I+}
 
     dec(c);
   end;
@@ -281,8 +351,10 @@
     if (c = 0)	then l := inlength-(inlength div sizeof(b))*sizeof(b)
 		else l := sizeof(b);
 
-    blockread(infile, b, l, n);
-    gzwrite(zfile, addr(b), n);
+    {$I-}
+      blockread(infile, b, l, n);		if (ioresult <> 0) then error('Couldn''t read file (BLOCKCOPYTOGZ).');
+      gzwrite(zfile, addr(b), n);		if (ioresult <> 0) then error('Couldn''t write file (BLOCKCOPYTOGZ).');
+    {$I+}
 
     dec(c);
   end;
@@ -307,8 +379,10 @@
     if (c = 0)	then l := inlength-(inlength div sizeof(b))*sizeof(b)
 		else l := sizeof(b);
 
-    n	:= gzread(zfile, addr(b), l);
-    blockwrite(outfile, b, n);
+    {$I-}
+      n	:= gzread(zfile, addr(b), l);		if (ioresult <> 0) then error('Couldn''t read file (BLOCKCOPYFROMGZ).');
+      blockwrite(outfile, b, n);		if (ioresult <> 0) then error('Couldn''t write file (BLOCKCOPYFROMGZ).');
+    {$I+}
 
     dec(c);
   end;
@@ -328,10 +402,12 @@
   h.klasse	:= klasse;
   h.tekst	:= tekst;
 
-  assign(infile, entry);
-  reset(infile, 1);
-  h.datalength	:= filesize(infile);
-  gzwrite(zfile, addr(h), sizeof(h));
+  {$I-}
+    assign(infile, entry);
+    reset(infile, 1);				if (ioresult <> 0) then error('Couldn''t open: "' + entry + '"');
+    h.datalength	:= filesize(infile);
+    gzwrite(zfile, addr(h), sizeof(h));		if (ioresult <> 0) then error('Couldn''t write file (GZFILE).');
+  {$I+}
   blockcopytogz(infile, zfile, h.datalength);
   close(infile);
 
@@ -354,7 +430,9 @@
   h.tekst	:= tekst;
   h.datalength	:= 0;
 
-  gzwrite(zfile, addr(h), sizeof(h));
+  {$I-}
+    gzwrite(zfile, addr(h), sizeof(h));		if (ioresult <> 0) then error('Couldn''t write file (GZFILE).');
+  {$I+}
 
   t.number	:= t.number + 1;
 
@@ -377,14 +455,14 @@
   pakin_d(zfile, 'd', tekst, entry, t);
 
   getdir2(0, dir);
-  chdir2(entry);
+  chdir2(entry, false);
 
   {$IFDEF WIN32}
     findfirst('*.*', anyfile or directory, sr);
   {$ELSE}
     findfirst('*', anyfile or directory, sr);
   {$ENDIF}
-  while(doserror = 0) do begin
+  while (doserror = 0) do begin
     assign(f, sr.name);		// Foutje in 1.9.2 ???
     getfattr(f, attr);		// Foutje in 1.9.2 ???
 
@@ -401,7 +479,7 @@
   end;
   findclose(sr);
 
-  chdir2(dir);
+  chdir2(dir, false);
 
 end;
 
@@ -420,7 +498,9 @@
   h.tekst	:= tekst;
   h.datalength	:= 0;
 
-  gzwrite(zfile, addr(h), sizeof(h));
+  {$I-}
+    gzwrite(zfile, addr(h), sizeof(h));		if (ioresult <> 0) then error('Couldn''t write file (GZFILE).');
+  {$I+}
 
   t.number	:= t.number + 1;
 
@@ -441,7 +521,9 @@
   h.tekst	:= tekst;
   h.datalength	:= 0;
 
-  gzwrite(zfile, addr(h), sizeof(h));
+  {$I-}
+    gzwrite(zfile, addr(h), sizeof(h));		if (ioresult <> 0) then error('Couldn''t write file (GZFILE).');
+  {$I+}
 
   t.number	:= t.number + 1;
 
@@ -462,7 +544,9 @@
   h.tekst	:= tekst;
   h.datalength	:= 0;
 
-  gzwrite(zfile, addr(h), sizeof(h));
+  {$I-}
+    gzwrite(zfile, addr(h), sizeof(h));		if (ioresult <> 0) then error('Couldn''t write file (GZFILE).');
+  {$I+}
 
   t.number	:= t.number + 1;
 
@@ -478,7 +562,7 @@
   outfile	: file of byte;
   s		: string;
   i		: longint;
-  exename	: string[255];
+  eeeexe	: string[255];
 
   {$IFDEF WIN32}
   {$ELSE}
@@ -488,26 +572,43 @@
 
 begin
 
-  assign(eeefile, paramstr(1));
-  reset(eeefile);
+  {$I-}
+    assign(eeefile, paramstr(1));
+    reset(eeefile);		if (ioresult <> 0) then error('Couldn''t open: "' + paramstr(1) + '"');
+  {$I+}
 
-  exename	:= getshortpathname(getenv('EEE_EXE'));
-  if (exename = '') then begin
-    exename	:= paramstr(0);
+  if (getenv('EEE_EXE') <> '') then begin
+    eeeexe	:= getshortpathname(getenv('EEE_EXE'));
+  end
+  else begin
+    eeeexe	:= paramstr(0);
   end;
 
-  t.exename	:= exename;
+  appname	:= paramstr(2);
+
+  s		:= slash;
+  i		:= posex(s, appname);
+  while (i > 0) do begin
+    appname	:= AnsiMidStr(appname, i+length(s), length(appname)-(i+length(s))+1);
+    i		:= posex(s, appname);
+  end;
+
+  t.eeeexe	:= eeeexe;
+  t.appname	:= appname;
+  t.tempdir	:= getenv('EEE_TEMPDIR');
   t.number	:= 0;
   t.who		:= me;
 
   s		:= slash;
-  i		:= posex(s, t.exename);
+  i		:= posex(s, t.eeeexe);
   while (i > 0) do begin
-    t.exename	:= AnsiMidStr(t.exename, i+length(s), length(t.exename)-(i+length(s))+1);
-    i		:= posex(s, t.exename);
+    t.eeeexe	:= AnsiMidStr(t.eeeexe, i+length(s), length(t.eeeexe)-(i+length(s))+1);
+    i		:= posex(s, t.eeeexe);
   end;
 
-  zfile	:= gzopen(workfile, 'w');
+  {$I-}
+    zfile	:= gzopen(workfile, 'w');		if (ioresult <> 0) then error('Couldn''t open: "' + workfile + '"');
+  {$I+}
 
   repeat
     readln(eeefile, s);
@@ -531,21 +632,29 @@
 
   close(eeefile);
 
-  assign(outfile, paramstr(2));
-  rewrite(outfile, 1);
+  {$I-}
+    assign(outfile, paramstr(2));
+    rewrite(outfile, 1);			if (ioresult <> 0) then error('Couldn''t open: "' + paramstr(2) + '"');
+  {$I+}
 
-  assign(infile, exename);
-  reset(infile, 1);
+  {$I-}
+    assign(infile, eeeexe);
+    reset(infile, 1);				if (ioresult <> 0) then error('Couldn''t open: "' + eeeexe + '"');
+  {$I+}
   blockcopy(infile, outfile, filesize(infile));
   close(infile);
 
-  assign(infile, workfile);
-  reset(infile, 1);
+  {$I-}
+    assign(infile, workfile);
+    reset(infile, 1);				if (ioresult <> 0) then error('Couldn''t open: "' + workfile + '"');
+  {$I+}
   blockcopy(infile, outfile, filesize(infile));
   t.gzlength	:= filesize(infile);
   close(infile);
 
-  blockwrite(outfile, t, sizeof(t));
+  {$I-}
+    blockwrite(outfile, t, sizeof(t));		if (ioresult <> 0) then error('Couldn''t write: "' + paramstr(2) + '"');
+  {$I+}
 
   close(outfile);
 
@@ -564,8 +673,10 @@
 
 begin
 
-  assign(outfile, workdir + slash + tekst);
-  rewrite(outfile, 1);
+  {$I-}
+    assign(outfile, tempdir + slash + tekst);
+    rewrite(outfile, 1);		if (ioresult <> 0) then error('Couldn''t open: "' + tempdir + slash + tekst + '"');
+  {$I+}
 
   blockcopyfromgz(zfile, outfile, h.datalength);
 
@@ -583,7 +694,7 @@
   outfile	:= outfile;
   h		:= h;
 
-  mkdir(workdir + slash + tekst);
+  mkdir(tempdir + slash + tekst);
 
 end;
 
@@ -660,9 +771,9 @@
   {$ENDIF}
 
   getdir2(0, dir);
-  chdir2(workdir);
+  chdir2(tempdir, false);
     returncode	:= executeprocess(c, p);
-  chdir2(dir);
+  chdir2(dir, false);
 
 end;
 
@@ -675,12 +786,14 @@
 
 begin
 
-  assign(infofile, workdir + slash + tekst);
-  rewrite(infofile);
+  {$I-}
+    assign(infofile, tempdir + slash + tekst);
+    rewrite(infofile);		if (ioresult <> 0) then error('Couldn''t open: "' + tempdir + slash + tekst + '"');
+  {$I+}
 
   writeln(infofile, 'EEE_APPEXE='	+ paramstr(0));
-  writeln(infofile, 'EEE_EEEEXE='	+ t.exename);
-  writeln(infofile, 'EEE_TEMPDIR='	+ workdir);
+  writeln(infofile, 'EEE_EEEEXE='	+ t.eeeexe);
+  writeln(infofile, 'EEE_TEMPDIR='	+ tempdir);
   writeln(infofile, 'EEE_PARMS='	+ parms);
   writeln(infofile, 'EEE_QUOTEDPARMS='	+ quotedparms);
 
@@ -700,29 +813,38 @@
 
 begin
 
-  assign(infile, paramstr(0));
-  reset(infile, 1);
+  {$I-}
+    assign(infile, paramstr(0));
+    reset(infile, 1);				if (ioresult <> 0) then error('Couldn''t open: "' + paramstr(0) + '"');
+  {$I+}
 
   blockeat(infile, filesize(infile)-t.gzlength-sizeof(t));
 
-  assign(outfile, workfile);
-  rewrite(outfile, 1);
+  {$I-}
+    assign(outfile, workfile);
+    rewrite(outfile, 1);			if (ioresult <> 0) then error('Couldn''t open: "' + workfile + '"');
+  {$I+}
   blockcopy(infile, outfile, t.gzlength);
   close(outfile);
 
   close(infile);
 
-  zfile	:= gzopen(workfile, 'r');
+  {$I-}
+    zfile	:= gzopen(workfile, 'r');	if (ioresult <> 0) then error('Couldn''t open: "' + workfile + '"');
+  {$I+}
 
   for i := 1 to t.number do begin
-    gzread(zfile, addr(h), sizeof(h));
+    {$I-}
+      gzread(zfile, addr(h), sizeof(h));	if (ioresult <> 0) then error('Couldn''t read: "' + workfile + '"');
+    {$I+}
 
     klasse	:= h.klasse;
     tekst2	:= h.tekst;
 
     tekst2	:= AnsiReplaceStr(tekst2, '%parms%', parms);
     tekst2	:= AnsiReplaceStr(tekst2, '%quotedparms%', quotedparms);
-    tekst2	:= AnsiReplaceStr(tekst2, '%tempdir%', workdir);
+    tekst2	:= AnsiReplaceStr(tekst2, '%orgdir%', orgdir);
+    tekst2	:= AnsiReplaceStr(tekst2, '%tempdir%', tempdir);
     tekst2	:= AnsiReplaceStr(tekst2, '%tempdir1%', workdir1);
     tekst2	:= AnsiReplaceStr(tekst2, '%tempdir2%', workdir2);
 
@@ -757,41 +879,55 @@
 
 begin
 
-  assign(infile, paramstr(0));
-  reset(infile, 1);
+  {$I-}
+    assign(infile, paramstr(0));
+    reset(infile, 1);				if (ioresult <> 0) then error('Couldn''t open: "' + paramstr(0) + '"');
+  {$I+}
 
-  assign(outfile, t.exename);
-  rewrite(outfile);
+  {$I-}
+    assign(outfile, t.eeeexe);
+    rewrite(outfile);				if (ioresult <> 0) then error('Couldn''t open: "' + t.eeeexe + '"');
+  {$I+}
   blockcopy(infile, outfile, filesize(infile)-t.gzlength-sizeof(t));
   close(outfile);
 
   {$IFDEF WIN32}
   {$ELSE}
     c	:= '/bin/sh';
-    p	:= '-c "chmod +x ' + t.exename;
+    p	:= '-c "chmod +x ' + t.eeeexe;
     executeprocess(c, p);
   {$ENDIF}
 
-  assign(outfile, workfile);
-  rewrite(outfile, 1);
+  {$I-}
+    assign(outfile, workfile);
+    rewrite(outfile, 1);				if (ioresult <> 0) then error('Couldn''t open: "' + workfile + '"');
+  {$I+}
   blockcopy(infile, outfile, t.gzlength);
   close(outfile);
 
   close(infile);
 
-  zfile	:= gzopen(workfile, 'r');
+  {$I-}
+    zfile	:= gzopen(workfile, 'r');		if (ioresult <> 0) then error('Couldn''t open: "' + workfile + '"');
+  {$I+}
 
-  assign(eeefile, 'app.eee');
-  rewrite(eeefile);
+  {$I-}
+    assign(eeefile, 'app.eee');
+    rewrite(eeefile);				if (ioresult <> 0) then error('Couldn''t open file (app.eee).');
+  {$I+}
 
   for i := 1 to t.number do begin
-    gzread(zfile, addr(h), sizeof(h));
+    {$I-}
+      gzread(zfile, addr(h), sizeof(h));		if (ioresult <> 0) then error('Couldn''t read: "' + workfile + '"');
+    {$I+}
 
     writeln(eeefile, h.klasse, ' ', h.tekst);
 
     if (h.klasse = 'f') then begin
-      assign(outfile, h.tekst);
-      rewrite(outfile, 1);
+      {$I-}
+        assign(outfile, h.tekst);
+        rewrite(outfile, 1);			if (ioresult <> 0) then error('Couldn''t open: "' + h.tekst + '"');
+      {$I+}
 
       blockcopyfromgz(zfile, outfile, h.datalength);
 
@@ -800,8 +936,7 @@
 
     if (h.klasse = 'd') then begin
       {$I-}
-        mkdir(h.tekst);
-        if (ioresult = 0) then;
+        mkdir(h.tekst);				if (ioresult = 0) then;
       {$I+}
     end;
   end;
@@ -824,22 +959,30 @@
 
 begin
 
-  assign(infile, paramstr(0));
-  reset(infile, 1);
+  {$I-}
+    assign(infile, paramstr(0));
+    reset(infile, 1);				if (ioresult <> 0) then error('Couldn''t open: "' + paramstr(0) + '"');
+  {$I+}
 
   blockeat(infile, filesize(infile)-t.gzlength-sizeof(t));
 
-  assign(outfile, workfile);
-  rewrite(outfile, 1);
+  {$I-}
+    assign(outfile, workfile);
+    rewrite(outfile, 1);				if (ioresult <> 0) then error('Couldn''t open: "' + workfile + '"');
+  {$I+}
   blockcopy(infile, outfile, t.gzlength);
   close(outfile);
 
   close(infile);
 
-  zfile	:= gzopen(workfile, 'r');
+  {$I-}
+    zfile	:= gzopen(workfile, 'r');		if (ioresult <> 0) then error('Couldn''t open: "' + workfile + '"');
+  {$I+}
 
   for i := 1 to t.number do begin
-    gzread(zfile, addr(h), sizeof(h));
+    {$I-}
+      gzread(zfile, addr(h), sizeof(h));		if (ioresult <> 0) then error('Couldn''t read: "' + workfile + '"');
+    {$I+}
 
     if (h.klasse = 'f') then begin
       writeln(h.klasse, ' ', h.tekst, ' (', h.datalength, ')');
@@ -857,23 +1000,37 @@
 
 {**********************************************************************}
 
+procedure tooninfo;
+
 begin
 
+  writeln('APPNAME           : ', t.appname);
+  writeln('NUMBER OF ITEMS   : ', t.number);
+  writeln('LENGTH OF GZ-FILE : ', t.gzlength);
+  writeln('EEEEXE            : ', t.eeeexe);
+  writeln('TEMPDIR           : ', t.tempdir);
+
+end;
+
+{**********************************************************************}
+
+begin
+
+  randomize;
+  filemode	:= 0;
+
   {$IFDEF WIN32}
   {$ELSE}
     currentdir	:= '';
   {$ENDIF}
 
-  tempdir	:= getshortpathname(getenv('TEMP'));
-  if (tempdir = '') then begin
-    tempdir	:= '/tmp'
-  end;
-
   me		:= 'EEE: Dit is mijn herkennigsstring voor het herkennen van pakin of pakuit mode.';
 
   justextract	:= false;
   list		:= false;
+  info		:= false;
 
+  appname	:= 'EEE';
   returncode	:= 0;
 
   parms		:= '';
@@ -887,6 +1044,10 @@
       list		:= true;
     end;
 
+    if (paramstr(teller) = '--eee-info') then begin
+      info		:= true;
+    end;
+
     if ((parms = '') and (quotedparms = '')) then begin
       parms		:= paramstr(teller);
       quotedparms	:= '''' + paramstr(teller) + '''';
@@ -897,35 +1058,51 @@
     end;
   end;
 
-  randomize;
+  {$I-}
+    assign(ownfile, paramstr(0));
+    reset(ownfile, 1);				if (ioresult <> 0) then error('Couldn''t open: "' + paramstr(0) + '"');
+    blockeat(ownfile, filesize(ownfile)-sizeof(t));
+    blockread(ownfile, t, sizeof(t));		if (ioresult <> 0) then error('Couldn''t read: "' + paramstr(0) + '"');
+  {$I+}
+  close(ownfile);
 
-  getdir2(0, dir);
-  chdir2(tempdir);
-    {$I-}
-      workdirnumber	:= '';
-      repeat
-        str(random(1000), workdirnumber);
-        workdir	:= 'eee.' + workdirnumber;
-        mkdir(workdir);
-      until (ioresult = 0);
-    {$I+}
-  chdir2(dir);
+  if (t.who = me) then begin
+    appname	:= t.appname;
+  end;
 
-  workdir	:= tempdir + slash + workdir;
-  workfile	:= workdir + slash + 'eee.gz';
-  workdir1	:= AnsiReplaceStr(workdir, '\', '/');
-  workdir2	:= AnsiReplaceStr(workdir, '/', '\');
+  temp	:= getshortpathname(getenv('TEMP'));
+  if (temp = '') then begin
+    temp	:= '/tmp'
+  end;
 
-  filemode	:= 0;
+  getdir2(0, orgdir);
+  chdir2(temp, false);
+    {$I-}
+      if ((t.tempdir <> '') and (t.who = me)) then begin
+        tempdir	:= t.tempdir;
+        mkdir(tempdir);				if (ioresult <> 0) then error('Couldn''t create directory: "' + temp + slash + tempdir + '"');
+      end
+      else begin
+        workdirnumber	:= '';
+        teller		:= 1;
+        repeat
+          inc(teller);
+          str(teller, workdirnumber);
+          tempdir	:= 'eee.' + appname + '.' + workdirnumber;
+          mkdir(tempdir);
+        until (ioresult = 0);
+      end;
+    {$I+}
+  chdir2(orgdir, false);
 
-  assign(ownfile, paramstr(0));
-  reset(ownfile, 1);
-  blockeat(ownfile, filesize(ownfile)-sizeof(t));
-  blockread(ownfile, t, sizeof(t));
-  close(ownfile);
+  tempdir	:= temp + slash + tempdir;
+  workfile	:= tempdir + slash + 'eee.gz';
+  workdir1	:= AnsiReplaceStr(tempdir, '\', '/');
+  workdir2	:= AnsiReplaceStr(tempdir, '/', '\');
 
-  if (posex('eeew', lowercase(t.exename)) > 0) then begin
+  if (posex('eeew', lowercase(t.eeeexe)) > 0) then begin
     list	:= false;
+    info	:= false;
   end;
 
   if (t.who <> me) then begin
@@ -940,12 +1117,17 @@
         tooninhoud;
       end
       else begin
-        pakuit;
+        if (info) then begin
+          tooninfo;
+        end
+        else begin
+          pakuit;
+        end;
       end;
     end;
   end;
 
-  recursivedelete(workdir);
+  recursivedelete(tempdir);
 
   halt(returncode);
 
diff -ur rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/ev/ftools.rb rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/ev/ftools.rb
--- rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/ev/ftools.rb	2005-06-14 21:44:16.000000000 +0200
+++ rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/ev/ftools.rb	2005-08-06 12:59:37.000000000 +0200
@@ -84,7 +84,7 @@
       res += [entry]	if mask.nil? or entry =~ mask
     end
 
-    res
+    res.sort
   end
 end
 
diff -ur rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb
--- rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2005-06-14 21:44:16.000000000 +0200
+++ rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2005-08-06 12:59:36.000000000 +0200
@@ -3,7 +3,7 @@
 
 ENV["OLDDIR"]	= Dir.pwd								unless ENV.include?("OLDDIR")
 ENV["NEWDIR"]	= File.expand_path(File.dirname($0))					unless ENV.include?("NEWDIR")
-ENV["OWNDIR"]	= File.expand_path(File.dirname((caller[-1] or $0).gsub(/:\d+$/, "")))	unless ENV.include?("OWNDIR")
+ENV["APPDIR"]	= File.expand_path(File.dirname((caller[-1] or $0).gsub(/:\d+$/, "")))	unless ENV.include?("APPDIR")
 ENV["TEMPDIR"]	= dir									unless ENV.include?("TEMPDIR")
 
 class Dir
@@ -77,10 +77,10 @@
 end
 
 begin
-  ownlocation
+  applocation
 rescue NameError
-  def ownlocation(file="")
-    dir	= ENV["OWNDIR"]
+  def applocation(file="")
+    dir	= ENV["APPDIR"]
     res	= nil
 
     if block_given?
diff -ur rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/init.rb	2005-06-03 13:16:39.000000000 +0200
+++ rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/init.rb	2005-08-04 22:01:28.000000000 +0200
@@ -99,11 +99,11 @@
   command	= backslashes("#{bindir1}/ruby") + " #{required.join(" ")} #{libs.join(" ")} -r '#{newlocation("require2lib.rb")}' '#{script}' #{verbose} #{quiet} #{argv.join(" ")}"
 
   system(command)
-end
 
-unless File.file?(loadscript)
-  $stderr.puts "Couldn't execute this command (rc=#{$?}):\n#{command}"
-  exit 16
+  unless File.file?(loadscript)
+    $stderr.puts "Couldn't execute this command (rc=#{$?}):\n#{command}"
+    exit 16
+  end
 end
 
 load(loadscript)
@@ -166,6 +166,7 @@
 eeeexe	= "eeew.exe"		if rubyw
 eeeexe	= "eee_linux"		if linux?
 eeeexe	= "eee_darwin"		if darwin?
+appeee	= "#{app}.eee"
 appexe	= "#{app}.exe"
 appexe	= "#{app}_linux"	if linux?
 appexe	= "#{app}_darwin"	if darwin?
@@ -220,7 +221,7 @@
 File.open(tmplocation("empty.rb"), "w") do |f|
 end
 
-File.open(tmplocation("app.eee"), "w") do |f|
+File.open(tmplocation(appeee), "w") do |f|
   f.puts "r bin"
   f.puts "r lib"
   f.puts "f bootstrap.rb"
@@ -242,7 +243,7 @@
 end
 
 from	= newlocation(eeeexe)
-from	= ownlocation(eeeexe)	unless File.file?(from)
+from	= applocation(eeeexe)	unless File.file?(from)
 from	= oldlocation(eeeexe)	unless File.file?(from)
 to	= tmplocation(eeeexe)
 
@@ -252,15 +253,16 @@
 tmplocation do
   ENV["EEE_EXE"]	= eeeexe
   ENV["EEE_DIR"]	= Dir.pwd
+  ENV["EEE_TEMPDIR"]	= RUBYSCRIPT2EXE_TEMPDIR	if defined?(RUBYSCRIPT2EXE_TEMPDIR)
 
   eeebin1	= newlocation("eee.exe")
   eeebin1	= newlocation("eee_linux")	if linux?
   eeebin1	= newlocation("eee_darwin")	if darwin?
 
   unless File.file?(eeebin1)
-    eeebin1	= ownlocation("eee.exe")
-    eeebin1	= ownlocation("eee_linux")	if linux?
-    eeebin1	= ownlocation("eee_darwin")	if darwin?
+    eeebin1	= applocation("eee.exe")
+    eeebin1	= applocation("eee_linux")	if linux?
+    eeebin1	= applocation("eee_darwin")	if darwin?
   end
 
   unless File.file?(eeebin1)
@@ -279,7 +281,7 @@
   File.copy(from, to)	unless from == to
   File.chmod(0755, to)	if linux? or darwin?
 
-  system(backslashes("#{eeebin2} app.eee #{appexe}"))
+  system(backslashes("#{eeebin2} #{appeee} #{appexe}"))
 end
 
 from	= tmplocation(appexe)
diff -ur rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/README rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/README
--- rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/README	2005-05-22 18:09:36.000000000 +0200
+++ rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/README	2005-08-06 09:07:00.000000000 +0200
@@ -1,15 +1,22 @@
-The best way to use RubyScript2Exe 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[.rb[w]]
-                             [--rubyscript2exe-ruby|--rubyscript2exe-rubyw]
-                             [--rubyscript2exe-verbose|--rubyscript2exe-quiet]
-                             [--rubyscript2exe-nostrip]
-                             [--rubyscript2exe-tk]
-
-On Linux and Darwin, there's no difference between ruby and
-rubyw.
+RubyScript2Exe transforms your Ruby script into a standalone,
+compressed Windows, Linux or Mac OS X (Darwin) executable. You
+can look at it as a "compiler". Not in the sense of a
+source-code-to-byte-code compiler, but as a "collector", for it
+collects all necessary files to run your script on an other
+machine: the Ruby script, the Ruby interpreter and the Ruby
+runtime library (stripped down for this script). Anyway, the
+result is the same: a standalone executable (application.exe).
+And that's what we want!
 
 For more information, see
 http://www.erikveen.dds.nl/rubyscript2exe/index.html .
+
+----------------------------------------------------------------
+
+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.
+
+----------------------------------------------------------------
diff -ur rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/require2lib.rb rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/require2lib.rb
--- rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/require2lib.rb	2005-06-14 21:44:16.000000000 +0200
+++ rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/require2lib.rb	2005-08-06 12:59:36.000000000 +0200
@@ -176,6 +176,7 @@
         f.puts "RUBYSCRIPT2EXE_DLLS	= #{RUBYSCRIPT2EXE_DLLS.inspect}"	if defined?(RUBYSCRIPT2EXE_DLLS)
         f.puts "RUBYSCRIPT2EXE_BIN	= #{RUBYSCRIPT2EXE_BIN.inspect}"	if defined?(RUBYSCRIPT2EXE_BIN)
         f.puts "RUBYSCRIPT2EXE_LIB	= #{RUBYSCRIPT2EXE_LIB.inspect}"	if defined?(RUBYSCRIPT2EXE_LIB)
+        f.puts "RUBYSCRIPT2EXE_TEMPDIR	= #{RUBYSCRIPT2EXE_TEMPDIR.inspect}"	if defined?(RUBYSCRIPT2EXE_TEMPDIR)
         f.puts "RUBYSCRIPT2EXE_RUBYGEMS	= #{rubygems.inspect}"
       end
     end
diff -ur rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/VERSION rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/VERSION
--- rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/VERSION	2005-06-14 21:44:16.000000000 +0200
+++ rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/VERSION	2005-08-06 12:59:36.000000000 +0200
@@ -1 +1 @@
-0.3.6
+0.4.0
Binary files rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/eee_linux and rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/eee_linux differ
Binary files rubyscript2exe-0.3.6.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/CHANGELOG rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/CHANGELOG
--- rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/CHANGELOG	2005-08-06 12:59:17.000000000 +0200
+++ rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/CHANGELOG	2005-12-03 14:25:38.000000000 +0100
@@ -1,6 +1,12 @@
 ----------------------------------------------------------------
 
-0.3.7 - 06.08.2005
+0.4.1 - 03.12.2005
+
+* Fixed a bug concerning multiline parameters.
+
+----------------------------------------------------------------
+
+0.4.0 - 06.08.2005
 
 * Added better error detection and error reporting in EEE.
 
diff -ur rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/ev/dependencies.rb rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/ev/dependencies.rb
--- rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/ev/dependencies.rb	2005-08-06 12:59:36.000000000 +0200
+++ rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/ev/dependencies.rb	2005-12-03 14:29:03.000000000 +0100
@@ -52,8 +52,8 @@
       libs	= `ldd #{tempfile}`.split(/\r*\n/).collect{|line| line.split(/\s+/)[3]}			if linux?
       libs	= `otool -L #{tempfile}`.split(/\r*\n/)[1..-1].collect{|line| line.split(/\s+/)[1]}	if darwin?
 
-      libs.each do |lib|
-        if not lib.nil? and File.file?(lib) and not res.include?(lib)
+      libs.compact.each do |lib|
+        if File.file?(lib) and not res.include?(lib)
           todo << lib
           res << lib
         end
diff -ur rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/ev/ftools.rb rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/ev/ftools.rb
--- rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/ev/ftools.rb	2005-08-06 12:59:37.000000000 +0200
+++ rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/ev/ftools.rb	2005-12-03 14:29:03.000000000 +0100
@@ -160,7 +160,7 @@
       ENV["PATH"].split(/#{sep}/).reverse.each do |d|
         if File.directory?(d)
           Dir.new(d).each do |e|
-             if e.downcase == file.downcase
+             if (linux? and e == file) or (windows? and e.downcase == file.downcase)
                res	= File.expand_path(e, d)
                throw :stop
             end
diff -ur rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/init.rb	2005-08-04 22:01:28.000000000 +0200
+++ rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/init.rb	2005-12-03 14:09:32.000000000 +0100
@@ -198,13 +198,19 @@
   f.puts "eeedir		= File.dirname(__FILE__)"
   f.puts "eeeinfo		= File.expand_path('eee.info', eeedir)"
   f.puts "if File.file?(eeeinfo)"
-  f.puts "  File.open(eeeinfo) do |f|"
-  f.puts "    while line = f.gets"
-  f.puts "      k, v	= line.strip.split(/\s*=\s*/, 2)"
-  f.puts "	k.gsub!(/^EEE_/, 'RUBYSCRIPT2EXE_')"
-  f.puts "      v	= File.expand_path(v)	if k == 'RUBYSCRIPT2EXE_APPEXE'"
-  f.puts "      eval('%s=%s' % [k, v.inspect])"
-  f.puts "    end"
+  f.puts "  lines	= File.open(eeeinfo){|f| f.readlines}"
+  f.puts "  badline	= lines.find{|line| line !~ /^EEE_/}"
+  f.puts "  while badline"
+  f.puts "    pos		= lines.index(badline)"
+  f.puts "    raise 'Found badline at position 0.'	if pos == 0"
+  f.puts "    lines[pos-1..pos]	= lines[pos-1] + lines[pos]"
+  f.puts "    badline		= lines.find{|line| line !~ /^EEE_/}"
+  f.puts "  end"
+  f.puts "  lines.each do |line|"
+  f.puts "    k, v	= line.strip.split(/\s*=\s*/, 2)"
+  f.puts "    k.gsub!(/^EEE_/, 'RUBYSCRIPT2EXE_')"
+  f.puts "    v	= File.expand_path(v)	if k == 'RUBYSCRIPT2EXE_APPEXE'"
+  f.puts "    eval('%s=%s' % [k, v.inspect])"
   f.puts "  end"
   f.puts "end"
 
diff -ur rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/VERSION rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/VERSION
--- rubyscript2exe-0.4.0.tar.gz/rubyscript2exe/VERSION	2005-08-06 12:59:36.000000000 +0200
+++ rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/VERSION	2005-12-03 14:29:03.000000000 +0100
@@ -1 +1 @@
-0.4.0
+0.4.1
diff -ur rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/CHANGELOG rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/CHANGELOG
--- rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/CHANGELOG	2005-12-03 14:25:38.000000000 +0100
+++ rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/CHANGELOG	2006-03-08 17:57:17.000000000 +0100
@@ -1,5 +1,22 @@
 ----------------------------------------------------------------
 
+0.4.2 - 08.03.2006
+
+* Got rid of warning "Insecure world writable dir".
+
+* Fixed a bug concerning parameters with quotes and other
+  escapable characters.
+
+* Fixed a bug concerning "Too many open files".
+
+* Fixed a bug concerning spaced parameters on Linux and Darwin.
+
+* More DLL's are found and embedded.
+
+* AllInOneRuby and RubyScript2Exe now work together.
+
+----------------------------------------------------------------
+
 0.4.1 - 03.12.2005
 
 * Fixed a bug concerning multiline parameters.
diff -ur rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/eee.pas	2005-12-03 14:29:03.000000000 +0100
+++ rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/eee.pas	2006-03-08 18:29:17.000000000 +0100
@@ -54,6 +54,7 @@
   teller	: longint;
   parms		: string;
   quotedparms	: string;
+  parmslist	: string;
   justextract	: boolean;
   list		: boolean;
   info		: boolean;
@@ -796,6 +797,7 @@
   writeln(infofile, 'EEE_TEMPDIR='	+ tempdir);
   writeln(infofile, 'EEE_PARMS='	+ parms);
   writeln(infofile, 'EEE_QUOTEDPARMS='	+ quotedparms);
+  writeln(infofile, 'EEE_PARMSLIST='	+ parmslist);
 
   close(infofile);
 
@@ -843,6 +845,7 @@
 
     tekst2	:= AnsiReplaceStr(tekst2, '%parms%', parms);
     tekst2	:= AnsiReplaceStr(tekst2, '%quotedparms%', quotedparms);
+    tekst2	:= AnsiReplaceStr(tekst2, '%parmslist%', parmslist);
     tekst2	:= AnsiReplaceStr(tekst2, '%orgdir%', orgdir);
     tekst2	:= AnsiReplaceStr(tekst2, '%tempdir%', tempdir);
     tekst2	:= AnsiReplaceStr(tekst2, '%tempdir1%', workdir1);
@@ -1035,6 +1038,7 @@
 
   parms		:= '';
   quotedparms	:= '';
+  parmslist	:= '';
   for teller := 1 to paramcount do begin
     if (paramstr(teller) = '--eee-justextract') then begin
       justextract	:= true;
@@ -1048,13 +1052,15 @@
       info		:= true;
     end;
 
-    if ((parms = '') and (quotedparms = '')) then begin
+    if ((parms = '') and (quotedparms = '') and (parmslist = '')) then begin
       parms		:= paramstr(teller);
       quotedparms	:= '''' + paramstr(teller) + '''';
+      parmslist		:= paramstr(teller) + #0;
     end
     else begin
       parms		:= parms + ' ' + paramstr(teller);
       quotedparms	:= quotedparms + ' ''' + paramstr(teller) + '''';
+      parmslist		:= parmslist + paramstr(teller) + #0;
     end;
   end;
 
diff -ur rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/ev/dependencies.rb rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/ev/dependencies.rb
--- rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/ev/dependencies.rb	2005-12-03 14:29:03.000000000 +0100
+++ rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/ev/dependencies.rb	2006-03-08 18:29:17.000000000 +0100
@@ -1,27 +1,47 @@
-def dlls(file, path=File.dirname(file))
+def dlls(file)
 
-	# Only the dependencies in the same directory as the executable or the given directory.
+	# Only the dependencies in the same directory as the executable or any non-Windows directory in %PATH%.
 
   todo		= []
   res		= []
 
   todo << File.expand_path(file)
 
+  paden	= ENV["PATH"].split(/;/)
+  paden	= ENV["PATH"].split(/:/)	if paden.length == 1
+
+  paden << File.dirname(file)
+
+  windir1	= (ENV["WINDIR"] || "").gsub(/\\/, "/").downcase
+  drive		= windir1.scan(/^(.):/).shift.shift
+  windir2	= windir1.sub(/^#{drive}:/, "/cygdrive/#{drive.downcase}")
+
+  paden	= paden.collect{|pad| pad.gsub(/\\/, "/").downcase}
+  paden	= paden.select{|pad| pad.downcase}
+  paden	= paden.reject{|pad| pad =~ /^#{windir1}/}
+  paden	= paden.reject{|pad| pad =~ /^#{windir2}/}
+
   while todo.length > 0
     todo2	= todo
     todo	= []
 
     todo2.each do |file|
       File.open(file, "rb") do |f|
-        strings	= f.read.scan(/[\w\-\.]+/)	# Hack ???
-        strings.delete_if{|s| s !~ /\.(so|o|dll)$/i}
-
-        strings.each do |lib|
-          lib	= File.expand_path(lib, path)
-
-          if not lib.nil? and File.file?(lib) and not res.include?(lib)
-            todo << lib
-            res << lib
+        while (line = f.gets)
+          strings	= line.scan(/[\w\-\.]+/)	# Hack ???
+          strings	= strings.reject{|s| s !~ /\.(so|o|dll)$/i}
+
+          strings.each do |lib|
+            pad	= paden.find{|pad| File.file?(File.expand_path(lib, pad))}
+
+            unless pad.nil?
+              lib	= File.expand_path(lib, pad)
+
+              if File.file?(lib) and not res.include?(lib)
+                todo << lib
+                res << lib
+              end
+            end
           end
         end
       end
@@ -70,7 +90,7 @@
   lsb_ia32	= ["libm.so.6", "libdl.so.2", "libcrypt.so.1", "libc.so.6", "libpthread.so.0", "ld-lsb.so.1"]
   lsb		= lsb_common + lsb_ia32
 
-  res.delete_if{|s| lsb.include?(File.basename(s))}	if notthedefaults
+  res.reject!{|s| lsb.include?(File.basename(s))}	if notthedefaults
 
   res
 end
diff -ur rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/ev/ftools.rb rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/ev/ftools.rb
--- rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/ev/ftools.rb	2005-12-03 14:29:03.000000000 +0100
+++ rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/ev/ftools.rb	2006-03-08 18:29:18.000000000 +0100
@@ -9,8 +9,10 @@
       File.mkpath(todir)
 
       Dir.chdir(from)
-        Dir.new(".").each do |e|
-          Dir.copy(e, todir+"/"+e)	if not [".", ".."].include?(e)
+        Dir.open(".") do |dir|
+          dir.each do |e|
+            Dir.copy(e, todir+"/"+e)	if not [".", ".."].include?(e)
+          end
         end
       Dir.chdir(pdir)
     else
@@ -28,14 +30,19 @@
   end
 
   def self.rm_rf(entry)
-    File.chmod(0755, entry)
+    begin
+      File.chmod(0755, entry)
+    rescue
+    end
 
     if File.ftype(entry) == "directory"
       pdir	= Dir.pwd
 
       Dir.chdir(entry)
-        Dir.new(".").each do |e|
-          Dir.rm_rf(e)	if not [".", ".."].include?(e)
+        Dir.open(".") do |dir|
+          dir.each do |e|
+            Dir.rm_rf(e)	if not [".", ".."].include?(e)
+          end
         end
       Dir.chdir(pdir)
 
@@ -71,8 +78,10 @@
         Dir.chdir(entry)
 
         begin
-          Dir.new(".").each do |e|
-            res += Dir.find(e, mask).collect{|e| entry+"/"+e}	unless [".", ".."].include?(e)
+          Dir.open(".") do |dir|
+            dir.each do |e|
+              res += Dir.find(e, mask).collect{|e| entry+"/"+e}	unless [".", ".."].include?(e)
+            end
           end
         ensure
           Dir.chdir(pdir)
@@ -159,10 +168,12 @@
     catch :stop do
       ENV["PATH"].split(/#{sep}/).reverse.each do |d|
         if File.directory?(d)
-          Dir.new(d).each do |e|
-             if (linux? and e == file) or (windows? and e.downcase == file.downcase)
-               res	= File.expand_path(e, d)
-               throw :stop
+          Dir.open(d) do |dir|
+            dir.each do |e|
+              if (linux? and e == file) or (windows? and e.downcase == file.downcase)
+                res	= File.expand_path(e, d)
+                throw :stop
+              end
             end
           end
         end
@@ -171,4 +182,35 @@
 
     res
   end
+
+  def self.same_content?(file1, file2, blocksize=4096)
+    res	= false
+
+    if File.file?(file1) and File.file?(file2)
+      res	= true
+
+      data1	= nil
+      data2	= nil
+
+      File.open(file1, "rb") do |f1|
+        File.open(file2, "rb") do |f2|
+          catch :not_the_same do
+            while (data1 = f1.read(blocksize))
+              data2	= f2.read(blocksize)
+
+              unless data1 == data2
+                res	= false
+
+                throw :not_the_same
+              end
+            end
+
+            res	= false	if f2.read(blocksize)
+          end
+        end
+      end
+    end
+
+    res
+  end
 end
diff -ur rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb
--- rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2005-12-03 14:29:03.000000000 +0100
+++ rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2006-03-08 18:29:17.000000000 +0100
@@ -14,8 +14,10 @@
       pdir	= Dir.pwd
 
       Dir.chdir(entry)
-        Dir.new(".").each do |e|
-          Dir.rm_rf(e)	if not [".", ".."].include?(e)
+        Dir.open(".") do |dir|
+          dir.each do |e|
+            Dir.rm_rf(e)	if not [".", ".."].include?(e)
+          end
         end
       Dir.chdir(pdir)
 
diff -ur rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/init.rb	2005-12-03 14:09:32.000000000 +0100
+++ rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/init.rb	2006-02-04 00:55:33.000000000 +0100
@@ -1,6 +1,8 @@
 $: << File.dirname(File.expand_path(__FILE__))
 
-required	= $".collect{|a| "-r '#{a}'"}
+required	= $"
+required	= required.reject{|a| File.dirname(a) == ALLINONERUBY_TEMPDIR}	if defined?(ALLINONERUBY_TEMPDIR)
+required	= required.collect{|a| "-r '#{a}'"}
 
 require "ev/oldandnewlocation"
 require "ev/dependencies"
@@ -102,6 +104,7 @@
 
   unless File.file?(loadscript)
     $stderr.puts "Couldn't execute this command (rc=#{$?}):\n#{command}"
+
     exit 16
   end
 end
@@ -134,8 +137,8 @@
 
 copyto([oldlocation(script)], appdir2)
 
-copyto(Dir.find(libdir2, /\.(so|o|dll)$/i).collect{|file| ldds(file)}, bindir2)			if linux? or darwin?
-copyto(Dir.find(libdir2, /\.(so|o|dll)$/i).collect{|file| dlls(file, bindir1)}, bindir2)	if windows? or cygwin?
+copyto(Dir.find(libdir2, /\.(so|o|dll)$/i).collect{|file| ldds(file)}, bindir2)	if linux? or darwin?
+copyto(Dir.find(libdir2, /\.(so|o|dll)$/i).collect{|file| dlls(file)}, bindir2)	if windows? or cygwin?
 
 if TK or defined?(RUBYSCRIPT2EXE_TK)
   if File.file?("#{libdir2}/tk.rb")
@@ -182,7 +185,10 @@
   f.puts "bin	= dir + '/bin'"
   f.puts "lib	= dir + '/lib'"
 
-  f.puts "s	= ENV['PATH'].dup"
+  f.puts "verbose	= $VERBOSE"
+  f.puts "$VERBOSE	= nil"
+  f.puts "s		= ENV['PATH'].dup"
+  f.puts "$VERBOSE	= verbose"
   f.puts "if Dir.pwd[1..2] == ':/'"
   f.puts "  s << (';'+bin.gsub(/\\//, '\\\\'))"
   f.puts "else"
@@ -212,6 +218,7 @@
   f.puts "    v	= File.expand_path(v)	if k == 'RUBYSCRIPT2EXE_APPEXE'"
   f.puts "    eval('%s=%s' % [k, v.inspect])"
   f.puts "  end"
+  f.puts "  ARGV.concat(RUBYSCRIPT2EXE_PARMSLIST.split(/\000/))"
   f.puts "end"
 
   f.puts "# Requirements"
@@ -238,13 +245,13 @@
   apprb	= File.basename(script)
 
   if linux?
-    f.puts "c PATH=%tempdir%/bin:$PATH ; export LD_LIBRARY_PATH=%tempdir%/bin:$LD_LIBRARY_PATH ; chmod +x %tempdir%/bin/* ; %tempdir%/bin/#{rubyexe} -r %tempdir%/bootstrap.rb -T %tempdir%/empty.rb %tempdir%/app/#{apprb} %quotedparms%"
+    f.puts "c PATH=%tempdir%/bin:$PATH ; export LD_LIBRARY_PATH=%tempdir%/bin:$LD_LIBRARY_PATH ; chmod +x %tempdir%/bin/* ; %tempdir%/bin/#{rubyexe} -r %tempdir%/bootstrap.rb -T1 %tempdir%/empty.rb %tempdir%/app/#{apprb}"
   elsif darwin?
-    f.puts "c PATH=%tempdir%/bin:$PATH ; export DYLD_LIBRARY_PATH=%tempdir%/bin:$DYLD_LIBRARY_PATH ; chmod +x %tempdir%/bin/* ; %tempdir%/bin/#{rubyexe} -r %tempdir%/bootstrap.rb -T %tempdir%/empty.rb %tempdir%/app/#{apprb} %quotedparms%"
+    f.puts "c PATH=%tempdir%/bin:$PATH ; export DYLD_LIBRARY_PATH=%tempdir%/bin:$DYLD_LIBRARY_PATH ; chmod +x %tempdir%/bin/* ; %tempdir%/bin/#{rubyexe} -r %tempdir%/bootstrap.rb -T1 %tempdir%/empty.rb %tempdir%/app/#{apprb}"
   elsif cygwin?
-    f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir1%/bootstrap.rb -T1 %tempdir1%/empty.rb %tempdir1%/app/#{apprb} %quotedparms%"
+    f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir1%/bootstrap.rb -T1 %tempdir1%/empty.rb %tempdir1%/app/#{apprb}"
   else
-    f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir%\\bootstrap.rb -T1 %tempdir%\\empty.rb %tempdir%\\app\\#{apprb} %quotedparms%"
+    f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir%\\bootstrap.rb -T1 %tempdir%\\empty.rb %tempdir%\\app\\#{apprb}"
   end
 end
 
diff -ur rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/VERSION rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/VERSION
--- rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/VERSION	2005-12-03 14:29:03.000000000 +0100
+++ rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/VERSION	2006-03-08 18:29:17.000000000 +0100
@@ -1 +1 @@
-0.4.1
+0.4.2
Binary files rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/eee_linux and rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/eee_linux differ
Binary files rubyscript2exe-0.4.1.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/CHANGELOG rubyscript2exe-0.4.3.tar.gz/rubyscript2exe/CHANGELOG
--- rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/CHANGELOG	2006-03-08 17:57:17.000000000 +0100
+++ rubyscript2exe-0.4.3.tar.gz/rubyscript2exe/CHANGELOG	2006-06-27 21:00:39.000000000 +0200
@@ -1,5 +1,12 @@
 ----------------------------------------------------------------
 
+0.4.3 - 27.06.2006
+
+* Enhanced the support for RubyGems, again... I now use the
+  real RubyGems, instead of a fake one.
+
+----------------------------------------------------------------
+
 0.4.2 - 08.03.2006
 
 * Got rid of warning "Insecure world writable dir".
diff -ur rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.4.3.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/init.rb	2006-02-04 00:55:33.000000000 +0100
+++ rubyscript2exe-0.4.3.tar.gz/rubyscript2exe/init.rb	2006-06-27 20:24:25.000000000 +0200
@@ -221,9 +221,15 @@
   f.puts "  ARGV.concat(RUBYSCRIPT2EXE_PARMSLIST.split(/\000/))"
   f.puts "end"
 
-  f.puts "# Requirements"
+  f.puts "# Set the RubyGems environment."
 
-  f.puts "require 'rubygems'"	if RUBYSCRIPT2EXE_RUBYGEMS
+  if RUBYSCRIPT2EXE_RUBYGEMS
+    f.puts "ENV.keys.each do |key|"
+    f.puts "  ENV.delete[key]	if key =~ /^gem_/i"
+    f.puts "end"
+    f.puts "ENV['GEM_PATH']=lib+'/rubyscript2exe.gems'"
+    f.puts "require 'rubygems'"
+  end
 
   f.puts "# Start the application"
 
diff -ur rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/require2lib.rb rubyscript2exe-0.4.3.tar.gz/rubyscript2exe/require2lib.rb
--- rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/require2lib.rb	2006-03-08 18:29:17.000000000 +0100
+++ rubyscript2exe-0.4.3.tar.gz/rubyscript2exe/require2lib.rb	2006-06-27 21:02:19.000000000 +0200
@@ -45,7 +45,7 @@
 
     if RUBYGEMS
       begin
-        Gem::dir
+        Gem.dir
         rubygems	= true
       rescue NameError
         rubygems	= false
@@ -57,42 +57,28 @@
     pureruby	= true
 
     if rubygems
-      autorequire	= {}
-      dependencies	= {}
-      requirelibs	= []
       requireablefiles	= []
 
+      Dir.mkdir(File.expand_path("rubyscript2exe.gems", LIBDIR))
+      Dir.mkdir(File.expand_path("rubyscript2exe.gems/gems", LIBDIR))
+      Dir.mkdir(File.expand_path("rubyscript2exe.gems/specifications", LIBDIR))
+
       Gem::Specification.list.each do |gem|
         if gem.loaded?
           $stderr.puts "Found gem #{gem.name} (#{gem.version})."	if VERBOSE
 
-          fromdir	= gem.full_gem_path
-          todir		= File.expand_path(File.join("rubyscript2exe.gems", gem.full_name), LIBDIR)
-
-          Dir.copy(fromdir, todir)
+          fromdir	= File.join(gem.installation_path, "specifications")
+          todir		= File.expand_path("rubyscript2exe.gems/specifications", LIBDIR)
 
-          autorequire[gem.name]	= gem.autorequire	if gem.autorequire
+          fromfile	= File.join(fromdir, "#{gem.full_name}.gemspec")
+          tofile	= File.join(todir, "#{gem.full_name}.gemspec")
 
-          dependencies[gem.name]	= []
-          gem.dependencies.each do |dep|
-            dependencies[gem.name] << dep.name
-          end
+          File.copy(fromfile, tofile)
 
-          #gem.require_paths << gem.bindir	if gem.bindir
-          #gem.require_paths.each do |lib|
-            #lib	= File.join("rubyscript2exe.gems", gem.full_name, lib)
-            #requirelibs << lib	unless requirelibs.include?(lib)
-          #end
-
-          $:.reverse.each do |lib|
-            gemdir	= File.join(Gem.dir, "gems")
-            if lib =~ /^#{gemdir}/
-              lib	= lib[(gemdir.size+1)..-1]
-              lib	= File.join("rubyscript2exe.gems", lib)
+          fromdir	= gem.full_gem_path
+          todir		= File.expand_path(File.join("rubyscript2exe.gems/gems", gem.full_name), LIBDIR)
 
-              requirelibs << lib	unless requirelibs.include?(lib)
-            end
-          end
+          Dir.copy(fromdir, todir)
 
           Dir.find(todir).each do |file|
             if File.file?(file)
@@ -108,64 +94,38 @@
           end
         end
       end
-
-      File.open(File.expand_path("rubygems.rb", LIBDIR), "w") do |f|
-        f.puts "module Kernel"
-        f.puts "  def require_gem(file, version=nil)"
-        f.puts "    autorequire		= %s" % autorequire.inspect
-        f.puts "    dependencies	= %s" % dependencies.inspect
-        f.puts ""
-        f.puts "    (dependencies[file] or []).each do |dep|"
-        f.puts "      require_gem(dep)"
-        f.puts "    end"
-        f.puts ""
-        f.puts "    if autorequire.include?(file)"
-        f.puts "      file	= autorequire[file]"
-        f.puts "      require(file)"
-        f.puts "    end"
-        f.puts "  end"
-        f.puts "end"
-        f.puts ""
-        f.puts "requirelibs	= %s" % requirelibs.inspect
-        f.puts ""
-        f.puts "requirelibs.each do |lib|"
-        f.puts "  $:.unshift(File.expand_path(lib, File.expand_path(File.dirname(__FILE__))))"
-        f.puts "end"
-      end
     end
 
     ($" + $require2lib_loaded).each do |req|
-      unless req =~ /^rubygems[\.\/]/
-        catch :found do
-          $:.each do |lib|
-            fromfile	= File.expand_path(req, lib)
-            tofile	= File.expand_path(req, LIBDIR)
-
-            if File.file?(fromfile)
-              unless fromfile == tofile or fromfile == THISFILE
-                unless (rubygems and requireablefiles.include?(req))	# ??? requireablefiles might be a little dangerous.
-                  if (not JUSTRUBYLIB and not JUSTSITELIB) or
-                     (JUSTRUBYLIB and fromfile.include?(RUBYLIBDIR)) or
-                     (JUSTSITELIB and fromfile.include?(SITELIBDIR))
-                    $stderr.puts "Found #{fromfile} ."		if VERBOSE
-
-                    File.makedirs(File.dirname(tofile))	unless File.directory?(File.dirname(tofile))
-                    File.copy(fromfile, tofile)
-
-                    pureruby	= false	unless req =~ /\.(rbw?|ruby)$/i
-                  else
-                    $stderr.puts "Skipped #{fromfile} ."	if VERBOSE
-                  end
+      catch :found do
+        $:.each do |lib|
+          fromfile	= File.expand_path(req, lib)
+          tofile	= File.expand_path(req, LIBDIR)
+
+          if File.file?(fromfile)
+            unless fromfile == tofile or fromfile == THISFILE
+              unless (rubygems and requireablefiles.include?(req))	# ??? requireablefiles might be a little dangerous.
+                if (not JUSTRUBYLIB and not JUSTSITELIB) or
+                   (JUSTRUBYLIB and fromfile.include?(RUBYLIBDIR)) or
+                   (JUSTSITELIB and fromfile.include?(SITELIBDIR))
+                  $stderr.puts "Found #{fromfile} ."		if VERBOSE
+
+                  File.makedirs(File.dirname(tofile))	unless File.directory?(File.dirname(tofile))
+                  File.copy(fromfile, tofile)
+
+                  pureruby	= false	unless req =~ /\.(rbw?|ruby)$/i
+                else
+                  $stderr.puts "Skipped #{fromfile} ."	if VERBOSE
                 end
               end
-
-              throw :found
             end
-          end
 
-          #$stderr.puts "Can't find #{req} ."	unless req =~ /^ev\// or QUIET
-          #$stderr.puts "Can't find #{req} ."	unless req =~ /^(\w:)?[\/\\]/ or QUIET
+            throw :found
+          end
         end
+
+        #$stderr.puts "Can't find #{req} ."	unless req =~ /^ev\// or QUIET
+        #$stderr.puts "Can't find #{req} ."	unless req =~ /^(\w:)?[\/\\]/ or QUIET
       end
     end
 
diff -ur rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/VERSION rubyscript2exe-0.4.3.tar.gz/rubyscript2exe/VERSION
--- rubyscript2exe-0.4.2.tar.gz/rubyscript2exe/VERSION	2006-03-08 18:29:17.000000000 +0100
+++ rubyscript2exe-0.4.3.tar.gz/rubyscript2exe/VERSION	2006-06-27 21:02:18.000000000 +0200
@@ -1 +1 @@
-0.4.2
+0.4.3
diff -ur rubyscript2exe-0.4.3.tar.gz/rubyscript2exe/CHANGELOG rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/CHANGELOG
--- rubyscript2exe-0.4.3.tar.gz/rubyscript2exe/CHANGELOG	2006-06-27 21:00:39.000000000 +0200
+++ rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/CHANGELOG	2006-06-28 17:17:28.000000000 +0200
@@ -1,5 +1,11 @@
 ----------------------------------------------------------------
 
+0.4.4 - 28.06.2006
+
+* Fixed a bug concerning "ENV.delete(key)".
+
+----------------------------------------------------------------
+
 0.4.3 - 27.06.2006
 
 * Enhanced the support for RubyGems, again... I now use the
diff -ur rubyscript2exe-0.4.3.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.4.3.tar.gz/rubyscript2exe/init.rb	2006-06-27 20:24:25.000000000 +0200
+++ rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/init.rb	2006-06-28 09:57:40.000000000 +0200
@@ -225,7 +225,7 @@
 
   if RUBYSCRIPT2EXE_RUBYGEMS
     f.puts "ENV.keys.each do |key|"
-    f.puts "  ENV.delete[key]	if key =~ /^gem_/i"
+    f.puts "  ENV.delete(key)	if key =~ /^gem_/i"
     f.puts "end"
     f.puts "ENV['GEM_PATH']=lib+'/rubyscript2exe.gems'"
     f.puts "require 'rubygems'"
diff -ur rubyscript2exe-0.4.3.tar.gz/rubyscript2exe/VERSION rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/VERSION
--- rubyscript2exe-0.4.3.tar.gz/rubyscript2exe/VERSION	2006-06-27 21:02:18.000000000 +0200
+++ rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/VERSION	2006-06-28 17:18:44.000000000 +0200
@@ -1 +1 @@
-0.4.3
+0.4.4
diff -ur rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/CHANGELOG rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/CHANGELOG
--- rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/CHANGELOG	2006-06-28 17:17:28.000000000 +0200
+++ rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/CHANGELOG	2006-07-29 20:27:05.000000000 +0200
@@ -1,5 +1,25 @@
 ----------------------------------------------------------------
 
+0.5.0 - 29.07.2006
+
+* Added support for directories.
+
+* Introduced require "rubyscript2exe.rb".
+
+* Added a check for readability in EEE.
+
+* Replaced RUBYSCRIPT2EXE_* by RUBYSCRIPT.*= and
+  RUBYSCRIPT2EXE::* (see application.rb).
+
+* Added RUBYSCRIPT2EXE.appdir(item) and
+  RUBYSCRIPT2EXE.is_compil*?.
+
+* If you already used RubyScript2Exe before, please reread the
+  section "From Inside your Application", since it isn't 100%
+  backwards compatible.
+
+----------------------------------------------------------------
+
 0.4.4 - 28.06.2006
 
 * Fixed a bug concerning "ENV.delete(key)".
diff -ur rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/eee.pas	2006-06-28 17:18:44.000000000 +0200
+++ rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/eee.pas	2006-07-29 20:28:12.000000000 +0200
@@ -812,6 +812,7 @@
   infile	: file of byte;
   outfile	: file of byte;
   i		: longint;
+  n		: longint;
 
 begin
 
@@ -837,9 +838,11 @@
 
   for i := 1 to t.number do begin
     {$I-}
-      gzread(zfile, addr(h), sizeof(h));	if (ioresult <> 0) then error('Couldn''t read: "' + workfile + '"');
+      n	:= gzread(zfile, addr(h), sizeof(h));	if (ioresult <> 0) then error('Couldn''t read: "' + workfile + '"');
     {$I+}
 
+    if (n <> sizeof(h)) then error('Couldn''t read: "' + workfile + '"');
+
     klasse	:= h.klasse;
     tekst2	:= h.tekst;
 
diff -ur rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/init.rb	2006-06-28 09:57:40.000000000 +0200
+++ rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/init.rb	2006-07-29 18:39:59.000000000 +0200
@@ -1,7 +1,12 @@
+$".delete "rubyscript2exe.rb"
+require "rubyscript2exe"
+
+if __FILE__ == $0
+
 $: << File.dirname(File.expand_path(__FILE__))
 
 required	= $"
-required	= required.reject{|a| File.dirname(a) == ALLINONERUBY_TEMPDIR}	if defined?(ALLINONERUBY_TEMPDIR)
+required	= required.reject{|a| File.dirname(a) == ALLINONERUBY::TEMPDIR}	if defined?(ALLINONERUBY::TEMPDIR)
 required	= required.collect{|a| "-r '#{a}'"}
 
 require "ev/oldandnewlocation"
@@ -9,7 +14,7 @@
 require "ev/ftools"
 require "rbconfig"
 
-exit	if defined?(REQUIRE2LIB)
+exit	if RUBYSCRIPT2EXE.is_compiling?
 
 def backslashes(s)
   s	= s.gsub(/^\.\//, "").gsub(/\//, "\\\\")	if windows?
@@ -41,6 +46,7 @@
     tofile	= File.expand_path(File.basename(fromfile), dest)
 
     $stderr.puts "Copying #{fromfile} ..."	if VERBOSE
+
     File.copy(fromfile, tofile)			unless File.file?(tofile)
   end
 end
@@ -61,7 +67,9 @@
   usagescript	= "rubyscript2exe.rb"	if defined?(TAR2RUBYSCRIPT)
   $stderr.puts <<-EOF
 
-	Usage: ruby #{usagescript} application[.rb[w]] [--rubyscript2exe-rubyw|--rubyscript2exe-ruby] [--rubyscript2exe-nostrip]
+	Usage: ruby #{usagescript} application.rb[w] [--rubyscript2exe-rubyw|--rubyscript2exe-ruby] [--rubyscript2exe-nostrip]
+               or
+	       ruby #{usagescript} application[/] [--rubyscript2exe-rubyw|--rubyscript2exe-ruby] [--rubyscript2exe-nostrip]
 
 	On Linux and Darwin, there's no difference between ruby and rubyw.
 
@@ -83,7 +91,6 @@
 libdir2	= tmplocation("lib/")
 appdir2	= tmplocation("app/")
 
-script	= "#{script}.rb"	unless script =~ /\.rbw?$/
 app	= File.basename(script.gsub(/\.rbw?$/, ""))
 
 $stderr.puts "Tracing #{app} ..."	unless QUIET
@@ -98,12 +105,28 @@
 ENV["REQUIRE2LIB_LOADSCRIPT"]	= loadscript
 
 oldlocation do
-  command	= backslashes("#{bindir1}/ruby") + " #{required.join(" ")} #{libs.join(" ")} -r '#{newlocation("require2lib.rb")}' '#{script}' #{verbose} #{quiet} #{argv.join(" ")}"
+  unless File.exist?(script)
+    $stderr.puts "#{script} doesn't exist."
+
+    exit 1
+  end
+
+  apprb	= script		if File.file?(script)
+  apprb	= "#{script}/init.rb"	if File.directory?(script)
+
+  unless File.file?(apprb)
+    $stderr.puts "#{apprb} doesn't exist."
+
+    exit 1
+  end
+
+  command	= backslashes("#{bindir1}/ruby") + " #{required.join(" ")} #{libs.join(" ")} -r '#{newlocation("require2lib.rb")}' '#{apprb}' #{verbose} #{quiet} #{argv.join(" ")}"
 
   system(command)
 
   unless File.file?(loadscript)
     $stderr.puts "Couldn't execute this command (rc=#{$?}):\n#{command}"
+    $stderr.puts "Stopped."
 
     exit 16
   end
@@ -124,23 +147,24 @@
 
 $stderr.puts "Copying files..."	unless QUIET
 
-copyto([RUBYSCRIPT2EXE_DLLS].flatten.collect{|s| oldlocation(s)}, bindir2)	if defined?(RUBYSCRIPT2EXE_DLLS)
-copyto([RUBYSCRIPT2EXE_BIN].flatten.collect{|s| oldlocation(s)}, bindir2)	if defined?(RUBYSCRIPT2EXE_BIN)
-copyto([RUBYSCRIPT2EXE_LIB].flatten.collect{|s| oldlocation(s)}, libdir2)	if defined?(RUBYSCRIPT2EXE_LIB)
-
-copyto(rubyexe, bindir2)	if linux? or darwin?	if File.file?(rubyexe)
-copyto(ldds(rubyexe), bindir2)	if linux? or darwin?
-
-copyto(rubyexe, bindir2)	if windows? or cygwin?	if File.file?(rubyexe)
-copyto(rubywexe, bindir2)	if windows? or cygwin?	if File.file?(rubyexe)
-copyto(dlls(rubyexe), bindir2)	if windows? or cygwin?
+copyto([RUBYSCRIPT2EXE::DLLS].flatten.collect{|s| oldlocation(s)}, bindir2)
+copyto([RUBYSCRIPT2EXE::BIN].flatten.collect{|s| oldlocation(s)}, bindir2)
+copyto([RUBYSCRIPT2EXE::LIB].flatten.collect{|s| oldlocation(s)}, libdir2)
+
+copyto(rubyexe, bindir2)	if (linux? or darwin?) and File.file?(rubyexe)
+copyto(ldds(rubyexe), bindir2)	if (linux? or darwin?)
+
+copyto(rubyexe, bindir2)	if (windows? or cygwin?) and File.file?(rubyexe)
+copyto(rubywexe, bindir2)	if (windows? or cygwin?) and File.file?(rubywexe)
+copyto(dlls(rubyexe), bindir2)	if (windows? or cygwin?) and File.file?(rubyexe)
 
-copyto([oldlocation(script)], appdir2)
+copyto(oldlocation(script), appdir2)	if File.file?(oldlocation(script))
+Dir.copy(oldlocation(script), appdir2)	if File.directory?(oldlocation(script))
 
 copyto(Dir.find(libdir2, /\.(so|o|dll)$/i).collect{|file| ldds(file)}, bindir2)	if linux? or darwin?
 copyto(Dir.find(libdir2, /\.(so|o|dll)$/i).collect{|file| dlls(file)}, bindir2)	if windows? or cygwin?
 
-if TK or defined?(RUBYSCRIPT2EXE_TK)
+if TK or RUBYSCRIPT2EXE::TK
   if File.file?("#{libdir2}/tk.rb")
     $stderr.puts "Copying TCL/TK..."	unless QUIET
 
@@ -180,10 +204,15 @@
 File.open(tmplocation("bootstrap.rb"), "w") do |f|
   f.puts "# Set up the environment"
 
+  f.puts "module RUBYSCRIPT2EXE"
+  f.puts "end"
+
   f.puts "dir	= File.expand_path(File.dirname(__FILE__))"
   f.puts "dir.sub!(/^.:/, '/cygdrive/%s' % $&[0..0].downcase)	if dir =~ /^.:/"	if cygwin?
-  f.puts "bin	= dir + '/bin'"
-  f.puts "lib	= dir + '/lib'"
+  f.puts "bin		= dir + '/bin'"
+  f.puts "lib		= dir + '/lib'"
+  f.puts "appbin	= dir + '/app/bin'"
+  f.puts "applib	= dir + '/app/lib'"
 
   f.puts "verbose	= $VERBOSE"
   f.puts "$VERBOSE	= nil"
@@ -198,6 +227,7 @@
 
   f.puts "$:.clear"
   f.puts "$: << lib"
+  f.puts "$: << applib"
 
   f.puts "# Load eee.info"
 
@@ -214,16 +244,16 @@
   f.puts "  end"
   f.puts "  lines.each do |line|"
   f.puts "    k, v	= line.strip.split(/\s*=\s*/, 2)"
-  f.puts "    k.gsub!(/^EEE_/, 'RUBYSCRIPT2EXE_')"
-  f.puts "    v	= File.expand_path(v)	if k == 'RUBYSCRIPT2EXE_APPEXE'"
-  f.puts "    eval('%s=%s' % [k, v.inspect])"
+  f.puts "    k.gsub!(/^EEE_/, '')"
+  f.puts "    v	= File.expand_path(v)	if k == 'APPEXE'"
+  f.puts "    RUBYSCRIPT2EXE.module_eval{const_set(k, v)}"
   f.puts "  end"
-  f.puts "  ARGV.concat(RUBYSCRIPT2EXE_PARMSLIST.split(/\000/))"
+  f.puts "  ARGV.concat(RUBYSCRIPT2EXE::PARMSLIST.split(/\000/))"
   f.puts "end"
 
   f.puts "# Set the RubyGems environment."
 
-  if RUBYSCRIPT2EXE_RUBYGEMS
+  if RUBYSCRIPT2EXE::RUBYGEMS
     f.puts "ENV.keys.each do |key|"
     f.puts "  ENV.delete(key)	if key =~ /^gem_/i"
     f.puts "end"
@@ -231,9 +261,13 @@
     f.puts "require 'rubygems'"
   end
 
+  f.puts "module RUBYSCRIPT2EXE"
+  f.puts "  RUBYEXE	= '#{rubyexe}'"
+  f.puts "  COMPILED	= true"
+  f.puts "end"
+
   f.puts "# Start the application"
 
-  f.puts "RUBYSCRIPT2EXE	= '#{rubyexe}'"
   f.puts "load($0 = ARGV.shift)"
 end
 
@@ -248,8 +282,10 @@
   f.puts "r app"
   f.puts "i eee.info"
 
-  apprb	= File.basename(script)
+  apprb	= File.basename(script)	if File.file?(oldlocation(script))
+  apprb	= "init.rb"	if File.directory?(oldlocation(script))
 
+	# ??? nog iets met app/bin?
   if linux?
     f.puts "c PATH=%tempdir%/bin:$PATH ; export LD_LIBRARY_PATH=%tempdir%/bin:$LD_LIBRARY_PATH ; chmod +x %tempdir%/bin/* ; %tempdir%/bin/#{rubyexe} -r %tempdir%/bootstrap.rb -T1 %tempdir%/empty.rb %tempdir%/app/#{apprb}"
   elsif darwin?
@@ -261,6 +297,18 @@
   end
 end
 
+too_long	= File.read(tmplocation(appeee)).split(/\r*\n/).select{|line| line.length > 255}
+
+unless too_long.empty?
+  too_long.each do |line|
+    $stderr.puts "Line is too long (#{line.length}): #{line}"
+  end
+
+  $stderr.puts "Stopped."
+
+  exit 16
+end
+
 from	= newlocation(eeeexe)
 from	= applocation(eeeexe)	unless File.file?(from)
 from	= oldlocation(eeeexe)	unless File.file?(from)
@@ -272,7 +320,7 @@
 tmplocation do
   ENV["EEE_EXE"]	= eeeexe
   ENV["EEE_DIR"]	= Dir.pwd
-  ENV["EEE_TEMPDIR"]	= RUBYSCRIPT2EXE_TEMPDIR	if defined?(RUBYSCRIPT2EXE_TEMPDIR)
+  ENV["EEE_TEMPDIR"]	= RUBYSCRIPT2EXE::TEMPDIR	if RUBYSCRIPT2EXE::TEMPDIR
 
   eeebin1	= newlocation("eee.exe")
   eeebin1	= newlocation("eee_linux")	if linux?
@@ -311,3 +359,5 @@
 oldlocation do
   system(backslashes("reshacker -modify #{tmplocation(appexe)}, #{appexe}, #{appico}, icon,appicon,"))	if File.file?(appico) and (windows? or cygwin?)
 end
+
+end	# if __FILE__ == $0
diff -ur rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/require2lib.rb rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/require2lib.rb
--- rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/require2lib.rb	2006-06-28 17:18:44.000000000 +0200
+++ rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/require2lib.rb	2006-07-29 20:28:12.000000000 +0200
@@ -3,25 +3,16 @@
 
 exit	if __FILE__ == $0
 
-$require2lib_loaded	= []
-
-REQUIRE2LIB	= true	unless defined?(REQUIRE2LIB)
-
-module Kernel
-  alias :old_load :load
-  def load(filename, wrap=false)
-    $require2lib_loaded << filename	unless $require2lib_loaded.include?(filename)
-
-    old_load(filename, wrap)
-  end
+module RUBYSCRIPT2EXE
 end
 
-module Require
+module REQUIRE2LIB
   JUSTRUBYLIB	= ARGV.include?("--require2lib-justrubylib")
   JUSTSITELIB	= ARGV.include?("--require2lib-justsitelib")
   RUBYGEMS	= (not JUSTRUBYLIB)
   VERBOSE	= ARGV.include?("--require2lib-verbose")
   QUIET		= (ARGV.include?("--require2lib-quiet") and not VERBOSE)
+  LOADED	= []
 
   ARGV.delete_if{|arg| arg =~ /^--require2lib-/}
 
@@ -35,7 +26,7 @@
   at_exit do
     Dir.chdir(ORGDIR)
 
-    Require.gatherlibs
+    REQUIRE2LIB.gatherlibs
   end
 
   def self.gatherlibs
@@ -57,6 +48,8 @@
     pureruby	= true
 
     if rubygems
+      require "fileutils"	# Hack ???
+
       requireablefiles	= []
 
       Dir.mkdir(File.expand_path("rubyscript2exe.gems", LIBDIR))
@@ -96,7 +89,7 @@
       end
     end
 
-    ($" + $require2lib_loaded).each do |req|
+    ($" + LOADED).each do |req|
       catch :found do
         $:.each do |lib|
           fromfile	= File.expand_path(req, lib)
@@ -133,12 +126,23 @@
 
     unless LOADSCRIPT == ORGDIR
       File.open(LOADSCRIPT, "w") do |f|
-        f.puts "RUBYSCRIPT2EXE_DLLS	= #{RUBYSCRIPT2EXE_DLLS.inspect}"	if defined?(RUBYSCRIPT2EXE_DLLS)
-        f.puts "RUBYSCRIPT2EXE_BIN	= #{RUBYSCRIPT2EXE_BIN.inspect}"	if defined?(RUBYSCRIPT2EXE_BIN)
-        f.puts "RUBYSCRIPT2EXE_LIB	= #{RUBYSCRIPT2EXE_LIB.inspect}"	if defined?(RUBYSCRIPT2EXE_LIB)
-        f.puts "RUBYSCRIPT2EXE_TEMPDIR	= #{RUBYSCRIPT2EXE_TEMPDIR.inspect}"	if defined?(RUBYSCRIPT2EXE_TEMPDIR)
-        f.puts "RUBYSCRIPT2EXE_RUBYGEMS	= #{rubygems.inspect}"
+        f.puts "module RUBYSCRIPT2EXE"
+        RUBYSCRIPT2EXE.class_variables.each do |const|
+          const	= const[2..-1]
+          f.puts "  #{const.upcase}=#{RUBYSCRIPT2EXE.send(const).inspect}"
+        end
+        f.puts "  RUBYGEMS=#{rubygems.inspect}"
+        f.puts "end"
       end
     end
   end
 end
+
+module Kernel
+  alias :old_load :load
+  def load(filename, wrap=false)
+    REQUIRE2LIB::LOADED << filename	unless REQUIRE2LIB::LOADED.include?(filename)
+
+    old_load(filename, wrap)
+  end
+end
diff -ur rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/rubyscript2exe.rb rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/rubyscript2exe.rb
--- rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/rubyscript2exe.rb	2007-05-30 10:18:06.000000000 +0200
+++ rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/rubyscript2exe.rb	2006-07-29 20:28:11.000000000 +0200
@@ -0,0 +1,47 @@
+module RUBYSCRIPT2EXE
+  @@dlls	= []
+  @@bin		= []
+  @@lib		= []
+  @@tempdir	= nil
+  @@tk		= false
+
+  def self.dlls		; @@dlls	; end
+  def self.dlls=(a)	; @@dlls = a	; end
+
+  def self.bin		; @@bin		; end
+  def self.bin=(a)	; @@bin = a	; end
+
+  def self.lib		; @@lib		; end
+  def self.lib=(a)	; @@lib = a	; end
+
+  def self.tempdir	; @@tempdir	; end
+  def self.tempdir=(s)	; @@tempdir = s	; end
+
+  def self.tk		; @@tk		; end
+  def self.tk=(b)	; @@tk = b	; end
+
+  def self.appdir(file=nil, &block)
+    dir	= File.dirname(File.expand_path($0))
+    dir	= File.expand_path(File.join(TEMPDIR, "app"))		if not defined?(TAR2RUBYSCRIPT) and is_compiled? and defined?(TEMPDIR)
+
+    if block
+      pdir	= Dir.pwd
+
+      Dir.chdir(dir)
+        res	= block[]
+      Dir.chdir(pdir)
+    else
+      res	= File.join(*([dir, file].compact))
+    end
+
+    res
+  end
+
+  def self.is_compiling?
+    defined?(REQUIRE2LIB)
+  end
+
+  def self.is_compiled?
+    defined?(COMPILED)
+  end
+end
diff -ur rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/VERSION rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/VERSION
--- rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/VERSION	2006-06-28 17:18:44.000000000 +0200
+++ rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/VERSION	2006-07-29 20:28:11.000000000 +0200
@@ -1 +1 @@
-0.4.4
+0.5.0
Binary files rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/eee_linux and rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/eee_linux differ
Binary files rubyscript2exe-0.4.4.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/CHANGELOG rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/CHANGELOG
--- rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/CHANGELOG	2006-07-29 20:27:05.000000000 +0200
+++ rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/CHANGELOG	2006-08-06 19:32:36.000000000 +0200
@@ -1,5 +1,25 @@
 ----------------------------------------------------------------
 
+0.5.1 - 06.08.2006
+
+* Fixed a bug when using the big rubyscript2exe.rb (the RBA) as
+  library.
+
+* Fixed a bug in RUBYSCRIPT2EXE.appdir. Added
+  RUBYSCRIPT2EXE.userdir.
+
+* Added RUBYSCRIPT2EXE.rubyw=.
+
+* Added RUBYSCRIPT2EXE.strip=.
+
+* Added RUBYSCRIPT2EXE.appdir and RUBYSCRIPT2EXE.appdir("bin")
+  to ENV["PATH"].
+
+* Added RUBYSCRIPT2EXE.appdir and RUBYSCRIPT2EXE.appdir("lib")
+  to $:.
+
+----------------------------------------------------------------
+
 0.5.0 - 29.07.2006
 
 * Added support for directories.
diff -ur rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/init.rb	2006-07-29 18:39:59.000000000 +0200
+++ rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/init.rb	2006-08-06 18:40:35.000000000 +0200
@@ -1,9 +1,16 @@
+$: << File.dirname(File.expand_path(__FILE__))
+
 $".delete "rubyscript2exe.rb"
-require "rubyscript2exe"
 
-if __FILE__ == $0
+if defined?(oldlocation)
+  oldlocation do
+    require "rubyscript2exe"
+  end
+else
+  require "rubyscript2exe"
+end
 
-$: << File.dirname(File.expand_path(__FILE__))
+if __FILE__ == $0
 
 required	= $"
 required	= required.reject{|a| File.dirname(a) == ALLINONERUBY::TEMPDIR}	if defined?(ALLINONERUBY::TEMPDIR)
@@ -53,7 +60,8 @@
 
 RUBY	= ARGV.include?("--rubyscript2exe-ruby")
 RUBYW	= ARGV.include?("--rubyscript2exe-rubyw")
-STRIP	= (not ARGV.include?("--rubyscript2exe-nostrip"))
+NOSTRIP	= ARGV.include?("--rubyscript2exe-nostrip")
+STRACE	= ARGV.include?("--rubyscript2exe-strace")
 TK	= ARGV.include?("--rubyscript2exe-tk")
 VERBOSE	= ARGV.include?("--rubyscript2exe-verbose")
 QUIET	= (ARGV.include?("--rubyscript2exe-quiet") and not VERBOSE)
@@ -80,11 +88,6 @@
   exit 1
 end
 
-rubyw	= false
-rubyw	= true		if script =~ /\.rbw$/
-rubyw	= false		if RUBY
-rubyw	= true		if RUBYW
-
 bindir1	= Config::CONFIG["bindir"]
 libdir1	= Config::CONFIG["libdir"]
 bindir2	= tmplocation("bin/")
@@ -138,6 +141,12 @@
 Dir.mkdir(libdir2)	unless File.directory?(libdir2)
 Dir.mkdir(appdir2)	unless File.directory?(appdir2)
 
+rubyw	= false
+rubyw	= true		if script =~ /\.rbw$/
+rubyw	= true		if RUBYSCRIPT2EXE::RUBYW
+rubyw	= false		if RUBY
+rubyw	= true		if RUBYW
+
 if linux? or darwin?
   rubyexe	= "#{bindir1}/ruby"
 else
@@ -178,7 +187,7 @@
   end
 end
 
-if STRIP and (linux? or darwin?)
+if not NOSTRIP and RUBYSCRIPT2EXE::STRIP and (linux? or darwin?)
   $stderr.puts "Stripping..."	unless QUIET
 
   system("cd #{bindir2} ; strip --strip-all * 2> /dev/null")
@@ -198,21 +207,26 @@
 appexe	= "#{app}_linux"	if linux?
 appexe	= "#{app}_darwin"	if darwin?
 appico	= "#{app}.ico"
+strace	= ""
+strace	= "strace"		if STRACE
 
 $stderr.puts "Creating #{appexe} ..."	unless QUIET
 
 File.open(tmplocation("bootstrap.rb"), "w") do |f|
   f.puts "# Set up the environment"
 
+  f.puts "# Define some RUBYSCRIPT2EXE constants"
+
   f.puts "module RUBYSCRIPT2EXE"
+  f.puts "  RUBYEXE	= '#{rubyexe}'"
+  f.puts "  COMPILED	= true"
+  f.puts "  USERDIR	= Dir.pwd"
   f.puts "end"
 
   f.puts "dir	= File.expand_path(File.dirname(__FILE__))"
   f.puts "dir.sub!(/^.:/, '/cygdrive/%s' % $&[0..0].downcase)	if dir =~ /^.:/"	if cygwin?
   f.puts "bin		= dir + '/bin'"
   f.puts "lib		= dir + '/lib'"
-  f.puts "appbin	= dir + '/app/bin'"
-  f.puts "applib	= dir + '/app/lib'"
 
   f.puts "verbose	= $VERBOSE"
   f.puts "$VERBOSE	= nil"
@@ -227,7 +241,6 @@
 
   f.puts "$:.clear"
   f.puts "$: << lib"
-  f.puts "$: << applib"
 
   f.puts "# Load eee.info"
 
@@ -251,7 +264,7 @@
   f.puts "  ARGV.concat(RUBYSCRIPT2EXE::PARMSLIST.split(/\000/))"
   f.puts "end"
 
-  f.puts "# Set the RubyGems environment."
+  f.puts "# Set the RubyGems environment"
 
   if RUBYSCRIPT2EXE::RUBYGEMS
     f.puts "ENV.keys.each do |key|"
@@ -261,11 +274,6 @@
     f.puts "require 'rubygems'"
   end
 
-  f.puts "module RUBYSCRIPT2EXE"
-  f.puts "  RUBYEXE	= '#{rubyexe}'"
-  f.puts "  COMPILED	= true"
-  f.puts "end"
-
   f.puts "# Start the application"
 
   f.puts "load($0 = ARGV.shift)"
@@ -287,7 +295,7 @@
 
 	# ??? nog iets met app/bin?
   if linux?
-    f.puts "c PATH=%tempdir%/bin:$PATH ; export LD_LIBRARY_PATH=%tempdir%/bin:$LD_LIBRARY_PATH ; chmod +x %tempdir%/bin/* ; %tempdir%/bin/#{rubyexe} -r %tempdir%/bootstrap.rb -T1 %tempdir%/empty.rb %tempdir%/app/#{apprb}"
+    f.puts "c PATH=%tempdir%/bin:$PATH ; export LD_LIBRARY_PATH=%tempdir%/bin:$LD_LIBRARY_PATH ; chmod +x %tempdir%/bin/* ; #{strace} %tempdir%/bin/#{rubyexe} -r %tempdir%/bootstrap.rb -T1 %tempdir%/empty.rb %tempdir%/app/#{apprb}"
   elsif darwin?
     f.puts "c PATH=%tempdir%/bin:$PATH ; export DYLD_LIBRARY_PATH=%tempdir%/bin:$DYLD_LIBRARY_PATH ; chmod +x %tempdir%/bin/* ; %tempdir%/bin/#{rubyexe} -r %tempdir%/bootstrap.rb -T1 %tempdir%/empty.rb %tempdir%/app/#{apprb}"
   elsif cygwin?
diff -ur rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/rubyscript2exe.rb rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/rubyscript2exe.rb
--- rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/rubyscript2exe.rb	2006-07-29 20:28:11.000000000 +0200
+++ rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/rubyscript2exe.rb	2006-08-06 19:33:04.000000000 +0200
@@ -4,6 +4,10 @@
   @@lib		= []
   @@tempdir	= nil
   @@tk		= false
+  @@rubyw	= false
+  @@strip	= true
+
+  USERDIR	= (defined?(oldlocation) ? oldlocation : Dir.pwd)	unless defined?(self.const_defined?(USERDIR))
 
   def self.dlls		; @@dlls	; end
   def self.dlls=(a)	; @@dlls = a	; end
@@ -20,10 +24,26 @@
   def self.tk		; @@tk		; end
   def self.tk=(b)	; @@tk = b	; end
 
+  def self.rubyw	; @@rubyw	; end
+  def self.rubyw=(b)	; @@rubyw = b	; end
+
+  def self.strip	; @@strip	; end
+  def self.strip=(b)	; @@strip = b	; end
+
   def self.appdir(file=nil, &block)
-    dir	= File.dirname(File.expand_path($0))
-    dir	= File.expand_path(File.join(TEMPDIR, "app"))		if not defined?(TAR2RUBYSCRIPT) and is_compiled? and defined?(TEMPDIR)
+    dir	= File.dirname(File.expand_path($0, USERDIR))
+    dir	= File.expand_path(File.join(TEMPDIR, "app"))		if is_compiled? and defined?(TEMPDIR)
+
+    _use_given_dir(dir, file, &block)
+  end
+
+  def self.userdir(file=nil, &block)
+    dir	= USERDIR
 
+    _use_given_dir(USERDIR, file, &block)
+  end
+
+  def self._use_given_dir(dir, file, &block)
     if block
       pdir	= Dir.pwd
 
@@ -36,6 +56,9 @@
 
     res
   end
+  class << self
+    private :_use_given_dir
+  end
 
   def self.is_compiling?
     defined?(REQUIRE2LIB)
@@ -44,4 +67,20 @@
   def self.is_compiled?
     defined?(COMPILED)
   end
+
+  verbose	= $VERBOSE
+  $VERBOSE	= nil
+  s		= ENV["PATH"].dup
+  $VERBOSE	= verbose
+  if Dir.pwd[1..2] == ":/"
+    s << (";"+appdir.gsub(/\//, "\\"))
+    s << (";"+appdir("bin").gsub(/\//, "\\"))
+  else
+    s << (":"+appdir)
+    s << (":"+appdir("bin"))
+  end
+  ENV["PATH"]   = s
+
+  $: << appdir
+  $: << appdir("lib")
 end
diff -ur rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/VERSION rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/VERSION
--- rubyscript2exe-0.5.0.tar.gz/rubyscript2exe/VERSION	2006-07-29 20:28:11.000000000 +0200
+++ rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/VERSION	2006-08-06 19:33:04.000000000 +0200
@@ -1 +1 @@
-0.5.0
+0.5.1
diff -ur rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/CHANGELOG rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/CHANGELOG
--- rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/CHANGELOG	2006-08-06 19:32:36.000000000 +0200
+++ rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/CHANGELOG	2007-04-15 21:04:06.000000000 +0200
@@ -1,12 +1,30 @@
 ----------------------------------------------------------------
 
+0.5.2 - 15.04.2007
+
+* Fixed a bug when using the gem as library.
+
+* Fixed a bug concerning RUBYSCRIPT2EXE.userdir(file) (as well
+  as RUBYSCRIPT2EXE.appdir(file)) and full pathnames.
+
+* Replaced %TEMP% by %HOME%/eee, or %USERPROFILE%/eee, or
+  %TEMP%/eee, or c:/eee (on Windows). Replaced /tmp by
+  $HOME/.eee, or /tmp/.eee (on Linux/Darwin). This is to avoid
+  "Insecure world writable dir".
+
+* Introduced RUBYSCRIPT2EXE.exedir and
+  RUBYSCRIPT2EXE.executable.
+
+----------------------------------------------------------------
+
 0.5.1 - 06.08.2006
 
 * Fixed a bug when using the big rubyscript2exe.rb (the RBA) as
   library.
 
-* Fixed a bug in RUBYSCRIPT2EXE.appdir. Added
-  RUBYSCRIPT2EXE.userdir.
+* Fixed a bug in RUBYSCRIPT2EXE.appdir.
+
+* Added RUBYSCRIPT2EXE.userdir.
 
 * Added RUBYSCRIPT2EXE.rubyw=.
 
diff -ur rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/eee.pas rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/eee.pas
--- rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/eee.pas	2006-08-06 19:33:04.000000000 +0200
+++ rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/eee.pas	2007-04-15 21:31:50.000000000 +0200
@@ -1079,11 +1079,31 @@
     appname	:= t.appname;
   end;
 
-  temp	:= getshortpathname(getenv('TEMP'));
+  temp		:= getshortpathname(getenv('HOME'));
   if (temp = '') then begin
-    temp	:= '/tmp'
+  temp		:= getshortpathname(getenv('USERPROFILE'));
+    if (temp = '') then begin
+      temp	:= getshortpathname(getenv('TEMP'));
+      if (temp = '') then begin
+        {$IFDEF WIN32}
+          temp	:= 'c:';
+        {$ELSE}
+          temp	:= '/tmp';
+        {$ENDIF}
+      end;
+    end;
   end;
 
+  {$IFDEF WIN32}
+    temp	:= temp + slash + 'eee';
+  {$ELSE}
+    temp	:= temp + slash + '.eee';
+  {$ENDIF}
+
+  {$I-}
+    mkdir(temp);				if (ioresult <> 0) then;
+  {$I+}
+
   getdir2(0, orgdir);
   chdir2(temp, false);
     {$I-}
diff -ur rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/ev/dependencies.rb rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/ev/dependencies.rb
--- rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/ev/dependencies.rb	2006-08-06 19:33:04.000000000 +0200
+++ rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/ev/dependencies.rb	2007-04-15 21:31:49.000000000 +0200
@@ -12,7 +12,7 @@
 
   paden << File.dirname(file)
 
-  windir1	= (ENV["WINDIR"] || "").gsub(/\\/, "/").downcase
+  windir1	= (ENV["SYSTEMROOT"] || ENV["WINDIR"] || "").gsub(/\\/, "/").downcase
   drive		= windir1.scan(/^(.):/).shift.shift
   windir2	= windir1.sub(/^#{drive}:/, "/cygdrive/#{drive.downcase}")
 
@@ -72,6 +72,8 @@
       libs	= `ldd #{tempfile}`.split(/\r*\n/).collect{|line| line.split(/\s+/)[3]}			if linux?
       libs	= `otool -L #{tempfile}`.split(/\r*\n/)[1..-1].collect{|line| line.split(/\s+/)[1]}	if darwin?
 
+      libs ||= []
+
       libs.compact.each do |lib|
         if File.file?(lib) and not res.include?(lib)
           todo << lib
diff -ur rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/ev/ftools.rb rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/ev/ftools.rb
--- rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/ev/ftools.rb	2006-08-06 19:33:04.000000000 +0200
+++ rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/ev/ftools.rb	2007-04-15 21:31:50.000000000 +0200
@@ -62,6 +62,7 @@
 
   def self.find(entry=nil, mask=nil)
     entry	= "."	if entry.nil?
+    entry	= entry.to_s
 
     entry	= entry.gsub(/[\/\\]*$/, "")	unless entry.nil?
 
@@ -95,58 +96,57 @@
 
     res.sort
   end
-end
 
-class File
-  def self.rollbackup(file, mode=nil)
-    backupfile	= file + ".RB.BACKUP"
-    controlfile	= file + ".RB.CONTROL"
-    res		= nil
+  def self.home(*args, &block)
+    dir	= nil
 
-    File.touch(file)    unless File.file?(file)
+    dir	||= ENV["HOME"]
+    dir	||= ENV["USERPROFILE"]
+    dir	||= "c:/"
 
-	# Rollback
+    handle_home_and_temp(dir, *args, &block)
+  end
 
-    if File.file?(backupfile) and File.file?(controlfile)
-      $stderr.puts "Restoring #{file}..."
+  def self.temp(*args, &block)
+    dir	= nil
 
-      File.copy(backupfile, file)				# Rollback from phase 3
-    end
+    dir	||= ENV["TMPDIR"]
+    dir	||= ENV["TMP"]
+    dir	||= ENV["TEMP"]
+    dir	||= "/tmp"
 
-	# Reset
+    handle_home_and_temp(dir, *args, &block)
+  end
 
-    File.delete(backupfile)	if File.file?(backupfile)	# Reset from phase 2 or 3
-    File.delete(controlfile)	if File.file?(controlfile)	# Reset from phase 3 or 4
+  private
 
-	# Backup
+  def self.handle_home_and_temp(dir, *args, &block)
+    file	= File.join(*args)
+    file	= file.gsub(/\\/, "/")
+    file	= file.gsub(/\/+/, "/")
+    file	= file.gsub(/^\/+/, "")
+    file	= file.gsub(/\/+$/, "")
+
+    dir		= dir.gsub(/\\/, "/")
+    dir		= dir.gsub(/\/+/, "/")
+    dir		= dir.gsub(/\/+$/, "")
+    dir		= File.expand_path(file, dir)
 
-    File.copy(file, backupfile)					# Enter phase 2
-    File.touch(controlfile)					# Enter phase 3
+    res		= dir
 
-	# The real thing
+    if block
+      pdir	= Dir.pwd
 
-    if block_given?
-      if mode.nil?
-        res	= yield
-      else
-        File.open(file, mode) do |f|
-          res	= yield(f)
-        end
-      end
+      Dir.chdir(dir)	# Ruby 1.6 doesn't handle Dir.chdir(&block).
+        res	= block.call(res)
+      Dir.chdir(pdir)
     end
 
-	# Cleanup
-
-    File.delete(backupfile)					# Enter phase 4
-    File.delete(controlfile)					# Enter phase 5
-
-	# Return, like File.open
-
-    res	= File.open(file, (mode or "r"))	unless block_given?
-
     res
   end
+end
 
+class File
   def self.touch(file)
     if File.exists?(file)
       File.utime(Time.now, File.mtime(file), file)
diff -ur rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb
--- rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2006-08-06 19:33:04.000000000 +0200
+++ rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/ev/oldandnewlocation.rb	2007-04-15 21:31:49.000000000 +0200
@@ -1,3 +1,5 @@
+require "rubyscript2exe"
+
 temp	= File.expand_path((ENV["TMPDIR"] or ENV["TMP"] or ENV["TEMP"] or "/tmp").gsub(/\\/, "/"))
 dir	= "#{temp}/oldandnewlocation.#{Process.pid}"
 
@@ -40,7 +42,7 @@
   oldlocation
 rescue NameError
   def oldlocation(file="")
-    dir	= ENV["OLDDIR"]
+    dir	= (ENV["OLDDIR"] || RUBYSCRIPT2EXE.userdir) rescue "."
     res	= nil
 
     if block_given?
@@ -61,7 +63,7 @@
   newlocation
 rescue NameError
   def newlocation(file="")
-    dir	= ENV["NEWDIR"]
+    dir	= (ENV["NEWDIR"] || RUBYSCRIPT2EXE.appdir) rescue "."
     res	= nil
 
     if block_given?
@@ -82,7 +84,7 @@
   applocation
 rescue NameError
   def applocation(file="")
-    dir	= ENV["APPDIR"]
+    dir	= (ENV["APPDIR"] || RUBYSCRIPT2EXE.appdir) rescue "."
     res	= nil
 
     if block_given?
diff -ur rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/init.rb	2006-08-06 18:40:35.000000000 +0200
+++ rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/init.rb	2007-04-10 20:06:14.000000000 +0200
@@ -1,12 +1,6 @@
-$: << File.dirname(File.expand_path(__FILE__))
-
-$".delete "rubyscript2exe.rb"
-
-if defined?(oldlocation)
-  oldlocation do
-    require "rubyscript2exe"
-  end
-else
+begin
+  load File.join(File.dirname(__FILE__), "rubyscript2exe.rb")
+rescue LoadError
   require "rubyscript2exe"
 end
 
@@ -75,9 +69,27 @@
   usagescript	= "rubyscript2exe.rb"	if defined?(TAR2RUBYSCRIPT)
   $stderr.puts <<-EOF
 
-	Usage: ruby #{usagescript} application.rb[w] [--rubyscript2exe-rubyw|--rubyscript2exe-ruby] [--rubyscript2exe-nostrip]
+	Usage: ruby #{usagescript} application.rb[w] [parameters]
                or
-	       ruby #{usagescript} application[/] [--rubyscript2exe-rubyw|--rubyscript2exe-ruby] [--rubyscript2exe-nostrip]
+	       ruby #{usagescript} application[/] [parameters]
+
+	Where parameter is on of the following:
+
+         --rubyscript2exe-rubyw     Avoid the popping up of a DOS box. (It's
+                                    annoying in the test period... No puts and
+                                    p anymore... Only use it for distributing
+                                    your application. See Logging.)
+         --rubyscript2exe-ruby      Force the popping up of a DOS box (default).
+         --rubyscript2exe-nostrip   Avoid stripping. The binaries (ruby and
+                                    *.so) on Linux and Darwin are stripped by
+                                    default to reduce the size of the resulting
+                                    executable.
+         --rubyscript2exe-strace    Start the embedded application with strace
+                                    (Linux only, for debugging only).
+         --rubyscript2exe-tk        (experimental) Embed not only the Ruby
+                                    bindings for TK, but TK itself as well.
+         --rubyscript2exe-verbose   Verbose mode.
+         --rubyscript2exe-quiet     Quiet mode.
 
 	On Linux and Darwin, there's no difference between ruby and rubyw.
 
@@ -143,7 +155,7 @@
 
 rubyw	= false
 rubyw	= true		if script =~ /\.rbw$/
-rubyw	= true		if RUBYSCRIPT2EXE::RUBYW
+rubyw	= true		if RUBYSCRIPT2EXE::REQUIRE2LIB_FROM_APP[:rubyw]
 rubyw	= false		if RUBY
 rubyw	= true		if RUBYW
 
@@ -156,9 +168,9 @@
 
 $stderr.puts "Copying files..."	unless QUIET
 
-copyto([RUBYSCRIPT2EXE::DLLS].flatten.collect{|s| oldlocation(s)}, bindir2)
-copyto([RUBYSCRIPT2EXE::BIN].flatten.collect{|s| oldlocation(s)}, bindir2)
-copyto([RUBYSCRIPT2EXE::LIB].flatten.collect{|s| oldlocation(s)}, libdir2)
+copyto([RUBYSCRIPT2EXE::REQUIRE2LIB_FROM_APP[:dlls]].flatten.collect{|s| oldlocation(s)}, bindir2)
+copyto([RUBYSCRIPT2EXE::REQUIRE2LIB_FROM_APP[:bin]].flatten.collect{|s| oldlocation(s)}, bindir2)
+copyto([RUBYSCRIPT2EXE::REQUIRE2LIB_FROM_APP[:lib]].flatten.collect{|s| oldlocation(s)}, libdir2)
 
 copyto(rubyexe, bindir2)	if (linux? or darwin?) and File.file?(rubyexe)
 copyto(ldds(rubyexe), bindir2)	if (linux? or darwin?)
@@ -173,7 +185,7 @@
 copyto(Dir.find(libdir2, /\.(so|o|dll)$/i).collect{|file| ldds(file)}, bindir2)	if linux? or darwin?
 copyto(Dir.find(libdir2, /\.(so|o|dll)$/i).collect{|file| dlls(file)}, bindir2)	if windows? or cygwin?
 
-if TK or RUBYSCRIPT2EXE::TK
+if TK or RUBYSCRIPT2EXE::REQUIRE2LIB_FROM_APP[:tk]
   if File.file?("#{libdir2}/tk.rb")
     $stderr.puts "Copying TCL/TK..."	unless QUIET
 
@@ -187,7 +199,7 @@
   end
 end
 
-if not NOSTRIP and RUBYSCRIPT2EXE::STRIP and (linux? or darwin?)
+if not NOSTRIP and RUBYSCRIPT2EXE::REQUIRE2LIB_FROM_APP[:strip] and (linux? or darwin?)
   $stderr.puts "Stripping..."	unless QUIET
 
   system("cd #{bindir2} ; strip --strip-all * 2> /dev/null")
@@ -264,9 +276,9 @@
   f.puts "  ARGV.concat(RUBYSCRIPT2EXE::PARMSLIST.split(/\000/))"
   f.puts "end"
 
-  f.puts "# Set the RubyGems environment"
+  if RUBYSCRIPT2EXE::REQUIRE2LIB_FROM_APP[:rubygems]
+    f.puts "# Set the RubyGems environment"
 
-  if RUBYSCRIPT2EXE::RUBYGEMS
     f.puts "ENV.keys.each do |key|"
     f.puts "  ENV.delete(key)	if key =~ /^gem_/i"
     f.puts "end"
@@ -295,9 +307,11 @@
 
 	# ??? nog iets met app/bin?
   if linux?
-    f.puts "c PATH=%tempdir%/bin:$PATH ; export LD_LIBRARY_PATH=%tempdir%/bin:$LD_LIBRARY_PATH ; chmod +x %tempdir%/bin/* ; #{strace} %tempdir%/bin/#{rubyexe} -r %tempdir%/bootstrap.rb -T1 %tempdir%/empty.rb %tempdir%/app/#{apprb}"
+    f.puts "t chmod +x %tempdir%/bin/*"
+    f.puts "c export PATH=%tempdir%/bin:$PATH ; export LD_LIBRARY_PATH=%tempdir%/bin:$LD_LIBRARY_PATH ; #{strace} %tempdir%/bin/#{rubyexe} -r %tempdir%/bootstrap.rb -T1 %tempdir%/empty.rb %tempdir%/app/#{apprb}"
   elsif darwin?
-    f.puts "c PATH=%tempdir%/bin:$PATH ; export DYLD_LIBRARY_PATH=%tempdir%/bin:$DYLD_LIBRARY_PATH ; chmod +x %tempdir%/bin/* ; %tempdir%/bin/#{rubyexe} -r %tempdir%/bootstrap.rb -T1 %tempdir%/empty.rb %tempdir%/app/#{apprb}"
+    f.puts "t chmod +x %tempdir%/bin/*"
+    f.puts "c export PATH=%tempdir%/bin:$PATH ; export DYLD_LIBRARY_PATH=%tempdir%/bin:$DYLD_LIBRARY_PATH ; %tempdir%/bin/#{rubyexe} -r %tempdir%/bootstrap.rb -T1 %tempdir%/empty.rb %tempdir%/app/#{apprb}"
   elsif cygwin?
     f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir1%/bootstrap.rb -T1 %tempdir1%/empty.rb %tempdir1%/app/#{apprb}"
   else
@@ -328,7 +342,7 @@
 tmplocation do
   ENV["EEE_EXE"]	= eeeexe
   ENV["EEE_DIR"]	= Dir.pwd
-  ENV["EEE_TEMPDIR"]	= RUBYSCRIPT2EXE::TEMPDIR	if RUBYSCRIPT2EXE::TEMPDIR
+  ENV["EEE_TEMPDIR"]	= RUBYSCRIPT2EXE::REQUIRE2LIB_FROM_APP[:tempdir]	if RUBYSCRIPT2EXE::REQUIRE2LIB_FROM_APP[:tempdir]
 
   eeebin1	= newlocation("eee.exe")
   eeebin1	= newlocation("eee_linux")	if linux?
diff -ur rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/require2lib.rb rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/require2lib.rb
--- rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/require2lib.rb	2006-08-06 19:33:04.000000000 +0200
+++ rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/require2lib.rb	2007-04-15 21:31:50.000000000 +0200
@@ -1,5 +1,6 @@
 require "ev/ftools"
 require "rbconfig"
+require "rubyscript2exe"
 
 exit	if __FILE__ == $0
 
@@ -127,11 +128,15 @@
     unless LOADSCRIPT == ORGDIR
       File.open(LOADSCRIPT, "w") do |f|
         f.puts "module RUBYSCRIPT2EXE"
+        f.puts "  REQUIRE2LIB_FROM_APP={}"
+
         RUBYSCRIPT2EXE.class_variables.each do |const|
           const	= const[2..-1]
-          f.puts "  #{const.upcase}=#{RUBYSCRIPT2EXE.send(const).inspect}"
+
+          f.puts "  REQUIRE2LIB_FROM_APP[:#{const}]=#{RUBYSCRIPT2EXE.send(const).inspect}"
         end
-        f.puts "  RUBYGEMS=#{rubygems.inspect}"
+
+        f.puts "  REQUIRE2LIB_FROM_APP[:rubygems]=#{rubygems.inspect}"
         f.puts "end"
       end
     end
@@ -139,10 +144,10 @@
 end
 
 module Kernel
-  alias :old_load :load
+  alias :require2lib_load :load
   def load(filename, wrap=false)
     REQUIRE2LIB::LOADED << filename	unless REQUIRE2LIB::LOADED.include?(filename)
 
-    old_load(filename, wrap)
+    require2lib_load(filename, wrap)
   end
 end
diff -ur rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/rubyscript2exe.rb rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/rubyscript2exe.rb
--- rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/rubyscript2exe.rb	2006-08-06 19:33:04.000000000 +0200
+++ rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/rubyscript2exe.rb	2007-04-15 21:31:50.000000000 +0200
@@ -31,19 +31,26 @@
   def self.strip=(b)	; @@strip = b	; end
 
   def self.appdir(file=nil, &block)
-    dir	= File.dirname(File.expand_path($0, USERDIR))
-    dir	= File.expand_path(File.join(TEMPDIR, "app"))		if is_compiled? and defined?(TEMPDIR)
-
-    _use_given_dir(dir, file, &block)
+    if is_compiled? and defined?(TEMPDIR)
+      use_given_dir(File.expand_path(File.join(TEMPDIR, "app")), file, &block)
+    else
+      use_given_dir(File.dirname(File.expand_path($0, USERDIR)), file, &block)
+    end
   end
 
   def self.userdir(file=nil, &block)
-    dir	= USERDIR
+    use_given_dir(USERDIR, file, &block)
+  end
 
-    _use_given_dir(USERDIR, file, &block)
+  def self.exedir(file=nil, &block)
+    if is_compiled? and defined?(APPEXE)
+      use_given_dir(File.dirname(APPEXE), file, &block)
+    else
+      use_given_dir(File.dirname(File.expand_path($0)), file, &block)
+    end
   end
 
-  def self._use_given_dir(dir, file, &block)
+  def self.use_given_dir(dir, *file, &block)
     if block
       pdir	= Dir.pwd
 
@@ -51,13 +58,15 @@
         res	= block[]
       Dir.chdir(pdir)
     else
-      res	= File.join(*([dir, file].compact))
+      file	= file.compact
+      res	= File.expand_path(File.join(*file), dir)
     end
 
     res
   end
+
   class << self
-    private :_use_given_dir
+    private :use_given_dir
   end
 
   def self.is_compiling?
@@ -68,6 +77,14 @@
     defined?(COMPILED)
   end
 
+  def self.executable
+    if is_compiled? and defined?(APPEXE)
+      APPEXE
+    else
+      File.expand_path($0)
+    end
+  end
+
   verbose	= $VERBOSE
   $VERBOSE	= nil
   s		= ENV["PATH"].dup
diff -ur rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/VERSION rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/VERSION
--- rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/VERSION	2006-08-06 19:33:04.000000000 +0200
+++ rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/VERSION	2007-04-15 21:31:49.000000000 +0200
@@ -1 +1 @@
-0.5.1
+0.5.2
Binary files rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/eee.exe differ
Binary files rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/eee_linux and rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/eee_linux differ
Binary files rubyscript2exe-0.5.1.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/eeew.exe differ
diff -ur rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/CHANGELOG rubyscript2exe-0.5.3.tar.gz/rubyscript2exe/CHANGELOG
--- rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/CHANGELOG	2007-04-15 21:04:06.000000000 +0200
+++ rubyscript2exe-0.5.3.tar.gz/rubyscript2exe/CHANGELOG	2007-05-29 22:12:10.000000000 +0200
@@ -1,5 +1,14 @@
 ----------------------------------------------------------------
 
+0.5.3 - 29.05.2007
+
+* Added a bit of Config::CONFIG magic to make RubyScript2Exe
+  work with RubyGems >= 0.9.3.
+
+* Moved the embedded bin directory to the front of $PATH.
+
+----------------------------------------------------------------
+
 0.5.2 - 15.04.2007
 
 * Fixed a bug when using the gem as library.
diff -ur rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/ev/ftools.rb rubyscript2exe-0.5.3.tar.gz/rubyscript2exe/ev/ftools.rb
--- rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/ev/ftools.rb	2007-04-15 21:31:50.000000000 +0200
+++ rubyscript2exe-0.5.3.tar.gz/rubyscript2exe/ev/ftools.rb	2007-05-30 10:17:12.000000000 +0200
@@ -60,17 +60,22 @@
     end
   end
 
-  def self.find(entry=nil, mask=nil)
+  def self.find(entry=nil, args={})
+    mask	= args[:mask]		|| nil
+    follow_link	= args[:follow_link]	|| true
+
     entry	= "."	if entry.nil?
     entry	= entry.to_s
 
     entry	= entry.gsub(/[\/\\]*$/, "")	unless entry.nil?
 
     mask	= /^#{mask}$/i	if mask.kind_of?(String)
+    stat	=  File.lstat(entry)
+    stat	=  File.stat(entry)	if follow_link
 
     res	= []
 
-    if File.directory?(entry)
+    if stat.directory?
       pdir	= Dir.pwd
 
       res += ["%s/" % entry]	if mask.nil? or entry =~ mask
@@ -81,7 +86,7 @@
         begin
           Dir.open(".") do |dir|
             dir.each do |e|
-              res += Dir.find(e, mask).collect{|e| entry+"/"+e}	unless [".", ".."].include?(e)
+              res += Dir.find(e, :mask=>mask, :follow_link=>follow_link).collect{|e| entry+"/"+e}	unless [".", ".."].include?(e)
             end
           end
         ensure
diff -ur rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.5.3.tar.gz/rubyscript2exe/init.rb
--- rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/init.rb	2007-04-10 20:06:14.000000000 +0200
+++ rubyscript2exe-0.5.3.tar.gz/rubyscript2exe/init.rb	2007-05-30 10:15:21.000000000 +0200
@@ -13,7 +13,7 @@
 require "ev/oldandnewlocation"
 require "ev/dependencies"
 require "ev/ftools"
-require "rbconfig"
+require "rbconfig"	# Do not remove! It's required in bootstrap.rb.
 
 exit	if RUBYSCRIPT2EXE.is_compiling?
 
@@ -182,8 +182,8 @@
 copyto(oldlocation(script), appdir2)	if File.file?(oldlocation(script))
 Dir.copy(oldlocation(script), appdir2)	if File.directory?(oldlocation(script))
 
-copyto(Dir.find(libdir2, /\.(so|o|dll)$/i).collect{|file| ldds(file)}, bindir2)	if linux? or darwin?
-copyto(Dir.find(libdir2, /\.(so|o|dll)$/i).collect{|file| dlls(file)}, bindir2)	if windows? or cygwin?
+copyto(Dir.find(libdir2, :mask=>/\.(so|o|dll)$/i).collect{|file| ldds(file)}, bindir2)	if linux? or darwin?
+copyto(Dir.find(libdir2, :mask=>/\.(so|o|dll)$/i).collect{|file| dlls(file)}, bindir2)	if windows? or cygwin?
 
 if TK or RUBYSCRIPT2EXE::REQUIRE2LIB_FROM_APP[:tk]
   if File.file?("#{libdir2}/tk.rb")
@@ -245,15 +245,49 @@
   f.puts "s		= ENV['PATH'].dup"
   f.puts "$VERBOSE	= verbose"
   f.puts "if Dir.pwd[1..2] == ':/'"
-  f.puts "  s << (';'+bin.gsub(/\\//, '\\\\'))"
+  f.puts "  s.replace(bin.gsub(/\\//, '\\\\')+';'+s)"
   f.puts "else"
-  f.puts "  s << (':'+bin)"
+  f.puts "  s.replace(bin+':'+s)"
   f.puts "end"
   f.puts "ENV['PATH']   = s"
 
   f.puts "$:.clear"
   f.puts "$: << lib"
 
+	# I'm not happy with the following code.
+	# It's just a stupid hack to get rid of /usr/local/**/*
+	# Should and will be changed in the future.
+	# For now it's necessary to make it work again with RubyGems >= 0.9.3.
+
+  f.puts "require 'rbconfig'"
+
+  f.puts "Config::CONFIG['archdir']		= dir + '/lib'"					# /usr/local/lib/ruby/1.8/i686-linux
+  f.puts "Config::CONFIG['bindir']		= dir + '/bin'"					# /usr/local/bin
+  f.puts "Config::CONFIG['datadir']		= dir + '/share'"				# /usr/local/share
+  f.puts "Config::CONFIG['datarootdir']		= dir + '/share'"				# /usr/local/share
+  f.puts "Config::CONFIG['docdir']		= dir + '/share/doc/$(PACKAGE)'"		# /usr/local/share/doc/$(PACKAGE)
+  f.puts "Config::CONFIG['dvidir']		= dir + '/share/doc/$(PACKAGE)'"		# /usr/local/share/doc/$(PACKAGE)
+  f.puts "Config::CONFIG['exec_prefix']		= dir + ''"					# /usr/local
+  f.puts "Config::CONFIG['htmldir']		= dir + '/share/doc/$(PACKAGE)'"		# /usr/local/share/doc/$(PACKAGE)
+  f.puts "Config::CONFIG['includedir']		= dir + '/include'"				# /usr/local/include
+  f.puts "Config::CONFIG['infodir']		= dir + '/share/info'"				# /usr/local/share/info
+  f.puts "Config::CONFIG['libdir']		= dir + '/lib'"					# /usr/local/lib
+  f.puts "Config::CONFIG['libexecdir']		= dir + '/libexec'"				# /usr/local/libexec
+  f.puts "Config::CONFIG['localedir']		= dir + '/share/locale'"			# /usr/local/share/locale
+  f.puts "Config::CONFIG['localstatedir']	= dir + '/var'"					# /usr/local/var
+  f.puts "Config::CONFIG['mandir']		= dir + '/share/man'"				# /usr/local/share/man
+  f.puts "Config::CONFIG['pdfdir']		= dir + '/share/doc/$(PACKAGE)'"		# /usr/local/share/doc/$(PACKAGE)
+  f.puts "Config::CONFIG['prefix']		= dir + ''"					# /usr/local
+  f.puts "Config::CONFIG['psdir']		= dir + '/share/doc/$(PACKAGE)'"		# /usr/local/share/doc/$(PACKAGE)
+  f.puts "Config::CONFIG['rubylibdir']		= dir + '/lib'"					# /usr/local/lib/ruby/1.8
+  f.puts "Config::CONFIG['sbindir']		= dir + '/sbin'"				# /usr/local/sbin
+  f.puts "Config::CONFIG['sharedstatedir']	= dir + '/com'"					# /usr/local/com
+  f.puts "Config::CONFIG['sitearchdir']		= dir + '/lib'"					# /usr/local/lib/ruby/site_ruby/1.8/i686-linux
+  f.puts "Config::CONFIG['sitedir']		= dir + '/lib'"					# /usr/local/lib/ruby/site_ruby
+  f.puts "Config::CONFIG['sitelibdir']		= dir + '/lib'"					# /usr/local/lib/ruby/site_ruby/1.8
+  f.puts "Config::CONFIG['sysconfdir']		= dir + '/etc'"					# /usr/local/etc
+  f.puts "Config::CONFIG['topdir']		= dir + '/lib'"					# /usr/local/lib/ruby/1.8/i686-linux
+
   f.puts "# Load eee.info"
 
   f.puts "eeedir		= File.dirname(__FILE__)"
diff -ur rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/rubyscript2exe.rb rubyscript2exe-0.5.3.tar.gz/rubyscript2exe/rubyscript2exe.rb
--- rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/rubyscript2exe.rb	2007-04-15 21:31:50.000000000 +0200
+++ rubyscript2exe-0.5.3.tar.gz/rubyscript2exe/rubyscript2exe.rb	2007-05-30 10:17:12.000000000 +0200
@@ -90,11 +90,11 @@
   s		= ENV["PATH"].dup
   $VERBOSE	= verbose
   if Dir.pwd[1..2] == ":/"
-    s << (";"+appdir.gsub(/\//, "\\"))
-    s << (";"+appdir("bin").gsub(/\//, "\\"))
+    s.replace(appdir.gsub(/\//, "\\")+";"+s)
+    s.replace(appdir("bin").gsub(/\//, "\\")+";"+s)
   else
-    s << (":"+appdir)
-    s << (":"+appdir("bin"))
+    s.replace(appdir+":"+s)
+    s.replace(appdir("bin")+":"+s)
   end
   ENV["PATH"]   = s
 
diff -ur rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/VERSION rubyscript2exe-0.5.3.tar.gz/rubyscript2exe/VERSION
--- rubyscript2exe-0.5.2.tar.gz/rubyscript2exe/VERSION	2007-04-15 21:31:49.000000000 +0200
+++ rubyscript2exe-0.5.3.tar.gz/rubyscript2exe/VERSION	2007-05-30 10:17:11.000000000 +0200
@@ -1 +1 @@
-0.5.2
+0.5.3