#include "c.h"
#include "strutils.h"
#include "rpmatch.h"
+#include "xalloc.h"
#include "fdisk.h"
fputs(fdisk_ask_get_query(ask), stdout);
rc = get_user_reply(cxt, _(" [Y]es/[N]o: "), buf, sizeof(buf));
if (rc == 0)
- ask->data.yesno.result = rpmatch(buf);
+ fdisk_ask_yesno_set_result(ask, rpmatch(buf));
DBG(ASK, dbgprint("yes-no ask: reply '%s' [rc=%d]", buf, rc));
break;
case FDISK_ASKTYPE_TABLE:
tt_print_table(fdisk_ask_get_table(ask));
break;
+ case FDISK_ASKTYPE_STRING:
+ {
+ char prmt[BUFSIZ];
+ snprintf(prmt, sizeof(prmt), "%s: ", fdisk_ask_get_query(ask));
+ fputc('\n', stdout);
+ rc = get_user_reply(cxt, prmt, buf, sizeof(buf));
+ if (rc == 0)
+ fdisk_ask_string_set_result(ask, xstrdup(buf));
+ DBG(ASK, dbgprint("string ask: reply '%s' [rc=%d]", buf, rc));
+ break;
+ }
default:
warnx(_("internal error: unsupported dialog type %d"), fdisk_ask_get_type(ask));
return -EINVAL;
{'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 in the partition table"), {0, FDISK_DISKLABEL_ANY}},
+ {'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}},
{'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, 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_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}},
case 'p':
if (fdisk_is_disklabel(cxt, SUN))
list_table(cxt, 1);
- else
+ else if (fdisk_is_disklabel(cxt, DOS))
dos_list_table_expert(cxt, 0);
break;
case 'q':
"compatibility\n"));
fdisk_override_geometry(cxt, user_cylinders, user_heads, user_sectors);
break;
+ case 'u':
+ if (fdisk_is_disklabel(cxt, GPT) &&
+ fdisk_ask_partnum(cxt, &n, FALSE) == 0)
+ fdisk_gpt_partition_set_uuid(cxt, n);
+ break;
case 'v':
verify(cxt);
break;