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);