lib/mutable-tree: Port to new style

Some therapeutic style conversion to finish off the week. Pretty
straightforward overall.

Closes: #1742
Approved by: cgwalters
This commit is contained in:
Jonathan Lebon 2018-09-28 17:36:45 -04:00 committed by Atomic Bot
parent 899b0bfad2
commit 39d5db7e1e
1 changed files with 38 additions and 80 deletions

View File

@ -305,31 +305,22 @@ ostree_mutable_tree_replace_file (OstreeMutableTree *self,
const char *checksum, const char *checksum,
GError **error) GError **error)
{ {
gboolean ret = FALSE;
g_return_val_if_fail (name != NULL, FALSE); g_return_val_if_fail (name != NULL, FALSE);
if (!ot_util_filename_validate (name, error)) if (!ot_util_filename_validate (name, error))
goto out; return FALSE;
if (!_ostree_mutable_tree_make_whole (self, NULL, error)) if (!_ostree_mutable_tree_make_whole (self, NULL, error))
goto out; return FALSE;
if (g_hash_table_lookup (self->subdirs, name)) if (g_hash_table_lookup (self->subdirs, name))
{ return glnx_throw (error, "Can't replace directory with file: %s", name);
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"Can't replace directory with file: %s", name);
goto out;
}
invalidate_contents_checksum (self); invalidate_contents_checksum (self);
g_hash_table_replace (self->files, g_hash_table_replace (self->files,
g_strdup (name), g_strdup (name),
g_strdup (checksum)); g_strdup (checksum));
return TRUE;
ret = TRUE;
out:
return ret;
} }
/** /**
@ -347,34 +338,24 @@ ostree_mutable_tree_remove (OstreeMutableTree *self,
gboolean allow_noent, gboolean allow_noent,
GError **error) GError **error)
{ {
gboolean ret = FALSE;
g_return_val_if_fail (name != NULL, FALSE); g_return_val_if_fail (name != NULL, FALSE);
if (!ot_util_filename_validate (name, error)) if (!ot_util_filename_validate (name, error))
goto out; return FALSE;
if (!_ostree_mutable_tree_make_whole (self, NULL, error)) if (!_ostree_mutable_tree_make_whole (self, NULL, error))
goto out; return FALSE;
if (!g_hash_table_remove (self->files, name) && if (!g_hash_table_remove (self->files, name) &&
!g_hash_table_remove (self->subdirs, name)) !g_hash_table_remove (self->subdirs, name))
{ {
if (allow_noent) if (allow_noent)
{ return TRUE; /* NB: early return */
ret = TRUE; return set_error_noent (error, name);
goto out;
}
set_error_noent (error, name);
goto out;
} }
invalidate_contents_checksum (self); invalidate_contents_checksum (self);
return TRUE;
ret = TRUE;
out:
return ret;
} }
/** /**
@ -393,25 +374,19 @@ ostree_mutable_tree_ensure_dir (OstreeMutableTree *self,
OstreeMutableTree **out_subdir, OstreeMutableTree **out_subdir,
GError **error) GError **error)
{ {
gboolean ret = FALSE;
g_autoptr(OstreeMutableTree) ret_dir = NULL;
g_return_val_if_fail (name != NULL, FALSE); g_return_val_if_fail (name != NULL, FALSE);
if (!ot_util_filename_validate (name, error)) if (!ot_util_filename_validate (name, error))
goto out; return FALSE;
if (!_ostree_mutable_tree_make_whole (self, NULL, error)) if (!_ostree_mutable_tree_make_whole (self, NULL, error))
goto out; return FALSE;
if (g_hash_table_lookup (self->files, name)) if (g_hash_table_lookup (self->files, name))
{ return glnx_throw (error, "Can't replace file with directory: %s", name);
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"Can't replace file with directory: %s", name);
goto out;
}
ret_dir = ot_gobject_refz (g_hash_table_lookup (self->subdirs, name)); g_autoptr(OstreeMutableTree) ret_dir =
ot_gobject_refz (g_hash_table_lookup (self->subdirs, name));
if (!ret_dir) if (!ret_dir)
{ {
ret_dir = ostree_mutable_tree_new (); ret_dir = ostree_mutable_tree_new ();
@ -419,10 +394,9 @@ ostree_mutable_tree_ensure_dir (OstreeMutableTree *self,
insert_child_mtree (self, name, g_object_ref (ret_dir)); insert_child_mtree (self, name, g_object_ref (ret_dir));
} }
ret = TRUE; if (out_subdir)
ot_transfer_out_value (out_subdir, &ret_dir); *out_subdir = g_steal_pointer (&ret_dir);
out: return TRUE;
return ret;
} }
gboolean gboolean
@ -432,29 +406,24 @@ ostree_mutable_tree_lookup (OstreeMutableTree *self,
OstreeMutableTree **out_subdir, OstreeMutableTree **out_subdir,
GError **error) GError **error)
{ {
gboolean ret = FALSE;
g_autoptr(OstreeMutableTree) ret_subdir = NULL;
g_autofree char *ret_file_checksum = NULL;
if (!_ostree_mutable_tree_make_whole (self, NULL, error)) if (!_ostree_mutable_tree_make_whole (self, NULL, error))
goto out; return FALSE;
ret_subdir = ot_gobject_refz (g_hash_table_lookup (self->subdirs, name)); g_autofree char *ret_file_checksum = NULL;
g_autoptr(OstreeMutableTree) ret_subdir =
ot_gobject_refz (g_hash_table_lookup (self->subdirs, name));
if (!ret_subdir) if (!ret_subdir)
{ {
ret_file_checksum = g_strdup (g_hash_table_lookup (self->files, name)); ret_file_checksum = g_strdup (g_hash_table_lookup (self->files, name));
if (!ret_file_checksum) if (!ret_file_checksum)
{ return set_error_noent (error, name);
set_error_noent (error, name);
goto out;
}
} }
ret = TRUE; if (out_file_checksum)
ot_transfer_out_value (out_file_checksum, &ret_file_checksum); *out_file_checksum = g_steal_pointer (&ret_file_checksum);
ot_transfer_out_value (out_subdir, &ret_subdir); if (out_subdir)
out: *out_subdir = g_steal_pointer (&ret_subdir);
return ret; return TRUE;
} }
/** /**
@ -475,30 +444,22 @@ ostree_mutable_tree_ensure_parent_dirs (OstreeMutableTree *self,
OstreeMutableTree **out_parent, OstreeMutableTree **out_parent,
GError **error) GError **error)
{ {
gboolean ret = FALSE; g_assert (metadata_checksum != NULL);
int i;
OstreeMutableTree *subdir = self; /* nofree */
g_autoptr(OstreeMutableTree) ret_parent = NULL;
if (!_ostree_mutable_tree_make_whole (self, NULL, error)) if (!_ostree_mutable_tree_make_whole (self, NULL, error))
goto out; return FALSE;
g_assert (metadata_checksum != NULL);
if (!self->metadata_checksum) if (!self->metadata_checksum)
ostree_mutable_tree_set_metadata_checksum (self, metadata_checksum); ostree_mutable_tree_set_metadata_checksum (self, metadata_checksum);
for (i = 0; i+1 < split_path->len; i++) OstreeMutableTree *subdir = self; /* nofree */
for (guint i = 0; i+1 < split_path->len; i++)
{ {
OstreeMutableTree *next; OstreeMutableTree *next;
const char *name = split_path->pdata[i]; const char *name = split_path->pdata[i];
if (g_hash_table_lookup (subdir->files, name)) if (g_hash_table_lookup (subdir->files, name))
{ return glnx_throw (error, "Can't replace file with directory: %s", name);
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"Can't replace file with directory: %s", name);
goto out;
}
next = g_hash_table_lookup (subdir->subdirs, name); next = g_hash_table_lookup (subdir->subdirs, name);
if (!next) if (!next)
@ -512,12 +473,9 @@ ostree_mutable_tree_ensure_parent_dirs (OstreeMutableTree *self,
subdir = next; subdir = next;
} }
ret_parent = g_object_ref (subdir); if (out_parent)
*out_parent = g_object_ref (subdir);
ret = TRUE; return TRUE;
ot_transfer_out_value (out_parent, &ret_parent);
out:
return ret;
} }
const char empty_tree_csum[] = "6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d"; const char empty_tree_csum[] = "6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d";