summaryrefslogtreecommitdiffstats
path: root/web/server/h2o/libh2o/deps/mruby-io
diff options
context:
space:
mode:
Diffstat (limited to 'web/server/h2o/libh2o/deps/mruby-io')
-rw-r--r--web/server/h2o/libh2o/deps/mruby-io/.gitignore1
-rw-r--r--web/server/h2o/libh2o/deps/mruby-io/.travis.yml2
-rw-r--r--web/server/h2o/libh2o/deps/mruby-io/README.md185
-rw-r--r--web/server/h2o/libh2o/deps/mruby-io/include/mruby/ext/io.h36
-rw-r--r--web/server/h2o/libh2o/deps/mruby-io/mrbgem.rake16
-rw-r--r--web/server/h2o/libh2o/deps/mruby-io/mrblib/file.rb173
-rw-r--r--web/server/h2o/libh2o/deps/mruby-io/mrblib/file_constants.rb29
-rw-r--r--web/server/h2o/libh2o/deps/mruby-io/mrblib/io.rb372
-rw-r--r--web/server/h2o/libh2o/deps/mruby-io/mrblib/kernel.rb15
-rw-r--r--web/server/h2o/libh2o/deps/mruby-io/run_test.rb25
-rw-r--r--web/server/h2o/libh2o/deps/mruby-io/src/file.c325
-rw-r--r--web/server/h2o/libh2o/deps/mruby-io/src/file_test.c365
-rw-r--r--web/server/h2o/libh2o/deps/mruby-io/src/io.c941
-rw-r--r--web/server/h2o/libh2o/deps/mruby-io/src/mruby_io_gem.c20
-rw-r--r--web/server/h2o/libh2o/deps/mruby-io/test/file.rb108
-rw-r--r--web/server/h2o/libh2o/deps/mruby-io/test/file_test.rb95
-rw-r--r--web/server/h2o/libh2o/deps/mruby-io/test/gc_filedes.sh4
-rw-r--r--web/server/h2o/libh2o/deps/mruby-io/test/io.rb416
-rw-r--r--web/server/h2o/libh2o/deps/mruby-io/test/mruby_io_test.c141
19 files changed, 0 insertions, 3269 deletions
diff --git a/web/server/h2o/libh2o/deps/mruby-io/.gitignore b/web/server/h2o/libh2o/deps/mruby-io/.gitignore
deleted file mode 100644
index ceeb05b41..000000000
--- a/web/server/h2o/libh2o/deps/mruby-io/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/tmp
diff --git a/web/server/h2o/libh2o/deps/mruby-io/.travis.yml b/web/server/h2o/libh2o/deps/mruby-io/.travis.yml
deleted file mode 100644
index ffe227284..000000000
--- a/web/server/h2o/libh2o/deps/mruby-io/.travis.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-script:
- - "ruby run_test.rb all test"
diff --git a/web/server/h2o/libh2o/deps/mruby-io/README.md b/web/server/h2o/libh2o/deps/mruby-io/README.md
deleted file mode 100644
index d7fa6945b..000000000
--- a/web/server/h2o/libh2o/deps/mruby-io/README.md
+++ /dev/null
@@ -1,185 +0,0 @@
-mruby-io
-========
-
-IO, File module for mruby
-
-
-## Implemented methods
-
-### IO
- - http://doc.ruby-lang.org/ja/1.9.3/class/IO.html
-
-| method | mruby-io | memo |
-| ------------------------- | -------- | ---- |
-| IO.binread | | |
-| IO.binwrite | | |
-| IO.copy_stream | | |
-| IO.new, IO.for_fd, IO.open | o | |
-| IO.foreach | | |
-| IO.pipe | | |
-| IO.popen | o | |
-| IO.read | o | |
-| IO.readlines | | |
-| IO.select | o | |
-| IO.sysopen | o | |
-| IO.try_convert | | |
-| IO.write | | |
-| IO#<< | | |
-| IO#advise | | |
-| IO#autoclose= | | |
-| IO#autoclose? | | |
-| IO#binmode | | |
-| IO#binmode? | | |
-| IO#bytes | | obsolete |
-| IO#chars | | obsolete |
-| IO#clone, IO#dup | | |
-| IO#close | o | |
-| IO#close_on_exec= | o | |
-| IO#close_on_exec? | o | |
-| IO#close_read | | |
-| IO#close_write | | |
-| IO#closed? | o | |
-| IO#codepoints | | obsolete |
-| IO#each_byte | o | |
-| IO#each_char | o | |
-| IO#each_codepoint | | |
-| IO#each_line | o | |
-| IO#eof, IO#eof? | o | |
-| IO#external_encoding | | |
-| IO#fcntl | | |
-| IO#fdatasync | | |
-| IO#fileno, IO#to_i | o | |
-| IO#flush | o | |
-| IO#fsync | | |
-| IO#getbyte | | |
-| IO#getc | o | |
-| IO#gets | o | |
-| IO#internal_encoding | | |
-| IO#ioctl | | |
-| IO#isatty, IO#tty? | | |
-| IO#lineno | | |
-| IO#lineno= | | |
-| IO#lines | | obsolete |
-| IO#pid | o | |
-| IO#pos, IO#tell | o | |
-| IO#pos= | o | |
-| IO#print | o | |
-| IO#printf | o | |
-| IO#putc | | |
-| IO#puts | o | |
-| IO#read | o | |
-| IO#read_nonblock | | |
-| IO#readbyte | | |
-| IO#readchar | o | |
-| IO#readline | o | |
-| IO#readlines | o | |
-| IO#readpartial | | |
-| IO#reopen | | |
-| IO#rewind | | |
-| IO#seek | o | |
-| IO#set_encoding | | |
-| IO#stat | | |
-| IO#sync | o | |
-| IO#sync= | o | |
-| IO#sysread | o | |
-| IO#sysseek | o | |
-| IO#syswrite | o | |
-| IO#to_io | | |
-| IO#ungetbyte | | |
-| IO#ungetc | o | |
-| IO#write | o | |
-| IO#write_nonblock | | |
-
-### File
- - http://doc.ruby-lang.org/ja/1.9.3/class/File.html
-
-| method | mruby-io | memo |
-| --------------------------- | -------- | ---- |
-| File.absolute_path | | |
-| File.atime | | |
-| File.basename | o | |
-| File.blockdev? | | FileTest |
-| File.chardev? | | FileTest |
-| File.chmod | | |
-| File.chown | | |
-| File.ctime | | |
-| File.delete, File.unlink | o | |
-| File.directory? | o | FileTest |
-| File.dirname | o | |
-| File.executable? | | FileTest |
-| File.executable_real? | | FileTest |
-| File.exist?, exists? | o | FileTest |
-| File.expand_path | o | |
-| File.extname | o | |
-| File.file? | o | FileTest |
-| File.fnmatch, File.fnmatch? | | |
-| File.ftype | | |
-| File.grpowned? | | FileTest |
-| File.identical? | | FileTest |
-| File.join | o | |
-| File.lchmod | | |
-| File.lchown | | |
-| File.link | | |
-| File.lstat | | |
-| File.mtime | | |
-| File.new, File.open | o | |
-| File.owned? | | FileTest |
-| File.path | | |
-| File.pipe? | o | FileTest |
-| File.readable? | | FileTest |
-| File.readable_real? | | FileTest |
-| File.readlink | | |
-| File.realdirpath | | |
-| File.realpath | o | |
-| File.rename | o | |
-| File.setgid? | | FileTest |
-| File.setuid? | | FileTest |
-| File.size | o | |
-| File.size? | o | FileTest |
-| File.socket? | o | FileTest |
-| File.split | | |
-| File.stat | | |
-| File.sticky? | | FileTest |
-| File.symlink | | |
-| File.symlink? | o | FileTest |
-| File.truncate | | |
-| File.umask | o | |
-| File.utime | | |
-| File.world_readable? | | |
-| File.world_writable? | | |
-| File.writable? | | FileTest |
-| File.writable_real? | | FileTest |
-| File.zero? | o | FileTest |
-| File#atime | | |
-| File#chmod | | |
-| File#chown | | |
-| File#ctime | | |
-| File#flock | o | |
-| File#lstat | | |
-| File#mtime | | |
-| File#path, File#to_path | o | |
-| File#size | | |
-| File#truncate | | |
-
-
-## License
-
-Copyright (c) 2013 Internet Initiative Japan Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
diff --git a/web/server/h2o/libh2o/deps/mruby-io/include/mruby/ext/io.h b/web/server/h2o/libh2o/deps/mruby-io/include/mruby/ext/io.h
deleted file mode 100644
index 3107f1053..000000000
--- a/web/server/h2o/libh2o/deps/mruby-io/include/mruby/ext/io.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-** io.h - IO class
-*/
-
-#ifndef MRUBY_IO_H
-#define MRUBY_IO_H
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-struct mrb_io {
- int fd; /* file descriptor, or -1 */
- int fd2; /* file descriptor to write if it's different from fd, or -1 */
- int pid; /* child's pid (for pipes) */
- unsigned int writable:1,
- sync:1;
-};
-
-#define FMODE_READABLE 0x00000001
-#define FMODE_WRITABLE 0x00000002
-#define FMODE_READWRITE (FMODE_READABLE|FMODE_WRITABLE)
-#define FMODE_BINMODE 0x00000004
-#define FMODE_APPEND 0x00000040
-#define FMODE_CREATE 0x00000080
-#define FMODE_TRUNC 0x00000800
-
-#define E_IO_ERROR (mrb_class_get(mrb, "IOError"))
-#define E_EOF_ERROR (mrb_class_get(mrb, "EOFError"))
-
-mrb_value mrb_io_fileno(mrb_state *mrb, mrb_value io);
-
-#if defined(__cplusplus)
-} /* extern "C" { */
-#endif
-#endif /* MRUBY_IO_H */
diff --git a/web/server/h2o/libh2o/deps/mruby-io/mrbgem.rake b/web/server/h2o/libh2o/deps/mruby-io/mrbgem.rake
deleted file mode 100644
index 8120f7832..000000000
--- a/web/server/h2o/libh2o/deps/mruby-io/mrbgem.rake
+++ /dev/null
@@ -1,16 +0,0 @@
-MRuby::Gem::Specification.new('mruby-io') do |spec|
- spec.license = 'MIT'
- spec.authors = 'Internet Initiative Japan Inc.'
-
- spec.cc.include_paths << "#{build.root}/src"
-
- case RUBY_PLATFORM
- when /mingw|mswin/
- spec.linker.libraries += ['Ws2_32']
- #spec.cc.include_paths += ["C:/Windows/system/include"]
- spec.linker.library_paths += ["C:/Windows/system"]
- end
- if build.kind_of?(MRuby::CrossBuild) && %w(x86_64-w64-mingw32 i686-w64-mingw32).include?(build.host_target)
- spec.linker.libraries += ['ws2_32']
- end
-end
diff --git a/web/server/h2o/libh2o/deps/mruby-io/mrblib/file.rb b/web/server/h2o/libh2o/deps/mruby-io/mrblib/file.rb
deleted file mode 100644
index aa0981930..000000000
--- a/web/server/h2o/libh2o/deps/mruby-io/mrblib/file.rb
+++ /dev/null
@@ -1,173 +0,0 @@
-class File < IO
- include Enumerable
-
- class FileError < Exception; end
- class NoFileError < FileError; end
- class UnableToStat < FileError; end
- class PermissionError < FileError; end
-
- attr_accessor :path
-
- def initialize(fd_or_path, mode = "r", perm = 0666)
- if fd_or_path.kind_of? Fixnum
- super(fd_or_path, mode)
- else
- @path = fd_or_path
- fd = IO.sysopen(@path, mode, perm)
- super(fd, mode)
- end
- end
-
- def self.join(*names)
- if names.size == 0
- ""
- elsif names.size == 1
- names[0]
- else
- if names[0][-1] == File::SEPARATOR
- s = names[0][0..-2]
- else
- s = names[0].dup
- end
- (1..names.size-2).each { |i|
- t = names[i]
- if t[0] == File::SEPARATOR and t[-1] == File::SEPARATOR
- t = t[1..-2]
- elsif t[0] == File::SEPARATOR
- t = t[1..-1]
- elsif t[-1] == File::SEPARATOR
- t = t[0..-2]
- end
- s += File::SEPARATOR + t if t != ""
- }
- if names[-1][0] == File::SEPARATOR
- s += File::SEPARATOR + names[-1][1..-1]
- else
- s += File::SEPARATOR + names[-1]
- end
- s
- end
- end
-
- def self.expand_path(path, default_dir = '.')
- def concat_path(path, base_path)
- if path[0] == "/" || path[1] == ':' # Windows root!
- expanded_path = path
- elsif path[0] == "~"
- if (path[1] == "/" || path[1] == nil)
- dir = path[1, path.size]
- home_dir = _gethome
-
- unless home_dir
- raise ArgumentError, "couldn't find HOME environment -- expanding '~'"
- end
-
- expanded_path = home_dir
- expanded_path += dir if dir
- expanded_path += "/"
- else
- splitted_path = path.split("/")
- user = splitted_path[0][1, splitted_path[0].size]
- dir = "/" + splitted_path[1, splitted_path.size].join("/")
-
- home_dir = _gethome(user)
-
- unless home_dir
- raise ArgumentError, "user #{user} doesn't exist"
- end
-
- expanded_path = home_dir
- expanded_path += dir if dir
- expanded_path += "/"
- end
- else
- expanded_path = concat_path(base_path, _getwd)
- expanded_path += "/" + path
- end
-
- expanded_path
- end
-
- expanded_path = concat_path(path, default_dir)
- expand_path_array = []
- while expanded_path.include?('//')
- expanded_path = expanded_path.gsub('//', '/')
- end
-
- if expanded_path == "/"
- expanded_path
- else
- expanded_path.split('/').each do |path_token|
- if path_token == '..'
- if expand_path_array.size > 1
- expand_path_array.pop
- end
- elsif path_token == '.'
- # nothing to do.
- else
- expand_path_array << path_token
- end
- end
-
- expand_path = expand_path_array.join("/")
- expand_path.empty? ? '/' : expand_path
- end
- end
-
- def self.foreach(file)
- if block_given?
- self.open(file) do |f|
- f.each {|l| yield l}
- end
- else
- return self.new(file)
- end
- end
-
- def self.directory?(file)
- FileTest.directory?(file)
- end
-
- def self.exist?(file)
- FileTest.exist?(file)
- end
-
- def self.exists?(file)
- FileTest.exists?(file)
- end
-
- def self.file?(file)
- FileTest.file?(file)
- end
-
- def self.pipe?(file)
- FileTest.pipe?(file)
- end
-
- def self.size(file)
- FileTest.size(file)
- end
-
- def self.size?(file)
- FileTest.size?(file)
- end
-
- def self.socket?(file)
- FileTest.socket?(file)
- end
-
- def self.symlink?(file)
- FileTest.symlink?(file)
- end
-
- def self.zero?(file)
- FileTest.zero?(file)
- end
-
- def self.extname(filename)
- fname = self.basename(filename)
- return '' if fname[0] == '.' || fname.index('.').nil?
- ext = fname.split('.').last
- ext.empty? ? '' : ".#{ext}"
- end
-end
diff --git a/web/server/h2o/libh2o/deps/mruby-io/mrblib/file_constants.rb b/web/server/h2o/libh2o/deps/mruby-io/mrblib/file_constants.rb
deleted file mode 100644
index a68ee2598..000000000
--- a/web/server/h2o/libh2o/deps/mruby-io/mrblib/file_constants.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-class File
- module Constants
- RDONLY = 0
- WRONLY = 1
- RDWR = 2
- NONBLOCK = 4
- APPEND = 8
-
- BINARY = 0
- SYNC = 128
- NOFOLLOW = 256
- CREAT = 512
- TRUNC = 1024
- EXCL = 2048
-
- NOCTTY = 131072
- DSYNC = 4194304
-
- FNM_SYSCASE = 0
- FNM_NOESCAPE = 1
- FNM_PATHNAME = 2
- FNM_DOTMATCH = 4
- FNM_CASEFOLD = 8
- end
-end
-
-class File
- include File::Constants
-end
diff --git a/web/server/h2o/libh2o/deps/mruby-io/mrblib/io.rb b/web/server/h2o/libh2o/deps/mruby-io/mrblib/io.rb
deleted file mode 100644
index c838b96e5..000000000
--- a/web/server/h2o/libh2o/deps/mruby-io/mrblib/io.rb
+++ /dev/null
@@ -1,372 +0,0 @@
-##
-# IO
-
-class IOError < StandardError; end
-class EOFError < IOError; end
-
-class IO
- SEEK_SET = 0
- SEEK_CUR = 1
- SEEK_END = 2
-
- BUF_SIZE = 4096
-
- def self.open(*args, &block)
- io = self.new(*args)
-
- return io unless block
-
- begin
- yield io
- ensure
- begin
- io.close unless io.closed?
- rescue StandardError
- end
- end
- end
-
- def self.popen(command, mode = 'r', &block)
- io = self._popen(command, mode)
- return io unless block
-
- begin
- yield io
- ensure
- begin
- io.close unless io.closed?
- rescue IOError
- # nothing
- end
- end
- end
-
-
- def self.read(path, length=nil, offset=nil, opt=nil)
- if not opt.nil? # 4 arguments
- offset ||= 0
- elsif not offset.nil? # 3 arguments
- if offset.is_a? Hash
- opt = offset
- offset = 0
- else
- opt = {}
- end
- elsif not length.nil? # 2 arguments
- if length.is_a? Hash
- opt = length
- offset = 0
- length = nil
- else
- offset = 0
- opt = {}
- end
- else # only 1 argument
- opt = {}
- offset = 0
- length = nil
- end
-
- str = ""
- fd = -1
- io = nil
- begin
- if path[0] == "|"
- io = IO.popen(path[1..-1], (opt[:mode] || "r"))
- else
- fd = IO.sysopen(path)
- io = IO.open(fd, opt[:mode] || "r")
- end
- io.seek(offset) if offset > 0
- str = io.read(length)
- ensure
- if io
- io.close
- elsif fd != -1
- IO._sysclose(fd)
- end
- end
- str
- end
-
- def flush
- # mruby-io always writes immediately (no output buffer).
- raise IOError, "closed stream" if self.closed?
- self
- end
-
- def write(string)
- str = string.is_a?(String) ? string : string.to_s
- return str.size unless str.size > 0
-
- len = syswrite(str)
- if len != -1
- @pos += len
- return len
- end
-
- raise IOError
- end
-
- def eof?
- return true if @buf && @buf.size > 0
-
- ret = false
- char = ''
-
- begin
- char = sysread(1)
- rescue EOFError => e
- ret = true
- ensure
- _ungets(char)
- end
-
- ret
- end
- alias_method :eof, :eof?
-
- def pos
- raise IOError if closed?
- @pos
- end
- alias_method :tell, :pos
-
- def pos=(i)
- seek(i, SEEK_SET)
- end
-
- def seek(i, whence = SEEK_SET)
- raise IOError if closed?
- @pos = sysseek(i, whence)
- @buf = ''
- 0
- end
-
- def _read_buf
- return @buf if @buf && @buf.size > 0
- @buf = sysread(BUF_SIZE)
- end
-
- def _ungets(substr)
- raise TypeError.new "expect String, got #{substr.class}" unless substr.is_a?(String)
- raise IOError if @pos == 0 || @pos.nil?
- @pos -= substr.size
- if @buf.empty?
- @buf = substr
- else
- @buf = substr + @buf
- end
- nil
- end
-
- def ungetc(char)
- raise IOError if @pos == 0 || @pos.nil?
- _ungets(char)
- nil
- end
-
- def read(length = nil)
- unless length.nil?
- unless length.is_a? Fixnum
- raise TypeError.new "can't convert #{length.class} into Integer"
- end
- if length < 0
- raise ArgumentError.new "negative length: #{length} given"
- end
- if length == 0
- return "" # easy case
- end
- end
-
- array = []
- start_pos = @pos
- while 1
- begin
- _read_buf
- rescue EOFError => e
- array = nil if array.empty? and (not length.nil?) and length != 0
- break
- end
-
- if length && (@pos - start_pos + @buf.size) >= length
- len = length - (@pos - start_pos)
- array.push @buf[0, len]
- @pos += len
- @buf = @buf[len, @buf.size - len]
- break
- else
- array.push @buf
- @pos += @buf.size
- @buf = ''
- end
- end
-
- array && array.join
- end
-
- def readline(arg = $/, limit = nil)
- case arg
- when String
- rs = arg
- when Fixnum
- rs = $/
- limit = arg
- else
- raise ArgumentError
- end
-
- if rs.nil?
- return read
- end
-
- if rs == ""
- rs = $/ + $/
- end
-
- array = []
- start_pos = @pos
- while 1
- begin
- _read_buf
- rescue EOFError => e
- array = nil if array.empty?
- break
- end
-
- if limit && (@pos - start_pos + @buf.size) >= limit
- len = limit - (@pos - start_pos)
- array.push @buf[0, len]
- @pos += len
- @buf = @buf[len, @buf.size - len]
- break
- elsif idx = @buf.index(rs)
- len = idx + rs.size
- array.push @buf[0, len]
- @pos += len
- @buf = @buf[len, @buf.size - len]
- break
- else
- array.push @buf
- @pos += @buf.size
- @buf = ''
- end
- end
-
- raise EOFError.new "end of file reached" if array.nil?
-
- array.join
- end
-
- def gets(*args)
- begin
- readline(*args)
- rescue EOFError => e
- nil
- end
- end
-
- def readchar
- _read_buf
- c = @buf[0]
- @buf = @buf[1, @buf.size]
- @pos += 1
- c
- end
-
- def getc
- begin
- readchar
- rescue EOFError => e
- nil
- end
- end
-
- # 15.2.20.5.3
- def each(&block)
- while line = self.gets
- block.call(line)
- end
- self
- end
-
- # 15.2.20.5.4
- def each_byte(&block)
- while char = self.getc
- block.call(char)
- end
- self
- end
-
- # 15.2.20.5.5
- alias each_line each
-
- alias each_char each_byte
-
- def readlines
- ary = []
- while (line = gets)
- ary << line
- end
- ary
- end
-
- def puts(*args)
- i = 0
- len = args.size
- while i < len
- s = args[i].to_s
- write s
- write "\n" if (s[-1] != "\n")
- i += 1
- end
- write "\n" if len == 0
- nil
- end
-
- def print(*args)
- i = 0
- len = args.size
- while i < len
- write args[i].to_s
- i += 1
- end
- end
-
- def printf(*args)
- write sprintf(*args)
- nil
- end
-
- alias_method :to_i, :fileno
-end
-
-STDIN = IO.open(0, "r")
-STDOUT = IO.open(1, "w")
-STDERR = IO.open(2, "w")
-
-$stdin = STDIN
-$stdout = STDOUT
-$stderr = STDERR
-
-module Kernel
- def print(*args)
- STDOUT.print(*args)
- end
-
- def puts(*args)
- STDOUT.puts(*args)
- end
-
- def printf(*args)
- STDOUT.printf(*args)
- end
-
- def gets(*args)
- STDIN.gets(*args)
- end
-
- def getc(*args)
- STDIN.getc(*args)
- end
-end
diff --git a/web/server/h2o/libh2o/deps/mruby-io/mrblib/kernel.rb b/web/server/h2o/libh2o/deps/mruby-io/mrblib/kernel.rb
deleted file mode 100644
index 484b50160..000000000
--- a/web/server/h2o/libh2o/deps/mruby-io/mrblib/kernel.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-module Kernel
- def self.`(cmd)
- IO.popen(cmd) { |io| io.read }
- end
-
- def open(file, *rest, &block)
- raise ArgumentError unless file.is_a?(String)
-
- if file[0] == "|"
- IO.popen(file[1..-1], *rest, &block)
- else
- File.open(file, *rest, &block)
- end
- end
-end
diff --git a/web/server/h2o/libh2o/deps/mruby-io/run_test.rb b/web/server/h2o/libh2o/deps/mruby-io/run_test.rb
deleted file mode 100644
index 444d18fda..000000000
--- a/web/server/h2o/libh2o/deps/mruby-io/run_test.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env ruby
-#
-# mrbgems test runner
-#
-
-if __FILE__ == $0
- repository, dir = 'https://github.com/mruby/mruby.git', 'tmp/mruby'
- build_args = ARGV
-
- Dir.mkdir 'tmp' unless File.exist?('tmp')
- unless File.exist?(dir)
- system "git clone #{repository} #{dir}"
- end
-
- exit system(%Q[cd #{dir}; MRUBY_CONFIG=#{File.expand_path __FILE__} ruby minirake #{build_args.join(' ')}])
-end
-
-MRuby::Build.new do |conf|
- toolchain :gcc
- conf.gembox 'default'
-
- conf.gem :git => 'https://github.com/iij/mruby-env.git'
-
- conf.gem File.expand_path(File.dirname(__FILE__))
-end
diff --git a/web/server/h2o/libh2o/deps/mruby-io/src/file.c b/web/server/h2o/libh2o/deps/mruby-io/src/file.c
deleted file mode 100644
index feb8558ed..000000000
--- a/web/server/h2o/libh2o/deps/mruby-io/src/file.c
+++ /dev/null
@@ -1,325 +0,0 @@
-/*
-** file.c - File class
-*/
-
-#include "mruby.h"
-#include "mruby/class.h"
-#include "mruby/data.h"
-#include "mruby/string.h"
-#include "mruby/ext/io.h"
-
-#if MRUBY_RELEASE_NO < 10000
-#include "error.h"
-#else
-#include "mruby/error.h"
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include <fcntl.h>
-#include <limits.h>
-
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#if defined(_WIN32) || defined(_WIN64)
- #define NULL_FILE "NUL"
- #define UNLINK _unlink
- #define GETCWD _getcwd
- #define CHMOD(a, b) 0
- #define MAXPATHLEN 1024
- #if !defined(PATH_MAX)
- #define PATH_MAX _MAX_PATH
- #endif
- #define realpath(N,R) _fullpath((R),(N),_MAX_PATH)
- #include <direct.h>
-#else
- #define NULL_FILE "/dev/null"
- #include <unistd.h>
- #define UNLINK unlink
- #define GETCWD getcwd
- #define CHMOD(a, b) chmod(a,b)
- #include <sys/file.h>
- #include <libgen.h>
- #include <sys/param.h>
- #include <pwd.h>
-#endif
-
-#if defined(_WIN32) || defined(_WIN64)
- #define PATH_SEPARATOR ";"
- #define FILE_SEPARATOR "\\"
-#else
- #define PATH_SEPARATOR ":"
- #define FILE_SEPARATOR "/"
-#endif
-
-#ifndef LOCK_SH
-#define LOCK_SH 1
-#endif
-#ifndef LOCK_EX
-#define LOCK_EX 2
-#endif
-#ifndef LOCK_NB
-#define LOCK_NB 4
-#endif
-#ifndef LOCK_UN
-#define LOCK_UN 8
-#endif
-
-#define STAT(p, s) stat(p, s)
-
-
-mrb_value
-mrb_file_s_umask(mrb_state *mrb, mrb_value klass)
-{
-#if defined(_WIN32) || defined(_WIN64)
- /* nothing to do on windows */
- return mrb_fixnum_value(0);
-
-#else
- mrb_int mask, omask;
- if (mrb_get_args(mrb, "|i", &mask) == 0) {
- omask = umask(0);
- umask(omask);
- } else {
- omask = umask(mask);
- }
- return mrb_fixnum_value(omask);
-#endif
-}
-
-static mrb_value
-mrb_file_s_unlink(mrb_state *mrb, mrb_value obj)
-{
- mrb_value *argv;
- mrb_value pathv;
- mrb_int argc, i;
- const char *path;
-
- mrb_get_args(mrb, "*", &argv, &argc);
- for (i = 0; i < argc; i++) {
- pathv = mrb_convert_type(mrb, argv[i], MRB_TT_STRING, "String", "to_str");
- path = mrb_string_value_cstr(mrb, &pathv);
- if (UNLINK(path) < 0) {
- mrb_sys_fail(mrb, path);
- }
- }
- return mrb_fixnum_value(argc);
-}
-
-static mrb_value
-mrb_file_s_rename(mrb_state *mrb, mrb_value obj)
-{
- mrb_value from, to;
- const char *src, *dst;
-
- mrb_get_args(mrb, "SS", &from, &to);
- src = mrb_string_value_cstr(mrb, &from);
- dst = mrb_string_value_cstr(mrb, &to);
- if (rename(src, dst) < 0) {
- if (CHMOD(dst, 0666) == 0 && UNLINK(dst) == 0 && rename(src, dst) == 0) {
- return mrb_fixnum_value(0);
- }
- mrb_sys_fail(mrb, mrb_str_to_cstr(mrb, mrb_format(mrb, "(%S, %S)", from, to)));
- }
- return mrb_fixnum_value(0);
-}
-
-static mrb_value
-mrb_file_dirname(mrb_state *mrb, mrb_value klass)
-{
- #if defined(_WIN32) || defined(_WIN64)
- char dname[_MAX_DIR], vname[_MAX_DRIVE];
- char buffer[_MAX_DRIVE + _MAX_DIR];
- char *path;
- mrb_value s;
- mrb_get_args(mrb, "S", &s);
- path = mrb_str_to_cstr(mrb, s);
- _splitpath((const char*)path, vname, dname, NULL, NULL);
- snprintf(buffer, _MAX_DRIVE + _MAX_DIR, "%s%s", vname, dname);
- return mrb_str_new_cstr(mrb, buffer);
- #else
- char *dname, *path;
- mrb_value s;
- mrb_get_args(mrb, "S", &s);
- path = mrb_str_to_cstr(mrb, s);
-
- if ((dname = dirname(path)) == NULL) {
- mrb_sys_fail(mrb, "dirname");
- }
- #endif
- return mrb_str_new_cstr(mrb, dname);
-}
-
-static mrb_value
-mrb_file_basename(mrb_state *mrb, mrb_value klass)
-{
- #if defined(_WIN32) || defined(_WIN64)
- char bname[_MAX_DIR];
- char extname[_MAX_EXT];
- char *path;
- char buffer[_MAX_DIR + _MAX_EXT];
- mrb_value s;
- mrb_get_args(mrb, "S", &s);
- path = mrb_str_to_cstr(mrb, s);
- _splitpath((const char*)path, NULL, NULL, bname, extname);
- snprintf(buffer, _MAX_DIR + _MAX_EXT, "%s%s", bname, extname);
- return mrb_str_new_cstr(mrb, buffer);
- #else
- char *bname, *path;
- mrb_value s;
- mrb_get_args(mrb, "S", &s);
- path = mrb_str_to_cstr(mrb, s);
- if ((bname = basename(path)) == NULL) {
- mrb_sys_fail(mrb, "basename");
- }
- return mrb_str_new_cstr(mrb, bname);
- #endif
-}
-
-static mrb_value
-mrb_file_realpath(mrb_state *mrb, mrb_value klass)
-{
- mrb_value pathname, dir_string, s, result;
- int argc;
- char *cpath;
-
- argc = mrb_get_args(mrb, "S|S", &pathname, &dir_string);
- if (argc == 2) {
- s = mrb_str_dup(mrb, dir_string);
- s = mrb_str_append(mrb, s, mrb_str_new_cstr(mrb, FILE_SEPARATOR));
- s = mrb_str_append(mrb, s, pathname);
- pathname = s;
- }
- cpath = mrb_str_to_cstr(mrb, pathname);
- result = mrb_str_buf_new(mrb, PATH_MAX);
- if (realpath(cpath, RSTRING_PTR(result)) == NULL)
- mrb_sys_fail(mrb, cpath);
- mrb_str_resize(mrb, result, strlen(RSTRING_PTR(result)));
- return result;
-}
-
-mrb_value
-mrb_file__getwd(mrb_state *mrb, mrb_value klass)
-{
- mrb_value path;
-
- path = mrb_str_buf_new(mrb, MAXPATHLEN);
- if (GETCWD(RSTRING_PTR(path), MAXPATHLEN) == NULL) {
- mrb_sys_fail(mrb, "getcwd(2)");
- }
- mrb_str_resize(mrb, path, strlen(RSTRING_PTR(path)));
- return path;
-}
-
-static int
-mrb_file_is_absolute_path(const char *path)
-{
- return (path[0] == '/');
-}
-
-static mrb_value
-mrb_file__gethome(mrb_state *mrb, mrb_value klass)
-{
-#ifndef _WIN32
- mrb_value username;
- int argc;
- char *home;
-
- argc = mrb_get_args(mrb, "|S", &username);
- if (argc == 0) {
- home = getenv("HOME");
- if (home == NULL) {
- return mrb_nil_value();
- }
- if (!mrb_file_is_absolute_path(home)) {
- mrb_raise(mrb, E_ARGUMENT_ERROR, "non-absolute home");
- }
- } else {
- const char *cuser = mrb_str_to_cstr(mrb, username);
- struct passwd *pwd = getpwnam(cuser);
- if (pwd == NULL) {
- return mrb_nil_value();
- }
- home = pwd->pw_dir;
- if (!mrb_file_is_absolute_path(home)) {
- mrb_raisef(mrb, E_ARGUMENT_ERROR, "non-absolute home of ~%S", username);
- }
- }
- return mrb_str_new_cstr(mrb, home);
-#else
-
- return mrb_nil_value();
-#endif
-}
-
-#ifndef _WIN32
-mrb_value
-mrb_file_flock(mrb_state *mrb, mrb_value self)
-{
-#if defined(sun)
- mrb_raise(mrb, E_RUNTIME_ERROR, "flock is not supported on Illumos/Solaris");
-#else
- mrb_int operation;
- int fd;
-
- mrb_get_args(mrb, "i", &operation);
- fd = mrb_fixnum(mrb_io_fileno(mrb, self));
-
- while (flock(fd, operation) == -1) {
- switch (errno) {
- case EINTR:
- /* retry */
- break;
- case EAGAIN: /* NetBSD */
-#if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN
- case EWOULDBLOCK: /* FreeBSD OpenBSD Linux */
-#endif
- if (operation & LOCK_NB) {
- return mrb_false_value();
- }
- /* FALLTHRU - should not happen */
- default:
- mrb_sys_fail(mrb, "flock failed");
- break;
- }
- }
-#endif
- return mrb_fixnum_value(0);
-}
-#endif
-
-void
-mrb_init_file(mrb_state *mrb)
-{
- struct RClass *io, *file, *cnst;
-
- io = mrb_class_get(mrb, "IO");
- file = mrb_define_class(mrb, "File", io);
- MRB_SET_INSTANCE_TT(file, MRB_TT_DATA);
- mrb_define_class_method(mrb, file, "umask", mrb_file_s_umask, MRB_ARGS_REQ(1));
- mrb_define_class_method(mrb, file, "delete", mrb_file_s_unlink, MRB_ARGS_ANY());
- mrb_define_class_method(mrb, file, "unlink", mrb_file_s_unlink, MRB_ARGS_ANY());
- mrb_define_class_method(mrb, file, "rename", mrb_file_s_rename, MRB_ARGS_REQ(2));
-
- mrb_define_class_method(mrb, file, "dirname", mrb_file_dirname, MRB_ARGS_REQ(1));
- mrb_define_class_method(mrb, file, "basename", mrb_file_basename, MRB_ARGS_REQ(1));
- mrb_define_class_method(mrb, file, "realpath", mrb_file_realpath, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
- mrb_define_class_method(mrb, file, "_getwd", mrb_file__getwd, MRB_ARGS_NONE());
- mrb_define_class_method(mrb, file, "_gethome", mrb_file__gethome, MRB_ARGS_OPT(1));
-
- #ifndef _WIN32
- mrb_define_method(mrb, file, "flock", mrb_file_flock, MRB_ARGS_REQ(1));
- #endif
-
- cnst = mrb_define_module_under(mrb, file, "Constants");
- mrb_define_const(mrb, cnst, "LOCK_SH", mrb_fixnum_value(LOCK_SH));
- mrb_define_const(mrb, cnst, "LOCK_EX", mrb_fixnum_value(LOCK_EX));
- mrb_define_const(mrb, cnst, "LOCK_UN", mrb_fixnum_value(LOCK_UN));
- mrb_define_const(mrb, cnst, "LOCK_NB", mrb_fixnum_value(LOCK_NB));
- mrb_define_const(mrb, cnst, "SEPARATOR", mrb_str_new_cstr(mrb, FILE_SEPARATOR));
- mrb_define_const(mrb, cnst, "PATH_SEPARATOR", mrb_str_new_cstr(mrb, PATH_SEPARATOR));
- mrb_define_const(mrb, cnst, "NULL", mrb_str_new_cstr(mrb, NULL_FILE));
-
-}
diff --git a/web/server/h2o/libh2o/deps/mruby-io/src/file_test.c b/web/server/h2o/libh2o/deps/mruby-io/src/file_test.c
deleted file mode 100644
index 6c380c4a5..000000000
--- a/web/server/h2o/libh2o/deps/mruby-io/src/file_test.c
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
-** file.c - File class
-*/
-
-#include "mruby.h"
-#include "mruby/class.h"
-#include "mruby/data.h"
-#include "mruby/string.h"
-#include "mruby/ext/io.h"
-
-#if MRUBY_RELEASE_NO < 10000
-#include "error.h"
-#else
-#include "mruby/error.h"
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#if defined(_WIN32) || defined(_WIN64)
- #define LSTAT stat
- #include <winsock.h>
-#else
- #define LSTAT lstat
- #include <sys/file.h>
- #include <sys/param.h>
- #include <sys/wait.h>
- #include <libgen.h>
- #include <pwd.h>
- #include <unistd.h>
-#endif
-
-#include <fcntl.h>
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-extern struct mrb_data_type mrb_io_type;
-
-static int
-mrb_stat0(mrb_state *mrb, mrb_value obj, struct stat *st, int do_lstat)
-{
- mrb_value tmp;
- mrb_value io_klass, str_klass;
-
- io_klass = mrb_obj_value(mrb_class_get(mrb, "IO"));
- str_klass = mrb_obj_value(mrb_class_get(mrb, "String"));
-
- tmp = mrb_funcall(mrb, obj, "is_a?", 1, io_klass);
- if (mrb_test(tmp)) {
- struct mrb_io *fptr;
- fptr = (struct mrb_io *)mrb_get_datatype(mrb, obj, &mrb_io_type);
-
- if (fptr && fptr->fd >= 0) {
- return fstat(fptr->fd, st);
- }
-
- mrb_raise(mrb, E_IO_ERROR, "closed stream");
- return -1;
- }
-
- tmp = mrb_funcall(mrb, obj, "is_a?", 1, str_klass);
- if (mrb_test(tmp)) {
- if (do_lstat) {
- return LSTAT(mrb_str_to_cstr(mrb, obj), st);
- } else {
- return stat(mrb_str_to_cstr(mrb, obj), st);
- }
- }
-
- return -1;
-}
-
-static int
-mrb_stat(mrb_state *mrb, mrb_value obj, struct stat *st)
-{
- return mrb_stat0(mrb, obj, st, 0);
-}
-
-static int
-mrb_lstat(mrb_state *mrb, mrb_value obj, struct stat *st)
-{
- return mrb_stat0(mrb, obj, st, 1);
-}
-
-/*
- * Document-method: directory?
- *
- * call-seq:
- * File.directory?(file_name) -> true or false
- *
- * Returns <code>true</code> if the named file is a directory,
- * or a symlink that points at a directory, and <code>false</code>
- * otherwise.
- *
- * File.directory?(".")
- */
-
-mrb_value
-mrb_filetest_s_directory_p(mrb_state *mrb, mrb_value klass)
-{
-#ifndef S_ISDIR
-# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
-#endif
-
- struct stat st;
- mrb_value obj;
-
- mrb_get_args(mrb, "o", &obj);
-
- if (mrb_stat(mrb, obj, &st) < 0)
- return mrb_false_value();
- if (S_ISDIR(st.st_mode))
- return mrb_true_value();
-
- return mrb_false_value();
-}
-
-/*
- * call-seq:
- * File.pipe?(file_name) -> true or false
- *
- * Returns <code>true</code> if the named file is a pipe.
- */
-
-mrb_value
-mrb_filetest_s_pipe_p(mrb_state *mrb, mrb_value klass)
-{
-#ifdef S_IFIFO
-# ifndef S_ISFIFO
-# define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
-# endif
-
- struct stat st;
- mrb_value obj;
-
- mrb_get_args(mrb, "o", &obj);
-
- if (mrb_stat(mrb, obj, &st) < 0)
- return mrb_false_value();
- if (S_ISFIFO(st.st_mode))
- return mrb_true_value();
-
-#endif
- return mrb_false_value();
-}
-
-/*
- * call-seq:
- * File.symlink?(file_name) -> true or false
- *
- * Returns <code>true</code> if the named file is a symbolic link.
- */
-
-mrb_value
-mrb_filetest_s_symlink_p(mrb_state *mrb, mrb_value klass)
-{
-#ifndef S_ISLNK
-# ifdef _S_ISLNK
-# define S_ISLNK(m) _S_ISLNK(m)
-# else
-# ifdef _S_IFLNK
-# define S_ISLNK(m) (((m) & S_IFMT) == _S_IFLNK)
-# else
-# ifdef S_IFLNK
-# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
-# endif
-# endif
-# endif
-#endif
-
-#ifdef S_ISLNK
- struct stat st;
- mrb_value obj;
-
- mrb_get_args(mrb, "o", &obj);
-
- if (mrb_lstat(mrb, obj, &st) == -1)
- return mrb_false_value();
- if (S_ISLNK(st.st_mode))
- return mrb_true_value();
-#endif
-
- return mrb_false_value();
-}
-
-/*
- * call-seq:
- * File.socket?(file_name) -> true or false
- *
- * Returns <code>true</code> if the named file is a socket.
- */
-
-mrb_value
-mrb_filetest_s_socket_p(mrb_state *mrb, mrb_value klass)
-{
-#ifndef S_ISSOCK
-# ifdef _S_ISSOCK
-# define S_ISSOCK(m) _S_ISSOCK(m)
-# else
-# ifdef _S_IFSOCK
-# define S_ISSOCK(m) (((m) & S_IFMT) == _S_IFSOCK)
-# else
-# ifdef S_IFSOCK
-# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
-# endif
-# endif
-# endif
-#endif
-
-#ifdef S_ISSOCK
- struct stat st;
- mrb_value obj;
-
- mrb_get_args(mrb, "o", &obj);
-
- if (mrb_stat(mrb, obj, &st) < 0)
- return mrb_false_value();
- if (S_ISSOCK(st.st_mode))
- return mrb_true_value();
-#endif
-
- return mrb_false_value();
-}
-
-/*
- * call-seq:
- * File.exist?(file_name) -> true or false
- * File.exists?(file_name) -> true or false
- *
- * Return <code>true</code> if the named file exists.
- */
-
-mrb_value
-mrb_filetest_s_exist_p(mrb_state *mrb, mrb_value klass)
-{
- struct stat st;
- mrb_value obj;
-
- mrb_get_args(mrb, "o", &obj);
- if (mrb_stat(mrb, obj, &st) < 0)
- return mrb_false_value();
-
- return mrb_true_value();
-}
-
-/*
- * call-seq:
- * File.file?(file_name) -> true or false
- *
- * Returns <code>true</code> if the named file exists and is a
- * regular file.
- */
-
-mrb_value
-mrb_filetest_s_file_p(mrb_state *mrb, mrb_value klass)
-{
-#ifndef S_ISREG
-# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
-#endif
-
- struct stat st;
- mrb_value obj;
-
- mrb_get_args(mrb, "o", &obj);
-
- if (mrb_stat(mrb, obj, &st) < 0)
- return mrb_false_value();
- if (S_ISREG(st.st_mode))
- return mrb_true_value();
-
- return mrb_false_value();
-}
-
-/*
- * call-seq:
- * File.zero?(file_name) -> true or false
- *
- * Returns <code>true</code> if the named file exists and has
- * a zero size.
- */
-
-mrb_value
-mrb_filetest_s_zero_p(mrb_state *mrb, mrb_value klass)
-{
- struct stat st;
- mrb_value obj;
-
- mrb_get_args(mrb, "o", &obj);
-
- if (mrb_stat(mrb, obj, &st) < 0)
- return mrb_false_value();
- if (st.st_size == 0)
- return mrb_true_value();
-
- return mrb_false_value();
-}
-
-/*
- * call-seq:
- * File.size(file_name) -> integer
- *
- * Returns the size of <code>file_name</code>.
- *
- * _file_name_ can be an IO object.
- */
-
-mrb_value
-mrb_filetest_s_size(mrb_state *mrb, mrb_value klass)
-{
- struct stat st;
- mrb_value obj;
-
- mrb_get_args(mrb, "o", &obj);
-
- if (mrb_stat(mrb, obj, &st) < 0)
- mrb_sys_fail(mrb, "mrb_stat");
-
- return mrb_fixnum_value(st.st_size);
-}
-
-/*
- * call-seq:
- * File.size?(file_name) -> Integer or nil
- *
- * Returns +nil+ if +file_name+ doesn't exist or has zero size, the size of the
- * file otherwise.
- */
-
-mrb_value
-mrb_filetest_s_size_p(mrb_state *mrb, mrb_value klass)
-{
- struct stat st;
- mrb_value obj;
-
- mrb_get_args(mrb, "o", &obj);
-
- if (mrb_stat(mrb, obj, &st) < 0)
- return mrb_nil_value();
- if (st.st_size == 0)
- return mrb_nil_value();
-
- return mrb_fixnum_value(st.st_size);
-}
-
-void
-mrb_init_file_test(mrb_state *mrb)
-{
- struct RClass *f;
-
- f = mrb_define_class(mrb, "FileTest", mrb->object_class);
-
- mrb_define_class_method(mrb, f, "directory?", mrb_filetest_s_directory_p, MRB_ARGS_REQ(1));
- mrb_define_class_method(mrb, f, "exist?", mrb_filetest_s_exist_p, MRB_ARGS_REQ(1));
- mrb_define_class_method(mrb, f, "exists?", mrb_filetest_s_exist_p, MRB_ARGS_REQ(1));
- mrb_define_class_method(mrb, f, "file?", mrb_filetest_s_file_p, MRB_ARGS_REQ(1));
- mrb_define_class_method(mrb, f, "pipe?", mrb_filetest_s_pipe_p, MRB_ARGS_REQ(1));
- mrb_define_class_method(mrb, f, "size", mrb_filetest_s_size, MRB_ARGS_REQ(1));
- mrb_define_class_method(mrb, f, "size?", mrb_filetest_s_size_p, MRB_ARGS_REQ(1));
- mrb_define_class_method(mrb, f, "socket?", mrb_filetest_s_socket_p, MRB_ARGS_REQ(1));
- mrb_define_class_method(mrb, f, "symlink?", mrb_filetest_s_symlink_p, MRB_ARGS_REQ(1));
- mrb_define_class_method(mrb, f, "zero?", mrb_filetest_s_zero_p, MRB_ARGS_REQ(1));
-}
diff --git a/web/server/h2o/libh2o/deps/mruby-io/src/io.c b/web/server/h2o/libh2o/deps/mruby-io/src/io.c
deleted file mode 100644
index 1d2f98f3c..000000000
--- a/web/server/h2o/libh2o/deps/mruby-io/src/io.c
+++ /dev/null
@@ -1,941 +0,0 @@
-/*
-** io.c - IO class
-*/
-
-#include "mruby.h"
-#include "mruby/array.h"
-#include "mruby/class.h"
-#include "mruby/data.h"
-#include "mruby/hash.h"
-#include "mruby/string.h"
-#include "mruby/variable.h"
-#include "mruby/ext/io.h"
-
-#if MRUBY_RELEASE_NO < 10000
-#include "error.h"
-#else
-#include "mruby/error.h"
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#if defined(_WIN32) || defined(_WIN64)
- #include <winsock.h>
- #include <io.h>
- #define open _open
- #define close _close
- #define read _read
- #define write _write
- #define lseek _lseek
-#else
- #include <sys/wait.h>
- #include <unistd.h>
-#endif
-
-#include <fcntl.h>
-
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-
-
-static int mrb_io_modestr_to_flags(mrb_state *mrb, const char *modestr);
-static int mrb_io_flags_to_modenum(mrb_state *mrb, int flags);
-static void fptr_finalize(mrb_state *mrb, struct mrb_io *fptr, int noraise);
-
-#if MRUBY_RELEASE_NO < 10000
-static struct RClass *
-mrb_module_get(mrb_state *mrb, const char *name)
-{
- return mrb_class_get(mrb, name);
-}
-#endif
-
-static int
-mrb_io_modestr_to_flags(mrb_state *mrb, const char *mode)
-{
- int flags = 0;
- const char *m = mode;
-
- switch (*m++) {
- case 'r':
- flags |= FMODE_READABLE;
- break;
- case 'w':
- flags |= FMODE_WRITABLE | FMODE_CREATE | FMODE_TRUNC;
- break;
- case 'a':
- flags |= FMODE_WRITABLE | FMODE_APPEND | FMODE_CREATE;
- break;
- default:
- mrb_raisef(mrb, E_ARGUMENT_ERROR, "illegal access mode %S", mrb_str_new_cstr(mrb, mode));
- }
-
- while (*m) {
- switch (*m++) {
- case 'b':
- flags |= FMODE_BINMODE;
- break;
- case '+':
- flags |= FMODE_READWRITE;
- break;
- case ':':
- /* XXX: PASSTHROUGH*/
- default:
- mrb_raisef(mrb, E_ARGUMENT_ERROR, "illegal access mode %S", mrb_str_new_cstr(mrb, mode));
- }
- }
-
- return flags;
-}
-
-static int
-mrb_io_flags_to_modenum(mrb_state *mrb, int flags)
-{
- int modenum = 0;
-
- switch(flags & (FMODE_READABLE|FMODE_WRITABLE|FMODE_READWRITE)) {
- case FMODE_READABLE:
- modenum = O_RDONLY;
- break;
- case FMODE_WRITABLE:
- modenum = O_WRONLY;
- break;
- case FMODE_READWRITE:
- modenum = O_RDWR;
- break;
- }
-
- if (flags & FMODE_APPEND) {
- modenum |= O_APPEND;
- }
- if (flags & FMODE_TRUNC) {
- modenum |= O_TRUNC;
- }
- if (flags & FMODE_CREATE) {
- modenum |= O_CREAT;
- }
-#ifdef O_BINARY
- if (flags & FMODE_BINMODE) {
- modenum |= O_BINARY;
- }
-#endif
-
- return modenum;
-}
-
-void
-mrb_fd_cloexec(mrb_state *mrb, int fd)
-{
- int flags, flags2;
-
-#if defined(F_GETFD) && defined(F_SETFD) && defined(FD_CLOEXEC)
- flags = fcntl(fd, F_GETFD);
- if (flags == -1) {
- mrb_sys_fail(mrb, "fcntl");
- }
- if (fd <= 2) {
- flags2 = flags & ~FD_CLOEXEC; /* Clear CLOEXEC for standard file descriptors: 0, 1, 2. */
- }
- else {
- flags2 = flags | FD_CLOEXEC; /* Set CLOEXEC for non-standard file descriptors: 3, 4, 5, ... */
- }
- if (flags != flags2) {
- if (fcntl(fd, F_SETFD, flags2) == -1) {
- mrb_sys_fail(mrb, "fcntl");
- }
- }
-#endif
-}
-
-#ifndef _WIN32
-static int
-mrb_proc_exec(const char *pname)
-{
- const char *s;
- s = pname;
-
- while (*s == ' ' || *s == '\t' || *s == '\n')
- s++;
-
- if (!*s) {
- errno = ENOENT;
- return -1;
- }
-
- execl("/bin/sh", "sh", "-c", pname, (char *)NULL);
- return -1;
-}
-#endif
-
-static void
-mrb_io_free(mrb_state *mrb, void *ptr)
-{
- struct mrb_io *io = (struct mrb_io *)ptr;
- if (io != NULL) {
- fptr_finalize(mrb, io, TRUE);
- mrb_free(mrb, io);
- }
-}
-
-struct mrb_data_type mrb_io_type = { "IO", mrb_io_free };
-
-static struct mrb_io *
-mrb_io_alloc(mrb_state *mrb)
-{
- struct mrb_io *fptr;
-
- fptr = (struct mrb_io *)mrb_malloc(mrb, sizeof(struct mrb_io));
- fptr->fd = -1;
- fptr->fd2 = -1;
- fptr->pid = 0;
- fptr->writable = 0;
- fptr->sync = 0;
- return fptr;
-}
-
-#ifndef NOFILE
-#define NOFILE 64
-#endif
-
-#ifndef _WIN32
-mrb_value
-mrb_io_s_popen(mrb_state *mrb, mrb_value klass)
-{
- mrb_value cmd, io, result;
- mrb_value mode = mrb_str_new_cstr(mrb, "r");
- mrb_value opt = mrb_hash_new(mrb);
-
- struct mrb_io *fptr;
- const char *pname;
- int pid, flags, fd, write_fd = -1;
- int pr[2] = { -1, -1 };
- int pw[2] = { -1, -1 };
- int doexec;
- int saved_errno;
-
- mrb_get_args(mrb, "S|SH", &cmd, &mode, &opt);
- io = mrb_obj_value(mrb_data_object_alloc(mrb, mrb_class_ptr(klass), NULL, &mrb_io_type));
-
- pname = mrb_string_value_cstr(mrb, &cmd);
- flags = mrb_io_modestr_to_flags(mrb, mrb_string_value_cstr(mrb, &mode));
-
- doexec = (strcmp("-", pname) != 0);
-
- if (flags & FMODE_READABLE) {
- if (pipe(pr) == -1) {
- mrb_sys_fail(mrb, "pipe");
- }
- mrb_fd_cloexec(mrb, pr[0]);
- mrb_fd_cloexec(mrb, pr[1]);
- }
-
- if (flags & FMODE_WRITABLE) {
- if (pipe(pw) == -1) {
- if (pr[0] != -1) close(pr[0]);
- if (pr[1] != -1) close(pr[1]);
- mrb_sys_fail(mrb, "pipe");
- }
- mrb_fd_cloexec(mrb, pw[0]);
- mrb_fd_cloexec(mrb, pw[1]);
- }
-
- if (!doexec) {
- // XXX
- fflush(stdin);
- fflush(stdout);
- fflush(stderr);
- }
-
- result = mrb_nil_value();
- switch (pid = fork()) {
- case 0: /* child */
- if (flags & FMODE_READABLE) {
- close(pr[0]);
- if (pr[1] != 1) {
- dup2(pr[1], 1);
- close(pr[1]);
- }
- }
- if (flags & FMODE_WRITABLE) {
- close(pw[1]);
- if (pw[0] != 0) {
- dup2(pw[0], 0);
- close(pw[0]);
- }
- }
- if (doexec) {
- for (fd = 3; fd < NOFILE; fd++) {
- close(fd);
- }
- mrb_proc_exec(pname);
- mrb_raisef(mrb, E_IO_ERROR, "command not found: %S", cmd);
- _exit(127);
- }
- result = mrb_nil_value();
- break;
-
- default: /* parent */
- if ((flags & FMODE_READABLE) && (flags & FMODE_WRITABLE)) {
- close(pr[1]);
- fd = pr[0];
- close(pw[0]);
- write_fd = pw[1];
- } else if (flags & FMODE_READABLE) {
- close(pr[1]);
- fd = pr[0];
- } else {
- close(pw[0]);
- fd = pw[1];
- }
-
- mrb_iv_set(mrb, io, mrb_intern_cstr(mrb, "@buf"), mrb_str_new_cstr(mrb, ""));
- mrb_iv_set(mrb, io, mrb_intern_cstr(mrb, "@pos"), mrb_fixnum_value(0));
-
- fptr = mrb_io_alloc(mrb);
- fptr->fd = fd;
- fptr->fd2 = write_fd;
- fptr->pid = pid;
- fptr->writable = ((flags & FMODE_WRITABLE) != 0);
- fptr->sync = 0;
-
- DATA_TYPE(io) = &mrb_io_type;
- DATA_PTR(io) = fptr;
- result = io;
- break;
-
- case -1: /* error */
- saved_errno = errno;
- if (flags & FMODE_READABLE) {
- close(pr[0]);
- close(pr[1]);
- }
- if (flags & FMODE_WRITABLE) {
- close(pw[0]);
- close(pw[1]);
- }
- errno = saved_errno;
- mrb_sys_fail(mrb, "pipe_open failed.");
- break;
- }
- return result;
-}
-#endif
-
-mrb_value
-mrb_io_initialize(mrb_state *mrb, mrb_value io)
-{
- struct mrb_io *fptr;
- mrb_int fd;
- mrb_value mode, opt;
- int flags;
-
- mode = opt = mrb_nil_value();
-
- mrb_get_args(mrb, "i|So", &fd, &mode, &opt);
- if (mrb_nil_p(mode)) {
- mode = mrb_str_new_cstr(mrb, "r");
- }
- if (mrb_nil_p(opt)) {
- opt = mrb_hash_new(mrb);
- }
-
- flags = mrb_io_modestr_to_flags(mrb, mrb_string_value_cstr(mrb, &mode));
-
- mrb_iv_set(mrb, io, mrb_intern_cstr(mrb, "@buf"), mrb_str_new_cstr(mrb, ""));
- mrb_iv_set(mrb, io, mrb_intern_cstr(mrb, "@pos"), mrb_fixnum_value(0));
-
- fptr = DATA_PTR(io);
- if (fptr != NULL) {
- fptr_finalize(mrb, fptr, 0);
- mrb_free(mrb, fptr);
- }
- fptr = mrb_io_alloc(mrb);
-
- DATA_TYPE(io) = &mrb_io_type;
- DATA_PTR(io) = fptr;
-
- fptr->fd = fd;
- fptr->writable = ((flags & FMODE_WRITABLE) != 0);
- fptr->sync = 0;
- return io;
-}
-
-static void
-fptr_finalize(mrb_state *mrb, struct mrb_io *fptr, int noraise)
-{
- int n = 0;
-
- if (fptr == NULL) {
- return;
- }
-
- if (fptr->fd > 2) {
- n = close(fptr->fd);
- if (n == 0) {
- fptr->fd = -1;
- }
- }
- if (fptr->fd2 > 2) {
- n = close(fptr->fd2);
- if (n == 0) {
- fptr->fd2 = -1;
- }
- }
-
-#if !defined(_WIN32) && !defined(_WIN64)
- if (fptr->pid != 0) {
- pid_t pid;
- do {
- pid = waitpid(fptr->pid, NULL, 0);
- } while (pid == -1 && errno == EINTR);
- }
-#endif
-
- if (!noraise && n != 0) {
- mrb_sys_fail(mrb, "fptr_finalize failed.");
- }
-}
-
-mrb_value
-mrb_io_s_for_fd(mrb_state *mrb, mrb_value klass)
-{
- struct RClass *c = mrb_class_ptr(klass);
- enum mrb_vtype ttype = MRB_INSTANCE_TT(c);
- mrb_value obj;
-
- /* copied from mrb_instance_alloc() */
- if (ttype == 0) ttype = MRB_TT_OBJECT;
- obj = mrb_obj_value((struct RObject*)mrb_obj_alloc(mrb, ttype, c));
- return mrb_io_initialize(mrb, obj);
-}
-
-mrb_value
-mrb_io_s_sysclose(mrb_state *mrb, mrb_value klass)
-{
- mrb_int fd;
- mrb_get_args(mrb, "i", &fd);
- if (close(fd) == -1) {
- mrb_sys_fail(mrb, "close");
- }
- return mrb_fixnum_value(0);
-}
-
-int
-mrb_cloexec_open(mrb_state *mrb, const char *pathname, mrb_int flags, mrb_int mode)
-{
- int fd, retry = FALSE;
-
-#ifdef O_CLOEXEC
- /* O_CLOEXEC is available since Linux 2.6.23. Linux 2.6.18 silently ignore it. */
- flags |= O_CLOEXEC;
-#elif defined O_NOINHERIT
- flags |= O_NOINHERIT;
-#endif
-reopen:
- fd = open(pathname, flags, mode);
- if (fd == -1) {
- if (!retry) {
- switch (errno) {
- case ENFILE:
- case EMFILE:
- mrb_garbage_collect(mrb);
- retry = TRUE;
- goto reopen;
- }
- }
- mrb_sys_fail(mrb, "open");
- }
-
- if (fd <= 2) {
- mrb_fd_cloexec(mrb, fd);
- }
- return fd;
-}
-
-mrb_value
-mrb_io_s_sysopen(mrb_state *mrb, mrb_value klass)
-{
- mrb_value path = mrb_nil_value();
- mrb_value mode = mrb_nil_value();
- mrb_int fd, flags, perm = -1;
- const char *pat;
- int modenum;
-
- mrb_get_args(mrb, "S|Si", &path, &mode, &perm);
- if (mrb_nil_p(mode)) {
- mode = mrb_str_new_cstr(mrb, "r");
- }
- if (perm < 0) {
- perm = 0666;
- }
-
- pat = mrb_string_value_cstr(mrb, &path);
- flags = mrb_io_modestr_to_flags(mrb, mrb_string_value_cstr(mrb, &mode));
- modenum = mrb_io_flags_to_modenum(mrb, flags);
- fd = mrb_cloexec_open(mrb, pat, modenum, perm);
- return mrb_fixnum_value(fd);
-}
-
-mrb_value
-mrb_io_sysread(mrb_state *mrb, mrb_value io)
-{
- struct mrb_io *fptr;
- mrb_value buf = mrb_nil_value();
- mrb_int maxlen;
- int ret;
-
- mrb_get_args(mrb, "i|S", &maxlen, &buf);
- if (maxlen < 0) {
- return mrb_nil_value();
- }
-
- if (mrb_nil_p(buf)) {
- buf = mrb_str_new(mrb, NULL, maxlen);
- }
- if (RSTRING_LEN(buf) != maxlen) {
- buf = mrb_str_resize(mrb, buf, maxlen);
- }
-
- fptr = (struct mrb_io *)mrb_get_datatype(mrb, io, &mrb_io_type);
- ret = read(fptr->fd, RSTRING_PTR(buf), maxlen);
- switch (ret) {
- case 0: /* EOF */
- if (maxlen == 0) {
- buf = mrb_str_new_cstr(mrb, "");
- } else {
- mrb_raise(mrb, E_EOF_ERROR, "sysread failed: End of File");
- }
- break;
- case -1: /* Error */
- mrb_sys_fail(mrb, "sysread failed");
- break;
- default:
- if (RSTRING_LEN(buf) != ret) {
- buf = mrb_str_resize(mrb, buf, ret);
- }
- break;
- }
-
- return buf;
-}
-
-mrb_value
-mrb_io_sysseek(mrb_state *mrb, mrb_value io)
-{
- struct mrb_io *fptr;
- int pos;
- mrb_int offset, whence = -1;
-
- mrb_get_args(mrb, "i|i", &offset, &whence);
- if (whence < 0) {
- whence = 0;
- }
-
- fptr = (struct mrb_io *)mrb_get_datatype(mrb, io, &mrb_io_type);
- pos = lseek(fptr->fd, offset, whence);
- if (pos < 0) {
- mrb_raise(mrb, E_IO_ERROR, "sysseek faield");
- }
-
- return mrb_fixnum_value(pos);
-}
-
-mrb_value
-mrb_io_syswrite(mrb_state *mrb, mrb_value io)
-{
- struct mrb_io *fptr;
- mrb_value str, buf;
- int fd, length;
-
- fptr = (struct mrb_io *)mrb_get_datatype(mrb, io, &mrb_io_type);
- if (! fptr->writable) {
- mrb_raise(mrb, E_IO_ERROR, "not opened for writing");
- }
-
- mrb_get_args(mrb, "S", &str);
- if (mrb_type(str) != MRB_TT_STRING) {
- buf = mrb_funcall(mrb, str, "to_s", 0);
- } else {
- buf = str;
- }
-
- if (fptr->fd2 == -1) {
- fd = fptr->fd;
- } else {
- fd = fptr->fd2;
- }
- length = write(fd, RSTRING_PTR(buf), RSTRING_LEN(buf));
-
- return mrb_fixnum_value(length);
-}
-
-mrb_value
-mrb_io_close(mrb_state *mrb, mrb_value io)
-{
- struct mrb_io *fptr;
- fptr = (struct mrb_io *)mrb_get_datatype(mrb, io, &mrb_io_type);
- if (fptr && fptr->fd < 0) {
- mrb_raise(mrb, E_IO_ERROR, "closed stream.");
- }
- fptr_finalize(mrb, fptr, FALSE);
- return mrb_nil_value();
-}
-
-mrb_value
-mrb_io_closed(mrb_state *mrb, mrb_value io)
-{
- struct mrb_io *fptr;
- fptr = (struct mrb_io *)mrb_get_datatype(mrb, io, &mrb_io_type);
- if (fptr->fd >= 0) {
- return mrb_false_value();
- }
-
- return mrb_true_value();
-}
-
-mrb_value
-mrb_io_pid(mrb_state *mrb, mrb_value io)
-{
- struct mrb_io *fptr;
- fptr = (struct mrb_io *)mrb_get_datatype(mrb, io, &mrb_io_type);
-
- if (fptr->pid > 0) {
- return mrb_fixnum_value(fptr->pid);
- }
-
- return mrb_nil_value();
-}
-
-static struct timeval
-time2timeval(mrb_state *mrb, mrb_value time)
-{
- struct timeval t = { 0, 0 };
-
- switch (mrb_type(time)) {
- case MRB_TT_FIXNUM:
- t.tv_sec = mrb_fixnum(time);
- t.tv_usec = 0;
- break;
-
- case MRB_TT_FLOAT:
- t.tv_sec = mrb_float(time);
- t.tv_usec = (mrb_float(time) - t.tv_sec) * 1000000.0;
- break;
-
- default:
- mrb_raise(mrb, E_TYPE_ERROR, "wrong argument class");
- }
-
- return t;
-}
-
-static int
-mrb_io_read_data_pending(mrb_state *mrb, mrb_value io)
-{
- mrb_value buf = mrb_iv_get(mrb, io, mrb_intern_cstr(mrb, "@buf"));
- if (mrb_type(buf) == MRB_TT_STRING && RSTRING_LEN(buf) > 0) {
- return 1;
- }
- return 0;
-}
-
-static mrb_value
-mrb_io_s_select(mrb_state *mrb, mrb_value klass)
-{
- mrb_value *argv;
- mrb_int argc;
- mrb_value read, read_io, write, except, timeout, list;
- struct timeval *tp, timerec;
- fd_set pset, rset, wset, eset;
- fd_set *rp, *wp, *ep;
- struct mrb_io *fptr;
- int pending = 0;
- mrb_value result;
- int max = 0;
- int interrupt_flag = 0;
- int i, n;
-
- mrb_get_args(mrb, "*", &argv, &argc);
-
- if (argc < 1 || argc > 4) {
- mrb_raisef(mrb, E_ARGUMENT_ERROR, "wrong number of arguments (%S for 1..4)", mrb_fixnum_value(argc));
- }
-
- timeout = mrb_nil_value();
- except = mrb_nil_value();
- write = mrb_nil_value();
- if (argc > 3)
- timeout = argv[3];
- if (argc > 2)
- except = argv[2];
- if (argc > 1)
- write = argv[1];
- read = argv[0];
-
- if (mrb_nil_p(timeout)) {
- tp = NULL;
- } else {
- timerec = time2timeval(mrb, timeout);
- tp = &timerec;
- }
-
- FD_ZERO(&pset);
- if (!mrb_nil_p(read)) {
- mrb_check_type(mrb, read, MRB_TT_ARRAY);
- rp = &rset;
- FD_ZERO(rp);
- for (i = 0; i < RARRAY_LEN(read); i++) {
- read_io = RARRAY_PTR(read)[i];
- fptr = (struct mrb_io *)mrb_get_datatype(mrb, read_io, &mrb_io_type);
- FD_SET(fptr->fd, rp);
- if (mrb_io_read_data_pending(mrb, read_io)) {
- pending++;
- FD_SET(fptr->fd, &pset);
- }
- if (max < fptr->fd)
- max = fptr->fd;
- }
- if (pending) {
- timerec.tv_sec = timerec.tv_usec = 0;
- tp = &timerec;
- }
- } else {
- rp = NULL;
- }
-
- if (!mrb_nil_p(write)) {
- mrb_check_type(mrb, write, MRB_TT_ARRAY);
- wp = &wset;
- FD_ZERO(wp);
- for (i = 0; i < RARRAY_LEN(write); i++) {
- fptr = (struct mrb_io *)mrb_get_datatype(mrb, RARRAY_PTR(write)[i], &mrb_io_type);
- FD_SET(fptr->fd, wp);
- if (max < fptr->fd)
- max = fptr->fd;
- if (fptr->fd2 >= 0) {
- FD_SET(fptr->fd2, wp);
- if (max < fptr->fd2)
- max = fptr->fd2;
- }
- }
- } else {
- wp = NULL;
- }
-
- if (!mrb_nil_p(except)) {
- mrb_check_type(mrb, except, MRB_TT_ARRAY);
- ep = &eset;
- FD_ZERO(ep);
- for (i = 0; i < RARRAY_LEN(except); i++) {
- fptr = (struct mrb_io *)mrb_get_datatype(mrb, RARRAY_PTR(except)[i], &mrb_io_type);
- FD_SET(fptr->fd, ep);
- if (max < fptr->fd)
- max = fptr->fd;
- if (fptr->fd2 >= 0) {
- FD_SET(fptr->fd2, ep);
- if (max < fptr->fd2)
- max = fptr->fd2;
- }
- }
- } else {
- ep = NULL;
- }
-
- max++;
-
-retry:
- n = select(max, rp, wp, ep, tp);
- if (n < 0) {
- if (errno != EINTR)
- mrb_sys_fail(mrb, "select failed");
- if (tp == NULL)
- goto retry;
- interrupt_flag = 1;
- }
-
- if (!pending && n == 0)
- return mrb_nil_value();
-
- result = mrb_ary_new_capa(mrb, 3);
- mrb_ary_push(mrb, result, rp? mrb_ary_new(mrb) : mrb_ary_new_capa(mrb, 0));
- mrb_ary_push(mrb, result, wp? mrb_ary_new(mrb) : mrb_ary_new_capa(mrb, 0));
- mrb_ary_push(mrb, result, ep? mrb_ary_new(mrb) : mrb_ary_new_capa(mrb, 0));
-
- if (interrupt_flag == 0) {
- if (rp) {
- list = RARRAY_PTR(result)[0];
- for (i = 0; i < RARRAY_LEN(read); i++) {
- fptr = (struct mrb_io *)mrb_get_datatype(mrb, RARRAY_PTR(read)[i], &mrb_io_type);
- if (FD_ISSET(fptr->fd, rp) ||
- FD_ISSET(fptr->fd, &pset)) {
- mrb_ary_push(mrb, list, RARRAY_PTR(read)[i]);
- }
- }
- }
-
- if (wp) {
- list = RARRAY_PTR(result)[1];
- for (i = 0; i < RARRAY_LEN(write); i++) {
- fptr = (struct mrb_io *)mrb_get_datatype(mrb, RARRAY_PTR(write)[i], &mrb_io_type);
- if (FD_ISSET(fptr->fd, wp)) {
- mrb_ary_push(mrb, list, RARRAY_PTR(write)[i]);
- } else if (fptr->fd2 >= 0 && FD_ISSET(fptr->fd2, wp)) {
- mrb_ary_push(mrb, list, RARRAY_PTR(write)[i]);
- }
- }
- }
-
- if (ep) {
- list = RARRAY_PTR(result)[2];
- for (i = 0; i < RARRAY_LEN(except); i++) {
- fptr = (struct mrb_io *)mrb_get_datatype(mrb, RARRAY_PTR(except)[i], &mrb_io_type);
- if (FD_ISSET(fptr->fd, ep)) {
- mrb_ary_push(mrb, list, RARRAY_PTR(except)[i]);
- } else if (fptr->fd2 >= 0 && FD_ISSET(fptr->fd2, ep)) {
- mrb_ary_push(mrb, list, RARRAY_PTR(except)[i]);
- }
- }
- }
- }
-
- return result;
-}
-
-mrb_value
-mrb_io_fileno(mrb_state *mrb, mrb_value io)
-{
- struct mrb_io *fptr;
- fptr = (struct mrb_io *)mrb_get_datatype(mrb, io, &mrb_io_type);
- return mrb_fixnum_value(fptr->fd);
-}
-
-mrb_value
-mrb_io_close_on_exec_p(mrb_state *mrb, mrb_value io)
-{
-#if defined(F_GETFD) && defined(F_SETFD) && defined(FD_CLOEXEC)
- struct mrb_io *fptr;
- int ret;
-
- fptr = (struct mrb_io *)mrb_get_datatype(mrb, io, &mrb_io_type);
- if (fptr->fd < 0) {
- mrb_raise(mrb, E_IO_ERROR, "closed stream");
- }
-
- if (fptr->fd2 >= 0) {
- if ((ret = fcntl(fptr->fd2, F_GETFD)) == -1) mrb_sys_fail(mrb, "F_GETFD failed");
- if (!(ret & FD_CLOEXEC)) return mrb_false_value();
- }
-
- if ((ret = fcntl(fptr->fd, F_GETFD)) == -1) mrb_sys_fail(mrb, "F_GETFD failed");
- if (!(ret & FD_CLOEXEC)) return mrb_false_value();
- return mrb_true_value();
-
-#else
- mrb_raise(mrb, E_NOTIMP_ERROR, "IO#close_on_exec? is not supported on the platform");
- return mrb_false_value();
-#endif
-}
-
-mrb_value
-mrb_io_set_close_on_exec(mrb_state *mrb, mrb_value io)
-{
-#if defined(F_GETFD) && defined(F_SETFD) && defined(FD_CLOEXEC)
- struct mrb_io *fptr;
- int flag, ret;
- mrb_bool b;
-
- fptr = (struct mrb_io *)mrb_get_datatype(mrb, io, &mrb_io_type);
- if (fptr->fd < 0) {
- mrb_raise(mrb, E_IO_ERROR, "closed stream");
- }
-
- mrb_get_args(mrb, "b", &b);
- flag = b ? FD_CLOEXEC : 0;
-
- if (fptr->fd2 >= 0) {
- if ((ret = fcntl(fptr->fd2, F_GETFD)) == -1) mrb_sys_fail(mrb, "F_GETFD failed");
- if ((ret & FD_CLOEXEC) != flag) {
- ret = (ret & ~FD_CLOEXEC) | flag;
- ret = fcntl(fptr->fd2, F_SETFD, ret);
-
- if (ret == -1) mrb_sys_fail(mrb, "F_SETFD failed");
- }
- }
-
- if ((ret = fcntl(fptr->fd, F_GETFD)) == -1) mrb_sys_fail(mrb, "F_GETFD failed");
- if ((ret & FD_CLOEXEC) != flag) {
- ret = (ret & ~FD_CLOEXEC) | flag;
- ret = fcntl(fptr->fd, F_SETFD, ret);
- if (ret == -1) mrb_sys_fail(mrb, "F_SETFD failed");
- }
-
- return mrb_bool_value(b);
-#else
- mrb_raise(mrb, E_NOTIMP_ERROR, "IO#close_on_exec= is not supported on the platform");
- return mrb_nil_value();
-#endif
-}
-
-mrb_value
-mrb_io_set_sync(mrb_state *mrb, mrb_value self)
-{
- struct mrb_io *fptr;
- mrb_bool b;
-
- fptr = (struct mrb_io *)mrb_get_datatype(mrb, self, &mrb_io_type);
- if (fptr->fd < 0) {
- mrb_raise(mrb, E_IO_ERROR, "closed stream.");
- }
-
- mrb_get_args(mrb, "b", &b);
- fptr->sync = b;
- return mrb_bool_value(b);
-}
-
-mrb_value
-mrb_io_sync(mrb_state *mrb, mrb_value self)
-{
- struct mrb_io *fptr;
-
- fptr = (struct mrb_io *)mrb_get_datatype(mrb, self, &mrb_io_type);
- if (fptr->fd < 0) {
- mrb_raise(mrb, E_IO_ERROR, "closed stream.");
- }
- return mrb_bool_value(fptr->sync);
-}
-
-void
-mrb_init_io(mrb_state *mrb)
-{
- struct RClass *io;
-
- io = mrb_define_class(mrb, "IO", mrb->object_class);
- MRB_SET_INSTANCE_TT(io, MRB_TT_DATA);
-
- mrb_include_module(mrb, io, mrb_module_get(mrb, "Enumerable")); /* 15.2.20.3 */
-#ifndef _WIN32
- mrb_define_class_method(mrb, io, "_popen", mrb_io_s_popen, MRB_ARGS_ANY());
- mrb_define_class_method(mrb, io, "_sysclose", mrb_io_s_sysclose, MRB_ARGS_REQ(1));
-#endif
- mrb_define_class_method(mrb, io, "for_fd", mrb_io_s_for_fd, MRB_ARGS_ANY());
- mrb_define_class_method(mrb, io, "select", mrb_io_s_select, MRB_ARGS_ANY());
- mrb_define_class_method(mrb, io, "sysopen", mrb_io_s_sysopen, MRB_ARGS_ANY());
-
- mrb_define_method(mrb, io, "initialize", mrb_io_initialize, MRB_ARGS_ANY()); /* 15.2.20.5.21 (x)*/
- mrb_define_method(mrb, io, "sync", mrb_io_sync, MRB_ARGS_NONE());
- mrb_define_method(mrb, io, "sync=", mrb_io_set_sync, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, io, "sysread", mrb_io_sysread, MRB_ARGS_ANY());
- mrb_define_method(mrb, io, "sysseek", mrb_io_sysseek, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, io, "syswrite", mrb_io_syswrite, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, io, "close", mrb_io_close, MRB_ARGS_NONE()); /* 15.2.20.5.1 */
- mrb_define_method(mrb, io, "close_on_exec=", mrb_io_set_close_on_exec, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, io, "close_on_exec?", mrb_io_close_on_exec_p, MRB_ARGS_NONE());
- mrb_define_method(mrb, io, "closed?", mrb_io_closed, MRB_ARGS_NONE()); /* 15.2.20.5.2 */
- mrb_define_method(mrb, io, "pid", mrb_io_pid, MRB_ARGS_NONE()); /* 15.2.20.5.2 */
- mrb_define_method(mrb, io, "fileno", mrb_io_fileno, MRB_ARGS_NONE());
-
-
- mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$/"), mrb_str_new_cstr(mrb, "\n"));
-}
diff --git a/web/server/h2o/libh2o/deps/mruby-io/src/mruby_io_gem.c b/web/server/h2o/libh2o/deps/mruby-io/src/mruby_io_gem.c
deleted file mode 100644
index 6880e6678..000000000
--- a/web/server/h2o/libh2o/deps/mruby-io/src/mruby_io_gem.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include "mruby.h"
-
-void mrb_init_io(mrb_state *mrb);
-void mrb_init_file(mrb_state *mrb);
-void mrb_init_file_test(mrb_state *mrb);
-
-#define DONE mrb_gc_arena_restore(mrb, 0)
-
-void
-mrb_mruby_io_gem_init(mrb_state* mrb)
-{
- mrb_init_io(mrb); DONE;
- mrb_init_file(mrb); DONE;
- mrb_init_file_test(mrb); DONE;
-}
-
-void
-mrb_mruby_io_gem_final(mrb_state* mrb)
-{
-}
diff --git a/web/server/h2o/libh2o/deps/mruby-io/test/file.rb b/web/server/h2o/libh2o/deps/mruby-io/test/file.rb
deleted file mode 100644
index d6f39ceb1..000000000
--- a/web/server/h2o/libh2o/deps/mruby-io/test/file.rb
+++ /dev/null
@@ -1,108 +0,0 @@
-##
-# IO Test
-
-assert('File', '15.2.21') do
- File.class == Class
-end
-
-assert('File', '15.2.21.2') do
- File.superclass == IO
-end
-
-assert('File TEST SETUP') do
- MRubyIOTestUtil.io_test_setup
-end
-
-assert('File#initialize', '15.2.21.4.1') do
- io = File.open($mrbtest_io_rfname, "r")
- assert_nil io.close
- assert_raise IOError do
- io.close
- end
-end
-
-assert('File#path', '15.2.21.4.2') do
- io = File.open($mrbtest_io_rfname, "r")
- assert_equal $mrbtest_io_msg, io.read
- assert_equal $mrbtest_io_rfname, io.path
- io.close
- assert_equal $mrbtest_io_rfname, io.path
- io.closed?
-end
-
-assert('File.basename') do
- assert_equal '/', File.basename('//')
- assert_equal 'a', File.basename('/a/')
- assert_equal 'b', File.basename('/a/b')
- assert_equal 'b', File.basename('../a/b')
-end
-
-assert('File.dirname') do
- assert_equal '.', File.dirname('')
- assert_equal '.', File.dirname('a')
- assert_equal '/', File.dirname('/a')
- assert_equal 'a', File.dirname('a/b')
- assert_equal '/a', File.dirname('/a/b')
-end
-
-assert('File.extname') do
- assert_equal '.txt', File.extname('foo/foo.txt')
- assert_equal '.gz', File.extname('foo/foo.tar.gz')
- assert_equal '', File.extname('foo/bar')
- assert_equal '', File.extname('foo/.bar')
- assert_equal '', File.extname('foo.txt/bar')
- assert_equal '', File.extname('.foo')
-end
-
-assert('IO#flock') do
- f = File.open $mrbtest_io_rfname
- assert_equal(f.flock(File::LOCK_SH), 0)
- assert_equal(f.flock(File::LOCK_UN), 0)
- assert_equal(f.flock(File::LOCK_EX | File::LOCK_NB), 0)
- assert_equal(f.flock(File::LOCK_UN), 0)
- f.close
- true
-end
-
-assert('File.join') do
- File.join() == "" and
- File.join("a") == "a" and
- File.join("/a") == "/a" and
- File.join("a/") == "a/" and
- File.join("a", "b", "c") == "a/b/c" and
- File.join("/a", "b", "c") == "/a/b/c" and
- File.join("a", "b", "c/") == "a/b/c/" and
- File.join("a/", "/b/", "/c") == "a/b/c"
-end
-
-assert('File.realpath') do
- usrbin = IO.popen("cd bin; /bin/pwd -P") { |f| f.read.chomp }
- assert_equal usrbin, File.realpath("bin")
-end
-
-assert('File TEST CLEANUP') do
- assert_nil MRubyIOTestUtil.io_test_cleanup
-end
-
-assert('File.expand_path') do
- assert_equal "/", File.expand_path("..", "/tmp"), "parent path with base_dir (1)"
- assert_equal "/tmp", File.expand_path("..", "/tmp/mruby"), "parent path with base_dir (2)"
-
- assert_equal "/home", File.expand_path("/home"), "absolute"
- assert_equal "/home", File.expand_path("/home", "."), "absolute with base_dir"
-
- assert_equal "/hoge", File.expand_path("/tmp/..//hoge")
- assert_equal "/hoge", File.expand_path("////tmp/..///////hoge")
-
- assert_equal "/", File.expand_path("../../../..", "/")
- assert_equal "/", File.expand_path(([".."] * 100).join("/"))
-end
-
-assert('File.expand_path (with ENV)') do
- skip unless Object.const_defined?(:ENV) && ENV['HOME']
-
- assert_equal ENV['HOME'], File.expand_path("~/"), "home"
- assert_equal ENV['HOME'], File.expand_path("~/", "/"), "home with base_dir"
-
- assert_equal "#{ENV['HOME']}/user", File.expand_path("user", ENV['HOME']), "relative with base_dir"
-end
diff --git a/web/server/h2o/libh2o/deps/mruby-io/test/file_test.rb b/web/server/h2o/libh2o/deps/mruby-io/test/file_test.rb
deleted file mode 100644
index 11742f2db..000000000
--- a/web/server/h2o/libh2o/deps/mruby-io/test/file_test.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-##
-# FileTest
-
-assert('FileTest TEST SETUP') do
- MRubyIOTestUtil.io_test_setup
-end
-
-assert("FileTest.directory?") do
- assert_equal true, FileTest.directory?("/tmp")
- assert_equal false, FileTest.directory?("/bin/sh")
-end
-
-assert("FileTest.exist?") do
- assert_equal true, FileTest.exist?($mrbtest_io_rfname), "filename - exist"
- assert_equal false, FileTest.exist?($mrbtest_io_rfname + "-"), "filename - not exist"
- io = IO.new(IO.sysopen($mrbtest_io_rfname))
- assert_equal true, FileTest.exist?(io), "io obj - exist"
- io.close
- assert_equal true, io.closed?
- assert_raise IOError do
- FileTest.exist?(io)
- end
-end
-
-assert("FileTest.file?") do
- assert_equal false, FileTest.file?("/tmp")
- assert_equal true, FileTest.file?("/bin/sh")
-end
-
-assert("FileTest.pipe?") do
- io = IO.popen("ls")
- assert_equal true, FileTest.pipe?(io)
- assert_equal false, FileTest.pipe?("/tmp")
-end
-
-assert('FileTest.size') do
- assert_equal FileTest.size($mrbtest_io_rfname), $mrbtest_io_msg.size
- assert_equal FileTest.size($mrbtest_io_wfname), 0
-end
-
-assert("FileTest.size?") do
- assert_equal $mrbtest_io_msg.size, FileTest.size?($mrbtest_io_rfname)
- assert_equal nil, FileTest.size?($mrbtest_io_wfname)
- assert_equal nil, FileTest.size?("not-exist-test-target-file")
-
- fp1 = File.open($mrbtest_io_rfname)
- fp2 = File.open($mrbtest_io_wfname)
- assert_equal $mrbtest_io_msg.size, FileTest.size?(fp1)
- assert_equal nil, FileTest.size?(fp2)
- fp1.close
- fp2.close
-
- assert_raise IOError do
- FileTest.size?(fp1)
- end
- assert_raise IOError do
- FileTest.size?(fp2)
- end
-
- fp1.closed? && fp2.closed?
-end
-
-assert("FileTest.socket?") do
- assert_true FileTest.socket?($mrbtest_io_socketname)
-end
-
-assert("FileTest.symlink?") do
- assert_true FileTest.symlink?($mrbtest_io_symlinkname)
-end
-
-assert("FileTest.zero?") do
- assert_equal false, FileTest.zero?($mrbtest_io_rfname)
- assert_equal true, FileTest.zero?($mrbtest_io_wfname)
- assert_equal false, FileTest.zero?("not-exist-test-target-file")
-
- fp1 = File.open($mrbtest_io_rfname)
- fp2 = File.open($mrbtest_io_wfname)
- assert_equal false, FileTest.zero?(fp1)
- assert_equal true, FileTest.zero?(fp2)
- fp1.close
- fp2.close
-
- assert_raise IOError do
- FileTest.zero?(fp1)
- end
- assert_raise IOError do
- FileTest.zero?(fp2)
- end
-
- fp1.closed? && fp2.closed?
-end
-
-assert('FileTest TEST CLEANUP') do
- assert_nil MRubyIOTestUtil.io_test_cleanup
-end
diff --git a/web/server/h2o/libh2o/deps/mruby-io/test/gc_filedes.sh b/web/server/h2o/libh2o/deps/mruby-io/test/gc_filedes.sh
deleted file mode 100644
index 6e5d1bbf1..000000000
--- a/web/server/h2o/libh2o/deps/mruby-io/test/gc_filedes.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-ulimit -n 20
-mruby -e '100.times { File.open "'$0'" }'
diff --git a/web/server/h2o/libh2o/deps/mruby-io/test/io.rb b/web/server/h2o/libh2o/deps/mruby-io/test/io.rb
deleted file mode 100644
index b828fef49..000000000
--- a/web/server/h2o/libh2o/deps/mruby-io/test/io.rb
+++ /dev/null
@@ -1,416 +0,0 @@
-##
-# IO Test
-
-assert('IO TEST SETUP') do
- MRubyIOTestUtil.io_test_setup
-end
-
-assert('IO', '15.2.20') do
- assert_equal(Class, IO.class)
-end
-
-assert('IO', '15.2.20.2') do
- assert_equal(Object, IO.superclass)
-end
-
-assert('IO', '15.2.20.3') do
- assert_include(IO.included_modules, Enumerable)
-end
-
-assert('IO.open', '15.2.20.4.1') do
- fd = IO.sysopen $mrbtest_io_rfname
- assert_equal Fixnum, fd.class
- io = IO.open fd
- assert_equal IO, io.class
- assert_equal $mrbtest_io_msg, io.read
- io.close
-
- fd = IO.sysopen $mrbtest_io_rfname
- IO.open(fd) do |io|
- assert_equal $mrbtest_io_msg, io.read
- end
-
- true
-end
-
-assert('IO#close', '15.2.20.5.1') do
- io = IO.new(IO.sysopen($mrbtest_io_rfname))
- assert_nil io.close
-end
-
-assert('IO#closed?', '15.2.20.5.2') do
- io = IO.new(IO.sysopen($mrbtest_io_rfname))
- assert_false io.closed?
- io.close
- assert_true io.closed?
-end
-
-#assert('IO#each', '15.2.20.5.3') do
-#assert('IO#each_byte', '15.2.20.5.4') do
-#assert('IO#each_line', '15.2.20.5.5') do
-
-assert('IO#eof?', '15.2.20.5.6') do
- io = IO.new(IO.sysopen($mrbtest_io_rfname))
- $mrbtest_io_msg.each_char { |ch|
- # XXX
- #assert_false io.eof?
- io.getc
- }
- assert_true io.eof?
- io.close
- true
-end
-
-assert('IO#flush', '15.2.20.5.7') do
- # Note: mruby-io does not have any buffer to be flushed now.
- io = IO.new(IO.sysopen($mrbtest_io_wfname))
- assert_equal io, io.flush
- io.close
- assert_raise(IOError) do
- io.flush
- end
-end
-
-assert('IO#getc', '15.2.20.5.8') do
- io = IO.new(IO.sysopen($mrbtest_io_rfname))
- $mrbtest_io_msg.each_char { |ch|
- assert_equal ch, io.getc
- }
- assert_equal nil, io.getc
- io.close
- true
-end
-
-#assert('IO#gets', '15.2.20.5.9') do
-#assert('IO#initialize_copy', '15.2.20.5.10') do
-#assert('IO#print', '15.2.20.5.11') do
-#assert('IO#putc', '15.2.20.5.12') do
-#assert('IO#puts', '15.2.20.5.13') do
-
-assert('IO#read', '15.2.20.5.14') do
- IO.open(IO.sysopen($mrbtest_io_rfname)) do |io|
- assert_raise(ArgumentError) { io.read(-5) }
- assert_raise(TypeError) { io.read("str") }
-
- len = $mrbtest_io_msg.length
- assert_equal '', io.read(0)
- assert_equal 'mruby', io.read(5)
- assert_equal $mrbtest_io_msg[5,len], io.read(len)
-
- assert_equal "", io.read
- assert_nil io.read(1)
- end
-
- IO.open(IO.sysopen($mrbtest_io_rfname)) do |io|
- assert_equal $mrbtest_io_msg, io.read
- end
-end
-
-assert('IO#readchar', '15.2.20.5.15') do
- # almost same as IO#getc
- IO.open(IO.sysopen($mrbtest_io_rfname)) do |io|
- $mrbtest_io_msg.each_char { |ch|
- assert_equal ch, io.readchar
- }
- assert_raise(EOFError) do
- io.readchar
- end
- end
-end
-
-#assert('IO#readline', '15.2.20.5.16') do
-#assert('IO#readlines', '15.2.20.5.17') do
-
-assert('IO#sync', '15.2.20.5.18') do
- io = IO.new(IO.sysopen($mrbtest_io_rfname))
- s = io.sync
- assert_true(s == true || s == false)
- io.close
- assert_raise(IOError) do
- io.sync
- end
-end
-
-assert('IO#sync=', '15.2.20.5.19') do
- io = IO.new(IO.sysopen($mrbtest_io_rfname))
- io.sync = true
- assert_true io.sync
- io.sync = false
- assert_false io.sync
- io.close
- assert_raise(IOError) do
- io.sync = true
- end
-end
-
-assert('IO#write', '15.2.20.5.20') do
- io = IO.open(IO.sysopen($mrbtest_io_wfname))
- assert_equal 0, io.write("")
- io.close
- true
-end
-
-assert('IO.for_fd') do
- fd = IO.sysopen($mrbtest_io_rfname)
- io = IO.for_fd(fd)
- assert_equal $mrbtest_io_msg, io.read
- io.close
- true
-end
-
-assert('IO.new') do
- io = IO.new(0)
- io.close
- true
-end
-
-assert('IO gc check') do
- 100.times { IO.new(0) }
-end
-
-assert('IO.sysopen("./nonexistent")') do
- if Object.const_defined? :Errno
- eclass = Errno::ENOENT
- else
- eclass = RuntimeError
- end
- assert_raise eclass do
- fd = IO.sysopen "./nonexistent"
- IO._sysclose fd
- end
-end
-
-assert('IO.sysopen, IO#sysread') do
- fd = IO.sysopen $mrbtest_io_rfname
- io = IO.new fd
- str1 = " "
- str2 = io.sysread(5, str1)
- assert_equal $mrbtest_io_msg[0,5], str1
- assert_equal $mrbtest_io_msg[0,5], str2
- assert_raise EOFError do
- io.sysread(10000)
- io.sysread(10000)
- end
- io.close
- io.closed?
-end
-
-assert('IO.sysopen, IO#syswrite') do
- fd = IO.sysopen $mrbtest_io_wfname, "w"
- io = IO.new fd, "w"
- str = "abcdefg"
- len = io.syswrite(str)
- assert_equal str.size, len
- io.close
-
- io = IO.new(IO.sysopen($mrbtest_io_rfname), "r")
- assert_raise(IOError) { io.syswrite("a") }
- io.close
-
- true
-end
-
-assert('IO#_read_buf') do
- fd = IO.sysopen $mrbtest_io_rfname
- io = IO.new fd
- def io._buf
- @buf
- end
- msg_len = $mrbtest_io_msg.size
- assert_equal '', io._buf
- assert_equal $mrbtest_io_msg, io._read_buf
- assert_equal $mrbtest_io_msg, io._buf
- assert_equal 'mruby', io.read(5)
- assert_equal 5, io.pos
- assert_equal msg_len - 5, io._buf.size
- assert_equal $mrbtest_io_msg[5,100], io.read
- assert_equal 0, io._buf.size
- assert_raise EOFError do
- io._read_buf
- end
- assert_equal true, io.eof
- assert_equal true, io.eof?
- io.close
- io.closed?
-end
-
-assert('IO#pos=, IO#seek') do
- fd = IO.sysopen $mrbtest_io_rfname
- io = IO.new fd
- def io._buf
- @buf
- end
- assert_equal 'm', io.getc
- assert_equal 1, io.pos
- assert_equal 0, io.seek(0)
- assert_equal 0, io.pos
- io.close
- io.closed?
-end
-
-assert('IO#gets') do
- fd = IO.sysopen $mrbtest_io_rfname
- io = IO.new fd
-
- # gets without arguments
- assert_equal $mrbtest_io_msg, io.gets, "gets without arguments"
- assert_equal nil, io.gets, "gets returns nil, when EOF"
-
- # gets with limit
- io.pos = 0
- assert_equal $mrbtest_io_msg[0, 5], io.gets(5), "gets with limit"
-
- # gets with rs
- io.pos = 0
- assert_equal $mrbtest_io_msg[0, 6], io.gets(' '), "gets with rs"
-
- # gets with rs, limit
- io.pos = 0
- assert_equal $mrbtest_io_msg[0, 5], io.gets(' ', 5), "gets with rs, limit"
- io.close
- assert_equal true, io.closed?, "close success"
-
- # reading many-lines file.
- fd = IO.sysopen $mrbtest_io_wfname, "w"
- io = IO.new fd, "w"
- io.write "0123456789" * 2 + "\na"
- assert_equal 22, io.pos
- io.close
- assert_equal true, io.closed?
-
- fd = IO.sysopen $mrbtest_io_wfname
- io = IO.new fd
- line = io.gets
-
- # gets first line
- assert_equal "0123456789" * 2 + "\n", line, "gets first line"
- assert_equal 21, line.size
- assert_equal 21, io.pos
-
- # gets second line
- assert_equal "a", io.gets, "gets second line"
-
- # gets third line
- assert_equal nil, io.gets, "gets third line; returns nil"
-
- io.close
- io.closed?
-end
-
-assert('IO#gets - paragraph mode') do
- fd = IO.sysopen $mrbtest_io_wfname, "w"
- io = IO.new fd, "w"
- io.write "0" * 10 + "\n"
- io.write "1" * 10 + "\n\n"
- io.write "2" * 10 + "\n"
- assert_equal 34, io.pos
- io.close
- assert_equal true, io.closed?
-
- fd = IO.sysopen $mrbtest_io_wfname
- io = IO.new fd
- para1 = "#{'0' * 10}\n#{'1' * 10}\n\n"
- text1 = io.gets("")
- assert_equal para1, text1
- para2 = "#{'2' * 10}\n"
- text2 = io.gets("")
- assert_equal para2, text2
- io.close
- io.closed?
-end
-
-assert('IO.popen') do
- io = IO.popen("ls")
- assert_true io.close_on_exec?
- assert_equal Fixnum, io.pid.class
- ls = io.read
- assert_equal ls.class, String
- assert_include ls, 'AUTHORS'
- assert_include ls, 'mrblib'
- io.close
- io.closed?
-end
-
-assert('IO.read') do
- # empty file
- fd = IO.sysopen $mrbtest_io_wfname, "w"
- io = IO.new fd, "w"
- io.close
- assert_equal "", IO.read($mrbtest_io_wfname)
- assert_equal nil, IO.read($mrbtest_io_wfname, 1)
-
- # one byte file
- fd = IO.sysopen $mrbtest_io_wfname, "w"
- io = IO.new fd, "w"
- io.write "123"
- io.close
- assert_equal "123", IO.read($mrbtest_io_wfname)
- assert_equal "", IO.read($mrbtest_io_wfname, 0)
- assert_equal "1", IO.read($mrbtest_io_wfname, 1)
- assert_equal "", IO.read($mrbtest_io_wfname, 0, 10)
- assert_equal "23", IO.read($mrbtest_io_wfname, 2, 1)
- assert_equal "23", IO.read($mrbtest_io_wfname, 10, 1)
- assert_equal "", IO.read($mrbtest_io_wfname, nil, 10)
- assert_equal nil, IO.read($mrbtest_io_wfname, 1, 10)
-end
-
-assert('IO#fileno') do
- fd = IO.sysopen $mrbtest_io_rfname
- io = IO.new fd
- assert_equal io.fileno, fd
- assert_equal io.to_i, fd
- io.close
- io.closed?
-end
-
-assert('IO#close_on_exec') do
- fd = IO.sysopen $mrbtest_io_wfname, "w"
- io = IO.new fd, "w"
- begin
- # IO.sysopen opens a file descripter with O_CLOEXEC flag.
- assert_true io.close_on_exec?
- rescue ScriptError
- skip "IO\#close_on_exec is not implemented."
- end
-
- io.close_on_exec = false
- assert_equal(false, io.close_on_exec?)
- io.close_on_exec = true
- assert_equal(true, io.close_on_exec?)
- io.close_on_exec = false
- assert_equal(false, io.close_on_exec?)
-
- io.close
- io.closed?
-
- # # Use below when IO.pipe is implemented.
- # begin
- # r, w = IO.pipe
- # assert_equal(false, r.close_on_exec?)
- # r.close_on_exec = true
- # assert_equal(true, r.close_on_exec?)
- # r.close_on_exec = false
- # assert_equal(false, r.close_on_exec?)
- # r.close_on_exec = true
- # assert_equal(true, r.close_on_exec?)
-
- # assert_equal(false, w.close_on_exec?)
- # w.close_on_exec = true
- # assert_equal(true, w.close_on_exec?)
- # w.close_on_exec = false
- # assert_equal(false, w.close_on_exec?)
- # w.close_on_exec = true
- # assert_equal(true, w.close_on_exec?)
- # ensure
- # r.close unless r.closed?
- # w.close unless w.closed?
- # end
-end
-
-assert('`cmd`') do
- assert_equal `echo foo`, "foo\n"
-end
-
-assert('IO TEST CLEANUP') do
- assert_nil MRubyIOTestUtil.io_test_cleanup
-end
diff --git a/web/server/h2o/libh2o/deps/mruby-io/test/mruby_io_test.c b/web/server/h2o/libh2o/deps/mruby-io/test/mruby_io_test.c
deleted file mode 100644
index f58f9ff8c..000000000
--- a/web/server/h2o/libh2o/deps/mruby-io/test/mruby_io_test.c
+++ /dev/null
@@ -1,141 +0,0 @@
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/un.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include "mruby.h"
-#include "mruby/array.h"
-#include "mruby/string.h"
-#include "mruby/variable.h"
-
-static mrb_value
-mrb_io_test_io_setup(mrb_state *mrb, mrb_value self)
-{
- char rfname[] = "tmp.mruby-io-test.XXXXXXXX";
- char wfname[] = "tmp.mruby-io-test.XXXXXXXX";
- char symlinkname[] = "tmp.mruby-io-test.XXXXXXXX";
- char socketname[] = "tmp.mruby-io-test.XXXXXXXX";
- char msg[] = "mruby io test\n";
- mode_t mask;
- int fd0, fd1, fd2, fd3;
- FILE *fp;
- struct sockaddr_un sun0;
-
- mask = umask(077);
- fd0 = mkstemp(rfname);
- fd1 = mkstemp(wfname);
- fd2 = mkstemp(symlinkname);
- fd3 = mkstemp(socketname);
- if (fd0 == -1 || fd1 == -1 || fd2 == -1 || fd3 == -1) {
- mrb_raise(mrb, E_RUNTIME_ERROR, "can't create temporary file");
- return mrb_nil_value();
- }
- umask(mask);
-
- mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_rfname"), mrb_str_new_cstr(mrb, rfname));
- mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_wfname"), mrb_str_new_cstr(mrb, wfname));
- mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_symlinkname"), mrb_str_new_cstr(mrb, symlinkname));
- mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_socketname"), mrb_str_new_cstr(mrb, socketname));
- mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_msg"), mrb_str_new_cstr(mrb, msg));
-
- fp = fopen(rfname, "w");
- if (fp == NULL) {
- mrb_raise(mrb, E_RUNTIME_ERROR, "can't open temporary file");
- return mrb_nil_value();
- }
- fputs(msg, fp);
- fclose(fp);
-
- fp = fopen(wfname, "w");
- if (fp == NULL) {
- mrb_raise(mrb, E_RUNTIME_ERROR, "can't open temporary file");
- return mrb_nil_value();
- }
- fclose(fp);
-
- unlink(symlinkname);
- close(fd2);
- if (symlink("hoge", symlinkname) == -1) {
- mrb_raise(mrb, E_RUNTIME_ERROR, "can't make a symbolic link");
- }
-
- unlink(socketname);
- close(fd3);
- fd3 = socket(AF_UNIX, SOCK_STREAM, 0);
- if (fd3 == -1) {
- mrb_raise(mrb, E_RUNTIME_ERROR, "can't make a socket");
- }
- sun0.sun_family = AF_UNIX;
- snprintf(sun0.sun_path, sizeof(sun0.sun_path), "%s", socketname);
- if (bind(fd3, (struct sockaddr *)&sun0, sizeof(sun0)) == -1) {
- mrb_raise(mrb, E_RUNTIME_ERROR, "can't make a socket bi");
- }
- close(fd3);
-
- return mrb_true_value();
-}
-
-static mrb_value
-mrb_io_test_io_cleanup(mrb_state *mrb, mrb_value self)
-{
- mrb_value rfname = mrb_gv_get(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_rfname"));
- mrb_value wfname = mrb_gv_get(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_wfname"));
- mrb_value symlinkname = mrb_gv_get(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_symlinkname"));
- mrb_value socketname = mrb_gv_get(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_socketname"));
-
- if (mrb_type(rfname) == MRB_TT_STRING) {
- remove(RSTRING_PTR(rfname));
- }
- if (mrb_type(wfname) == MRB_TT_STRING) {
- remove(RSTRING_PTR(wfname));
- }
- if (mrb_type(symlinkname) == MRB_TT_STRING) {
- remove(RSTRING_PTR(symlinkname));
- }
- if (mrb_type(socketname) == MRB_TT_STRING) {
- remove(RSTRING_PTR(socketname));
- }
-
- mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_rfname"), mrb_nil_value());
- mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_wfname"), mrb_nil_value());
- mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_symlinkname"), mrb_nil_value());
- mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_socketname"), mrb_nil_value());
- mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$mrbtest_io_msg"), mrb_nil_value());
-
- return mrb_nil_value();
-}
-
-static mrb_value
-mrb_io_test_file_setup(mrb_state *mrb, mrb_value self)
-{
- mrb_value ary = mrb_io_test_io_setup(mrb, self);
- if (symlink("/usr/bin", "test-bin") == -1) {
- mrb_raise(mrb, E_RUNTIME_ERROR, "can't make a symbolic link");
- }
-
- return ary;
-}
-
-static mrb_value
-mrb_io_test_file_cleanup(mrb_state *mrb, mrb_value self)
-{
- mrb_io_test_io_cleanup(mrb, self);
- remove("test-bin");
-
- return mrb_nil_value();
-}
-
-void
-mrb_mruby_io_gem_test(mrb_state* mrb)
-{
- struct RClass *io_test = mrb_define_module(mrb, "MRubyIOTestUtil");
- mrb_define_class_method(mrb, io_test, "io_test_setup", mrb_io_test_io_setup, MRB_ARGS_NONE());
- mrb_define_class_method(mrb, io_test, "io_test_cleanup", mrb_io_test_io_cleanup, MRB_ARGS_NONE());
-
- mrb_define_class_method(mrb, io_test, "file_test_setup", mrb_io_test_file_setup, MRB_ARGS_NONE());
- mrb_define_class_method(mrb, io_test, "file_test_cleanup", mrb_io_test_file_cleanup, MRB_ARGS_NONE());
-
-}