config-diff: Properly print files relative to root

Just less ugly.
This commit is contained in:
Colin Walters 2013-03-12 08:47:11 -04:00
parent d6d2253f5a
commit ae3945210c
4 changed files with 26 additions and 15 deletions

View File

@ -367,8 +367,25 @@ ostree_diff_dirs (GFile *a,
return ret;
}
static void
print_diff_item (char prefix,
GFile *base,
GFile *file)
{
if (g_file_is_native (file))
{
gs_free char *relpath = g_file_get_relative_path (base, file);
g_print ("%c %s\n", prefix, relpath);
}
else
{
g_print ("%c %s\n", prefix, gs_file_get_path_cached (file));
}
}
void
ostree_diff_print (GFile *base,
ostree_diff_print (GFile *a,
GFile *b,
GPtrArray *modified,
GPtrArray *removed,
GPtrArray *added)
@ -378,23 +395,16 @@ ostree_diff_print (GFile *base,
for (i = 0; i < modified->len; i++)
{
OstreeDiffItem *diff = modified->pdata[i];
g_print ("M %s\n", gs_file_get_path_cached (diff->src));
print_diff_item ('M', a, diff->src);
}
for (i = 0; i < removed->len; i++)
{
g_print ("D %s\n", gs_file_get_path_cached (removed->pdata[i]));
GFile *removed_file = removed->pdata[i];
print_diff_item ('D', a, removed_file);
}
for (i = 0; i < added->len; i++)
{
GFile *added_f = added->pdata[i];
if (g_file_is_native (added_f))
{
char *relpath = g_file_get_relative_path (base, added_f);
g_assert (relpath != NULL);
g_print ("A /%s\n", relpath);
g_free (relpath);
}
else
g_print ("A %s\n", gs_file_get_path_cached (added_f));
print_diff_item ('A', b, added_f);
}
}

View File

@ -54,7 +54,8 @@ gboolean ostree_diff_dirs (GFile *a,
GCancellable *cancellable,
GError **error);
void ostree_diff_print (GFile *base,
void ostree_diff_print (GFile *a,
GFile *b,
GPtrArray *modified,
GPtrArray *removed,
GPtrArray *added);

View File

@ -96,7 +96,7 @@ ot_admin_builtin_diff (int argc, char **argv, OtAdminBuiltinOpts *admin_opts, GE
cancellable, error))
goto out;
ostree_diff_print (new_etc_path, modified, removed, added);
ostree_diff_print (orig_etc_path, new_etc_path, modified, removed, added);
ret = TRUE;
out:

View File

@ -122,7 +122,7 @@ ostree_builtin_diff (int argc, char **argv, GFile *repo_path, GError **error)
if (!ostree_diff_dirs (srcf, targetf, modified, removed, added, cancellable, error))
goto out;
ostree_diff_print (targetf, modified, removed, added);
ostree_diff_print (srcf, targetf, modified, removed, added);
ret = TRUE;
out: