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.

Files changed (151) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +3 -0
  3. data.tar.gz.sig +0 -0
  4. data/.gitignore +22 -0
  5. data/.gitmodules +3 -0
  6. data/.travis.yml +52 -0
  7. data/.yardopts +5 -0
  8. data/Gemfile +15 -0
  9. data/{spec/ffi/LICENSE.SPECS → LICENSE.SPECS} +1 -1
  10. data/README.md +1 -1
  11. data/Rakefile +28 -3
  12. data/appveyor.yml +22 -0
  13. data/ext/ffi_c/Call.c +1 -22
  14. data/ext/ffi_c/Call.h +0 -9
  15. data/ext/ffi_c/Closure.c +54 -0
  16. data/ext/ffi_c/{ClosurePool.h → Closure.h} +13 -23
  17. data/ext/ffi_c/Function.c +16 -25
  18. data/ext/ffi_c/Function.h +1 -2
  19. data/ext/ffi_c/FunctionInfo.c +0 -4
  20. data/ext/ffi_c/MethodHandle.c +33 -268
  21. data/ext/ffi_c/extconf.rb +3 -3
  22. data/ext/ffi_c/ffi.c +2 -2
  23. data/ext/ffi_c/libffi.bsd.mk +3 -3
  24. data/ext/ffi_c/libffi.darwin.mk +1 -1
  25. data/ext/ffi_c/libffi.gnu.mk +1 -1
  26. data/ext/ffi_c/libffi.mk +2 -2
  27. data/ext/ffi_c/libffi.vc.mk +1 -1
  28. data/ext/ffi_c/libffi.vc64.mk +1 -1
  29. data/ext/ffi_c/libffi/.appveyor.yml +48 -0
  30. data/ext/ffi_c/libffi/.gitignore +36 -0
  31. data/ext/ffi_c/libffi/.travis.yml +30 -0
  32. data/ext/ffi_c/libffi/.travis/install.sh +14 -0
  33. data/ext/ffi_c/libffi/Makefile.am +5 -3
  34. data/ext/ffi_c/libffi/acinclude.m4 +6 -0
  35. data/ext/ffi_c/libffi/autogen.sh +1 -1
  36. data/ext/ffi_c/libffi/config.guess +1466 -0
  37. data/ext/ffi_c/libffi/config.sub +1836 -0
  38. data/ext/ffi_c/libffi/configure.ac +2 -2
  39. data/ext/ffi_c/libffi/configure.host +15 -3
  40. data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +11 -15
  41. data/ext/ffi_c/libffi/include/ffi.h.in +6 -1
  42. data/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +465 -59
  43. data/ext/ffi_c/libffi/src/aarch64/ffi.c +33 -10
  44. data/ext/ffi_c/libffi/src/aarch64/sysv.S +2 -2
  45. data/ext/ffi_c/libffi/src/arm/ffi.c +12 -1
  46. data/ext/ffi_c/libffi/src/arm/sysv.S +1 -1
  47. data/ext/ffi_c/libffi/src/closures.c +143 -97
  48. data/ext/ffi_c/libffi/src/ia64/unix.S +2 -0
  49. data/ext/ffi_c/libffi/src/mips/ffi.c +8 -0
  50. data/ext/ffi_c/libffi/src/mips/ffitarget.h +1 -1
  51. data/ext/ffi_c/libffi/src/mips/n32.S +2 -0
  52. data/ext/ffi_c/libffi/src/powerpc/aix.S +239 -1
  53. data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +250 -3
  54. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +86 -5
  55. data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +3 -0
  56. data/ext/ffi_c/libffi/src/x86/ffi.c +3 -1
  57. data/ext/ffi_c/libffi/src/x86/ffi64.c +26 -5
  58. data/ext/ffi_c/libffi/src/x86/sysv.S +2 -2
  59. data/ext/ffi_c/libffi/src/x86/unix64.S +1 -1
  60. data/ext/ffi_c/libffi/src/x86/win64.S +1 -1
  61. data/ext/ffi_c/libffi/testsuite/Makefile.am +2 -1
  62. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +2 -1
  63. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3float.c +95 -0
  64. data/ffi.gemspec +14 -1
  65. data/lib/ffi/library.rb +1 -1
  66. data/lib/ffi/version.rb +1 -1
  67. data/samples/getlogin.rb +8 -0
  68. data/samples/getpid.rb +8 -0
  69. data/samples/gettimeofday.rb +18 -0
  70. data/samples/hello.rb +7 -0
  71. data/samples/inotify.rb +60 -0
  72. data/samples/pty.rb +76 -0
  73. data/samples/qsort.rb +21 -0
  74. data/samples/sample_helper.rb +6 -0
  75. metadata +59 -81
  76. metadata.gz.sig +0 -0
  77. data/ext/ffi_c/ClosurePool.c +0 -283
  78. data/gen/Rakefile +0 -30
  79. data/libtest/Benchmark.c +0 -52
  80. data/libtest/BoolTest.c +0 -34
  81. data/libtest/BufferTest.c +0 -31
  82. data/libtest/ClosureTest.c +0 -205
  83. data/libtest/EnumTest.c +0 -51
  84. data/libtest/FunctionTest.c +0 -70
  85. data/libtest/GNUmakefile +0 -149
  86. data/libtest/GlobalVariable.c +0 -62
  87. data/libtest/LastErrorTest.c +0 -21
  88. data/libtest/NumberTest.c +0 -132
  89. data/libtest/PointerTest.c +0 -63
  90. data/libtest/ReferenceTest.c +0 -23
  91. data/libtest/StringTest.c +0 -34
  92. data/libtest/StructTest.c +0 -243
  93. data/libtest/UnionTest.c +0 -43
  94. data/libtest/VariadicTest.c +0 -99
  95. data/spec/ffi/async_callback_spec.rb +0 -35
  96. data/spec/ffi/bitmask_spec.rb +0 -575
  97. data/spec/ffi/bool_spec.rb +0 -32
  98. data/spec/ffi/buffer_spec.rb +0 -279
  99. data/spec/ffi/callback_spec.rb +0 -773
  100. data/spec/ffi/custom_param_type.rb +0 -37
  101. data/spec/ffi/custom_type_spec.rb +0 -74
  102. data/spec/ffi/dup_spec.rb +0 -52
  103. data/spec/ffi/enum_spec.rb +0 -423
  104. data/spec/ffi/errno_spec.rb +0 -20
  105. data/spec/ffi/ffi_spec.rb +0 -28
  106. data/spec/ffi/fixtures/Benchmark.c +0 -52
  107. data/spec/ffi/fixtures/BitmaskTest.c +0 -51
  108. data/spec/ffi/fixtures/BoolTest.c +0 -34
  109. data/spec/ffi/fixtures/BufferTest.c +0 -31
  110. data/spec/ffi/fixtures/ClosureTest.c +0 -205
  111. data/spec/ffi/fixtures/EnumTest.c +0 -51
  112. data/spec/ffi/fixtures/FunctionTest.c +0 -142
  113. data/spec/ffi/fixtures/GNUmakefile +0 -149
  114. data/spec/ffi/fixtures/GlobalVariable.c +0 -62
  115. data/spec/ffi/fixtures/LastErrorTest.c +0 -21
  116. data/spec/ffi/fixtures/NumberTest.c +0 -132
  117. data/spec/ffi/fixtures/PipeHelper.h +0 -21
  118. data/spec/ffi/fixtures/PipeHelperPosix.c +0 -41
  119. data/spec/ffi/fixtures/PipeHelperWindows.c +0 -72
  120. data/spec/ffi/fixtures/PointerTest.c +0 -63
  121. data/spec/ffi/fixtures/ReferenceTest.c +0 -23
  122. data/spec/ffi/fixtures/StringTest.c +0 -34
  123. data/spec/ffi/fixtures/StructTest.c +0 -243
  124. data/spec/ffi/fixtures/UnionTest.c +0 -43
  125. data/spec/ffi/fixtures/VariadicTest.c +0 -99
  126. data/spec/ffi/fixtures/classes.rb +0 -438
  127. data/spec/ffi/function_spec.rb +0 -97
  128. data/spec/ffi/io_spec.rb +0 -16
  129. data/spec/ffi/library_spec.rb +0 -286
  130. data/spec/ffi/long_double.rb +0 -30
  131. data/spec/ffi/managed_struct_spec.rb +0 -68
  132. data/spec/ffi/memorypointer_spec.rb +0 -78
  133. data/spec/ffi/number_spec.rb +0 -247
  134. data/spec/ffi/platform_spec.rb +0 -114
  135. data/spec/ffi/pointer_spec.rb +0 -285
  136. data/spec/ffi/rbx/attach_function_spec.rb +0 -34
  137. data/spec/ffi/rbx/memory_pointer_spec.rb +0 -198
  138. data/spec/ffi/rbx/spec_helper.rb +0 -6
  139. data/spec/ffi/rbx/struct_spec.rb +0 -18
  140. data/spec/ffi/spec_helper.rb +0 -93
  141. data/spec/ffi/string_spec.rb +0 -118
  142. data/spec/ffi/strptr_spec.rb +0 -50
  143. data/spec/ffi/struct_by_ref_spec.rb +0 -43
  144. data/spec/ffi/struct_callback_spec.rb +0 -69
  145. data/spec/ffi/struct_initialize_spec.rb +0 -35
  146. data/spec/ffi/struct_packed_spec.rb +0 -50
  147. data/spec/ffi/struct_spec.rb +0 -882
  148. data/spec/ffi/typedef_spec.rb +0 -91
  149. data/spec/ffi/union_spec.rb +0 -67
  150. data/spec/ffi/variadic_spec.rb +0 -132
  151. data/spec/spec.opts +0 -4
