From: Karel Zak Date: Thu, 11 Jul 2013 14:56:00 +0000 (+0200) Subject: fdisk: move "create label" actions to menu callback X-Git-Tag: v2.24-rc1~116 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b3ac22eff31bb95bd20f903c7cb4756b0edfc220;p=thirdparty%2Futil-linux.git fdisk: move "create label" actions to menu callback Signed-off-by: Karel Zak --- diff --git a/fdisks/fdisk-menu.c b/fdisks/fdisk-menu.c index 05fc730341..20c10e7cdc 100644 --- a/fdisks/fdisk-menu.c +++ b/fdisks/fdisk-menu.c @@ -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; } diff --git a/fdisks/fdisk.c b/fdisks/fdisk.c index 44c9281c1c..9fd4348525 100644 --- a/fdisks/fdisk.c +++ b/fdisks/fdisk.c @@ -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;