diff options
author | dillon <dillon@FreeBSD.org> | 2002-01-07 07:51:24 +0000 |
---|---|---|
committer | dillon <dillon@FreeBSD.org> | 2002-01-07 07:51:24 +0000 |
commit | 69fa9c77e05bb7c9d357ee53a1a677c632f6e29a (patch) | |
tree | 9fa76a3cc54a10986733da257571914147dc8cb6 /usr.sbin/sade | |
parent | 2a7ecd5129c4ef23b82b687a60c1f0279eddfa25 (diff) | |
download | FreeBSD-src-69fa9c77e05bb7c9d357ee53a1a677c632f6e29a.zip FreeBSD-src-69fa9c77e05bb7c9d357ee53a1a677c632f6e29a.tar.gz |
Add 'R'ecover option that deletes a partition and attempts
to recover its space into the previous partition. Revert 'D'elete
to not attempt to recover any space.
Do not auto-create /home as per release engineers decision (though
I think this is a mistake). However, all of this code will be
replaced later on anyway either with Jordan's stuff or with
some other sort of templater, so it isn't a big deal.
Diffstat (limited to 'usr.sbin/sade')
-rw-r--r-- | usr.sbin/sade/label.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/usr.sbin/sade/label.c b/usr.sbin/sade/label.c index c9b8c8d..a6b71b3 100644 --- a/usr.sbin/sade/label.c +++ b/usr.sbin/sade/label.c @@ -40,6 +40,8 @@ #include <sys/param.h> #include <sys/sysctl.h> +#define AUTO_HOME 0 /* do not create /home automatically */ + /* * Everything to do with editing the contents of disk labels. */ @@ -662,7 +664,7 @@ print_command_summary(void) if (!RunningAsInit) mvprintw(18, 47, "W = Write"); mvprintw(19, 0, "N = Newfs Opts Q = Finish S = Toggle SoftUpdates"); - mvprintw(20, 0, "T = Toggle Newfs U = Undo A = Auto Defaults"); + mvprintw(20, 0, "T = Toggle Newfs U = Undo A = Auto Defaults R = Delete+Merge"); mvprintw(22, 0, "Use F1 or ? to get more help, arrow keys to select."); move(0, 0); } @@ -735,6 +737,7 @@ diskLabel(Device *dev) clear(); while (labeling) { char *cp; + int rflags = DELCHUNK_NORMAL; print_label_chunks(); print_command_summary(); @@ -952,6 +955,12 @@ diskLabel(Device *dev) break; case KEY_DC: + case 'R': /* recover space (delete w/ recover) */ + /* + * Delete the partition w/ space recovery. + */ + rflags = DELCHUNK_RECOVER; + /* fall through */ case 'D': /* delete */ if (label_chunk_info[here].type == PART_SLICE) { msg = MSG_NOT_APPLICABLE; @@ -961,7 +970,7 @@ diskLabel(Device *dev) msg = "Use the Disk Partition Editor to delete DOS partitions"; break; } - Delete_Chunk(label_chunk_info[here].c->disk, label_chunk_info[here].c); + Delete_Chunk2(label_chunk_info[here].c->disk, label_chunk_info[here].c, rflags); if (variable_cmp(DISK_LABELLED, "written")) variable_set2(DISK_LABELLED, "yes", 0); record_label_chunks(devs, dev); @@ -1267,7 +1276,7 @@ try_auto_label(Device **devs, Device *dev, int perc, int *req) } if (!usrdev && !variable_get(VAR_NO_USR)) { sz = requested_part_size(VAR_USR_SIZE, USR_NOMINAL_SIZE, USR_DEFAULT_SIZE, perc); -#if 0 +#if AUTO_HOME == 0 sz = space_free(label_chunk_info[here].c); #endif if (sz) { @@ -1291,6 +1300,7 @@ try_auto_label(Device **devs, Device *dev, int perc, int *req) record_label_chunks(devs, dev); } } +#if AUTO_HOME == 1 if (!homedev && !variable_get(VAR_NO_HOME)) { sz = requested_part_size(VAR_HOME_SIZE, HOME_NOMINAL_SIZE, HOME_DEFAULT_SIZE, perc); if (sz < space_free(label_chunk_info[here].c)) @@ -1317,6 +1327,7 @@ try_auto_label(Device **devs, Device *dev, int perc, int *req) record_label_chunks(devs, dev); } } +#endif /* At this point, we're reasonably "labelled" */ if (variable_cmp(DISK_LABELLED, "written")) |