Module Name: src Committed By: martin Date: Sun Jul 14 15:36:57 UTC 2019
Modified Files: src/usr.sbin/sysinst: partman.c Log Message: Fix a few of the very stupid mistakes I made when converting this to the abstract partitioning interface. To generate a diff of this commit: cvs rdiff -u -r1.36 -r1.37 src/usr.sbin/sysinst/partman.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.sbin/sysinst/partman.c diff -u src/usr.sbin/sysinst/partman.c:1.36 src/usr.sbin/sysinst/partman.c:1.37 --- src/usr.sbin/sysinst/partman.c:1.36 Sat Jul 13 17:13:36 2019 +++ src/usr.sbin/sysinst/partman.c Sun Jul 14 15:36:57 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: partman.c,v 1.36 2019/07/13 17:13:36 martin Exp $ */ +/* $NetBSD: partman.c,v 1.37 2019/07/14 15:36:57 martin Exp $ */ /* * Copyright 2012 Eugene Lozovoy @@ -454,11 +454,11 @@ pm_fmt_disk_line(WINDOW *w, const char * line = out; } if (no_size_display != NULL) { - wprintw(w, "%-34s (%s)", line, no_size_display); + wprintw(w, " %-56s (%s)", line, no_size_display); } else { humanize_number(human, sizeof(human), total, "", HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL); - wprintw(w, "%-34s %s", line, human); + wprintw(w, " %-56s %s", line, human); } } @@ -2650,6 +2650,7 @@ pm_menufmt(menudesc *m, int opt, void *a char buf[STRSIZE], dev[STRSIZE]; part_id part_num = ((struct part_entry *)arg)[opt].id; struct pm_devs *pm_cur = ((struct part_entry *)arg)[opt].dev_ptr; + struct disk_partitions *parts = ((struct part_entry *)arg)[opt].parts; struct disk_part_info info; const char *mount_point, *fstype; @@ -2668,11 +2669,16 @@ pm_menufmt(menudesc *m, int opt, void *a dev_status); break; case PM_PART: - pm_cur->parts->pscheme->get_part_device(pm_cur->parts, - part_num, dev, sizeof dev, NULL, plain_name, false); - pm_cur->parts->pscheme->get_part_info(pm_cur->parts, + if (parts->pscheme->get_part_device != NULL) + parts->pscheme->get_part_device( + parts, part_num, + dev, sizeof dev, NULL, plain_name, false); + else + strcpy(dev, "-"); + parts->pscheme->get_part_info(parts, part_num, &info); - if (pm_cur->mounted[part_num] != NULL && + if (pm_cur->mounted != NULL && + pm_cur->mounted[part_num] != NULL && pm_cur->mounted[part_num][0] != 0) mount_point = msg_string(MSG_pmmounted); else @@ -2754,6 +2760,8 @@ pm_upddevlist(menudesc *m, void *arg) int i = 0; size_t ii; struct pm_devs *pm_i; + struct disk_partitions *secondary; + const struct disk_partitioning_scheme *ps; struct disk_part_info info; if (arg != NULL) @@ -2788,14 +2796,48 @@ pm_upddevlist(menudesc *m, void *arg) if (pm_i->no_part) ((struct part_entry *)arg)[i].type = PM_SPEC; else { + ps = pm_i->parts != NULL ? pm_i->parts->pscheme : NULL; + secondary = NULL; + ((struct part_entry *)arg)[i].type = PM_DISK; - for (ii = 0; ii < pm_i->parts->num_part; ii++) { - if (!pm_i->parts->pscheme->get_part_info( - pm_i->parts, i, &info)) + + for (ii = 0; pm_i->parts != NULL && + ii < pm_i->parts->num_part; ii++) { + if (!ps->get_part_info( + pm_i->parts, ii, &info)) continue; - if (info.flags & (PTI_SEC_CONTAINER| - PTI_WHOLE_DISK|PTI_PSCHEME_INTERNAL| - PTI_RAW_PART)) + if (info.flags & PTI_SEC_CONTAINER) { + if (secondary == NULL && + ps->secondary_scheme != NULL) + secondary = ps-> + secondary_partitions( + pm_i->parts, + info.start, false); + continue; + } + if (info.flags & (PTI_WHOLE_DISK| + PTI_PSCHEME_INTERNAL|PTI_RAW_PART)) + continue; + if (info.fs_type == FS_UNUSED) + continue; + i++; + m->opts[i].opt_name = NULL; + m->opts[i].opt_exp_name = NULL; + m->opts[i].opt_action = pm_submenu; + ((struct part_entry *)arg)[i].parts = + pm_i->parts; + ((struct part_entry *)arg)[i].dev_ptr = pm_i; + ((struct part_entry *)arg)[i].id = ii; + ((struct part_entry *)arg)[i].type = PM_PART; + } + + for (ii = 0; secondary != NULL && + ii < secondary->num_part; ii++) { + if (!secondary->pscheme->get_part_info( + secondary, ii, &info)) + continue; + if (info.flags & (PTI_WHOLE_DISK| + PTI_PSCHEME_INTERNAL|PTI_RAW_PART)) continue; if (info.fs_type == FS_UNUSED) continue; @@ -2803,6 +2845,7 @@ pm_upddevlist(menudesc *m, void *arg) m->opts[i].opt_name = NULL; m->opts[i].opt_exp_name = NULL; m->opts[i].opt_action = pm_submenu; + ((struct part_entry *)arg)[i].parts = secondary; ((struct part_entry *)arg)[i].dev_ptr = pm_i; ((struct part_entry *)arg)[i].id = ii; ((struct part_entry *)arg)[i].type = PM_PART;