g_autoptr(GFileInfo) file_info = _ostree_stbuf_to_gfileinfo (stbuf);
+ const gboolean canonicalize_perms =
+ ((flags & OSTREE_CHECKSUM_FLAGS_CANONICAL_PERMISSIONS) != 0);
+
g_autoptr(GInputStream) in = NULL;
if (S_ISREG (stbuf->st_mode))
{
if (!glnx_openat_rdonly (dfd, path, FALSE, &fd, error))
return FALSE;
in = g_unix_input_stream_new (glnx_steal_fd (&fd), TRUE);
+ if (canonicalize_perms)
+ {
+ g_file_info_set_attribute_uint32 (file_info, "unix::uid", 0);
+ g_file_info_set_attribute_uint32 (file_info, "unix::gid", 0);
+ }
}
else if (S_ISLNK (stbuf->st_mode))
{
/**
* OstreeChecksumFlags:
+ * @OSTREE_CHECKSUM_FLAGS_NONE: Default checksumming without tweaks.
+ * (Since: 2017.13.)
+ * @OSTREE_CHECKSUM_FLAGS_IGNORE_XATTRS: Ignore xattrs when checksumming.
+ * (Since: 2017.13.)
+ * @OSTREE_CHECKSUM_FLAGS_CANONICAL_PERMISSIONS: Use canonical uid/gid/mode
+ * values, for bare-user-only mode. (Since: 2021.4.)
+ *
+ * Flags influencing checksumming logic.
*
* Since: 2017.13
*/
typedef enum {
OSTREE_CHECKSUM_FLAGS_NONE = 0,
OSTREE_CHECKSUM_FLAGS_IGNORE_XATTRS = (1 << 0),
+ OSTREE_CHECKSUM_FLAGS_CANONICAL_PERMISSIONS = (1 << 1),
} OstreeChecksumFlags;
_OSTREE_PUBLIC