struct menulist_descr {
char command; /* command key */
char *description; /* command description */
- enum labeltype label[2]; /* disklabel types associated with main and expert menu */
+ enum fdisk_labeltype label[2]; /* disklabel types associated with main and expert menu */
};
static const struct menulist_descr menulist[] = {
sector_t sector_offset = 1;
unsigned int units_per_sector = 1, display_in_cyl_units = 0;
unsigned long grain = DEFAULT_SECTOR_SIZE;
-enum labeltype disklabel; /* Current disklabel */
+enum fdisk_labeltype disklabel; /* Current disklabel */
static void __attribute__ ((__noreturn__)) usage(FILE *out)
{
/* geometry */
sector_t total_sectors; /* in logical sectors */
struct fdisk_geometry geom;
+
+ /* label operations and description */
+ const struct fdisk_label *label;
};
/*
*/
struct fdisk_label {
const char *name;
+
+ /* probe disk label */
int (*probe)(struct fdisk_context *cxt);
};
extern sector_t get_nr_sects(struct partition *p);
-enum labeltype {
+/*
+ * Supported partition table types (labels)
+ */
+enum fdisk_labeltype {
+ ANY_LABEL = -1,
DOS_LABEL = 1,
- SUN_LABEL = 2,
- SGI_LABEL = 4,
- AIX_LABEL = 8,
- OSF_LABEL = 16,
- MAC_LABEL = 32,
- ANY_LABEL = -1
+ SUN_LABEL,
+ SGI_LABEL,
+ AIX_LABEL,
+ OSF_LABEL,
+ MAC_LABEL,
};
-extern enum labeltype disklabel;
+extern enum fdisk_labeltype disklabel;
extern int MBRbuffer_changed;
extern unsigned long grain;
*/
static const struct fdisk_label *labels[] =
{
- &bsd_label,
&dos_label,
- &sgi_label,
&sun_label,
+ &sgi_label,
&aix_label,
+ &bsd_label,
&mac_label,
};
static int __probe_labels(struct fdisk_context *cxt)
{
- int i, rc = 0;
+ int i;
disklabel = ANY_LABEL;
update_units(cxt);
for (i = 0; i < ARRAY_SIZE(labels); i++) {
- rc = labels[i]->probe(cxt);
- if (rc) {
- DBG(LABEL, dbgprint("detected a %s label\n",
- labels[i]->name));
- goto done;
- }
+ if (labels[i]->probe(cxt) != 1)
+ continue;
+
+ cxt->label = labels[i];
+
+ DBG(LABEL, dbgprint("detected a %s label\n", cxt->label->name));
+ return 0;
}
-done:
- return rc;
+ return 1; /* not found */
}
static int __init_firstsector_buffer(struct fdisk_context *cxt)