Lines Matching refs:pset
87 * We have previously sorted pset->parts and pset->infos to be in sync,
92 real_partition(const struct partition_usage_set *pset, int index)
94 if (index < 0 || (size_t)index >= pset->num)
97 return pset->infos[index].cur_part_id != NO_PART;
187 verify_parts(struct partition_usage_set *pset, bool install)
197 parts = pset->parts;
198 for (i = 0; i < pset->num; i++) {
199 wanted = &pset->infos[i];
260 start = getpartoff(edit->pset->parts, edit->info.start);
266 edit->info.size = edit->pset->parts->pscheme->
267 max_free_space_at(edit->pset->parts,
287 if (!edit->pset->parts->pscheme->get_part_info(edit->pset->parts,
291 size = getpartsize(edit->pset->parts, pinfo.start,
295 if (size > edit->pset->parts->disk_size)
296 size = edit->pset->parts->disk_size - edit->info.start;
493 renumber_partitions(struct partition_usage_set *pset)
500 ninfos = calloc(pset->parts->num_part, sizeof(*ninfos));
506 for (pno = 0; pno < pset->parts->num_part; pno++) {
507 if (!pset->parts->pscheme->get_part_info(pset->parts, pno,
510 for (i = 0; i < pset->num; i++) {
511 if (pset->infos[i].cur_start != info.start)
513 if ((pset->infos[i].cur_flags & ~PTI_INSTALL_TARGET)
517 (pset->infos[i].flags & PTI_SPECIAL_PARTS))
520 info.fs_type == pset->infos[i].fs_type) ||
521 (pset->infos[i].type ==
523 memcpy(&ninfos[pno], &pset->infos[i],
531 free(pset->infos);
532 pset->infos = ninfos;
533 pset->num = pset->parts->num_part;
634 edit->info.nat_type = edit->pset->parts->pscheme->
637 edit->info.nat_type = edit->pset->parts->pscheme->
738 edit->info.nat_type = edit->pset->parts->pscheme->
741 edit->info.nat_type = edit->pset->parts->
756 edit->info.nat_type = edit->pset->parts->pscheme->
759 edit->info.nat_type = edit->pset->parts->
835 remember_deleted(struct partition_usage_set *pset,
842 for (i = 0; i < pset->num_write_back; i++)
843 if (pset->write_back[i] == parts)
848 num = pset->num_write_back + 1;
849 tab = realloc(pset->write_back, num*sizeof(*pset->write_back));
852 tab[pset->num_write_back] = parts;
853 pset->write_back = tab;
854 pset->num_write_back = num;
860 struct partition_usage_set *pset = arg;
865 bool is_new_part, with_inst_opt = pset->parts->parent == NULL;
903 edit.pset = pset;
905 edit.wanted = &pset->infos[edit.index];
907 if (menu->cursel < 0 || (size_t)menu->cursel > pset->parts->num_part)
909 is_new_part = (size_t)menu->cursel == pset->parts->num_part;
922 num_opts += pset->parts->pscheme->custom_attribute_count;
946 i < pset->parts->pscheme->custom_attribute_count;
958 daddr_t align = pset->parts->pscheme->get_part_alignment(
959 pset->parts);
962 if (pset->parts->pscheme->get_free_spaces(pset->parts,
968 edit.info.nat_type = pset->parts->pscheme->
974 edit.id = pset->infos[edit.index].cur_part_id;
975 if (!pset->parts->pscheme->get_part_info(pset->parts, edit.id,
997 edit.wanted->parts = pset->parts;
1000 edit.wanted->cur_part_id = pset->parts->pscheme->
1001 add_partition(pset->parts, &edit.info, &err);
1005 pset->parts->pscheme->get_part_info(
1006 pset->parts, edit.wanted->cur_part_id,
1016 renumber_partitions(pset);
1019 if (!pset->parts->pscheme->set_part_info(pset->parts,
1023 pset->cur_free_space += edit.old_info.size -
1031 show_partition_adder(menu, pset);
1034 memmove(pset->infos+edit.index,
1035 pset->infos+edit.index+1,
1036 sizeof(*pset->infos)*(pset->num-edit.index));
1042 pset->num--;
1045 pset->infos[edit.index] = edit.old_usage;
1047 if (!pset->parts->pscheme->delete_partition(pset->parts,
1052 remember_deleted(pset,
1053 pset->infos[edit.index].parts);
1054 pset->cur_free_space += edit.info.size;
1055 memmove(pset->infos+edit.index,
1056 pset->infos+edit.index+1,
1057 sizeof(*pset->infos)*(pset->num-edit.index));
1063 if (pset->parts->num_part == 0)
1067 pset->num--;
1068 renumber_partitions(pset);
1071 show_partition_adder(menu, pset);
1114 if (!edit->pset->parts->pscheme->
1116 edit->pset->parts, edit->id, attr_no))
1123 if ((edit->pset->infos[edit->index].flags & PUIFLG_IS_OUTER)
1172 i < edit->pset->parts->pscheme->custom_attribute_count;
1175 edit->pset->parts->pscheme->custom_attributes[i]
1297 edit->pset->parts->pscheme->format_custom_attribute(
1298 edit->pset->parts, edit->id, attr_no, &edit->info,
1300 attrname = msg_string(edit->pset->parts->pscheme->
1312 switch (edit->pset->parts->pscheme->custom_attributes[attr_no].type) {
1314 edit->pset->parts->pscheme->custom_attribute_toggle(
1315 edit->pset->parts, edit->id, attr_no);
1319 edit->pset->parts->pscheme->format_custom_attribute(
1320 edit->pset->parts, edit->id, attr_no, &edit->info,
1323 edit->pset->parts->pscheme->custom_attributes[attr_no].
1325 edit->pset->parts->pscheme->custom_attribute_set_str(
1326 edit->pset->parts, edit->id, attr_no, line);
1352 struct partition_usage_set *pset = arg;
1358 bool with_clone, with_inst_flag = pset->parts->parent == NULL;
1361 for (ptn = 0; ptn < pset->num && !with_clone; ptn++)
1362 if (pset->infos[ptn].flags & PUIFLG_CLONE_PARTS)
1365 pset->parts->disk_size * pset->parts->bytes_per_sector,
1368 pset->cur_free_space * pset->parts->bytes_per_sector,
1375 if (pset->parts->pscheme->part_flag_desc)
1376 strlcat(desc, msg_string(pset->parts->pscheme->part_flag_desc),
1379 msg_display_subst(MSG_fspart, 7, pset->parts->disk,
1380 msg_string(pset->parts->pscheme->name),
1381 msg_string(pset->parts->pscheme->short_name),
1421 struct partition_usage_set *pset = arg;
1431 bool with_inst_flag = pset->parts->parent == NULL;
1437 if ((pset->infos[ptn].flags & PUIFLG_CLONE_PARTS) &&
1438 pset->infos[ptn].cur_part_id == NO_PART) {
1439 psize = pset->infos[ptn].size / sizemult;
1440 if (pset->infos[ptn].clone_ndx <
1441 pset->infos[ptn].clone_src->num_sel)
1444 clone_cnt = pset->infos[ptn].clone_src->num_sel;
1445 if (pset->infos[ptn].cur_part_id == NO_PART)
1450 poffset = pset->infos[ptn].cur_start / sizemult;
1451 pend = (pset->infos[ptn].cur_start +
1452 pset->infos[ptn].size) / sizemult - 1;
1466 if (!real_partition(pset, ptn))
1469 if (!pset->parts->pscheme->get_part_info(pset->parts,
1470 pset->infos[ptn].cur_part_id, &info))
1484 || (pset->infos[ptn].flags & PUIFLG_CLONE_PARTS))
1507 inst_flags = pset->infos[ptn].instflags;
1518 if (pset->infos[ptn].flags & PUIFLG_CLONE_PARTS)
1521 if (pset->parts->pscheme->get_part_attr_str != NULL)
1522 pset->parts->pscheme->get_part_attr_str(pset->parts,
1523 pset->infos[ptn].cur_part_id, fp,
1548 struct partition_usage_set *pset = arg;
1569 num_men = pset->num+1;
1576 free_size = pset->infos[i].cur_start;
1577 else if (i > 0 && (size_t)i < pset->num)
1578 free_size = pset->infos[i].cur_start -
1579 pset->infos[i-1].cur_start - pset->infos[i-1].size;
1581 free_size = pset->parts->free_space;
1588 data.usage = *pset;
1613 align = pset->parts->pscheme->get_part_alignment(pset->parts);
1616 offset = pset->infos[data.res-1].cur_start
1617 + pset->infos[data.res-1].size;
1624 if (!pset->parts->pscheme->adapt_foreign_part_info(
1625 pset->parts, &cinfo, csrc->pscheme, &sinfo))
1627 size_t cnt = pset->parts->pscheme->get_free_spaces(
1628 pset->parts, &space, 1, cinfo.size-align, align,
1633 cid = pset->parts->pscheme->add_partition(
1634 pset->parts, &cinfo, NULL);
1637 pset->parts->pscheme->get_part_info(pset->parts, cid, &cinfo);
1649 pset->menu_opts = men;
1653 p = realloc(pset->infos, (pset->num+clone_cnt)*sizeof(*pset->infos));
1656 pset->infos = p;
1662 if (pset->num > (size_t)data.res)
1663 memmove(p+clone_cnt, p, sizeof(*p)*(pset->num-data.res));
1672 p[s].parts = pset->parts;
1677 m->cursel = ((size_t)data.res >= pset->num) ? 0 : data.res+clone_cnt;
1678 pset->num += clone_cnt;
1694 struct partition_usage_set *pset = arg;
1697 if (!pset->parts->pscheme->get_disk_pack_name(pset->parts,
1704 pset->parts->pscheme->set_disk_pack_name(pset->parts, buf);
1711 struct partition_usage_set *pset = arg;
1716 ninfo = realloc(pset->infos, (pset->num+1)*sizeof(*pset->infos));
1719 pset->infos = ninfo;
1720 off = pset->parts->num_part;
1721 cnt = pset->num-pset->parts->num_part;
1723 memmove(pset->infos+off+1,pset->infos+off,
1724 cnt*sizeof(*pset->infos));
1725 memset(pset->infos+off, 0, sizeof(*pset->infos));
1734 pset->menu_opts = m->opts = nmenopts;
1737 pset->num++;
1746 show_partition_adder(m, pset);
1752 add_partition_adder(menudesc *m, struct partition_usage_set *pset)
1758 ninfo = realloc(pset->infos, (pset->num+1)*sizeof(*pset->infos));
1761 pset->infos = ninfo;
1762 off = pset->parts->num_part+1;
1780 remove_partition_adder(menudesc *m, struct partition_usage_set *pset)
1784 off = pset->parts->num_part+1;
1795 show_partition_adder(menudesc *m, struct partition_usage_set *pset)
1800 bool can_add_partition = pset->parts->pscheme->can_add_partition(
1801 pset->parts);
1803 (m->opts[pset->parts->num_part].opt_flags & OPT_IGNORE) &&
1804 (m->opts[pset->parts->num_part+1].opt_action == edit_fspart_add);
1810 add_partition_adder(m, pset);
1812 remove_partition_adder(m, pset);
1822 struct partition_usage_set *pset = arg;
1824 pset->ok = false;
1834 edit_and_check_label(struct pm_devs *p, struct partition_usage_set *pset,
1839 bool may_add = pset->parts->pscheme->can_add_partition(pset->parts);
1841 pset->parts->pscheme->get_disk_pack_name != NULL &&
1842 pset->parts->pscheme->set_disk_pack_name != NULL;
1849 pset->menu_opts = calloc(pset->parts->num_part
1851 sizeof *pset->menu_opts);
1852 if (pset->menu_opts == NULL)
1855 op = pset->menu_opts;
1856 for (i = 0; i < pset->parts->num_part; i++) {
1899 cnt = op - pset->menu_opts;
1900 assert(cnt == pset->parts->num_part+3+C_M_ITEMS+may_add+may_edit_pack);
1902 pset->menu = new_menu(fspart_title, pset->menu_opts, cnt,
1909 if (pset->menu < 0) {
1910 free(pset->menu_opts);
1911 pset->menu_opts = NULL;
1919 pset->ok = true;
1920 process_menu(pset->menu, pset);
1921 if (!pset->ok) {
1927 i = verify_parts(pset, install);
1932 free(pset->menu_opts);
1933 pset->menu_opts = NULL;
1934 free_menu(pset->menu);
1935 pset->menu = -1;