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

Reply via email to