On 12 Jan 2017 14:32:59 +0100, Martin Husemann wrote:
Hey folks,

in -current the atari build fails due to the 1.4MB floppy image
overflowing.

See: http://releng.netbsd.org/cgi-bin/builds.cgi

Any ideas what to strip out?

How about dropping Apple and byte-swapped UFS support from fsck_ffs and
newfs? Both seem to be useless for atari (is it right?). This reduces
about 10KB from instbin, and the resulting filesystem successfully fits
within 1.4MB.

Thanks,
Rin

--- src/distrib/atari/floppies/common/Makefile.images.orig      2017-02-07 
07:14:09.304814268 +0900
+++ src/distrib/atari/floppies/common/Makefile.images   2017-02-07 
14:11:13.928606822 +0900
@@ -8,6 +8,8 @@
 WARNS=         1
 DBG=           -Os -m68020-60  # -m68020-60 seems to generate smaller binaries
 DBG+=          -DNDEBUG        # to remove assert(3) macro
+CRUNCHENV+=    NOAPPLEUFS=1    # disable Apple UFS support
+CRUNCHENV+=    NOUFSBSWAP=1    # disable byte-swapped UFS support
CRUNCHBIN= instbin
 LISTS=         ${.CURDIR}/list ${.CURDIR}/../common/list.images
--- src/sbin/fsck_ffs/Makefile.orig     2017-02-07 14:09:42.700416503 +0900
+++ src/sbin/fsck_ffs/Makefile  2017-02-07 11:29:54.319623708 +0900
@@ -6,8 +6,20 @@
 PROG=  fsck_ffs
 MAN=   fsck_ffs.8
 SRCS=  dir.c inode.c main.c pass1.c pass1b.c pass2.c pass3.c pass4.c \
-       pass5.c pass6.c fsutil.c setup.c utilities.c ffs_bswap.c ffs_subr.c \
-       ffs_tables.c ffs_appleufs.c partutil.c snapshot.c quota2.c quota2_subr.c
+       pass5.c pass6.c fsutil.c setup.c utilities.c ffs_subr.c \
+       ffs_tables.c partutil.c snapshot.c quota2.c quota2_subr.c
+
+.if defined(NOAPPLEUFS)
+CPPFLAGS+=-DNOAPPLEUFS
+.else
+SRCS+= ffs_appleufs.c
+.endif
+
+.if defined(NOUFSBSWAP)
+CPPFLAGS+=-DNOUFSBSWAP
+.else
+SRCS+= ffs_bswap.c
+.endif
FSCK= ${NETBSDSRCDIR}/sbin/fsck
 DUMP=  ${NETBSDSRCDIR}/sbin/dump
--- src/sbin/fsck_ffs/fsck.h.orig       2017-02-07 14:09:42.702586585 +0900
+++ src/sbin/fsck_ffs/fsck.h    2017-02-07 13:51:55.865661950 +0900
@@ -156,6 +156,7 @@
 struct fs *altsblock;
 struct cg *cgrp;
 struct fs *sblocksave;
+#ifndef NOUFSBSWAP
 #define        sbdirty() \
        do { \
                memmove(sblk.b_un.b_fs, sblock, SBLOCKSIZE); \
@@ -164,6 +165,14 @@
                        ffs_sb_swap(sblk.b_un.b_fs, sblk.b_un.b_fs); \
                sblk.b_dirty = 1; \
        } while (0)
+#else
+#define        sbdirty() \
+       do { \
+               memmove(sblk.b_un.b_fs, sblock, SBLOCKSIZE); \
+               sb_oldfscompat_write(sblk.b_un.b_fs, sblocksave); \
+               sblk.b_dirty = 1; \
+       } while (0)
+#endif
 #define        cgdirty()       do {copyback_cg(&cgblk); cgblk.b_dirty = 1;} 
while (0)
#define appleufsdirty() \
@@ -362,3 +371,8 @@
                return bswap64(x);
        else return x;
 }
+
+/* XXX */
+#ifdef NOUFSBSWAP
+#define        ufs_rw32(x, ns) (x)
+#endif
--- src/sbin/fsck_ffs/inode.c.orig      2017-02-07 14:09:42.704024121 +0900
+++ src/sbin/fsck_ffs/inode.c   2017-02-07 11:33:09.813269777 +0900
@@ -46,7 +46,9 @@
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
 #include <ufs/ffs/ffs_extern.h>
+#ifndef NOUFSBSWAP
 #include <ufs/ufs/ufs_bswap.h>
+#endif
#ifndef SMALL
 #include <err.h>
