----Next_Part(Tue_Apr_21_00:15:08_1998_731)--
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit

ふなばです。

うもれてるし、あたらしいのをポストしておきます。

--Tadayoshi Funaba

----Next_Part(Tue_Apr_21_00:15:08_1998_731)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Description: rar.rb

#! /usr/local/bin/ruby

# rar.rb: Written by Tadayoshi Funaba 1998
# $Id: rar.rb,v 1.2 1998/04/15 13:50:00 tadf Exp $

exit if $*.empty?

print <<'__PRELUDE__'
#! /usr/local/bin/ruby

$exit_status  

def restore_sentinel(dir_or_file)
  begin
    yield
  rescue
    $stderr.puts "restore of #{dir_or_file} failed"
    $exit_status  
  end
end

def create_dir(dir)
  restore_sentinel(dir) do
    Dir.mkdir dir unless File.directory? dir
  end
end

def create_file(file, text, mode, size, atime, mtime)
  restore_sentinel(file) do
    open(file, 'w') do |output|
      output.binmode.write text.unpack('m')[0]
    end
    File.chmod(mode, file)
    File.utime(atime, mtime, file)
    fail unless File.size(file) size
  end
end

__PRELUDE__

$exit_status  

def store_sentinel(dir_or_file)
  begin
    yield
  rescue
    $stderr.puts "store of #{dir_or_file} failed"
    $exit_status  
  end
end

