Object
Allows writing of tar files
Creates a new TarWriter, yielding it if a block is given
# File lib/rubygems/package/tar_writer.rb, line 77
77: def self.new(io)
78: writer = super
79:
80: return writer unless block_given?
81:
82: begin
83: yield writer
84: ensure
85: writer.close
86: end
87:
88: nil
89: end
Creates a new TarWriter that will write to io
# File lib/rubygems/package/tar_writer.rb, line 94
94: def initialize(io)
95: @io = io
96: @closed = false
97: end
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 "\00"" * 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 "\00"" * 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("\00"" * min_padding)
151:
152: remainder = (512 - (size % 512)) % 512
153: @io.write("\00"" * remainder)
154:
155: self
156: end
Raises IOError if the TarWriter is closed
# File lib/rubygems/package/tar_writer.rb, line 161
161: def check_closed
162: raise IOError, "closed #{self.class}" if closed?
163: end
Closes the TarWriter
# File lib/rubygems/package/tar_writer.rb, line 168
168: def close
169: check_closed
170:
171: @io.write "\00"" * 1024
172: flush
173:
174: @closed = true
175: end
Is the TarWriter closed?
# File lib/rubygems/package/tar_writer.rb, line 180
180: def closed?
181: @closed
182: end
Flushes the TarWriter’s IO
# File lib/rubygems/package/tar_writer.rb, line 187
187: def flush
188: check_closed
189:
190: @io.flush if @io.respond_to? :flush
191: 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
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.