summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-01-10 00:35:43 +0000
committernormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-01-10 00:35:43 +0000
commit778bbac8ac2ae50f0987c4888f7158296ee5bbdd (patch)
tree8c930da6175825647fc2640a0ae0277a723333c6
parent4b346b0e7159d95ed0afce0840adaf62d7c1381f (diff)
stdlib: avoid extra calls to eliminate "\n" from Base64
We may use the '0' (zero) to avoid adding the line feed. Furthermore, the '*' (asterisk) modifier is not needed for a single-element arrays. * ext/psych/lib/psych/visitors/yaml_tree.rb (visit_String): eliminate chomp * lib/net/http.rb (connect): eliminate delete * lib/net/http/header.rb (basic_encode): ditto * lib/net/imap.rb (authenticate): eliminate gsub (self.encode_utf7): shorten delete arg * lib/net/smtp.rb (base64_encode): eliminate gsub * lib/open-uri.rb (OpenURI.open_http): eliminate delete * lib/rss/rss.rb: ditto * lib/securerandom.rb (base64): ditto (urlsafe_base64): eliminate delete! * lib/webrick/httpauth/digestauth.rb (split_param_value): eliminate chop * lib/webrick/httpproxy.rb (do_CONNECT): eliminate delete (setup_upstream_proxy_authentication): ditto [ruby-core:72666] [Feature #11938] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53488 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog19
-rw-r--r--ext/psych/lib/psych/visitors/yaml_tree.rb2
-rw-r--r--lib/net/http.rb3
-rw-r--r--lib/net/http/header.rb2
-rw-r--r--lib/net/imap.rb6
-rw-r--r--lib/net/smtp.rb2
-rw-r--r--lib/open-uri.rb3
-rw-r--r--lib/rss/rss.rb2
-rw-r--r--lib/securerandom.rb5
-rw-r--r--lib/webrick/httpauth/digestauth.rb2
-rw-r--r--lib/webrick/httpproxy.rb4
11 files changed, 34 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog
index f6b1d601d9..193a05876d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+Sun Jan 10 09:14:42 2016 Eric Wong <e@80x24.org>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb (visit_String):
+ eliminate chomp
+ * lib/net/http.rb (connect): eliminate delete
+ * lib/net/http/header.rb (basic_encode): ditto
+ * lib/net/imap.rb (authenticate): eliminate gsub
+ (self.encode_utf7): shorten delete arg
+ * lib/net/smtp.rb (base64_encode): eliminate gsub
+ * lib/open-uri.rb (OpenURI.open_http): eliminate delete
+ * lib/rss/rss.rb: ditto
+ * lib/securerandom.rb (base64): ditto
+ (urlsafe_base64): eliminate delete!
+ * lib/webrick/httpauth/digestauth.rb (split_param_value):
+ eliminate chop
+ * lib/webrick/httpproxy.rb (do_CONNECT): eliminate delete
+ (setup_upstream_proxy_authentication): ditto
+ [ruby-core:72666] [Feature #11938]
+
Sat Jan 9 23:19:14 2016 Kuniaki IGARASHI <igaiga@gmail.com>
* test/ruby/test_hash.rb (test_try_convert): Add test for
diff --git a/ext/psych/lib/psych/visitors/yaml_tree.rb b/ext/psych/lib/psych/visitors/yaml_tree.rb
index e7c7a99060..7c400504fa 100644
--- a/ext/psych/lib/psych/visitors/yaml_tree.rb
+++ b/ext/psych/lib/psych/visitors/yaml_tree.rb
@@ -314,7 +314,7 @@ module Psych
tag = nil
if binary?(o)
- o = [o].pack('m').chomp
+ o = [o].pack('m0')
tag = '!binary' # FIXME: change to below when syck is removed
#tag = 'tag:yaml.org,2002:binary'
style = Nodes::Scalar::LITERAL
diff --git a/lib/net/http.rb b/lib/net/http.rb
index f77df5efa3..f6499f2a59 100644
--- a/lib/net/http.rb
+++ b/lib/net/http.rb
@@ -912,8 +912,7 @@ module Net #:nodoc:
buf = "CONNECT #{@address}:#{@port} HTTP/#{HTTPVersion}\r\n"
buf << "Host: #{@address}:#{@port}\r\n"
if proxy_user
- credential = ["#{proxy_user}:#{proxy_pass}"].pack('m')
- credential.delete!("\r\n")
+ credential = ["#{proxy_user}:#{proxy_pass}"].pack('m0')
buf << "Proxy-Authorization: Basic #{credential}\r\n"
end
buf << "\r\n"
diff --git a/lib/net/http/header.rb b/lib/net/http/header.rb
index 5d99e8f070..3a76dcfe4c 100644
--- a/lib/net/http/header.rb
+++ b/lib/net/http/header.rb
@@ -427,7 +427,7 @@ module Net::HTTPHeader
end
def basic_encode(account, password)
- 'Basic ' + ["#{account}:#{password}"].pack('m').delete("\r\n")
+ 'Basic ' + ["#{account}:#{password}"].pack('m0')
end
private :basic_encode
diff --git a/lib/net/imap.rb b/lib/net/imap.rb
index 439ca13206..9895ed68ce 100644
--- a/lib/net/imap.rb
+++ b/lib/net/imap.rb
@@ -419,7 +419,7 @@ module Net
send_command("AUTHENTICATE", auth_type) do |resp|
if resp.instance_of?(ContinuationRequest)
data = authenticator.process(resp.data.text.unpack("m")[0])
- s = [data].pack("m").gsub(/\n/, "")
+ s = [data].pack("m0")
send_string_data(s)
put_string(CRLF)
end
@@ -1007,8 +1007,8 @@ module Net
if $1
"&-"
else
- base64 = [$&.encode(Encoding::UTF_16BE)].pack("m")
- "&" + base64.delete("=\n").tr("/", ",") + "-"
+ base64 = [$&.encode(Encoding::UTF_16BE)].pack("m0")
+ "&" + base64.delete("=").tr("/", ",") + "-"
end
}.force_encoding("ASCII-8BIT")
end
diff --git a/lib/net/smtp.rb b/lib/net/smtp.rb
index d634274c3e..250293bdbe 100644
--- a/lib/net/smtp.rb
+++ b/lib/net/smtp.rb
@@ -788,7 +788,7 @@ module Net
def base64_encode(str)
# expects "str" may not become too long
- [str].pack('m').gsub(/\s+/, '')
+ [str].pack('m0')
end
IMASK = 0x36
diff --git a/lib/open-uri.rb b/lib/open-uri.rb
index 9e4a5e24c1..192f1e5711 100644
--- a/lib/open-uri.rb
+++ b/lib/open-uri.rb
@@ -285,7 +285,8 @@ module OpenURI
target_port = proxy_uri.port
request_uri = target.to_s
if proxy_user && proxy_pass
- header["Proxy-Authorization"] = 'Basic ' + ["#{proxy_user}:#{proxy_pass}"].pack('m').delete("\r\n")
+ header["Proxy-Authorization"] =
+ 'Basic ' + ["#{proxy_user}:#{proxy_pass}"].pack('m0')
end
end
diff --git a/lib/rss/rss.rb b/lib/rss/rss.rb
index 1bb0f6e826..5b9c5d4745 100644
--- a/lib/rss/rss.rb
+++ b/lib/rss/rss.rb
@@ -1241,7 +1241,7 @@ EOC
__send__(self.class.xml_getter).to_s
else
_content = content
- _content = [_content].pack("m").delete("\n") if need_base64_encode?
+ _content = [_content].pack("m0") if need_base64_encode?
h(_content)
end
end
diff --git a/lib/securerandom.rb b/lib/securerandom.rb
index b08b62b746..198f273c88 100644
--- a/lib/securerandom.rb
+++ b/lib/securerandom.rb
@@ -136,7 +136,7 @@ module Random::Formatter
#
# See RFC 3548 for the definition of base64.
def base64(n=nil)
- [random_bytes(n)].pack("m*").delete("\n")
+ [random_bytes(n)].pack("m0")
end
# SecureRandom.urlsafe_base64 generates a random URL-safe base64 string.
@@ -166,8 +166,7 @@ module Random::Formatter
#
# See RFC 3548 for the definition of URL-safe base64.
def urlsafe_base64(n=nil, padding=false)
- s = [random_bytes(n)].pack("m*")
- s.delete!("\n")
+ s = [random_bytes(n)].pack("m0")
s.tr!("+/", "-_")
s.delete!("=") unless padding
s
diff --git a/lib/webrick/httpauth/digestauth.rb b/lib/webrick/httpauth/digestauth.rb
index 018989e6dd..98bdbd10c7 100644
--- a/lib/webrick/httpauth/digestauth.rb
+++ b/lib/webrick/httpauth/digestauth.rb
@@ -312,7 +312,7 @@ module WEBrick
def generate_next_nonce(req)
now = "%012d" % req.request_time.to_i
pk = hexdigest(now, @instance_key)[0,32]
- nonce = [now + ":" + pk].pack("m*").chop # it has 60 length of chars.
+ nonce = [now + ":" + pk].pack("m0") # it has 60 length of chars.
nonce
end
diff --git a/lib/webrick/httpproxy.rb b/lib/webrick/httpproxy.rb
index 79a2e8f55b..083720f298 100644
--- a/lib/webrick/httpproxy.rb
+++ b/lib/webrick/httpproxy.rb
@@ -143,7 +143,7 @@ module WEBrick
if proxy = proxy_uri(req, res)
proxy_request_line = "CONNECT #{host}:#{port} HTTP/1.0"
if proxy.userinfo
- credentials = "Basic " + [proxy.userinfo].pack("m").delete("\n")
+ credentials = "Basic " + [proxy.userinfo].pack("m0")
end
host, port = proxy.host, proxy.port
end
@@ -294,7 +294,7 @@ module WEBrick
if upstream = proxy_uri(req, res)
if upstream.userinfo
header['proxy-authorization'] =
- "Basic " + [upstream.userinfo].pack("m").delete("\n")
+ "Basic " + [upstream.userinfo].pack("m0")
end
return upstream
end