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;
|
gboolean ret = FALSE;
|
||||||
g_autoptr(GBytes) summary_data = NULL;
|
g_autoptr(GBytes) summary_data = NULL;
|
||||||
g_autoptr(GFile) summary_file = NULL;
|
|
||||||
g_autoptr(GFile) signature_path = NULL;
|
g_autoptr(GFile) signature_path = NULL;
|
||||||
g_autoptr(GVariant) existing_signatures = NULL;
|
g_autoptr(GVariant) existing_signatures = NULL;
|
||||||
g_autoptr(GVariant) new_metadata = NULL;
|
g_autoptr(GVariant) new_metadata = NULL;
|
||||||
|
|
@ -4626,8 +4625,7 @@ ostree_repo_add_gpg_signature_summary (OstreeRepo *self,
|
||||||
guint i;
|
guint i;
|
||||||
signature_path = g_file_resolve_relative_path (self->repodir, "summary.sig");
|
signature_path = g_file_resolve_relative_path (self->repodir, "summary.sig");
|
||||||
|
|
||||||
summary_file = g_file_resolve_relative_path (self->repodir, "summary");
|
summary_data = ot_file_mapat_bytes (self->repo_dir_fd, "summary", error);
|
||||||
summary_data = gs_file_map_readonly (summary_file, cancellable, error);
|
|
||||||
if (!summary_data)
|
if (!summary_data)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -230,3 +230,24 @@ ot_openat_ignore_enoent (int dfd,
|
||||||
out:
|
out:
|
||||||
return ret;
|
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,
|
int *out_fd,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
GBytes *ot_file_mapat_bytes (int dfd,
|
||||||
|
const char *path,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue