----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)----