summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libostree/ostree-sysroot.c21
-rw-r--r--src/libostree/ostree-sysroot.h2
2 files changed, 21 insertions, 2 deletions
diff --git a/src/libostree/ostree-sysroot.c b/src/libostree/ostree-sysroot.c
index c7b3e474..7a4686d8 100644
--- a/src/libostree/ostree-sysroot.c
+++ b/src/libostree/ostree-sysroot.c
@@ -72,8 +72,7 @@ ostree_sysroot_finalize (GObject *object)
glnx_release_lock_file (&self->lock);
- if (self->sysroot_fd != -1)
- (void) close (self->sysroot_fd);
+ (void) ostree_sysroot_unload (self);
G_OBJECT_CLASS (ostree_sysroot_parent_class)->finalize (object);
}
@@ -224,6 +223,24 @@ ostree_sysroot_get_fd (OstreeSysroot *self)
}
/**
+ * ostree_sysroot_unload:
+ * @self: Sysroot
+ *
+ * Release any resources such as file descriptors referring to the
+ * root directory of this sysroot. Normally, those resources are
+ * cleared by finalization, but in garbage collected languages that
+ * may not be predictable.
+ *
+ * This undoes the effect of `ostree_sysroot_load()`.
+ */
+void
+ostree_sysroot_unload (OstreeSysroot *self)
+{
+ if (self->sysroot_fd != -1)
+ (void) close (self->sysroot_fd);
+}
+
+/**
* ostree_sysroot_ensure_initialized:
* @self: Sysroot
* @cancellable: Cancellable
diff --git a/src/libostree/ostree-sysroot.h b/src/libostree/ostree-sysroot.h
index ce128bba..2fbc23b3 100644
--- a/src/libostree/ostree-sysroot.h
+++ b/src/libostree/ostree-sysroot.h
@@ -45,6 +45,8 @@ gboolean ostree_sysroot_load (OstreeSysroot *self,
GCancellable *cancellable,
GError **error);
+void ostree_sysroot_unload (OstreeSysroot *self);
+
gboolean ostree_sysroot_ensure_initialized (OstreeSysroot *self,
GCancellable *cancellable,
GError **error);