summaryrefslogtreecommitdiffstats
path: root/fdisks/fdisk-menu.c
diff options
context:
space:
mode:
authorKarel Zak2013-07-12 10:44:35 +0200
committerKarel Zak2013-09-16 16:47:08 +0200
commit8930996828824de42894688ddab60162f64c8c05 (patch)
treebb1f4b9cbda6b9fb50d9ac8dc2024c8c3b7fa55d /fdisks/fdisk-menu.c
parentfdisk: consolidate code in fdisk.c (diff)
downloadkernel-qcow2-util-linux-8930996828824de42894688ddab60162f64c8c05.tar.gz
kernel-qcow2-util-linux-8930996828824de42894688ddab60162f64c8c05.tar.xz
kernel-qcow2-util-linux-8930996828824de42894688ddab60162f64c8c05.zip
fdisk: move expect 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.c42
1 files changed, 41 insertions, 1 deletions
diff --git a/fdisks/fdisk-menu.c b/fdisks/fdisk-menu.c
index 0940c360c..ac30d3a14 100644
--- a/fdisks/fdisk-menu.c
+++ b/fdisks/fdisk-menu.c
@@ -54,6 +54,7 @@ DECLARE_MENU_CB(geo_menu_cb);
DECLARE_MENU_CB(dos_menu_cb);
DECLARE_MENU_CB(bsd_menu_cb);
DECLARE_MENU_CB(createlabel_menu_cb);
+DECLARE_MENU_CB(generic_menu_cb);
/*
* Menu entry macros:
@@ -83,7 +84,7 @@ DECLARE_MENU_CB(createlabel_menu_cb);
/* Generic menu */
struct menu menu_generic = {
-/* .callback = generic_menu_cb,*/
+ .callback = generic_menu_cb,
.entries = {
MENU_BSEP(N_("Generic")),
MENU_ENT ('d', N_("delete a partition")),
@@ -391,6 +392,45 @@ int process_fdisk_menu(struct fdisk_context **cxt0)
return rc;
}
+/*
+ * Basic fdisk actions
+ */
+static int generic_menu_cb(struct fdisk_context **cxt0,
+ const struct menu *menu __attribute__((__unused__)),
+ const struct menu_entry *ent)
+{
+ struct fdisk_context *cxt = *cxt0;
+ int rc = 0;
+
+ if (!ent->expert)
+ return ent->key;
+
+ /* expert mode */
+ switch (ent->key) {
+ case 'd':
+ print_raw(cxt);
+ break;
+ case 'p':
+ list_disk_geometry(cxt);
+ rc = fdisk_list_disklabel(cxt);
+ break;
+ case 'q':
+ fdisk_free_context(cxt);
+ printf("\n");
+ exit(EXIT_SUCCESS);
+ case 'r':
+ rc = fdisk_context_enable_details(cxt, 0);
+ break;
+ case 'v':
+ rc = fdisk_verify_disklabel(cxt);
+ break;
+ case 'w':
+ write_table(cxt);
+ break;
+ }
+ return rc;
+}
+
/*
* This is fdisk frontend for GPT specific libfdisk functions that