diff options
author | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-06-18 05:11:55 +0000 |
---|---|---|
committer | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-06-18 05:11:55 +0000 |
commit | f20ad4889d5c7af44581373d25fd326ce796c4b3 (patch) | |
tree | b7bf99329ed8c29768f2502d3bd418e57be32268 /lib/rubygems/package | |
parent | 513345607da396f33b862dc2a48135e8a14bad99 (diff) | |
download | ruby-f20ad4889d5c7af44581373d25fd326ce796c4b3.tar.gz |
* lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update rubygems
HEAD(2c6d256). It contains to update vendored Molinillo to 0.5.0.
https://github.com/rubygems/rubygems/pull/1638
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55441 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/package')
-rw-r--r-- | lib/rubygems/package/tar_writer.rb | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/lib/rubygems/package/tar_writer.rb b/lib/rubygems/package/tar_writer.rb index ab0313c9f8..f68b8d4c5e 100644 --- a/lib/rubygems/package/tar_writer.rb +++ b/lib/rubygems/package/tar_writer.rb @@ -310,27 +310,21 @@ class Gem::Package::TarWriter # Splits +name+ into a name and prefix that can fit in the TarHeader def split_name(name) # :nodoc: - if name.bytesize > 256 + if name.bytesize > 256 then raise Gem::Package::TooLongFileName.new("File \"#{name}\" has a too long path (should be 256 or less)") end - if name.bytesize <= 100 then - prefix = "" - else - parts = name.split(/\//) - newname = parts.pop - nxt = "" - - loop do - nxt = parts.pop - break if newname.bytesize + 1 + nxt.bytesize > 100 - newname = nxt + "/" + newname + prefix = '' + if name.bytesize > 100 then + parts = name.split('/', -1) # parts are never empty here + name = parts.pop # initially empty for names with a trailing slash ("foo/.../bar/") + prefix = parts.join('/') # if empty, then it's impossible to split (parts is empty too) + while !parts.empty? && (prefix.bytesize > 155 || name.empty?) + name = parts.pop + '/' + name + prefix = parts.join('/') end - prefix = (parts + [nxt]).join "/" - name = newname - - if name.bytesize > 100 + if name.bytesize > 100 or prefix.empty? then raise Gem::Package::TooLongFileName.new("File \"#{prefix}/#{name}\" has a too long name (should be 100 or less)") end |