purecdb 1.0.0 → 1.1.0
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.
- checksums.yaml +7 -0
- data/Dockerfile +12 -0
- data/Gemfile.lock +8 -1
- data/Makefile +2 -10
- data/Rules.mk +33 -0
- data/bundle_config +3 -0
- data/lib/purecdb/reader.rb +21 -4
- data/lib/purecdb/version.rb +1 -1
- data/purecdb.gemspec +1 -0
- metadata +36 -27
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fca6f6f647583ae3cc4025f677f80abb82599d85
|
4
|
+
data.tar.gz: 9f60409470e5fd6f85f05719db05abc4ad173d81
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 06322d92a058c1ea7ff4de8fe668d2713c14989c34025ca04c1686850484c391917e4f60a81e5a061ca27b0bbb3d8f9b80487cb064bdec7e74f206fde538a8ad
|
7
|
+
data.tar.gz: 3bf61f1a8a35f6958a909ca8cddd26dcb917257e3dfa9f5040175987a402dd2b6a153f3020dca283da2176410b2e7144f8bf10494711e9df10b648d6e894ac72
|
data/Dockerfile
ADDED
data/Gemfile.lock
CHANGED
@@ -1,12 +1,16 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
purecdb (
|
4
|
+
purecdb (1.1.0)
|
5
|
+
ffi-mmap
|
5
6
|
|
6
7
|
GEM
|
7
8
|
remote: https://rubygems.org/
|
8
9
|
specs:
|
9
10
|
diff-lcs (1.2.5)
|
11
|
+
ffi (1.9.14)
|
12
|
+
ffi-mmap (0.2.0)
|
13
|
+
ffi
|
10
14
|
json (1.8.3)
|
11
15
|
rake (10.4.2)
|
12
16
|
rdoc (4.2.2)
|
@@ -34,3 +38,6 @@ DEPENDENCIES
|
|
34
38
|
rake (~> 10.0)
|
35
39
|
rdoc
|
36
40
|
rspec
|
41
|
+
|
42
|
+
BUNDLED WITH
|
43
|
+
1.12.5
|
data/Makefile
CHANGED
data/Rules.mk
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
DR=docker run -t -i -v ${PWD}:/app ${IMAGE}
|
2
|
+
B=${DR} bundle
|
3
|
+
BE=${B} exec
|
4
|
+
|
5
|
+
build: container
|
6
|
+
echo Building gem
|
7
|
+
rm -f pkg/*
|
8
|
+
${BE} rake build
|
9
|
+
|
10
|
+
push: build
|
11
|
+
gem push `/bin/ls -q pkg/* | tail -n1`
|
12
|
+
|
13
|
+
container: Dockerfile
|
14
|
+
docker build -t ${IMAGE} .
|
15
|
+
|
16
|
+
update: container
|
17
|
+
${B} update
|
18
|
+
|
19
|
+
bundle: container
|
20
|
+
${B} install --binstubs ./bin --path=./vendor/bundle
|
21
|
+
|
22
|
+
rdoc:
|
23
|
+
rm -rf doc
|
24
|
+
${BE} rdoc --main=README.md -O -U -x'~' README.md lib
|
25
|
+
|
26
|
+
.PHONY: spec
|
27
|
+
spec:
|
28
|
+
${BE} rspec ./spec
|
29
|
+
|
30
|
+
|
31
|
+
cli:
|
32
|
+
${DR} /bin/bash -l
|
33
|
+
|
data/bundle_config
ADDED
data/lib/purecdb/reader.rb
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
begin
|
2
|
+
require 'ffi/mmap'
|
3
|
+
rescue LoadError
|
4
|
+
end
|
5
|
+
|
1
6
|
module PureCDB
|
2
7
|
|
3
8
|
#
|
@@ -15,10 +20,11 @@ module PureCDB
|
|
15
20
|
# PureCDB::Reader.new(file, options) {|r| ... }
|
16
21
|
#
|
17
22
|
# +file+ can be a String or any object that meets the minimum
|
18
|
-
# requirements, which means having #sysseek, #sysopen to and #
|
23
|
+
# requirements, which means having #sysseek, #sysopen to and #sysclose
|
19
24
|
# which does not arbitrarily sttop access ot it.
|
20
25
|
#
|
21
|
-
# If Mmap is available, the code will attempt to use it
|
26
|
+
# If Mmap is available, the code will attempt to use it if target is a
|
27
|
+
# filename
|
22
28
|
#
|
23
29
|
def initialize target, *options
|
24
30
|
if target.is_a?(String)
|
@@ -41,7 +47,7 @@ module PureCDB
|
|
41
47
|
raise "#{mode}bit mode detected in file; options request #{@mode}bit mode"
|
42
48
|
end
|
43
49
|
|
44
|
-
@m = Mmap.new(target,"r", Mmap::MAP_SHARED) rescue nil
|
50
|
+
@m = FFI::Mmap.new(target,"r", FFI::Mmap::MAP_SHARED) rescue nil
|
45
51
|
read_hashes
|
46
52
|
|
47
53
|
raise "Invalid File (Hashes are all empty)" if @hashes.uniq == [0]
|
@@ -53,6 +59,18 @@ module PureCDB
|
|
53
59
|
end
|
54
60
|
end
|
55
61
|
|
62
|
+
#
|
63
|
+
# Is the file mmap'ed? Note that this may in theory return true right after
|
64
|
+
# opening the file, but return false after attempting to read if the
|
65
|
+
# attempt to read from the mmap object fails for whatever reason.
|
66
|
+
#
|
67
|
+
# I'm not sure that can ever happen, but to be 100% sure, check *after* a
|
68
|
+
# lookup
|
69
|
+
#
|
70
|
+
def mmap?
|
71
|
+
@m.nil? == false
|
72
|
+
end
|
73
|
+
|
56
74
|
#
|
57
75
|
# Alternative to PureCDB::Reader.new(target,options) ..
|
58
76
|
#
|
@@ -132,7 +150,6 @@ module PureCDB
|
|
132
150
|
|
133
151
|
# Warning: This will be very slow if not mmap'd
|
134
152
|
def read r
|
135
|
-
@m = nil
|
136
153
|
if @m
|
137
154
|
res = @m[r]
|
138
155
|
return res if res
|
data/lib/purecdb/version.rb
CHANGED
data/purecdb.gemspec
CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com' to prevent pushes to rubygems.org, or delete to allow pushes to any server."
|
24
24
|
end
|
25
25
|
|
26
|
+
spec.add_dependency "ffi-mmap"
|
26
27
|
spec.add_development_dependency "bundler", "~> 1.9"
|
27
28
|
spec.add_development_dependency "rake", "~> 10.0"
|
28
29
|
spec.add_development_dependency "rspec"
|
metadata
CHANGED
@@ -1,78 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: purecdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Vidar Hokstad
|
9
8
|
autorequire:
|
10
9
|
bindir: exe
|
11
10
|
cert_chain: []
|
12
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-20 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: ffi-mmap
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
14
27
|
- !ruby/object:Gem::Dependency
|
15
28
|
name: bundler
|
16
29
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
30
|
requirements:
|
19
|
-
- - ~>
|
31
|
+
- - "~>"
|
20
32
|
- !ruby/object:Gem::Version
|
21
33
|
version: '1.9'
|
22
34
|
type: :development
|
23
35
|
prerelease: false
|
24
36
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
37
|
requirements:
|
27
|
-
- - ~>
|
38
|
+
- - "~>"
|
28
39
|
- !ruby/object:Gem::Version
|
29
40
|
version: '1.9'
|
30
41
|
- !ruby/object:Gem::Dependency
|
31
42
|
name: rake
|
32
43
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
44
|
requirements:
|
35
|
-
- - ~>
|
45
|
+
- - "~>"
|
36
46
|
- !ruby/object:Gem::Version
|
37
47
|
version: '10.0'
|
38
48
|
type: :development
|
39
49
|
prerelease: false
|
40
50
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
51
|
requirements:
|
43
|
-
- - ~>
|
52
|
+
- - "~>"
|
44
53
|
- !ruby/object:Gem::Version
|
45
54
|
version: '10.0'
|
46
55
|
- !ruby/object:Gem::Dependency
|
47
56
|
name: rspec
|
48
57
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
58
|
requirements:
|
51
|
-
- -
|
59
|
+
- - ">="
|
52
60
|
- !ruby/object:Gem::Version
|
53
61
|
version: '0'
|
54
62
|
type: :development
|
55
63
|
prerelease: false
|
56
64
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
65
|
requirements:
|
59
|
-
- -
|
66
|
+
- - ">="
|
60
67
|
- !ruby/object:Gem::Version
|
61
68
|
version: '0'
|
62
69
|
- !ruby/object:Gem::Dependency
|
63
70
|
name: rdoc
|
64
71
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
72
|
requirements:
|
67
|
-
- -
|
73
|
+
- - ">="
|
68
74
|
- !ruby/object:Gem::Version
|
69
75
|
version: '0'
|
70
76
|
type: :development
|
71
77
|
prerelease: false
|
72
78
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
79
|
requirements:
|
75
|
-
- -
|
80
|
+
- - ">="
|
76
81
|
- !ruby/object:Gem::Version
|
77
82
|
version: '0'
|
78
83
|
description: A Pure Ruby CDB reader/writer w/64 bit extensions
|
@@ -82,16 +87,19 @@ executables: []
|
|
82
87
|
extensions: []
|
83
88
|
extra_rdoc_files: []
|
84
89
|
files:
|
85
|
-
- .gitignore
|
86
|
-
- .rspec
|
90
|
+
- ".gitignore"
|
91
|
+
- ".rspec"
|
92
|
+
- Dockerfile
|
87
93
|
- Gemfile
|
88
94
|
- Gemfile.lock
|
89
95
|
- LICENSE
|
90
96
|
- Makefile
|
91
97
|
- README.md
|
92
98
|
- Rakefile
|
99
|
+
- Rules.mk
|
93
100
|
- bin/console
|
94
101
|
- bin/setup
|
102
|
+
- bundle_config
|
95
103
|
- lib/purecdb.rb
|
96
104
|
- lib/purecdb/base.rb
|
97
105
|
- lib/purecdb/reader.rb
|
@@ -100,26 +108,27 @@ files:
|
|
100
108
|
- purecdb.gemspec
|
101
109
|
homepage: https://github.com/hokstadconsulting/purecdb
|
102
110
|
licenses: []
|
111
|
+
metadata:
|
112
|
+
allowed_push_host: 'TODO: Set to ''http://mygemserver.com'' to prevent pushes to
|
113
|
+
rubygems.org, or delete to allow pushes to any server.'
|
103
114
|
post_install_message:
|
104
115
|
rdoc_options: []
|
105
116
|
require_paths:
|
106
117
|
- lib
|
107
118
|
required_ruby_version: !ruby/object:Gem::Requirement
|
108
|
-
none: false
|
109
119
|
requirements:
|
110
|
-
- -
|
120
|
+
- - ">="
|
111
121
|
- !ruby/object:Gem::Version
|
112
122
|
version: '0'
|
113
123
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
|
-
none: false
|
115
124
|
requirements:
|
116
|
-
- -
|
125
|
+
- - ">="
|
117
126
|
- !ruby/object:Gem::Version
|
118
127
|
version: '0'
|
119
128
|
requirements: []
|
120
129
|
rubyforge_project:
|
121
|
-
rubygems_version:
|
130
|
+
rubygems_version: 2.6.6
|
122
131
|
signing_key:
|
123
|
-
specification_version:
|
132
|
+
specification_version: 4
|
124
133
|
summary: A Pure Ruby CDB reader/writer w/64 bit extensions
|
125
134
|
test_files: []
|