@@ -64,8 +66,10 @@
 static ino_t startinum;
static int iblock(struct inodesc *, long, u_int64_t);
+#ifndef NOUFSBSWAP
 static void swap_dinode1(union dinode *, int);
 static void swap_dinode2(union dinode *, int);
+#endif
int
 ckinode(union dinode *dp, struct inodesc *idesc)
@@ -342,6 +346,7 @@
        return ((union dinode *)((caddr_t)pbp->b_un.b_buf + blkoff));
 }
+#ifndef NOUFSBSWAP
 static void
 swap_dinode1(union dinode *dp, int n)
 {
@@ -385,6 +390,7 @@
                }
        }
 }
+#endif
/*
  * Special purpose version of ginode used to optimize first pass
@@ -417,6 +423,7 @@
                        lastinum += fullcnt;
                }
                (void)bread(fsreadfd, (caddr_t)inodebuf, dblk, size);
+#ifndef NOUFSBSWAP
                if (doswap) {
                        if (is_ufs2)
                                swap_dinode2(inodebuf, lastinum - inumber);
@@ -424,6 +431,7 @@
                                swap_dinode1(inodebuf, lastinum - inumber);
                        bwrite(fswritefd, (char *)inodebuf, dblk, size);
                }
+#endif
                dp = (union dinode *)inodebuf;
        }
        ret = dp;
@@ -750,12 +758,16 @@
        }
        getblk(&cgblk, cgtod(sblock, cg), sblock->fs_cgsize);
        memcpy(cgp, cgblk.b_un.b_cg, sblock->fs_cgsize);
+#ifndef NOUFSBSWAP
        if ((doswap && !needswap) || (!doswap && needswap))
                ffs_cg_swap(cgblk.b_un.b_cg, cgp, sblock);
+#endif
        if (!cg_chkmagic(cgp, 0))
                pfatal("CG %d: ALLOCINO: BAD MAGIC NUMBER\n", cg);
+#ifndef NOUFSBSWAP
        if (doswap)
                cgdirty();
+#endif
        setbit(cg_inosused(cgp, 0), ino % sblock->fs_ipg);
        cgp->cg_cs.cs_nifree--;
        sblock->fs_cstotal.cs_nifree--;
@@ -830,8 +842,10 @@
        cg = ino_to_cg(sblock, ino);
        getblk(&cgblk, cgtod(sblock, cg), sblock->fs_cgsize);
        memcpy(cgp, cgblk.b_un.b_cg, sblock->fs_cgsize);
+#ifndef NOUFSBSWAP
        if ((doswap && !needswap) || (!doswap && needswap))
                ffs_cg_swap(cgblk.b_un.b_cg, cgp, sblock);
+#endif
        if (!cg_chkmagic(cgp, 0)) {
                pwarn("CG %d: FREEINO: BAD MAGIC NUMBER\n", cg);
                cgp = NULL;
--- src/sbin/fsck_ffs/main.c.orig       2017-02-07 14:09:42.704735053 +0900
+++ src/sbin/fsck_ffs/main.c    2017-02-07 14:08:07.492049315 +0900
@@ -98,18 +98,27 @@
        forceimage = 0;
        endian = 0;
        isappleufs = 0;
+#ifndef NOAPPLEUFS
        while ((ch = getopt(argc, argv, "aB:b:c:dFfm:npPqUyx:X")) != -1) {
+#else
+       while ((ch = getopt(argc, argv, "B:b:c:dFfm:npPqUyx:X")) != -1) {
+#endif
                switch (ch) {
+#ifndef NOAPPLEUFS
                case 'a':
                        isappleufs = 1;
                        break;
+#endif
case 'B':
+#ifndef NOUFSBSWAP
                        if (strcmp(optarg, "be") == 0)
                                endian = BIG_ENDIAN;
                        else if (strcmp(optarg, "le") == 0)
                                endian = LITTLE_ENDIAN;
-                       else usage();
+                       else
+#endif
+                               usage();
                        break;
case 'b':
@@ -511,8 +520,15 @@
 {
(void) fprintf(stderr,
-           "usage: %s [-adFfPpqUX] [-B byteorder] [-b block] [-c level] "
-           "[-m mode]\n"
+           "usage: %s [-"
+#ifndef NOAPPLEUFS
+           "a"
+#endif
+           "dFfPpqUX] "
+#ifndef NOUFSBSWAP
+           "[-B byteorder] "
+#endif
+           "[-b block] [-c level] [-m mode]\n"
            "\t[-x snap-backup] [-y | -n] filesystem ...\n",
            getprogname());
        exit(FSCK_EXIT_USAGE);
--- src/sbin/fsck_ffs/pass1.c.orig      2017-02-07 14:09:42.705440103 +0900
+++ src/sbin/fsck_ffs/pass1.c   2017-02-07 11:29:54.326516818 +0900
@@ -45,7 +45,9 @@
 #include <ufs/ufs/dinode.h>
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
+#ifndef NOUFSBSWAP
 #include <ufs/ufs/ufs_bswap.h>
+#endif
 #include <ufs/ffs/ffs_extern.h>
#include <err.h>
@@ -102,8 +104,10 @@
                setinodebuf(inumber);
                getblk(&cgblk, cgtod(sblock, c), sblock->fs_cgsize);
                memcpy(cgp, cgblk.b_un.b_cg, sblock->fs_cgsize);
+#ifndef NOUFSBSWAP
                if((doswap && !needswap) || (!doswap && needswap))
                        ffs_cg_swap(cgblk.b_un.b_cg, cgp, sblock);
+#endif
                if (is_ufs2)
                        inosused = cgp->cg_initediblk;
                else
--- src/sbin/fsck_ffs/pass4.c.orig      2017-02-07 14:09:42.708308211 +0900
+++ src/sbin/fsck_ffs/pass4.c   2017-02-07 11:29:54.329532165 +0900
@@ -42,7 +42,9 @@
 #include <sys/time.h>
 #include <sys/stat.h>
+#ifndef NOUFSBSWAP
 #include <ufs/ufs/ufs_bswap.h>
+#endif
 #include <ufs/ufs/dinode.h>
 #include <ufs/ffs/fs.h>
 #include <ufs/ffs/ffs_extern.h>
@@ -165,8 +167,10 @@
        cg = dtog(sblock, blkno);
        getblk(&cgblk, cgtod(sblock, cg), sblock->fs_cgsize);
        memcpy(cgp, cgblk.b_un.b_cg, sblock->fs_cgsize);
+#ifndef NOUFSBSWAP
        if ((doswap && !needswap) || (!doswap && needswap))
                ffs_cg_swap(cgblk.b_un.b_cg, cgp, sblock);
+#endif
        if (!cg_chkmagic(cgp, 0)) {
                pwarn("CG %d: ALLOCBLK: BAD MAGIC NUMBER\n", cg);
                cgp = NULL;
--- src/sbin/fsck_ffs/pass5.c.orig      2017-02-07 14:09:42.709010933 +0900
+++ src/sbin/fsck_ffs/pass5.c   2017-02-07 11:48:43.594684664 +0900
@@ -44,7 +44,9 @@
 #include <ufs/ufs/dinode.h>
 #include <ufs/ffs/fs.h>
 #include <ufs/ffs/ffs_extern.h>
+#ifndef NOUFSBSWAP
 #include <ufs/ufs/ufs_bswap.h>
+#endif
#include <err.h>
 #include <string.h>
@@ -212,12 +214,16 @@
 #endif /* PROGRESS */
                getblk(&cgblk, cgtod(fs, c), fs->fs_cgsize);
                memcpy(cg, cgblk.b_un.b_cg, fs->fs_cgsize);
