On Mon, Sep 04, 2023 at 01:54:18PM +0100, Jeremie Courreges-Anglas wrote: > > Two code sets are currently guarded with #ifdef SMALL in pax(1) and > tar(1): reading 'pax' format extended headers, and identifying various > compressed formats for user-friendliness. As noted by Caspar, the SMALL > path isn't currently used on the install media. I've been confused by > this twice already... > > Here's a proposal: > > 1. always compile in read support for the 'pax' format extended headers. > The ustar format is limited and being able to restore archives using > the pax format in any situation would be nice. Especially if we > switch to writing out pax format archives by default one day. > We're definitely not there yet. > > 2. actually use -DSMALL to save a bit of storage on the install media. > The behavior is still sane, tar(1) warns that it doesn't recognize > a compressed archive, seeks through it trying to look a tar header, > and eventually gives up. Here's the tiny size change on amd64: > shannon /usr/src/distrib/special/pax$ size tar.o options.o pax obj/tar.o > obj/options.o obj/pax > text data bss dec hex > 6821 0 40 6861 1acd tar.o > 7195 1084 32 8311 2077 options.o > 390495 19024 85392 494911 78d3f pax > 6821 0 40 6861 1acd obj/tar.o > 6878 1084 32 7994 1f3a obj/options.o > 390175 19024 85392 494591 78bff obj/pax > > I don't expect any regression on the ramdisks but a make release is > running just in case. > > ok?
Thanks a lot. OK caspar@ provided that Todd and Philip don't object. Caspar > > > Index: bin/pax/tar.c > =================================================================== > RCS file: /home/cvs/src/bin/pax/tar.c,v > retrieving revision 1.72 > diff -u -p -r1.72 tar.c > --- bin/pax/tar.c 19 Aug 2023 04:21:05 -0000 1.72 > +++ bin/pax/tar.c 4 Sep 2023 12:19:39 -0000 > @@ -59,9 +59,7 @@ static u_long tar_chksm(char *, int); > static char *name_split(char *, int); > static int ul_oct(u_long, char *, int, int); > static int ull_oct(unsigned long long, char *, int, int); > -#ifndef SMALL > static int rd_xheader(ARCHD *arcn, int, off_t); > -#endif > > static uid_t uid_nobody; > static uid_t uid_warn; > @@ -721,14 +719,11 @@ ustar_rd(ARCHD *arcn, char *buf) > if (ustar_id(buf, BLKMULT) < 0) > return(-1); > > -#ifndef SMALL > reset: > -#endif > memset(arcn, 0, sizeof(*arcn)); > arcn->org_name = arcn->name; > arcn->sb.st_nlink = 1; > > -#ifndef SMALL > /* Process Extended headers. */ > if (hd->typeflag == XHDRTYPE || hd->typeflag == GHDRTYPE) { > if (rd_xheader(arcn, hd->typeflag == GHDRTYPE, > @@ -745,7 +740,6 @@ reset: > if (hd->typeflag == XHDRTYPE || hd->typeflag == GHDRTYPE) > goto reset; > } > -#endif > > if (!arcn->nlen) { > /* > @@ -1190,8 +1184,6 @@ expandname(char *buf, size_t len, char * > return(nlen); > } > > -#ifndef SMALL > - > /* shortest possible extended record: "5 a=\n" */ > #define MINXHDRSZ 5 > > @@ -1331,4 +1323,3 @@ rd_xheader(ARCHD *arcn, int global, off_ > return (-1); > return (ret); > } > -#endif > Index: distrib/special/pax/Makefile > =================================================================== > RCS file: /home/cvs/src/distrib/special/pax/Makefile,v > retrieving revision 1.2 > diff -u -p -r1.2 Makefile > --- distrib/special/pax/Makefile 13 Sep 2018 16:34:33 -0000 1.2 > +++ distrib/special/pax/Makefile 3 Sep 2023 10:38:17 -0000 > @@ -1,7 +1,7 @@ > # $OpenBSD: Makefile,v 1.2 2018/09/13 16:34:33 sthen Exp $ > > .PATH: ${.CURDIR}/../../../bin/pax > -CFLAGS+=-DNOCPIO -I${.CURDIR}/../../../bin/pax > +CFLAGS+=-DNOCPIO -DSMALL -I${.CURDIR}/../../../bin/pax > > PROG= pax > SRCS= ar_io.c ar_subs.c buf_subs.c file_subs.c ftree.c\ > > > -- > jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE