ascii85_native 1.0.2 → 1.0.3
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/ext/ascii85_native/ascii85_native.c +6 -6
- data/lib/ascii85_native.rb +3 -6
- 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: c5a51104b93e100797c8b06a127f666fa26aff4dfa5f6303430b382f1ca2fbff
|
4
|
+
data.tar.gz: 9e5ce38706d633a007ec233d43107b1b363b0b07ce63b0a0dc392a964f428e27
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fdc7c43e274d698ea9e60089da2065a9aa63a98ac72ac0a3af2ecbc99e19bbb8d2e0499207e383c6bf9fe46557f38cfd983b1f1e371d06de4a246098048a4715
|
7
|
+
data.tar.gz: 01e94a7a9211549fa30bb5a396129743ce758bfa76d19d11d2371fe5063041dd10cc3260d825a8905b0fea4c78f6a6712da98c6c77b9799984e3516f3656864d
|
@@ -66,7 +66,7 @@ int a85_decoded_size(int input_length) {
|
|
66
66
|
void a85_decode(const char* input, int input_length, u8* output) {
|
67
67
|
while (input_length) {
|
68
68
|
|
69
|
-
while ((*input >= 9 && *input <= 13) || *input == 32) { input++; input_length--;}
|
69
|
+
while ((*input >= 9 && *input <= 13) || *input == 32 || *input == 0) { input++; input_length--;}
|
70
70
|
|
71
71
|
if (input_length < 5) {
|
72
72
|
// Determine represented value in base 85
|
@@ -91,15 +91,15 @@ void a85_decode(const char* input, int input_length, u8* output) {
|
|
91
91
|
}
|
92
92
|
|
93
93
|
// Determine represented value in base 85 while throwing out invalid ascii85 characters
|
94
|
-
while ((*input >= 9 && *input <= 13) || *input == 32) { input++; input_length--;}
|
94
|
+
while ((*input >= 9 && *input <= 13) || *input == 32 || *input == 0) { input++; input_length--;}
|
95
95
|
u32 val = (*(input++) - 33) * 52200625; // 85^4
|
96
|
-
while ((*input >= 9 && *input <= 13) || *input == 32) { input++; input_length--;}
|
96
|
+
while ((*input >= 9 && *input <= 13) || *input == 32 || *input == 0) { input++; input_length--;}
|
97
97
|
val += (*(input++) - 33) * 614125; // 85^3
|
98
|
-
while ((*input >= 9 && *input <= 13) || *input == 32) { input++; input_length--;}
|
98
|
+
while ((*input >= 9 && *input <= 13) || *input == 32 || *input == 0) { input++; input_length--;}
|
99
99
|
val += (*(input++) - 33) * 7225; // 85^2
|
100
|
-
while ((*input >= 9 && *input <= 13) || *input == 32) { input++; input_length--;}
|
100
|
+
while ((*input >= 9 && *input <= 13) || *input == 32 || *input == 0) { input++; input_length--;}
|
101
101
|
val += (*(input++) - 33) * 85; // 85^1
|
102
|
-
while ((*input >= 9 && *input <= 13) || *input == 32) { input++; input_length--;}
|
102
|
+
while ((*input >= 9 && *input <= 13) || *input == 32 || *input == 0) { input++; input_length--;}
|
103
103
|
val += (*(input++) - 33); // 85^0
|
104
104
|
|
105
105
|
// Write out in big-endian order
|
data/lib/ascii85_native.rb
CHANGED
@@ -5,7 +5,6 @@ require 'ffi'
|
|
5
5
|
module Ascii85Native
|
6
6
|
extend FFI::Library
|
7
7
|
|
8
|
-
ffi_lib 'c'
|
9
8
|
ffi_lib File.join(File.dirname(__FILE__), 'ascii85_native.so')
|
10
9
|
|
11
10
|
#void a85_encode(const u8* data, int binlen, char* text, bool append_null);
|
@@ -20,8 +19,6 @@ module Ascii85Native
|
|
20
19
|
#void a85_decode(const char* text, int textlen, u8* data);
|
21
20
|
attach_function :a85_decode, [:buffer_in, :int, :buffer_out], :void
|
22
21
|
|
23
|
-
attach_function :strlen, [:buffer_in], :int
|
24
|
-
|
25
22
|
def self.encode(input, include_delimiter=false)
|
26
23
|
if input.nil? || input.size == 0
|
27
24
|
return '<~~>' if include_delimiter
|
@@ -69,7 +66,7 @@ module Ascii85Native
|
|
69
66
|
out_size = self.a85_decoded_size(input.size)
|
70
67
|
|
71
68
|
FFI::MemoryPointer.new(:uint8, out_size) do |output|
|
72
|
-
self.a85_decode(in_char,
|
69
|
+
self.a85_decode(in_char, input.size, output)
|
73
70
|
return output.read_string()
|
74
71
|
end
|
75
72
|
end
|
@@ -80,7 +77,7 @@ module Ascii85Native
|
|
80
77
|
cursor = 0
|
81
78
|
|
82
79
|
input.size.times do |i|
|
83
|
-
if [
|
80
|
+
if ["\n", "\r", ' '].include?(input[cursor])
|
84
81
|
cursor += 1
|
85
82
|
next
|
86
83
|
elsif input[cursor] == '<' && input[cursor+1] == '~'
|
@@ -99,7 +96,7 @@ module Ascii85Native
|
|
99
96
|
cursor = -1
|
100
97
|
|
101
98
|
input.size.times do |i|
|
102
|
-
if [
|
99
|
+
if ["\n", "\r", ' '].include?(input[cursor])
|
103
100
|
cursor -= 1
|
104
101
|
next
|
105
102
|
elsif input[cursor] == '>' && input[cursor-1] == '~'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ascii85_native
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Crossfield
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-06-
|
11
|
+
date: 2021-06-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|