+#ifndef NOUFSBSWAP
                if((doswap && !needswap) || (!doswap && needswap))
                        ffs_cg_swap(cgblk.b_un.b_cg, cg, sblock);
+#endif
                if (!doinglevel1 && !cg_chkmagic(cg, 0))
                        pfatal("CG %d: PASS5: BAD MAGIC NUMBER\n", c);
+#ifndef NOUFSBSWAP
                if(doswap)
                        cgdirty();
+#endif
                /*
                 * While we have the disk head where we want it,
                 * write back the superblock to the spare at this
@@ -240,8 +246,10 @@
                        else {
                                memmove(altsblock, asblk.b_un.b_fs,
                                    sblock->fs_sbsize);
+#ifndef NOUFSBSWAP
                                if (needswap)
                                        ffs_sb_swap(asblk.b_un.b_fs, altsblock);
+#endif
                        }
                        sb_oldfscompat_write(sblock, sblocksave);
                        if ((asblk.b_errs || cmpsblks(sblock, altsblock)) &&
--- src/sbin/fsck_ffs/pass6.c.orig      2017-02-07 14:09:42.709691390 +0900
+++ src/sbin/fsck_ffs/pass6.c   2017-02-07 11:48:59.997557571 +0900
@@ -31,7 +31,9 @@
 #include <ufs/ufs/dinode.h>
 #include <ufs/ffs/fs.h>
 #include <ufs/ffs/ffs_extern.h>
+#ifndef NOUFSBSWAP
 #include <ufs/ufs/ufs_bswap.h>
+#endif
#include <err.h>
 #include <string.h>
--- src/sbin/fsck_ffs/quota2.c.orig     2017-02-07 14:09:42.710392968 +0900
+++ src/sbin/fsck_ffs/quota2.c  2017-02-07 11:29:54.331805934 +0900
@@ -31,7 +31,9 @@
 #include <ufs/ufs/dinode.h>
 #include <ufs/ffs/fs.h>
 #include <ufs/ffs/ffs_extern.h>
+#ifndef NOUFSBSWAP
 #include <ufs/ufs/ufs_bswap.h>
+#endif
#include <err.h>
 #include <string.h>
--- src/sbin/fsck_ffs/setup.c.orig      2017-02-07 14:09:42.711129160 +0900
+++ src/sbin/fsck_ffs/setup.c   2017-02-07 13:53:03.153413675 +0900
@@ -47,7 +47,9 @@
#include <ufs/ufs/dinode.h>
 #include <ufs/ufs/dir.h>
+#ifndef NOUFSBSWAP
 #include <ufs/ufs/ufs_bswap.h>
+#endif
 #include <ufs/ufs/quota2.h>
 #include <ufs/ffs/fs.h>
 #include <ufs/ffs/ffs_extern.h>
@@ -70,7 +72,9 @@
 static void badsb(int, const char *);
 static int calcsb(const char *, int, struct fs *);
 static int readsb(int);
+#ifndef NOAPPLEUFS
 static int readappleufs(void);
+#endif
int16_t sblkpostbl[256]; @@ -438,8 +442,10 @@
        if (asblk.b_dirty && !bflag) {
                memmove(sblk.b_un.b_fs, sblock, SBLOCKSIZE);
                sb_oldfscompat_write(sblk.b_un.b_fs, sblocksave);
+#ifndef NOUFSBSWAP
                if (needswap)
                        ffs_sb_swap(sblk.b_un.b_fs, sblk.b_un.b_fs);
+#endif
                memmove(asblk.b_un.b_fs, sblk.b_un.b_fs, 
(size_t)sblock->fs_sbsize);
                flush(fswritefd, &asblk);
        }
@@ -467,6 +473,7 @@
                        }
                        asked++;
                }
+#ifndef NOUFSBSWAP
                if (doswap) {
                        ffs_csum_swap(ccsp, ccsp, size);
                        bwrite(fswritefd, (char *)ccsp,
@@ -476,6 +483,7 @@
                }
                if (needswap)
                        ffs_csum_swap(ccsp, ccsp, size);
+#endif
        }
        /*
         * allocate and initialize the necessary maps
@@ -529,10 +537,16 @@
if (!forceimage && dkw.dkw_parent[0])
                if (strcmp(dkw.dkw_ptype, DKW_PTYPE_APPLEUFS) == 0)
+#ifndef NOAPPLEUFS
                        isappleufs = 1;
+#else
+                       errexit("Apple UFS support is not compiled in");
+#endif
+#ifndef NOAPPLEUFS
        if (readappleufs())
                isappleufs = 1;
+#endif
dirblksiz = UFS_DIRBLKSIZ;
        if (isappleufs)
@@ -580,6 +594,7 @@
        return (0);
 }
+#ifndef NOAPPLEUFS
 static int
 readappleufs(void)
 {
@@ -684,6 +699,7 @@
        }
        return 1;
 }
+#endif
/*
  * Detect byte order. Return 0 if valid magic found, -1 otherwise.
@@ -700,12 +716,17 @@
                        needswap = 0;
                        doswap = do_blkswap = do_dirswap = 0;
                } else {
+#ifndef NOUFSBSWAP
                        needswap = 1;
                        doswap = do_blkswap = do_dirswap = 1;
+#else
+                       errexit("Byte-swapped UFS support is not compiled in");
+#endif
                }
                return 0;
        } else if (fs->fs_magic == FS_UFS1_MAGIC_SWAPPED ||
                   fs->fs_magic == FS_UFS2_MAGIC_SWAPPED) {
+#ifndef NOUFSBSWAP
                if (endian == 0 || BYTE_ORDER != endian) {
                        needswap = 1;
                        doswap = do_blkswap = do_dirswap = 0;
@@ -714,6 +735,9 @@
                        doswap = do_blkswap = do_dirswap = 1;
                }
                return 0;
+#else
+               errexit("Byte-swapped UFS support is not compiled in");
+#endif
        }
        return -1;
 }
@@ -758,6 +782,7 @@
                        return (0);
                }
        }
+#ifndef NOUFSBSWAP
        if (doswap) {
                if (preen)
                        errx(FSCK_EXIT_USAGE,
@@ -779,10 +804,13 @@
        /* swap SB byte order if asked */
        if (doswap)
                ffs_sb_swap(sblk.b_un.b_fs, sblk.b_un.b_fs);