def find_files2(file)
  unless File.directory? file then
    yield file
  else
    store_sentinel(file) do
      Dir.foreach(file) do |elem|
	next if /^\.{1,2}$/no elem
	find_files2(file.sub(/\/*$/no, '/') + elem) do |file2|
	  yield file2
	end
      end
    end
  end
end

def find_files(files)
  files.each do |file|
    find_files2(file) do |file2|
      yield file2
    end
  end
end

$dirlist  ]

def gen_create_dir(file)
  dir  ile.dirname(file)
  return if /^\.$/no dir
  dir2  ir.scan(/^\/+[^/]+|[^/]+/no)
  for last in 0 .. dir2.length - 1
    dir3  ir2[0 .. last].join('/')
    next if $dirlist.include? dir3
    puts "create_dir('#{dir3}')"
    $dirlist << dir3
  end
end

find_files($*) do |file|
  gen_create_dir(file)
  store_sentinel(file) do
    text  ode  ize  time  time  il
    open(file, 'r') do |input|
      text  input.binmode.read or '')
      mode  nput.stat.mode & 0777
      size  nput.stat.size
      atime  nput.stat.atime.to_i
      mtime  nput.stat.mtime.to_i
    end
    print "text  <'__RAREOF__'\n", [text].pack('m'), "__RAREOF__\n"
    puts "create_file('#{file}', text, #{mode}, #{size}, #{atime}, #{mtime})"
  end
end
puts '', 'exit $exit_status', '__END__'

exit $exit_status

----Next_Part(Tue_Apr_21_00:15:08_1998_731)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Description: rar.rar

#! /usr/local/bin/ruby

$exit_status  

def restore_sentinel(dir_or_file)
  begin
    yield
  rescue
    $stderr.puts "restore of #{dir_or_file} failed"
    $exit_status  
  end
end

def create_dir(dir)
  restore_sentinel(dir) do
    Dir.mkdir dir unless File.directory? dir
  end
end

def create_file(file, text, mode, size, atime, mtime)
  restore_sentinel(file) do
    open(file, 'w') do |output|
      output.binmode.write text.unpack('m')[0]
    end
    File.chmod(mode, file)
    File.utime(atime, mtime, file)
    fail unless File.size(file) size
  end
end

create_dir('rar')
text  <'__RAREOF__'
ICAgICAgICAgICAgICAgICAgICAgICAgIFJ1YnkgpaKhvKWrpaSl9KTOuu7A
rgoKpLOk7KTPIHNoYXIgpM4gUnVieSDIx6THpLmhowoKpMSkq6SkpKukv6TP
tMrDsaGjpL+kyKSopNChonJhciCkzqW9obyluaTypeGlpKXrpMfB96TqpL+k
pKTKpOmhoqTEpK6kzqToCqSmpMukt6TepLmhowoKICAgIHJhciBSRUFETUUg
cmFyLnJiIHwgbWFpbCAtcyAncmFyIHNvdXJjZScgdGFkZgo__RAREOF__
create_file('rar/README', text, 420, 215, 893085124, 893085123)
text  <'__RAREOF__'
IyEgL3Vzci9sb2NhbC9iaW4vcnVieQoKIyByYXIucmI6IFdyaXR0ZW4gYnkg
VGFkYXlvc2hpIEZ1bmFiYSAxOTk4CiMgJElkOiByYXIucmIsdiAxLjIgMTk5
OC8wNC8xNSAxMzo1MDowMCB0YWRmIEV4cCAkCgpleGl0IGlmICQqLmVtcHR5
PwoKcHJpbnQgPDwnX19QUkVMVURFX18nCiMhIC91c3IvbG9jYWwvYmluL3J1
YnkKCiRleGl0X3N0YXR1cyA9IDAKCmRlZiByZXN0b3JlX3NlbnRpbmVsKGRp
cl9vcl9maWxlKQogIGJlZ2luCiAgICB5aWVsZAogIHJlc2N1ZQogICAgJHN0
ZGVyci5wdXRzICJyZXN0b3JlIG9mICN7ZGlyX29yX2ZpbGV9IGZhaWxlZCIK
ICAgICRleGl0X3N0YXR1cyA9IDEKICBlbmQKZW5kCgpkZWYgY3JlYXRlX2Rp
cihkaXIpCiAgcmVzdG9yZV9zZW50aW5lbChkaXIpIGRvCiAgICBEaXIubWtk
aXIgZGlyIHVubGVzcyBGaWxlLmRpcmVjdG9yeT8gZGlyCiAgZW5kCmVuZAoK
ZGVmIGNyZWF0ZV9maWxlKGZpbGUsIHRleHQsIG1vZGUsIHNpemUsIGF0aW1l
LCBtdGltZSkKICByZXN0b3JlX3NlbnRpbmVsKGZpbGUpIGRvCiAgICBvcGVu
KGZpbGUsICd3JykgZG8gfG91dHB1dHwKICAgICAgb3V0cHV0LmJpbm1vZGUu
d3JpdGUgdGV4dC51bnBhY2soJ20nKVswXQogICAgZW5kCiAgICBGaWxlLmNo
bW9kKG1vZGUsIGZpbGUpCiAgICBGaWxlLnV0aW1lKGF0aW1lLCBtdGltZSwg
ZmlsZSkKICAgIGZhaWwgdW5sZXNzIEZpbGUuc2l6ZShmaWxlKSA9PSBzaXpl
CiAgZW5kCmVuZAoKX19QUkVMVURFX18KCiRleGl0X3N0YXR1cyA9IDAKCmRl
ZiBzdG9yZV9zZW50aW5lbChkaXJfb3JfZmlsZSkKICBiZWdpbgogICAgeWll
bGQKICByZXNjdWUKICAgICRzdGRlcnIucHV0cyAic3RvcmUgb2YgI3tkaXJf
b3JfZmlsZX0gZmFpbGVkIgogICAgJGV4aXRfc3RhdHVzID0gMQogIGVuZApl
bmQKCmRlZiBmaW5kX2ZpbGVzMihmaWxlKQogIHVubGVzcyBGaWxlLmRpcmVj
dG9yeT8gZmlsZSB0aGVuCiAgICB5aWVsZCBmaWxlCiAgZWxzZQogICAgc3Rv
cmVfc2VudGluZWwoZmlsZSkgZG8KICAgICAgRGlyLmZvcmVhY2goZmlsZSkg
ZG8gfGVsZW18CgluZXh0IGlmIC9eXC57MSwyfSQvbm8gPX4gZWxlbQoJZmlu
ZF9maWxlczIoZmlsZS5zdWIoL1wvKiQvbm8sICcvJykgKyBlbGVtKSBkbyB8
ZmlsZTJ8CgkgIHlpZWxkIGZpbGUyCgllbmQKICAgICAgZW5kCiAgICBlbmQK
ICBlbmQKZW5kCgpkZWYgZmluZF9maWxlcyhmaWxlcykKICBmaWxlcy5lYWNo
IGRvIHxmaWxlfAogICAgZmluZF9maWxlczIoZmlsZSkgZG8gfGZpbGUyfAog
ICAgICB5aWVsZCBmaWxlMgogICAgZW5kCiAgZW5kCmVuZAoKJGRpcmxpc3Qg
PSBbXQoKZGVmIGdlbl9jcmVhdGVfZGlyKGZpbGUpCiAgZGlyID0gRmlsZS5k
aXJuYW1lKGZpbGUpCiAgcmV0dXJuIGlmIC9eXC4kL25vID1+IGRpcgogIGRp
cjIgPSBkaXIuc2NhbigvXlwvK1teL10rfFteL10rL25vKQogIGZvciBsYXN0
IGluIDAgLi4gZGlyMi5sZW5ndGggLSAxCiAgICBkaXIzID0gZGlyMlswIC4u
IGxhc3RdLmpvaW4oJy8nKQogICAgbmV4dCBpZiAkZGlybGlzdC5pbmNsdWRl
PyBkaXIzCiAgICBwdXRzICJjcmVhdGVfZGlyKCcje2RpcjN9JykiCiAgICAk
ZGlybGlzdCA8PCBkaXIzCiAgZW5kCmVuZAoKZmluZF9maWxlcygkKikgZG8g
fGZpbGV8CiAgZ2VuX2NyZWF0ZV9kaXIoZmlsZSkKICBzdG9yZV9zZW50aW5l
bChmaWxlKSBkbwogICAgdGV4dCA9IG1vZGUgPSBzaXplID0gYXRpbWUgPSBt
dGltZSA9IG5pbAogICAgb3BlbihmaWxlLCAncicpIGRvIHxpbnB1dHwKICAg
ICAgdGV4dCA9IChpbnB1dC5iaW5tb2RlLnJlYWQgb3IgJycpCiAgICAgIG1v
ZGUgPSBpbnB1dC5zdGF0Lm1vZGUgJiAwNzc3CiAgICAgIHNpemUgPSBpbnB1
dC5zdGF0LnNpemUKICAgICAgYXRpbWUgPSBpbnB1dC5zdGF0LmF0aW1lLnRv
X2kKICAgICAgbXRpbWUgPSBpbnB1dC5zdGF0Lm10aW1lLnRvX2kKICAgIGVu
ZAogICAgcHJpbnQgInRleHQgPSA8PCdfX1JBUkVPRl9fJ1xuIiwgW3RleHRd
LnBhY2soJ20nKSwgIl9fUkFSRU9GX19cbiIKICAgIHB1dHMgImNyZWF0ZV9m
aWxlKCcje2ZpbGV9JywgdGV4dCwgI3ttb2RlfSwgI3tzaXplfSwgI3thdGlt
ZX0sICN7bXRpbWV9KSIKICBlbmQKZW5kCnB1dHMgJycsICdleGl0ICRleGl0
X3N0YXR1cycsICdfX0VORF9fJwoKZXhpdCAkZXhpdF9zdGF0dXMK
__RAREOF__
create_file('rar/rar.rb', text, 292, 2154, 893085124, 893085123)

exit $exit_status
__END__

----Next_Part(Tue_Apr_21_00:15:08_1998_731)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Description: wc.rb

#! /usr/local/bin/ruby

# wc.rb: Written by Tadayoshi Funaba 1998
# $Id: wc.rb,v 1.2 1998/04/15 13:50:16 tadf Exp $

def wc(text, file  il)
  lc  ext.scan(/\n/no).length; $lc + c
  wc  ext.scan(/\S+/no).length; $wc + c
  cc  ext.length; $cc + c
  printf('%7d %7d %7d', lc, wc, cc)
  printf(' %s', file) if file
  puts
end

$es  lc  wc  cc  
if $*.empty? then
  wc($stdin.read || '')
else
  $*.each do |file|
    begin
      open(file, 'r') do |input|
	wc(input.read || '', file)
      end
    rescue
      $stderr.puts "#{$0}: #{file}: cannot read"
      $es  
    end
  end
end
printf("%7d %7d %7d total\n", $lc, $wc, $cc) if $*.length > 
exit $es

----Next_Part(Tue_Apr_21_00:15:08_1998_731)----