Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/usr.sbin/sysinst/disks.c,v rcsdiff: /ftp/cvs/cvsroot/src/usr.sbin/sysinst/disks.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.4 retrieving revision 1.4.4.5 diff -u -p -r1.4 -r1.4.4.5 --- src/usr.sbin/sysinst/disks.c 2014/08/08 20:24:27 1.4 +++ src/usr.sbin/sysinst/disks.c 2015/05/14 07:58:49 1.4.4.5 @@ -1,4 +1,4 @@ -/* $NetBSD: disks.c,v 1.4 2014/08/08 20:24:27 riz Exp $ */ +/* $NetBSD: disks.c,v 1.4.4.5 2015/05/14 07:58:49 snj Exp $ */ /* * Copyright 1997 Piermont Information Systems Inc. @@ -106,7 +106,7 @@ static int foundsysvbfs(struct data *, s #endif static int fsck_preen(const char *, int, const char *); static void fixsb(const char *, const char *, char); -static int is_gpt(const char *); +static bool is_gpt(const char *); static int incoregpt(pm_devs_t *, partinfo *); #ifndef DISK_NAMES @@ -576,12 +576,15 @@ find_disks(const char *doingwhat) return numdisks; } + void label_read(void) { + check_available_binaries(); + /* Get existing/default label */ memset(&pm->oldlabel, 0, sizeof pm->oldlabel); - if (! pm->gpt) + if (!have_gpt || !pm->gpt) incorelabel(pm->diskdev, pm->oldlabel); else incoregpt(pm, pm->oldlabel); @@ -651,14 +654,16 @@ fmt_fspart(menudesc *m, int ptn, void *a int write_disklabel (void) { + int rv = 0; #ifdef DISKLABEL_CMD /* disklabel the disk */ - return run_program(RUN_DISPLAY, "%s -f /tmp/disktab %s '%s'", + rv = run_program(RUN_DISPLAY, "%s -f /tmp/disktab %s '%s'", DISKLABEL_CMD, pm->diskdev, pm->bsddiskname); -#else - return 0; + if (rv == 0) + update_wedges(pm->diskdev); #endif + return rv; } @@ -1005,8 +1010,7 @@ foundffs(struct data *list, size_t num) error = target_mount("", list[0].u.s_val, ' '-'a', list[1].u.s_val); if (error != 0) { msg_display(MSG_mount_failed, list[0].u.s_val); - process_menu(MENU_noyes, NULL); - if (!yesno) + if (!ask_noyes(NULL)) return error; } return 0; @@ -1056,8 +1060,7 @@ fsck_preen(const char *disk, int ptn, co free(prog); if (error != 0) { msg_display(MSG_badfs, disk, ptn, error); - process_menu(MENU_noyes, NULL); - if (yesno) + if (ask_noyes(NULL)) error = 0; /* XXX at this point maybe we should run a full fsck? */ } @@ -1198,6 +1201,13 @@ mount_disks(void) } int +set_swap_if_low_ram(const char *disk, partinfo *pp) { + if (get_ramsize() <= 32) + return set_swap(disk, pp); + return 0; +} + +int set_swap(const char *disk, partinfo *pp) { int i; @@ -1383,7 +1393,7 @@ get_dkwedges(struct dkwedge_info **dkw, } } - if (dkwl.dkwl_nwedges > 0) + if (dkwl.dkwl_nwedges > 0 && *dkw != NULL) qsort(*dkw, dkwl.dkwl_nwedges, sizeof(**dkw), get_dkwedges_sort); close(fd); @@ -1456,9 +1466,14 @@ incoregpt(pm_devs_t *pm_cur, partinfo *l return 0; } -static int +static bool is_gpt(const char *dev) { - return ! run_program(RUN_SILENT | RUN_ERROR_OK, + check_available_binaries(); + + if (!have_gpt) + return false; + + return !run_program(RUN_SILENT | RUN_ERROR_OK, "sh -c 'gpt show %s |grep -e Pri\\ GPT\\ table'", dev); }