@@ -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 = %w(ffi.gemspec LICENSE COPYING README.md Rakefile) + Dir.glob("{ext,gen,lib,spec,libtest}/**/*").reject { |f| f =~ /(lib\/[12]\.[089]|\.s?[ao]$|\.bundle|\.dylib$)/ }
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)$]
@@ -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}
@@ -1,4 +1,4 @@
1
1
  module FFI
2
- VERSION = '1.9.21'
2
+ VERSION = '1.9.22'
3
3
  end
4
4
 
@@ -0,0 +1,8 @@
1
+ require 'rubygems'
2
+ require 'ffi'
3
+ module Foo
4
+ extend FFI::Library
5
+ ffi_lib FFI::Library::LIBC
6
+ attach_function :getlogin, [ ], :string
7
+ end
8
+ puts "getlogin=#{Foo.getlogin}"
@@ -0,0 +1,8 @@
1
+ require 'rubygems'
2
+ require 'ffi'
3
+ module Foo
4
+ extend FFI::Library
5
+ ffi_lib FFI::Library::LIBC
6
+ attach_function :getpid, [ ], :int
7
+ end
8
+ puts "My pid=#{Foo.getpid}"
@@ -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]}"
@@ -0,0 +1,7 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), "sample_helper"))
2
+ module Foo
3
+ extend FFI::Library
4
+ ffi_lib FFI::Library::LIBC
5
+ attach_function("cputs", "puts", [ :string ], :int)
6
+ end
7
+ Foo.cputs("Hello, World via libc puts using FFI on MRI ruby")
@@ -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
@@ -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
+ }
@@ -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(', ')}"
@@ -0,0 +1,6 @@
1
+ require 'rubygems'
2
+ require 'spec'
3
+
4
+ $:.unshift File.join(File.dirname(__FILE__), "..", "lib"), File.join(File.dirname(__FILE__), "..", "build", RUBY_VERSION) unless RUBY_PLATFORM =~ /java/
5
+ require "ffi"
6
+
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.21
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
- date: 2018-02-06 00:00:00.000000000 Z
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/ClosurePool.c
102
- - ext/ffi_c/ClosurePool.h
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
- - libtest/Benchmark.c
570
- - libtest/BoolTest.c
571
- - libtest/BufferTest.c
572
- - libtest/ClosureTest.c
573
- - libtest/EnumTest.c
574
- - libtest/FunctionTest.c
575
- - libtest/GNUmakefile
576
- - libtest/GlobalVariable.c
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.5.2
643
+ rubygems_version: 2.7.3
666
644
  signing_key:
667
645
  specification_version: 4
668
646
  summary: Ruby FFI