core: Fix regression when committing symlinks in archive mode

Commit 802959f398 broke this because it
made all archived content files be S_IFREG, which is clearly wrong.
This commit is contained in:
Colin Walters 2012-02-24 09:58:45 -05:00
parent f14ea4b2bf
commit 16c0cfe9b5
2 changed files with 6 additions and 2 deletions

View File

@ -684,9 +684,12 @@ ostree_create_file_from_input (GFile *dest_file,
if (g_cancellable_set_error_if_cancelled (cancellable, error)) if (g_cancellable_set_error_if_cancelled (cancellable, error))
return FALSE; return FALSE;
if (finfo != NULL && !is_archived_content) if (finfo != NULL)
{ {
mode = g_file_info_get_attribute_uint32 (finfo, "unix::mode"); mode = g_file_info_get_attribute_uint32 (finfo, "unix::mode");
/* Archived content files should always be 0644 */
if (is_archived_content)
mode = (mode & S_IFMT) | 0644;
} }
else else
{ {

View File

@ -938,8 +938,9 @@ impl_stage_archive_file_object_from_raw (OstreeRepo *self,
cancellable, error)) cancellable, error))
goto out; goto out;
if (ret_checksum) if (out_checksum)
{ {
g_assert (ret_checksum);
ostree_checksum_update_stat (ret_checksum, ostree_checksum_update_stat (ret_checksum,
g_file_info_get_attribute_uint32 (file_info, "unix::uid"), g_file_info_get_attribute_uint32 (file_info, "unix::uid"),
g_file_info_get_attribute_uint32 (file_info, "unix::gid"), g_file_info_get_attribute_uint32 (file_info, "unix::gid"),