]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
fdisk: (bsd) use pt-bsd.h
authorKarel Zak <kzak@redhat.com>
Wed, 26 Jun 2013 09:32:19 +0000 (11:32 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 16 Sep 2013 14:47:05 +0000 (16:47 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
fdisks/fdiskbsdlabel.c
fdisks/fdiskbsdlabel.h

index bd1d77501070a93e19fe22f689cecf31fda6e1e3..01c6ca3ca23f252f9527b35536bbb9f9de701729 100644 (file)
@@ -78,12 +78,12 @@ static int xbsd_write_bootstrap (struct fdisk_context *cxt);
 static void xbsd_change_fstype (struct fdisk_context *cxt);
 static int xbsd_get_part_index (struct fdisk_context *cxt, int max, int *n);
 static int xbsd_check_new_partition (struct fdisk_context *cxt, int *i);
-static unsigned short xbsd_dkcksum (struct xbsd_disklabel *lp);
+static unsigned short xbsd_dkcksum (struct bsd_disklabel *lp);
 static int xbsd_initlabel  (struct fdisk_context *cxt,
-                           struct dos_partition *p, struct xbsd_disklabel *d);
+                           struct dos_partition *p, struct bsd_disklabel *d);
 static int xbsd_readlabel  (struct fdisk_context *cxt,
-                           struct dos_partition *p, struct xbsd_disklabel *d);
-static int xbsd_writelabel (struct fdisk_context *cxt, struct dos_partition *p, struct xbsd_disklabel *d);
+                           struct dos_partition *p, struct bsd_disklabel *d);
+static int xbsd_writelabel (struct fdisk_context *cxt, struct dos_partition *p, struct bsd_disklabel *d);
 static void sync_disks (void);
 
 #if defined (__alpha__)
@@ -104,7 +104,7 @@ static char disklabelbuffer[BSD_BBSIZE] __attribute__((aligned(8)));
 static char disklabelbuffer[BSD_BBSIZE];
 #endif
 
-static struct xbsd_disklabel xbsd_dlabel;
+static struct bsd_disklabel xbsd_dlabel;
 
 #define bsd_cround(c, n) \
        (fdisk_context_use_cylinders(c) ? ((n)/xbsd_dlabel.d_secpercyl) + 1 : (n))
