From 39f01b7b2ba982b79ddad8b90852920096c934e1 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Fri, 17 May 2013 15:11:11 +0200 Subject: [PATCH] fdisk: use new menus Signed-off-by: Karel Zak --- fdisks/fdisk-menu.c | 6 ++-- fdisks/fdisk.c | 78 +++--------------------------------------- fdisks/fdisk.h | 2 ++ fdisks/fdiskbsdlabel.c | 2 +- 4 files changed, 10 insertions(+), 78 deletions(-) diff --git a/fdisks/fdisk-menu.c b/fdisks/fdisk-menu.c index e6b38703f..17ecdbab1 100644 --- a/fdisks/fdisk-menu.c +++ b/fdisks/fdisk-menu.c @@ -276,7 +276,7 @@ static int menu_detect_collisions(struct fdisk_context *cxt) return 0; } -static int print_fdisk_menu(struct fdisk_context *cxt) +int print_fdisk_menu(struct fdisk_context *cxt) { struct menu_context mc = MENU_CXT_EMPTY; const struct menu_entry *e; @@ -284,9 +284,9 @@ static int print_fdisk_menu(struct fdisk_context *cxt) ON_DBG(CONTEXT, menu_detect_collisions(cxt)); if (fdisk_context_display_details(cxt)) - printf(_("\nExpert commands:\n")); + printf(_("\nHelp (expert commands):\n")); else - printf(_("\nCommands:\n")); + printf(_("\nHelp:\n")); while ((e = next_menu_entry(cxt, &mc))) { if (IS_MENU_HID(e)) diff --git a/fdisks/fdisk.c b/fdisks/fdisk.c index d53af1c59..0034b5240 100644 --- a/fdisks/fdisk.c +++ b/fdisks/fdisk.c @@ -48,63 +48,6 @@ #include #endif -/* menu list description */ - -struct menulist_descr { - char command; /* command key */ - char *description; /* command description */ - enum fdisk_labeltype label[2]; /* disklabel types associated with main and expert menu */ -}; - -static const struct menulist_descr menulist[] = { - {'a', N_("change number of alternate cylinders"), {0, FDISK_DISKLABEL_SUN}}, - {'a', N_("select bootable partition"), {FDISK_DISKLABEL_SGI, 0}}, - {'a', N_("toggle a bootable flag"), {FDISK_DISKLABEL_DOS, 0}}, - {'a', N_("toggle a read only flag"), {FDISK_DISKLABEL_SUN, 0}}, - {'b', N_("edit bootfile entry"), {FDISK_DISKLABEL_SGI, 0}}, - {'b', N_("edit bsd disklabel"), {FDISK_DISKLABEL_DOS, 0}}, - {'b', N_("move beginning of data in a partition"), {0, FDISK_DISKLABEL_DOS}}, - {'c', N_("change number of cylinders"), {0, FDISK_DISKLABEL_DOS | FDISK_DISKLABEL_SUN}}, - {'c', N_("select sgi swap partition"), {FDISK_DISKLABEL_SGI, 0}}, - {'c', N_("toggle the dos compatibility flag"), {FDISK_DISKLABEL_DOS, 0}}, - {'c', N_("toggle the mountable flag"), {FDISK_DISKLABEL_SUN, 0}}, - {'d', N_("delete a partition"), {FDISK_DISKLABEL_DOS | FDISK_DISKLABEL_SUN | FDISK_DISKLABEL_SGI | FDISK_DISKLABEL_OSF | FDISK_DISKLABEL_GPT, 0}}, - {'d', N_("print the raw data of the first sector"), {0, FDISK_DISKLABEL_ANY}}, - {'e', N_("change number of extra sectors per cylinder"), {0, FDISK_DISKLABEL_SUN}}, - {'e', N_("edit drive data"), {FDISK_DISKLABEL_OSF, 0}}, - {'e', N_("list extended partitions"), {0, FDISK_DISKLABEL_DOS}}, - {'f', N_("fix partition order"), {0, FDISK_DISKLABEL_DOS}}, - {'g', N_("create a new empty GPT partition table"), {~FDISK_DISKLABEL_OSF, 0}}, - {'g', N_("create an IRIX (SGI) partition table"), {0, FDISK_DISKLABEL_ANY}}, /* for backward compatibility only */ - {'h', N_("change number of heads"), {0, FDISK_DISKLABEL_DOS | FDISK_DISKLABEL_SUN}}, - {'i', N_("change interleave factor"), {0, FDISK_DISKLABEL_SUN}}, - {'i', N_("change the disk identifier"), {0, FDISK_DISKLABEL_DOS}}, - {'i', N_("install bootstrap"), {FDISK_DISKLABEL_OSF, 0}}, - {'l', N_("list known partition types"), {FDISK_DISKLABEL_DOS | FDISK_DISKLABEL_SUN | FDISK_DISKLABEL_SGI | FDISK_DISKLABEL_OSF | FDISK_DISKLABEL_GPT, 0}}, - {'m', N_("print this menu"), {FDISK_DISKLABEL_ANY, FDISK_DISKLABEL_ANY}}, - {'n', N_("add a new partition"), {FDISK_DISKLABEL_DOS | FDISK_DISKLABEL_SUN | FDISK_DISKLABEL_SGI | FDISK_DISKLABEL_OSF | FDISK_DISKLABEL_GPT, 0}}, - {'o', N_("change rotation speed (rpm)"), {0, FDISK_DISKLABEL_SUN}}, - {'o', N_("create a new empty DOS partition table"), {~FDISK_DISKLABEL_OSF, 0}}, - {'p', N_("print the partition table"), { FDISK_DISKLABEL_ANY, FDISK_DISKLABEL_ANY }}, - {'q', N_("quit without saving changes"), {FDISK_DISKLABEL_ANY, FDISK_DISKLABEL_ANY}}, - {'r', N_("return to main menu"), {FDISK_DISKLABEL_OSF, FDISK_DISKLABEL_DOS | FDISK_DISKLABEL_SUN | FDISK_DISKLABEL_SGI | FDISK_DISKLABEL_OSF}}, - {'s', N_("change number of sectors/track"), {0, FDISK_DISKLABEL_DOS | FDISK_DISKLABEL_SUN}}, - {'s', N_("create a new empty Sun disklabel"), {~FDISK_DISKLABEL_OSF, 0}}, - {'s', N_("show complete disklabel"), {FDISK_DISKLABEL_OSF, 0}}, - {'t', N_("change a partition's system id"), {FDISK_DISKLABEL_DOS | FDISK_DISKLABEL_SUN | FDISK_DISKLABEL_SGI | FDISK_DISKLABEL_OSF | FDISK_DISKLABEL_GPT, 0}}, - {'u', N_("change display/entry units"), {FDISK_DISKLABEL_DOS | FDISK_DISKLABEL_SUN | FDISK_DISKLABEL_SGI | FDISK_DISKLABEL_OSF, 0}}, - {'u', N_("change partition UUID"), {0, FDISK_DISKLABEL_GPT}}, - {'v', N_("verify the partition table"), {FDISK_DISKLABEL_GPT | FDISK_DISKLABEL_DOS | FDISK_DISKLABEL_SUN | FDISK_DISKLABEL_SGI, FDISK_DISKLABEL_DOS | FDISK_DISKLABEL_SUN | FDISK_DISKLABEL_SGI}}, - {'w', N_("write disklabel to disk"), {FDISK_DISKLABEL_OSF, 0}}, - {'w', N_("write table to disk and exit"), {FDISK_DISKLABEL_DOS | FDISK_DISKLABEL_SUN | FDISK_DISKLABEL_SGI | FDISK_DISKLABEL_GPT, FDISK_DISKLABEL_DOS | FDISK_DISKLABEL_SUN | FDISK_DISKLABEL_SGI}}, - {'x', N_("extra functionality (experts only)"), {FDISK_DISKLABEL_GPT | FDISK_DISKLABEL_DOS | FDISK_DISKLABEL_SUN | FDISK_DISKLABEL_SGI, 0}}, -#if !defined (__alpha__) - {'x', N_("link BSD partition to non-BSD partition"), {FDISK_DISKLABEL_OSF, 0}}, -#endif - {'y', N_("change number of physical cylinders"), {0, FDISK_DISKLABEL_SUN}}, -}; - - sector_t get_nr_sects(struct partition *p) { return read4_little_endian(p->size4); @@ -175,20 +118,6 @@ get_part_table(int i) { return ptes[i].part_table; } -void print_menu(struct fdisk_context *cxt, enum menutype menu) -{ - size_t i; - int id; - - puts(_("Command action")); - - id = cxt && cxt->label ? cxt->label->id : FDISK_DISKLABEL_ANY; - - for (i = 0; i < ARRAY_SIZE(menulist); i++) - if (menulist[i].label[menu] & id) - printf(" %c %s\n", menulist[i].command, menulist[i].description); -} - void list_partition_types(struct fdisk_context *cxt) { struct fdisk_parttype *types; @@ -886,7 +815,8 @@ expert_command_prompt(struct fdisk_context *cxt) fdisk_sun_set_pcylcount(cxt); break; default: - print_menu(cxt, EXPERT_MENU); + print_fdisk_menu(cxt); + break; } } } @@ -1058,7 +988,7 @@ static void command_prompt(struct fdisk_context *cxt) list_partition_types(cxt); break; case 'm': - print_menu(cxt, MAIN_MENU); + print_fdisk_menu(cxt); break; case 'n': new_partition(cxt); @@ -1091,7 +1021,7 @@ static void command_prompt(struct fdisk_context *cxt) break; default: unknown_command(c); - print_menu(cxt, MAIN_MENU); + print_fdisk_menu(cxt); } } } diff --git a/fdisks/fdisk.h b/fdisks/fdisk.h index 45d86c94a..c44dd768f 100644 --- a/fdisks/fdisk.h +++ b/fdisks/fdisk.h @@ -67,6 +67,8 @@ enum failure { }; +extern int print_fdisk_menu(struct fdisk_context *cxt); + extern int ask_callback(struct fdisk_context *cxt, struct fdisk_ask *ask, void *data __attribute__((__unused__))); diff --git a/fdisks/fdiskbsdlabel.c b/fdisks/fdiskbsdlabel.c index baee4ef2c..eaf96dbeb 100644 --- a/fdisks/fdiskbsdlabel.c +++ b/fdisks/fdiskbsdlabel.c @@ -333,7 +333,7 @@ bsd_command_prompt (struct fdisk_context *cxt) break; #endif default: - print_menu(cxt, MAIN_MENU); + print_fdisk_menu(cxt); break; } }