diff options
| author | John Baldwin <jhb@FreeBSD.org> | 2000-07-14 07:05:17 +0000 |
|---|---|---|
| committer | John Baldwin <jhb@FreeBSD.org> | 2000-07-14 07:05:17 +0000 |
| commit | 2645dd1013cf281a2591cb99c8bd86c02b8bbdfd (patch) | |
| tree | 2b9eebced59bd09bdcbea4d46ec83d51fcfd21df | |
| parent | e7114ef0e183cdcdd7cc8e5d9e41add1b51de23a (diff) | |
Notes
| -rw-r--r-- | release/sysinstall/disks.c | 43 |
1 files changed, 34 insertions, 9 deletions
diff --git a/release/sysinstall/disks.c b/release/sysinstall/disks.c index df41aad7bd50b..1dde2b07b9704 100644 --- a/release/sysinstall/disks.c +++ b/release/sysinstall/disks.c @@ -40,6 +40,8 @@ #include <sys/stat.h> #include <sys/disklabel.h> +enum size_units_t { UNIT_BLOCKS, UNIT_KILO, UNIT_MEG, UNIT_SIZE }; + #ifdef PC98 #define SUBTYPE_FREEBSD 50324 #define SUBTYPE_FAT 37218 @@ -82,10 +84,14 @@ record_chunks(Disk *d) static int Total; static void -print_chunks(Disk *d) +print_chunks(Disk *d, int u) { int row; int i; + int sz; + char *szstr; + + szstr = (u == UNIT_MEG ? "MB" : (u == UNIT_KILO ? "KB" : "ST")); for (i = Total = 0; chunk_info[i]; i++) Total += chunk_info[i]->size; @@ -111,17 +117,30 @@ print_chunks(Disk *d) attrset(A_REVERSE); addstr(d->name); attrset(A_NORMAL); attrset(A_REVERSE); mvaddstr(0, 55, "FDISK Partition Editor"); attrset(A_NORMAL); mvprintw(1, 0, - "DISK Geometry:\t%lu cyls/%lu heads/%lu sectors = %lu sectors", + "DISK Geometry:\t%lu cyls/%lu heads/%lu sectors = %lu sectors (%luMB)", d->bios_cyl, d->bios_hd, d->bios_sect, - d->bios_cyl * d->bios_hd * d->bios_sect); - mvprintw(3, 0, "%10s %10s %10s %8s %6s %10s %8s %8s", - "Offset", "Size", "End", "Name", "PType", "Desc", + d->bios_cyl * d->bios_hd * d->bios_sect, + d->bios_cyl * d->bios_hd * d->bios_sect * 512 / 1024 / 1024); + mvprintw(3, 0, "%6s %10s(%s) %10s %8s %6s %10s %8s %8s", + "Offset", "Size", szstr, "End", "Name", "PType", "Desc", "Subtype", "Flags"); for (i = 0, row = CHUNK_START_ROW; chunk_info[i]; i++, row++) { + switch(u) { + default: /* fall thru */ + case UNIT_BLOCKS: + sz = chunk_info[i]->size; + break; + case UNIT_KILO: + sz = chunk_info[i]->size * 512 / 1024; + break; + case UNIT_MEG: + sz = chunk_info[i]->size * 512 / 1024 / 1024; + break; + } if (i == current_chunk) attrset(ATTR_SELECTED); mvprintw(row, 0, "%10ld %10lu %10lu %8s %6d %10s %8d\t%-6s", - chunk_info[i]->offset, chunk_info[i]->size, + chunk_info[i]->offset, sz, chunk_info[i]->end, chunk_info[i]->name, chunk_info[i]->type, slice_type_name(chunk_info[i]->type, chunk_info[i]->subtype), @@ -135,8 +154,8 @@ static void print_command_summary() { mvprintw(14, 0, "The following commands are supported (in upper or lower case):"); - mvprintw(16, 0, "A = Use Entire Disk C = Create Slice"); - mvprintw(17, 0, "D = Delete Slice G = Set Drive Geometry S = Set Bootable"); + mvprintw(16, 0, "A = Use Entire Disk G = set Drive Geometry C = Create Slice"); + mvprintw(17, 0, "D = Delete Slice Z = Toggle Size Units S = Set Bootable"); mvprintw(18, 0, "T = Change Type U = Undo All Changes Q = Finish"); if (!RunningAsInit) mvprintw(18, 48, "W = Write Changes"); @@ -218,7 +237,9 @@ diskPartition(Device *dev) #endif WINDOW *w = savescr(); Disk *d = (Disk *)dev->private; + int size_unit; + size_unit = UNIT_BLOCKS; chunking = TRUE; keypad(stdscr, TRUE); @@ -235,7 +256,7 @@ diskPartition(Device *dev) /* Now print our overall state */ if (d) - print_chunks(d); + print_chunks(d, size_unit); print_command_summary(); if (msg) { attrset(title_attr); mvprintw(23, 0, msg); attrset(A_NORMAL); @@ -541,6 +562,10 @@ diskPartition(Device *dev) #endif #endif /* !PC98 */ break; + + case 'Z': + size_unit = (size_unit + 1) % UNIT_SIZE; + break; default: beep(); |
