зеркало из https://github.com/github/ruby.git
lib/webrick/utils.rb: simplify by avoiding fcntl
IO#nonblock= and IO#close_on_exec= methods are simpler-to-use and potentially more portable to for future OSes. IO#nonblock= and IO#close_on_exec= are also smart enough to avoid redundantly setting flags so a syscall may be avoided. These methods could probably be removed entirely and inlined, but it's unclear if there is 3rd-party code which relies on them. * lib/webrick/utils.rb (set_non_blocking): use IO#nonblock= * (set_close_on_exec): use IO#close_on_exec= [Feature #11136] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50523 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
932e916b9e
Коммит
29a914ff2e
|
@ -1,3 +1,9 @@
|
|||
Sun May 17 17:21:29 2015 Eric Wong <e@80x24.org>
|
||||
|
||||
* lib/webrick/utils.rb (set_non_blocking): use IO#nonblock=
|
||||
* (set_close_on_exec): use IO#close_on_exec=
|
||||
[Feature #11136]
|
||||
|
||||
Sun May 17 15:01:26 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* numeric.c (num_positive_p, num_negative_p): add methods
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
# $IPR: utils.rb,v 1.10 2003/02/16 22:22:54 gotoyuzo Exp $
|
||||
|
||||
require 'socket'
|
||||
require 'fcntl'
|
||||
require 'io/nonblock'
|
||||
require 'etc'
|
||||
|
||||
module WEBrick
|
||||
|
@ -17,20 +17,14 @@ module WEBrick
|
|||
##
|
||||
# Sets IO operations on +io+ to be non-blocking
|
||||
def set_non_blocking(io)
|
||||
flag = File::NONBLOCK
|
||||
if defined?(Fcntl::F_GETFL)
|
||||
flag |= io.fcntl(Fcntl::F_GETFL)
|
||||
end
|
||||
io.fcntl(Fcntl::F_SETFL, flag)
|
||||
io.nonblock = true if io.respond_to?(:nonblock=)
|
||||
end
|
||||
module_function :set_non_blocking
|
||||
|
||||
##
|
||||
# Sets the close on exec flag for +io+
|
||||
def set_close_on_exec(io)
|
||||
if defined?(Fcntl::FD_CLOEXEC)
|
||||
io.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC)
|
||||
end
|
||||
io.close_on_exec = true if io.respond_to?(:close_on_exec=)
|
||||
end
|
||||
module_function :set_close_on_exec
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче