Class: Gem::Package::TarWriter
- Inherits:
-
Object
- Object
- Gem::Package::TarWriter
- Defined in:
- lib/simple_backup/source/abstract.rb
Constant Summary collapse
- LONGLINK_NAME =
'././@LongLink'
Instance Method Summary collapse
Instance Method Details
#add_long_link(name, mode) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/simple_backup/source/abstract.rb', line 11 def add_long_link(name, mode) check_closed raise Gem::Package::NonSeekableIO unless @io.respond_to? :pos= init_pos = @io.pos @io.write "\0" * 512 # placeholder for the header @io.write name size = @io.pos - init_pos - 512 remainder = (512 - (size % 512)) % 512 @io.write "\0" * remainder final_pos = @io.pos @io.pos = init_pos header = Gem::Package::TarHeader.new name: LONGLINK_NAME, mode: mode, size: size, prefix: '', typeflag: 'L' @io.write header @io.pos = final_pos self end |
#add_longname_file(*arguments) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/simple_backup/source/abstract.rb', line 37 def add_longname_file(*arguments) tries ||= 1 if block_given? add_file(*arguments, &Proc.new) else add_file(*arguments) end rescue Gem::Package::TooLongFileName => e add_long_link *arguments arguments.first.slice!(0, 100) retry if (tries -= 1) >= 0 raise e end |