repo: Expose dfd-relative mtree writes as public API
For use in rpm-ostree. We already had all of the internals for this.
This commit is contained in:
parent
5e7ed2dd8b
commit
21fbc16bc3
|
|
@ -279,6 +279,7 @@ ostree_repo_commit_modifier_set_sepolicy
|
||||||
ostree_repo_commit_modifier_ref
|
ostree_repo_commit_modifier_ref
|
||||||
ostree_repo_commit_modifier_unref
|
ostree_repo_commit_modifier_unref
|
||||||
ostree_repo_write_directory_to_mtree
|
ostree_repo_write_directory_to_mtree
|
||||||
|
ostree_repo_write_dfd_to_mtree
|
||||||
ostree_repo_write_archive_to_mtree
|
ostree_repo_write_archive_to_mtree
|
||||||
ostree_repo_write_mtree
|
ostree_repo_write_mtree
|
||||||
ostree_repo_write_commit
|
ostree_repo_write_commit
|
||||||
|
|
|
||||||
|
|
@ -2823,28 +2823,21 @@ ostree_repo_write_directory_to_mtree (OstreeRepo *self,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
gboolean ret = FALSE;
|
gboolean ret = FALSE;
|
||||||
GPtrArray *path = NULL;
|
g_autoptr(GPtrArray) path = NULL;
|
||||||
|
|
||||||
if (modifier && modifier->flags & OSTREE_REPO_COMMIT_MODIFIER_FLAGS_GENERATE_SIZES)
|
/* Short cut local files */
|
||||||
{
|
|
||||||
self->generate_sizes = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
path = g_ptr_array_new ();
|
|
||||||
if (g_file_is_native (dir))
|
if (g_file_is_native (dir))
|
||||||
{
|
{
|
||||||
gs_dirfd_iterator_cleanup GSDirFdIterator dfd_iter = { 0, };
|
if (!ostree_repo_write_dfd_to_mtree (self, AT_FDCWD, gs_file_get_path_cached (dir),
|
||||||
|
mtree, modifier, cancellable, error))
|
||||||
if (!gs_dirfd_iterator_init_at (AT_FDCWD, gs_file_get_path_cached (dir), FALSE,
|
|
||||||
&dfd_iter, error))
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
if (!write_dfd_iter_to_mtree_internal (self, &dfd_iter, mtree, modifier, path,
|
|
||||||
cancellable, error))
|
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (modifier && modifier->flags & OSTREE_REPO_COMMIT_MODIFIER_FLAGS_GENERATE_SIZES)
|
||||||
|
self->generate_sizes = TRUE;
|
||||||
|
|
||||||
|
path = g_ptr_array_new ();
|
||||||
if (!write_directory_to_mtree_internal (self, dir, mtree, modifier, path,
|
if (!write_directory_to_mtree_internal (self, dir, mtree, modifier, path,
|
||||||
cancellable, error))
|
cancellable, error))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
@ -2852,8 +2845,51 @@ ostree_repo_write_directory_to_mtree (OstreeRepo *self,
|
||||||
|
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
out:
|
out:
|
||||||
if (path)
|
return ret;
|
||||||
g_ptr_array_free (path, TRUE);
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ostree_repo_write_dfd_to_mtree:
|
||||||
|
* @self: Repo
|
||||||
|
* @dfd: Directory file descriptor
|
||||||
|
* @path: Path
|
||||||
|
* @mtree: Overlay directory contents into this tree
|
||||||
|
* @modifier: (allow-none): Optional modifier
|
||||||
|
* @cancellable: Cancellable
|
||||||
|
* @error: Error
|
||||||
|
*
|
||||||
|
* Store as objects all contents of the directory referred to by @dfd
|
||||||
|
* and @path all children into the repository @self, overlaying the
|
||||||
|
* resulting filesystem hierarchy into @mtree.
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
ostree_repo_write_dfd_to_mtree (OstreeRepo *self,
|
||||||
|
int dfd,
|
||||||
|
const char *path,
|
||||||
|
OstreeMutableTree *mtree,
|
||||||
|
OstreeRepoCommitModifier *modifier,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
gboolean ret = FALSE;
|
||||||
|
g_autoptr(GPtrArray) pathbuilder = NULL;
|
||||||
|
gs_dirfd_iterator_cleanup GSDirFdIterator dfd_iter = { 0, };
|
||||||
|
|
||||||
|
if (modifier && modifier->flags & OSTREE_REPO_COMMIT_MODIFIER_FLAGS_GENERATE_SIZES)
|
||||||
|
self->generate_sizes = TRUE;
|
||||||
|
|
||||||
|
pathbuilder = g_ptr_array_new ();
|
||||||
|
|
||||||
|
if (!gs_dirfd_iterator_init_at (dfd, path, FALSE,
|
||||||
|
&dfd_iter, error))
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
if (!write_dfd_iter_to_mtree_internal (self, &dfd_iter, mtree, modifier, pathbuilder,
|
||||||
|
cancellable, error))
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
ret = TRUE;
|
||||||
|
out:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -428,6 +428,14 @@ gboolean ostree_repo_write_directory_to_mtree (OstreeRepo *
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
gboolean ostree_repo_write_dfd_to_mtree (OstreeRepo *self,
|
||||||
|
int dfd,
|
||||||
|
const char *path,
|
||||||
|
OstreeMutableTree *mtree,
|
||||||
|
OstreeRepoCommitModifier *modifier,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
gboolean ostree_repo_write_archive_to_mtree (OstreeRepo *self,
|
gboolean ostree_repo_write_archive_to_mtree (OstreeRepo *self,
|
||||||
GFile *archive,
|
GFile *archive,
|
||||||
OstreeMutableTree *mtree,
|
OstreeMutableTree *mtree,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue