summaryrefslogtreecommitdiff
path: root/fdisks/fdisk-menu.c
diff options
context:
space:
mode:
authorKarel Zak <kzak@redhat.com>2013-07-11 16:56:00 +0200
committerKarel Zak <kzak@redhat.com>2013-09-16 16:47:07 +0200
commitb3ac22eff31bb95bd20f903c7cb4756b0edfc220 (patch)
treed1ac84a126ac36bc38a77dca0e9c1909e11b8ae3 /fdisks/fdisk-menu.c
parent6d9362988ec5117e4fd8efe50eae0ef3c0a2664a (diff)
downloadutil-linux-b3ac22eff31bb95bd20f903c7cb4756b0edfc220.tar.gz
fdisk: move "create label" actions to menu callback
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'fdisks/fdisk-menu.c')
-rw-r--r--fdisks/fdisk-menu.c32
1 files changed, 31 insertions, 1 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; }