ffi 1.9.21 → 1.9.22
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of ffi might be problematic. Click here for more details.
- checksums.yaml +5 -5
- checksums.yaml.gz.sig +3 -0
- data.tar.gz.sig +0 -0
- data/.gitignore +22 -0
- data/.gitmodules +3 -0
- data/.travis.yml +52 -0
- data/.yardopts +5 -0
- data/Gemfile +15 -0
- data/{spec/ffi/LICENSE.SPECS → LICENSE.SPECS} +1 -1
- data/README.md +1 -1
- data/Rakefile +28 -3
- data/appveyor.yml +22 -0
- data/ext/ffi_c/Call.c +1 -22
- data/ext/ffi_c/Call.h +0 -9
- data/ext/ffi_c/Closure.c +54 -0
- data/ext/ffi_c/{ClosurePool.h → Closure.h} +13 -23
- data/ext/ffi_c/Function.c +16 -25
- data/ext/ffi_c/Function.h +1 -2
- data/ext/ffi_c/FunctionInfo.c +0 -4
- data/ext/ffi_c/MethodHandle.c +33 -268
- data/ext/ffi_c/extconf.rb +3 -3
- data/ext/ffi_c/ffi.c +2 -2
- data/ext/ffi_c/libffi.bsd.mk +3 -3
- data/ext/ffi_c/libffi.darwin.mk +1 -1
- data/ext/ffi_c/libffi.gnu.mk +1 -1
- data/ext/ffi_c/libffi.mk +2 -2
- data/ext/ffi_c/libffi.vc.mk +1 -1
- data/ext/ffi_c/libffi.vc64.mk +1 -1
- data/ext/ffi_c/libffi/.appveyor.yml +48 -0
- data/ext/ffi_c/libffi/.gitignore +36 -0
- data/ext/ffi_c/libffi/.travis.yml +30 -0
- data/ext/ffi_c/libffi/.travis/install.sh +14 -0
- data/ext/ffi_c/libffi/Makefile.am +5 -3
- data/ext/ffi_c/libffi/acinclude.m4 +6 -0
- data/ext/ffi_c/libffi/autogen.sh +1 -1
- data/ext/ffi_c/libffi/config.guess +1466 -0
- data/ext/ffi_c/libffi/config.sub +1836 -0
- data/ext/ffi_c/libffi/configure.ac +2 -2
- data/ext/ffi_c/libffi/configure.host +15 -3
- data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +11 -15
- data/ext/ffi_c/libffi/include/ffi.h.in +6 -1
- data/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +465 -59
- data/ext/ffi_c/libffi/src/aarch64/ffi.c +33 -10
- data/ext/ffi_c/libffi/src/aarch64/sysv.S +2 -2
- data/ext/ffi_c/libffi/src/arm/ffi.c +12 -1
- data/ext/ffi_c/libffi/src/arm/sysv.S +1 -1
- data/ext/ffi_c/libffi/src/closures.c +143 -97
- data/ext/ffi_c/libffi/src/ia64/unix.S +2 -0
- data/ext/ffi_c/libffi/src/mips/ffi.c +8 -0
- data/ext/ffi_c/libffi/src/mips/ffitarget.h +1 -1
- data/ext/ffi_c/libffi/src/mips/n32.S +2 -0
- data/ext/ffi_c/libffi/src/powerpc/aix.S +239 -1
- data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +250 -3
- data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +86 -5
- data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +3 -0
- data/ext/ffi_c/libffi/src/x86/ffi.c +3 -1
- data/ext/ffi_c/libffi/src/x86/ffi64.c +26 -5
- data/ext/ffi_c/libffi/src/x86/sysv.S +2 -2
- data/ext/ffi_c/libffi/src/x86/unix64.S +1 -1
- data/ext/ffi_c/libffi/src/x86/win64.S +1 -1
- data/ext/ffi_c/libffi/testsuite/Makefile.am +2 -1
- data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +2 -1
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3float.c +95 -0
- data/ffi.gemspec +14 -1
- data/lib/ffi/library.rb +1 -1
- data/lib/ffi/version.rb +1 -1
- data/samples/getlogin.rb +8 -0
- data/samples/getpid.rb +8 -0
- data/samples/gettimeofday.rb +18 -0
- data/samples/hello.rb +7 -0
- data/samples/inotify.rb +60 -0
- data/samples/pty.rb +76 -0
- data/samples/qsort.rb +21 -0
- data/samples/sample_helper.rb +6 -0
- metadata +59 -81
- metadata.gz.sig +0 -0
- data/ext/ffi_c/ClosurePool.c +0 -283
- data/gen/Rakefile +0 -30
- data/libtest/Benchmark.c +0 -52
- data/libtest/BoolTest.c +0 -34
- data/libtest/BufferTest.c +0 -31
- data/libtest/ClosureTest.c +0 -205
- data/libtest/EnumTest.c +0 -51
- data/libtest/FunctionTest.c +0 -70
- data/libtest/GNUmakefile +0 -149
- data/libtest/GlobalVariable.c +0 -62
- data/libtest/LastErrorTest.c +0 -21
- data/libtest/NumberTest.c +0 -132
- data/libtest/PointerTest.c +0 -63
- data/libtest/ReferenceTest.c +0 -23
- data/libtest/StringTest.c +0 -34
- data/libtest/StructTest.c +0 -243
- data/libtest/UnionTest.c +0 -43
- data/libtest/VariadicTest.c +0 -99
- data/spec/ffi/async_callback_spec.rb +0 -35
- data/spec/ffi/bitmask_spec.rb +0 -575
- data/spec/ffi/bool_spec.rb +0 -32
- data/spec/ffi/buffer_spec.rb +0 -279
- data/spec/ffi/callback_spec.rb +0 -773
- data/spec/ffi/custom_param_type.rb +0 -37
- data/spec/ffi/custom_type_spec.rb +0 -74
- data/spec/ffi/dup_spec.rb +0 -52
- data/spec/ffi/enum_spec.rb +0 -423
- data/spec/ffi/errno_spec.rb +0 -20
- data/spec/ffi/ffi_spec.rb +0 -28
- data/spec/ffi/fixtures/Benchmark.c +0 -52
- data/spec/ffi/fixtures/BitmaskTest.c +0 -51
- data/spec/ffi/fixtures/BoolTest.c +0 -34
- data/spec/ffi/fixtures/BufferTest.c +0 -31
- data/spec/ffi/fixtures/ClosureTest.c +0 -205
- data/spec/ffi/fixtures/EnumTest.c +0 -51
- data/spec/ffi/fixtures/FunctionTest.c +0 -142
- data/spec/ffi/fixtures/GNUmakefile +0 -149
- data/spec/ffi/fixtures/GlobalVariable.c +0 -62
- data/spec/ffi/fixtures/LastErrorTest.c +0 -21
- data/spec/ffi/fixtures/NumberTest.c +0 -132
- data/spec/ffi/fixtures/PipeHelper.h +0 -21
- data/spec/ffi/fixtures/PipeHelperPosix.c +0 -41
- data/spec/ffi/fixtures/PipeHelperWindows.c +0 -72
- data/spec/ffi/fixtures/PointerTest.c +0 -63
- data/spec/ffi/fixtures/ReferenceTest.c +0 -23
- data/spec/ffi/fixtures/StringTest.c +0 -34
- data/spec/ffi/fixtures/StructTest.c +0 -243
- data/spec/ffi/fixtures/UnionTest.c +0 -43
- data/spec/ffi/fixtures/VariadicTest.c +0 -99
- data/spec/ffi/fixtures/classes.rb +0 -438
- data/spec/ffi/function_spec.rb +0 -97
- data/spec/ffi/io_spec.rb +0 -16
- data/spec/ffi/library_spec.rb +0 -286
- data/spec/ffi/long_double.rb +0 -30
- data/spec/ffi/managed_struct_spec.rb +0 -68
- data/spec/ffi/memorypointer_spec.rb +0 -78
- data/spec/ffi/number_spec.rb +0 -247
- data/spec/ffi/platform_spec.rb +0 -114
- data/spec/ffi/pointer_spec.rb +0 -285
- data/spec/ffi/rbx/attach_function_spec.rb +0 -34
- data/spec/ffi/rbx/memory_pointer_spec.rb +0 -198
- data/spec/ffi/rbx/spec_helper.rb +0 -6
- data/spec/ffi/rbx/struct_spec.rb +0 -18
- data/spec/ffi/spec_helper.rb +0 -93
- data/spec/ffi/string_spec.rb +0 -118
- data/spec/ffi/strptr_spec.rb +0 -50
- data/spec/ffi/struct_by_ref_spec.rb +0 -43
- data/spec/ffi/struct_callback_spec.rb +0 -69
- data/spec/ffi/struct_initialize_spec.rb +0 -35
- data/spec/ffi/struct_packed_spec.rb +0 -50
- data/spec/ffi/struct_spec.rb +0 -882
- data/spec/ffi/typedef_spec.rb +0 -91
- data/spec/ffi/union_spec.rb +0 -67
- data/spec/ffi/variadic_spec.rb +0 -132
- data/spec/spec.opts +0 -4
data/ffi.gemspec
CHANGED
@@ -8,7 +8,20 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.homepage = 'http://wiki.github.com/ffi/ffi'
|
9
9
|
s.summary = 'Ruby FFI'
|
10
10
|
s.description = 'Ruby FFI library'
|
11
|
-
s.files =
|
11
|
+
s.files = `git ls-files -z`.split("\x0").reject do |f|
|
12
|
+
f =~ /^(bench|gen|libtest|nbproject|spec)/
|
13
|
+
end
|
14
|
+
|
15
|
+
# Add libffi git files
|
16
|
+
lfs = `git --git-dir ext/ffi_c/libffi/.git ls-files -z`.split("\x0")
|
17
|
+
# Add autoconf generated files of libffi
|
18
|
+
lfs += %w[ configure config.guess config.sub install-sh ltmain.sh missing fficonfig.h.in ]
|
19
|
+
# Add automake generated files of libffi
|
20
|
+
lfs += `git --git-dir ext/ffi_c/libffi/.git ls-files -z *.am */*.am`.gsub(".am\0", ".in\0").split("\x0")
|
21
|
+
s.files += lfs.map do |f|
|
22
|
+
File.join("ext/ffi_c/libffi", f)
|
23
|
+
end
|
24
|
+
|
12
25
|
s.extensions << 'ext/ffi_c/extconf.rb'
|
13
26
|
s.has_rdoc = false
|
14
27
|
s.rdoc_options = %w[--exclude=ext/ffi_c/.*\.o$ --exclude=ffi_c\.(bundle|so)$]
|
data/lib/ffi/library.rb
CHANGED
@@ -344,7 +344,7 @@ module FFI
|
|
344
344
|
raise FFI::NotFoundError.new(cname, ffi_libraries) if address.nil? || address.null?
|
345
345
|
if type.is_a?(Class) && type < FFI::Struct
|
346
346
|
# If it is a global struct, just attach directly to the pointer
|
347
|
-
s = type.new(address)
|
347
|
+
s = s = type.new(address) # Assigning twice to suppress unused variable warning
|
348
348
|
self.module_eval <<-code, __FILE__, __LINE__
|
349
349
|
@@ffi_gvar_#{mname} = s
|
350
350
|
def self.#{mname}
|
data/lib/ffi/version.rb
CHANGED
data/samples/getlogin.rb
ADDED
data/samples/getpid.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'ffi'
|
3
|
+
class Timeval < FFI::Struct
|
4
|
+
rb_maj, rb_min, rb_micro = RUBY_VERSION.split('.')
|
5
|
+
if rb_maj.to_i >= 1 && rb_min.to_i >= 9 || RUBY_PLATFORM =~ /java/
|
6
|
+
layout :tv_sec => :ulong, :tv_usec => :ulong
|
7
|
+
else
|
8
|
+
layout :tv_sec, :ulong, 0, :tv_usec, :ulong, 4
|
9
|
+
end
|
10
|
+
end
|
11
|
+
module LibC
|
12
|
+
extend FFI::Library
|
13
|
+
ffi_lib FFI::Library::LIBC
|
14
|
+
attach_function :gettimeofday, [ :pointer, :pointer ], :int
|
15
|
+
end
|
16
|
+
t = Timeval.new
|
17
|
+
LibC.gettimeofday(t.pointer, nil)
|
18
|
+
puts "t.tv_sec=#{t[:tv_sec]} t.tv_usec=#{t[:tv_usec]}"
|
data/samples/hello.rb
ADDED
data/samples/inotify.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'ffi'
|
3
|
+
module Inotify
|
4
|
+
extend FFI::Library
|
5
|
+
ffi_lib FFI::Library::LIBC
|
6
|
+
class Event < FFI::Struct
|
7
|
+
layout \
|
8
|
+
:wd, :int,
|
9
|
+
:mask, :uint,
|
10
|
+
:cookie, :uint,
|
11
|
+
:len, :uint
|
12
|
+
end
|
13
|
+
attach_function :init, :inotify_init, [ ], :int
|
14
|
+
attach_function :add_watch, :inotify_add_watch, [ :int, :string, :uint ], :int
|
15
|
+
attach_function :rm_watch, :inotify_rm_watch, [ :int, :uint ], :int
|
16
|
+
attach_function :read, [ :int, :buffer_out, :uint ], :int
|
17
|
+
IN_ACCESS=0x00000001
|
18
|
+
IN_MODIFY=0x00000002
|
19
|
+
IN_ATTRIB=0x00000004
|
20
|
+
IN_CLOSE_WRITE=0x00000008
|
21
|
+
IN_CLOSE_NOWRITE=0x00000010
|
22
|
+
IN_CLOSE=(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
|
23
|
+
IN_OPEN=0x00000020
|
24
|
+
IN_MOVED_FROM=0x00000040
|
25
|
+
IN_MOVED_TO=0x00000080
|
26
|
+
IN_MOVE= (IN_MOVED_FROM | IN_MOVED_TO)
|
27
|
+
IN_CREATE=0x00000100
|
28
|
+
IN_DELETE=0x00000200
|
29
|
+
IN_DELETE_SELF=0x00000400
|
30
|
+
IN_MOVE_SELF=0x00000800
|
31
|
+
# Events sent by the kernel.
|
32
|
+
IN_UNMOUNT=0x00002000
|
33
|
+
IN_Q_OVERFLOW=0x00004000
|
34
|
+
IN_IGNORED=0x00008000
|
35
|
+
IN_ONLYDIR=0x01000000
|
36
|
+
IN_DONT_FOLLOW=0x02000000
|
37
|
+
IN_MASK_ADD=0x20000000
|
38
|
+
IN_ISDIR=0x40000000
|
39
|
+
IN_ONESHOT=0x80000000
|
40
|
+
IN_ALL_EVENTS=(IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE \
|
41
|
+
| IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM \
|
42
|
+
| IN_MOVED_TO | IN_CREATE | IN_DELETE \
|
43
|
+
| IN_DELETE_SELF | IN_MOVE_SELF)
|
44
|
+
|
45
|
+
end
|
46
|
+
if $0 == __FILE__
|
47
|
+
fd = Inotify.init
|
48
|
+
puts "fd=#{fd}"
|
49
|
+
wd = Inotify.add_watch(fd, "/tmp/", Inotify::IN_ALL_EVENTS)
|
50
|
+
fp = FFI::IO.for_fd(fd)
|
51
|
+
puts "wfp=#{fp}"
|
52
|
+
while true
|
53
|
+
buf = FFI::Buffer.alloc_out(Inotify::Event.size + 4096, 1, false)
|
54
|
+
ev = Inotify::Event.new buf
|
55
|
+
ready = IO.select([ fp ], nil, nil, nil)
|
56
|
+
n = Inotify.read(fd, buf, buf.total)
|
57
|
+
puts "Read #{n} bytes from inotify fd"
|
58
|
+
puts "event.wd=#{ev[:wd]} mask=#{ev[:mask]} len=#{ev[:len]} name=#{ev[:len] > 0 ? buf.get_string(16) : 'unknown'}"
|
59
|
+
end
|
60
|
+
end
|
data/samples/pty.rb
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'ffi'
|
2
|
+
|
3
|
+
|
4
|
+
module PTY
|
5
|
+
private
|
6
|
+
module LibC
|
7
|
+
extend FFI::Library
|
8
|
+
ffi_lib FFI::Library::LIBC
|
9
|
+
attach_function :forkpty, [ :buffer_out, :buffer_out, :buffer_in, :buffer_in ], :int
|
10
|
+
attach_function :openpty, [ :buffer_out, :buffer_out, :buffer_out, :buffer_in, :buffer_in ], :int
|
11
|
+
attach_function :login_tty, [ :int ], :int
|
12
|
+
attach_function :close, [ :int ], :int
|
13
|
+
attach_function :strerror, [ :int ], :string
|
14
|
+
attach_function :fork, [], :int
|
15
|
+
attach_function :execv, [ :string, :buffer_in ], :int
|
16
|
+
attach_function :execvp, [ :string, :buffer_in ], :int
|
17
|
+
attach_function :dup2, [ :int, :int ], :int
|
18
|
+
attach_function :dup, [ :int ], :int
|
19
|
+
end
|
20
|
+
Buffer = FFI::Buffer
|
21
|
+
def self.build_args(args)
|
22
|
+
cmd = args.shift
|
23
|
+
cmd_args = args.map do |arg|
|
24
|
+
MemoryPointer.from_string(arg)
|
25
|
+
end
|
26
|
+
exec_args = MemoryPointer.new(:pointer, 1 + cmd_args.length + 1)
|
27
|
+
exec_cmd = MemoryPointer.from_string(cmd)
|
28
|
+
exec_args[0].put_pointer(0, exec_cmd)
|
29
|
+
cmd_args.each_with_index do |arg, i|
|
30
|
+
exec_args[i + 1].put_pointer(0, arg)
|
31
|
+
end
|
32
|
+
[ cmd, exec_args ]
|
33
|
+
end
|
34
|
+
public
|
35
|
+
def self.getpty(*args)
|
36
|
+
mfdp = Buffer.new :int
|
37
|
+
name = Buffer.new 1024
|
38
|
+
#
|
39
|
+
# All the execv setup is done in the parent, since doing anything other than
|
40
|
+
# execv in the child after fork is really flakey
|
41
|
+
#
|
42
|
+
exec_cmd, exec_args = build_args(args)
|
43
|
+
pid = LibC.forkpty(mfdp, name, nil, nil)
|
44
|
+
raise "forkpty failed: #{LibC.strerror(FFI.errno)}" if pid < 0
|
45
|
+
if pid == 0
|
46
|
+
LibC.execvp(exec_cmd, exec_args)
|
47
|
+
exit 1
|
48
|
+
end
|
49
|
+
masterfd = mfdp.get_int(0)
|
50
|
+
rfp = FFI::IO.for_fd(masterfd, "r")
|
51
|
+
wfp = FFI::IO.for_fd(LibC.dup(masterfd), "w")
|
52
|
+
if block_given?
|
53
|
+
yield rfp, wfp, pid
|
54
|
+
rfp.close unless rfp.closed?
|
55
|
+
wfp.close unless wfp.closed?
|
56
|
+
else
|
57
|
+
[ rfp, wfp, pid ]
|
58
|
+
end
|
59
|
+
end
|
60
|
+
def self.spawn(*args, &block)
|
61
|
+
self.getpty("/bin/sh", "-c", args[0], &block)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
module LibC
|
65
|
+
extend FFI::Library
|
66
|
+
attach_function :close, [ :int ], :int
|
67
|
+
attach_function :write, [ :int, :buffer_in, :ulong ], :long
|
68
|
+
attach_function :read, [ :int, :buffer_out, :ulong ], :long
|
69
|
+
end
|
70
|
+
PTY.getpty("/bin/ls", "-alR", "/") { |rfd, wfd, pid|
|
71
|
+
#PTY.spawn("ls -laR /") { |rfd, wfd, pid|
|
72
|
+
puts "child pid=#{pid}"
|
73
|
+
while !rfd.eof? && (buf = rfd.gets)
|
74
|
+
puts "child: '#{buf.strip}'"
|
75
|
+
end
|
76
|
+
}
|
data/samples/qsort.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'ffi'
|
3
|
+
|
4
|
+
module LibC
|
5
|
+
extend FFI::Library
|
6
|
+
ffi_lib FFI::Library::LIBC
|
7
|
+
callback :qsort_cmp, [ :pointer, :pointer ], :int
|
8
|
+
attach_function :qsort, [ :pointer, :ulong, :ulong, :qsort_cmp ], :int
|
9
|
+
end
|
10
|
+
|
11
|
+
p = FFI::MemoryPointer.new(:int, 2)
|
12
|
+
p.put_array_of_int32(0, [ 2, 1 ])
|
13
|
+
puts "ptr=#{p.inspect}"
|
14
|
+
puts "Before qsort #{p.get_array_of_int32(0, 2).join(', ')}"
|
15
|
+
LibC.qsort(p, 2, 4) do |p1, p2|
|
16
|
+
i1 = p1.get_int32(0)
|
17
|
+
i2 = p2.get_int32(0)
|
18
|
+
puts "In block: comparing #{i1} and #{i2}"
|
19
|
+
i1 < i2 ? -1 : i1 > i2 ? 1 : 0
|
20
|
+
end
|
21
|
+
puts "After qsort #{p.get_array_of_int32(0, 2).join(', ')}"
|
metadata
CHANGED
@@ -1,14 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ffi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.9.
|
4
|
+
version: 1.9.22
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wayne Meissner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
|
-
cert_chain:
|
11
|
-
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDPDCCAiSgAwIBAgIBAzANBgkqhkiG9w0BAQUFADBEMQ0wCwYDVQQDDARsYXJz
|
14
|
+
MR8wHQYKCZImiZPyLGQBGRYPZ3JlaXotcmVpbnNkb3JmMRIwEAYKCZImiZPyLGQB
|
15
|
+
GRYCZGUwHhcNMTcwNDA0MTgyNDE1WhcNMTgwNDA0MTgyNDE1WjBEMQ0wCwYDVQQD
|
16
|
+
DARsYXJzMR8wHQYKCZImiZPyLGQBGRYPZ3JlaXotcmVpbnNkb3JmMRIwEAYKCZIm
|
17
|
+
iZPyLGQBGRYCZGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZb4Uv
|
18
|
+
RFJfRu/VEWiy3psh2jinETjiuBrL0NeRFGf8H7iU9+gx/DI/FFhfHGLrDeIskrJx
|
19
|
+
YIWDMmEjVO10UUdj7wu4ZhmU++0Cd7Kq9/TyP/shIP3IjqHjVLCnJ3P6f1cl5rxZ
|
20
|
+
gqo+d3BAoDrmPk0rtaf6QopwUw9RBiF8V4HqvpiY+ruJotP5UQDP4/lVOKvA8PI9
|
21
|
+
P0GmVbFBrbc7Zt5h78N3UyOK0u+nvOC23BvyHXzCtcFsXCoEkt+Wwh0RFqVZdnjM
|
22
|
+
LMO2vULHKKHDdX54K/sbVCj9pN9h1aotNzrEyo55zxn0G9PHg/G3P8nMvAXPkUTe
|
23
|
+
brhXrfCwWRvOXA4TAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0G
|
24
|
+
A1UdDgQWBBRAHK81igrXodaDj8a8/BIKsaZrETANBgkqhkiG9w0BAQUFAAOCAQEA
|
25
|
+
Wbp+grpaqUH+RiXNXmi/5xBfvSYLbxWj+DZpCSnQW+DMfx46RVVko3b7BtKDs2zs
|
26
|
+
EtKM6r6s7VbllPgcYUzaP92uzPqCw8FncvqG0+B+Nd4C2jKzPxAQyzYXv/3bQhv1
|
27
|
+
sXAzEqLQqKx5V63eBDh1TPvPTEMfJwmjcdcbvMwFSt5EcUkT63W13ZJXX23JYp1K
|
28
|
+
KRW+N1WIYz8RSBNaQIP2v5Inb9vUA+jPUOcdyLHoi205lyZ28hE4lcnh9Zs02aHs
|
29
|
+
Ao8FZozVJz8xVEuYNJsL2k70w0FiwXwoWyvKyekgPBvYNUj4JGDMtBBayJTOpDs7
|
30
|
+
3EVmCm5IRuqZ1UcDFouQ9w==
|
31
|
+
-----END CERTIFICATE-----
|
32
|
+
date: 2018-02-22 00:00:00.000000000 Z
|
12
33
|
dependencies:
|
13
34
|
- !ruby/object:Gem::Dependency
|
14
35
|
name: rake
|
@@ -87,10 +108,17 @@ extensions:
|
|
87
108
|
- ext/ffi_c/extconf.rb
|
88
109
|
extra_rdoc_files: []
|
89
110
|
files:
|
111
|
+
- ".gitignore"
|
112
|
+
- ".gitmodules"
|
113
|
+
- ".travis.yml"
|
114
|
+
- ".yardopts"
|
90
115
|
- COPYING
|
116
|
+
- Gemfile
|
91
117
|
- LICENSE
|
118
|
+
- LICENSE.SPECS
|
92
119
|
- README.md
|
93
120
|
- Rakefile
|
121
|
+
- appveyor.yml
|
94
122
|
- ext/ffi_c/AbstractMemory.c
|
95
123
|
- ext/ffi_c/AbstractMemory.h
|
96
124
|
- ext/ffi_c/ArrayType.c
|
@@ -98,8 +126,8 @@ files:
|
|
98
126
|
- ext/ffi_c/Buffer.c
|
99
127
|
- ext/ffi_c/Call.c
|
100
128
|
- ext/ffi_c/Call.h
|
101
|
-
- ext/ffi_c/
|
102
|
-
- ext/ffi_c/
|
129
|
+
- ext/ffi_c/Closure.c
|
130
|
+
- ext/ffi_c/Closure.h
|
103
131
|
- ext/ffi_c/DataConverter.c
|
104
132
|
- ext/ffi_c/DynamicLibrary.c
|
105
133
|
- ext/ffi_c/DynamicLibrary.h
|
@@ -143,30 +171,43 @@ files:
|
|
143
171
|
- ext/ffi_c/libffi.mk
|
144
172
|
- ext/ffi_c/libffi.vc.mk
|
145
173
|
- ext/ffi_c/libffi.vc64.mk
|
174
|
+
- ext/ffi_c/libffi/.appveyor.yml
|
175
|
+
- ext/ffi_c/libffi/.gitignore
|
176
|
+
- ext/ffi_c/libffi/.travis.yml
|
177
|
+
- ext/ffi_c/libffi/.travis/install.sh
|
146
178
|
- ext/ffi_c/libffi/ChangeLog.libffi
|
147
179
|
- ext/ffi_c/libffi/ChangeLog.libffi-3.1
|
148
180
|
- ext/ffi_c/libffi/ChangeLog.libgcj
|
149
181
|
- ext/ffi_c/libffi/ChangeLog.v1
|
150
182
|
- ext/ffi_c/libffi/LICENSE
|
151
183
|
- ext/ffi_c/libffi/Makefile.am
|
184
|
+
- ext/ffi_c/libffi/Makefile.in
|
152
185
|
- ext/ffi_c/libffi/README
|
153
186
|
- ext/ffi_c/libffi/acinclude.m4
|
154
187
|
- ext/ffi_c/libffi/autogen.sh
|
188
|
+
- ext/ffi_c/libffi/config.guess
|
189
|
+
- ext/ffi_c/libffi/config.sub
|
190
|
+
- ext/ffi_c/libffi/configure
|
155
191
|
- ext/ffi_c/libffi/configure.ac
|
156
192
|
- ext/ffi_c/libffi/configure.host
|
157
193
|
- ext/ffi_c/libffi/doc/Makefile.am
|
194
|
+
- ext/ffi_c/libffi/doc/Makefile.in
|
158
195
|
- ext/ffi_c/libffi/doc/libffi.texi
|
159
196
|
- ext/ffi_c/libffi/doc/version.texi
|
197
|
+
- ext/ffi_c/libffi/fficonfig.h.in
|
160
198
|
- ext/ffi_c/libffi/generate-darwin-source-and-headers.py
|
161
199
|
- ext/ffi_c/libffi/include/Makefile.am
|
200
|
+
- ext/ffi_c/libffi/include/Makefile.in
|
162
201
|
- ext/ffi_c/libffi/include/ffi.h.in
|
163
202
|
- ext/ffi_c/libffi/include/ffi_cfi.h
|
164
203
|
- ext/ffi_c/libffi/include/ffi_common.h
|
204
|
+
- ext/ffi_c/libffi/install-sh
|
165
205
|
- ext/ffi_c/libffi/libffi.map.in
|
166
206
|
- ext/ffi_c/libffi/libffi.pc.in
|
167
207
|
- ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj
|
168
208
|
- ext/ffi_c/libffi/libtool-ldflags
|
169
209
|
- ext/ffi_c/libffi/libtool-version
|
210
|
+
- ext/ffi_c/libffi/ltmain.sh
|
170
211
|
- ext/ffi_c/libffi/m4/asmcfi.m4
|
171
212
|
- ext/ffi_c/libffi/m4/ax_append_flag.m4
|
172
213
|
- ext/ffi_c/libffi/m4/ax_cc_maxopt.m4
|
@@ -178,10 +219,12 @@ files:
|
|
178
219
|
- ext/ffi_c/libffi/m4/ax_gcc_archflag.m4
|
179
220
|
- ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4
|
180
221
|
- ext/ffi_c/libffi/man/Makefile.am
|
222
|
+
- ext/ffi_c/libffi/man/Makefile.in
|
181
223
|
- ext/ffi_c/libffi/man/ffi.3
|
182
224
|
- ext/ffi_c/libffi/man/ffi_call.3
|
183
225
|
- ext/ffi_c/libffi/man/ffi_prep_cif.3
|
184
226
|
- ext/ffi_c/libffi/man/ffi_prep_cif_var.3
|
227
|
+
- ext/ffi_c/libffi/missing
|
185
228
|
- ext/ffi_c/libffi/msvcc.sh
|
186
229
|
- ext/ffi_c/libffi/src/aarch64/ffi.c
|
187
230
|
- ext/ffi_c/libffi/src/aarch64/ffitarget.h
|
@@ -306,6 +349,7 @@ files:
|
|
306
349
|
- ext/ffi_c/libffi/src/xtensa/sysv.S
|
307
350
|
- ext/ffi_c/libffi/stamp-h.in
|
308
351
|
- ext/ffi_c/libffi/testsuite/Makefile.am
|
352
|
+
- ext/ffi_c/libffi/testsuite/Makefile.in
|
309
353
|
- ext/ffi_c/libffi/testsuite/config/default.exp
|
310
354
|
- ext/ffi_c/libffi/testsuite/lib/libffi.exp
|
311
355
|
- ext/ffi_c/libffi/testsuite/lib/target-libpath.exp
|
@@ -333,6 +377,7 @@ files:
|
|
333
377
|
- ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c
|
334
378
|
- ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c
|
335
379
|
- ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c
|
380
|
+
- ext/ffi_c/libffi/testsuite/libffi.call/cls_3float.c
|
336
381
|
- ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c
|
337
382
|
- ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c
|
338
383
|
- ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c
|
@@ -508,7 +553,6 @@ files:
|
|
508
553
|
- ext/ffi_c/win32/stdbool.h
|
509
554
|
- ext/ffi_c/win32/stdint.h
|
510
555
|
- ffi.gemspec
|
511
|
-
- gen/Rakefile
|
512
556
|
- lib/ffi.rb
|
513
557
|
- lib/ffi/autopointer.rb
|
514
558
|
- lib/ffi/buffer.rb
|
@@ -566,80 +610,14 @@ files:
|
|
566
610
|
- lib/ffi/union.rb
|
567
611
|
- lib/ffi/variadic.rb
|
568
612
|
- lib/ffi/version.rb
|
569
|
-
-
|
570
|
-
-
|
571
|
-
-
|
572
|
-
-
|
573
|
-
-
|
574
|
-
-
|
575
|
-
-
|
576
|
-
-
|
577
|
-
- libtest/LastErrorTest.c
|
578
|
-
- libtest/NumberTest.c
|
579
|
-
- libtest/PointerTest.c
|
580
|
-
- libtest/ReferenceTest.c
|
581
|
-
- libtest/StringTest.c
|
582
|
-
- libtest/StructTest.c
|
583
|
-
- libtest/UnionTest.c
|
584
|
-
- libtest/VariadicTest.c
|
585
|
-
- spec/ffi/LICENSE.SPECS
|
586
|
-
- spec/ffi/async_callback_spec.rb
|
587
|
-
- spec/ffi/bitmask_spec.rb
|
588
|
-
- spec/ffi/bool_spec.rb
|
589
|
-
- spec/ffi/buffer_spec.rb
|
590
|
-
- spec/ffi/callback_spec.rb
|
591
|
-
- spec/ffi/custom_param_type.rb
|
592
|
-
- spec/ffi/custom_type_spec.rb
|
593
|
-
- spec/ffi/dup_spec.rb
|
594
|
-
- spec/ffi/enum_spec.rb
|
595
|
-
- spec/ffi/errno_spec.rb
|
596
|
-
- spec/ffi/ffi_spec.rb
|
597
|
-
- spec/ffi/fixtures/Benchmark.c
|
598
|
-
- spec/ffi/fixtures/BitmaskTest.c
|
599
|
-
- spec/ffi/fixtures/BoolTest.c
|
600
|
-
- spec/ffi/fixtures/BufferTest.c
|
601
|
-
- spec/ffi/fixtures/ClosureTest.c
|
602
|
-
- spec/ffi/fixtures/EnumTest.c
|
603
|
-
- spec/ffi/fixtures/FunctionTest.c
|
604
|
-
- spec/ffi/fixtures/GNUmakefile
|
605
|
-
- spec/ffi/fixtures/GlobalVariable.c
|
606
|
-
- spec/ffi/fixtures/LastErrorTest.c
|
607
|
-
- spec/ffi/fixtures/NumberTest.c
|
608
|
-
- spec/ffi/fixtures/PipeHelper.h
|
609
|
-
- spec/ffi/fixtures/PipeHelperPosix.c
|
610
|
-
- spec/ffi/fixtures/PipeHelperWindows.c
|
611
|
-
- spec/ffi/fixtures/PointerTest.c
|
612
|
-
- spec/ffi/fixtures/ReferenceTest.c
|
613
|
-
- spec/ffi/fixtures/StringTest.c
|
614
|
-
- spec/ffi/fixtures/StructTest.c
|
615
|
-
- spec/ffi/fixtures/UnionTest.c
|
616
|
-
- spec/ffi/fixtures/VariadicTest.c
|
617
|
-
- spec/ffi/fixtures/classes.rb
|
618
|
-
- spec/ffi/function_spec.rb
|
619
|
-
- spec/ffi/io_spec.rb
|
620
|
-
- spec/ffi/library_spec.rb
|
621
|
-
- spec/ffi/long_double.rb
|
622
|
-
- spec/ffi/managed_struct_spec.rb
|
623
|
-
- spec/ffi/memorypointer_spec.rb
|
624
|
-
- spec/ffi/number_spec.rb
|
625
|
-
- spec/ffi/platform_spec.rb
|
626
|
-
- spec/ffi/pointer_spec.rb
|
627
|
-
- spec/ffi/rbx/attach_function_spec.rb
|
628
|
-
- spec/ffi/rbx/memory_pointer_spec.rb
|
629
|
-
- spec/ffi/rbx/spec_helper.rb
|
630
|
-
- spec/ffi/rbx/struct_spec.rb
|
631
|
-
- spec/ffi/spec_helper.rb
|
632
|
-
- spec/ffi/string_spec.rb
|
633
|
-
- spec/ffi/strptr_spec.rb
|
634
|
-
- spec/ffi/struct_by_ref_spec.rb
|
635
|
-
- spec/ffi/struct_callback_spec.rb
|
636
|
-
- spec/ffi/struct_initialize_spec.rb
|
637
|
-
- spec/ffi/struct_packed_spec.rb
|
638
|
-
- spec/ffi/struct_spec.rb
|
639
|
-
- spec/ffi/typedef_spec.rb
|
640
|
-
- spec/ffi/union_spec.rb
|
641
|
-
- spec/ffi/variadic_spec.rb
|
642
|
-
- spec/spec.opts
|
613
|
+
- samples/getlogin.rb
|
614
|
+
- samples/getpid.rb
|
615
|
+
- samples/gettimeofday.rb
|
616
|
+
- samples/hello.rb
|
617
|
+
- samples/inotify.rb
|
618
|
+
- samples/pty.rb
|
619
|
+
- samples/qsort.rb
|
620
|
+
- samples/sample_helper.rb
|
643
621
|
homepage: http://wiki.github.com/ffi/ffi
|
644
622
|
licenses:
|
645
623
|
- BSD-3-Clause
|
@@ -662,7 +640,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
662
640
|
version: '0'
|
663
641
|
requirements: []
|
664
642
|
rubyforge_project:
|
665
|
-
rubygems_version: 2.
|
643
|
+
rubygems_version: 2.7.3
|
666
644
|
signing_key:
|
667
645
|
specification_version: 4
|
668
646
|
summary: Ruby FFI
|