summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJose M. Guisado <jguisado@soleta.eu>2022-10-07 17:31:06 +0200
committerJose M. Guisado <jguisado@soleta.eu>2022-12-15 12:27:35 +0100
commit8707d4311112f589ff7dcaf7ed634dbcc3bd9fdb (patch)
treee83dbe9060cdf235a9f1314dbfd65134aaa58941
parent46ad17eaa7c04b846fa359f9edc48572ab8bc31e (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.c26
-rw-r--r--partition.c1
2 files changed, 27 insertions, 0 deletions
diff --git a/context.c b/context.c
index a2fe869..8d80d12 100644
--- a/context.c
+++ b/context.c
@@ -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;
}