]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
fdisk: move "create label" actions to menu callback
authorKarel Zak <kzak@redhat.com>
Thu, 11 Jul 2013 14:56:00 +0000 (16:56 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 16 Sep 2013 14:47:07 +0000 (16:47 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
fdisks/fdisk-menu.c
fdisks/fdisk.c

index 05fc73034173800341562d02c1a0cc62cd6b3e54..20c10e7cdc08ccd56a4b69cbfd38bb08edbc2c8f 100644 (file)
@@ -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; }
index 44c9281c1c46ba0398906cbce72c2254e7d2d7d4..9fd43485253c31c0a5be7e92b0cdcd1227474e51 100644 (file)
@@ -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;