Home | History | Annotate | Download | only in sysinst

Lines Matching defs:pset

57 static size_t fill_ptn_menu(struct partition_usage_set *pset);
158 set_pset_exit_str(struct partition_usage_set *pset)
163 daddr_t free_space = pset->cur_free_space;
183 struct partition_usage_set *pset = arg;
190 for (i = 0; i < pset->num; i++) {
191 if (pset->infos[i].flags & PUIFLG_IS_OUTER)
193 else if (pset->infos[i].cur_part_id != NO_PART)
224 struct partition_usage_set *pset = arg;
230 if (opt < 0 || (size_t)opt >= pset->num)
234 if ((pset->infos[opt].flags & PUIFLAG_EXTEND) &&
235 pset->cur_free_space > 0) {
236 size = pset->infos[opt].size + pset->cur_free_space;
240 size = pset->infos[opt].size;
241 if (pset->infos[opt].fs_type == FS_TMPFS) {
242 if (pset->infos[opt].size < 0)
252 if (pset->infos[opt].type == PT_swap) {
256 } else if (pset->infos[opt].flags & PUIFLG_JUST_MOUNTPOINT) {
258 pset->infos[opt].mount,
259 getfslabelname(pset->infos[opt].fs_type,
260 pset->infos[opt].fs_version));
262 } else if (pset->infos[opt].mount[0]) {
263 if (pset->infos[opt].instflags & PUIINST_BOOT) {
265 pset->infos[opt].mount, msg_string(MSG_ptn_boot));
268 mount = pset->infos[opt].mount;
271 } else if (pset->infos[opt].flags & PUIFLG_CLONE_PARTS) {
273 pset->infos[opt].clone_src->num_sel,
279 if (pset->infos[opt].parts->pscheme->other_partition_identifier
280 && pset->infos[opt].cur_part_id != NO_PART)
281 mount = pset->infos[opt].parts->pscheme->
282 other_partition_identifier(pset->infos[opt].parts,
283 pset->infos[opt].cur_part_id);
285 mount = getfslabelname(pset->infos[opt].fs_type,
286 pset->infos[opt].fs_version);
287 if (pset->infos[opt].instflags & PUIINST_BOOT) {
297 if (pset->infos[opt].flags & PUIFLAG_EXTEND)
299 else if (pset->infos[opt].flags & PUIFLG_IS_OUTER)
301 else if (pset->infos[opt].cur_part_id != NO_PART)
308 set_pset_exit_str(pset);
314 struct partition_usage_set *pset = arg;
333 for (size_t i = 0; i < pset->num; i++) {
334 if (strcmp(pset->infos[i].mount,
350 m = realloc(pset->menu_opts, (pset->num+5)*sizeof(*pset->menu_opts));
353 p = realloc(pset->infos, (pset->num+1)*sizeof(*pset->infos));
357 pset->infos = p;
358 pset->menu_opts = m;
360 menu->numopts = pset->num+4;
361 m += pset->num;
362 p += pset->num;
365 p->parts = pset->parts;
372 menu->cursel = pset->num;
373 pset->num++;
374 fill_ptn_menu(pset);
385 struct partition_usage_set *pset = arg;
393 num_men = pset->num+1;
402 data.usage = *pset;
416 men = realloc(pset->menu_opts, (pset->num+5)*sizeof(*pset->menu_opts));
419 pset->menu_opts = men;
421 menu->numopts = pset->num+4;
423 p = realloc(pset->infos, (pset->num+1)*sizeof(*pset->infos));
426 pset->infos = p;
430 memmove(men+1, men, sizeof(*men)*((pset->num+4)-data.res));
431 memmove(p+1, p, sizeof(*p)*((pset->num)-data.res));
441 p->parts = pset->parts;
448 pset->num++;
449 fill_ptn_menu(pset);
460 fill_ptn_menu(struct partition_usage_set *pset)
474 memset(pset->menu_opts, 0, (pset->num+ADD_ITEMS)
475 *sizeof(*pset->menu_opts));
476 for (m = pset->menu_opts, p = pset->infos, i = 0; i < pset->num;
504 free_space = pset->parts->free_space - pset->reserved_space;
505 for (i = 0; i < pset->parts->num_part; i++) {
506 if (!pset->parts->pscheme->get_part_info(pset->parts, i,
514 for (i = 0; i < pset->num; i++) {
515 if (pset->infos[i].flags &
518 free_space -= pset->infos[i].size;
520 pset->cur_free_space = free_space;
521 set_pset_exit_str(pset);
523 if (pset->menu >= 0)
524 set_menu_numopts(pset->menu, m - pset->menu_opts);
526 return m - pset->menu_opts;
562 struct partition_usage_set *pset = arg;
563 struct part_usage_info *p = &pset->infos[m->cursel];
571 if (pset->cur_free_space == 0 && p->size == 0 &&
581 if (!pset->parts->pscheme->delete_partition(pset->parts,
591 for (i = 0; i < pset->num; i++) {
592 if (pset->infos[i].cur_part_id == NO_PART)
594 pset->infos[i].cur_part_id =
595 find_part_at(pset->parts, pset->infos[i].cur_start);
649 for (i = 0; i < pset->num; i++) {
650 if (strcmp(pset->infos[i].mount, "/") == 0) {
656 if (root < pset->num &&
657 pset->infos[root].cur_part_id == NO_PART &&
658 pset->infos[root].size ==
659 pset->infos[root].def_size) {
664 pset->infos[root].size -= p->def_size;
665 pset->cur_free_space += p->def_size;
671 if (pset->infos[root].flags & PUIFLAG_EXTEND)
680 daddr_t align = pset->parts->pscheme->get_part_alignment(pset->parts);
687 for (size_t k = 0; k < pset->num; k++)
688 pset->infos[k].flags &= ~PUIFLAG_EXTEND;
696 pset->cur_free_space += p->size - size;
698 set_pset_exit_str(pset);
704 * User interface to edit a "wanted" partition layout "pset" as first
709 * in pset in sync, that is: we always allocate just enough entries
710 * in pset->infos as we have usage infos in the list (pset->num),
718 get_ptn_sizes(struct partition_usage_set *pset)
725 if (pset->menu_opts == NULL)
726 pset->menu_opts = calloc(pset->num+4, sizeof(*pset->menu_opts));
728 pset->menu = -1;
729 num = fill_ptn_menu(pset);
731 pset->menu = new_menu(size_menu_title, pset->menu_opts, num,
737 if (pset->menu < 0) {
738 free(pset->menu_opts);
739 pset->menu_opts = NULL;
743 pset->ok = true;
744 process_menu(pset->menu, pset);
746 free_menu(pset->menu);
747 free(pset->menu_opts);
748 pset->menu = -1;
749 pset->menu_opts = NULL;
751 return pset->ok;
1230 * We sort pset->infos to sync with pset->parts and
1238 sort_and_sync_parts(struct partition_usage_set *pset)
1244 pset->cur_free_space = pset->parts->free_space - pset->reserved_space;
1246 /* count non-empty entries that are not in pset->parts */
1247 no = pset->parts->num_part;
1248 for (i = 0; i < pset->num; i++) {
1249 if (pset->infos[i].size == 0)
1251 if (pset->infos[i].cur_part_id != NO_PART)
1262 for (i = 0; i < pset->parts->num_part; i++) {
1270 for (i = 0; i < pset->num; i++) {
1271 pno = pset->infos[i].cur_part_id;
1274 if (pset->parts != pset->infos[i].parts)
1276 if (pset->infos[i].flags & PUIFLG_JUST_MOUNTPOINT)
1278 if ((pset->infos[i].flags & (PUIFLG_IS_OUTER|PUIFLG_ADD_INNER))
1281 if (pno >= pset->parts->num_part)
1283 memcpy(infos+pno, pset->infos+i, sizeof(*infos));
1286 for (pno = 0; pno < pset->parts->num_part; pno++) {
1292 if (!pset->parts->pscheme->get_part_info(pset->parts, pno,
1296 infos[pno].parts = pset->parts;
1306 j = pset->parts->num_part;
1307 for (i = 0; i < pset->num; i++) {
1310 if (pset->infos[i].size == 0)
1312 if (pset->infos[i].cur_part_id != NO_PART)
1314 memcpy(infos+j, pset->infos+i, sizeof(*infos));
1319 free(pset->infos);
1320 pset->num = no;
1321 pset->infos = infos;