diff options
| author | Karel Zak <kzak@redhat.com> | 2013-07-11 16:56:00 +0200 |
|---|---|---|
| committer | Karel Zak <kzak@redhat.com> | 2013-09-16 16:47:07 +0200 |
| commit | b3ac22eff31bb95bd20f903c7cb4756b0edfc220 (patch) | |
| tree | d1ac84a126ac36bc38a77dca0e9c1909e11b8ae3 /fdisks | |
| parent | 6d9362988ec5117e4fd8efe50eae0ef3c0a2664a (diff) | |
| download | util-linux-b3ac22eff31bb95bd20f903c7cb4756b0edfc220.tar.gz | |
fdisk: move "create label" actions to menu callback
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'fdisks')
| -rw-r--r-- | fdisks/fdisk-menu.c | 32 | ||||
| -rw-r--r-- | fdisks/fdisk.c | 12 |
2 files changed, 31 insertions, 13 deletions
diff --git a/fdisks/fdisk-menu.c b/fdisks/fdisk-menu.c index 05fc7303..20c10e7c 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 44c9281c..9fd43485 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; |
