diff --git a/src/libostree/ostree-diff.c b/src/libostree/ostree-diff.c index 94083eba..ccae4ed2 100644 --- a/src/libostree/ostree-diff.c +++ b/src/libostree/ostree-diff.c @@ -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); } } diff --git a/src/libostree/ostree-diff.h b/src/libostree/ostree-diff.h index 5784ce45..ba6d63f9 100644 --- a/src/libostree/ostree-diff.h +++ b/src/libostree/ostree-diff.h @@ -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); diff --git a/src/ostree/ot-admin-builtin-diff.c b/src/ostree/ot-admin-builtin-diff.c index af2b288b..7792db38 100644 --- a/src/ostree/ot-admin-builtin-diff.c +++ b/src/ostree/ot-admin-builtin-diff.c @@ -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: diff --git a/src/ostree/ot-builtin-diff.c b/src/ostree/ot-builtin-diff.c index d3bd17c2..daa544ed 100644 --- a/src/ostree/ot-builtin-diff.c +++ b/src/ostree/ot-builtin-diff.c @@ -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: