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