diff options
author | Karel Zak | 2013-05-23 15:55:35 +0200 |
---|---|---|
committer | Karel Zak | 2013-09-16 16:46:56 +0200 |
commit | 9f2809033e72e7a24b5d5169b74afa6efbc63330 (patch) | |
tree | 6bb3ce8b24738c3c8dd49b5d21f9fef2cedf7461 /fdisks/fdisk-menu.c | |
parent | fdisk: add functions to geometry menu (diff) | |
download | kernel-qcow2-util-linux-9f2809033e72e7a24b5d5169b74afa6efbc63330.tar.gz kernel-qcow2-util-linux-9f2809033e72e7a24b5d5169b74afa6efbc63330.tar.xz kernel-qcow2-util-linux-9f2809033e72e7a24b5d5169b74afa6efbc63330.zip |
fdisk: move sun commands to sun menu callback
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'fdisks/fdisk-menu.c')
-rw-r--r-- | fdisks/fdisk-menu.c | 55 |
1 files changed, 54 insertions, 1 deletions
diff --git a/fdisks/fdisk-menu.c b/fdisks/fdisk-menu.c index 369f83fa7..fe65d4622 100644 --- a/fdisks/fdisk-menu.c +++ b/fdisks/fdisk-menu.c @@ -7,6 +7,7 @@ #include "c.h" #include "fdisk.h" +#include "pt-sun.h" struct menu_entry { const char key; @@ -44,6 +45,7 @@ struct menu_context { const struct menu_entry *) DECLARE_MENU_CB(gpt_menu_cb); +DECLARE_MENU_CB(sun_menu_cb); DECLARE_MENU_CB(geo_menu_cb); /* @@ -139,7 +141,7 @@ struct menu menu_gpt = { }; struct menu menu_sun = { -/* .callback = sun_menu_cb, */ + .callback = sun_menu_cb, .label = FDISK_DISKLABEL_SUN, .entries = { MENU_BSEP(N_("Sun")), @@ -402,6 +404,57 @@ static int gpt_menu_cb(struct fdisk_context *cxt, return rc; } +static int sun_menu_cb(struct fdisk_context *cxt, + const struct menu *menu __attribute__((__unused__)), + const struct menu_entry *ent) +{ + int rc = 0; + + assert(cxt); + assert(ent); + assert(fdisk_is_disklabel(cxt, SUN)); + + DBG(FRONTEND, dbgprint("enter SUN menu")); + + /* normal mode */ + if (!ent->expert) { + size_t n; + + rc = fdisk_ask_partnum(cxt, &n, FALSE); + if (rc) + return rc; + switch (ent->key) { + case 'a': + rc = fdisk_partition_toggle_flag(cxt, n, SUN_FLAG_RONLY); + break; + case 'c': + rc = fdisk_partition_toggle_flag(cxt, n, SUN_FLAG_UNMNT); + break; + } + return rc; + } + + /* expert mode */ + switch (ent->key) { + case 'a': + rc = fdisk_sun_set_alt_cyl(cxt); + break; + case 'e': + rc = fdisk_sun_set_xcyl(cxt); + break; + case 'i': + rc = fdisk_sun_set_ilfact(cxt); + break; + case 'o': + rc = fdisk_sun_set_rspeed(cxt); + break; + case 'y': + rc = fdisk_sun_set_pcylcount(cxt); + break; + } + return rc; +} + /* C/H/S commands */ static int geo_menu_cb(struct fdisk_context *cxt, const struct menu *menu __attribute__((__unused__)), |