ffi-magic 2011.04
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +21 -0
- data/MANIFEST +18 -0
- data/README.md +12 -0
- data/Rakefile +32 -0
- data/doc/AUTHORS +4 -0
- data/doc/CHANGELOG +12 -0
- data/ffi-magic.gemspec +29 -0
- data/lib/ffi-magic.rb +107 -0
- data/lib/ffi-magic/version.rb +3 -0
- data/spec/ffi-magic.rb +34 -0
- data/spec/magic.png +0 -0
- data/tasks/authors.rake +17 -0
- data/tasks/changelog.rake +20 -0
- data/tasks/gem.rake +22 -0
- data/tasks/manifest.rake +4 -0
- data/tasks/release.rake +65 -0
- data/tasks/reversion.rake +8 -0
- data/tasks/todo.rake +27 -0
- metadata +94 -0
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2010 Michael Fellinger
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
6
|
+
this software and associated documentation files (the "Software"), to deal in
|
7
|
+
the Software without restriction, including without limitation the rights to
|
8
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
9
|
+
of the Software, and to permit persons to whom the Software is furnished to do
|
10
|
+
so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/MANIFEST
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
LICENSE
|
2
|
+
MANIFEST
|
3
|
+
README.md
|
4
|
+
Rakefile
|
5
|
+
doc/AUTHORS
|
6
|
+
doc/CHANGELOG
|
7
|
+
ffi-magic.gemspec
|
8
|
+
lib/ffi-magic.rb
|
9
|
+
lib/ffi-magic/version.rb
|
10
|
+
spec/ffi-magic.rb
|
11
|
+
spec/magic.png
|
12
|
+
tasks/authors.rake
|
13
|
+
tasks/changelog.rake
|
14
|
+
tasks/gem.rake
|
15
|
+
tasks/manifest.rake
|
16
|
+
tasks/release.rake
|
17
|
+
tasks/reversion.rake
|
18
|
+
tasks/todo.rake
|
data/README.md
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
# Ruby FFI bindings for libmagic
|
2
|
+
|
3
|
+
## Usage
|
4
|
+
|
5
|
+
require 'ffi-magic'
|
6
|
+
magic = Magic.new
|
7
|
+
magic.file('spec/magic.png')
|
8
|
+
# => "PNG image data, 100 x 67, 8-bit/color RGB, non-interlaced"
|
9
|
+
magic.flags = Magic::MIME
|
10
|
+
# => 1040
|
11
|
+
magic.file('spec/magic.png')
|
12
|
+
# => "image/png; charset=binary"
|
data/Rakefile
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/clean'
|
3
|
+
require 'rake/gempackagetask'
|
4
|
+
require 'time'
|
5
|
+
require 'date'
|
6
|
+
|
7
|
+
PROJECT_SPECS = Dir['spec/**/*.rb']
|
8
|
+
PROJECT_MODULE = 'Magic'
|
9
|
+
PROJECT_VERSION = (ENV['VERSION'] || Date.today.strftime("%Y.%m.%d")).dup
|
10
|
+
|
11
|
+
GEMSPEC = Gem::Specification.new{|s|
|
12
|
+
s.name = 'ffi-magic'
|
13
|
+
s.author = "Michael 'manveru' Fellinger"
|
14
|
+
s.summary = "FFI binding for libmagic."
|
15
|
+
s.email = 'm.fellinger@gmail.com'
|
16
|
+
s.homepage = 'http://github.com/manveru/ffi-magic'
|
17
|
+
s.platform = Gem::Platform::RUBY
|
18
|
+
s.version = PROJECT_VERSION
|
19
|
+
s.files = `git ls-files`.split("\n").sort
|
20
|
+
s.has_rdoc = true
|
21
|
+
s.require_path = 'lib'
|
22
|
+
s.executables = []
|
23
|
+
s.bindir = "bin"
|
24
|
+
|
25
|
+
s.add_runtime_dependency('ffi', '~> 1.0.7')
|
26
|
+
}
|
27
|
+
|
28
|
+
Dir['tasks/*.rake'].each{|f| import(f) }
|
29
|
+
|
30
|
+
task :default => [:bacon]
|
31
|
+
|
32
|
+
CLEAN.include('')
|
data/doc/AUTHORS
ADDED
data/doc/CHANGELOG
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
[5a53006 | Fri Apr 22 02:04:14 UTC 2011] Michael Fellinger <m.fellinger@gmail.com>
|
2
|
+
|
3
|
+
* Version 2011.04
|
4
|
+
|
5
|
+
[174a767 | Fri Apr 22 01:59:00 UTC 2011] Michael Fellinger <m.fellinger@gmail.com>
|
6
|
+
|
7
|
+
* prepare for release
|
8
|
+
|
9
|
+
[cf89376 | Sun Jun 13 22:52:56 UTC 2010] Michael Fellinger <m.fellinger@gmail.com>
|
10
|
+
|
11
|
+
* Initial commit
|
12
|
+
|
data/ffi-magic.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{ffi-magic}
|
5
|
+
s.version = "2011.04"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Michael 'manveru' Fellinger"]
|
9
|
+
s.date = %q{2011-04-22}
|
10
|
+
s.email = %q{m.fellinger@gmail.com}
|
11
|
+
s.files = ["LICENSE", "MANIFEST", "README.md", "Rakefile", "doc/AUTHORS", "doc/CHANGELOG", "ffi-magic.gemspec", "lib/ffi-magic.rb", "lib/ffi-magic/version.rb", "spec/ffi-magic.rb", "spec/magic.png", "tasks/authors.rake", "tasks/changelog.rake", "tasks/gem.rake", "tasks/manifest.rake", "tasks/release.rake", "tasks/reversion.rake", "tasks/todo.rake"]
|
12
|
+
s.homepage = %q{http://github.com/manveru/ffi-magic}
|
13
|
+
s.require_paths = ["lib"]
|
14
|
+
s.rubygems_version = %q{1.3.7}
|
15
|
+
s.summary = %q{FFI binding for libmagic.}
|
16
|
+
|
17
|
+
if s.respond_to? :specification_version then
|
18
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
19
|
+
s.specification_version = 3
|
20
|
+
|
21
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
22
|
+
s.add_runtime_dependency(%q<ffi>, ["~> 1.0.7"])
|
23
|
+
else
|
24
|
+
s.add_dependency(%q<ffi>, ["~> 1.0.7"])
|
25
|
+
end
|
26
|
+
else
|
27
|
+
s.add_dependency(%q<ffi>, ["~> 1.0.7"])
|
28
|
+
end
|
29
|
+
end
|
data/lib/ffi-magic.rb
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
require 'ffi'
|
2
|
+
|
3
|
+
require 'ffi-magic/version'
|
4
|
+
|
5
|
+
class Magic
|
6
|
+
extend FFI::Library
|
7
|
+
ffi_lib ['magic', 'libmagic.so.1']
|
8
|
+
|
9
|
+
attach_function :magic_open, [:int], :pointer
|
10
|
+
attach_function :magic_error, [:pointer], :string
|
11
|
+
attach_function :magic_load, [:pointer, :string], :int
|
12
|
+
attach_function :magic_file, [:pointer, :string], :string
|
13
|
+
attach_function :magic_setflags, [:pointer, :int], :void
|
14
|
+
attach_function :magic_buffer, [:pointer, :string, :int], :string
|
15
|
+
attach_function :magic_check, [:pointer, :string], :int
|
16
|
+
attach_function :magic_compile, [:pointer, :string], :int
|
17
|
+
attach_function :magic_close, [:pointer], :void
|
18
|
+
|
19
|
+
NONE = 0x000000
|
20
|
+
DEBUG = 0x000001
|
21
|
+
SYMLINK = 0x000002
|
22
|
+
COMPRESS = 0x000004
|
23
|
+
DEVICES = 0x000008
|
24
|
+
MIME_TYPE = 0x000010
|
25
|
+
CONTINUE = 0x000020
|
26
|
+
CHECK = 0x000040
|
27
|
+
PRESERVE_ATIME = 0x000080
|
28
|
+
RAW = 0x000100
|
29
|
+
ERROR = 0x000200
|
30
|
+
MIME_ENCODING = 0x000400
|
31
|
+
MIME = MIME_TYPE | MIME_ENCODING
|
32
|
+
APPLE = 0x000800
|
33
|
+
NO_CHECK_COMPRESS = 0x001000
|
34
|
+
NO_CHECK_TAR = 0x002000
|
35
|
+
NO_CHECK_SOFT = 0x004000
|
36
|
+
NO_CHECK_APPTYPE = 0x008000
|
37
|
+
NO_CHECK_ELF = 0x010000
|
38
|
+
NO_CHECK_TEXT = 0x020000
|
39
|
+
NO_CHECK_CDF = 0x040000
|
40
|
+
NO_CHECK_TOKENS = 0x100000
|
41
|
+
NO_CHECK_ENCODING = 0x200000
|
42
|
+
|
43
|
+
Error = Class.new(StandardError)
|
44
|
+
|
45
|
+
def self.compile(path)
|
46
|
+
cookie = magic_open(NONE)
|
47
|
+
|
48
|
+
unless magic_compile(cookie, path) == 0
|
49
|
+
raise Error, "failed compile: #{magic_error(cookie)}"
|
50
|
+
end
|
51
|
+
|
52
|
+
magic_close(cookie)
|
53
|
+
|
54
|
+
true
|
55
|
+
end
|
56
|
+
|
57
|
+
def initialize(flags = NONE, path = nil)
|
58
|
+
@flags = flags
|
59
|
+
@path = path
|
60
|
+
|
61
|
+
unless @cookie = magic_open(@flags)
|
62
|
+
raise Error, "failed to initialize magic cookie"
|
63
|
+
end
|
64
|
+
|
65
|
+
if magic_load(@cookie, @path) != 0
|
66
|
+
raise Error, "failed to load database: #{magic_error(@cookie)}"
|
67
|
+
end
|
68
|
+
|
69
|
+
begin
|
70
|
+
ObjectSpace.define_finalizer(self){ close }
|
71
|
+
rescue
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def file(path)
|
76
|
+
unless msg = magic_file(@cookie, path)
|
77
|
+
raise Error, "failed lookup: #{magic_error(@cookie)}"
|
78
|
+
end
|
79
|
+
|
80
|
+
msg
|
81
|
+
end
|
82
|
+
|
83
|
+
def buffer(input)
|
84
|
+
input.force_encoding(Encoding::BINARY)
|
85
|
+
magic_buffer(@cookie, input, input.bytesize.to_s)
|
86
|
+
end
|
87
|
+
|
88
|
+
def flags=(flags)
|
89
|
+
@flags = flags
|
90
|
+
magic_setflags(@cookie, flags)
|
91
|
+
end
|
92
|
+
|
93
|
+
def valid?(path = nil)
|
94
|
+
magic_check(@cookie, path) == 0
|
95
|
+
end
|
96
|
+
|
97
|
+
def load
|
98
|
+
unless magic_load(@cookie, path) == 0
|
99
|
+
raise Error, "failed load: #{magic_error(@cookie)}"
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def close
|
104
|
+
magic_close(@cookie) if @cookie
|
105
|
+
@cookie = nil
|
106
|
+
end
|
107
|
+
end
|
data/spec/ffi-magic.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'bacon'
|
2
|
+
Bacon.summary_on_exit
|
3
|
+
|
4
|
+
require_relative '../lib/ffi-magic'
|
5
|
+
|
6
|
+
describe 'Magic' do
|
7
|
+
@m = Magic.new
|
8
|
+
|
9
|
+
file = File.expand_path('../magic.png', __FILE__)
|
10
|
+
|
11
|
+
should 'recognize file' do
|
12
|
+
@m.flags = Magic::NONE
|
13
|
+
@m.file(file).should == "PNG image data, 100 x 67, 8-bit/color RGB, non-interlaced"
|
14
|
+
end
|
15
|
+
|
16
|
+
should 'return MIME' do
|
17
|
+
@m.flags = Magic::MIME
|
18
|
+
@m.file(file).should == "image/png; charset=binary"
|
19
|
+
end
|
20
|
+
|
21
|
+
should 'buffer' do
|
22
|
+
@m.flags = Magic::NONE
|
23
|
+
@m.buffer(File.read(file)).should == "ASCII C++ program text"
|
24
|
+
end
|
25
|
+
|
26
|
+
should 'buffer MIME' do
|
27
|
+
@m.flags = Magic::MIME
|
28
|
+
@m.buffer(File.read(file)).should == "text/x-c++; charset=us-ascii"
|
29
|
+
end
|
30
|
+
|
31
|
+
should 'have a valid database' do
|
32
|
+
@m.should.be.valid
|
33
|
+
end
|
34
|
+
end
|
data/spec/magic.png
ADDED
Binary file
|
data/tasks/authors.rake
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
desc 'Update doc/AUTHORS'
|
2
|
+
task :authors do
|
3
|
+
authors = Hash.new(0)
|
4
|
+
|
5
|
+
`git shortlog -nse`.scan(/(\d+)\s(.+)\s<(.*)>$/) do |count, name, email|
|
6
|
+
authors[[name, email]] += count.to_i
|
7
|
+
end
|
8
|
+
|
9
|
+
File.open('doc/AUTHORS', 'w+') do |io|
|
10
|
+
io.puts "Following persons have contributed to #{GEMSPEC.name}."
|
11
|
+
io.puts '(Sorted by number of submitted patches, then alphabetically)'
|
12
|
+
io.puts ''
|
13
|
+
authors.sort_by{|(n,e),c| [-c, n.downcase] }.each do |(name, email), count|
|
14
|
+
io.puts("%6d %s <%s>" % [count, name, email])
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
desc 'update changelog'
|
2
|
+
task :changelog do
|
3
|
+
File.open('doc/CHANGELOG', 'w+') do |changelog|
|
4
|
+
`git log -z --abbrev-commit`.split("\0").each do |commit|
|
5
|
+
next if commit =~ /^Merge: \d*/
|
6
|
+
ref, author, time, _, title, _, message = commit.split("\n", 7)
|
7
|
+
ref = ref[/commit ([0-9a-f]+)/, 1]
|
8
|
+
author = author[/Author: (.*)/, 1].strip
|
9
|
+
time = Time.parse(time[/Date: (.*)/, 1]).utc
|
10
|
+
time = time.strftime('%a %b %d %H:%M:%S %Z %Y')
|
11
|
+
|
12
|
+
title = title.to_s.strip
|
13
|
+
|
14
|
+
changelog.puts "[#{ref} | #{time}] #{author}"
|
15
|
+
changelog.puts '', " * #{title}"
|
16
|
+
changelog.puts '', message.rstrip if message
|
17
|
+
changelog.puts
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/tasks/gem.rake
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rake/gempackagetask'
|
2
|
+
|
3
|
+
task :gemspec => [:manifest, :changelog] do
|
4
|
+
gemspec_file = "#{GEMSPEC.name}.gemspec"
|
5
|
+
File.open(gemspec_file, 'w+'){|gs| gs.puts(GEMSPEC.to_ruby) }
|
6
|
+
end
|
7
|
+
|
8
|
+
desc "package and install from gemspec"
|
9
|
+
task :install => [:gemspec] do
|
10
|
+
sh "gem build #{GEMSPEC.name}.gemspec"
|
11
|
+
sh "gem install #{GEMSPEC.name}-#{GEMSPEC.version}.gem"
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "uninstall the gem"
|
15
|
+
task :uninstall => [:clean] do
|
16
|
+
sh %{gem uninstall -x #{GEMSPEC.name}}
|
17
|
+
end
|
18
|
+
|
19
|
+
Rake::GemPackageTask.new(GEMSPEC) do |p|
|
20
|
+
p.need_tar = true
|
21
|
+
p.need_zip = true
|
22
|
+
end
|
data/tasks/manifest.rake
ADDED
data/tasks/release.rake
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
namespace :release do
|
2
|
+
task :prepare => %w[reversion authors gemspec]
|
3
|
+
task :all => %w[release:github release:rubyforge release:gemcutter]
|
4
|
+
|
5
|
+
desc 'Release on github'
|
6
|
+
task :github => :prepare do
|
7
|
+
name, version = GEMSPEC.name, GEMSPEC.version
|
8
|
+
|
9
|
+
sh('git', 'add',
|
10
|
+
'MANIFEST', 'doc/CHANGELOG', 'doc/AUTHORS',
|
11
|
+
"#{name}.gemspec",
|
12
|
+
"lib/#{name}/version.rb")
|
13
|
+
|
14
|
+
puts <<-INSTRUCTIONS
|
15
|
+
================================================================================
|
16
|
+
|
17
|
+
I added the relevant files, you can commit them, tag the commit, and push:
|
18
|
+
|
19
|
+
git commit -m 'Version #{version}'
|
20
|
+
git tag -a -m '#{version}' '#{version}'
|
21
|
+
git push
|
22
|
+
|
23
|
+
================================================================================
|
24
|
+
INSTRUCTIONS
|
25
|
+
end
|
26
|
+
|
27
|
+
desc 'Release on rubyforge'
|
28
|
+
task :rubyforge => ['release:prepare', :package] do
|
29
|
+
name, version = GEMSPEC.name, GEMSPEC.version
|
30
|
+
|
31
|
+
pkgs = Dir["pkg/#{name}-#{version}.{tgz,zip}"].map{|file|
|
32
|
+
"rubyforge add_file #{name} #{name} '#{version}' '#{file}'"
|
33
|
+
}
|
34
|
+
|
35
|
+
puts <<-INSTRUCTIONS
|
36
|
+
================================================================================
|
37
|
+
|
38
|
+
To publish to rubyforge do following:
|
39
|
+
|
40
|
+
rubyforge login
|
41
|
+
rubyforge add_release #{name} #{name} '#{version}' pkg/#{name}-#{version}.gem
|
42
|
+
|
43
|
+
To publish the archives for distro packagers:
|
44
|
+
|
45
|
+
#{pkgs.join "\n"}
|
46
|
+
|
47
|
+
================================================================================
|
48
|
+
INSTRUCTIONS
|
49
|
+
end
|
50
|
+
|
51
|
+
desc 'Release on gemcutter'
|
52
|
+
task :gemcutter => ['release:prepare', :package] do
|
53
|
+
name, version = GEMSPEC.name, GEMSPEC.version
|
54
|
+
|
55
|
+
puts <<-INSTRUCTIONS
|
56
|
+
================================================================================
|
57
|
+
|
58
|
+
To publish to gemcutter do following:
|
59
|
+
|
60
|
+
gem push pkg/#{name}-#{version}.gem
|
61
|
+
|
62
|
+
================================================================================
|
63
|
+
INSTRUCTIONS
|
64
|
+
end
|
65
|
+
end
|
data/tasks/todo.rake
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
desc "show a todolist from all the TODO tags in the source"
|
2
|
+
task :todo do
|
3
|
+
Dir.glob('{lib,spec}/**/*.rb') do |file|
|
4
|
+
lastline = todo = comment = long_comment = false
|
5
|
+
|
6
|
+
File.readlines(file).each_with_index do |line, lineno|
|
7
|
+
lineno += 1
|
8
|
+
comment = line =~ /^\s*?#.*?$/
|
9
|
+
long_comment = line =~ /^=begin/
|
10
|
+
long_comment = line =~ /^=end/
|
11
|
+
todo = true if line =~ /TODO|FIXME|THINK/ and (long_comment or comment)
|
12
|
+
todo = false if line.gsub('#', '').strip.empty?
|
13
|
+
todo = false unless comment or long_comment
|
14
|
+
if todo
|
15
|
+
unless lastline and lastline + 1 == lineno
|
16
|
+
puts
|
17
|
+
puts "vim #{file} +#{lineno}"
|
18
|
+
end
|
19
|
+
|
20
|
+
l = line.strip.gsub(/^#\s*/, '')
|
21
|
+
print ' ' unless l =~ /^-/
|
22
|
+
puts l
|
23
|
+
lastline = lineno
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ffi-magic
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 2011
|
7
|
+
- 4
|
8
|
+
version: "2011.04"
|
9
|
+
platform: ruby
|
10
|
+
authors:
|
11
|
+
- Michael 'manveru' Fellinger
|
12
|
+
autorequire:
|
13
|
+
bindir: bin
|
14
|
+
cert_chain: []
|
15
|
+
|
16
|
+
date: 2011-04-22 00:00:00 +09:00
|
17
|
+
default_executable:
|
18
|
+
dependencies:
|
19
|
+
- !ruby/object:Gem::Dependency
|
20
|
+
name: ffi
|
21
|
+
prerelease: false
|
22
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
23
|
+
none: false
|
24
|
+
requirements:
|
25
|
+
- - ~>
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 1
|
29
|
+
- 0
|
30
|
+
- 7
|
31
|
+
version: 1.0.7
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
description:
|
35
|
+
email: m.fellinger@gmail.com
|
36
|
+
executables: []
|
37
|
+
|
38
|
+
extensions: []
|
39
|
+
|
40
|
+
extra_rdoc_files: []
|
41
|
+
|
42
|
+
files:
|
43
|
+
- LICENSE
|
44
|
+
- MANIFEST
|
45
|
+
- README.md
|
46
|
+
- Rakefile
|
47
|
+
- doc/AUTHORS
|
48
|
+
- doc/CHANGELOG
|
49
|
+
- ffi-magic.gemspec
|
50
|
+
- lib/ffi-magic.rb
|
51
|
+
- lib/ffi-magic/version.rb
|
52
|
+
- spec/ffi-magic.rb
|
53
|
+
- spec/magic.png
|
54
|
+
- tasks/authors.rake
|
55
|
+
- tasks/changelog.rake
|
56
|
+
- tasks/gem.rake
|
57
|
+
- tasks/manifest.rake
|
58
|
+
- tasks/release.rake
|
59
|
+
- tasks/reversion.rake
|
60
|
+
- tasks/todo.rake
|
61
|
+
has_rdoc: true
|
62
|
+
homepage: http://github.com/manveru/ffi-magic
|
63
|
+
licenses: []
|
64
|
+
|
65
|
+
post_install_message:
|
66
|
+
rdoc_options: []
|
67
|
+
|
68
|
+
require_paths:
|
69
|
+
- lib
|
70
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
segments:
|
76
|
+
- 0
|
77
|
+
version: "0"
|
78
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
|
+
none: false
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
segments:
|
84
|
+
- 0
|
85
|
+
version: "0"
|
86
|
+
requirements: []
|
87
|
+
|
88
|
+
rubyforge_project:
|
89
|
+
rubygems_version: 1.3.7
|
90
|
+
signing_key:
|
91
|
+
specification_version: 3
|
92
|
+
summary: FFI binding for libmagic.
|
93
|
+
test_files: []
|
94
|
+
|