partition: add *_follow_default optional params
Add optional parameters inside init function of partition. Optional
parameters refer to:
- partno_follow_default
- start_follow_default
- end_follow_default
These options can be used in order to enable or disable default partno,
start and end value when adding partitions.
With those optional parameters enabled by default a user is able
to add a partition into the context label without specifying any
attribute.
>>> import fdisk
>>> cxt = fdisk.Context('./disk.bin', readonly=False)
>>> cxt.create_disklabel('gpt')
>>> pa = fdisk.Partition()
>>> cxt.add_partition(pa)
This enables:
- "Filling" the rest of the disk with last partition
- No need to track start/end sector for any following partition
- No need to track next partno number for any following partition
See:
https://cdn.kernel.org/pub/linux/utils/util-linux/v2.34/libfdisk-docs/libfdisk-Partition.html#fdisk-partition-partno-follow-default
https://cdn.kernel.org/pub/linux/utils/util-linux/v2.34/libfdisk-docs/libfdisk-Partition.html#fdisk-partition-start-follow-default
https://cdn.kernel.org/pub/linux/utils/util-linux/v2.34/libfdisk-docs/libfdisk-Partition.html#fdisk-partition-end-follow-default
master
parent
8707d43111
commit
7271bc99db
36
partition.c
36
partition.c
|
|
@ -37,25 +37,43 @@ static PyObject *Partition_new(PyTypeObject *type,
|
||||||
return (PyObject *)self;
|
return (PyObject *)self;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define Partition_HELP "Partition()"
|
#define Partition_HELP "Partition(partno_follow_default=False, " \
|
||||||
|
"start_follow_default=False, " \
|
||||||
|
"end_follow_default=False)"
|
||||||
static int Partition_init(PartitionObject *self, PyObject *args, PyObject *kwds)
|
static int Partition_init(PartitionObject *self, PyObject *args, PyObject *kwds)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
char *kwlist[] = {
|
char *kwlist[] = {
|
||||||
"context",
|
"partno_follow_default",
|
||||||
|
"start_follow_default",
|
||||||
|
"end_follow_default",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
int partno_follow_default = 0,
|
||||||
|
start_follow_default = 0,
|
||||||
|
end_follow_default = 0;
|
||||||
|
|
||||||
if (!PyArg_ParseTupleAndKeywords(args,
|
if (!PyArg_ParseTupleAndKeywords(args,
|
||||||
kwds, "|O!", kwlist,
|
kwds, "|ppp", kwlist,
|
||||||
&ContextType, &cxt)) {
|
&partno_follow_default,
|
||||||
PyErr_SetString(PyExc_TypeError, "Error");
|
&start_follow_default,
|
||||||
|
&end_follow_default)) {
|
||||||
|
PyErr_SetString(PyExc_TypeError, "Invalid arguments for new partition");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
self->pa = fdisk_new_partition();
|
self->pa = fdisk_new_partition();
|
||||||
fdisk_partition_start_follow_default(self->pa, 1);
|
if (fdisk_partition_partno_follow_default(self->pa, partno_follow_default) < 0) {
|
||||||
|
PyErr_SetString(PyExc_RuntimeError, "Error setting partno_follow_default");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (fdisk_partition_start_follow_default(self->pa, start_follow_default) < 0) {
|
||||||
|
PyErr_SetString(PyExc_RuntimeError, "Error setting start_follow_default");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (fdisk_partition_end_follow_default(self->pa, end_follow_default) < 0) {
|
||||||
|
PyErr_SetString(PyExc_RuntimeError, "Error setting end_follow_default");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue