class Gem::Package::TarWriter

def split_name(name) # :nodoc:

:nodoc:
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 || 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
  [name, prefix]
end