+#endif
memmove(sblock, sblk.b_un.b_fs, SBLOCKSIZE);
+#ifndef NOUFSBSWAP
        if (needswap)
                ffs_sb_swap(sblk.b_un.b_fs, sblock);
+#endif
is_ufs2 = sblock->fs_magic == FS_UFS2_MAGIC; @@ -810,13 +838,17 @@
        getblk(&asblk, cgsblock(sblock, sblock->fs_ncg - 1), sblock->fs_sbsize);
        if (asblk.b_errs)
                return (0);
+#ifndef NOUFSBSWAP
        /* swap SB byte order if asked */
        if (doswap)
                ffs_sb_swap(asblk.b_un.b_fs, asblk.b_un.b_fs);
+#endif
memmove(altsblock, asblk.b_un.b_fs, sblock->fs_sbsize);
+#ifndef NOUFSBSWAP
        if (needswap)
                ffs_sb_swap(asblk.b_un.b_fs, altsblock);
+#endif
        if (cmpsblks(sblock, altsblock)) {
                if (debug) {
                        uint32_t *nlp, *olp, *endlp;
@@ -844,11 +876,13 @@
sb_oldfscompat_read(sblock, &sblocksave); +#ifndef NOUFSBSWAP
        /* Now we know the SB is valid, we can write it back if needed */
        if (doswap) {
                sbdirty();
                dirty(&asblk);
        }
+#endif
        havesb = 1;
        return (1);
 }
--- src/sbin/fsck_ffs/utilities.c.orig  2017-02-07 14:09:42.711847753 +0900
+++ src/sbin/fsck_ffs/utilities.c       2017-02-07 11:29:54.333521181 +0900
@@ -45,7 +45,9 @@
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
 #include <ufs/ffs/ffs_extern.h>
+#ifndef NOUFSBSWAP
 #include <ufs/ufs/ufs_bswap.h>
+#endif
 #include <ufs/ufs/quota2.h>
#include <ctype.h>
@@ -238,13 +240,17 @@
                int size = sblock->fs_cssize - i < sblock->fs_bsize ?
                        sblock->fs_cssize - i : sblock->fs_bsize;
                ccsp = (struct csum *)((char *)sblock->fs_csp + i);
+#ifndef NOUFSBSWAP
                if (needswap)
                        ffs_csum_swap(ccsp, ccsp, size);
+#endif
                bwrite(fswritefd, (char *)ccsp,
                    FFS_FSBTODB(sblock, sblock->fs_csaddr + j * 
sblock->fs_frag),
                    size);
+#ifndef NOUFSBSWAP
                if (needswap)
                        ffs_csum_swap(ccsp, ccsp, size);
+#endif
        }
 }
