method
split_name
v2_6_3 -
Show latest stable
- Class:
Gem::Package::TarWriter
split_name(name)public
Splits name into a name and prefix that can fit in the TarHeader
# File lib/rubygems/package/tar_writer.rb, line 310
def split_name(name) # :nodoc:
if name.bytesize > 256
raise Gem::Package::TooLongFileName.new("File \"#{name}\" has a too long path (should be 256 or less)")
end
prefix = ''
if name.bytesize > 100
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
if name.bytesize > 100 or prefix.empty?
raise Gem::Package::TooLongFileName.new("File \"#{prefix}/#{name}\" has a too long name (should be 100 or less)")
end
if prefix.bytesize > 155
raise Gem::Package::TooLongFileName.new("File \"#{prefix}/#{name}\" has a too long base path (should be 155 or less)")
end
end
return name, prefix
end Related methods
- Instance methods
- add_file
- add_file_digest
- add_file_signed
- add_file_simple
- add_symlink
- check_closed
- close
- closed?
- flush
- mkdir
- split_name
- Class methods
- new
- new