bin/110182
Maxim Konovalov
maxim at macomnet.ru
Sat Mar 24 09:40:09 UTC 2007
The following reply was made to PR bin/110182; it has been noted by GNATS.
From: Maxim Konovalov <maxim at macomnet.ru>
To: bug-followup at freebsd.org
Cc:
Subject: bin/110182
Date: Sat, 24 Mar 2007 12:34:03 +0300 (MSK)
A bit polished patch inlined.
Index: fdisk.8
===================================================================
RCS file: /home/ncvs/src/sbin/fdisk/fdisk.8,v
retrieving revision 1.38
diff -u -p -r1.38 fdisk.8
--- fdisk.8 12 Dec 2006 15:26:25 -0000 1.38
+++ fdisk.8 24 Mar 2007 00:13:23 -0000
@@ -1,6 +1,6 @@
.\" $FreeBSD: src/sbin/fdisk/fdisk.8,v 1.38 2006/12/12 15:26:25 ru Exp $
.\"
-.Dd December 12, 2006
+.Dd March 24, 2007
.Dt FDISK 8
.Os
.Sh NAME
@@ -8,7 +8,7 @@
.Nd PC slice table maintenance utility
.Sh SYNOPSIS
.Nm
-.Op Fl BIaistu
+.Op Fl BIaipstu
.Op Fl b Ar bootcode
.Op Fl 1234
.Op Ar disk
@@ -109,6 +109,12 @@ Initialize sector 0 slice table
for one
.Fx
slice covering the entire disk.
+.It Fl p
+Print a slice table in
+.Nm
+configuration file format and exit; see
+.Sx CONFIGURATION FILE ,
+below.
.It Fl s
Print summary information and exit.
.It Fl t
Index: fdisk.c
===================================================================
RCS file: /home/ncvs/src/sbin/fdisk/fdisk.c,v
retrieving revision 1.82
diff -u -p -r1.82 fdisk.c
--- fdisk.c 18 Jun 2006 22:02:22 -0000 1.82
+++ fdisk.c 23 Mar 2007 23:17:40 -0000
@@ -120,6 +120,7 @@ static int s_flag = 0; /* Print a summ
static int t_flag = 0; /* test only */
static char *f_flag = NULL; /* Read config info from file */
static int v_flag = 0; /* Be verbose */
+static int print_config_flag = 0;
static struct part_type
{
@@ -247,7 +248,7 @@ main(int argc, char *argv[])
int partition = -1;
struct dos_partition *partp;
- while ((c = getopt(argc, argv, "BIab:f:istuv1234")) != -1)
+ while ((c = getopt(argc, argv, "BIab:f:ipstuv1234")) != -1)
switch (c) {
case 'B':
B_flag = 1;
@@ -267,6 +268,9 @@ main(int argc, char *argv[])
case 'i':
i_flag = 1;
break;
+ case 'p':
+ print_config_flag = 1;
+ break;
case 's':
s_flag = 1;
break;
@@ -322,6 +326,30 @@ main(int argc, char *argv[])
free(mboot.bootinst);
mboot.bootinst = NULL;
+ if (print_config_flag) {
+ if (read_s0())
+ err(1, "read_s0");
+
+ printf("# %s\n", disk);
+ printf("g c%d h%d s%d\n", dos_cyls, dos_heads, dos_sectors);
+
+ for (i = 0; i < NDOSPART; i++) {
+ partp = ((struct dos_partition *) &mboot.parts) + i;
+
+ if (partp->dp_start == 0 && partp->dp_size == 0)
+ continue;
+
+ printf ("p %d 0x%02x %lu %lu\n", i + 1, partp->dp_typ,
+ (u_long) partp->dp_start, (u_long) partp->dp_size);
+
+ /*
+ * Fill flags for the partition.
+ */
+ if (partp->dp_flag & 0x80)
+ printf ("a %d\n", i + 1);
+ }
+ exit(0);
+ }
if (s_flag) {
if (read_s0())
err(1, "read_s0");
@@ -413,7 +441,7 @@ static void
usage()
{
fprintf(stderr, "%s%s",
- "usage: fdisk [-BIaistu] [-b bootcode] [-1234] [disk]\n",
+ "usage: fdisk [-BIaipstu] [-b bootcode] [-1234] [disk]\n",
" fdisk -f configfile [-itv] [disk]\n");
exit(1);
}
%%%
--
Maxim Konovalov
More information about the freebsd-bugs
mailing list