@@ -409,8 +415,10 @@
                        cg = dtog(sblock, i + j);
                        getblk(&cgblk, cgtod(sblock, cg), sblock->fs_cgsize);
                        memcpy(cgp, cgblk.b_un.b_cg, sblock->fs_cgsize);
+#ifndef NOUFSBSWAP
                        if ((doswap && !needswap) || (!doswap && needswap))
                                ffs_cg_swap(cgblk.b_un.b_cg, cgp, sblock);
+#endif
                        if (!cg_chkmagic(cgp, 0))
                                pfatal("CG %d: ALLOCBLK: BAD MAGIC NUMBER\n",
                                    cg);
@@ -556,8 +564,10 @@
 {
memcpy(blk->b_un.b_cg, cgrp, sblock->fs_cgsize);
+#ifndef NOUFSBSWAP
        if (needswap)
                ffs_cg_swap(cgrp, blk->b_un.b_cg, sblock);
+#endif
 }
void
@@ -604,6 +614,7 @@
                if (debug)
                        printf("detected ufs1 superblock not yet updated for ufs2 
kernels\n");
+#ifndef NOUFSBSWAP
                if (doswap) {
                        uint16_t postbl[256];
                        int i, n;
@@ -635,6 +646,7 @@
                        if (needswap)
                                ffs_sb_swap(*fssave, *fssave);
                }
+#endif
} --- src/sbin/fsck_ffs/wapbl.c.orig 2017-02-07 14:09:42.712539626 +0900
+++ src/sbin/fsck_ffs/wapbl.c   2017-02-07 11:29:54.334285153 +0900
@@ -51,7 +51,9 @@
#include <ufs/ufs/dinode.h>
 #include <ufs/ufs/dir.h>
