summaryrefslogtreecommitdiffstats
path: root/usr.sbin
diff options
context:
space:
mode:
authornwhitehorn <nwhitehorn@FreeBSD.org>2013-01-20 23:04:21 +0000
committernwhitehorn <nwhitehorn@FreeBSD.org>2013-01-20 23:04:21 +0000
commitd8e6882b0a70197936f2f0ec7106c4e967bb9369 (patch)
tree44de840e3dab920027ad4b27c175b684a086532a /usr.sbin
parent23f188e63acfdb4be7d49c99f3ad5477b09f320e (diff)
downloadFreeBSD-src-d8e6882b0a70197936f2f0ec7106c4e967bb9369.zip
FreeBSD-src-d8e6882b0a70197936f2f0ec7106c4e967bb9369.tar.gz
If no partition configuration is specified in {}, use the automatic setup
the interactive installer uses. Example: bsdinstall scriptedpart ada0 Result: Use entire disk for a FreeBSD system with default partition layout
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/bsdinstall/partedit/part_wizard.c9
-rw-r--r--usr.sbin/bsdinstall/partedit/partedit.h1
-rw-r--r--usr.sbin/bsdinstall/partedit/scripted.c6
3 files changed, 11 insertions, 5 deletions
diff --git a/usr.sbin/bsdinstall/partedit/part_wizard.c b/usr.sbin/bsdinstall/partedit/part_wizard.c
index e840ac9..1a81c01e 100644
--- a/usr.sbin/bsdinstall/partedit/part_wizard.c
+++ b/usr.sbin/bsdinstall/partedit/part_wizard.c
@@ -42,7 +42,6 @@
static char *boot_disk(struct gmesh *mesh);
static char *wizard_partition(struct gmesh *mesh, const char *disk);
-static int wizard_makeparts(struct gmesh *mesh, const char *disk);
int
part_wizard(void) {
@@ -71,7 +70,7 @@ startwizard:
dlg_put_backtitle();
error = geom_gettree(&mesh);
- error = wizard_makeparts(&mesh, schemeroot);
+ error = wizard_makeparts(&mesh, schemeroot, 1);
if (error)
goto startwizard;
free(schemeroot);
@@ -288,8 +287,8 @@ query:
return (retval);
}
-static int
-wizard_makeparts(struct gmesh *mesh, const char *disk)
+int
+wizard_makeparts(struct gmesh *mesh, const char *disk, int interactive)
{
struct gmesh submesh;
struct gclass *classp;
@@ -310,7 +309,7 @@ wizard_makeparts(struct gmesh *mesh, const char *disk)
pp = provider_for_name(mesh, disk);
available = gpart_max_free(gp, NULL)*pp->lg_sectorsize;
- if (available < MIN_FREE_SPACE) {
+ if (interactive && available < MIN_FREE_SPACE) {
char availablestr[10], neededstr[10], message[512];
humanize_number(availablestr, 7, available, "B", HN_AUTOSCALE,
HN_DECIMAL);
diff --git a/usr.sbin/bsdinstall/partedit/partedit.h b/usr.sbin/bsdinstall/partedit/partedit.h
index 136d187..121e3a2 100644
--- a/usr.sbin/bsdinstall/partedit/partedit.h
+++ b/usr.sbin/bsdinstall/partedit/partedit.h
@@ -56,6 +56,7 @@ void delete_part_metadata(const char *name);
int part_wizard(void);
int scripted_editor(int argc, const char **argv);
+int wizard_makeparts(struct gmesh *mesh, const char *disk, int interactive);
/* gpart operations */
void gpart_delete(struct gprovider *pp);
diff --git a/usr.sbin/bsdinstall/partedit/scripted.c b/usr.sbin/bsdinstall/partedit/scripted.c
index b498641..bfe0922 100644
--- a/usr.sbin/bsdinstall/partedit/scripted.c
+++ b/usr.sbin/bsdinstall/partedit/scripted.c
@@ -109,6 +109,11 @@ part_config(char *disk, const char *scheme, char *config)
error = geom_gettree(&mesh);
/* Create partitions */
+ if (config == NULL) {
+ wizard_makeparts(&mesh, disk, 0);
+ goto finished;
+ }
+
while ((partition = strsep(&config, ",")) != NULL) {
while ((ap = strsep(&partition, " \t\n")) != NULL) {
if (*ap == '\0')
@@ -131,6 +136,7 @@ part_config(char *disk, const char *scheme, char *config)
size = type = mount = NULL;
}
+finished:
geom_deletetree(&mesh);
free(disk);
OpenPOWER on IntegriCloud