Applied, thanks!
On Fri, Dec 10, 2021 at 2:30 PM Peter Korsgaard <pe...@korsgaard.com> wrote: > > >>>>> "Peter" == Peter Korsgaard <pe...@korsgaard.com> writes: > > > GNU binutils in deterministic mode (ar rD or built with > > --enable-deterministic-archives) hard codes file mode to 0644 (NOT 0100644) > > since https://github.com/bminor/binutils-gdb/commit/36e4dce69dd2 > > > This confuses busybox ar x (data_extract_all): > > > touch a; ar rD a.ar a > > ar: creating a.ar > > > busybox ar x a.ar > > ar: unrecognized file type > > hexdump -C a.ar > > 00000000 21 3c 61 72 63 68 3e 0a 61 2f 20 20 20 20 20 20 |!<arch>.a/ > | > > 00000010 20 20 20 20 20 20 20 20 30 20 20 20 20 20 20 20 | 0 > | > > 00000020 20 20 20 20 30 20 20 20 20 20 30 20 20 20 20 20 | 0 0 > | > > 00000030 36 34 34 20 20 20 20 20 30 20 20 20 20 20 20 20 |644 0 > | > > 00000040 20 20 60 0a | `.| > > > As a workaround, force the mode bits to S_IFREG, as nothing else makes > sense > > for ar. > > Ping? > > > Signed-off-by: Peter Korsgaard <pe...@korsgaard.com> > > --- > > archival/libarchive/get_header_ar.c | 6 +++++- > > 1 file changed, 5 insertions(+), 1 deletion(-) > > > diff --git a/archival/libarchive/get_header_ar.c > b/archival/libarchive/get_header_ar.c > > index 3a19d6ff7..6bd897392 100644 > > --- a/archival/libarchive/get_header_ar.c > > +++ b/archival/libarchive/get_header_ar.c > > @@ -92,8 +92,12 @@ char FAST_FUNC get_header_ar(archive_handle_t > *archive_handle) > > /* Only size is always present, the rest may be missing in > > * long filename pseudo file. Thus we decode the rest > > * after dealing with long filename pseudo file. > > + * > > + * GNU binutils in deterministic mode hard codes mode to 0644 (NOT > > + * 0100644). AR archives can only contain files, so force file > > + * mode. > > */ > > - typed->mode = read_num(ar.formatted.mode, 8, > sizeof(ar.formatted.mode)); > > + typed->mode = read_num(ar.formatted.mode, 8, > sizeof(ar.formatted.mode)) | S_IFREG; > > typed-> gid = read_num(ar.formatted.gid, 10, > sizeof(ar.formatted.gid)); > > typed-> uid = read_num(ar.formatted.uid, 10, > sizeof(ar.formatted.uid)); > > typed-> mtime = read_num(ar.formatted.date, 10, > sizeof(ar.formatted.date)); > > -- > > 2.20.1 > > -- > Bye, Peter Korsgaard > _______________________________________________ > busybox mailing list > busybox@busybox.net > http://lists.busybox.net/mailman/listinfo/busybox _______________________________________________ busybox mailing list busybox@busybox.net http://lists.busybox.net/mailman/listinfo/busybox