+#ifndef NOUFSBSWAP
 #include <ufs/ufs/ufs_bswap.h>
+#endif
 #include <ufs/ufs/ufs_wapbl.h>
 #include <ufs/ffs/fs.h>
 #include <ufs/ffs/ffs_extern.h>
--- src/sbin/newfs/Makefile.orig        2017-02-07 14:10:29.805101042 +0900
+++ src/sbin/newfs/Makefile     2017-02-07 11:53:31.316219505 +0900
@@ -4,10 +4,22 @@
 .include <bsd.own.mk>
PROG= newfs
-SRCS=  dkcksum.c newfs.c mkfs.c ffs_bswap.c ffs_appleufs.c partutil.c
+SRCS=  dkcksum.c newfs.c mkfs.c partutil.c
 SRCS+= pathadj.c quota2_subr.c
 MAN=   newfs.8 mount_mfs.8
+.if defined(NOAPPLEUFS)
+CPPFLAGS+=-DNOAPPLEUFS
+.else
+SRCS+=  ffs_appleufs.c
+.endif
+
+.if defined(NOUFSBSWAP)
+CPPFLAGS+=-DNOUFSBSWAP
+.else
+SRCS+=  ffs_bswap.c
+.endif
+
 DISKLABEL=${NETBSDSRCDIR}/sbin/disklabel
 FSCK=${NETBSDSRCDIR}/sbin/fsck
 MOUNT=${NETBSDSRCDIR}/sbin/mount
--- src/sbin/newfs/mkfs.c.orig  2017-02-07 14:10:29.806633589 +0900
+++ src/sbin/newfs/mkfs.c       2017-02-07 14:19:16.827654581 +0900
@@ -83,7 +83,9 @@
 #include <sys/resource.h>
 #include <ufs/ufs/dinode.h>
 #include <ufs/ufs/dir.h>
+#ifndef NOUFSBSWAP
 #include <ufs/ufs/ufs_bswap.h>
+#endif
 #include <ufs/ufs/quota2.h>
 #include <ufs/ffs/fs.h>
 #include <ufs/ffs/ffs_extern.h>
@@ -101,6 +103,12 @@
 #include <stdio.h>
 #endif
+/* XXX */
+#ifdef NOUFSBSWAP
+#define        ufs_rw32(x, ns) (x)
+#define        ufs_rw64(x, ns) (x)
+#endif
+
 #include "extern.h"
union dinode {
@@ -631,6 +639,7 @@
                 */
                zap_old_sblock(EXT2FS_SBOFF);
+#ifndef NOAPPLEUFS
                if (isappleufs) {
                        struct appleufslabel appleufs;
                        ffs_appleufs_set(&appleufs, appleufs_volname,
@@ -648,6 +657,7 @@
                                    APPLEUFS_LABEL_SIZE, &appleufs);
                        }
                }
+#endif
        }
/*
@@ -655,8 +665,10 @@
         * writing out in each cylinder group.
         */
        memcpy(iobuf, &sblock, sizeof sblock);
+#ifndef NOUFSBSWAP
        if (needswap)
                ffs_sb_swap(&sblock, (struct fs *)iobuf);
+#endif
        if ((sblock.fs_old_flags & FS_FLAGS_UPDATED) == 0)
                memset(iobuf + offsetof(struct fs, fs_old_postbl_start),
                    0xff, 256);
@@ -739,21 +751,27 @@
                errx(1, "No space for superblock");
        memcpy(iobuf, &sblock, sizeof(sblock));
        memset(iobuf + sizeof(sblock), 0, i - sizeof(sblock));
+#ifndef NOUFSBSWAP
        if (needswap)
                ffs_sb_swap(&sblock, (struct fs *)iobuf);
+#endif
        if ((sblock.fs_old_flags & FS_FLAGS_UPDATED) == 0)
                memset(iobuf + offsetof(struct fs, fs_old_postbl_start),
                    0xff, 256);
        wtfs(sblock.fs_sblockloc / sectorsize, i, iobuf);
/* Write out first and last cylinder summary sectors */
+#ifndef NOUFSBSWAP
        if (needswap)
                ffs_csum_swap(fscs_0, fscs_0, sblock.fs_fsize);
