mtik 3.0.4 → 3.0.5
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/CHANGELOG.txt +5 -0
- data/VERSION.txt +1 -1
- data/lib/mtik/request.rb +12 -8
- metadata +3 -3
data/CHANGELOG.txt
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
2010-04-23 (23 APR 2010) VERSION 3.0.5 Aaron D. Gifford (http://www.aarongifford.com)
|
2
|
+
* Double bug-fix (typo fix and logic fix) to request.rb thanks to Allan Eising and
|
3
|
+
Søren Daugaard. Thank you both for the patch!
|
4
|
+
* Added a brief sanity-check in request.rb to help spotlight logic errors.
|
5
|
+
|
1
6
|
2010-04-09 (09 APR 2010) VERSION 3.0.4 Aaron D. Gifford (http://www.aarongifford.com)
|
2
7
|
* Bug fix to lib/mtik.rb thanks to Allan Eising to the command validation regular
|
3
8
|
expression to permit the '-' character in a command. Thanks!
|
data/VERSION.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.0.
|
1
|
+
3.0.5
|
data/lib/mtik/request.rb
CHANGED
@@ -157,16 +157,20 @@ class MTik::Request < Array
|
|
157
157
|
|
158
158
|
## Utility method for packing an unsigned integer as
|
159
159
|
## a binary byte string of variable length
|
160
|
-
def self.bytepack(num)
|
160
|
+
def self.bytepack(num, size)
|
161
161
|
s = String.new
|
162
|
-
if
|
162
|
+
if RUBY_VERSION >= '1.9.0'
|
163
163
|
s.force_encoding(Encoding::BINARY)
|
164
164
|
end
|
165
165
|
x = num < 0 ? -num : num ## Treat as unsigned
|
166
|
-
while
|
167
|
-
|
166
|
+
while size > 0
|
167
|
+
size -= 1
|
168
|
+
s = (x & 0xff).chr + s
|
168
169
|
x >>= 8
|
169
170
|
end
|
171
|
+
raise RuntimeError.new(
|
172
|
+
"Number #{num} is too large to fit in #{size} bytes."
|
173
|
+
) if x > 0
|
170
174
|
return s
|
171
175
|
end
|
172
176
|
|
@@ -180,13 +184,13 @@ class MTik::Request < Array
|
|
180
184
|
if str.length < 0x80
|
181
185
|
return str.length.chr + str
|
182
186
|
elsif str.length < 0x4000
|
183
|
-
return bytepack(str.length | 0x8000) + str
|
187
|
+
return bytepack(str.length | 0x8000, 2) + str
|
184
188
|
elsif str.length < 0x200000
|
185
|
-
return bytepack(str.length | 0xc00000) + str
|
189
|
+
return bytepack(str.length | 0xc00000, 3) + str
|
186
190
|
elsif str.length < 0x10000000
|
187
|
-
return bytepack(str.length | 0xe0000000) + str
|
191
|
+
return bytepack(str.length | 0xe0000000, 4) + str
|
188
192
|
elsif str.length < 0x0100000000
|
189
|
-
return 0xf0.chr + bytepack(str.length) + str
|
193
|
+
return 0xf0.chr + bytepack(str.length, 5) + str
|
190
194
|
else
|
191
195
|
raise RuntimeError.new(
|
192
196
|
"String is too long to be encoded for " +
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 3
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 3.0.
|
8
|
+
- 5
|
9
|
+
version: 3.0.5
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Aaron D. Gifford
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-04-
|
17
|
+
date: 2010-04-23 00:00:00 -06:00
|
18
18
|
default_executable:
|
19
19
|
dependencies: []
|
20
20
|
|