* [PATCH 1/5] fdisk: print the welcome message when OSF/1 disklabel is detected @ 2011-11-11 10:12 Francesco Cosoleto 2011-11-11 10:12 ` [PATCH 2/5] fdisk: rename bselect, xselect functions Francesco Cosoleto ` (4 more replies) 0 siblings, 5 replies; 9+ messages in thread From: Francesco Cosoleto @ 2011-11-11 10:12 UTC (permalink / raw) To: util-linux; +Cc: Francesco Cosoleto Signed-off-by: Francesco Cosoleto <cosoleto@gmail.com> --- fdisk/fdisk.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) diff --git a/fdisk/fdisk.c b/fdisk/fdisk.c index 249de71..135d118 100644 --- a/fdisk/fdisk.c +++ b/fdisk/fdisk.c @@ -3079,7 +3079,12 @@ main(int argc, char **argv) { gpt_warning(disk_device); get_boot(fdisk); + fprintf(stderr, _("Welcome to fdisk (%s).\n\n" + "Changes will remain in memory only, until you decide to write them.\n" + "Be careful before using the write command.\n"), PACKAGE_STRING); + if (disklabel == OSF_LABEL) { + putchar('\n'); /* OSF label, and no DOS label */ printf(_("Detected an OSF/1 disklabel on %s, entering " "disklabel mode.\n"), @@ -3089,10 +3094,6 @@ main(int argc, char **argv) { disklabel = DOS_LABEL; } - fprintf(stderr, _("Welcome to fdisk (%s).\n\n" - "Changes will remain in memory only, until you decide to write them.\n" - "Be careful before using the write command.\n"), PACKAGE_STRING); - while (1) { putchar('\n'); c = tolower(read_char(_("Command (m for help): "))); -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/5] fdisk: rename bselect, xselect functions 2011-11-11 10:12 [PATCH 1/5] fdisk: print the welcome message when OSF/1 disklabel is detected Francesco Cosoleto @ 2011-11-11 10:12 ` Francesco Cosoleto 2011-11-11 10:12 ` [PATCH 3/5] fdisk: move command prompt code to a separate function Francesco Cosoleto ` (3 subsequent siblings) 4 siblings, 0 replies; 9+ messages in thread From: Francesco Cosoleto @ 2011-11-11 10:12 UTC (permalink / raw) To: util-linux; +Cc: Francesco Cosoleto Signed-off-by: Francesco Cosoleto <cosoleto@gmail.com> --- fdisk/fdisk.c | 9 +++++---- fdisk/fdisk.h | 2 +- fdisk/fdiskbsdlabel.c | 3 ++- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/fdisk/fdisk.c b/fdisk/fdisk.c index 135d118..7d1bd19 100644 --- a/fdisk/fdisk.c +++ b/fdisk/fdisk.c @@ -2735,7 +2735,8 @@ move_begin(int i) { } static void -xselect(void) { +expert_command_prompt(void) +{ char c; while(1) { @@ -3089,7 +3090,7 @@ main(int argc, char **argv) { printf(_("Detected an OSF/1 disklabel on %s, entering " "disklabel mode.\n"), disk_device); - bselect(); + bsd_command_prompt(); /* If we return we may want to make an empty DOS label? */ disklabel = DOS_LABEL; } @@ -3120,7 +3121,7 @@ main(int argc, char **argv) { else sgi_set_bootfile(line_ptr); } else - bselect(); + bsd_command_prompt(); break; case 'c': if (disklabel == DOS_LABEL) @@ -3192,7 +3193,7 @@ main(int argc, char **argv) { _("\n\tSorry, no experts menu for SGI " "partition tables available.\n\n")); } else - xselect(); + expert_command_prompt(); break; default: unknown_command(c); diff --git a/fdisk/fdisk.h b/fdisk/fdisk.h index e289043..0bc1289 100644 --- a/fdisk/fdisk.h +++ b/fdisk/fdisk.h @@ -107,7 +107,7 @@ enum labeltype { extern enum labeltype disklabel; /* prototypes for fdiskbsdlabel.c */ -extern void bselect(void); +extern void bsd_command_prompt(void); extern int check_osf_label(void); extern int btrydev(char * dev); extern void xbsd_print_disklabel(int); diff --git a/fdisk/fdiskbsdlabel.c b/fdisk/fdiskbsdlabel.c index aa27bad..68d481c 100644 --- a/fdisk/fdiskbsdlabel.c +++ b/fdisk/fdiskbsdlabel.c @@ -160,7 +160,8 @@ is_bsd_partition_type(int type) { #endif void -bselect (void) { +bsd_command_prompt (void) +{ #if !defined (__alpha__) int t, ss; struct partition *p; -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/5] fdisk: move command prompt code to a separate function 2011-11-11 10:12 [PATCH 1/5] fdisk: print the welcome message when OSF/1 disklabel is detected Francesco Cosoleto 2011-11-11 10:12 ` [PATCH 2/5] fdisk: rename bselect, xselect functions Francesco Cosoleto @ 2011-11-11 10:12 ` Francesco Cosoleto 2011-11-11 10:12 ` [PATCH 4/5] fdisk: rewrite print menu system Francesco Cosoleto ` (2 subsequent siblings) 4 siblings, 0 replies; 9+ messages in thread From: Francesco Cosoleto @ 2011-11-11 10:12 UTC (permalink / raw) To: util-linux; +Cc: Francesco Cosoleto Signed-off-by: Francesco Cosoleto <cosoleto@gmail.com> --- fdisk/fdisk.c | 244 +++++++++++++++++++++++++++++---------------------------- 1 files changed, 125 insertions(+), 119 deletions(-) diff --git a/fdisk/fdisk.c b/fdisk/fdisk.c index 7d1bd19..2a0e09c 100644 --- a/fdisk/fdisk.c +++ b/fdisk/fdisk.c @@ -2946,7 +2946,131 @@ unknown_command(int c) { printf(_("%c: unknown command\n"), c); } +static void command_prompt(void) +{ + int c, j; + + fprintf(stderr, _("Welcome to fdisk (%s).\n\n" + "Changes will remain in memory only, until you decide to write them.\n" + "Be careful before using the write command.\n"), PACKAGE_STRING); + if (disklabel == OSF_LABEL) { + putchar('\n'); + /* OSF label, and no DOS label */ + printf(_("Detected an OSF/1 disklabel on %s, entering " + "disklabel mode.\n"), + disk_device); + bsd_command_prompt(); + /* If we return we may want to make an empty DOS label? */ + disklabel = DOS_LABEL; + } + + while (1) { + putchar('\n'); + c = tolower(read_char(_("Command (m for help): "))); + switch (c) { + case 'a': + if (disklabel == DOS_LABEL) + toggle_active(get_partition(1, partitions)); + else if (disklabel == SUN_LABEL) + toggle_sunflags(get_partition(1, partitions), + SUN_FLAG_UNMNT); + else if (disklabel == SGI_LABEL) + sgi_set_bootpartition( + get_partition(1, partitions)); + else + unknown_command(c); + break; + case 'b': + if (disklabel == SGI_LABEL) { + printf(_("\nThe current boot file is: %s\n"), + sgi_get_bootfile()); + if (read_chars(_("Please enter the name of the " + "new boot file: ")) == '\n') + printf(_("Boot file unchanged\n")); + else + sgi_set_bootfile(line_ptr); + } else + bsd_command_prompt(); + break; + case 'c': + if (disklabel == DOS_LABEL) + toggle_dos_compatibility_flag(); + else if (disklabel == SUN_LABEL) + toggle_sunflags(get_partition(1, partitions), + SUN_FLAG_RONLY); + else if (disklabel == SGI_LABEL) + sgi_set_swappartition( + get_partition(1, partitions)); + else + unknown_command(c); + break; + case 'd': + /* If sgi_label then don't use get_existing_partition, + let the user select a partition, since + get_existing_partition() only works for Linux-like + partition tables */ + if (disklabel != SGI_LABEL) { + j = get_existing_partition(1, partitions); + } else { + j = get_partition(1, partitions); + } + if (j >= 0) + delete_partition(j); + break; + case 'i': + if (disklabel == SGI_LABEL) + create_sgiinfo(); + else + unknown_command(c); + case 'l': + list_types(get_sys_types()); + break; + case 'm': + menu(); + break; + case 'n': + new_partition(); + break; + case 'o': + create_doslabel(); + break; + case 'p': + list_table(0); + break; + case 'q': + close(fd); + printf("\n"); + exit(0); + case 's': + create_sunlabel(); + break; + case 't': + change_sysid(); + break; + case 'u': + change_units(); + break; + case 'v': + verify(); + break; + case 'w': + write_table(); /* does not return */ + break; + case 'x': + if (disklabel == SGI_LABEL) { + fprintf(stderr, + _("\n\tSorry, no experts menu for SGI " + "partition tables available.\n\n")); + } else + expert_command_prompt(); + break; + default: + unknown_command(c); + menu(); + } + } +} int main(int argc, char **argv) { @@ -3080,125 +3204,7 @@ main(int argc, char **argv) { gpt_warning(disk_device); get_boot(fdisk); - fprintf(stderr, _("Welcome to fdisk (%s).\n\n" - "Changes will remain in memory only, until you decide to write them.\n" - "Be careful before using the write command.\n"), PACKAGE_STRING); + command_prompt(); - if (disklabel == OSF_LABEL) { - putchar('\n'); - /* OSF label, and no DOS label */ - printf(_("Detected an OSF/1 disklabel on %s, entering " - "disklabel mode.\n"), - disk_device); - bsd_command_prompt(); - /* If we return we may want to make an empty DOS label? */ - disklabel = DOS_LABEL; - } - - while (1) { - putchar('\n'); - c = tolower(read_char(_("Command (m for help): "))); - switch (c) { - case 'a': - if (disklabel == DOS_LABEL) - toggle_active(get_partition(1, partitions)); - else if (disklabel == SUN_LABEL) - toggle_sunflags(get_partition(1, partitions), - SUN_FLAG_UNMNT); - else if (disklabel == SGI_LABEL) - sgi_set_bootpartition( - get_partition(1, partitions)); - else - unknown_command(c); - break; - case 'b': - if (disklabel == SGI_LABEL) { - printf(_("\nThe current boot file is: %s\n"), - sgi_get_bootfile()); - if (read_chars(_("Please enter the name of the " - "new boot file: ")) == '\n') - printf(_("Boot file unchanged\n")); - else - sgi_set_bootfile(line_ptr); - } else - bsd_command_prompt(); - break; - case 'c': - if (disklabel == DOS_LABEL) - toggle_dos_compatibility_flag(); - else if (disklabel == SUN_LABEL) - toggle_sunflags(get_partition(1, partitions), - SUN_FLAG_RONLY); - else if (disklabel == SGI_LABEL) - sgi_set_swappartition( - get_partition(1, partitions)); - else - unknown_command(c); - break; - case 'd': - /* If sgi_label then don't use get_existing_partition, - let the user select a partition, since - get_existing_partition() only works for Linux-like - partition tables */ - if (disklabel != SGI_LABEL) { - j = get_existing_partition(1, partitions); - } else { - j = get_partition(1, partitions); - } - if (j >= 0) - delete_partition(j); - break; - case 'i': - if (disklabel == SGI_LABEL) - create_sgiinfo(); - else - unknown_command(c); - case 'l': - list_types(get_sys_types()); - break; - case 'm': - menu(); - break; - case 'n': - new_partition(); - break; - case 'o': - create_doslabel(); - break; - case 'p': - list_table(0); - break; - case 'q': - close(fd); - printf("\n"); - exit(0); - case 's': - create_sunlabel(); - break; - case 't': - change_sysid(); - break; - case 'u': - change_units(); - break; - case 'v': - verify(); - break; - case 'w': - write_table(); /* does not return */ - break; - case 'x': - if (disklabel == SGI_LABEL) { - fprintf(stderr, - _("\n\tSorry, no experts menu for SGI " - "partition tables available.\n\n")); - } else - expert_command_prompt(); - break; - default: - unknown_command(c); - menu(); - } - } return 0; } -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 4/5] fdisk: rewrite print menu system 2011-11-11 10:12 [PATCH 1/5] fdisk: print the welcome message when OSF/1 disklabel is detected Francesco Cosoleto 2011-11-11 10:12 ` [PATCH 2/5] fdisk: rename bselect, xselect functions Francesco Cosoleto 2011-11-11 10:12 ` [PATCH 3/5] fdisk: move command prompt code to a separate function Francesco Cosoleto @ 2011-11-11 10:12 ` Francesco Cosoleto 2011-11-11 11:40 ` Karel Zak 2011-11-11 10:12 ` [PATCH 5/5] fdisk: enable expert menu with SGI label Francesco Cosoleto 2011-11-14 13:42 ` [PATCH 1/5] fdisk: print the welcome message when OSF/1 disklabel is detected Karel Zak 4 siblings, 1 reply; 9+ messages in thread From: Francesco Cosoleto @ 2011-11-11 10:12 UTC (permalink / raw) To: util-linux; +Cc: Francesco Cosoleto DOS and SGI label menus are unchanged, SUN label menu is only an alphabetic order fix. BSD label command descriptions changed slightly to use a common form. Signed-off-by: Francesco Cosoleto <cosoleto@gmail.com> --- fdisk/fdisk.c | 205 ++++++++++++++++--------------------------------- fdisk/fdisk.h | 20 ++++-- fdisk/fdiskbsdlabel.c | 23 +----- 3 files changed, 81 insertions(+), 167 deletions(-) diff --git a/fdisk/fdisk.c b/fdisk/fdisk.c index 2a0e09c..934d458 100644 --- a/fdisk/fdisk.c +++ b/fdisk/fdisk.c @@ -77,6 +77,60 @@ static void delete_partition(int i); s |= (sector >> 2) & 0xc0; \ } +/* menu list description */ + +struct menulist_descr { + char command; /* command key */ + char *description; /* command description */ + enum labeltype label[2]; /* disklabel types associated with main and expert menu */ +}; + +static const struct menulist_descr menulist[] = { + {'a', N_("toggle a bootable flag"), {DOS_LABEL, 0}}, + {'a', N_("toggle a read only flag"), {SUN_LABEL, 0}}, + {'a', N_("select bootable partition"), {SGI_LABEL, 0}}, + {'a', N_("change number of alternate cylinders"), {0, SUN_LABEL}}, + {'b', N_("edit bsd disklabel"), {DOS_LABEL | SUN_LABEL, 0}}, + {'b', N_("edit bootfile entry"), {SGI_LABEL, 0}}, + {'b', N_("move beginning of data in a partition"), {0, DOS_LABEL}}, + {'c', N_("toggle the dos compatibility flag"), {DOS_LABEL, 0}}, + {'c', N_("toggle the mountable flag"), {SUN_LABEL, 0}}, + {'c', N_("select sgi swap partition"), {SGI_LABEL, 0}}, + {'c', N_("change number of cylinders"), {0, DOS_LABEL | SUN_LABEL}}, + {'d', N_("delete a partition"), {DOS_LABEL | SUN_LABEL | SGI_LABEL | OSF_LABEL, 0}}, + {'d', N_("print the raw data in the partition table"), {0, ANY_LABEL}}, + {'e', N_("change number of extra sectors per cylinder"), {0, SUN_LABEL}}, + {'e', N_("list extended partitions"), {0, DOS_LABEL}}, + {'e', N_("edit drive data"), {OSF_LABEL, 0}}, + {'f', N_("fix partition order"), {0, DOS_LABEL}}, + {'g', N_("create an IRIX (SGI) partition table"), {0, DOS_LABEL | SGI_LABEL}}, + {'h', N_("change number of heads"), {0, DOS_LABEL | SUN_LABEL}}, + {'i', N_("change interleave factor"), {0, SUN_LABEL}}, + {'i', N_("change the disk identifier"), {0, DOS_LABEL}}, + {'i', N_("install bootstrap"), {OSF_LABEL, 0}}, + {'l', N_("list known partition types"), {DOS_LABEL | SUN_LABEL | SGI_LABEL | OSF_LABEL, 0}}, + {'m', N_("print this menu"), {ANY_LABEL, ANY_LABEL}}, + {'n', N_("add a new partition"), {DOS_LABEL | SUN_LABEL | SGI_LABEL | OSF_LABEL, 0}}, + {'o', N_("create a new empty DOS partition table"), {~OSF_LABEL, 0}}, + {'o', N_("change rotation speed (rpm)"), {0, SUN_LABEL}}, + {'p', N_("print the partition table"), {DOS_LABEL | SUN_LABEL | SGI_LABEL | OSF_LABEL, DOS_LABEL | SUN_LABEL}}, + {'q', N_("quit without saving changes"), {ANY_LABEL, ANY_LABEL}}, + {'r', N_("return to main menu"), {OSF_LABEL, DOS_LABEL | SUN_LABEL | SGI_LABEL | OSF_LABEL}}, + {'s', N_("create a new empty Sun disklabel"), {~OSF_LABEL, 0}}, + {'s', N_("change number of sectors/track"), {0, DOS_LABEL | SUN_LABEL}}, + {'s', N_("show complete disklabel"), {OSF_LABEL, 0}}, + {'t', N_("change a partition's system id"), {DOS_LABEL | SUN_LABEL | SGI_LABEL | OSF_LABEL, 0}}, + {'u', N_("change display/entry units"), {DOS_LABEL | SUN_LABEL | SGI_LABEL | OSF_LABEL, 0}}, + {'v', N_("verify the partition table"), {DOS_LABEL | SUN_LABEL | SGI_LABEL, DOS_LABEL | SUN_LABEL | SGI_LABEL}}, + {'w', N_("write table to disk and exit"), {DOS_LABEL | SUN_LABEL | SGI_LABEL, DOS_LABEL | SUN_LABEL | SGI_LABEL}}, + {'w', N_("write disklabel to disk"), {OSF_LABEL, 0}}, + {'x', N_("extra functionality (experts only)"), {DOS_LABEL | SUN_LABEL, 0}}, +#if !defined (__alpha__) + {'x', N_("link BSD partition to non-BSD partition"), {OSF_LABEL, 0}}, +#endif + {'y', N_("change number of physical cylinders"), {0, SUN_LABEL}}, +}; + /* A valid partition table sector ends in 0x55 0xaa */ static unsigned int part_table_flag(unsigned char *b) { @@ -374,143 +428,16 @@ is_dos_partition(int t) { t == 0xc1 || t == 0xc4 || t == 0xc6); } -static void -menu(void) { - if (disklabel == SUN_LABEL) { - puts(_("Command action")); - puts(_(" a toggle a read only flag")); /* sun */ - puts(_(" b edit bsd disklabel")); - puts(_(" c toggle the mountable flag")); /* sun */ - puts(_(" d delete a partition")); - puts(_(" l list known partition types")); - puts(_(" m print this menu")); - puts(_(" n add a new partition")); - puts(_(" o create a new empty DOS partition table")); - puts(_(" p print the partition table")); - puts(_(" q quit without saving changes")); - puts(_(" s create a new empty Sun disklabel")); /* sun */ - puts(_(" t change a partition's system id")); - puts(_(" u change display/entry units")); - puts(_(" v verify the partition table")); - puts(_(" w write table to disk and exit")); - puts(_(" x extra functionality (experts only)")); - } - else if (disklabel == SGI_LABEL) { - puts(_("Command action")); - puts(_(" a select bootable partition")); /* sgi flavour */ - puts(_(" b edit bootfile entry")); /* sgi */ - puts(_(" c select sgi swap partition")); /* sgi flavour */ - puts(_(" d delete a partition")); - puts(_(" l list known partition types")); - puts(_(" m print this menu")); - puts(_(" n add a new partition")); - puts(_(" o create a new empty DOS partition table")); - puts(_(" p print the partition table")); - puts(_(" q quit without saving changes")); - puts(_(" s create a new empty Sun disklabel")); /* sun */ - puts(_(" t change a partition's system id")); - puts(_(" u change display/entry units")); - puts(_(" v verify the partition table")); - puts(_(" w write table to disk and exit")); - } - else if (disklabel == AIX_LABEL || disklabel == MAC_LABEL) { - puts(_("Command action")); - puts(_(" m print this menu")); - puts(_(" o create a new empty DOS partition table")); - puts(_(" q quit without saving changes")); - puts(_(" s create a new empty Sun disklabel")); /* sun */ - } - else { - puts(_("Command action")); - puts(_(" a toggle a bootable flag")); - puts(_(" b edit bsd disklabel")); - puts(_(" c toggle the dos compatibility flag")); - puts(_(" d delete a partition")); - puts(_(" l list known partition types")); - puts(_(" m print this menu")); - puts(_(" n add a new partition")); - puts(_(" o create a new empty DOS partition table")); - puts(_(" p print the partition table")); - puts(_(" q quit without saving changes")); - puts(_(" s create a new empty Sun disklabel")); /* sun */ - puts(_(" t change a partition's system id")); - puts(_(" u change display/entry units")); - puts(_(" v verify the partition table")); - puts(_(" w write table to disk and exit")); - puts(_(" x extra functionality (experts only)")); - } -} +void print_menu(enum menutype menu) +{ + size_t i; -static void -xmenu(void) { - if (disklabel == SUN_LABEL) { - puts(_("Command action")); - puts(_(" a change number of alternate cylinders")); /*sun*/ - puts(_(" c change number of cylinders")); - puts(_(" d print the raw data in the partition table")); - puts(_(" e change number of extra sectors per cylinder"));/*sun*/ - puts(_(" h change number of heads")); - puts(_(" i change interleave factor")); /*sun*/ - puts(_(" o change rotation speed (rpm)")); /*sun*/ - puts(_(" m print this menu")); - puts(_(" p print the partition table")); - puts(_(" q quit without saving changes")); - puts(_(" r return to main menu")); - puts(_(" s change number of sectors/track")); - puts(_(" v verify the partition table")); - puts(_(" w write table to disk and exit")); - puts(_(" y change number of physical cylinders")); /*sun*/ - } - else if (disklabel == SGI_LABEL) { - puts(_("Command action")); - puts(_(" b move beginning of data in a partition")); /* !sun */ - puts(_(" c change number of cylinders")); - puts(_(" d print the raw data in the partition table")); - puts(_(" e list extended partitions")); /* !sun */ - puts(_(" g create an IRIX (SGI) partition table"));/* sgi */ - puts(_(" h change number of heads")); - puts(_(" m print this menu")); - puts(_(" p print the partition table")); - puts(_(" q quit without saving changes")); - puts(_(" r return to main menu")); - puts(_(" s change number of sectors/track")); - puts(_(" v verify the partition table")); - puts(_(" w write table to disk and exit")); - } - else if (disklabel == AIX_LABEL || disklabel == MAC_LABEL) { - puts(_("Command action")); - puts(_(" b move beginning of data in a partition")); /* !sun */ - puts(_(" c change number of cylinders")); - puts(_(" d print the raw data in the partition table")); - puts(_(" e list extended partitions")); /* !sun */ - puts(_(" g create an IRIX (SGI) partition table"));/* sgi */ - puts(_(" h change number of heads")); - puts(_(" m print this menu")); - puts(_(" p print the partition table")); - puts(_(" q quit without saving changes")); - puts(_(" r return to main menu")); - puts(_(" s change number of sectors/track")); - puts(_(" v verify the partition table")); - puts(_(" w write table to disk and exit")); - } - else { - puts(_("Command action")); - puts(_(" b move beginning of data in a partition")); /* !sun */ - puts(_(" c change number of cylinders")); - puts(_(" d print the raw data in the partition table")); - puts(_(" e list extended partitions")); /* !sun */ - puts(_(" f fix partition order")); /* !sun, !aix, !sgi */ - puts(_(" g create an IRIX (SGI) partition table"));/* sgi */ - puts(_(" h change number of heads")); - puts(_(" i change the disk identifier")); /* dos only */ - puts(_(" m print this menu")); - puts(_(" p print the partition table")); - puts(_(" q quit without saving changes")); - puts(_(" r return to main menu")); - puts(_(" s change number of sectors/track")); - puts(_(" v verify the partition table")); - puts(_(" w write table to disk and exit")); - } + puts(_("Command action")); + + for (i = 0; i < ARRAY_SIZE(menulist); i++) + if ((menu != BSD_MENU && menulist[i].label[menu] & disklabel) + || (menu == BSD_MENU && menulist[i].label[MAIN_MENU] & OSF_LABEL)) + printf(" %c %s\n", menulist[i].command, menulist[i].description); } static int @@ -2825,7 +2752,7 @@ expert_command_prompt(void) sun_set_pcylcount(); break; default: - xmenu(); + print_menu(EXPERT_MENU); } } } @@ -3027,7 +2954,7 @@ static void command_prompt(void) list_types(get_sys_types()); break; case 'm': - menu(); + print_menu(MAIN_MENU); break; case 'n': new_partition(); @@ -3067,7 +2994,7 @@ static void command_prompt(void) break; default: unknown_command(c); - menu(); + print_menu(MAIN_MENU); } } } diff --git a/fdisk/fdisk.h b/fdisk/fdisk.h index 0bc1289..2d80096 100644 --- a/fdisk/fdisk.h +++ b/fdisk/fdisk.h @@ -45,6 +45,12 @@ struct partition { unsigned char size4[4]; /* nr of sectors in partition */ } PACKED; +enum menutype { + MAIN_MENU, + EXPERT_MENU, + BSD_MENU +}; + enum failure {ioctl_error, unable_to_open, unable_to_read, unable_to_seek, unable_to_write}; @@ -75,6 +81,7 @@ extern struct partition *get_part_table(int); extern int valid_part_table_flag(unsigned char *b); extern unsigned int read_int(unsigned int low, unsigned int dflt, unsigned int high, unsigned int base, char *mesg); +extern void print_menu(enum menutype); extern void print_partition_size(int num, unsigned long long start, unsigned long long stop, int sysid); extern unsigned char *MBRbuffer; @@ -96,12 +103,13 @@ extern unsigned long long get_start_sect(struct partition *p); extern unsigned long long get_nr_sects(struct partition *p); enum labeltype { - DOS_LABEL, - SUN_LABEL, - SGI_LABEL, - AIX_LABEL, - OSF_LABEL, - MAC_LABEL + DOS_LABEL = 1, + SUN_LABEL = 2, + SGI_LABEL = 4, + AIX_LABEL = 8, + OSF_LABEL = 16, + MAC_LABEL = 32, + ANY_LABEL = -1 }; extern enum labeltype disklabel; diff --git a/fdisk/fdiskbsdlabel.c b/fdisk/fdiskbsdlabel.c index 68d481c..1bebca2 100644 --- a/fdisk/fdiskbsdlabel.c +++ b/fdisk/fdiskbsdlabel.c @@ -123,27 +123,6 @@ btrydev (char * dev) { return 0; } -static void -bmenu (void) { - puts (_("Command action")); - puts (_(" d delete a BSD partition")); - puts (_(" e edit drive data")); - puts (_(" i install bootstrap")); - puts (_(" l list known filesystem types")); - puts (_(" m print this menu")); - puts (_(" n add a new BSD partition")); - puts (_(" p print BSD partition table")); - puts (_(" q quit without saving changes")); - puts (_(" r return to main menu")); - puts (_(" s show complete disklabel")); - puts (_(" t change a partition's filesystem id")); - puts (_(" u change units (cylinders/sectors)")); - puts (_(" w write disklabel to disk")); -#if !defined (__alpha__) - puts (_(" x link BSD partition to non-BSD partition")); -#endif -} - #if !defined (__alpha__) static int hidden(int type) { @@ -243,7 +222,7 @@ bsd_command_prompt (void) break; #endif default: - bmenu (); + print_menu(BSD_MENU); break; } } -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 4/5] fdisk: rewrite print menu system 2011-11-11 10:12 ` [PATCH 4/5] fdisk: rewrite print menu system Francesco Cosoleto @ 2011-11-11 11:40 ` Karel Zak 2011-11-11 16:49 ` Francesco Cosoleto 0 siblings, 1 reply; 9+ messages in thread From: Karel Zak @ 2011-11-11 11:40 UTC (permalink / raw) To: Francesco Cosoleto; +Cc: util-linux On Fri, Nov 11, 2011 at 11:12:10AM +0100, Francesco Cosoleto wrote: > + for (i = 0; i < ARRAY_SIZE(menulist); i++) > + if ((menu != BSD_MENU && menulist[i].label[menu] & disklabel) > + || (menu == BSD_MENU && menulist[i].label[MAIN_MENU] & OSF_LABEL)) Why we need BSD_MENU and this if()? Why we cannot use print_menu(MAIN_MENU) in BSD code? Karel -- Karel Zak <kzak@redhat.com> http://karelzak.blogspot.com ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 4/5] fdisk: rewrite print menu system 2011-11-11 11:40 ` Karel Zak @ 2011-11-11 16:49 ` Francesco Cosoleto 0 siblings, 0 replies; 9+ messages in thread From: Francesco Cosoleto @ 2011-11-11 16:49 UTC (permalink / raw) To: Karel Zak; +Cc: util-linux [-- Attachment #1: Type: text/plain, Size: 239 bytes --] 2011/11/11 Karel Zak <kzak@redhat.com>: > Why we need BSD_MENU and this if()? Why we cannot use > print_menu(MAIN_MENU) in BSD code? Changed. I assume "edit bsd disklabel" capability in SUN label mode is a mistake. Francesco [-- Attachment #2: diff.txt --] [-- Type: text/plain, Size: 1963 bytes --] diff --git a/fdisk/fdisk.c b/fdisk/fdisk.c index 934d458..b83cd1f 100644 --- a/fdisk/fdisk.c +++ b/fdisk/fdisk.c @@ -90,7 +90,7 @@ static const struct menulist_descr menulist[] = { {'a', N_("toggle a read only flag"), {SUN_LABEL, 0}}, {'a', N_("select bootable partition"), {SGI_LABEL, 0}}, {'a', N_("change number of alternate cylinders"), {0, SUN_LABEL}}, - {'b', N_("edit bsd disklabel"), {DOS_LABEL | SUN_LABEL, 0}}, + {'b', N_("edit bsd disklabel"), {DOS_LABEL, 0}}, {'b', N_("edit bootfile entry"), {SGI_LABEL, 0}}, {'b', N_("move beginning of data in a partition"), {0, DOS_LABEL}}, {'c', N_("toggle the dos compatibility flag"), {DOS_LABEL, 0}}, @@ -435,8 +435,7 @@ void print_menu(enum menutype menu) puts(_("Command action")); for (i = 0; i < ARRAY_SIZE(menulist); i++) - if ((menu != BSD_MENU && menulist[i].label[menu] & disklabel) - || (menu == BSD_MENU && menulist[i].label[MAIN_MENU] & OSF_LABEL)) + if (menulist[i].label[menu] & disklabel) printf(" %c %s\n", menulist[i].command, menulist[i].description); } @@ -2917,8 +2916,12 @@ static void command_prompt(void) printf(_("Boot file unchanged\n")); else sgi_set_bootfile(line_ptr); - } else + } else if (disklabel == DOS_LABEL) { + disklabel = OSF_LABEL; bsd_command_prompt(); + disklabel = DOS_LABEL; + } else + unknown_command(c); break; case 'c': if (disklabel == DOS_LABEL) diff --git a/fdisk/fdisk.h b/fdisk/fdisk.h index 2d80096..81ff5a2 100644 --- a/fdisk/fdisk.h +++ b/fdisk/fdisk.h @@ -48,7 +48,6 @@ struct partition { enum menutype { MAIN_MENU, EXPERT_MENU, - BSD_MENU }; enum failure {ioctl_error, diff --git a/fdisk/fdiskbsdlabel.c b/fdisk/fdiskbsdlabel.c index 1bebca2..9dfc95a 100644 --- a/fdisk/fdiskbsdlabel.c +++ b/fdisk/fdiskbsdlabel.c @@ -222,7 +222,7 @@ bsd_command_prompt (void) break; #endif default: - print_menu(BSD_MENU); + print_menu(MAIN_MENU); break; } } [-- Attachment #3: 0004-fdisk-rewrite-print-menu-system.patch --] [-- Type: text/x-patch, Size: 14325 bytes --] From 01c9da56c02c60bb37c4882585187382be8edf50 Mon Sep 17 00:00:00 2001 From: Francesco Cosoleto <cosoleto@gmail.com> Date: Wed, 9 Nov 2011 19:04:12 +0100 Subject: [PATCH] fdisk: rewrite print menu system DOS and SGI label menus are unchanged. BSD label command descriptions change slightly to use a common form. This also removes an useless menu entry in SUN label menu to edit bsd disklabel. Signed-off-by: Francesco Cosoleto <cosoleto@gmail.com> --- fdisk/fdisk.c | 210 ++++++++++++++++-------------------------------- fdisk/fdisk.h | 19 +++-- fdisk/fdiskbsdlabel.c | 23 +----- 3 files changed, 84 insertions(+), 168 deletions(-) diff --git a/fdisk/fdisk.c b/fdisk/fdisk.c index 2a0e09c..b83cd1f 100644 --- a/fdisk/fdisk.c +++ b/fdisk/fdisk.c @@ -77,6 +77,60 @@ static void delete_partition(int i); s |= (sector >> 2) & 0xc0; \ } +/* menu list description */ + +struct menulist_descr { + char command; /* command key */ + char *description; /* command description */ + enum labeltype label[2]; /* disklabel types associated with main and expert menu */ +}; + +static const struct menulist_descr menulist[] = { + {'a', N_("toggle a bootable flag"), {DOS_LABEL, 0}}, + {'a', N_("toggle a read only flag"), {SUN_LABEL, 0}}, + {'a', N_("select bootable partition"), {SGI_LABEL, 0}}, + {'a', N_("change number of alternate cylinders"), {0, SUN_LABEL}}, + {'b', N_("edit bsd disklabel"), {DOS_LABEL, 0}}, + {'b', N_("edit bootfile entry"), {SGI_LABEL, 0}}, + {'b', N_("move beginning of data in a partition"), {0, DOS_LABEL}}, + {'c', N_("toggle the dos compatibility flag"), {DOS_LABEL, 0}}, + {'c', N_("toggle the mountable flag"), {SUN_LABEL, 0}}, + {'c', N_("select sgi swap partition"), {SGI_LABEL, 0}}, + {'c', N_("change number of cylinders"), {0, DOS_LABEL | SUN_LABEL}}, + {'d', N_("delete a partition"), {DOS_LABEL | SUN_LABEL | SGI_LABEL | OSF_LABEL, 0}}, + {'d', N_("print the raw data in the partition table"), {0, ANY_LABEL}}, + {'e', N_("change number of extra sectors per cylinder"), {0, SUN_LABEL}}, + {'e', N_("list extended partitions"), {0, DOS_LABEL}}, + {'e', N_("edit drive data"), {OSF_LABEL, 0}}, + {'f', N_("fix partition order"), {0, DOS_LABEL}}, + {'g', N_("create an IRIX (SGI) partition table"), {0, DOS_LABEL | SGI_LABEL}}, + {'h', N_("change number of heads"), {0, DOS_LABEL | SUN_LABEL}}, + {'i', N_("change interleave factor"), {0, SUN_LABEL}}, + {'i', N_("change the disk identifier"), {0, DOS_LABEL}}, + {'i', N_("install bootstrap"), {OSF_LABEL, 0}}, + {'l', N_("list known partition types"), {DOS_LABEL | SUN_LABEL | SGI_LABEL | OSF_LABEL, 0}}, + {'m', N_("print this menu"), {ANY_LABEL, ANY_LABEL}}, + {'n', N_("add a new partition"), {DOS_LABEL | SUN_LABEL | SGI_LABEL | OSF_LABEL, 0}}, + {'o', N_("create a new empty DOS partition table"), {~OSF_LABEL, 0}}, + {'o', N_("change rotation speed (rpm)"), {0, SUN_LABEL}}, + {'p', N_("print the partition table"), {DOS_LABEL | SUN_LABEL | SGI_LABEL | OSF_LABEL, DOS_LABEL | SUN_LABEL}}, + {'q', N_("quit without saving changes"), {ANY_LABEL, ANY_LABEL}}, + {'r', N_("return to main menu"), {OSF_LABEL, DOS_LABEL | SUN_LABEL | SGI_LABEL | OSF_LABEL}}, + {'s', N_("create a new empty Sun disklabel"), {~OSF_LABEL, 0}}, + {'s', N_("change number of sectors/track"), {0, DOS_LABEL | SUN_LABEL}}, + {'s', N_("show complete disklabel"), {OSF_LABEL, 0}}, + {'t', N_("change a partition's system id"), {DOS_LABEL | SUN_LABEL | SGI_LABEL | OSF_LABEL, 0}}, + {'u', N_("change display/entry units"), {DOS_LABEL | SUN_LABEL | SGI_LABEL | OSF_LABEL, 0}}, + {'v', N_("verify the partition table"), {DOS_LABEL | SUN_LABEL | SGI_LABEL, DOS_LABEL | SUN_LABEL | SGI_LABEL}}, + {'w', N_("write table to disk and exit"), {DOS_LABEL | SUN_LABEL | SGI_LABEL, DOS_LABEL | SUN_LABEL | SGI_LABEL}}, + {'w', N_("write disklabel to disk"), {OSF_LABEL, 0}}, + {'x', N_("extra functionality (experts only)"), {DOS_LABEL | SUN_LABEL, 0}}, +#if !defined (__alpha__) + {'x', N_("link BSD partition to non-BSD partition"), {OSF_LABEL, 0}}, +#endif + {'y', N_("change number of physical cylinders"), {0, SUN_LABEL}}, +}; + /* A valid partition table sector ends in 0x55 0xaa */ static unsigned int part_table_flag(unsigned char *b) { @@ -374,143 +428,15 @@ is_dos_partition(int t) { t == 0xc1 || t == 0xc4 || t == 0xc6); } -static void -menu(void) { - if (disklabel == SUN_LABEL) { - puts(_("Command action")); - puts(_(" a toggle a read only flag")); /* sun */ - puts(_(" b edit bsd disklabel")); - puts(_(" c toggle the mountable flag")); /* sun */ - puts(_(" d delete a partition")); - puts(_(" l list known partition types")); - puts(_(" m print this menu")); - puts(_(" n add a new partition")); - puts(_(" o create a new empty DOS partition table")); - puts(_(" p print the partition table")); - puts(_(" q quit without saving changes")); - puts(_(" s create a new empty Sun disklabel")); /* sun */ - puts(_(" t change a partition's system id")); - puts(_(" u change display/entry units")); - puts(_(" v verify the partition table")); - puts(_(" w write table to disk and exit")); - puts(_(" x extra functionality (experts only)")); - } - else if (disklabel == SGI_LABEL) { - puts(_("Command action")); - puts(_(" a select bootable partition")); /* sgi flavour */ - puts(_(" b edit bootfile entry")); /* sgi */ - puts(_(" c select sgi swap partition")); /* sgi flavour */ - puts(_(" d delete a partition")); - puts(_(" l list known partition types")); - puts(_(" m print this menu")); - puts(_(" n add a new partition")); - puts(_(" o create a new empty DOS partition table")); - puts(_(" p print the partition table")); - puts(_(" q quit without saving changes")); - puts(_(" s create a new empty Sun disklabel")); /* sun */ - puts(_(" t change a partition's system id")); - puts(_(" u change display/entry units")); - puts(_(" v verify the partition table")); - puts(_(" w write table to disk and exit")); - } - else if (disklabel == AIX_LABEL || disklabel == MAC_LABEL) { - puts(_("Command action")); - puts(_(" m print this menu")); - puts(_(" o create a new empty DOS partition table")); - puts(_(" q quit without saving changes")); - puts(_(" s create a new empty Sun disklabel")); /* sun */ - } - else { - puts(_("Command action")); - puts(_(" a toggle a bootable flag")); - puts(_(" b edit bsd disklabel")); - puts(_(" c toggle the dos compatibility flag")); - puts(_(" d delete a partition")); - puts(_(" l list known partition types")); - puts(_(" m print this menu")); - puts(_(" n add a new partition")); - puts(_(" o create a new empty DOS partition table")); - puts(_(" p print the partition table")); - puts(_(" q quit without saving changes")); - puts(_(" s create a new empty Sun disklabel")); /* sun */ - puts(_(" t change a partition's system id")); - puts(_(" u change display/entry units")); - puts(_(" v verify the partition table")); - puts(_(" w write table to disk and exit")); - puts(_(" x extra functionality (experts only)")); - } -} +void print_menu(enum menutype menu) +{ + size_t i; -static void -xmenu(void) { - if (disklabel == SUN_LABEL) { - puts(_("Command action")); - puts(_(" a change number of alternate cylinders")); /*sun*/ - puts(_(" c change number of cylinders")); - puts(_(" d print the raw data in the partition table")); - puts(_(" e change number of extra sectors per cylinder"));/*sun*/ - puts(_(" h change number of heads")); - puts(_(" i change interleave factor")); /*sun*/ - puts(_(" o change rotation speed (rpm)")); /*sun*/ - puts(_(" m print this menu")); - puts(_(" p print the partition table")); - puts(_(" q quit without saving changes")); - puts(_(" r return to main menu")); - puts(_(" s change number of sectors/track")); - puts(_(" v verify the partition table")); - puts(_(" w write table to disk and exit")); - puts(_(" y change number of physical cylinders")); /*sun*/ - } - else if (disklabel == SGI_LABEL) { - puts(_("Command action")); - puts(_(" b move beginning of data in a partition")); /* !sun */ - puts(_(" c change number of cylinders")); - puts(_(" d print the raw data in the partition table")); - puts(_(" e list extended partitions")); /* !sun */ - puts(_(" g create an IRIX (SGI) partition table"));/* sgi */ - puts(_(" h change number of heads")); - puts(_(" m print this menu")); - puts(_(" p print the partition table")); - puts(_(" q quit without saving changes")); - puts(_(" r return to main menu")); - puts(_(" s change number of sectors/track")); - puts(_(" v verify the partition table")); - puts(_(" w write table to disk and exit")); - } - else if (disklabel == AIX_LABEL || disklabel == MAC_LABEL) { - puts(_("Command action")); - puts(_(" b move beginning of data in a partition")); /* !sun */ - puts(_(" c change number of cylinders")); - puts(_(" d print the raw data in the partition table")); - puts(_(" e list extended partitions")); /* !sun */ - puts(_(" g create an IRIX (SGI) partition table"));/* sgi */ - puts(_(" h change number of heads")); - puts(_(" m print this menu")); - puts(_(" p print the partition table")); - puts(_(" q quit without saving changes")); - puts(_(" r return to main menu")); - puts(_(" s change number of sectors/track")); - puts(_(" v verify the partition table")); - puts(_(" w write table to disk and exit")); - } - else { - puts(_("Command action")); - puts(_(" b move beginning of data in a partition")); /* !sun */ - puts(_(" c change number of cylinders")); - puts(_(" d print the raw data in the partition table")); - puts(_(" e list extended partitions")); /* !sun */ - puts(_(" f fix partition order")); /* !sun, !aix, !sgi */ - puts(_(" g create an IRIX (SGI) partition table"));/* sgi */ - puts(_(" h change number of heads")); - puts(_(" i change the disk identifier")); /* dos only */ - puts(_(" m print this menu")); - puts(_(" p print the partition table")); - puts(_(" q quit without saving changes")); - puts(_(" r return to main menu")); - puts(_(" s change number of sectors/track")); - puts(_(" v verify the partition table")); - puts(_(" w write table to disk and exit")); - } + puts(_("Command action")); + + for (i = 0; i < ARRAY_SIZE(menulist); i++) + if (menulist[i].label[menu] & disklabel) + printf(" %c %s\n", menulist[i].command, menulist[i].description); } static int @@ -2825,7 +2751,7 @@ expert_command_prompt(void) sun_set_pcylcount(); break; default: - xmenu(); + print_menu(EXPERT_MENU); } } } @@ -2990,8 +2916,12 @@ static void command_prompt(void) printf(_("Boot file unchanged\n")); else sgi_set_bootfile(line_ptr); - } else + } else if (disklabel == DOS_LABEL) { + disklabel = OSF_LABEL; bsd_command_prompt(); + disklabel = DOS_LABEL; + } else + unknown_command(c); break; case 'c': if (disklabel == DOS_LABEL) @@ -3027,7 +2957,7 @@ static void command_prompt(void) list_types(get_sys_types()); break; case 'm': - menu(); + print_menu(MAIN_MENU); break; case 'n': new_partition(); @@ -3067,7 +2997,7 @@ static void command_prompt(void) break; default: unknown_command(c); - menu(); + print_menu(MAIN_MENU); } } } diff --git a/fdisk/fdisk.h b/fdisk/fdisk.h index 0bc1289..81ff5a2 100644 --- a/fdisk/fdisk.h +++ b/fdisk/fdisk.h @@ -45,6 +45,11 @@ struct partition { unsigned char size4[4]; /* nr of sectors in partition */ } PACKED; +enum menutype { + MAIN_MENU, + EXPERT_MENU, +}; + enum failure {ioctl_error, unable_to_open, unable_to_read, unable_to_seek, unable_to_write}; @@ -75,6 +80,7 @@ extern struct partition *get_part_table(int); extern int valid_part_table_flag(unsigned char *b); extern unsigned int read_int(unsigned int low, unsigned int dflt, unsigned int high, unsigned int base, char *mesg); +extern void print_menu(enum menutype); extern void print_partition_size(int num, unsigned long long start, unsigned long long stop, int sysid); extern unsigned char *MBRbuffer; @@ -96,12 +102,13 @@ extern unsigned long long get_start_sect(struct partition *p); extern unsigned long long get_nr_sects(struct partition *p); enum labeltype { - DOS_LABEL, - SUN_LABEL, - SGI_LABEL, - AIX_LABEL, - OSF_LABEL, - MAC_LABEL + DOS_LABEL = 1, + SUN_LABEL = 2, + SGI_LABEL = 4, + AIX_LABEL = 8, + OSF_LABEL = 16, + MAC_LABEL = 32, + ANY_LABEL = -1 }; extern enum labeltype disklabel; diff --git a/fdisk/fdiskbsdlabel.c b/fdisk/fdiskbsdlabel.c index 68d481c..9dfc95a 100644 --- a/fdisk/fdiskbsdlabel.c +++ b/fdisk/fdiskbsdlabel.c @@ -123,27 +123,6 @@ btrydev (char * dev) { return 0; } -static void -bmenu (void) { - puts (_("Command action")); - puts (_(" d delete a BSD partition")); - puts (_(" e edit drive data")); - puts (_(" i install bootstrap")); - puts (_(" l list known filesystem types")); - puts (_(" m print this menu")); - puts (_(" n add a new BSD partition")); - puts (_(" p print BSD partition table")); - puts (_(" q quit without saving changes")); - puts (_(" r return to main menu")); - puts (_(" s show complete disklabel")); - puts (_(" t change a partition's filesystem id")); - puts (_(" u change units (cylinders/sectors)")); - puts (_(" w write disklabel to disk")); -#if !defined (__alpha__) - puts (_(" x link BSD partition to non-BSD partition")); -#endif -} - #if !defined (__alpha__) static int hidden(int type) { @@ -243,7 +222,7 @@ bsd_command_prompt (void) break; #endif default: - bmenu (); + print_menu(MAIN_MENU); break; } } -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 5/5] fdisk: enable expert menu with SGI label 2011-11-11 10:12 [PATCH 1/5] fdisk: print the welcome message when OSF/1 disklabel is detected Francesco Cosoleto ` (2 preceding siblings ...) 2011-11-11 10:12 ` [PATCH 4/5] fdisk: rewrite print menu system Francesco Cosoleto @ 2011-11-11 10:12 ` Francesco Cosoleto 2011-11-14 13:42 ` [PATCH 1/5] fdisk: print the welcome message when OSF/1 disklabel is detected Karel Zak 4 siblings, 0 replies; 9+ messages in thread From: Francesco Cosoleto @ 2011-11-11 10:12 UTC (permalink / raw) To: util-linux; +Cc: Francesco Cosoleto This allows the creation of a new label if the disk already has an existing SGI disklabel without working around this problem such as creating a DOS disklabel or overwriting with zero the partition table (problem reported in 'Gentoo Linux/MIPS Handbook'). Signed-off-by: Francesco Cosoleto <cosoleto@gmail.com> --- fdisk/fdisk.c | 11 +++-------- 1 files changed, 3 insertions(+), 8 deletions(-) diff --git a/fdisk/fdisk.c b/fdisk/fdisk.c index 934d458..9ca3f2b 100644 --- a/fdisk/fdisk.c +++ b/fdisk/fdisk.c @@ -103,7 +103,7 @@ static const struct menulist_descr menulist[] = { {'e', N_("list extended partitions"), {0, DOS_LABEL}}, {'e', N_("edit drive data"), {OSF_LABEL, 0}}, {'f', N_("fix partition order"), {0, DOS_LABEL}}, - {'g', N_("create an IRIX (SGI) partition table"), {0, DOS_LABEL | SGI_LABEL}}, + {'g', N_("create an IRIX (SGI) partition table"), {0, ANY_LABEL}}, {'h', N_("change number of heads"), {0, DOS_LABEL | SUN_LABEL}}, {'i', N_("change interleave factor"), {0, SUN_LABEL}}, {'i', N_("change the disk identifier"), {0, DOS_LABEL}}, @@ -124,7 +124,7 @@ static const struct menulist_descr menulist[] = { {'v', N_("verify the partition table"), {DOS_LABEL | SUN_LABEL | SGI_LABEL, DOS_LABEL | SUN_LABEL | SGI_LABEL}}, {'w', N_("write table to disk and exit"), {DOS_LABEL | SUN_LABEL | SGI_LABEL, DOS_LABEL | SUN_LABEL | SGI_LABEL}}, {'w', N_("write disklabel to disk"), {OSF_LABEL, 0}}, - {'x', N_("extra functionality (experts only)"), {DOS_LABEL | SUN_LABEL, 0}}, + {'x', N_("extra functionality (experts only)"), {DOS_LABEL | SUN_LABEL | SGI_LABEL, 0}}, #if !defined (__alpha__) {'x', N_("link BSD partition to non-BSD partition"), {OSF_LABEL, 0}}, #endif @@ -2985,12 +2985,7 @@ static void command_prompt(void) write_table(); /* does not return */ break; case 'x': - if (disklabel == SGI_LABEL) { - fprintf(stderr, - _("\n\tSorry, no experts menu for SGI " - "partition tables available.\n\n")); - } else - expert_command_prompt(); + expert_command_prompt(); break; default: unknown_command(c); -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/5] fdisk: print the welcome message when OSF/1 disklabel is detected 2011-11-11 10:12 [PATCH 1/5] fdisk: print the welcome message when OSF/1 disklabel is detected Francesco Cosoleto ` (3 preceding siblings ...) 2011-11-11 10:12 ` [PATCH 5/5] fdisk: enable expert menu with SGI label Francesco Cosoleto @ 2011-11-14 13:42 ` Karel Zak 2011-11-14 16:03 ` Francesco Cosoleto 4 siblings, 1 reply; 9+ messages in thread From: Karel Zak @ 2011-11-14 13:42 UTC (permalink / raw) To: Francesco Cosoleto; +Cc: util-linux On Fri, Nov 11, 2011 at 11:12:07AM +0100, Francesco Cosoleto wrote: > fdisk/fdisk.c | 9 +++++---- > 1 files changed, 5 insertions(+), 4 deletions(-) Applied (all patches), thanks. > gpt_warning(disk_device); > get_boot(fdisk); > > + fprintf(stderr, _("Welcome to fdisk (%s).\n\n" > + "Changes will remain in memory only, until you decide to write them.\n" > + "Be careful before using the write command.\n"), PACKAGE_STRING); > + I have moved this message before gpt_warning() and get_boot(). The get_boot() produces very often warnings (for example on disk with no PT) and I think that the welcome message should be printed as very first message in the interactive mode. Karel -- Karel Zak <kzak@redhat.com> http://karelzak.blogspot.com ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/5] fdisk: print the welcome message when OSF/1 disklabel is detected 2011-11-14 13:42 ` [PATCH 1/5] fdisk: print the welcome message when OSF/1 disklabel is detected Karel Zak @ 2011-11-14 16:03 ` Francesco Cosoleto 0 siblings, 0 replies; 9+ messages in thread From: Francesco Cosoleto @ 2011-11-14 16:03 UTC (permalink / raw) To: Karel Zak; +Cc: util-linux 2011/11/14 Karel Zak <kzak@redhat.com>: >> + =A0 =A0 fprintf(stderr, _("Welcome to fdisk (%s).\n\n" >> + =A0 =A0 =A0 =A0 =A0 =A0 "Changes will remain in memory only, until you= decide to write them.\n" >> + =A0 =A0 =A0 =A0 =A0 =A0 "Be careful before using the write command.\n"= ), PACKAGE_STRING); >> + > > =A0I have moved this message before gpt_warning() and get_boot(). The > =A0get_boot() produces very often warnings (for example on disk with no > =A0PT) and I think that the welcome message should be printed as very > =A0first message in the interactive mode. There are some side effects. The third part of the message needs more visibility, and there is a variable number of newlines. It's possible split the string up to fix this. Francesco ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2011-11-14 16:03 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-11-11 10:12 [PATCH 1/5] fdisk: print the welcome message when OSF/1 disklabel is detected Francesco Cosoleto 2011-11-11 10:12 ` [PATCH 2/5] fdisk: rename bselect, xselect functions Francesco Cosoleto 2011-11-11 10:12 ` [PATCH 3/5] fdisk: move command prompt code to a separate function Francesco Cosoleto 2011-11-11 10:12 ` [PATCH 4/5] fdisk: rewrite print menu system Francesco Cosoleto 2011-11-11 11:40 ` Karel Zak 2011-11-11 16:49 ` Francesco Cosoleto 2011-11-11 10:12 ` [PATCH 5/5] fdisk: enable expert menu with SGI label Francesco Cosoleto 2011-11-14 13:42 ` [PATCH 1/5] fdisk: print the welcome message when OSF/1 disklabel is detected Karel Zak 2011-11-14 16:03 ` Francesco Cosoleto
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).