mirror of
https://github.com/ostreedev/ostree.git
synced 2025-03-21 02:50:37 +03:00
lib: Add a helper for mmap->bytes with openat(), use it in repo
This kills another GSystem consumer...I think down the line I'd like to do something like "detect whether file is > 1k if so, mmap, otherwise just readall()" so we can use this helper in more places. Closes: #319 Approved by: jlebon
This commit is contained in:
parent
3a03a35071
commit
70e5489258
@ -4618,7 +4618,6 @@ ostree_repo_add_gpg_signature_summary (OstreeRepo *self,
|
||||
{
|
||||
gboolean ret = FALSE;
|
||||
g_autoptr(GBytes) summary_data = NULL;
|
||||
g_autoptr(GFile) summary_file = NULL;
|
||||
g_autoptr(GFile) signature_path = NULL;
|
||||
g_autoptr(GVariant) existing_signatures = NULL;
|
||||
g_autoptr(GVariant) new_metadata = NULL;
|
||||
@ -4626,8 +4625,7 @@ ostree_repo_add_gpg_signature_summary (OstreeRepo *self,
|
||||
guint i;
|
||||
signature_path = g_file_resolve_relative_path (self->repodir, "summary.sig");
|
||||
|
||||
summary_file = g_file_resolve_relative_path (self->repodir, "summary");
|
||||
summary_data = gs_file_map_readonly (summary_file, cancellable, error);
|
||||
summary_data = ot_file_mapat_bytes (self->repo_dir_fd, "summary", error);
|
||||
if (!summary_data)
|
||||
goto out;
|
||||
|
||||
|
@ -230,3 +230,24 @@ ot_openat_ignore_enoent (int dfd,
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
GBytes *
|
||||
ot_file_mapat_bytes (int dfd,
|
||||
const char *path,
|
||||
GError **error)
|
||||
{
|
||||
glnx_fd_close int fd = openat (dfd, path, O_RDONLY | O_CLOEXEC);
|
||||
g_autoptr(GMappedFile) mfile = NULL;
|
||||
|
||||
if (fd < 0)
|
||||
{
|
||||
glnx_set_error_from_errno (error);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
mfile = g_mapped_file_new_from_fd (fd, FALSE, error);
|
||||
if (!mfile)
|
||||
return FALSE;
|
||||
|
||||
return g_mapped_file_get_bytes (mfile);
|
||||
}
|
||||
|
@ -66,4 +66,8 @@ gboolean ot_openat_ignore_enoent (int dfd,
|
||||
int *out_fd,
|
||||
GError **error);
|
||||
|
||||
GBytes *ot_file_mapat_bytes (int dfd,
|
||||
const char *path,
|
||||
GError **error);
|
||||
|
||||
G_END_DECLS
|
||||
|
Loading…
x
Reference in New Issue
Block a user