pngcheck 0.2.4-x64-mingw-ucrt → 0.2.5-x64-mingw-ucrt
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 +4 -4
- data/README.adoc +4 -4
- data/lib/pngcheck/pngcheck.dll +0 -0
- data/lib/pngcheck/version.rb +1 -1
- data/lib/pngcheck.rb +42 -17
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ea66a67ea2478557283fc8550cd09bbea1243c492bbee19ef726601f7695ae7
|
4
|
+
data.tar.gz: 1b32274920f2e4630db46d66e072449a5a7f03e22f8b21888352cc740cb057a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04dec712ea62ccb38d3016ed29a538d1cf24a99ea8667bb338a85d77200cda19676b04648f0c54f6dcf60417745d72fa3957fbcd723f1bd8a33e642be27719bc
|
7
|
+
data.tar.gz: 75a3ee1ed6553fdb4a8ebb68931cc0917e039f467b752ad9a10f338e8e661adf8218adf18a02ab58e7f386555a87fe136e2eea975a89bac4b014552ce39fea41
|
data/README.adoc
CHANGED
@@ -53,7 +53,7 @@ $ gem install pngcheck
|
|
53
53
|
|
54
54
|
=== Usage
|
55
55
|
|
56
|
-
====
|
56
|
+
==== PngCheck status codes
|
57
57
|
|
58
58
|
[source,ruby]
|
59
59
|
----
|
@@ -84,7 +84,7 @@ valid = PngCheck.check_file("spec/examples/correct.png")
|
|
84
84
|
Where:
|
85
85
|
|
86
86
|
* `valid` is `true` if the file is correct
|
87
|
-
* otherwise an exception
|
87
|
+
* otherwise an exception is raised. Possible exception types are `PngCheck::EmptyPngError`, `PngCheck::CorruptPngError`
|
88
88
|
|
89
89
|
|
90
90
|
==== Memory buffer processing
|
@@ -110,8 +110,8 @@ valid = PngCheck.check_buffer(data)
|
|
110
110
|
|
111
111
|
Where:
|
112
112
|
|
113
|
-
* `valid` is `true` if the
|
114
|
-
* otherwise an exception
|
113
|
+
* `valid` is `true` if the buffer is correct image
|
114
|
+
* otherwise an exception is raised. Possible exception types are `PngCheck::EmptyPngError`, `PngCheck::CorruptPngError`
|
115
115
|
|
116
116
|
|
117
117
|
==== Pre-validation with libpng-ruby
|
data/lib/pngcheck/pngcheck.dll
CHANGED
Binary file
|
data/lib/pngcheck/version.rb
CHANGED
data/lib/pngcheck.rb
CHANGED
@@ -5,8 +5,16 @@ require "tempfile"
|
|
5
5
|
require_relative "pngcheck/version"
|
6
6
|
|
7
7
|
module PngCheck
|
8
|
+
EMPTY_IMAGE = "Image is empty"
|
9
|
+
|
8
10
|
class CorruptPngError < StandardError; end
|
9
11
|
|
12
|
+
class EmptyPngError < StandardError
|
13
|
+
def initialize(msg = EMPTY_IMAGE)
|
14
|
+
super
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
10
18
|
STATUS_OK = 0
|
11
19
|
STATUS_WARNING = 1 # an error in some circumstances but not in all
|
12
20
|
STATUS_MINOR_ERROR = 3 # minor spec errors (e.g., out-of-range values)
|
@@ -37,25 +45,49 @@ module PngCheck
|
|
37
45
|
|
38
46
|
class << self
|
39
47
|
def analyze_file(path)
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
status = pngcheck_file(path, captured_stream.path, extra_msg)
|
44
|
-
@@semaphore.unlock
|
45
|
-
# we assume that pngcheck_file returns either captured_stream
|
46
|
-
# or extra message but not both
|
47
|
-
[status, captured_stream.read + extra_msg.get_string(16)]
|
48
|
-
end
|
48
|
+
return [STATUS_CRITICAL_ERROR, EMPTY_IMAGE] if File.zero? path
|
49
|
+
|
50
|
+
do_analyze_file(path)
|
49
51
|
end
|
50
52
|
|
51
53
|
def check_file(path)
|
52
54
|
status, info = analyze_file(path)
|
55
|
+
raise EmptyPngError.new if info.eql? EMPTY_IMAGE
|
53
56
|
raise CorruptPngError.new info unless status == STATUS_OK
|
54
57
|
|
55
58
|
true
|
56
59
|
end
|
57
60
|
|
58
61
|
def analyze_buffer(data)
|
62
|
+
return [STATUS_CRITICAL_ERROR, EMPTY_IMAGE] if data.empty?
|
63
|
+
|
64
|
+
do_analyze_buffer(data)
|
65
|
+
end
|
66
|
+
|
67
|
+
def check_buffer(data)
|
68
|
+
status, info = analyze_buffer(data)
|
69
|
+
raise EmptyPngError.new if info.eql? EMPTY_IMAGE
|
70
|
+
raise CorruptPngError.new info unless status == STATUS_OK
|
71
|
+
|
72
|
+
true
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
def do_analyze_file(path)
|
78
|
+
Tempfile.open("captured-stream-") do |captured_stream|
|
79
|
+
extra_msg = FFI::Buffer.alloc_out(EXTRA_MESSAGE_SIZE, 1, false)
|
80
|
+
@@semaphore.lock
|
81
|
+
status = pngcheck_file(path, captured_stream.path, extra_msg)
|
82
|
+
@@semaphore.unlock
|
83
|
+
# we assume that pngcheck_file returns either captured_stream
|
84
|
+
# or extra message but not both
|
85
|
+
|
86
|
+
[status, captured_stream.read + extra_msg.get_string(0)]
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def do_analyze_buffer(data)
|
59
91
|
Tempfile.open("captured-stream-") do |captured_stream|
|
60
92
|
extra_msg = FFI::Buffer.alloc_out(EXTRA_MESSAGE_SIZE, 1, false)
|
61
93
|
mem_buf = FFI::MemoryPointer.new(:char, data.bytesize)
|
@@ -64,15 +96,8 @@ module PngCheck
|
|
64
96
|
status = pngcheck_buffer(mem_buf, data.bytesize, captured_stream.path,
|
65
97
|
extra_msg)
|
66
98
|
@@semaphore.unlock
|
67
|
-
[status, captured_stream.read + extra_msg.get_string(
|
99
|
+
[status, captured_stream.read + extra_msg.get_string(0)]
|
68
100
|
end
|
69
101
|
end
|
70
|
-
|
71
|
-
def check_buffer(data)
|
72
|
-
status, info = analyze_buffer(data)
|
73
|
-
raise CorruptPngError.new info unless status == STATUS_OK
|
74
|
-
|
75
|
-
true
|
76
|
-
end
|
77
102
|
end
|
78
103
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pngcheck
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: x64-mingw-ucrt
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-09-
|
11
|
+
date: 2022-09-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|