size_t n;
rc = fdisk_ask_partnum(cxt, &n, FALSE);
if (!rc)
- dos_move_begin(cxt, n);
+ rc = fdisk_dos_move_begin(cxt, n);
break;
}
case 'e':
rc = fdisk_dos_list_extended(cxt);
break;
case 'f':
- dos_fix_partition_table_order(cxt);
+ rc = fdisk_dos_fix_order(cxt);
break;
case 'i':
rc = fdisk_set_disklabel_id(cxt);
#include "fdiskdoslabel.h"
#define MAXIMUM_PARTS 60
-
#define ACTIVE_FLAG 0x80
#define IS_EXTENDED(i) \
l->ptes[j].changed = 1;
}
-void dos_fix_partition_table_order(struct fdisk_context *cxt)
+int fdisk_dos_fix_order(struct fdisk_context *cxt)
{
struct pte *pei, *pek;
size_t i,k;
if (!wrong_p_order(cxt, NULL)) {
fdisk_info(cxt, _("Nothing to do. Ordering is correct already."));
- return;
+ return 0;
}
while ((i = wrong_p_order(cxt, &k)) != 0 && i < 4) {
fix_chain_of_logicals(cxt);
fdisk_info(cxt, _("Done."));
-
+ return 0;
}
-void dos_move_begin(struct fdisk_context *cxt, int i)
+int fdisk_dos_move_begin(struct fdisk_context *cxt, int i)
{
- struct pte *pe = self_pte(cxt, i);
- struct dos_partition *p = pe->pt_entry;
+ struct pte *pe;
+ struct dos_partition *p;
unsigned int new, free_start, curr_start, last;
uintmax_t res = 0;
size_t x;
+ int rc;
assert(cxt);
assert(fdisk_is_disklabel(cxt, DOS));
+ pe = self_pte(cxt, i);
+ p = pe->pt_entry;
+
if (!p->sys_ind || !dos_partition_get_size(p) || IS_EXTENDED (p->sys_ind)) {
fdisk_warn(cxt, _("Partition %d: no data area."), i + 1);
- return;
+ return 0;
}
/* the default start is at the second sector of the disk or at the
last = get_abs_partition_start(pe) + dos_partition_get_size(p) - 1;
- if (fdisk_ask_number(cxt, free_start, curr_start, last,
- _("New beginning of data"), &res))
- return;
+ rc = fdisk_ask_number(cxt, free_start, curr_start, last,
+ _("New beginning of data"), &res);
+ if (rc)
+ return rc;
+
new = res - pe->offset;
if (new != dos_partition_get_size(p)) {
partition_set_changed(cxt, i, 1);
}
+
+ return rc;
}
static int dos_get_partition_status(
struct fdisk_context *cxt,
size_t i);
-extern void dos_fix_partition_table_order(struct fdisk_context *cxt);
-extern void dos_move_begin(struct fdisk_context *cxt, int i);
-extern void dos_toggle_active(struct fdisk_context *cxt, int i);
-
+extern int fdisk_dos_fix_order(struct fdisk_context *cxt);
+extern int fdisk_dos_move_begin(struct fdisk_context *cxt, int i);
extern int fdisk_dos_list_extended(struct fdisk_context *cxt);
/* toggle flags */