size_t partnum,
int *status);
+ /* get data according to id (FDISK_COL_*) */
+ int (*part_get_data)(struct fdisk_context *cxt,
+ int id,
+ size_t n,
+ char **data);
+
int (*part_toggle_flag)(struct fdisk_context *cxt, size_t i, unsigned long flag);
/* refresh alignment setting */
void (*deinit)(struct fdisk_label *lb);
};
+/*
+ * fdisk_label_operations->list() output column
+ */
+struct fdisk_column {
+ int id; /* FDISK_COL_* */
+ const char *name; /* column header */
+ double width;
+ int flags; /* TT_FL_* */
+
+ unsigned int detail; /* if fdisk_context_display_details() */
+};
+
/*
* Generic label
*/
unsigned int changed:1, /* label has been modified */
disabled:1; /* this driver is disabled at all */
+ const struct fdisk_column *columns; /* all possible columns */
+ size_t ncolumns;
+
const struct fdisk_label_operations *op;
};
+
/* label driver flags */
enum {
FDISK_LABEL_FL_ADDPART_NOPARTNO = (1 << 1),
extern int fdisk_is_parttype_string(struct fdisk_context *cxt);
/* label.c */
+enum {
+ FDISK_COL_NONE = 0,
+ FDISK_COL_DEVICE,
+ FDISK_COL_START,
+ FDISK_COL_END,
+ FDISK_COL_SIZE,
+ FDISK_COL_TYPE,
+ FDISK_COL_UUID,
+ FDISK_COL_NAME,
+ FDISK_COL_ATTR
+};
+
extern int fdisk_require_geometry(struct fdisk_context *cxt);
extern int fdisk_missing_geometry(struct fdisk_context *cxt);
extern int fdisk_get_disklabel_id(struct fdisk_context *cxt, char **id);
extern int fdisk_set_disklabel_id(struct fdisk_context *cxt);
+extern int fdisk_partition_get_data(struct fdisk_context *cxt, int id, size_t partnum, char **data);
extern int fdisk_add_partition(struct fdisk_context *cxt, struct fdisk_parttype *t);
extern int fdisk_delete_partition(struct fdisk_context *cxt, size_t partnum);
extern int fdisk_set_partition_type(struct fdisk_context *cxt, size_t partnum,
struct fdisk_parttype *t);
+extern int fdisk_get_columns(struct fdisk_context *cxt, int **cols, size_t *ncols);
+extern int fdisk_list_partitions(struct fdisk_context *cxt, int *cols, size_t ncols);
+
extern void fdisk_label_set_changed(struct fdisk_label *lb, int changed);
extern int fdisk_label_is_changed(struct fdisk_label *lb);