pub fn fullName(header: Header, buffer: []u8) ![]const u8 header: Headerbuffer: []u8177
178
179
180
181
182
183
184
185
186
187
188
189 pub fn fullName(header: Header, buffer: []u8) ![]const u8 {
const n = name(header);
const p = prefix(header);
if (buffer.len < n.len + p.len + 1) return error.TarInsufficientBuffer;
if (!is_ustar(header) or p.len == 0) {
@memcpy(buffer[0..n.len], n);
return buffer[0..n.len];
}
@memcpy(buffer[0..p.len], p);
buffer[p.len] = '/';
@memcpy(buffer[p.len + 1 ..][0..n.len], n);
return buffer[0 .. p.len + 1 + n.len];
}
Includes prefix concatenated, if any. TODO: check against "../" and other nefarious things