fdisk: move "create label" actions to menu callback

Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
Karel Zak 2013-07-11 16:56:00 +02:00
parent 6d9362988e
commit b3ac22eff3
2 changed files with 31 additions and 13 deletions

View File

@ -52,6 +52,7 @@ DECLARE_MENU_CB(sun_menu_cb);
DECLARE_MENU_CB(geo_menu_cb);
DECLARE_MENU_CB(dos_menu_cb);
DECLARE_MENU_CB(bsd_menu_cb);
DECLARE_MENU_CB(createlabel_menu_cb);
/*
* Menu entry macros:
@ -110,7 +111,7 @@ struct menu menu_generic = {
};
struct menu menu_createlabel = {
/* .callback = createlabel_menu_cb, */
.callback = createlabel_menu_cb,
.exclude = FDISK_DISKLABEL_BSD,
.entries = {
MENU_SEP(N_("Create a new label")),
@ -619,6 +620,35 @@ static int geo_menu_cb(struct fdisk_context **cxt0,
return rc;
}
static int createlabel_menu_cb(struct fdisk_context **cxt0,
const struct menu *menu __attribute__((__unused__)),
const struct menu_entry *ent)
{
struct fdisk_context *cxt = *cxt0;
int rc = -EINVAL;
DBG(FRONTEND, dbgprint("enter Create label menu"));
assert(cxt);
assert(ent);
switch (ent->key) {
case 'g':
fdisk_create_disklabel(cxt, "gpt");
break;
case 'G':
fdisk_create_disklabel(cxt, "sgi");
break;
case 'o':
fdisk_create_disklabel(cxt, "dos");
break;
case 's':
fdisk_create_disklabel(cxt, "sun");
break;
}
return rc;
}
#ifdef TEST_PROGRAM
struct fdisk_label *fdisk_new_dos_label(struct fdisk_context *cxt) { return NULL; }
struct fdisk_label *fdisk_new_bsd_label(struct fdisk_context *cxt) { return NULL; }

View File

@ -528,12 +528,6 @@ static void command_prompt(struct fdisk_context *cxt)
if (fdisk_ask_partnum(cxt, &n, FALSE) == 0)
delete_partition(cxt, n);
break;
case 'g':
fdisk_create_disklabel(cxt, "gpt");
break;
case 'G':
fdisk_create_disklabel(cxt, "sgi");
break;
case 'i':
if (fdisk_is_disklabel(cxt, SGI))
sgi_create_info(cxt);
@ -546,17 +540,11 @@ static void command_prompt(struct fdisk_context *cxt)
case 'n':
new_partition(cxt);
break;
case 'o':
fdisk_create_disklabel(cxt, "dos");
break;
case 'p':
list_table(cxt);
break;
case 'q':
handle_quit(cxt);
case 's':
fdisk_create_disklabel(cxt, "sun");
break;
case 't':
change_partition_type(cxt);
break;