diff options
author | Jose M. Guisado <jguisado@soleta.eu> | 2022-10-07 17:31:06 +0200 |
---|---|---|
committer | Jose M. Guisado <jguisado@soleta.eu> | 2022-12-15 12:27:35 +0100 |
commit | 8707d4311112f589ff7dcaf7ed634dbcc3bd9fdb (patch) | |
tree | e83dbe9060cdf235a9f1314dbfd65134aaa58941 | |
parent | 46ad17eaa7c04b846fa359f9edc48572ab8bc31e (diff) |
context: add add_partition method
This method wraps fdisk_add_partition. Allows modifying in-memory
partition table of a given context.
Remember that changes need to be written to disk using the
relevant fdisk_write_disklabel function wrapper.
-rw-r--r-- | context.c | 26 | ||||
-rw-r--r-- | partition.c | 1 |
2 files changed, 27 insertions, 0 deletions
@@ -160,11 +160,37 @@ static PyObject *Context_write_disklabel(ContextObject *self, PyObject *args, Py Py_RETURN_NONE; } +#define Context_add_partition_HELP "add_partition(fdisk.Partition)\n\n" \ + "Adds partition to context" +static PyObject *Context_add_partition(ContextObject *self, PyObject *args, PyObject *kwds) +{ + PartitionObject *partobj; + int rc; + + if (!PyArg_ParseTuple(args, "O!", &PartitionType, &partobj)) { + PyErr_SetString(PyExc_TypeError, ARG_ERR); + return NULL; + } + + if (!partobj->pa) { + PyErr_SetString(PyExc_TypeError, ARG_ERR); + return NULL; + } + + rc = fdisk_add_partition(self->cxt, partobj->pa, NULL); + if (rc < 0) { + PyErr_Format(PyExc_RuntimeError, "Error adding partition to context: %s", strerror(-rc)); + return NULL; + } + + Py_RETURN_NONE; +} static PyMethodDef Context_methods[] = { {"assign_device", (PyCFunction)Context_assign_device, METH_VARARGS, Context_assign_device_HELP}, {"partition_to_string", (PyCFunction)Context_partition_to_string, METH_VARARGS, Context_partition_to_string_HELP}, {"create_disklabel", (PyCFunction)Context_create_disklabel, METH_VARARGS, Context_create_disklabel_HELP}, {"write_disklabel", (PyCFunction)Context_write_disklabel, METH_NOARGS, Context_write_disklabel_HELP}, + {"add_partition", (PyCFunction)Context_add_partition, METH_VARARGS, Context_add_partition_HELP}, {NULL} }; diff --git a/partition.c b/partition.c index ae812d4..6057f5b 100644 --- a/partition.c +++ b/partition.c @@ -55,6 +55,7 @@ static int Partition_init(PartitionObject *self, PyObject *args, PyObject *kwds) */ self->pa = fdisk_new_partition(); + fdisk_partition_start_follow_default(self->pa, 1); return 0; } |