From 3efdcb54b79b288a208e5d41b4d16c2f445cc664 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Tue, 1 Mar 2016 21:52:22 -0500 Subject: [PATCH] repo: Add ostree_repo_get_dfd() I plan to use this in rpm-ostree at least for two reasons: - To find the mtime on the repo - To use the tmp/ directory to stage content (but we should eventually add a better API) --- src/libostree/libostree.sym | 5 +++++ src/libostree/ostree-repo.c | 18 ++++++++++++++++++ src/libostree/ostree-repo.h | 3 +++ 3 files changed, 26 insertions(+) diff --git a/src/libostree/libostree.sym b/src/libostree/libostree.sym index ee6c2e76..ce8861f9 100644 --- a/src/libostree/libostree.sym +++ b/src/libostree/libostree.sym @@ -311,3 +311,8 @@ global: local: *; }; + +LIBOSTREE_2016.4 { +global: + ostree_repo_get_dfd; +} LIBOSTREE_2016.3; diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c index 3b08d445..752e097a 100644 --- a/src/libostree/ostree-repo.c +++ b/src/libostree/ostree-repo.c @@ -2423,6 +2423,24 @@ ostree_repo_get_path (OstreeRepo *self) return self->repodir; } +/** + * ostree_repo_get_dfd: + * @self: Repo + * + * In some cases it's useful for applications to access the repository + * directly; for example, writing content into `repo/tmp` ensures it's + * on the same filesystem. Another case is detecting the mtime on the + * repository (to see whether a ref was written). + * + * Returns: File descriptor for repository root - owned by @self + */ +int +ostree_repo_get_dfd (OstreeRepo *self) +{ + g_return_val_if_fail (self->repo_dir_fd != -1, -1); + return self->repo_dir_fd; +} + OstreeRepoMode ostree_repo_get_mode (OstreeRepo *self) { diff --git a/src/libostree/ostree-repo.h b/src/libostree/ostree-repo.h index 288dca0c..b8399b17 100644 --- a/src/libostree/ostree-repo.h +++ b/src/libostree/ostree-repo.h @@ -82,6 +82,9 @@ gboolean ostree_repo_create (OstreeRepo *self, _OSTREE_PUBLIC GFile * ostree_repo_get_path (OstreeRepo *self); +_OSTREE_PUBLIC +int ostree_repo_get_dfd (OstreeRepo *self); + _OSTREE_PUBLIC OstreeRepoMode ostree_repo_get_mode (OstreeRepo *self);