alexcrichton / tar-rs

Tar file reading/writing for Rust
https://docs.rs/tar
Apache License 2.0
629 stars 188 forks source link

Pax extended attributes for long filenames? #318

Open ryanavella opened 1 year ago

ryanavella commented 1 year ago

If I provide a very long path to Builder::append_data, it currently handles this by appending a GNU-style long-name extension into the archive.

This makes sense if I'm using a GnuHeader, but if I am using a UstarHeader I'd assume that this would be encoded using pax-style extended attributes instead. This is what libarchive does when the format is set to rpax (restricted pax), for example.

Is there a workaround with the current API to provide these pax headers?

Longer-term, would it make sense to add another field to the Builder for the user to select their preferred extended attribute format, rather than assuming GNU-style as the default?

ryanavella commented 1 year ago

Actually, I think the first half of my question is answered in #102 already.

So my only remaining question is about whether or not GNU-style makes sense as the default for Builder (even when GnuHeader is intentionally not selected), and whether it would make sense to add more knobs for choosing between pax & gnu style in the future.