зеркало из https://github.com/github/ruby.git
* sample/*: whitespace patch by Sergio Campama [Fixes GH-364]
https://github.com/ruby/ruby/pull/364 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42086 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
368cecc151
Коммит
b4489ae953
|
@ -1,3 +1,8 @@
|
|||
Sat Jul 20 22:39:56 2013 Zachary Scott <e@zzak.io>
|
||||
|
||||
* sample/*: whitespace patch by Sergio Campama [Fixes GH-364]
|
||||
https://github.com/ruby/ruby/pull/364
|
||||
|
||||
Sat Jul 20 22:33:13 2013 Zachary Scott <e@zzak.io>
|
||||
|
||||
* doc/regexp.rdoc: [DOC] Fix typo in example [Fixes GH-365]
|
||||
|
|
|
@ -71,7 +71,7 @@ class Cal
|
|||
ta = gr.collect{|xs| xs.join(' ')}
|
||||
|
||||
ca = %w(January February March April May June July
|
||||
August September October November December)[m - 1]
|
||||
August September October November December)[m - 1]
|
||||
ca = ca + ' ' + y.to_s if !@opt_y
|
||||
ca = ca.center(@mw)
|
||||
|
||||
|
@ -132,10 +132,10 @@ if __FILE__ == $0
|
|||
|
||||
begin
|
||||
GetoptLong.new(['-c', GetoptLong::REQUIRED_ARGUMENT],
|
||||
['-j', GetoptLong::NO_ARGUMENT],
|
||||
['-m', GetoptLong::NO_ARGUMENT],
|
||||
['-t', GetoptLong::NO_ARGUMENT],
|
||||
['-y', GetoptLong::NO_ARGUMENT]).
|
||||
['-j', GetoptLong::NO_ARGUMENT],
|
||||
['-m', GetoptLong::NO_ARGUMENT],
|
||||
['-t', GetoptLong::NO_ARGUMENT],
|
||||
['-y', GetoptLong::NO_ARGUMENT]).
|
||||
each do |opt, arg|
|
||||
case opt
|
||||
when '-c'; cal.opt_c(arg) || raise
|
||||
|
|
|
@ -38,7 +38,7 @@ at_exit do
|
|||
end
|
||||
cov
|
||||
else
|
||||
p line
|
||||
p line
|
||||
warn("coverage file corrupted, ignoring: #{ cfile }")
|
||||
break []
|
||||
end
|
||||
|
|
|
@ -19,18 +19,18 @@ class Biff
|
|||
last = Time.now
|
||||
while true
|
||||
begin
|
||||
sleep(@interval)
|
||||
current = File::mtime(@filename)
|
||||
if current > last
|
||||
changed
|
||||
begin
|
||||
notify_observers(@filename, current)
|
||||
rescue Error
|
||||
end
|
||||
last = current
|
||||
end
|
||||
sleep(@interval)
|
||||
current = File::mtime(@filename)
|
||||
if current > last
|
||||
changed
|
||||
begin
|
||||
notify_observers(@filename, current)
|
||||
rescue Error
|
||||
end
|
||||
last = current
|
||||
end
|
||||
rescue
|
||||
next
|
||||
next
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -47,16 +47,16 @@ class ChatServer
|
|||
msg2 = ">#{name}< #{str}"
|
||||
@mutex.synchronize do
|
||||
for m in @members.keys
|
||||
begin
|
||||
if m == there
|
||||
@members[m].listen(msg2)
|
||||
else
|
||||
@members[m].listen(msg)
|
||||
end
|
||||
rescue
|
||||
p $!
|
||||
@members.delete(m)
|
||||
end
|
||||
begin
|
||||
if m == there
|
||||
@members[m].listen(msg2)
|
||||
else
|
||||
@members[m].listen(msg)
|
||||
end
|
||||
rescue
|
||||
p $!
|
||||
@members.delete(m)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -21,8 +21,8 @@ class Logger
|
|||
def flush
|
||||
begin
|
||||
while(1)
|
||||
@fp.puts(@queue.pop)
|
||||
@fp.flush
|
||||
@fp.puts(@queue.pop)
|
||||
@fp.flush
|
||||
end
|
||||
ensure
|
||||
@fp.close
|
||||
|
|
|
@ -6,20 +6,20 @@ module DRb
|
|||
module HTTP0
|
||||
class StrStream
|
||||
def initialize(str='')
|
||||
@buf = str
|
||||
@buf = str
|
||||
end
|
||||
attr_reader :buf
|
||||
|
||||
def read(n)
|
||||
begin
|
||||
return @buf[0,n]
|
||||
ensure
|
||||
@buf[0,n] = ''
|
||||
end
|
||||
begin
|
||||
return @buf[0,n]
|
||||
ensure
|
||||
@buf[0,n] = ''
|
||||
end
|
||||
end
|
||||
|
||||
def write(s)
|
||||
@buf.concat s
|
||||
@buf.concat s
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -29,47 +29,47 @@ module DRb
|
|||
|
||||
def self.open(uri, config)
|
||||
unless /^http:/ =~ uri
|
||||
raise(DRbBadScheme, uri) unless uri =~ /^http:/
|
||||
raise(DRbBadURI, 'can\'t parse uri:' + uri)
|
||||
raise(DRbBadScheme, uri) unless uri =~ /^http:/
|
||||
raise(DRbBadURI, 'can\'t parse uri:' + uri)
|
||||
end
|
||||
ClientSide.new(uri, config)
|
||||
end
|
||||
|
||||
class ClientSide
|
||||
def initialize(uri, config)
|
||||
@uri = uri
|
||||
@res = nil
|
||||
@config = config
|
||||
@msg = DRbMessage.new(config)
|
||||
@proxy = ENV['HTTP_PROXY']
|
||||
@uri = uri
|
||||
@res = nil
|
||||
@config = config
|
||||
@msg = DRbMessage.new(config)
|
||||
@proxy = ENV['HTTP_PROXY']
|
||||
end
|
||||
|
||||
def close; end
|
||||
def alive?; false; end
|
||||
|
||||
def send_request(ref, msg_id, *arg, &b)
|
||||
stream = StrStream.new
|
||||
@msg.send_request(stream, ref, msg_id, *arg, &b)
|
||||
@reply_stream = StrStream.new
|
||||
post(@uri, stream.buf)
|
||||
stream = StrStream.new
|
||||
@msg.send_request(stream, ref, msg_id, *arg, &b)
|
||||
@reply_stream = StrStream.new
|
||||
post(@uri, stream.buf)
|
||||
end
|
||||
|
||||
def recv_reply
|
||||
@msg.recv_reply(@reply_stream)
|
||||
@msg.recv_reply(@reply_stream)
|
||||
end
|
||||
|
||||
def post(url, data)
|
||||
it = URI.parse(url)
|
||||
path = [(it.path=='' ? '/' : it.path), it.query].compact.join('?')
|
||||
http = Net::HTTP.new(it.host, it.port)
|
||||
sio = StrStream.new
|
||||
http.post(path, data, {'Content-Type'=>'application/octetstream;'}) do |str|
|
||||
sio.write(str)
|
||||
if @config[:load_limit] < sio.buf.size
|
||||
raise TypeError, 'too large packet'
|
||||
end
|
||||
end
|
||||
@reply_stream = sio
|
||||
it = URI.parse(url)
|
||||
path = [(it.path=='' ? '/' : it.path), it.query].compact.join('?')
|
||||
http = Net::HTTP.new(it.host, it.port)
|
||||
sio = StrStream.new
|
||||
http.post(path, data, {'Content-Type'=>'application/octetstream;'}) do |str|
|
||||
sio.write(str)
|
||||
if @config[:load_limit] < sio.buf.size
|
||||
raise TypeError, 'too large packet'
|
||||
end
|
||||
end
|
||||
@reply_stream = sio
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -8,111 +8,111 @@ module DRb
|
|||
|
||||
def self.open_server(uri, config)
|
||||
unless /^http:/ =~ uri
|
||||
raise(DRbBadScheme, uri) unless uri =~ /^http:/
|
||||
raise(DRbBadURI, 'can\'t parse uri:' + uri)
|
||||
raise(DRbBadScheme, uri) unless uri =~ /^http:/
|
||||
raise(DRbBadURI, 'can\'t parse uri:' + uri)
|
||||
end
|
||||
Server.new(uri, config)
|
||||
end
|
||||
|
||||
class Callback < WEBrick::HTTPServlet::AbstractServlet
|
||||
def initialize(config, drb)
|
||||
@config = config
|
||||
@drb = drb
|
||||
@queue = Queue.new
|
||||
@config = config
|
||||
@drb = drb
|
||||
@queue = Queue.new
|
||||
end
|
||||
|
||||
def do_POST(req, res)
|
||||
@req = req
|
||||
@res = res
|
||||
@drb.push(self)
|
||||
@res.body = @queue.pop
|
||||
@res['content-type'] = 'application/octet-stream;'
|
||||
@req = req
|
||||
@res = res
|
||||
@drb.push(self)
|
||||
@res.body = @queue.pop
|
||||
@res['content-type'] = 'application/octet-stream;'
|
||||
end
|
||||
|
||||
def req_body
|
||||
@req.body
|
||||
@req.body
|
||||
end
|
||||
|
||||
def reply(body)
|
||||
@queue.push(body)
|
||||
@queue.push(body)
|
||||
end
|
||||
|
||||
def close
|
||||
@queue.push('')
|
||||
@queue.push('')
|
||||
end
|
||||
end
|
||||
|
||||
class Server
|
||||
def initialize(uri, config)
|
||||
@uri = uri
|
||||
@config = config
|
||||
@queue = Queue.new
|
||||
setup_webrick(uri)
|
||||
@uri = uri
|
||||
@config = config
|
||||
@queue = Queue.new
|
||||
setup_webrick(uri)
|
||||
end
|
||||
attr_reader :uri
|
||||
|
||||
def close
|
||||
@server.shutdown if @server
|
||||
@server = nil
|
||||
@server.shutdown if @server
|
||||
@server = nil
|
||||
end
|
||||
|
||||
def push(callback)
|
||||
@queue.push(callback)
|
||||
@queue.push(callback)
|
||||
end
|
||||
|
||||
def accept
|
||||
client = @queue.pop
|
||||
ServerSide.new(client, @config)
|
||||
client = @queue.pop
|
||||
ServerSide.new(client, @config)
|
||||
end
|
||||
|
||||
def setup_webrick(uri)
|
||||
logger = WEBrick::Log::new($stderr, WEBrick::Log::FATAL)
|
||||
u = URI.parse(uri)
|
||||
s = WEBrick::HTTPServer.new(:Port => u.port,
|
||||
:AddressFamily => Socket::AF_INET,
|
||||
:BindAddress => u.host,
|
||||
:Logger => logger,
|
||||
:ServerType => Thread)
|
||||
s.mount(u.path, Callback, self)
|
||||
@server = s
|
||||
s.start
|
||||
logger = WEBrick::Log::new($stderr, WEBrick::Log::FATAL)
|
||||
u = URI.parse(uri)
|
||||
s = WEBrick::HTTPServer.new(:Port => u.port,
|
||||
:AddressFamily => Socket::AF_INET,
|
||||
:BindAddress => u.host,
|
||||
:Logger => logger,
|
||||
:ServerType => Thread)
|
||||
s.mount(u.path, Callback, self)
|
||||
@server = s
|
||||
s.start
|
||||
end
|
||||
end
|
||||
|
||||
class ServerSide
|
||||
def initialize(callback, config)
|
||||
@callback = callback
|
||||
@config = config
|
||||
@msg = DRbMessage.new(@config)
|
||||
@req_stream = StrStream.new(@callback.req_body)
|
||||
@callback = callback
|
||||
@config = config
|
||||
@msg = DRbMessage.new(@config)
|
||||
@req_stream = StrStream.new(@callback.req_body)
|
||||
end
|
||||
|
||||
def close
|
||||
@callback.close if @callback
|
||||
@callback = nil
|
||||
@callback.close if @callback
|
||||
@callback = nil
|
||||
end
|
||||
|
||||
def alive?; false; end
|
||||
|
||||
def recv_request
|
||||
begin
|
||||
@msg.recv_request(@req_stream)
|
||||
rescue
|
||||
close
|
||||
raise $!
|
||||
end
|
||||
begin
|
||||
@msg.recv_request(@req_stream)
|
||||
rescue
|
||||
close
|
||||
raise $!
|
||||
end
|
||||
end
|
||||
|
||||
def send_reply(succ, result)
|
||||
begin
|
||||
return unless @callback
|
||||
stream = StrStream.new
|
||||
@msg.send_reply(stream, succ, result)
|
||||
@callback.reply(stream.buf)
|
||||
rescue
|
||||
close
|
||||
raise $!
|
||||
end
|
||||
begin
|
||||
return unless @callback
|
||||
stream = StrStream.new
|
||||
@msg.send_reply(stream, succ, result)
|
||||
@callback.reply(stream.buf)
|
||||
rescue
|
||||
close
|
||||
raise $!
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -11,7 +11,7 @@ class TupleSpace
|
|||
@list = list
|
||||
@check_idx = []
|
||||
@list.each_with_index do |x, i|
|
||||
@check_idx.push i if x
|
||||
@check_idx.push i if x
|
||||
end
|
||||
@size = @list.size
|
||||
end
|
||||
|
@ -22,9 +22,9 @@ class TupleSpace
|
|||
def match(tuple)
|
||||
return nil if tuple.size != self.size
|
||||
@check_idx.each do |i|
|
||||
unless @list[i] === tuple[i]
|
||||
return false
|
||||
end
|
||||
unless @list[i] === tuple[i]
|
||||
return false
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
@ -47,13 +47,13 @@ class TupleSpace
|
|||
found = false
|
||||
@waiting[sz] = @waiting[sz].find_all { |x|
|
||||
if x[0].match(tuple)
|
||||
begin
|
||||
x[1].wakeup
|
||||
rescue ThreadError
|
||||
end
|
||||
false
|
||||
begin
|
||||
x[1].wakeup
|
||||
rescue ThreadError
|
||||
end
|
||||
false
|
||||
else
|
||||
true
|
||||
true
|
||||
end
|
||||
}
|
||||
end
|
||||
|
@ -77,8 +77,8 @@ class TupleSpace
|
|||
found = false
|
||||
@que[sz].each_with_index do |x, i|
|
||||
if template.match(x)
|
||||
found = true
|
||||
break
|
||||
found = true
|
||||
break
|
||||
end
|
||||
end
|
||||
return nil unless found
|
||||
|
@ -110,17 +110,17 @@ class TupleSpace
|
|||
def in(template, non_block=false)
|
||||
begin
|
||||
loop do
|
||||
Thread.critical = true
|
||||
tuple = get_que(template)
|
||||
unless tuple
|
||||
if non_block
|
||||
raise ThreadError, "queue empty"
|
||||
end
|
||||
put_waiting(template, Thread.current)
|
||||
Thread.stop
|
||||
else
|
||||
return tuple
|
||||
end
|
||||
Thread.critical = true
|
||||
tuple = get_que(template)
|
||||
unless tuple
|
||||
if non_block
|
||||
raise ThreadError, "queue empty"
|
||||
end
|
||||
put_waiting(template, Thread.current)
|
||||
Thread.stop
|
||||
else
|
||||
return tuple
|
||||
end
|
||||
end
|
||||
ensure
|
||||
Thread.critical = false
|
||||
|
@ -155,11 +155,11 @@ if __FILE__ == $0
|
|||
def server(ts, id)
|
||||
Thread.start {
|
||||
loop do
|
||||
req = ts.in(['req', nil, nil])
|
||||
ac = req[1]
|
||||
num = req[2]
|
||||
sleep id
|
||||
ts.out([ac, id, num, num * num])
|
||||
req = ts.in(['req', nil, nil])
|
||||
ac = req[1]
|
||||
num = req[2]
|
||||
sleep id
|
||||
ts.out([ac, id, num, num * num])
|
||||
end
|
||||
}
|
||||
end
|
||||
|
@ -168,14 +168,14 @@ if __FILE__ == $0
|
|||
Thread.start {
|
||||
ac = Object.new
|
||||
tuples = (1..10).collect { |i|
|
||||
['req', ac, i * 10 + n]
|
||||
['req', ac, i * 10 + n]
|
||||
}
|
||||
ts.out(*tuples)
|
||||
ts.out(tuples[0])
|
||||
puts "out: #{n}"
|
||||
11.times do |i|
|
||||
ans = ts.in([ac, nil, nil, nil])
|
||||
puts "client(#{n}) server(#{ans[1]}) #{ans[2]} #{ans[3]}"
|
||||
ans = ts.in([ac, nil, nil, nil])
|
||||
puts "client(#{n}) server(#{ans[1]}) #{ans[2]} #{ans[3]}"
|
||||
end
|
||||
}
|
||||
end
|
||||
|
@ -183,12 +183,12 @@ if __FILE__ == $0
|
|||
def watcher(ts)
|
||||
Thread.start {
|
||||
loop do
|
||||
begin
|
||||
sleep 1
|
||||
p ts.rd(['req', nil, nil], true)
|
||||
rescue ThreadError
|
||||
puts "'req' not found."
|
||||
end
|
||||
begin
|
||||
sleep 1
|
||||
p ts.rd(['req', nil, nil], true)
|
||||
rescue ThreadError
|
||||
puts "'req' not found."
|
||||
end
|
||||
end
|
||||
}
|
||||
end
|
||||
|
|
|
@ -58,10 +58,10 @@ if __FILE__ == $0
|
|||
def server(ts)
|
||||
Thread.start {
|
||||
loop do
|
||||
req = ts.in('req')
|
||||
ac = req[0]
|
||||
num = req[1]
|
||||
ts.out(ac, num * num)
|
||||
req = ts.in('req')
|
||||
ac = req[0]
|
||||
num = req[1]
|
||||
ts.out(ac, num * num)
|
||||
end
|
||||
}
|
||||
end
|
||||
|
|
|
@ -38,7 +38,7 @@ end
|
|||
STDERR.print "conntecting to #{host} port #{port}\n"
|
||||
c = TCPSocket.new(host, port)
|
||||
dest = Socket.getnameinfo(c.getpeername,
|
||||
Socket::NI_NUMERICHOST|Socket::NI_NUMERICSERV)
|
||||
Socket::NI_NUMERICHOST|Socket::NI_NUMERICSERV)
|
||||
STDERR.print "conntected to #{dest[0]} port #{dest[1]}\n"
|
||||
c.print "GET #{path} HTTP/1.0\n"
|
||||
c.print "Host: #{host}\n"
|
||||
|
|
|
@ -29,22 +29,22 @@ end
|
|||
while true
|
||||
as = ls.accept
|
||||
Thread.start do
|
||||
STDERR.print "socket #{myname} accepted, thread ", Thread.current, "\n"
|
||||
s = as # copy to dynamic variable
|
||||
str = ''
|
||||
while line = s.gets
|
||||
break if line == "\r\n" or line == "\n"
|
||||
str << line
|
||||
end
|
||||
STDERR.print "socket #{myname} got string\n"
|
||||
s.write("HTTP/1.0 200 OK\n")
|
||||
s.write("Content-type: text/plain\n\n")
|
||||
s.write("this is test: my name is #{myname}, you sent:\n")
|
||||
s.write("---start\n")
|
||||
s.write(str)
|
||||
s.write("---end\n")
|
||||
s.close
|
||||
STDERR.print "socket #{myname} processed, thread ", Thread.current, " terminating\n"
|
||||
STDERR.print "socket #{myname} accepted, thread ", Thread.current, "\n"
|
||||
s = as # copy to dynamic variable
|
||||
str = ''
|
||||
while line = s.gets
|
||||
break if line == "\r\n" or line == "\n"
|
||||
str << line
|
||||
end
|
||||
STDERR.print "socket #{myname} got string\n"
|
||||
s.write("HTTP/1.0 200 OK\n")
|
||||
s.write("Content-type: text/plain\n\n")
|
||||
s.write("this is test: my name is #{myname}, you sent:\n")
|
||||
s.write("---start\n")
|
||||
s.write(str)
|
||||
s.write("---end\n")
|
||||
s.close
|
||||
STDERR.print "socket #{myname} processed, thread ", Thread.current, " terminating\n"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
function fib(n) {
|
||||
if ( n<2 ) return n; else return fib(n-2) + fib(n-1)
|
||||
}
|
||||
function fib(n) {
|
||||
if ( n<2 ) return n; else return fib(n-2) + fib(n-1)
|
||||
}
|
||||
|
||||
BEGIN { print fib(20); }
|
||||
BEGIN { print fib(20); }
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
sub fib {
|
||||
my($n)=@_;
|
||||
if ($n<2) {
|
||||
return $n;
|
||||
return $n;
|
||||
}
|
||||
else {
|
||||
return fib($n-2)+fib($n-1);
|
||||
return fib($n-2)+fib($n-1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
(define (fib n)
|
||||
(if (< n 2)
|
||||
n
|
||||
(+ (fib (- n 2)) (fib (- n 1)))))
|
||||
n
|
||||
(+ (fib (- n 2)) (fib (- n 1)))))
|
||||
|
||||
(display (fib 20))
|
||||
(newline)
|
||||
|
|
|
@ -43,8 +43,8 @@ def get_mailfile(user)
|
|||
[ENV['SPOOLDIR'], '/usr/spool', '/var/spool', '/usr', '/var'].each do |m|
|
||||
path = "#{m}/mail/#{user}"
|
||||
if File.exist?(path)
|
||||
file = path
|
||||
break
|
||||
file = path
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -64,23 +64,23 @@ def from_main
|
|||
mtime = File.mtime(file)
|
||||
open(file, "r") do |f|
|
||||
until f.eof?
|
||||
header = {}
|
||||
f.each_line do |line|
|
||||
next if /^From / =~ line # skip From-line
|
||||
break if /^$/ =~ line # end of header
|
||||
header = {}
|
||||
f.each_line do |line|
|
||||
next if /^From / =~ line # skip From-line
|
||||
break if /^$/ =~ line # end of header
|
||||
|
||||
if /^(?<attr>\S+?):\s*(?<value>.*)/ =~ line
|
||||
attr.capitalize!
|
||||
header[attr] = value
|
||||
elsif attr
|
||||
header[attr] += "\n" + line.lstrip
|
||||
end
|
||||
end
|
||||
if /^(?<attr>\S+?):\s*(?<value>.*)/ =~ line
|
||||
attr.capitalize!
|
||||
header[attr] = value
|
||||
elsif attr
|
||||
header[attr] += "\n" + line.lstrip
|
||||
end
|
||||
end
|
||||
|
||||
f.each_line do |line|
|
||||
break if /^From / =~ line
|
||||
end
|
||||
outcount += fromout(header['Date'], header['From'], header['Subject'])
|
||||
f.each_line do |line|
|
||||
break if /^From / =~ line
|
||||
end
|
||||
outcount += fromout(header['Date'], header['From'], header['Subject'])
|
||||
end
|
||||
end
|
||||
File.utime(atime, mtime, file)
|
||||
|
|
|
@ -7,18 +7,18 @@ while line = gets()
|
|||
for arg in $4.split(/;\n\s*/)
|
||||
arg.gsub!(/ +/, ' ')
|
||||
if arg =~ /,/
|
||||
if arg =~ /(([^*]+) *\** *\w+),/
|
||||
type = $2.strip
|
||||
args.push $1.strip
|
||||
arg = $'
|
||||
else
|
||||
type = ""
|
||||
end
|
||||
while arg.sub!(/(\** *\w+)(,|$)/, "") && $~
|
||||
args.push type + " " + $1.strip
|
||||
end
|
||||
if arg =~ /(([^*]+) *\** *\w+),/
|
||||
type = $2.strip
|
||||
args.push $1.strip
|
||||
arg = $'
|
||||
else
|
||||
type = ""
|
||||
end
|
||||
while arg.sub!(/(\** *\w+)(,|$)/, "") && $~
|
||||
args.push type + " " + $1.strip
|
||||
end
|
||||
else
|
||||
args.push arg.strip
|
||||
args.push arg.strip
|
||||
end
|
||||
end
|
||||
printf "%s);\n", args.join(', ')
|
||||
|
|
|
@ -8,10 +8,10 @@ class Tick
|
|||
def initialize
|
||||
Thread.start do
|
||||
loop do
|
||||
sleep 0.999
|
||||
now = Time.now
|
||||
changed
|
||||
notify_observers(now.hour, now.min, now.sec)
|
||||
sleep 0.999
|
||||
now = Time.now
|
||||
changed
|
||||
notify_observers(now.hour, now.min, now.sec)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
while (<>) {
|
||||
for (split(/\W+/)) {
|
||||
$freq{$_}++;
|
||||
}
|
||||
for (split(/\W+/)) {
|
||||
$freq{$_}++;
|
||||
}
|
||||
}
|
||||
|
||||
for (sort keys %freq) {
|
||||
print "$_ -- $freq{$_}\n";
|
||||
print "$_ -- $freq{$_}\n";
|
||||
}
|
||||
|
|
|
@ -54,13 +54,13 @@ class CHashDir
|
|||
OpenSSL::X509::Certificate.new(str)
|
||||
rescue
|
||||
begin
|
||||
OpenSSL::X509::CRL.new(str)
|
||||
OpenSSL::X509::CRL.new(str)
|
||||
rescue
|
||||
begin
|
||||
OpenSSL::X509::Request.new(str)
|
||||
rescue
|
||||
nil
|
||||
end
|
||||
begin
|
||||
OpenSSL::X509::Request.new(str)
|
||||
rescue
|
||||
nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -75,15 +75,15 @@ private
|
|||
Dir.chdir(@dirpath) do
|
||||
delete_symlink
|
||||
Dir.glob('*.pem') do |pemfile|
|
||||
cert = load_pem_file(pemfile)
|
||||
case cert
|
||||
when OpenSSL::X509::Certificate
|
||||
link_hash_cert(pemfile, cert)
|
||||
when OpenSSL::X509::CRL
|
||||
link_hash_crl(pemfile, cert)
|
||||
else
|
||||
STDERR.puts("WARNING: #{pemfile} does not contain a certificate or CRL: skipping") unless @silent
|
||||
end
|
||||
cert = load_pem_file(pemfile)
|
||||
case cert
|
||||
when OpenSSL::X509::Certificate
|
||||
link_hash_cert(pemfile, cert)
|
||||
when OpenSSL::X509::CRL
|
||||
link_hash_crl(pemfile, cert)
|
||||
else
|
||||
STDERR.puts("WARNING: #{pemfile} does not contain a certificate or CRL: skipping") unless @silent
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -103,7 +103,7 @@ private
|
|||
}
|
||||
unless filepath
|
||||
unless @silent
|
||||
STDERR.puts("WARNING: Skipping duplicate certificate #{org_filename}")
|
||||
STDERR.puts("WARNING: Skipping duplicate certificate #{org_filename}")
|
||||
end
|
||||
else
|
||||
(@cert_cache[name_hash] ||= []) << path(filepath)
|
||||
|
@ -118,7 +118,7 @@ private
|
|||
}
|
||||
unless filepath
|
||||
unless @silent
|
||||
STDERR.puts("WARNING: Skipping duplicate CRL #{org_filename}")
|
||||
STDERR.puts("WARNING: Skipping duplicate CRL #{org_filename}")
|
||||
end
|
||||
else
|
||||
(@crl_cache[name_hash] ||= []) << path(filepath)
|
||||
|
@ -132,7 +132,7 @@ private
|
|||
filepath = yield(idx)
|
||||
break unless FileTest.symlink?(filepath) or FileTest.exist?(filepath)
|
||||
if @fingerprint_cache[filepath] == fingerprint
|
||||
return false
|
||||
return false
|
||||
end
|
||||
idx += 1
|
||||
end
|
||||
|
@ -147,7 +147,7 @@ private
|
|||
File.symlink(from, to)
|
||||
rescue
|
||||
File.open(to, "w") do |f|
|
||||
f << File.read(from)
|
||||
f << File.read(from)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -76,27 +76,27 @@ private
|
|||
result = @x509store.verify(cert) do |ok, ctx|
|
||||
cert = ctx.current_cert
|
||||
if ctx.current_crl
|
||||
crl_map[cert.subject] = true
|
||||
crl_map[cert.subject] = true
|
||||
end
|
||||
if ok
|
||||
if !ctx.current_crl
|
||||
if crl = @crl_store.find_crl(cert)
|
||||
crl_map[cert.subject] = true
|
||||
if crl.revoked.find { |revoked| revoked.serial == cert.serial }
|
||||
ok = false
|
||||
error_string = 'certification revoked'
|
||||
end
|
||||
end
|
||||
end
|
||||
if !ctx.current_crl
|
||||
if crl = @crl_store.find_crl(cert)
|
||||
crl_map[cert.subject] = true
|
||||
if crl.revoked.find { |revoked| revoked.serial == cert.serial }
|
||||
ok = false
|
||||
error_string = 'certification revoked'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
error_map[cert.subject] = error_string if error_string
|
||||
ok
|
||||
end
|
||||
error = if result
|
||||
nil
|
||||
else
|
||||
error_map[cert.subject] || @x509store.error_string
|
||||
end
|
||||
nil
|
||||
else
|
||||
error_map[cert.subject] || @x509store.error_string
|
||||
end
|
||||
return error, crl_map
|
||||
end
|
||||
|
||||
|
@ -105,13 +105,13 @@ private
|
|||
cert = generate_cert(certfile)
|
||||
case guess_cert_type(cert)
|
||||
when CERT_TYPE_SELF_SIGNED
|
||||
@self_signed_ca << cert
|
||||
@self_signed_ca << cert
|
||||
when CERT_TYPE_OTHER
|
||||
@other_ca << cert
|
||||
@other_ca << cert
|
||||
when CERT_TYPE_EE
|
||||
@ee << cert
|
||||
@ee << cert
|
||||
else
|
||||
raise "Unknown cert type."
|
||||
raise "Unknown cert type."
|
||||
end
|
||||
end
|
||||
@c_store.get_crls.each do |crlfile|
|
||||
|
@ -128,21 +128,21 @@ private
|
|||
# Ignores criticality of extensions. It's 'guess'ing.
|
||||
case ext.oid
|
||||
when 'basicConstraints'
|
||||
/CA:(TRUE|FALSE), pathlen:(\d+)/ =~ ext.value
|
||||
ca = ($1 == 'TRUE') unless ca
|
||||
/CA:(TRUE|FALSE), pathlen:(\d+)/ =~ ext.value
|
||||
ca = ($1 == 'TRUE') unless ca
|
||||
when 'keyUsage'
|
||||
usage = ext.value.split(/\s*,\s*/)
|
||||
ca = usage.include?('Certificate Sign') unless ca
|
||||
usage = ext.value.split(/\s*,\s*/)
|
||||
ca = usage.include?('Certificate Sign') unless ca
|
||||
when 'nsCertType'
|
||||
usage = ext.value.split(/\s*,\s*/)
|
||||
ca = usage.include?('SSL CA') unless ca
|
||||
usage = ext.value.split(/\s*,\s*/)
|
||||
ca = usage.include?('SSL CA') unless ca
|
||||
end
|
||||
end
|
||||
if ca
|
||||
if self_signed
|
||||
CERT_TYPE_SELF_SIGNED
|
||||
CERT_TYPE_SELF_SIGNED
|
||||
else
|
||||
CERT_TYPE_OTHER
|
||||
CERT_TYPE_OTHER
|
||||
end
|
||||
else
|
||||
CERT_TYPE_EE
|
||||
|
|
|
@ -24,22 +24,22 @@ private
|
|||
end
|
||||
unless crlfiles = @c_store.get_crls(ca.subject)
|
||||
if crl = renew_crl(cert, ca)
|
||||
@c_store.add_crl(crl)
|
||||
return crl
|
||||
@c_store.add_crl(crl)
|
||||
return crl
|
||||
end
|
||||
return nil
|
||||
end
|
||||
crlfiles.each do |crlfile|
|
||||
next unless crl = load_crl(crlfile)
|
||||
if crl.next_update < Time.now
|
||||
if new_crl = renew_crl(cert, ca)
|
||||
@c_store.delete_crl(crl)
|
||||
@c_store.add_crl(new_crl)
|
||||
crl = new_crl
|
||||
end
|
||||
if new_crl = renew_crl(cert, ca)
|
||||
@c_store.delete_crl(crl)
|
||||
@c_store.add_crl(new_crl)
|
||||
crl = new_crl
|
||||
end
|
||||
end
|
||||
if check_valid(crl, ca)
|
||||
return crl
|
||||
return crl
|
||||
end
|
||||
end
|
||||
nil
|
||||
|
@ -49,7 +49,7 @@ private
|
|||
@c_store.get_certs(cert.issuer).each do |cafile|
|
||||
ca = load_cert(cafile)
|
||||
if cert.verify(ca.public_key)
|
||||
return ca
|
||||
return ca
|
||||
end
|
||||
end
|
||||
nil
|
||||
|
@ -58,10 +58,10 @@ private
|
|||
def fetch(location)
|
||||
if /\AURI:(.*)\z/ =~ location
|
||||
begin
|
||||
c = HTTPAccess2::Client.new(ENV['http_proxy'] || ENV['HTTP_PROXY'])
|
||||
c.get_content($1)
|
||||
c = HTTPAccess2::Client.new(ENV['http_proxy'] || ENV['HTTP_PROXY'])
|
||||
c.get_content($1)
|
||||
rescue NameError, StandardError
|
||||
nil
|
||||
nil
|
||||
end
|
||||
else
|
||||
nil
|
||||
|
@ -103,10 +103,10 @@ private
|
|||
def renew_crl(cert, ca)
|
||||
if cdp = get_cdp(cert)
|
||||
if new_crl_str = fetch(cdp)
|
||||
new_crl = load_crl_str(new_crl_str)
|
||||
if check_valid(new_crl, ca)
|
||||
return new_crl
|
||||
end
|
||||
new_crl = load_crl_str(new_crl_str)
|
||||
if check_valid(new_crl, ca)
|
||||
return new_crl
|
||||
end
|
||||
end
|
||||
end
|
||||
false
|
||||
|
|
|
@ -22,13 +22,13 @@ ARGV.options do
|
|||
|
||||
# mandatory argument
|
||||
opts.on("-r", "--require=LIBRARY", String,
|
||||
"require the LIBRARY, before",
|
||||
"executing your script") {|lib|@library=lib}
|
||||
"require the LIBRARY, before",
|
||||
"executing your script") {|lib|@library=lib}
|
||||
|
||||
# optional argument
|
||||
opts.on("-i", "--inplace=[EXTENSION]",
|
||||
"edit ARGV files in place", # multiline description
|
||||
"(make backup if EXTENSION supplied)") {|inplace| @inplace = inplace || ''}
|
||||
"edit ARGV files in place", # multiline description
|
||||
"(make backup if EXTENSION supplied)") {|inplace| @inplace = inplace || ''}
|
||||
|
||||
opts.on("-N=[NUM]", Integer) {|num|@number=num}
|
||||
|
||||
|
@ -37,7 +37,7 @@ ARGV.options do
|
|||
|
||||
# limit argument syntax
|
||||
opts.on("-[0-7]", "-F", "--irs=[OCTAL]", OptionParser::OctalInteger,
|
||||
"specify record separator", "(\\0, if no argument)") {|irs|@irs=irs}
|
||||
"specify record separator", "(\\0, if no argument)") {|irs|@irs=irs}
|
||||
|
||||
# boolean switch(default true)
|
||||
@exec = true
|
||||
|
@ -51,7 +51,7 @@ ARGV.options do
|
|||
|
||||
# keyword completion
|
||||
opts.on("--code=CODE", CODES, CODE_ALIASES, "select coding system",
|
||||
"("+CODES.join(",")+",", " "+CODE_ALIASES.keys.join(",")+")") {|c|@code=c}
|
||||
"("+CODES.join(",")+",", " "+CODE_ALIASES.keys.join(",")+")") {|c|@code=c}
|
||||
|
||||
# optional argument with keyword completion
|
||||
opts.on("--type[=TYPE]", [:text, :binary], "select type(text, binary)") {|t|@type=t}
|
||||
|
|
|
@ -1,33 +1,33 @@
|
|||
BEGIN {
|
||||
sw = 40.0;
|
||||
dw = 78.0;
|
||||
hdw = dw / 2.0;
|
||||
w = 20.0;
|
||||
h =1.0;
|
||||
d = 0.2;
|
||||
ss="abcdefghijklmnopqrstuvwxyz0123456789!#$%^&*()-=\\[];'`,./";
|
||||
rnd = srand();
|
||||
sw = 40.0;
|
||||
dw = 78.0;
|
||||
hdw = dw / 2.0;
|
||||
w = 20.0;
|
||||
h =1.0;
|
||||
d = 0.2;
|
||||
ss="abcdefghijklmnopqrstuvwxyz0123456789!#$%^&*()-=\\[];'`,./";
|
||||
rnd = srand();
|
||||
}
|
||||
|
||||
{
|
||||
xr = -hdw; y = h * 1.0; maxxl = -999;
|
||||
s = "";
|
||||
while (xr < hdw) {
|
||||
x = xr * (1 + y) - y * w / 2;
|
||||
i = (x / (1 + h) + sw /2);
|
||||
c = (0 < i && i < length($0)) ? substr($0, i, 1) : "0";
|
||||
y = h - d * c;
|
||||
xl = xr - w * y / (1 + y);
|
||||
if (xl < -hdw || xl >= hdw || xl <= maxxl) {
|
||||
t = rand() * length(ss);
|
||||
c = substr(ss, t, 1);
|
||||
}
|
||||
else {
|
||||
c = substr(s, xl + hdw, 1);
|
||||
maxxl = xl;
|
||||
}
|
||||
s = s c;
|
||||
xr = xr + 1;
|
||||
xr = -hdw; y = h * 1.0; maxxl = -999;
|
||||
s = "";
|
||||
while (xr < hdw) {
|
||||
x = xr * (1 + y) - y * w / 2;
|
||||
i = (x / (1 + h) + sw /2);
|
||||
c = (0 < i && i < length($0)) ? substr($0, i, 1) : "0";
|
||||
y = h - d * c;
|
||||
xl = xr - w * y / (1 + y);
|
||||
if (xl < -hdw || xl >= hdw || xl <= maxxl) {
|
||||
t = rand() * length(ss);
|
||||
c = substr(ss, t, 1);
|
||||
}
|
||||
print s;
|
||||
else {
|
||||
c = substr(s, xl + hdw, 1);
|
||||
maxxl = xl;
|
||||
}
|
||||
s = s c;
|
||||
xr = xr + 1;
|
||||
}
|
||||
print s;
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ for dir in path
|
|||
for f in d = Dir.open(dir)
|
||||
fpath = File.join(dir, f)
|
||||
if File.file?(fpath) && (File.stat(fpath).mode & 022) != 0
|
||||
printf("file %s is writable from other users\n", fpath)
|
||||
printf("file %s is writable from other users\n", fpath)
|
||||
end
|
||||
end
|
||||
d.close
|
||||
|
|
Загрузка…
Ссылка в новой задаче