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