Fully synchronize sys/boot from FreeBSD-5.x, but add / to the module path
authorMatthew Dillon <dillon@dragonflybsd.org>
Mon, 10 Nov 2003 06:14:44 +0000 (06:14 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Mon, 10 Nov 2003 06:14:44 +0000 (06:14 +0000)
so /kernel will be found and loaded instead of /boot/kernel.  This will
give us all the capabilities of the FreeBSD-5 boot code including AMD64 and
ELF64 support.

This commit brings userland up to date with the kernel and boot code changes,
primarily due to sys/diskmbr.h separation from sys/disklabel.h, and
linker_set changes.

13 files changed:
contrib/libpam/libpam/pam_static.c
lib/libdisk/create_chunk.c
lib/libdisk/disk.c
lib/libdisk/rules.c
lib/libdisk/write_disk.c
lib/libpam/libpam/Makefile
lib/libstand/Makefile
lib/libstand/gzipfs.c [new file with mode: 0644]
lib/libstand/stand.h
sbin/disklabel/disklabel.c
sbin/i386/fdisk/fdisk.c
sbin/i386/nextboot/nextboot.c
usr.sbin/boot0cfg/boot0cfg.c

index 842cba7..3ee3743 100644 (file)
@@ -4,7 +4,7 @@
  *
  * $Id: pam_static.c,v 1.4 1996/12/01 03:14:13 morgan Exp $
  * $FreeBSD: src/contrib/libpam/libpam/pam_static.c,v 1.2.6.2 2001/06/11 15:28:12 markm Exp $
- * $DragonFly: src/contrib/libpam/libpam/Attic/pam_static.c,v 1.2 2003/06/17 04:24:03 dillon Exp $
+ * $DragonFly: src/contrib/libpam/libpam/Attic/pam_static.c,v 1.3 2003/11/10 06:14:38 dillon Exp $
  *
  * $Log: pam_static.c,v $
  * Revision 1.4  1996/12/01 03:14:13  morgan
 
 #include "pam_private.h"
 
+SET_DECLARE(_pam_static_modules, struct pam_module);
+
 /* This whole file is only used for PAM_STATIC */
 
 #ifdef PAM_STATIC
 
-extern struct linker_set _pam_static_modules;
-
 /* Return pointer to data structure used to define a static module */
 struct pam_module * _pam_open_static_handler(char *path) {
     int i;
     char *lpath = path, *end;
-    struct pam_module **static_modules =
-       (struct pam_module **)_pam_static_modules.ls_items;
+    struct pam_module **pamp;
 
     if (strchr(lpath, '/')) {
         /* ignore path and leading "/" */
@@ -54,16 +53,15 @@ struct pam_module * _pam_open_static_handler(char *path) {
     }
 
     /* now go find the module */
-    for (i = 0; static_modules[i] != NULL; i++) {
-       D(("%s=?%s\n", lpath, static_modules[i]->name));
-        if (static_modules[i]->name &&
-           ! strcmp(static_modules[i]->name, lpath)) {
-           break;
+    SET_FOREACH(pamp, _pam_static_modules) {
+       D(("%s=?%s\n", lpath, (*pamp)->name));
+        if ((*pamp)->name && !strcmp((*pamp)->name, lpath)) {
+           free(lpath);
+           return (*pamp);
        }
     }
-
     free(lpath);
-    return (static_modules[i]);
+    return(NULL);
 }
 
 /* Return pointer to function requested from static module
index 88eb244..f007475 100644 (file)
@@ -7,7 +7,7 @@
  * ----------------------------------------------------------------------------
  *
  * $FreeBSD: src/lib/libdisk/create_chunk.c,v 1.46.2.8 2001/05/13 21:01:37 jkh Exp $
- * $DragonFly: src/lib/libdisk/Attic/create_chunk.c,v 1.2 2003/06/17 04:26:49 dillon Exp $
+ * $DragonFly: src/lib/libdisk/Attic/create_chunk.c,v 1.3 2003/11/10 06:14:40 dillon Exp $
  *
  */
 
@@ -21,6 +21,7 @@
 #include <sys/types.h>
 #include <sys/disklabel.h>
 #include <sys/diskslice.h>
+#include <sys/diskmbr.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <grp.h>
index ed92fc3..135632a 100644 (file)
@@ -7,7 +7,7 @@
  * ----------------------------------------------------------------------------
  *
  * $FreeBSD: src/lib/libdisk/disk.c,v 1.50.2.15 2001/12/30 09:56:12 phk Exp $
- * $DragonFly: src/lib/libdisk/Attic/disk.c,v 1.2 2003/06/17 04:26:49 dillon Exp $
+ * $DragonFly: src/lib/libdisk/Attic/disk.c,v 1.3 2003/11/10 06:14:40 dillon Exp $
  *
  */
 
@@ -23,6 +23,7 @@
 #include <sys/ioctl.h>
 #include <sys/disklabel.h>
 #include <sys/diskslice.h>
+#include <sys/diskmbr.h>
 #include <paths.h>
 #include "libdisk.h"
 
index bd81526..a5ee92d 100644 (file)
@@ -7,7 +7,7 @@
  * ----------------------------------------------------------------------------
  *
  * $FreeBSD: src/lib/libdisk/rules.c,v 1.16.2.4 2001/05/13 20:16:32 jkh Exp $
- * $DragonFly: src/lib/libdisk/Attic/rules.c,v 1.2 2003/06/17 04:26:49 dillon Exp $
+ * $DragonFly: src/lib/libdisk/Attic/rules.c,v 1.3 2003/11/10 06:14:40 dillon Exp $
  *
  */
 
@@ -18,6 +18,7 @@
 #include <sys/types.h>
 #include <sys/diskslice.h>
 #include <sys/disklabel.h>
+#include <sys/diskmbr.h>
 #include "libdisk.h"
 
 int
index d3ff85a..040dbfe 100644 (file)
@@ -7,7 +7,7 @@
  * ----------------------------------------------------------------------------
  *
  * $FreeBSD: src/lib/libdisk/write_disk.c,v 1.28.2.10 2001/05/13 21:01:38 jkh Exp $
- * $DragonFly: src/lib/libdisk/Attic/write_disk.c,v 1.2 2003/06/17 04:26:49 dillon Exp $
+ * $DragonFly: src/lib/libdisk/Attic/write_disk.c,v 1.3 2003/11/10 06:14:40 dillon Exp $
  *
  */
 
@@ -21,6 +21,7 @@
 #include <sys/ioctl.h>
 #include <sys/disklabel.h>
 #include <sys/diskslice.h>
+#include <sys/diskmbr.h>
 #include <paths.h>
 #include "libdisk.h"
 
index f8abe86..9b0e0e9 100644 (file)
@@ -23,7 +23,7 @@
 # SUCH DAMAGE.
 #
 #      $FreeBSD: src/lib/libpam/libpam/Makefile,v 1.12.2.12 2002/07/22 14:21:49 ru Exp $
-#      $DragonFly: src/lib/libpam/libpam/Attic/Makefile,v 1.3 2003/08/05 07:45:41 asmodai Exp $
+#      $DragonFly: src/lib/libpam/libpam/Attic/Makefile,v 1.4 2003/11/10 06:14:44 dillon Exp $
 
 PAMDIR=                ${.CURDIR}/../../../contrib/libpam
 MODOBJDIR=     ../modules
@@ -84,18 +84,11 @@ _EXTRADEPEND:       pam_static.c
            ${.ALLSRC}
 
 .if ${OBJFORMAT} == elf
-CLEANFILES+=   setdef0.o _pam_static_modules.o setdef1.o \
-               setdef0.c setdef1.c setdefs.h
+CLEANFILES+=   _pam_static_modules.o
 
-pam_static_modules.o:  setdef0.o pam_static.o _pam_static_modules.o setdef1.o
+pam_static_modules.o:  pam_static.o _pam_static_modules.o
        ${LD} -o ${.TARGET} -r ${.ALLSRC}
 
-setdef0.o:     setdef0.c setdefs.h
-setdef1.o:     setdef1.c setdefs.h
-
-setdef0.c setdef1.c setdefs.h: _pam_static_modules.o
-       gensetdefs ${.ALLSRC}
-
 _pam_static_modules.o: ${STATIC_MODULES}
        ${LD} -o ${.TARGET} -r --whole-archive ${.ALLSRC}
 .else
index 0288d8b..8bbd422 100644 (file)
@@ -1,5 +1,5 @@
 # $FreeBSD: src/lib/libstand/Makefile,v 1.14.2.10 2002/07/22 14:21:50 ru Exp $
-# $DragonFly: src/lib/libstand/Makefile,v 1.2 2003/06/17 04:26:51 dillon Exp $
+# $DragonFly: src/lib/libstand/Makefile,v 1.3 2003/11/10 06:14:44 dillon Exp $
 #
 # Originally from      $NetBSD: Makefile,v 1.21 1997/10/26 22:08:38 lukem Exp $
 #
@@ -41,6 +41,10 @@ SRCS+=       bcmp.c bcopy.c bzero.c ffs.c index.c memccpy.c memchr.c memcmp.c \
         strcmp.c strcpy.c strcspn.c strlen.c strncat.c strncmp.c strncpy.c \
        strpbrk.c strrchr.c strsep.c strspn.c strstr.c strtok.c swab.c
 .endif
+.PATH:  ${.CURDIR}/../libc/quad
+.if ${MACHINE_ARCH} == "i386"
+SRCS+=  ucmpdi2.c
+.endif
 .if ${MACHINE_ARCH} == "alpha"
 .PATH: ${.CURDIR}/../libc/alpha/string
 SRCS+= bcmp.c bcopy.S bzero.S ffs.S index.c memccpy.c memchr.c memcmp.c \
@@ -136,7 +140,7 @@ SRCS+=      arp.c ether.c inet_ntoa.c in_cksum.c net.c udp.c netif.c rpc.c
 SRCS+= bootp.c rarp.c bootparam.c
 
 # boot filesystems
-SRCS+= ufs.c nfs.c cd9660.c tftp.c zipfs.c bzipfs.c
+SRCS+= ufs.c nfs.c cd9660.c tftp.c zipfs.c bzipfs.c gzipfs.c
 SRCS+= netif.c nfs.c
 SRCS+= dosfs.c ext2fs.c
 SRCS+= splitfs.c
diff --git a/lib/libstand/gzipfs.c b/lib/libstand/gzipfs.c
new file mode 100644 (file)
index 0000000..8f6aaa0
--- /dev/null
@@ -0,0 +1,324 @@
+/* 
+ * Copyright (c) 1998 Michael Smith.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD: src/lib/libstand/gzipfs.c,v 1.11 2002/12/19 19:34:58 jake Exp $
+ * $DragonFly: src/lib/libstand/gzipfs.c,v 1.1 2003/11/10 06:14:44 dillon Exp $
+ */
+
+#include "stand.h"
+
+#include <sys/stat.h>
+#include <string.h>
+#include <zlib.h>
+
+#define Z_BUFSIZE 2048 /* XXX larger? */
+
+struct z_file
+{
+    int                        zf_rawfd;
+    z_stream           zf_zstream;
+    char               zf_buf[Z_BUFSIZE];
+};
+
+static int     zf_fill(struct z_file *z);
+static int     zf_open(const char *path, struct open_file *f);
+static int     zf_close(struct open_file *f);
+static int     zf_read(struct open_file *f, void *buf, size_t size, size_t *resid);
+static off_t   zf_seek(struct open_file *f, off_t offset, int where);
+static int     zf_stat(struct open_file *f, struct stat *sb);
+
+struct fs_ops gzipfs_fsops = {
+    "zip",
+    zf_open, 
+    zf_close, 
+    zf_read,
+    null_write,
+    zf_seek,
+    zf_stat,
+    null_readdir
+};
+
+#if 0
+void *
+calloc(int items, size_t size)
+{
+    return(malloc(items * size));
+}
+#endif
+
+static int
+zf_fill(struct z_file *zf)
+{
+    int                result;
+    int                req;
+    
+    req = Z_BUFSIZE - zf->zf_zstream.avail_in;
+    result = 0;
+    
+    /* If we need more */
+    if (req > 0) {
+       /* move old data to bottom of buffer */
+       if (req < Z_BUFSIZE)
+           bcopy(zf->zf_buf + req, zf->zf_buf, Z_BUFSIZE - req);
+       
+       /* read to fill buffer and update availibility data */
+       result = read(zf->zf_rawfd, zf->zf_buf + zf->zf_zstream.avail_in, req);
+       zf->zf_zstream.next_in = zf->zf_buf;
+       if (result >= 0)
+           zf->zf_zstream.avail_in += result;
+    }
+    return(result);
+}
+
+/*
+ * Adapted from get_byte/check_header in libz
+ *
+ * Returns 0 if the header is OK, nonzero if not.
+ */
+static int
+get_byte(struct z_file *zf)
+{
+    if ((zf->zf_zstream.avail_in == 0) && (zf_fill(zf) == -1))
+       return(-1);
+    zf->zf_zstream.avail_in--;
+    return(*(zf->zf_zstream.next_in)++);
+}
+
+static int gz_magic[2] = {0x1f, 0x8b}; /* gzip magic header */
+
+/* gzip flag byte */
+#define ASCII_FLAG     0x01 /* bit 0 set: file probably ascii text */
+#define HEAD_CRC       0x02 /* bit 1 set: header CRC present */
+#define EXTRA_FIELD    0x04 /* bit 2 set: extra field present */
+#define ORIG_NAME      0x08 /* bit 3 set: original file name present */
+#define COMMENT                0x10 /* bit 4 set: file comment present */
+#define RESERVED       0xE0 /* bits 5..7: reserved */
+
+static int
+check_header(struct z_file *zf)
+{
+    int                method; /* method byte */
+    int                flags;  /* flags byte */
+    uInt       len;
+    int                c;
+
+    /* Check the gzip magic header */
+    for (len = 0; len < 2; len++) {
+       c = get_byte(zf);
+       if (c != gz_magic[len]) {
+           return(1);
+       }
+    }
+    method = get_byte(zf);
+    flags = get_byte(zf);
+    if (method != Z_DEFLATED || (flags & RESERVED) != 0) {
+       return(1);
+    }
+    
+    /* Discard time, xflags and OS code: */
+    for (len = 0; len < 6; len++) (void)get_byte(zf);
+
+    if ((flags & EXTRA_FIELD) != 0) { /* skip the extra field */
+       len  =  (uInt)get_byte(zf);
+       len += ((uInt)get_byte(zf))<<8;
+       /* len is garbage if EOF but the loop below will quit anyway */
+       while (len-- != 0 && get_byte(zf) != -1) ;
+    }
+    if ((flags & ORIG_NAME) != 0) { /* skip the original file name */
+       while ((c = get_byte(zf)) != 0 && c != -1) ;
+    }
+    if ((flags & COMMENT) != 0) {   /* skip the .gz file comment */
+       while ((c = get_byte(zf)) != 0 && c != -1) ;
+    }
+    if ((flags & HEAD_CRC) != 0) {  /* skip the header crc */
+       for (len = 0; len < 2; len++) c = get_byte(zf);
+    }
+    /* if there's data left, we're in business */
+    return((c == -1) ? 1 : 0);
+}
+       
+static int
+zf_open(const char *fname, struct open_file *f)
+{
+    static char                *zfname;
+    int                        rawfd;
+    struct z_file      *zf;
+    char               *cp;
+    int                        error;
+    struct stat                sb;
+
+    /* Have to be in "just read it" mode */
+    if (f->f_flags != F_READ)
+       return(EPERM);
+
+    /* If the name already ends in .gz or .bz2, ignore it */
+    if ((cp = strrchr(fname, '.')) && (!strcmp(cp, ".gz")
+           || !strcmp(cp, ".bz2") || !strcmp(cp, ".split")))
+       return(ENOENT);
+
+    /* Construct new name */
+    zfname = malloc(strlen(fname) + 4);
+    if (zfname == NULL)
+        return(ENOMEM);
+    sprintf(zfname, "%s.gz", fname);
+
+    /* Try to open the compressed datafile */
+    rawfd = open(zfname, O_RDONLY);
+    free(zfname);
+    if (rawfd == -1)
+       return(ENOENT);
+
+    if (fstat(rawfd, &sb) < 0) {
+       printf("zf_open: stat failed\n");
+       close(rawfd);
+       return(ENOENT);
+    }
+    if (!S_ISREG(sb.st_mode)) {
+       printf("zf_open: not a file\n");
+       close(rawfd);
+       return(EISDIR);                 /* best guess */
+    }
+
+    /* Allocate a z_file structure, populate it */
+    zf = malloc(sizeof(struct z_file));
+    if (zf == NULL)
+        return(ENOMEM);
+    bzero(zf, sizeof(struct z_file));
+    zf->zf_rawfd = rawfd;
+
+    /* Verify that the file is gzipped (XXX why do this afterwards?) */
+    if (check_header(zf)) {
+       close(zf->zf_rawfd);
+       inflateEnd(&(zf->zf_zstream));
+       free(zf);
+       return(EFTYPE);
+    }
+
+    /* Initialise the inflation engine */
+    if ((error = inflateInit2(&(zf->zf_zstream), -15)) != Z_OK) {
+       printf("zf_open: inflateInit returned %d : %s\n", error, zf->zf_zstream.msg);
+       close(zf->zf_rawfd);
+       free(zf);
+       return(EIO);
+    }
+
+    /* Looks OK, we'll take it */
+    f->f_fsdata = zf;
+    return(0);
+}
+
+static int
+zf_close(struct open_file *f)
+{
+    struct z_file      *zf = (struct z_file *)f->f_fsdata;
+    
+    inflateEnd(&(zf->zf_zstream));
+    close(zf->zf_rawfd);
+    free(zf);
+    return(0);
+}
+static int 
+zf_read(struct open_file *f, void *buf, size_t size, size_t *resid)
+{
+    struct z_file      *zf = (struct z_file *)f->f_fsdata;
+    int                        error;
+
+    zf->zf_zstream.next_out = buf;                     /* where and how much */
+    zf->zf_zstream.avail_out = size;
+
+    while (zf->zf_zstream.avail_out) {
+       if ((zf->zf_zstream.avail_in == 0) && (zf_fill(zf) == -1)) {
+           printf("zf_read: fill error\n");
+           return(-1);
+       }
+       if (zf->zf_zstream.avail_in == 0) {             /* oops, unexpected EOF */
+           printf("zf_read: unexpected EOF\n");
+           break;
+       }
+
+       error = inflate(&zf->zf_zstream, Z_SYNC_FLUSH); /* decompression pass */
+       if (error == Z_STREAM_END) {                    /* EOF, all done */
+           break;
+       }
+       if (error != Z_OK) {                            /* argh, decompression error */
+           printf("inflate: %s\n", zf->zf_zstream.msg);
+           errno = EIO;
+           return(-1);
+       }
+    }
+    if (resid != NULL)
+       *resid = zf->zf_zstream.avail_out;
+    return(0);
+}
+
+static off_t
+zf_seek(struct open_file *f, off_t offset, int where)
+{
+    struct z_file      *zf = (struct z_file *)f->f_fsdata;
+    off_t              target;
+    char               discard[16];
+    
+    switch (where) {
+    case SEEK_SET:
+       target = offset;
+       break;
+    case SEEK_CUR:
+       target = offset + zf->zf_zstream.total_out;
+       break;
+    default:
+       target = -1;
+    }
+
+    /* Can we get there from here? */
+    if (target < zf->zf_zstream.total_out) {
+       errno = EOFFSET;
+       return -1;
+    } 
+
+    /* skip forwards if required */
+    while (target > zf->zf_zstream.total_out) {
+       if (zf_read(f, discard, min(sizeof(discard), target - zf->zf_zstream.total_out), NULL) == -1)
+           return(-1);
+    }
+    /* This is where we are (be honest if we overshot) */
+    return (zf->zf_zstream.total_out);
+}
+
+
+static int
+zf_stat(struct open_file *f, struct stat *sb)
+{
+    struct z_file      *zf = (struct z_file *)f->f_fsdata;
+    int                        result;
+
+    /* stat as normal, but indicate that size is unknown */
+    if ((result = fstat(zf->zf_rawfd, sb)) == 0)
+       sb->st_size = -1;
+    return(result);
+}
+
+
+
index 3f69719..16ad1dc 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/lib/libstand/stand.h,v 1.18.2.8 2002/06/17 11:22:39 sobomax Exp $
- * $DragonFly: src/lib/libstand/stand.h,v 1.3 2003/11/09 02:34:03 dillon Exp $
+ * $DragonFly: src/lib/libstand/stand.h,v 1.4 2003/11/10 06:14:44 dillon Exp $
  * From        $NetBSD: stand.h,v 1.22 1997/06/26 19:17:40 drochner Exp $      
  */
 
@@ -125,6 +125,7 @@ extern struct fs_ops ufs_fsops;
 extern struct fs_ops tftp_fsops;
 extern struct fs_ops nfs_fsops;
 extern struct fs_ops cd9660_fsops;
+extern struct fs_ops gzipfs_fsops;
 extern struct fs_ops zipfs_fsops;
 extern struct fs_ops bzipfs_fsops;
 extern struct fs_ops dosfs_fsops;
index 46e30e5..975cfa4 100644 (file)
@@ -37,7 +37,7 @@
  * @(#)disklabel.c     1.2 (Symmetric) 11/28/85
  * @(#)disklabel.c      8.2 (Berkeley) 1/7/94
  * $FreeBSD: src/sbin/disklabel/disklabel.c,v 1.28.2.15 2003/01/24 16:18:16 des Exp $
- * $DragonFly: src/sbin/disklabel/disklabel.c,v 1.3 2003/08/08 04:18:37 dillon Exp $
+ * $DragonFly: src/sbin/disklabel/disklabel.c,v 1.4 2003/11/10 06:14:44 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -46,6 +46,7 @@
 #include <sys/wait.h>
 #define DKTYPENAMES
 #include <sys/disklabel.h>
+#include <sys/diskmbr.h>
 #include <vfs/ufs/fs.h>
 #include <unistd.h>
 #include <string.h>
index c1b11cc..de9c4a6 100644 (file)
  * the rights to redistribute these changes.
  *
  * $FreeBSD: src/sbin/i386/fdisk/fdisk.c,v 1.36.2.11 2002/04/25 21:02:21 trhodes Exp $
- * $DragonFly: src/sbin/i386/fdisk/fdisk.c,v 1.4 2003/10/12 00:43:17 dillon Exp $
+ * $DragonFly: src/sbin/i386/fdisk/fdisk.c,v 1.5 2003/11/10 06:14:44 dillon Exp $
  */
 
 #include <sys/disklabel.h>
+#include <sys/diskmbr.h>
 #include <sys/stat.h>
 #include <ctype.h>
 #include <fcntl.h>
index d0b0964..535033b 100644 (file)
  * any damages whatsoever resulting from the use of this software.
  *
  * $FreeBSD: src/sbin/i386/nextboot/nextboot.c,v 1.6 1999/08/28 00:13:06 peter Exp $
- * $DragonFly: src/sbin/i386/nextboot/nextboot.c,v 1.2 2003/06/17 04:27:33 dillon Exp $
+ * $DragonFly: src/sbin/i386/nextboot/nextboot.c,v 1.3 2003/11/10 06:14:44 dillon Exp $
  */
 
 #include <sys/types.h>
 #include <sys/disklabel.h>
+#include <sys/diskmbr.h>
 #include <fcntl.h>
 #include <err.h>
 #include <stdio.h>
index b8bba81..7caeb61 100644 (file)
  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/usr.sbin/boot0cfg/boot0cfg.c,v 1.7.2.4 2002/03/16 01:06:51 mikeh Exp $
- * $DragonFly: src/usr.sbin/boot0cfg/boot0cfg.c,v 1.2 2003/06/17 04:29:52 dillon Exp $
+ * $DragonFly: src/usr.sbin/boot0cfg/boot0cfg.c,v 1.3 2003/11/10 06:14:44 dillon Exp $
  */
 
 #include <sys/param.h>
 #include <sys/disklabel.h>
+#include <sys/diskmbr.h>
 #include <sys/stat.h>
 
 #include <err.h>