| Class | Gem::Package::TarWriter |
| In: |
lib/rubygems/package/tar_writer.rb
|
| Parent: | Object |
Allows writing of tar files
Adds file name with permissions mode, and yields an IO for writing the file to
# File lib/rubygems/package/tar_writer.rb, line 103
103: def add_file(name, mode) # :yields: io
104: check_closed
105:
106: raise Gem::Package::NonSeekableIO unless @io.respond_to? :pos=
107:
108: name, prefix = split_name name
109:
110: init_pos = @io.pos
111: @io.write "\0" * 512 # placeholder for the header
112:
113: yield RestrictedStream.new(@io) if block_given?
114:
115: size = @io.pos - init_pos - 512
116:
117: remainder = (512 - (size % 512)) % 512
118: @io.write "\0" * remainder
119:
120: final_pos = @io.pos
121: @io.pos = init_pos
122:
123: header = Gem::Package::TarHeader.new :name => name, :mode => mode,
124: :size => size, :prefix => prefix
125:
126: @io.write header
127: @io.pos = final_pos
128:
129: self
130: end
Add file name with permissions mode size bytes long. Yields an IO to write the file to.
# File lib/rubygems/package/tar_writer.rb, line 136
136: def add_file_simple(name, mode, size) # :yields: io
137: check_closed
138:
139: name, prefix = split_name name
140:
141: header = Gem::Package::TarHeader.new(:name => name, :mode => mode,
142: :size => size, :prefix => prefix).to_s
143:
144: @io.write header
145: os = BoundedStream.new @io, size
146:
147: yield os if block_given?
148:
149: min_padding = size - os.written
150: @io.write("\0" * min_padding)
151:
152: remainder = (512 - (size % 512)) % 512
153: @io.write("\0" * remainder)
154:
155: self
156: end
Creates a new directory in the tar file name with mode
# File lib/rubygems/package/tar_writer.rb, line 196
196: def mkdir(name, mode)
197: check_closed
198:
199: name, prefix = split_name(name)
200:
201: header = Gem::Package::TarHeader.new :name => name, :mode => mode,
202: :typeflag => "5", :size => 0,
203: :prefix => prefix
204:
205: @io.write header
206:
207: self
208: end