ask->data.yesno.result = 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;
default:
warnx(_("internal error: unsupported dialog type %d"), fdisk_ask_get_type(ask));
return -EINVAL;
return 0;
}
+struct tt *fdisk_ask_get_table(struct fdisk_ask *ask)
+{
+ assert(ask);
+ assert(fdisk_is_ask(ask, TABLE));
+ return ask->data.table;
+}
+
+int fdisk_print_table(struct fdisk_context *cxt, struct tt *tb)
+{
+ struct fdisk_ask *ask;
+ int rc;
+
+ assert(cxt);
+ assert(tb);
+
+ ask = fdisk_new_ask();
+ if (!ask)
+ return -ENOMEM;
+
+ fdisk_ask_set_type(ask, FDISK_ASKTYPE_TABLE);
+ ask->data.table = tb;
+
+ rc = fdisk_do_ask(cxt, ask);
+
+ fdisk_free_ask(ask);
+ return rc;
+}
#define is_print_ask(a) (fdisk_is_ask(a, WARN) || fdisk_is_ask(a, WARNX) || fdisk_is_ask(a, INFO))
#include "libfdisk.h"
#include "nls.h" /* temporary before dialog API will be implamented */
+#include "tt.h"
/* features */
#define CONFIG_LIBFDISK_ASSERT
struct ask_yesno {
int result; /* TRUE or FALSE */
} yesno;
+ /* FDISK_ASKTYPE_TABLE, see include/tt.h */
+ struct tt *table;
} data;
};
/* ask.c */
extern int fdisk_ask_partnum(struct fdisk_context *cxt, size_t *partnum, int wantnew);
+extern struct tt *fdisk_ask_get_table(struct fdisk_ask *ask);
+extern int fdisk_print_table(struct fdisk_context *cxt, struct tt *tb);
+
#endif /* _LIBFDISK_PRIVATE_H */
struct fdisk_label;
struct fdisk_parttype;
struct fdisk_ask;
+struct tt;
/*
* Supported partition table types (labels)
FDISK_ASKTYPE_WARN,
FDISK_ASKTYPE_WARNX,
FDISK_ASKTYPE_INFO,
- FDISK_ASKTYPE_YESNO
+ FDISK_ASKTYPE_YESNO,
+ FDISK_ASKTYPE_TABLE
};