@@ -417,8 +417,8 @@ static int xbsd_delete_part(
 void
 xbsd_print_disklabel (struct fdisk_context *cxt, int show_all)
 {
-  struct xbsd_disklabel *lp = &xbsd_dlabel;
-  struct xbsd_partition *pp;
+  struct bsd_disklabel *lp = &xbsd_dlabel;
+  struct bsd_partition *pp;
   FILE *f = stdout;
   int i, j;
 
@@ -454,7 +454,7 @@ xbsd_print_disklabel (struct fdisk_context *cxt, int show_all)
     fprintf(f, _("track-to-track seek: %ld\t# milliseconds\n"),
            (long) lp->d_trkseek);
     fprintf(f, _("drivedata: "));
-    for (i = NDDATA - 1; i >= 0; i--)
+    for (i = ARRAY_SIZE(lp->d_drivedata)- 1; i >= 0; i--)
       if (lp->d_drivedata[i])
        break;
     if (i < 0)
@@ -533,7 +533,7 @@ static uint16_t ask_uint16(struct fdisk_context *cxt,
 
 static void xbsd_edit_disklabel(struct fdisk_context *cxt)
 {
-       struct xbsd_disklabel *d;
+       struct bsd_disklabel *d;
        uintmax_t res;
 
        d = &xbsd_dlabel;
@@ -592,7 +592,7 @@ static int xbsd_write_bootstrap (struct fdisk_context *cxt)
        char *res, *d, *p;
        int rc;
        sector_t sector;
-       struct xbsd_disklabel dl;
+       struct bsd_disklabel dl;
 
        snprintf(buf, sizeof(buf),
                _("Bootstrap: %1$sboot -> boot%1$s (default %1$s)"),
@@ -612,10 +612,10 @@ static int xbsd_write_bootstrap (struct fdisk_context *cxt)
 
        /* We need a backup of the disklabel (xbsd_dlabel might have changed). */
        d = &disklabelbuffer[BSD_LABELSECTOR * DEFAULT_SECTOR_SIZE];
-       memmove(&dl, d, sizeof(struct xbsd_disklabel));
+       memmove(&dl, d, sizeof(struct bsd_disklabel));
 
        /* The disklabel will be overwritten by 0's from bootxx anyway */
-       memset(d, 0, sizeof(struct xbsd_disklabel));
+       memset(d, 0, sizeof(struct bsd_disklabel));
 
        snprintf(buf, sizeof(buf), "%s/boot%s", BSD_LINUX_BOOTDIR, name);
        rc = xbsd_get_bootstrap(cxt, buf,
@@ -625,7 +625,7 @@ static int xbsd_write_bootstrap (struct fdisk_context *cxt)
                goto done;
 
        /* check end of the bootstrap */
-       for (p = d; p < d + sizeof(struct xbsd_disklabel); p++) {
+       for (p = d; p < d + sizeof(struct bsd_disklabel); p++) {
                if (!*p)
                        continue;
                fdisk_warnx(cxt, _("Bootstrap overlaps with disk label!"));
@@ -633,7 +633,7 @@ static int xbsd_write_bootstrap (struct fdisk_context *cxt)
        }
 
        /* move disklabel back */
-       memmove(d, &dl, sizeof(struct xbsd_disklabel));
+       memmove(d, &dl, sizeof(struct bsd_disklabel));
 
 #if defined (__powerpc__) || defined (__hppa__)
        sector = 0;
@@ -740,7 +740,7 @@ xbsd_check_new_partition(struct fdisk_context *cxt, int *i)
 }
 
 static unsigned short
-xbsd_dkcksum (struct xbsd_disklabel *lp) {
+xbsd_dkcksum (struct bsd_disklabel *lp) {
        unsigned short *start, *end;
        unsigned short sum = 0;
 
@@ -753,11 +753,11 @@ xbsd_dkcksum (struct xbsd_disklabel *lp) {
 
 static int xbsd_initlabel (struct fdisk_context *cxt,
                struct dos_partition *p,
-               struct xbsd_disklabel *d)
+               struct bsd_disklabel *d)
 {
-       struct xbsd_partition *pp;
+       struct bsd_partition *pp;
 
-       memset (d, 0, sizeof (struct xbsd_disklabel));
+       memset (d, 0, sizeof (struct bsd_disklabel));
 
        d -> d_magic = BSD_DISKMAGIC;
 
@@ -824,7 +824,7 @@ static int xbsd_initlabel (struct fdisk_context *cxt,
  * If it has the right magic, return 1.
  */
 static int
-xbsd_readlabel (struct fdisk_context *cxt, struct dos_partition *p, struct xbsd_disklabel *d)
+xbsd_readlabel (struct fdisk_context *cxt, struct dos_partition *p, struct bsd_disklabel *d)
 {
        int t, sector;
 
@@ -845,7 +845,7 @@ xbsd_readlabel (struct fdisk_context *cxt, struct dos_partition *p, struct xbsd_
 
        memmove (d,
                 &disklabelbuffer[BSD_LABELSECTOR * DEFAULT_SECTOR_SIZE + BSD_LABELOFFSET],
-                sizeof (struct xbsd_disklabel));
+                sizeof (struct bsd_disklabel));
 
        if (d -> d_magic != BSD_DISKMAGIC || d -> d_magic2 != BSD_DISKMAGIC)
                return 0;
@@ -867,7 +867,7 @@ xbsd_readlabel (struct fdisk_context *cxt, struct dos_partition *p, struct xbsd_
 }
 
 static int
-xbsd_writelabel (struct fdisk_context *cxt, struct dos_partition *p, struct xbsd_disklabel *d)
+xbsd_writelabel (struct fdisk_context *cxt, struct dos_partition *p, struct bsd_disklabel *d)
 {
   unsigned int sector;
 
@@ -884,7 +884,7 @@ xbsd_writelabel (struct fdisk_context *cxt, struct dos_partition *p, struct xbsd
      otherwise we'd write the old disklabel with the bootstrap.
   */
   memmove (&disklabelbuffer[BSD_LABELSECTOR * DEFAULT_SECTOR_SIZE + BSD_LABELOFFSET], d,
-           sizeof (struct xbsd_disklabel));
+           sizeof (struct bsd_disklabel));
 
 #if defined (__alpha__) && BSD_LABELSECTOR == 0
   alpha_bootblock_checksum (disklabelbuffer);
@@ -902,7 +902,7 @@ xbsd_writelabel (struct fdisk_context *cxt, struct dos_partition *p, struct xbsd
          fdisk_warn(cxt, _("seek failed: %d"), cxt->dev_path);
          return -errno;
   }
-  if (sizeof (struct xbsd_disklabel) != write (cxt->dev_fd, d, sizeof (struct xbsd_disklabel))) {
+  if (sizeof (struct bsd_disklabel) != write (cxt->dev_fd, d, sizeof (struct bsd_disklabel))) {
          fdisk_warn(cxt, _("write failed: %d"), cxt->dev_path);
          return -errno;
   }
@@ -1011,7 +1011,7 @@ static int xbsd_set_parttype(
                size_t partnum,
                struct fdisk_parttype *t)
 {
-       struct xbsd_partition *p;
+       struct bsd_partition *p;
 
        assert(cxt);
        assert(cxt->label);
index 752e1504cd75c5a2fc51e59289856801b1428844..d9e76d9469295d474f106067478da27d6f77b6c2 100644 (file)
  */
 
 #include <stdint.h>
-
-#ifndef BSD_DISKMAGIC
-#define BSD_DISKMAGIC     ((uint32_t) 0x82564557)
-#endif
-
-#ifndef BSD_MAXPARTITIONS
-# define BSD_MAXPARTITIONS 16
-#endif
-
-#define BSD_LINUX_BOOTDIR "/usr/ucb/mdec"
-
-#if defined (__alpha__) || defined (__powerpc__) || \
-    defined (__ia64__) || defined (__hppa__)
-# define BSD_LABELSECTOR   0
-# define BSD_LABELOFFSET   64
-#elif defined(__sparc64__)
-# define BSD_LABELSECTOR   0
-# define BSD_LABELOFFSET   128
-#else
-# define BSD_LABELSECTOR   1
-# define BSD_LABELOFFSET   0
-#endif
-
-#define        BSD_BBSIZE        8192          /* size of boot area, with label */
-#define        BSD_SBSIZE        8192          /* max size of fs superblock */
-
-struct xbsd_disklabel {
-       uint32_t        d_magic;                /* the magic number */
-       int16_t d_type;                 /* drive type */
-       int16_t d_subtype;              /* controller/d_type specific */
-       char    d_typename[16];         /* type name, e.g. "eagle" */
-       char    d_packname[16];                 /* pack identifier */
-                       /* disk geometry: */
-       uint32_t        d_secsize;              /* # of bytes per sector */
-       uint32_t        d_nsectors;             /* # of data sectors per track */
-       uint32_t        d_ntracks;              /* # of tracks per cylinder */
-       uint32_t        d_ncylinders;           /* # of data cylinders per unit */
-       uint32_t        d_secpercyl;            /* # of data sectors per cylinder */
-       uint32_t        d_secperunit;           /* # of data sectors per unit */
-       /*
-        * Spares (bad sector replacements) below
-        * are not counted in d_nsectors or d_secpercyl.
-        * Spare sectors are assumed to be physical sectors
-        * which occupy space at the end of each track and/or cylinder.
-        */
-       uint16_t        d_sparespertrack;       /* # of spare sectors per track */
-       uint16_t        d_sparespercyl;         /* # of spare sectors per cylinder */
-       /*
-        * Alternate cylinders include maintenance, replacement,
-        * configuration description areas, etc.
-        */
-       uint32_t        d_acylinders;           /* # of alt. cylinders per unit */
-
-                       /* hardware characteristics: */
-       /*
-        * d_interleave, d_trackskew and d_cylskew describe perturbations
-        * in the media format used to compensate for a slow controller.
-        * Interleave is physical sector interleave, set up by the formatter
-        * or controller when formatting.  When interleaving is in use,
-        * logically adjacent sectors are not physically contiguous,
-        * but instead are separated by some number of sectors.
-        * It is specified as the ratio of physical sectors traversed
-        * per logical sector.  Thus an interleave of 1:1 implies contiguous
-        * layout, while 2:1 implies that logical sector 0 is separated
-        * by one sector from logical sector 1.
-        * d_trackskew is the offset of sector 0 on track N
-        * relative to sector 0 on track N-1 on the same cylinder.
-        * Finally, d_cylskew is the offset of sector 0 on cylinder N
-        * relative to sector 0 on cylinder N-1.
-        */
-       uint16_t        d_rpm;                  /* rotational speed */
-       uint16_t        d_interleave;           /* hardware sector interleave */
-       uint16_t        d_trackskew;            /* sector 0 skew, per track */
-       uint16_t        d_cylskew;              /* sector 0 skew, per cylinder */
-       uint32_t        d_headswitch;           /* head switch time, usec */
-       uint32_t        d_trkseek;              /* track-to-track seek, usec */
-       uint32_t        d_flags;                /* generic flags */
-#define NDDATA 5
-       uint32_t        d_drivedata[NDDATA];    /* drive-type specific information */
-#define NSPARE 5
-       uint32_t        d_spare[NSPARE];        /* reserved for future use */
-       uint32_t        d_magic2;               /* the magic number (again) */
-       uint16_t        d_checksum;             /* xor of data incl. partitions */
-                       /* filesystem and partition information: */
-       uint16_t        d_npartitions;          /* number of partitions in following */
-       uint32_t        d_bbsize;               /* size of boot area at sn0, bytes */
-       uint32_t        d_sbsize;               /* max size of fs superblock, bytes */
-       struct xbsd_partition    {      /* the partition table */
-               uint32_t        p_size;         /* number of sectors in partition */
-               uint32_t        p_offset;       /* starting sector */
-               uint32_t        p_fsize;        /* filesystem basic fragment size */
-               uint8_t p_fstype;       /* filesystem type, see below */
-               uint8_t p_frag;         /* filesystem fragments per block */
-               uint16_t        p_cpg;          /* filesystem cylinders per group */
-       } d_partitions[BSD_MAXPARTITIONS]; /* actually may be more */
-};
-
-/* d_type values: */
-#define        BSD_DTYPE_SMD           1               /* SMD, XSMD; VAX hp/up */
-#define        BSD_DTYPE_MSCP          2               /* MSCP */
-#define        BSD_DTYPE_DEC           3               /* other DEC (rk, rl) */
-#define        BSD_DTYPE_SCSI          4               /* SCSI */
-#define        BSD_DTYPE_ESDI          5               /* ESDI interface */
-#define        BSD_DTYPE_ST506         6               /* ST506 etc. */
-#define        BSD_DTYPE_HPIB          7               /* CS/80 on HP-IB */
-#define BSD_DTYPE_HPFL         8               /* HP Fiber-link */
-#define        BSD_DTYPE_FLOPPY        10              /* floppy */
-
-/* d_subtype values: */
-#define BSD_DSTYPE_INDOSPART   0x8             /* is inside dos partition */
-#define BSD_DSTYPE_DOSPART(s)  ((s) & 3)       /* dos partition number */
-#define BSD_DSTYPE_GEOMETRY    0x10            /* drive params in label */
+#include "pt-bsd.h"
 
 #ifdef DKTYPENAMES
 static char *xbsd_dktypenames[] = {
@@ -166,36 +55,6 @@ static char *xbsd_dktypenames[] = {
 #define BSD_DKMAXTYPES (sizeof(xbsd_dktypenames) / sizeof(xbsd_dktypenames[0]) - 1)
 #endif
 
-/*
- * Filesystem type and version.
- * Used to interpret other filesystem-specific
- * per-partition information.
- */
-#define        BSD_FS_UNUSED   0               /* unused */
-#define        BSD_FS_SWAP     1               /* swap */
-#define        BSD_FS_V6       2               /* Sixth Edition */
-#define        BSD_FS_V7       3               /* Seventh Edition */
-#define        BSD_FS_SYSV     4               /* System V */
-#define        BSD_FS_V71K     5               /* V7 with 1K blocks (4.1, 2.9) */
-#define        BSD_FS_V8       6               /* Eighth Edition, 4K blocks */
-#define        BSD_FS_BSDFFS   7               /* 4.2BSD fast file system */
-#define        BSD_FS_BSDLFS   9               /* 4.4BSD log-structured file system */
-#define        BSD_FS_OTHER    10              /* in use, but unknown/unsupported */
-#define        BSD_FS_HPFS     11              /* OS/2 high-performance file system */
-#define        BSD_FS_ISO9660  12              /* ISO-9660 filesystem (cdrom) */
-#define BSD_FS_ISOFS   BSD_FS_ISO9660
-#define        BSD_FS_BOOT     13              /* partition contains bootstrap */
-#define BSD_FS_ADOS    14              /* AmigaDOS fast file system */
-#define BSD_FS_HFS     15              /* Macintosh HFS */
-#define BSD_FS_ADVFS   16              /* Digital Unix AdvFS */
-
-/* this is annoying, but it's also the way it is :-( */
-#ifdef __alpha__
-#define        BSD_FS_EXT2     8               /* ext2 file system */
-#else
-#define        BSD_FS_MSDOS    8               /* MS-DOS file system */
-#endif
-
 #ifdef DKTYPENAMES
 static struct fdisk_parttype xbsd_fstypes[] = {
         {BSD_FS_UNUSED, "unused"},
@@ -225,15 +84,6 @@ static struct fdisk_parttype xbsd_fstypes[] = {
 
 #endif
 
-/*
- * flags shared by various drives:
- */
-#define        BSD_D_REMOVABLE 0x01            /* removable media */
-#define        BSD_D_ECC       0x02            /* supports ECC */
-#define        BSD_D_BADSECT   0x04            /* supports bad sector forw. */
-#define        BSD_D_RAMDISK   0x08            /* disk emulator */
-#define        BSD_D_CHAIN     0x10            /* can do back-back transfers */
-#define        BSD_D_DOSPART   0x20            /* within MSDOS partition */
 
 extern void bsd_command_prompt(struct fdisk_context *cxt);
 extern int btrydev(struct fdisk_context *cxt);