+#endif
        wtfs(FFS_FSBTODB(&sblock, sblock.fs_csaddr), sblock.fs_fsize, fscs_0);
if (fscs_next > fscs_reset) {
+#ifndef NOUFSBSWAP
                if (needswap)
                        ffs_csum_swap(fscs_reset, fscs_reset, sblock.fs_fsize);
+#endif
                fs_csaddr++;
                wtfs(FFS_FSBTODB(&sblock, fs_csaddr), sblock.fs_fsize, 
fscs_reset);
        }
@@ -934,8 +952,10 @@
        *fscs_next++ = acg.cg_cs;
        if (fscs_next == fscs_end) {
                /* write block of cylinder group summary info into cyl 0 */
+#ifndef NOUFSBSWAP
                if (needswap)
                        ffs_csum_swap(fscs_reset, fscs_reset, sblock.fs_fsize);
+#endif
                fs_csaddr++;
                wtfs(FFS_FSBTODB(&sblock, fs_csaddr), sblock.fs_fsize, 
fscs_reset);
                fscs_next = fscs_reset;
@@ -947,8 +967,10 @@
         */
        start = sblock.fs_bsize > SBLOCKSIZE ? sblock.fs_bsize : SBLOCKSIZE;
        memcpy(&iobuf[start], &acg, sblock.fs_cgsize);
+#ifndef NOUFSBSWAP
        if (needswap)
                ffs_cg_swap(&acg, (struct cg*)&iobuf[start], &sblock);
+#endif
        start += sblock.fs_bsize;
        dp1 = (struct ufs1_dinode *)(&iobuf[start]);
        dp2 = (struct ufs2_dinode *)(&iobuf[start]);
@@ -1294,9 +1316,11 @@
        daddr_t d, blkno;
rdfs(FFS_FSBTODB(&sblock, cgtod(&sblock, 0)), sblock.fs_cgsize, &acg);
+#ifndef NOUFSBSWAP
        /* fs -> host byte order */
        if (needswap)
                ffs_cg_swap(&acg, &acg, &sblock);
+#endif
        if (acg.cg_magic != CG_MAGIC) {
                printf("cg 0: bad magic number\n");
                return (0);
@@ -1339,9 +1363,11 @@
                for (i = frag; i < sblock.fs_frag; i++)
                        setbit(cg_blksfree(&acg, 0), d + i);
        }
+#ifndef NOUFSBSWAP
        /* host -> fs byte order */
        if (needswap)
                ffs_cg_swap(&acg, &acg, &sblock);
+#endif
        wtfs(FFS_FSBTODB(&sblock, cgtod(&sblock, 0)), sblock.fs_cgsize, &acg);
        return (d);
 }
@@ -1353,14 +1379,18 @@
 iput(union dinode *ip, ino_t ino)
 {
        daddr_t d;
+#ifndef NOUFSBSWAP
        int i;
+#endif
        struct ufs1_dinode *dp1;
        struct ufs2_dinode *dp2;
rdfs(FFS_FSBTODB(&sblock, cgtod(&sblock, 0)), sblock.fs_cgsize, &acg);
        /* fs -> host byte order */
+#ifndef NOUFSBSWAP
        if (needswap)
                ffs_cg_swap(&acg, &acg, &sblock);
+#endif
        if (acg.cg_magic != CG_MAGIC) {
                printf("cg 0: bad magic number\n");
                fserr(31);
@@ -1368,8 +1398,10 @@
        acg.cg_cs.cs_nifree--;
        setbit(cg_inosused(&acg, 0), ino);
        /* host -> fs byte order */
+#ifndef NOUFSBSWAP
        if (needswap)
                ffs_cg_swap(&acg, &acg, &sblock);
+#endif
        wtfs(FFS_FSBTODB(&sblock, cgtod(&sblock, 0)), sblock.fs_cgsize, &acg);
        sblock.fs_cstotal.cs_nifree--;
        fscs_0->cs_nifree--;
@@ -1383,6 +1415,7 @@
        if (sblock.fs_magic == FS_UFS1_MAGIC) {
                dp1 = (struct ufs1_dinode *)iobuf;
                dp1 += ino_to_fsbo(&sblock, ino);
+#ifndef NOUFSBSWAP
                if (needswap) {
                        ffs_dinode1_swap(&ip->dp1, dp1);
                        /* ffs_dinode1_swap() doesn't swap blocks addrs */
@@ -1391,11 +1424,13 @@
                        for (i=0; i<UFS_NIADDR; i++)
                            dp1->di_ib[i] = bswap32(ip->dp1.di_ib[i]);
                } else
+#endif
                        *dp1 = ip->dp1;
                dp1->di_gen = arc4random() & INT32_MAX;
        } else {
                dp2 = (struct ufs2_dinode *)iobuf;
                dp2 += ino_to_fsbo(&sblock, ino);
+#ifndef NOUFSBSWAP
                if (needswap) {
                        ffs_dinode2_swap(&ip->dp2, dp2);
                        for (i=0; i<UFS_NDADDR; i++)
@@ -1403,6 +1438,7 @@
                        for (i=0; i<UFS_NIADDR; i++)
                            dp2->di_ib[i] = bswap64(ip->dp2.di_ib[i]);
                } else
+#endif
                        *dp2 = ip->dp2;
                dp2->di_gen = arc4random() & INT32_MAX;
        }
@@ -1558,6 +1594,7 @@
 copy_dir(struct direct *dir, struct direct *dbuf)
 {
        memcpy(dbuf, dir, UFS_DIRSIZ(Oflag == 0, dir, 0));
+#ifndef NOUFSBSWAP
        if (needswap) {
                dbuf->d_ino = bswap32(dir->d_ino);
                dbuf->d_reclen = bswap16(dir->d_reclen);
@@ -1565,6 +1602,7 @@
                        ((struct odirect*)dbuf)->d_namlen =
                                bswap16(((struct odirect*)dir)->d_namlen);
        }
+#endif
 }
static int
--- src/sbin/newfs/newfs.c.orig 2017-02-07 14:10:29.808749889 +0900
+++ src/sbin/newfs/newfs.c      2017-02-07 13:49:49.426535941 +0900
@@ -277,10 +277,15 @@
opstring = mfs ?
            "NT:V:a:b:d:e:f:g:h:i:m:n:o:p:q:s:u:" :
+#ifndef NOAPPLEUFS
            "B:FGINO:S:T:V:Za:b:d:e:f:g:h:i:l:m:n:o:q:r:s:v:";
+#else
+           "B:FGINO:S:T:V:Za:b:d:e:f:g:h:i:l:m:n:o:q:r:s:";
+#endif
        while ((ch = getopt(argc, argv, opstring)) != -1)
                switch (ch) {
                case 'B':
+#ifndef NOUFSBSWAP
                        if (strcmp(optarg, "be") == 0) {
 #if BYTE_ORDER == LITTLE_ENDIAN
                                needswap = 1;
@@ -290,6 +295,7 @@
                                needswap = 1;
 #endif
                        } else
+#endif
                                usage();
                        break;
                case 'F':
@@ -413,6 +419,7 @@
                        /* mfs only */
                        mfsuid = mfs_user(optarg);
                        break;
+#ifndef NOAPPLEUFS
                case 'v':
                        appleufs_volname = optarg;
                        if (strchr(appleufs_volname, ':') || 
strchr(appleufs_volname, '/'))
@@ -421,6 +428,7 @@
                                errx(1,"Apple UFS volume name cannot be zero 
length");
                        isappleufs = 1;
                        break;
+#endif
                case '?':
                default:
                        usage();
@@ -557,7 +565,11 @@
                                errx(1, "%s partition is unavailable", special);
if (strcmp(dkw.dkw_ptype, DKW_PTYPE_APPLEUFS) == 0)
+#ifndef NOAPPLEUFS
                                isappleufs = 1;
+#else
+                               errx(1, "Apple UFS support is not compiled in");
+#endif
                                
                        if (!Iflag) {
                                static const char m[] =
@@ -843,7 +855,9 @@
        int flags;
        const char *str;
 } const help_strings[] = {
+#ifndef NOUFSBSWAP
        { NEWFS,        "-B byteorder\tbyte order (`be' or `le')" },
+#endif
        { NEWFS,        "-F \t\tcreate file system image in regular file" },
        { NEWFS,        "-G \t\tmake sanity calculations non-fatal (testing 
only!)" },
        { NEWFS,        "-I \t\tdo not check that the file system type is 
'4.2BSD'" },
@@ -874,7 +888,9 @@
        { MFS_MOUNT,    "-p perm\t\tpermissions (in octal)" },
        { BOTH,         "-s fssize\tfile system size (sectors)" },
        { MFS_MOUNT,    "-u username\tuser name of mount point" },
+#ifndef NOAPPLEUFS
        { NEWFS,        "-v volname\tApple UFS volume name" },
+#endif
        { 0, NULL }
 };

Reply via email to